:root{--bg:#F2F1EC;--map-bg:#E9E7E1;--glass:rgba(255,255,255,0.8);--glass-strong:rgba(255,255,255,0.95);--surface:rgba(28,28,30,0.045);--surface-hover:rgba(28,28,30,0.08);--hairline:rgba(60,60,67,0.14);--text:#1C1C1E;--text-2:rgba(40,42,48,0.65);--text-3:rgba(40,42,48,0.42);--green:#3E9B6E;--green-deep:#2E7D57;--blue:#4A90D2;--blue-deep:#2F6FAE;--heat:#B07818;--heat-fill:#E8A33D;--red:#DE5449;--route-fresh:#3E9B6E;--route-balanced:#4A90D2;--route-short:#E8934A;--radius-card:24px;--radius-control:14px;--shadow-card:0 12px 40px rgba(30,35,40,0.14);--shadow-soft:0 4px 18px rgba(30,35,40,0.10);--blur:saturate(1.6) blur(20px);--ease:cubic-bezier(0.32,0.72,0,1)}*{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}.app-main{position:relative;height:100vh;height:100dvh;overflow:hidden}#map{position:absolute;inset:0;background:var(--map-bg);isolation:isolate}.app-header{position:absolute;top:calc(12px + env(safe-area-inset-top));left:12px;z-index:40;display:flex;align-items:baseline;gap:8px;padding:10px 18px 11px 14px;background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:0.5px solid rgba(255,255,255,0.7);border-radius:999px;box-shadow:var(--shadow-soft)}.app-header__logo{font-size:1rem}.app-header__name{font-weight:700;font-size:1.02rem;letter-spacing:-0.01em}.app-header__tagline{font-size:0.8rem;color:var(--text-2)}.panel{position:absolute;z-index:30;background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:0.5px solid rgba(255,255,255,0.7);box-shadow:var(--shadow-card)}.panel__grabber-zone{display:none;width:100%;padding:10px 0 6px;background:transparent;border:none;cursor:grab;touch-action:none}.panel__grabber-zone:active{cursor:grabbing}.panel__grabber{display:block;width:40px;height:5px;border-radius:999px;background:rgba(60,60,67,0.22);margin:0 auto}.panel__scroll{overflow-y:auto;overscroll-behavior:contain;padding:18px 20px calc(22px + env(safe-area-inset-bottom));scrollbar-width:none}.panel__scroll::-webkit-scrollbar{display:none}.instructions{margin:0 0 14px;font-size:0.9rem;line-height:1.5;color:var(--text-2)}.instructions strong.instructions__title{display:block;font-size:1.15rem;font-weight:750;letter-spacing:-0.02em;color:var(--text);margin-bottom:4px}.dot{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:0.7rem;font-weight:800;color:#fff;vertical-align:-3px}.dot--a{background:var(--green)}.dot--b{background:var(--red)}.mode-switch{display:flex;gap:4px;background:var(--surface);border-radius:999px;padding:4px;margin-bottom:14px}.mode-switch__btn{flex:1;font-family:inherit;font-size:0.9rem;font-weight:650;color:var(--text-2);background:transparent;border:none;border-radius:999px;padding:10px 12px;min-height:42px;cursor:pointer;transition:background 0.2s var(--ease),color 0.2s ease,box-shadow 0.2s ease}.mode-switch__btn.is-active{background:#fff;color:var(--text);box-shadow:0 1px 6px rgba(30,35,40,0.14)}.duration-picker{display:flex;gap:8px;margin-bottom:12px}.duration-chip{flex:1;font-family:inherit;font-size:0.92rem;font-weight:650;font-variant-numeric:tabular-nums;color:var(--text);background:var(--glass-strong);border:1.5px solid var(--hairline);border-radius:var(--radius-control);padding:13px 4px;min-height:48px;cursor:pointer;transition:border-color 0.2s ease,background 0.2s ease}.duration-chip:hover{background:#fff}.duration-chip.is-selected{border-color:var(--green);background:rgba(62,155,110,0.1);color:var(--green-deep)}.loop-start-hint{margin:0 2px 12px;font-size:0.82rem;color:var(--text-2)}.panel--loop .route-options{display:none}.feedback-link{display:block;text-align:center;margin-top:16px;padding:11px;font-size:0.85rem;font-weight:600;color:var(--text-2);text-decoration:none;background:var(--surface);border-radius:999px;transition:background 0.15s ease,color 0.15s ease}.feedback-link:hover{background:var(--surface-hover);color:var(--text)}.route-form__fields{background:var(--glass-strong);border:0.5px solid var(--hairline);border-radius:var(--radius-control);overflow:hidden;margin-bottom:12px;box-shadow:0 1px 3px rgba(30,35,40,0.05)}.route-form__field{display:flex;align-items:center;gap:10px;padding:0 14px;transition:background 0.2s ease}.route-form__field:focus-within{background:rgba(74,144,210,0.06)}.route-form__field + .route-form__field{border-top:0.5px solid var(--hairline)}.route-form__bullet{width:10px;height:10px;border-radius:50%;flex-shrink:0}.route-form__bullet--a{background:var(--green);box-shadow:0 0 0 3px rgba(62,155,110,0.18)}.route-form__bullet--b{background:var(--red);box-shadow:0 0 0 3px rgba(222,84,73,0.16)}.text-input{flex:1;min-width:0;padding:14px 0;font-size:16px;font-family:inherit;border:none;background:transparent;color:var(--text);outline:none}.text-input::placeholder{color:var(--text-3)}.route-form__actions{display:flex;gap:10px}.btn{font-family:inherit;font-size:0.95rem;font-weight:650;letter-spacing:-0.01em;border:none;border-radius:999px;padding:13px 20px;min-height:48px;cursor:pointer;transition:transform 0.15s var(--ease),filter 0.15s ease,background 0.15s ease,box-shadow 0.15s ease}.btn:active{transform:scale(0.97)}.btn--primary{flex:1;background:var(--green);color:#fff;box-shadow:0 4px 14px rgba(62,155,110,0.35)}.btn--primary:hover{background:var(--green-deep)}.btn--primary:disabled{background:rgba(60,60,67,0.14);color:var(--text-3);box-shadow:none;cursor:not-allowed}.btn--secondary{background:var(--surface);color:var(--text)}.btn--secondary:hover{background:var(--surface-hover)}.weather-info{font-size:0.85rem;color:var(--text-2);min-height:1.2em;margin:12px 2px 0}.weather-info[data-kind="rain"]{color:var(--blue-deep)}.sun-info{margin:8px 2px 0;font-size:0.8rem;color:var(--text-3)}.status-message{font-size:0.86rem;min-height:1.2em;margin:10px 2px}.status-message[data-kind="error"]{color:var(--red)}.status-message[data-kind="ok"]{color:var(--green-deep)}.status-message[data-kind="loading"]{color:var(--heat)}.field{margin-top:18px}.field__label{display:flex;justify-content:space-between;align-items:baseline;font-size:0.88rem;color:var(--text-2);margin-bottom:10px}.field__value{font-variant-numeric:tabular-nums;font-weight:700;font-size:1.05rem;color:var(--heat)}.slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:999px;background:linear-gradient(90deg,rgba(60,60,67,0.14),var(--heat-fill));outline:none}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:28px;height:28px;border-radius:50%;background:#fff;box-shadow:0 2px 8px rgba(30,35,40,0.3);cursor:pointer;transition:transform 0.15s var(--ease)}.slider::-webkit-slider-thumb:active{transform:scale(1.1)}.slider::-moz-range-thumb{width:28px;height:28px;border-radius:50%;background:#fff;border:none;box-shadow:0 2px 8px rgba(30,35,40,0.3);cursor:pointer}.slider__ticks{display:flex;justify-content:space-between;font-size:0.72rem;color:var(--text-3);margin-top:6px}.slider:focus-visible{outline:2px solid var(--blue);outline-offset:4px}.map-options{margin-top:16px}.map-options summary{list-style:none;display:flex;align-items:center;justify-content:space-between;font-size:0.9rem;font-weight:600;color:var(--text-2);padding:11px 16px;background:var(--glass-strong);border:0.5px solid var(--hairline);border-radius:var(--radius-control);cursor:pointer;transition:background 0.15s ease}.map-options summary::-webkit-details-marker{display:none}.map-options summary:hover{background:#fff}.map-options__chevron{font-size:1.1rem;color:var(--text-3);transition:transform 0.25s var(--ease)}.map-options[open] .map-options__chevron{transform:rotate(90deg)}.map-options[open] summary{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:none}.map-options[open] .field--switches{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.map-options .comfort-legend{margin:10px 2px 0}.field--switches{display:flex;flex-direction:column;gap:2px;background:var(--glass-strong);border:0.5px solid var(--hairline);border-radius:var(--radius-control);padding:4px 16px;box-shadow:0 1px 3px rgba(30,35,40,0.05)}.switch-label{display:flex;align-items:center;justify-content:space-between;font-size:0.9rem;padding:10px 0;cursor:pointer}.switch-label + .switch-label{border-top:0.5px solid var(--hairline)}.switch{-webkit-appearance:none;appearance:none;width:50px;height:30px;border-radius:999px;background:rgba(60,60,67,0.18);position:relative;cursor:pointer;transition:background 0.25s var(--ease);flex-shrink:0}.switch::after{content:'';position:absolute;top:2px;left:2px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(30,35,40,0.3);transition:transform 0.25s var(--ease)}.switch:checked{background:var(--green)}.switch:checked::after{transform:translateX(20px)}.switch:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.results{margin-top:14px}.summary-card{background:var(--glass-strong);border:0.5px solid var(--hairline);border-radius:var(--radius-card);padding:18px;box-shadow:var(--shadow-soft);animation:card-in 0.35s var(--ease)}@keyframes card-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.summary-card__head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.summary-card__duration{font-size:2.1rem;font-weight:800;letter-spacing:-0.03em;line-height:1.1}.summary-card__distance{color:var(--text-2);font-size:0.95rem;margin-top:2px}.summary-card__journey{display:flex;flex-direction:column;gap:7px;padding-bottom:13px;margin-bottom:13px;border-bottom:0.5px solid var(--hairline)}.summary-card__place{display:flex;align-items:center;gap:9px;font-size:0.9rem}.summary-card__place-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.comfort{flex:1;max-width:195px}.comfort__head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:7px}.comfort__label{font-size:0.82rem;color:var(--text-2);font-weight:600}.comfort__value{font-size:1.35rem;font-weight:800;letter-spacing:-0.02em;font-variant-numeric:tabular-nums}.comfort__max{font-size:0.8rem;color:var(--text-3);font-weight:600}.comfort__bar{height:7px;border-radius:999px;background:rgba(28,28,30,0.08);overflow:hidden}.comfort__fill{height:100%;width:0;border-radius:999px;background:var(--green);transition:width 0.4s var(--ease)}.summary-card__list{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:12px 6px;margin:16px 0 0;padding:14px 0 0;border-top:0.5px solid var(--hairline)}.summary-card__list li{text-align:center;font-size:0.72rem;color:var(--text-3);line-height:1.3}.summary-card__list .stat-ico{font-size:1rem}.summary-card__list .stat-val{display:block;font-size:1.05rem;font-weight:700;color:var(--text);margin-top:1px}.route-options{display:flex;flex-direction:column;gap:10px;margin-top:12px}.route-option{display:block;width:100%;font-family:inherit;color:var(--text);text-align:left;background:var(--glass-strong);border:1.5px solid var(--hairline);border-radius:var(--radius-control);padding:12px 14px;cursor:pointer;transition:border-color 0.2s ease,box-shadow 0.2s ease}.route-option:hover{box-shadow:var(--shadow-soft)}.route-option[aria-checked="true"]{border-color:var(--green)}.route-option__top{display:flex;align-items:center;justify-content:space-between;gap:8px}.route-option__name{font-weight:650;display:flex;align-items:center;gap:7px}.route-option__score{font-weight:800;font-variant-numeric:tabular-nums;flex-shrink:0}.route-option__score span{font-size:0.72rem;color:var(--text-3);font-weight:600}.route-option .comfort__bar{margin:8px 0 10px;height:5px}.route-option__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.route-option__stats div{text-align:center;font-size:0.72rem;color:var(--text-3)}.route-option__stats b{display:block;font-size:0.86rem;font-weight:700;color:var(--text)}.route-limited{display:inline-block;font-size:0.62rem;color:var(--heat);background:rgba(232,163,61,0.16);border-radius:999px;padding:1px 6px;margin-top:2px}.stat-extra{margin:12px 2px 0;font-size:0.84rem;color:var(--text-2)}.results__actions{display:flex;gap:10px;margin-top:14px}.panel--results .instructions,.panel--results .mode-switch,.panel--results #loop-form,.panel--results .route-form,.panel--results .field,.panel--results .weather-info,.panel--results .sun-info{display:none}.panel--results .panel__scroll{display:flex;flex-direction:column}.panel--results #stats-panel{order:0}.panel--results .map-options{order:1}.panel--results #status-message{order:2}.panel--results .map-options[open] .field--switches{display:flex}.panel--results .results{margin-top:4px}.panel--guidance{display:none}.locate-btn{position:absolute;right:10px;top:calc(150px + env(safe-area-inset-top));z-index:34;width:44px;height:44px;font-size:1.15rem;background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:0.5px solid rgba(255,255,255,0.7);border-radius:12px;box-shadow:var(--shadow-soft);cursor:pointer;transition:transform 0.15s var(--ease)}.locate-btn:active{transform:scale(0.94)}.locate-btn.is-searching{animation:locate-blink 1s ease-in-out infinite}@keyframes locate-blink{0%,100%{opacity:1}50%{opacity:0.45}}.is-guiding .locate-btn{display:none}.is-guiding .app-header,.is-guiding .heat-banner,.is-guiding .leaflet-control-zoom{display:none}.btn--cta{width:100%;min-height:54px;font-size:1.05rem;font-weight:700}.results__edit{display:block;width:100%;margin-top:10px;padding:10px;font-family:inherit;font-size:0.88rem;font-weight:600;color:var(--blue-deep);background:transparent;border:none;cursor:pointer}.compass-btn{position:absolute;right:12px;bottom:calc(252px + env(safe-area-inset-bottom));z-index:46;width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:0.5px solid rgba(255,255,255,0.7);border-radius:999px;box-shadow:var(--shadow-soft);cursor:pointer;animation:card-in 0.25s var(--ease)}.compass-btn__needle{display:flex;flex-direction:column;align-items:center;line-height:1;font-size:0.72rem;color:#DE5449;transition:transform 0.2s linear;will-change:transform}.compass-btn__needle b{font-size:0.6rem;font-weight:700;color:var(--text-2)}.compass-btn.is-north .compass-btn__needle{color:var(--blue-deep)}.recenter-btn{position:absolute;right:12px;bottom:calc(196px + env(safe-area-inset-bottom));z-index:46;font-family:inherit;font-size:0.88rem;font-weight:650;color:var(--blue-deep);background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:0.5px solid rgba(255,255,255,0.7);border-radius:999px;padding:11px 18px;box-shadow:var(--shadow-soft);cursor:pointer;animation:card-in 0.25s var(--ease)}.nav-banner{position:absolute;top:calc(10px + env(safe-area-inset-top));left:10px;right:10px;z-index:46;display:flex;align-items:center;gap:13px;background:rgba(24,28,34,0.94);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-radius:18px;padding:14px 16px;box-shadow:var(--shadow-card);animation:banner-down 0.35s var(--ease)}@keyframes banner-down{from{transform:translateY(-30%);opacity:0}to{transform:none;opacity:1}}.nav-banner__icon{font-size:1.9rem;flex-shrink:0}.nav-banner__texts{flex:1;min-width:0}.nav-banner__kicker{font-size:0.78rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:#8FDBAE;min-height:1.1em}.nav-banner__instruction{font-size:1.25rem;font-weight:750;letter-spacing:-0.02em;line-height:1.25;color:#fff}.nav-banner__instruction.is-entering{animation:step-in 0.35s var(--ease)}.nav-banner__next{font-size:0.83rem;color:rgba(255,255,255,0.55);margin-top:3px}.nav-banner__manual{display:flex;gap:6px;flex-shrink:0}.nav-banner__arrow{font-family:inherit;font-size:1.3rem;color:#fff;background:rgba(255,255,255,0.14);border:none;border-radius:999px;width:42px;height:42px;cursor:pointer}.nav-banner__arrow:hover{background:rgba(255,255,255,0.22)}.nav-announce{position:absolute;top:calc(96px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:45;font-size:0.88rem;font-weight:650;color:var(--text);background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:0.5px solid rgba(255,255,255,0.7);border-radius:999px;padding:9px 16px;box-shadow:var(--shadow-soft);white-space:nowrap;animation:card-in 0.3s var(--ease)}.nav-sheet__essentials{display:flex;justify-content:space-between;gap:10px}.nav-sheet__essential{text-align:center;flex:1}.nav-sheet__essential-label{display:block;font-size:0.72rem;text-transform:uppercase;letter-spacing:0.05em;color:var(--text-3);margin-bottom:2px}.nav-sheet__essential strong{font-size:1.1rem;font-weight:800;letter-spacing:-0.02em;font-variant-numeric:tabular-nums}.nav-sheet__footer{justify-content:center}.nav-sheet{position:absolute;left:0;right:0;bottom:0;z-index:45;background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-top:0.5px solid rgba(255,255,255,0.7);border-radius:var(--radius-card) var(--radius-card) 0 0;box-shadow:var(--shadow-card);padding:0 18px calc(14px + env(safe-area-inset-bottom));animation:sheet-up 0.4s var(--ease)}@keyframes sheet-up{from{transform:translateY(40%);opacity:0.4}to{transform:none;opacity:1}}.nav-sheet__grabber-zone{display:block;width:100%;padding:9px 0 5px;background:transparent;border:none;cursor:pointer}.nav-sheet__grabber{display:block;width:40px;height:5px;border-radius:999px;background:rgba(60,60,67,0.22);margin:0 auto}.nav-sheet__progress{height:4px;border-radius:999px;background:rgba(60,60,67,0.12);overflow:hidden;margin-bottom:13px}.nav-sheet__progress-fill{height:100%;width:0%;border-radius:999px;background:var(--green);transition:width 0.5s var(--ease)}.nav-sheet__offroute{background:rgba(74,144,210,0.08);border:0.5px solid rgba(74,144,210,0.25);border-radius:var(--radius-control);padding:12px 14px;margin-bottom:12px;animation:card-in 0.3s var(--ease)}.nav-sheet__offroute p{margin:0 0 10px;font-size:0.9rem;font-weight:600}.nav-sheet__offroute-actions{display:flex;gap:8px}.nav-sheet__offroute-actions .btn{min-height:42px;padding:9px 14px;font-size:0.86rem}.nav-sheet__step{display:flex;align-items:flex-start;gap:13px}.nav-sheet__icon{font-size:1.9rem;line-height:1.2;flex-shrink:0}.nav-sheet__texts{flex:1;min-width:0}.nav-sheet__kicker{font-size:0.8rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:var(--green-deep);min-height:1.1em}.nav-sheet__instruction{font-size:1.3rem;font-weight:750;letter-spacing:-0.02em;line-height:1.25}.nav-sheet__instruction.is-entering{animation:step-in 0.35s var(--ease)}@keyframes step-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.nav-sheet__next{font-size:0.85rem;color:var(--text-2);margin-top:4px}.nav-sheet__manual{display:flex;gap:6px;flex-shrink:0}.nav-sheet__arrow{font-family:inherit;font-size:1.3rem;color:var(--text);background:var(--surface);border:none;border-radius:999px;width:42px;height:42px;cursor:pointer}.nav-sheet__arrow:hover{background:var(--surface-hover)}.nav-sheet__footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px}.nav-sheet__stats{display:flex;align-items:baseline;gap:8px}.nav-sheet__stats strong{font-size:1.15rem;font-weight:800;letter-spacing:-0.02em;font-variant-numeric:tabular-nums}.nav-sheet__stats span{font-size:0.9rem;color:var(--text-2);font-variant-numeric:tabular-nums}.nav-sheet__stop{font-family:inherit;font-size:0.9rem;font-weight:650;color:var(--red);background:rgba(222,84,73,0.1);border:none;border-radius:999px;padding:11px 20px;min-height:44px;cursor:pointer;transition:background 0.15s ease}.nav-sheet__stop:hover{background:rgba(222,84,73,0.16)}.nav-sheet__details{margin-top:13px;padding-top:12px;border-top:0.5px solid var(--hairline);animation:card-in 0.3s var(--ease)}.nav-sheet__details-list{list-style:none;margin:0;padding:0;font-size:0.87rem}.nav-sheet__details-list li{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:0.5px solid var(--hairline)}.nav-sheet__details-list li:last-child{border-bottom:none}.nav-sheet__details-list span{color:var(--text-2)}.nav-sheet__details-note{margin:8px 0 0;font-size:0.7rem;color:var(--text-3)}.nav-dot{position:relative;width:46px;height:46px}.nav-dot__core{position:absolute;inset:12px;border-radius:50%;background:var(--blue);border:3.5px solid #fff;box-shadow:0 2px 10px rgba(30,35,40,0.35);animation:dot-pulse 2.4s ease-in-out infinite}@keyframes dot-pulse{0%,100%{box-shadow:0 2px 10px rgba(30,35,40,0.35),0 0 0 0 rgba(74,144,210,0.35)}50%{box-shadow:0 2px 10px rgba(30,35,40,0.35),0 0 0 12px rgba(74,144,210,0)}}.nav-dot__heading{position:absolute;inset:0;transition:transform 0.4s var(--ease)}.nav-dot__heading::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:11px solid var(--blue)}.marker-pin{width:28px;height:28px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2.5px solid #fff;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 10px rgba(30,35,40,0.35)}.marker-pin span{transform:rotate(45deg);color:#fff;font-weight:800;font-size:0.75rem}.marker-pin--a{background:var(--green)}.marker-pin--b{background:var(--red)}.cool-marker{display:flex;align-items:center;justify-content:center;width:28px;height:28px;font-size:0.95rem;background:var(--glass-strong);border:0.5px solid var(--hairline);border-radius:50%;box-shadow:0 3px 10px rgba(30,35,40,0.25)}.shadow-canvas-layer{pointer-events:none}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--glass-strong);color:var(--text);box-shadow:var(--shadow-card)}.leaflet-popup-content{font-family:inherit;font-size:0.85rem}.leaflet-container{font-family:inherit}.leaflet-control-zoom a{background:var(--glass)!important;color:var(--text)!important;border:none!important;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}.leaflet-bar{border:0.5px solid rgba(255,255,255,0.7)!important;border-radius:12px!important;overflow:hidden;box-shadow:var(--shadow-soft)!important}.panel-toggle{position:absolute;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:35;display:none;font-family:inherit;font-weight:700;font-size:0.9rem;color:var(--text);background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:0.5px solid rgba(255,255,255,0.7);border-radius:999px;padding:13px 20px;box-shadow:var(--shadow-card)}.comfort-canvas-layer{pointer-events:none}.comfort-legend{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:0.72rem;color:var(--text-2);margin:-6px 0 14px}.comfort-legend span{display:flex;align-items:center;gap:5px}.comfort-legend i{width:14px;height:5px;border-radius:999px;display:inline-block}.temp-estimate{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 10px;margin-top:12px;padding-top:12px;border-top:0.5px solid var(--hairline);font-size:0.84rem;color:var(--text-2)}.temp-estimate strong{color:var(--text);font-weight:700}.temp-estimate__arrow{color:var(--text-3)}.temp-estimate__gain{width:100%;font-size:0.76rem;color:var(--green-deep)}.street-sheet{position:absolute;top:calc(66px + env(safe-area-inset-top));left:12px;z-index:36;width:min(320px,calc(100vw - 24px));background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:0.5px solid rgba(255,255,255,0.7);border-radius:18px;padding:15px 17px;box-shadow:var(--shadow-card);animation:card-in 0.3s var(--ease)}.street-sheet__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.street-sheet__head strong{font-size:0.98rem;letter-spacing:-0.01em}.street-sheet__close{font-family:inherit;font-size:0.8rem;color:var(--text-2);background:var(--surface);border:none;border-radius:999px;width:27px;height:27px;cursor:pointer;flex-shrink:0;transition:background 0.15s ease}.street-sheet__close:hover{background:var(--surface-hover)}.street-sheet__list{list-style:none;margin:0;padding:0;font-size:0.84rem}.street-sheet__list li{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:0.5px solid var(--hairline)}.street-sheet__list li:last-child{border-bottom:none}.street-sheet__list span{color:var(--text-2)}.street-sheet__note{margin:8px 0 0;font-size:0.7rem;color:var(--text-3)}.install-bar{order:-1;display:flex;align-items:center;gap:12px;margin:0 0 10px;padding:11px 12px 11px 11px;background:var(--glass-strong);border:1px solid var(--hairline);border-radius:20px;box-shadow:var(--shadow-soft);animation:card-in 0.3s var(--ease)}.install-bar__icon{width:38px;height:38px;flex-shrink:0;border-radius:10px;background:url("../icons/icon-192.png") center / cover no-repeat;box-shadow:0 1px 3px rgba(30,35,40,0.18)}.install-bar__texts{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.install-bar__title{font-size:0.9rem;font-weight:650;letter-spacing:-0.01em;line-height:1.25;color:var(--text)}.install-bar__sub{font-size:0.78rem;line-height:1.3;color:var(--text-2)}@media (max-width:359px){.install-bar:not(.install-bar--ios) .install-bar__sub{display:none}.install-bar:not(.install-bar--ios) .install-bar__icon{display:none}}.install-bar__sub-ios{display:none}.install-bar--ios .install-bar__sub-ios{display:inline}.install-bar--ios .install-bar__sub-android{display:none}.install-bar__glyph{width:15px;height:15px;vertical-align:-3px;color:var(--blue-deep)}.install-bar__cta{flex-shrink:0;font-family:inherit;font-size:0.84rem;font-weight:700;color:#fff;background:var(--green);border:none;border-radius:999px;padding:9px 16px;cursor:pointer;transition:background 0.18s var(--ease),transform 0.18s var(--ease)}.install-bar__cta:active{background:var(--green-deep);transform:scale(0.97)}.install-bar__close{flex-shrink:0;width:28px;height:28px;display:grid;place-items:center;font-family:inherit;font-size:0.8rem;line-height:1;color:var(--text-3);background:var(--surface);border:none;border-radius:999px;cursor:pointer}.install-bar__close:active{background:var(--surface-hover)}@media (max-width:359px){.install-bar{flex-wrap:wrap}.install-bar__cta{order:3;width:100%;margin-top:2px}.install-bar__close{order:2}}.heat-banner{display:flex;align-items:center;gap:8px;margin:0 0 2px;font-size:0.86rem;font-weight:600;color:var(--heat);background:rgba(232,163,61,0.12);border-radius:999px;padding:9px 14px;animation:card-in 0.3s var(--ease)}.heat-banner--hot{color:#8A3B12;background:rgba(222,84,73,0.12)}.heat-banner span{flex:1;text-align:center}.heat-banner__btn{font-family:inherit;font-size:0.78rem;font-weight:700;color:#fff;background:var(--heat-fill);border:none;border-radius:999px;padding:7px 13px;cursor:pointer;flex-shrink:0}.heat-banner__close{font-family:inherit;font-size:0.8rem;color:inherit;opacity:0.55;background:transparent;border:none;padding:2px 4px;cursor:pointer;flex-shrink:0}.reco-hint{display:flex;align-items:flex-start;gap:6px;margin:8px 2px 0;font-size:0.8rem;line-height:1.4;color:var(--green-deep)}.reco-hint[hidden]{display:none}.page-body{min-height:100vh;background:var(--bg)}.page-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:10px;padding:14px 22px;padding-top:calc(14px + env(safe-area-inset-top));background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-bottom:0.5px solid var(--hairline)}.page-header a{color:var(--text);text-decoration:none;font-weight:700;letter-spacing:-0.01em}.page-header__back{color:var(--blue-deep)!important;font-weight:600!important;font-size:0.9rem}.page-cta{display:inline-block;background:var(--green);color:#fff!important;font-weight:700;border-radius:999px;padding:14px 28px;margin:18px 0;text-decoration:none!important;box-shadow:0 4px 14px rgba(62,155,110,0.35);transition:background 0.15s ease}.page-cta:hover{background:var(--green-deep);text-decoration:none!important}.seo-content{max-width:680px;margin:0 auto;padding:52px 22px 44px}.seo-content h1{font-size:1.5rem;font-weight:800;letter-spacing:-0.02em;line-height:1.3;margin:0 0 18px}.seo-content h2{font-size:1.1rem;font-weight:700;letter-spacing:-0.01em;margin:30px 0 10px}.seo-content p{font-size:0.93rem;line-height:1.7;color:var(--text-2);margin:0 0 12px}.seo-content strong{color:var(--text);font-weight:650}.seo-content a{color:var(--blue-deep);text-decoration:none}.seo-content a:hover{text-decoration:underline}.seo-faq details{border-bottom:0.5px solid var(--hairline);padding:4px 0}.seo-faq summary{cursor:pointer;font-size:0.93rem;font-weight:600;padding:11px 0;list-style-position:outside;transition:color 0.15s ease}.seo-faq summary:hover{color:var(--green-deep)}.seo-faq p{padding-bottom:10px}.seo-content .seo-note{font-size:0.82rem;color:var(--text-3);margin-top:4px}.seo-content .seo-cta{display:inline-block;margin:4px 0 8px}.hub-list{list-style:none;padding:0;margin:14px 0;display:grid;grid-template-columns:1fr;gap:2px}@media (min-width:620px){.hub-list{grid-template-columns:1fr 1fr;gap:2px 24px}}.hub-list li{padding:9px 0;border-bottom:0.5px solid var(--hairline);display:flex;align-items:baseline;justify-content:space-between;gap:10px}.hub-list__aside{font-size:0.8rem;color:var(--text-3);flex:none}.seo-footer-note{margin-top:38px;padding-top:18px;border-top:0.5px solid var(--hairline)}.seo-footer-note p{font-size:0.8rem;color:var(--text-3)}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--blue-deep);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}@media (max-width:859px){.panel{left:0;right:0;bottom:0;border-radius:var(--radius-card) var(--radius-card) 0 0;border-bottom:none;max-height:62vh;max-height:62dvh;transition:transform 0.35s var(--ease)}.panel.is-dragging{transition:none}.panel__grabber-zone{display:block}.panel__scroll{max-height:calc(62vh - 26px);max-height:calc(62dvh - 26px);padding-top:4px}.panel.is-collapsed{transform:translateY(calc(100% - 52px))}.panel-toggle{display:block}.app-header__tagline{display:none}.instructions{margin-bottom:12px}.instructions strong.instructions__title{font-size:1.08rem}.field{margin-top:14px}.map-options{margin-top:14px}}.leaflet-left{left:auto;right:10px}.leaflet-left .leaflet-control{margin-left:0;margin-right:10px}.leaflet-top .leaflet-control{margin-top:calc(14px + env(safe-area-inset-top))}@media (min-width:860px){.panel{top:76px;left:16px;width:396px;max-height:calc(100vh - 96px);max-height:calc(100dvh - 96px);border-radius:var(--radius-card);display:flex;flex-direction:column}.panel__scroll{max-height:100%}.nav-sheet{left:16px;right:auto;width:440px;bottom:16px;border-radius:var(--radius-card);border:0.5px solid rgba(255,255,255,0.7)}.recenter-btn{right:auto;left:480px;bottom:24px}.compass-btn{right:auto;left:480px;bottom:80px}.app-header{top:16px;left:16px}}.route-loader{position:fixed;inset:0;display:grid;place-items:center;pointer-events:none;z-index:1500}.route-loader[hidden]{display:none}.route-loader__card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:18px 26px;background:var(--glass-strong);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:0.5px solid var(--hairline);border-radius:var(--radius-card);box-shadow:var(--shadow-card);animation:loaderPop 0.28s var(--ease) both}.route-loader__scene{position:relative;width:78px;height:42px;overflow:hidden}.route-loader__scene::after{content:"";position:absolute;left:-30%;right:-30%;bottom:7px;height:2px;border-radius:2px;background:repeating-linear-gradient(90deg,var(--green) 0 7px,transparent 7px 15px);opacity:0.55;animation:loaderGround 0.5s linear infinite}.route-loader__dog{position:absolute;left:50%;bottom:6px;font-size:30px;line-height:1;transform:translateX(-50%);animation:loaderRun 0.5s ease-in-out infinite;will-change:transform}.route-loader__text{margin:0;font-size:13px;font-weight:600;color:var(--text-2)}@keyframes loaderRun{0%,100%{transform:translateX(-50%) translateY(0) rotate(-3deg)}50%{transform:translateX(-52%) translateY(-5px) rotate(3deg)}}@keyframes loaderGround{from{background-position:0 0}to{background-position:-22px 0}}@keyframes loaderPop{from{opacity:0;transform:scale(0.94)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.route-loader__card{animation:none}.route-loader__dog{animation:none}.route-loader__scene::after{animation:none}}