:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;--topbar-h: 42px;--tabbar-h: 52px;--dur-fast: .15s;--dur-base: .25s;--dur-slow: .4s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--color-bg: #f5f5f5;--color-text: #1a1a2e;--color-text-secondary: #6b7280;--color-text-muted: #9ca3af;--color-link: #2563eb;--color-header-bg: #1e3a5f;--color-card-bg: #ffffff;--color-card-shadow: rgba(0,0,0,.1);--color-input-bg: #ffffff;--color-input-border: #d1d5db;--color-border: #e5e7eb;--color-surface: #f9fafb;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-btn-secondary-bg: #e5e7eb;--color-btn-secondary-text: #374151;--color-btn-secondary-hover: #d1d5db;--color-conditions-bg: #ffffff;--color-conditions-value: #1e3a5f;--color-forecast-bg: #f9fafb;--color-forecast-border: #e5e7eb;--color-map-btn-bg: #ffffff;--color-map-btn-hover: #f3f4f6;--color-disclaimer-bg: #fef3c7;--color-disclaimer-border: #f59e0b;--color-disclaimer-text: #92400e;--color-loading-spinner: #d1d5db;--color-loading-spinner-active: #2563eb;--color-page-title: #1e3a5f;--color-label: #374151;color:var(--color-text);background-color:var(--color-bg)}[data-theme=dark]{--color-bg: #0f172a;--color-text: #e2e8f0;--color-text-secondary: #94a3b8;--color-text-muted: #64748b;--color-link: #60a5fa;--color-header-bg: #0c1524;--color-card-bg: #1e293b;--color-card-shadow: rgba(0,0,0,.3);--color-input-bg: #1e293b;--color-input-border: #334155;--color-border: #334155;--color-surface: #1e293b;--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-btn-secondary-bg: #334155;--color-btn-secondary-text: #e2e8f0;--color-btn-secondary-hover: #475569;--color-conditions-bg: #1e293b;--color-conditions-value: #93c5fd;--color-forecast-bg: #1e293b;--color-forecast-border: #334155;--color-map-btn-bg: #1e293b;--color-map-btn-hover: #334155;--color-disclaimer-bg: #422006;--color-disclaimer-border: #92400e;--color-disclaimer-text: #fbbf24;--color-loading-spinner: #334155;--color-loading-spinner-active: #60a5fa;--color-page-title: #93c5fd;--color-label: #cbd5e1}*{margin:0;padding:0;box-sizing:border-box}body{min-height:100vh;display:flex;flex-direction:column}#root{display:flex;flex-direction:column;height:100vh}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}.risk-low{color:#16a34a}.risk-moderate{color:#d97706}.risk-high{color:#dc2626}.risk-extreme{color:#7f1d1d}.risk-bg-low{background-color:#16a34a}.risk-bg-moderate{background-color:#d97706}.risk-bg-high{background-color:#dc2626}.risk-bg-extreme{background-color:#7f1d1d}.leaflet-container{height:100%;width:100%}.app-topbar{position:sticky;top:0;z-index:900;display:flex;align-items:center;justify-content:space-between;height:var(--topbar-h);padding:0 .85rem 0 1rem;background:var(--color-header-bg);color:#fff;box-shadow:0 1px 3px #00000026;margin:0}.app-topbar__title{font-size:.95rem;font-weight:600;letter-spacing:.01em;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;height:100%}.app-topbar__actions{display:flex;align-items:center;height:100%;gap:.35rem}.app-topbar .theme-toggle{background:transparent;border:none;color:#fff;font-size:1rem;line-height:1;cursor:pointer;padding:.3rem .45rem;display:flex;align-items:center;justify-content:center}.bottom-tab-bar{position:fixed;bottom:0;left:0;right:0;z-index:1000;display:flex;justify-content:space-around;align-items:stretch;min-height:var(--tabbar-h);padding-bottom:env(safe-area-inset-bottom);background:var(--color-card-bg);border-top:1px solid var(--color-border);box-shadow:0 -2px 8px #0000000f}.bottom-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;padding:.3rem .25rem .32rem;border:none;background:transparent;color:var(--color-text-muted);font-size:.62rem;font-weight:500;line-height:1;text-decoration:none;cursor:pointer;position:relative;transition:color .12s ease;-webkit-tap-highlight-color:transparent}.bottom-tab:hover,.bottom-tab:focus-visible{color:var(--color-text-secondary);text-decoration:none}.bottom-tab.active{color:var(--color-primary)}.bottom-tab.active:before{content:"";position:absolute;top:0;left:24%;right:24%;height:2px;background:var(--color-primary);border-radius:0 0 2px 2px}.bottom-tab__icon{display:flex;align-items:center;justify-content:center;width:21px;height:21px}.bottom-tab__icon svg{width:100%;height:100%}.bottom-tab__badge{position:absolute;top:4px;right:24%;min-width:7px;height:7px;border-radius:50%;background:#dc2626;box-shadow:0 0 0 2px var(--color-card-bg)}@media(min-width:768px){.bottom-tab-bar,.app-topbar{display:none}}.app-header{display:none;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:var(--color-header-bg);color:#fff;box-shadow:0 2px 4px #0000001a}@media(min-width:768px){.app-header{display:flex}}.app-header h1{font-size:1.25rem;font-weight:700}.app-header nav{display:flex;gap:1rem;align-items:center}.app-header nav a{color:#ffffffd9;font-size:.875rem;text-decoration:none}.app-header nav a:hover{color:#fff;text-decoration:none}.theme-toggle{background:none;border:none;color:#ffffffd9;cursor:pointer;font-size:1rem;padding:.15rem .3rem;border-radius:4px;line-height:1}.theme-toggle:hover{color:#fff;background:#ffffff1a}.app-content{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;background:var(--color-bg)}.page-container{max-width:800px;margin:0 auto;padding:1.25rem 1rem calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 1.25rem);width:100%;box-sizing:border-box}@media(min-width:768px){.page-container{padding:2rem 1rem}}.page-title{font-size:1.35rem;font-weight:700;margin-bottom:1rem;color:var(--color-page-title);line-height:1.2}@media(min-width:768px){.page-title{font-size:1.5rem;margin-bottom:1.5rem}}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;font-weight:600;margin-bottom:.25rem;color:var(--color-label)}.form-group input,.form-group select{width:100%;padding:.5rem .75rem;border:1px solid var(--color-input-border);border-radius:6px;font-size:.875rem;background:var(--color-input-bg);color:var(--color-text);box-sizing:border-box}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #2563eb33}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1.25rem;border-radius:6px;font-size:.875rem;font-weight:600;border:none;cursor:pointer;transition:all .15s;text-decoration:none}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-btn-secondary-bg);color:var(--color-btn-secondary-text)}.btn-secondary:hover{background:var(--color-btn-secondary-hover)}.btn-lg{padding:.75rem 2rem;font-size:1rem}.card{background:var(--color-card-bg);border-radius:10px;padding:1rem 1.05rem;box-shadow:0 1px 3px var(--color-card-shadow);margin-bottom:.85rem}@media(min-width:768px){.card{border-radius:8px;padding:1.25rem;margin-bottom:1rem}}.safety-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .75rem;border-radius:99px;font-size:.75rem;font-weight:700;color:#fff;text-transform:uppercase}.spot-card{display:flex;justify-content:space-between;align-items:center;cursor:pointer}.spot-card:hover{box-shadow:0 2px 8px #00000026}.spot-card-info h3{font-size:1rem;margin-bottom:.25rem}.spot-card-info p{font-size:.8rem;color:var(--color-text-secondary)}.map-page{display:flex;flex-direction:column;position:relative;overflow:hidden;height:calc(100dvh - var(--topbar-h) - var(--tabbar-h) - env(safe-area-inset-bottom))}@media(min-width:768px){.map-page{flex:1;height:auto}}.map-container{flex:1;min-height:0}.map-controls{position:absolute;top:1rem;right:1rem;z-index:1000;display:flex;flex-direction:column;gap:.5rem}.map-btn{width:40px;height:40px;border-radius:8px;background:var(--color-map-btn-bg);color:var(--color-text);border:none;box-shadow:0 2px 6px #0003;cursor:pointer;font-size:1.25rem;display:flex;align-items:center;justify-content:center}.map-btn:hover{background:var(--color-map-btn-hover)}.conditions-bar{background:var(--color-conditions-bg);padding:.75rem 1rem;box-shadow:0 -2px 4px #0000001a;display:flex;gap:1.5rem;font-size:.8rem;overflow-x:auto}.conditions-bar .condition-item{display:flex;flex-direction:column;align-items:center;white-space:nowrap}.conditions-bar .condition-label{color:var(--color-text-secondary);font-size:.7rem}.conditions-bar .condition-value{font-weight:700;color:var(--color-conditions-value)}.conditions-bar .condition-attribution{font-size:.55rem;color:var(--color-text-secondary);opacity:.7}.forecast-strip{display:flex;gap:0;background:var(--color-forecast-bg);border-top:1px solid var(--color-forecast-border);overflow-x:auto;scrollbar-width:none}.forecast-strip::-webkit-scrollbar{display:none}.forecast-hour{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;padding:.35rem .25rem;gap:.1rem;border-right:1px solid var(--color-border)}.forecast-hour:last-child{border-right:none}.forecast-time{font-size:.6rem;color:var(--color-text-muted);font-weight:500}.forecast-icon{font-size:.85rem;line-height:1}.forecast-temp{font-size:.7rem;font-weight:700;color:var(--color-conditions-value)}.forecast-wind{font-size:.55rem;color:var(--color-text-secondary)}.forecast-wind:after{content:" km/h"}.condition-alerts{display:flex;flex-direction:column;gap:0}.condition-alert{padding:.5rem 1rem;font-size:.8rem;font-weight:500}.condition-alert-warning{background:#fef3c7;color:#92400e;border-bottom:1px solid #f59e0b}.condition-alert-severe{background:#fef2f2;color:#991b1b;border-bottom:1px solid #dc2626}.spot-detail-page{max-width:1200px;margin:0 auto;padding:1.5rem 1rem;width:100%;box-sizing:border-box}.spot-detail-header{margin-bottom:1rem}.spot-detail-back{font-size:.85rem;margin-bottom:1rem;display:inline-block}.spot-detail-grid{display:grid;grid-template-columns:1fr;gap:0 1.5rem}@media(min-width:1024px){.spot-detail-grid{grid-template-columns:1fr 1fr;align-items:start}}.spot-detail-col{min-width:0}.detail-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem;gap:1rem}.score-breakdown{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin:1rem 0}.score-item{text-align:center;padding:.75rem;background:var(--color-surface);border-radius:8px}.score-item .score-value{font-size:1.5rem;font-weight:700}.score-item .score-label{font-size:.75rem;color:var(--color-text-secondary)}.landing{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e3a5f,#2d5f8a);color:#fff;text-align:center;padding:2rem}.landing h1{font-size:3rem;margin-bottom:.5rem}.landing .tagline{font-size:1.25rem;opacity:.85;margin-bottom:2rem;max-width:500px}.landing .actions{display:flex;gap:1rem}.landing .btn-primary{background:#f59e0b;color:#1e3a5f}.landing .btn-primary:hover{background:#d97706}.landing .btn-secondary{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.3)}.landing .btn-secondary:hover{background:#ffffff40}.wizard-step{text-align:center;max-width:500px;margin:0 auto}.wizard-step h2{margin-bottom:.5rem;color:var(--color-page-title)}.wizard-step p{color:var(--color-text-secondary);margin-bottom:1.5rem}.option-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;margin-bottom:2rem}.option-card{padding:1rem;border:2px solid var(--color-border);border-radius:8px;cursor:pointer;text-align:center;transition:all .15s;background:var(--color-card-bg)}.option-card:hover{border-color:#93c5fd}.option-card.selected{border-color:var(--color-primary);background:#eff6ff}[data-theme=dark] .option-card.selected{background:#1e3a5f}.option-card .option-icon{font-size:2rem;margin-bottom:.5rem}.option-card .option-label{font-size:.8rem;font-weight:600}.wizard-nav{display:flex;justify-content:space-between;margin-top:1rem}.disclaimer{background:var(--color-disclaimer-bg);border:1px solid var(--color-disclaimer-border);border-radius:8px;padding:.35rem .6rem;font-size:.7rem;color:var(--color-disclaimer-text);margin:.75rem 0}.disclaimer a{color:var(--color-disclaimer-text);font-weight:600}.error-msg{color:#dc2626;font-size:.85rem;margin-top:.5rem}.loading{display:flex;align-items:center;justify-content:center;padding:3rem;color:var(--color-text-secondary);animation:fadeIn var(--dur-base) var(--ease-out) both}.loading:before{content:"";width:1.25rem;height:1.25rem;border:2px solid var(--color-loading-spinner);border-top-color:var(--color-loading-spinner-active);border-radius:50%;animation:spin .6s linear infinite;margin-right:.5rem}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes skeletonPulse{0%,to{opacity:.55}50%{opacity:.9}}.fade-in{animation:fadeInUp var(--dur-base) var(--ease-out) both}.fade-in-slow{animation:fadeInUp var(--dur-slow) var(--ease-out) both}.fade-in-opacity{animation:fadeIn var(--dur-base) var(--ease-out) both}.fade-in-stagger{animation:fadeInUp var(--dur-base) var(--ease-out) both;animation-delay:calc(var(--i, 0) * 40ms)}.skeleton{background:var(--color-border);border-radius:6px;animation:skeletonPulse 1.4s ease-in-out infinite}.xfade{position:relative}.xfade>.xfade-skeleton,.xfade>.xfade-content{transition:opacity var(--dur-base) var(--ease-out)}.xfade[data-ready=false]>.xfade-content{opacity:0;pointer-events:none}.xfade[data-ready=true]>.xfade-skeleton{opacity:0;pointer-events:none;position:absolute;inset:0}.collapsible{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-base) var(--ease-in-out)}.collapsible.is-open{grid-template-rows:1fr}.collapsible>.collapsible-inner{overflow:hidden;min-height:0}.route-host{flex:1;display:flex;flex-direction:column;min-height:0}.route-fade{animation:fadeInUp var(--dur-base) var(--ease-out) both}.empty-state{text-align:center;padding:3rem 1rem;color:var(--color-text-secondary)}.empty-state h3{font-size:1.1rem;color:var(--color-label);margin-bottom:.5rem}.empty-state p{font-size:.9rem}[data-theme=dark] .leaflet-popup-content-wrapper{background:var(--color-card-bg);color:var(--color-text)}[data-theme=dark] .leaflet-popup-tip{background:var(--color-card-bg)}[data-theme=dark] .leaflet-bar a,[data-theme=dark] .leaflet-bar a:hover{background-color:var(--color-card-bg);color:var(--color-text);border-bottom-color:var(--color-border)}[data-theme=dark] .leaflet-bar a:hover{background-color:var(--color-map-btn-hover)}[data-theme=dark] .leaflet-bar a.leaflet-disabled{background-color:var(--color-surface);color:var(--color-text-muted)}[data-theme=dark] .leaflet-bar{border-color:var(--color-border);box-shadow:0 1px 5px #00000080}[data-theme=dark] .leaflet-control-attribution{background:#1e293bd9;color:var(--color-text-secondary)}[data-theme=dark] .leaflet-control-attribution a{color:var(--color-link)}@media(max-width:768px){.app-header{padding:.5rem 1rem}.app-header h1{font-size:1rem}.app-header nav{gap:.5rem}.app-header nav a{font-size:.75rem}.page-container{padding:1rem .75rem}.page-title{font-size:1.25rem;margin-bottom:1rem}.spot-detail-page{padding:1rem .75rem}.detail-header{flex-direction:column;gap:.5rem}.score-breakdown{grid-template-columns:repeat(2,1fr);gap:.5rem}.score-item .score-value{font-size:1.25rem}.landing h1{font-size:2rem}.landing .tagline{font-size:1rem}.landing .actions{flex-direction:column;width:100%;max-width:280px}.option-grid{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}.conditions-bar{gap:1rem;padding:.5rem .75rem}.card{padding:1rem}.btn-lg{padding:.625rem 1.5rem;font-size:.9rem}.spot-card{flex-direction:column;align-items:flex-start;gap:.5rem}.page-container>div[style*="display: flex"][style*=gap]{flex-wrap:wrap}}@media(max-width:480px){.score-breakdown{grid-template-columns:repeat(2,1fr)}.map-controls{top:.5rem;right:.5rem}.map-btn{width:36px;height:36px;font-size:1rem}.fav-overlay{width:180px!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.skeleton{animation:none!important;opacity:.7}.collapsible{transition:none!important}}
