.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px;background:radial-gradient(1200px 600px at 10% -10%,rgba(18,128,74,.45),transparent 60%),radial-gradient(900px 500px at 110% 110%,rgba(232,51,28,.3),transparent 60%),var(--bg)}.login-container{background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:20px;padding:40px;max-width:600px;box-shadow:var(--shadow)}.login-container h1{margin-bottom:14px;font-size:34px;font-weight:800;letter-spacing:-.03em;text-align:center;background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.description{color:var(--muted);font-weight:500;line-height:1.6;margin-bottom:28px;text-align:center}.strava-connect-button{width:100%;background:#fc4c02;color:#fff;border:none;border-radius:12px;padding:16px 24px;font-size:17px;font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:12px;box-shadow:0 8px 24px #fc4c0259;transition:background .2s,transform .15s}.strava-connect-button:hover{background:#e04402;transform:translateY(-1px)}.strava-connect-button svg{width:24px;height:24px}.al-wrap{background:none;border:none}.al{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:2px;pointer-events:none;white-space:nowrap;font-family:var(--font)}.al-name{font-size:12.5px;font-weight:800;letter-spacing:-.01em;color:var(--ink);text-shadow:0 0 3px var(--bg),0 0 3px var(--bg),0 0 6px var(--bg)}.al.parks .al-name{font-size:11px;font-weight:700;color:var(--ink-2)}.al.sel .al-name{font-size:14px}.al-pct{padding:1px 7px;border-radius:999px;color:#fff;font-size:10.5px;font-weight:800;font-variant-numeric:tabular-nums;box-shadow:0 1px 3px #00000040}.achievements{position:absolute;top:16px;right:16px;bottom:32px;left:16px;z-index:700;display:flex;flex-direction:column;border-radius:var(--radius);background:var(--surface);color:var(--ink);border:1px solid var(--border);box-shadow:var(--shadow);overflow:hidden;animation:ach-in .2s ease-out}@keyframes ach-in{0%{opacity:0;transform:translateY(6px)}}.ach-head{display:flex;align-items:center;gap:16px;padding:16px 18px;border-bottom:1px solid var(--border)}.ach-title{display:flex;align-items:center;gap:12px;margin-right:auto;min-width:0}.ach-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--accent);color:var(--on-accent);flex-shrink:0}.ach-title h2{font-size:18px;font-weight:800;letter-spacing:-.01em}.ach-title p{font-size:13px;font-weight:600;color:var(--muted)}.ach-counts{display:flex;gap:14px}.ach-counts>span{display:flex;align-items:center;gap:5px;font-size:14px}.ach-counts>span.zero{opacity:.4}.ach-body{flex:1;overflow-y:auto;padding:16px 18px 22px}.achievements h3{display:flex;align-items:center;gap:6px;margin-bottom:10px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.achievements h3 small{margin-left:4px;font-size:12px;font-weight:600;text-transform:none;letter-spacing:0}.ach-quick{margin-bottom:22px;padding:14px;border-radius:14px;background:color-mix(in srgb,var(--accent) 9%,var(--surface));border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border))}.ach-quick h3{color:var(--accent)}.ach-quick ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;list-style:none}.ach-quick button{display:flex;flex-direction:column;gap:6px;width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:11px;background:var(--surface);color:var(--ink);text-align:left;cursor:pointer;transition:border-color .15s,transform .15s}.ach-quick button:hover{border-color:var(--accent)}.qw-top{display:flex;align-items:center;gap:6px;min-width:0;color:var(--muted)}.qw-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;color:var(--ink)}.qw-pct{font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink)}.qw-goal{font-size:13px;font-weight:600;color:var(--muted)}.qw-goal strong{font-size:16px;font-weight:800;color:var(--ink)}.qw-goal span{font-weight:800}.qw-bar{position:relative;height:5px;border-radius:3px;background:var(--surface-3)}.qw-bar>span{display:block;height:100%;border-radius:3px}.qw-bar i{position:absolute;top:-2px;width:2px;height:9px;border-radius:1px}.ach-list ul{list-style:none}.ach-list li+li{border-top:1px solid var(--border)}.ach-list button{display:grid;grid-template-columns:132px 1fr auto;align-items:center;gap:14px;width:100%;padding:10px 6px;border:none;border-radius:8px;background:none;color:var(--ink);text-align:left;cursor:pointer}.ach-list button:hover{background:var(--surface-2)}.ach-list .tier-badge.lg{justify-self:start}.aw-place{display:flex;flex-direction:column;min-width:0}.aw-name{display:flex;align-items:center;gap:6px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aw-name .icon{flex-shrink:0;color:var(--muted)}.aw-place small,.aw-when small{font-size:12px;font-weight:600;color:var(--muted)}.aw-when{display:flex;flex-direction:column;align-items:flex-end;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.aw-when small{max-width:220px;overflow:hidden;text-overflow:ellipsis}.ach-empty{color:var(--muted);font-weight:600}@media (max-width: 600px){.achievements{top:8px;right:8px;bottom:24px;left:8px}.ach-counts{display:none}.ach-list button{grid-template-columns:124px 1fr}.aw-when{grid-column:2;align-items:flex-start}}.areas-panel{position:absolute;top:16px;right:16px;z-index:500;width:340px;max-width:calc(100% - 32px);max-height:calc(100% - 48px);display:flex;flex-direction:column;padding:14px 16px;border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 95%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink);border:1px solid var(--border);box-shadow:var(--shadow);font-size:13px;line-height:1.45}.areas-panel.muted{color:var(--muted)}.tier-row{display:flex;justify-content:space-between;margin-top:12px}.tier-count{display:flex;align-items:center;gap:5px;padding:3px 6px 3px 3px;margin:-3px -6px -3px -3px;border:none;border-radius:999px;background:transparent;color:var(--ink);font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;transition:background .15s,opacity .15s}.tier-count:hover:not(:disabled){background:var(--surface-2)}.tier-count.on{background:var(--surface-3);box-shadow:inset 0 0 0 1.5px var(--ink-2)}.tier-count.dim{opacity:.4}.tier-count:disabled{cursor:default}.link-button{border:none;background:none;padding:0;color:var(--accent);font:inherit;font-weight:700;cursor:pointer;text-decoration:underline}.tier-count strong{font-size:15px;font-weight:800}.tier-count.zero{opacity:.4}.tier-badge{display:inline-grid;place-items:center;flex-shrink:0;color:#fff;font-weight:800;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}.tier-badge.sm{width:20px;height:22px;font-size:10.5px}.tier-badge.lg{height:26px;padding:0 12px;font-size:12px;letter-spacing:.02em;clip-path:none;border-radius:999px}.tier-badge.empty{background:var(--surface-3)}.areas-hint{margin-top:12px;color:var(--muted);font-weight:600}.area-detail{margin-top:10px;padding:10px 12px;border-radius:12px;background:var(--surface-2)}.detail-head{display:flex;justify-content:space-between;gap:8px}.detail-head h3{font-size:17px;font-weight:800;letter-spacing:-.01em;line-height:1.2}.detail-sub{font-size:12px;font-weight:600;color:var(--muted)}.detail-actions{display:flex;gap:4px}.mini-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--ink-2);cursor:pointer}.mini-icon:hover{color:var(--ink);border-color:var(--accent)}.detail-pct{display:flex;align-items:center;gap:10px;margin-top:8px}.detail-pct .big{font-size:28px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.detail-bar{position:relative;height:9px;margin-top:6px;border-radius:999px;background:var(--surface-3);overflow:hidden}.detail-bar>span{display:block;height:100%;border-radius:999px;transition:width .4s ease}.detail-bar i{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--surface);opacity:.8}.detail-facts{display:flex;gap:14px;margin-top:8px;color:var(--muted);font-weight:600}.detail-facts strong{color:var(--ink);font-weight:800}.next-goal{margin-top:6px;font-weight:600;color:var(--ink-2)}.next-goal span{font-weight:800}.to-go{margin-top:8px}.to-go h4{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);margin-bottom:4px}.to-go h4 small{margin-left:auto;font-size:11.5px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--muted)}.todo-key{width:18px;height:0;border-top:2px dashed #e0181e}:root[data-theme=dark] .todo-key{border-top-color:#ff4a4a}.to-go ul{list-style:none;max-height:118px;overflow-y:auto;margin-right:-6px;padding-right:4px}.to-go li button{width:100%;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 2px;column-gap:8px;row-gap:1px;align-items:center;padding:2px 6px;border:none;border-radius:6px;background:transparent;color:var(--ink);text-align:left;font-size:12.5px;font-weight:600;cursor:pointer}.to-go li button:hover{background:var(--surface-3)}.to-go li button.active{background:color-mix(in srgb,#ffc21a 30%,transparent)}.todo-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.to-go small{color:var(--muted);font-variant-numeric:tabular-nums}.todo-bar{grid-column:1 / 3;height:2px;border-radius:999px;background:color-mix(in srgb,#e0181e 25%,transparent);overflow:hidden}.todo-bar span{display:block;height:100%;background:#00b356}:root[data-theme=dark] .todo-bar span{background:#2bf087}.area-list{list-style:none;margin-top:10px;margin-right:-6px;padding-right:6px;overflow-y:auto;min-height:150px;flex:1}.areas-panel.expanded .area-list{min-height:0}.area-list button{width:100%;display:grid;grid-template-columns:22px 1fr auto;grid-template-rows:auto 4px;column-gap:8px;row-gap:3px;align-items:center;padding:7px 6px;border:none;border-radius:9px;background:transparent;color:var(--ink);text-align:left;cursor:pointer}.area-list button:hover,.area-list button.active{background:var(--surface-2)}.area-name{display:flex;align-items:baseline;font-weight:700;min-width:0;white-space:nowrap}.area-title{min-width:0;overflow:hidden;text-overflow:ellipsis}.area-name small{flex-shrink:0;margin-left:6px;font-weight:600;color:var(--muted)}.area-pct{font-weight:800;font-variant-numeric:tabular-nums}.mini-bar{grid-column:2 / 4;height:4px;border-radius:999px;background:var(--surface-3);overflow:hidden}.mini-bar span{display:block;height:100%}@media (max-width: 600px){.areas-panel{top:auto;bottom:40px;left:12px;right:12px;width:auto;max-width:none;max-height:46%}}.areas-head{display:flex;gap:12px;align-items:center}.areas-head .tier-row{flex:1;margin-top:0}.expand-toggle{flex-shrink:0;width:34px;height:34px}.areas-panel.expanded{left:16px;right:16px;bottom:32px;width:auto;max-width:none;max-height:none;padding:16px 20px;z-index:700}.areas-panel.expanded .areas-head{justify-content:space-between}.areas-panel.expanded .tier-row{justify-content:flex-start;gap:18px}.list-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:12px}.list-tools .search{flex:1 1 260px;max-width:420px;display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--muted)}.list-tools .search:focus-within{border-color:var(--accent)}.list-tools input{flex:1;min-width:0;border:none;outline:none;background:transparent;color:var(--ink);font:inherit;font-size:14px;font-weight:600}.list-tools .sort{display:flex;gap:2px;padding:3px;border-radius:10px;background:var(--surface-2)}.list-tools .sort button{padding:5px 10px;border:none;border-radius:8px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:700;cursor:pointer}.list-tools .sort button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.list-count{margin-left:auto;font-size:12.5px;font-weight:600;color:var(--muted)}.areas-panel.expanded .area-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-content:start;gap:2px 14px}.area-pct small{font-weight:600;color:var(--muted)}@media (max-width: 600px){.areas-panel.expanded{top:12px;left:12px;right:12px;bottom:32px;max-height:none}}.list-sort{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.list-sort .sort{display:flex;gap:2px;padding:2px;border-radius:8px;background:var(--surface-2)}.list-sort .sort button{padding:3px 9px;border:none;border-radius:6px;background:transparent;color:var(--muted);font-size:11.5px;font-weight:700;cursor:pointer}.list-sort .sort button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.list-sort+.area-list{margin-top:4px}.area-kind{display:inline-flex;flex-shrink:0;align-self:center;margin-right:5px;color:var(--muted)}.ach-link{display:flex;align-items:center;gap:8px;width:100%;margin-top:10px;padding:7px 10px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border));border-radius:10px;background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--accent);font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s}.ach-link:hover{background:color-mix(in srgb,var(--accent) 14%,var(--surface));border-color:var(--accent)}.ach-link small{font-size:12px;font-weight:600;color:var(--muted)}.ach-link-arrow{margin-left:auto}.kind-switch button{display:inline-flex;align-items:center;gap:4px}.locate-control{position:relative;overflow:visible!important}.locate-control .locate-button{display:grid!important;place-items:center;color:var(--ink)!important;border-radius:12px}.locate-control .locate-button.active{color:#2b7fff!important}.locate-control .locate-button.busy svg{animation:locate-spin 1s linear infinite}@keyframes locate-spin{to{transform:rotate(360deg)}}.locate-message{position:absolute;left:calc(100% + 8px);top:50%;transform:translateY(-50%);white-space:nowrap;padding:6px 10px;border-radius:8px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow);font-size:12.5px;font-weight:600;opacity:0;pointer-events:none;transition:opacity .2s}.locate-message.show{opacity:1}.locate-dot-wrap{background:none;border:none}.locate-dot{position:absolute;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:#2b7fff;border:3px solid #fff;box-shadow:0 1px 4px #00000059}.locate-dot:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:50%;border:2px solid #2b7fff;animation:locate-pulse 2s ease-out infinite}@keyframes locate-pulse{0%{transform:scale(1);opacity:.8}to{transform:scale(3);opacity:0}}.leaflet-container .map-toggle .locate-button.active,.leaflet-container .map-toggle .locate-button.active:hover{color:var(--on-accent)!important;background:var(--accent)!important}.coverage-wrapper{position:relative;width:100%;height:100%}.coverage-panel{position:absolute;top:16px;right:16px;z-index:500;width:268px;max-width:calc(100% - 32px);padding:16px 18px;border-radius:var(--radius);background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink);border:1px solid var(--border);box-shadow:var(--shadow);font-size:13px;line-height:1.45}.panel-kicker{font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.coverage-headline{display:flex;align-items:baseline;gap:6px;margin-top:2px}.coverage-headline .big{font-size:40px;font-weight:800;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums;background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.coverage-headline .unit{font-size:16px;font-weight:800;color:var(--ink-2)}.mini-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.mini-stats>div{padding:8px 10px;border-radius:10px;background:var(--surface-2)}.mini-stats strong{display:block;font-size:17px;font-weight:800;font-variant-numeric:tabular-nums}.mini-stats span{font-size:11.5px;font-weight:600;color:var(--muted)}.coverage-panel .muted{color:var(--muted)}.coverage-view{margin-top:14px}.view-row{display:flex;justify-content:space-between;align-items:baseline;font-weight:700;color:var(--ink-2);margin-bottom:6px}.view-row strong{font-size:18px;font-weight:800;color:var(--ink)}.coverage-view .bar{height:8px;border-radius:999px;background:var(--surface-3);overflow:hidden}.coverage-view .bar>div{height:100%;border-radius:999px;background:var(--gradient);transition:width .4s ease}.coverage-legend{display:flex;flex-wrap:wrap;gap:6px 12px;margin-top:14px;font-size:12px;font-weight:700;color:var(--ink-2)}.coverage-legend span{display:inline-flex;align-items:center;gap:5px}.coverage-legend i{display:inline-block;width:18px;height:5px;border-radius:3px}.coverage-legend i.thin{height:2px}.coverage-status{margin-top:12px;padding-top:10px;border-top:1px solid var(--border);font-size:12px;font-weight:600;color:var(--muted);display:grid;gap:4px}.status-line{display:flex;align-items:flex-start;gap:7px}.status-line.warn{color:var(--danger)}.dot{width:7px;height:7px;margin-top:5px;border-radius:50%;background:var(--muted);flex-shrink:0}.dot.ok{background:var(--accent)}.dot.partial{background:#f29a0e}.dot.busy{background:var(--accent);animation:pulse 1.2s ease-in-out infinite}.dot.error{background:var(--danger)}@keyframes pulse{50%{opacity:.3}}@media (max-width: 600px){.coverage-panel{top:auto;bottom:40px;right:12px;left:12px;width:auto;max-width:none;padding:12px 14px}.coverage-headline .big{font-size:30px}.mini-stats,.coverage-legend{display:none}}.activity-heatmap{width:100%;height:100%;z-index:1}.heatmap-empty{display:flex;align-items:center;justify-content:center;width:100%;height:100%;flex-direction:column;gap:8px;text-align:center;background:var(--bg)}.heatmap-empty p{color:var(--muted);font-size:16px;font-weight:600}.heatmap-empty code{background:var(--surface-2);color:var(--ink);padding:4px 8px;border-radius:6px}.load-status{position:absolute;left:50%;bottom:28px;transform:translate(-50%);z-index:600;display:flex;align-items:center;gap:10px;max-width:calc(100% - 32px);padding:8px 14px 8px 10px;border-radius:999px;background:color-mix(in srgb,var(--surface) 94%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border);box-shadow:var(--shadow);color:var(--ink);font-size:13px;white-space:nowrap;pointer-events:none;animation:load-status-in .25s ease-out}.load-status strong{font-weight:700}.load-status small{margin-left:8px;font-size:12px;font-weight:600;color:var(--muted)}.load-spinner{flex-shrink:0;width:16px;height:16px;border:2.5px solid var(--surface-3);border-top-color:var(--accent);border-right-color:var(--accent-2);border-radius:50%;animation:spin .9s linear infinite}.load-spinner.paused{animation:none;border-color:var(--surface-3);border-top-color:var(--muted)}@keyframes load-status-in{0%{opacity:0;transform:translate(-50%,8px)}}@media (min-width: 701px){.coverage-wrapper:has(.areas-panel:not(.expanded)) .load-status{left:calc((100% - 372px)/2)}}@media (max-width: 600px){.load-status{bottom:auto;top:12px}}.map-page{display:flex;flex-direction:column;width:100%;height:100vh;background:var(--bg)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--border);position:relative;z-index:1000}.topbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--gradient)}.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--gradient);color:var(--on-accent);box-shadow:0 6px 18px var(--accent-glow);flex-shrink:0}.brand-text{min-width:0}.brand-text h1{font-size:19px;font-weight:800;letter-spacing:-.02em;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-sub{display:block;font-size:12.5px;font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.toolbar-actions{display:flex;gap:6px}.segmented{display:flex;padding:4px;gap:2px;background:var(--surface-2);border-radius:12px}.segmented button{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border:none;border-radius:9px;background:transparent;color:var(--muted);font-size:14px;font-weight:700;cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}.segmented button:hover{color:var(--ink);background:var(--surface-3)}.segmented button.active{background:var(--gradient);color:var(--on-accent);box-shadow:0 4px 14px var(--accent-glow)}.icon-button{width:40px;height:40px;display:grid;place-items:center;border-radius:11px;border:1px solid var(--border);background:var(--surface);color:var(--ink-2);cursor:pointer;transition:background .15s,color .15s,border-color .15s,transform .15s}.icon-button:hover:not(:disabled){background:var(--surface-2);color:var(--ink);transform:translateY(-1px)}.icon-button.accent{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.icon-button.accent:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:var(--on-accent)}.icon-button.on,.icon-button.on:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 14%,var(--surface));border-color:var(--accent);color:var(--accent)}.icon-button.danger:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:var(--surface)}.icon-button:disabled{cursor:progress;opacity:.85}.spin{animation:spin .9s linear infinite}.year-picker{position:relative}.year-button{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:11px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font-size:14px;font-weight:700;cursor:pointer;transition:border-color .15s,background .15s}.year-button .icon:first-child{color:var(--accent)}.year-button:hover,.year-button.open{border-color:var(--accent);background:var(--accent-soft)}.year-button .chevron{color:var(--muted);transition:transform .15s}.year-button.open .chevron{transform:rotate(180deg)}.year-label{min-width:64px;text-align:left}.year-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:190px;max-height:320px;overflow-y:auto;padding:6px;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);z-index:2000;outline:none}.year-menu li{display:grid;grid-template-columns:18px 1fr auto;align-items:center;gap:8px;padding:8px 10px;border-radius:9px;font-size:14px;font-weight:600;color:var(--ink-2);cursor:pointer}.year-menu li.active{background:var(--surface-2);color:var(--ink)}.year-menu li.selected{color:var(--accent);font-weight:800}.year-menu .check{display:grid;place-items:center}.year-menu .opt-count{font-size:12px;font-weight:700;color:var(--muted);background:var(--surface-2);padding:2px 8px;border-radius:999px;font-variant-numeric:tabular-nums}.year-menu li.active .opt-count{background:var(--surface-3)}.filterbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 20px;background:var(--surface);border-bottom:1px solid var(--border);z-index:999}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:7px;padding:6px 8px 6px 12px;border-radius:999px;border:1.5px solid var(--border);background:var(--surface);color:var(--muted);font-size:13.5px;font-weight:700;cursor:pointer;transition:all .15s}.chip:hover{border-color:var(--accent);color:var(--ink)}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.chip-count{min-width:24px;padding:1px 7px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);font-size:12px;text-align:center;font-variant-numeric:tabular-nums}.chip.on .chip-count{background:color-mix(in srgb,var(--on-accent) 22%,transparent);color:var(--on-accent)}.filter-summary{font-size:13px;font-weight:600;color:var(--muted);white-space:nowrap}.filter-summary strong{color:var(--ink);font-weight:800}.map-container{flex:1;position:relative;overflow:hidden}.legend{position:absolute;bottom:28px;right:16px;z-index:500;padding:14px 16px;border-radius:var(--radius);background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.legend h3{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:10px}.legend-items{display:flex;flex-direction:column;gap:8px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}.legend-line{width:26px;height:5px;border-radius:3px}.map-page-loading,.map-page-error{display:flex;align-items:center;justify-content:center;width:100%;height:100vh;background:var(--bg)}.loading-content,.error-content{text-align:center}.loading-content h2,.error-content h2{color:var(--ink);font-weight:800;margin-bottom:8px}.loading-content p,.error-content p{color:var(--muted);margin-bottom:24px}.spinner{width:48px;height:48px;border:4px solid var(--surface-3);border-top-color:var(--accent);border-right-color:var(--accent-2);border-radius:50%;animation:spin .9s linear infinite;margin:0 auto 24px}@keyframes spin{to{transform:rotate(360deg)}}.error-content button{background:var(--gradient);color:var(--on-accent);border:none;border-radius:11px;padding:11px 26px;font-size:15px;font-weight:700;cursor:pointer}@media (max-width: 900px){.topbar{flex-direction:column;align-items:stretch;padding:10px 16px}.toolbar{justify-content:space-between}.filterbar{padding:8px 16px}.filter-summary{display:none}}@media (max-width: 560px){.topbar{display:grid;grid-template-columns:1fr auto;grid-template-areas:"brand actions" "year modes";gap:10px;align-items:center}.toolbar{display:contents}.brand{grid-area:brand}.toolbar-actions{grid-area:actions}.year-picker{grid-area:year}.segmented{grid-area:modes}.year-button{width:100%}.brand-mark{width:36px;height:36px}.brand-text h1{font-size:16px;white-space:normal;line-height:1.2}.brand-sub{display:none}.segmented button{padding:7px 10px}.segmented button span{display:none}.icon-button,.year-button{height:38px}.icon-button{width:38px}.chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.legend{bottom:24px;right:12px}}.map-keys{position:absolute;left:16px;bottom:28px;z-index:500;display:flex;flex-direction:column;gap:10px;pointer-events:none}.map-keys .legend{position:static}.heat-key{display:grid;grid-template-columns:repeat(3,auto);gap:6px 14px;font-size:12.5px;font-weight:600}.heat-key span{display:inline-flex;align-items:center;gap:6px}.heat-key i{width:18px;height:5px;border-radius:3px}:root{--bg: #f3f1e7;--surface: #fffdf6;--surface-2: #ece9dc;--surface-3: #e0dccb;--ink: #1e2a21;--ink-2: #3a4a3d;--muted: #687263;--border: #dcd7c4;--accent: #12804a;--accent-hover: #0c6b3d;--accent-2: #8cc63f;--on-accent: #ffffff;--accent-soft: rgba(18, 128, 74, .12);--accent-glow: rgba(18, 128, 74, .4);--danger: #e0331c;--gradient: linear-gradient(120deg, #0f7a46 0%, #33a14a 50%, #8cc63f 100%);--shadow: 0 10px 30px rgba(30, 42, 33, .12), 0 2px 6px rgba(30, 42, 33, .08);--shadow-sm: 0 1px 2px rgba(30, 42, 33, .12);--radius: 14px;--font: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;color-scheme:light}:root[data-theme=dark]{--bg: #101711;--surface: #18211a;--surface-2: #1f2a21;--surface-3: #2a372c;--ink: #eaf0e3;--ink-2: #cbd5c3;--muted: #95a08d;--border: #2b372d;--accent: #45d184;--accent-hover: #67dc9b;--accent-2: #c4e534;--on-accent: #06140b;--accent-soft: rgba(69, 209, 132, .16);--accent-glow: rgba(69, 209, 132, .35);--danger: #ff6a4d;--gradient: linear-gradient(120deg, #45d184 0%, #8fd94a 55%, #c4e534 100%);--shadow: 0 12px 34px rgba(0, 0, 0, .55), 0 2px 6px rgba(0, 0, 0, .4);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5);color-scheme:dark}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100vw;height:100vh}button,select{font-family:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.icon{flex-shrink:0}.leaflet-container{font-family:var(--font);background:var(--bg)}.leaflet-bar{border:none!important;box-shadow:var(--shadow)!important;border-radius:12px!important;overflow:hidden}.leaflet-container .leaflet-bar a,.leaflet-container.leaflet-touch .leaflet-bar a{width:36px;height:36px;line-height:36px;background:var(--surface);color:var(--ink);border-bottom-color:var(--border);transition:background-color .15s,color .15s}.leaflet-container .leaflet-bar a:hover,.leaflet-container .leaflet-bar a:focus-visible{background:var(--surface-2);color:var(--ink)}.leaflet-container .leaflet-bar a:focus:not(:focus-visible):not(:hover){background:var(--surface)}.leaflet-container .leaflet-bar a.leaflet-disabled{background:var(--surface);color:var(--muted)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.leaflet-popup-content-wrapper{border-radius:12px}.leaflet-popup-content strong{font-size:15px}.leaflet-container a.leaflet-popup-close-button{color:var(--muted)}.leaflet-control-attribution{background:color-mix(in srgb,var(--surface) 80%,transparent)!important;color:var(--muted)}.leaflet-control-attribution a{color:var(--accent)}
