:root{color-scheme:light;--color-bg: #f4f6f0;--color-surface: #ffffff;--color-surface-2: #eef2e8;--color-overlay: rgb(18 46 40 / .45);--color-text: #1b2e25;--color-text-muted: #4f5d53;--color-border: #d6ddd0;--color-border-strong: #7d8a80;--color-primary: #1f4a36;--color-on-primary: #ffffff;--color-primary-soft: #e3ecdf;--color-focus: #0f62c9;--color-danger: #a8321c;--color-success: #1f6b3a;--color-warn-bg: #fff4dd;--color-warn-text: #6b4a12;--color-warn-border: #c09034;--color-demo-bg: #8a3b00;--color-on-demo: #ffffff;--color-unknown: #68706b;--legend-ramp: linear-gradient(to right, #baa5b4, #956c84, #5b3246, #295642, #113e2e);--legend-paper: #f4f1e6;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", Consolas, monospace;--text-display: 700 28px/34px var(--font-sans);--text-title: 700 20px/26px var(--font-sans);--text-heading: 650 16px/22px var(--font-sans);--text-body: 400 15px/22px var(--font-sans);--text-label: 600 14px/20px var(--font-sans);--text-caption: 400 13px/18px var(--font-sans);--text-micro: 600 12px/16px var(--font-sans);--text-figure: 700 40px/44px var(--font-sans);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--radius-s: 6px;--radius-m: 10px;--radius-l: 16px;--radius-pill: 999px;--shadow-1: 0 1px 2px rgb(0 0 0 / .12), 0 1px 3px rgb(0 0 0 / .08);--shadow-2: 0 4px 16px rgb(0 0 0 / .16);--shadow-3: 0 12px 40px rgb(0 0 0 / .24);--elevation-border: transparent;--dur-fast: .12s;--dur-base: .2s;--dur-slow: .3s;--ease-standard: cubic-bezier(.2, 0, 0, 1);--nav-h: 64px;--touch: 44px}:root[data-theme=dark]{color-scheme:dark;--color-bg: #0f1713;--color-surface: #17221c;--color-surface-2: #213029;--color-overlay: rgb(0 0 0 / .55);--color-text: #e6ede5;--color-text-muted: #a7b6aa;--color-border: #2f3f36;--color-border-strong: #73867a;--color-primary: #a8d5b0;--color-on-primary: #0d1f15;--color-primary-soft: #23382c;--color-focus: #7db4ff;--color-danger: #ff9b85;--color-success: #8fd1a0;--color-warn-bg: #3a2d12;--color-warn-text: #f4d58b;--color-warn-border: #c09034;--color-demo-bg: #f0b25a;--color-on-demo: #2b1500;--elevation-border: var(--color-border)}@media(min-width:1024px){:root{--text-body: 400 14px/21px var(--font-sans)}}@media(prefers-reduced-motion:reduce){:root{--dur-fast: 0ms;--dur-base: 0ms;--dur-slow: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;font:var(--text-body);color:var(--color-text);background:var(--color-bg);font-synthesis:none;-webkit-font-smoothing:antialiased;overscroll-behavior:none}h1,h2,h3,h4,p,dl,dd,figure{margin:0}h1,h2{font:var(--text-title)}h3{font:var(--text-heading)}h4{font:var(--text-label)}p{text-wrap:pretty}ul,ol{margin:0;padding:0;list-style:none}img,svg{display:block;flex:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;padding:0}button:disabled{cursor:default;opacity:.55}a{color:var(--color-primary);text-underline-offset:2px}code{font-family:var(--font-mono);font-size:13px;overflow-wrap:anywhere}small{font:var(--text-caption)}button,a,input,select,textarea,summary,[role=switch]{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}.tabular,.figure-value,.slider-value,.trip-stats strong,.data-row-value{font-variant-numeric:tabular-nums}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spin{animation:none}*,*:before,*:after{transition-duration:0ms!important;scroll-behavior:auto!important}}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;min-width:44px;padding:0 var(--space-4);border-radius:var(--radius-m);border:1px solid transparent;font:var(--text-label);text-align:center;text-decoration:none;transition:background-color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard)}.btn-lg{min-height:52px;padding:0 var(--space-5);font-size:15px}.btn-block{display:flex;width:100%}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled),.btn-ghost:hover:not(:disabled){background:var(--color-surface-2)}.btn-ghost{color:var(--color-primary);padding:0 var(--space-3)}.btn-danger{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}.btn-label{min-width:0}.btn.is-busy{cursor:progress}.btn:disabled{opacity:.55}.icon-btn{display:inline-grid;place-items:center;flex:none;width:44px;height:44px;border-radius:var(--radius-pill);color:var(--color-text)}.icon-btn:hover:not(:disabled){background:var(--color-surface-2)}.icon-btn-rail{width:48px;height:48px;border-radius:var(--radius-m)}.icon-btn-surface{background:var(--color-surface);box-shadow:var(--shadow-1);border:1px solid var(--elevation-border)}.icon-btn-surface:hover:not(:disabled){background:var(--color-surface-2)}.icon-btn.is-active{color:var(--color-focus)}.link-button{color:var(--color-primary);font:var(--text-label);text-decoration:underline;text-underline-offset:2px}.chip-hit{display:inline-flex;align-items:center;min-height:44px;min-width:44px;max-width:100%;border-radius:var(--radius-pill);text-align:left}.chip-static{display:inline-flex;max-width:100%}.chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;min-height:28px;padding:4px 10px;border-radius:var(--radius-pill);font:var(--text-micro);letter-spacing:0;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border-strong)}.chip-text{overflow-wrap:anywhere}.chip-status{font-weight:650}.chip-experimental{background:var(--color-warn-bg);color:var(--color-warn-text);border-color:var(--color-warn-border)}.chip-demo{background:var(--color-demo-bg);color:var(--color-on-demo);border-color:var(--color-demo-bg);font-weight:700}.chip-version,.chip-scope{background:var(--color-primary-soft);color:var(--color-text);border-color:var(--color-border-strong)}.chip-scope{background:var(--color-warn-bg);color:var(--color-warn-text);border-color:var(--color-warn-border)}.chip-connection{background:var(--color-text);color:var(--color-bg);border-color:var(--color-text)}.chip-neutral{background:var(--color-surface-2);border-color:var(--color-border)}.chip-hit:hover .chip{filter:brightness(.97)}.chip-row,.status-chips{display:flex;flex-wrap:wrap;gap:6px}.status-chips.is-compact .chip{min-height:28px;padding:4px 10px}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border-radius:var(--radius-m);background:var(--color-surface-2);border:1px solid var(--color-border)}.segment{min-height:44px;padding:0 var(--space-2);border-radius:8px;font:var(--text-label);color:var(--color-text-muted)}.segment.is-checked{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-1);border:1px solid var(--color-border-strong)}.radio-cards{display:grid;gap:var(--space-2)}.radio-card{position:relative;display:flex;gap:var(--space-3);align-items:flex-start;min-height:56px;padding:var(--space-3);border-radius:var(--radius-m);background:var(--color-surface);border:1px solid var(--color-border-strong);cursor:pointer}.radio-card.is-checked{border:2px solid var(--color-primary);padding:11px;background:var(--color-primary-soft)}.radio-card.is-disabled{opacity:.7;cursor:default}.radio-card-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.radio-card-input:disabled{cursor:default}.radio-dot{flex:none;width:22px;height:22px;margin-top:1px;border-radius:50%;border:2px solid var(--color-border-strong);background:var(--color-surface);display:grid;place-items:center}.radio-card-input:checked~.radio-dot{border-color:var(--color-primary)}.radio-card-input:checked~.radio-dot:after{content:"";width:10px;height:10px;border-radius:50%;background:var(--color-primary)}.radio-card:has(.radio-card-input:focus-visible){outline:3px solid var(--color-focus);outline-offset:2px}.radio-card-body{display:grid;gap:var(--space-1);min-width:0}.radio-card-title{display:flex;align-items:center;gap:var(--space-2);font:var(--text-label)}.radio-card-text{font:var(--text-caption);color:var(--color-text-muted)}.basemap-thumb{display:inline-grid;place-items:center;width:48px;height:48px;border-radius:var(--radius-s);background:var(--color-surface-2);border:1px solid var(--color-border);color:var(--color-text-muted)}.basemap-attribution{display:block}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:48px;padding:var(--space-1) 0}.switch-row.is-disabled{opacity:.6}.switch-label{display:grid;gap:2px;font:var(--text-label);cursor:pointer;flex:1;min-width:0}.switch-label small{font:var(--text-caption);color:var(--color-text-muted)}.switch-control{position:relative;flex:none;width:52px;height:44px}.switch-input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}.switch-track{position:absolute;left:0;top:6px;width:52px;height:32px;border-radius:var(--radius-pill);background:var(--color-surface-2);border:2px solid var(--color-border-strong);transition:background-color var(--dur-fast) var(--ease-standard)}.switch-track:after{content:"";position:absolute;top:4px;left:4px;width:20px;height:20px;border-radius:50%;background:var(--color-border-strong);transition:transform var(--dur-fast) var(--ease-standard)}.switch-input:checked+.switch-track{background:var(--color-primary);border-color:var(--color-primary)}.switch-input:checked+.switch-track:after{transform:translate(20px);background:var(--color-on-primary)}.switch-input:focus-visible+.switch-track{outline:3px solid var(--color-focus);outline-offset:2px}.switch-input:disabled+.switch-track{opacity:.55}.slider{display:grid;gap:var(--space-1)}.slider-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2);font:var(--text-label)}.slider-value{font:var(--text-label);color:var(--color-primary)}.slider-row{display:flex;align-items:center;gap:var(--space-3)}.slider input[type=range]{flex:1;min-width:0;height:44px;margin:0;background:transparent;accent-color:var(--color-primary);cursor:pointer}.slider-field{width:84px;flex:none}.field{display:grid;gap:6px;font:var(--text-label);min-width:0}.field input,.field select,.field textarea,.select,.search-field input{width:100%;min-height:48px;padding:10px 12px;font:400 16px/24px var(--font-sans);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-s)}.slider-field{min-height:44px;padding:8px 10px;font:400 16px/24px var(--font-sans);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-s)}.field textarea{min-height:96px;resize:vertical}.field input[aria-invalid=true]{border-color:var(--color-danger)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.field-help{font:var(--text-caption);color:var(--color-text-muted)}.field-help svg{display:inline-block;vertical-align:-3px;margin-right:2px}.field-error{font:var(--text-caption);color:var(--color-danger)}.field-label{font:var(--text-label)}.inline-error{font:var(--text-caption);color:var(--color-danger)}.form-stack{display:grid;gap:var(--space-4)}.search-field{position:relative;display:flex;align-items:center}.search-field>svg{position:absolute;left:12px;color:var(--color-text-muted);pointer-events:none}.search-field input{padding-left:40px;padding-right:48px}.search-field .icon-btn{position:absolute;right:2px}.banner{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3);border-radius:var(--radius-m);font:var(--text-caption);line-height:19px;background:var(--color-surface-2);color:var(--color-text);border:1px solid var(--color-border)}.banner>svg{margin-top:1px;color:var(--color-text-muted)}.banner-text{flex:1;min-width:0;display:grid;gap:2px}.banner-text strong{font:var(--text-label)}.banner .icon-btn{margin:-10px -8px -10px 0}.banner-warn{background:var(--color-warn-bg);color:var(--color-warn-text);border-color:var(--color-warn-border)}.banner-warn>svg{color:var(--color-warn-text)}.banner-error{border-color:var(--color-danger)}.banner-error>svg{color:var(--color-danger)}.toast{position:fixed;left:50%;bottom:var(--toast-bottom, 16px);transform:translate(-50%);z-index:70;display:flex;align-items:center;gap:var(--space-2);width:max-content;max-width:min(560px,calc(100vw - 32px));padding:4px 4px 4px var(--space-4);border-radius:var(--radius-m);background:var(--color-text);color:var(--color-bg);box-shadow:var(--shadow-2);font:var(--text-caption);font-size:14px}.toast .icon-btn,.toast .btn-ghost{color:var(--color-bg)}.toast .icon-btn:hover{background:#ffffff1f}.toast-text{flex:1;min-width:0;padding:8px 0}.snackbar{position:fixed;z-index:71;left:50%;transform:translate(-50%);bottom:var(--snackbar-bottom, 16px);display:flex;align-items:center;gap:var(--space-3);width:max-content;max-width:min(560px,calc(100vw - 24px));padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border-radius:var(--radius-m);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-2);border:1px solid var(--color-border-strong);font:var(--text-label)}.snackbar-text{display:grid;gap:2px}.snackbar-text small{color:var(--color-text-muted);font-weight:400}.empty-state{display:grid;justify-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);text-align:center;border-radius:var(--radius-m);background:var(--color-surface-2)}.empty-state p{color:var(--color-text-muted);font:var(--text-caption);max-width:36ch}.empty-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--color-surface);color:var(--color-primary)}.disclosure{border-radius:var(--radius-m);background:var(--color-surface);border:1px solid var(--color-border)}.disclosure>summary{display:flex;align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-2) var(--space-3);cursor:pointer;list-style:none;border-radius:var(--radius-m)}.disclosure>summary::-webkit-details-marker{display:none}.disclosure-icon{color:var(--color-primary);display:inline-flex}.disclosure-title{flex:1;min-width:0;display:grid;gap:2px}.disclosure-title strong{font:var(--text-label)}.disclosure-title small{color:var(--color-text-muted)}.disclosure-chevron{color:var(--color-text-muted);transition:transform var(--dur-fast) var(--ease-standard)}.disclosure[open]>summary .disclosure-chevron{transform:rotate(180deg)}.disclosure-body{padding:0 var(--space-3) var(--space-3);display:grid;gap:var(--space-3)}.more-info>summary{display:inline-flex;align-items:center;min-height:44px;color:var(--color-primary);font:var(--text-label);cursor:pointer}.more-info>p,.more-info>code,.more-info>pre{font:var(--text-caption);color:var(--color-text-muted);overflow-wrap:anywhere;white-space:pre-wrap}.list{display:grid;gap:var(--space-2)}.list-item{display:flex;align-items:center;gap:var(--space-1);border-radius:var(--radius-m);background:var(--color-surface);border:1px solid var(--color-border);padding-right:var(--space-1)}.list-item.is-selected{border:2px solid var(--color-primary)}.list-item-actions{display:flex;align-items:center}.list-row{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-3);min-height:56px;padding:var(--space-2) var(--space-3);text-align:left;color:var(--color-text);border-radius:var(--radius-m)}button.list-row:hover{background:var(--color-surface-2)}.list-row-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--color-primary-soft);color:var(--color-primary);flex:none}.list-row-thumb{width:40px;height:40px;border-radius:var(--radius-s);object-fit:cover;flex:none}.list-row-text{flex:1;min-width:0;display:grid;gap:2px}.list-row-text strong{font:var(--text-label);overflow-wrap:anywhere}.list-row-text small{color:var(--color-text-muted);overflow-wrap:anywhere}.list-row-trailing{color:var(--color-text-muted);font:var(--text-label)}.list-row-chevron{color:var(--color-text-muted)}.list-row.is-static{padding-left:0;padding-right:0}.observation-symbol.found{background:#e2efe0;color:#1f6b3a}.observation-symbol.not_found{background:var(--color-surface-2);color:var(--color-text-muted)}.figure-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3)}.figure-card{display:grid;gap:var(--space-1);align-content:start;padding:var(--space-3);border-radius:var(--radius-m);background:var(--color-surface-2);border:1px solid var(--color-border);min-width:0}.figure-label{display:block;font:var(--text-micro);color:var(--color-text-muted);overflow-wrap:break-word;min-width:0}.figure-label>span:first-child{display:inline-block;vertical-align:-4px;margin-right:6px}.figure-label svg{color:var(--color-primary)}.figure-value{display:flex;align-items:center;gap:var(--space-2);font:var(--text-figure);letter-spacing:-.5px}.figure-card.is-unknown .figure-value{font:700 26px/44px var(--font-sans);color:var(--color-text)}.figure-card small{color:var(--color-text-muted)}.block{padding:var(--space-3);border-radius:var(--radius-m);background:var(--color-surface);border:1px solid var(--color-border);display:grid;gap:var(--space-2)}.block-title{display:flex;align-items:center;gap:var(--space-2);font:var(--text-label)}.block-title svg{color:var(--color-primary)}.legend{display:grid;gap:6px}.legend-head{display:flex;align-items:baseline;gap:var(--space-2);flex-wrap:wrap}.legend-head strong{font:var(--text-label)}.legend-head span{font:var(--text-caption);color:var(--color-text-muted)}.legend-scale{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-2);font:var(--text-micro);color:var(--color-text-muted)}.legend-ramp-wrap{display:block;padding:3px;border-radius:6px;background:var(--legend-paper);border:1px solid var(--color-border-strong)}.legend-ramp{display:block;height:10px;border-radius:3px;background:var(--legend-ramp)}.legend-unknown-line{display:flex;align-items:center;flex-wrap:wrap;column-gap:6px;font:var(--text-caption);min-height:44px}.legend-unknown-text{display:inline-flex;align-items:center;gap:6px}.legend-toggle{min-height:44px;min-width:44px;padding:0 var(--space-2);font:var(--text-label);color:var(--color-primary);text-decoration:underline;text-underline-offset:2px}.legend-info{margin-left:auto;display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--color-text-muted)}.legend-caption{font:var(--text-caption);color:var(--color-text-muted)}.legend.is-compact{gap:0}.legend.is-compact .legend-unknown-line{min-height:32px}.legend.is-compact .legend-toggle,.legend.is-compact .legend-info{margin-block:-6px}.legend.is-compact .legend-scale{margin:2px 0}.legend.is-skeleton .legend-ramp{opacity:.35}.unknown-swatch{display:inline-block;width:16px;height:12px;flex:none;border:1.5px solid var(--color-unknown);background:repeating-linear-gradient(135deg,var(--color-unknown) 0 1.5px,transparent 1.5px 4.5px)}.data-rows{display:grid}.data-row{display:grid;gap:2px;padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.data-row:last-child{border-bottom:0}.data-row-main{display:flex;justify-content:space-between;gap:var(--space-3);align-items:baseline}.data-row-label{font:var(--text-label)}.data-row-value{font:var(--text-label);text-align:right}.data-row-value.is-unknown{color:var(--color-text-muted);font-weight:600}.data-row-caveat{color:var(--color-text-muted)}.meta-list{display:grid;gap:var(--space-2)}.meta-list>div{display:grid;gap:2px}.meta-list dt{font:var(--text-micro);color:var(--color-text-muted)}.meta-list dd{font:var(--text-caption);font-size:14px;overflow-wrap:anywhere}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:var(--color-overlay);display:grid;place-items:center}.dialog{display:flex;flex-direction:column;background:var(--color-surface);color:var(--color-text);width:min(560px,calc(100vw - 32px));max-height:min(90vh,900px);border-radius:var(--radius-l);box-shadow:var(--shadow-3);border:1px solid var(--elevation-border);outline:none}.dialog-wide{width:min(760px,calc(100vw - 32px))}.dialog-header{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-5);border-bottom:1px solid var(--color-border);flex:none}.dialog-header h2{flex:1;min-width:0;font:var(--text-title)}.dialog-header .icon-btn{margin-left:auto}.dialog-body{flex:1;min-height:0;overflow:auto;padding:var(--space-4) var(--space-5) var(--space-6);display:grid;align-content:start;gap:var(--space-4);overscroll-behavior:contain}.dialog-footer{flex:none;display:flex;gap:var(--space-3);justify-content:flex-end;padding:var(--space-3) var(--space-5) calc(var(--space-3) + env(safe-area-inset-bottom));border-top:1px solid var(--color-border);background:var(--color-surface)}@media(max-width:759px),(max-height:499px){.dialog-backdrop{display:block}.dialog,.dialog-wide{position:fixed;top:0;right:0;bottom:0;left:0;width:auto;height:auto;max-height:none;border-radius:0;border:0}.dialog-header h2{flex:1 1 calc(100% - 64px)}.dialog-header .chip-hit{order:3}.dialog-header .icon-btn{order:2}.dialog-header{padding-top:calc(var(--space-2) + env(safe-area-inset-top));padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-2),env(safe-area-inset-right))}.dialog-body{padding:var(--space-4) max(var(--space-4),env(safe-area-inset-right)) var(--space-6) max(var(--space-4),env(safe-area-inset-left))}.dialog-footer .btn-primary{flex:1}}.photo-picker{display:grid;gap:var(--space-2)}.photo-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.photo-preview{display:flex;align-items:center;gap:var(--space-3)}.photo-preview img{width:96px;height:96px;object-fit:cover;border-radius:var(--radius-m);border:1px solid var(--color-border)}.location-field{display:grid;gap:var(--space-3)}.location-card{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-3);border-radius:var(--radius-m);background:var(--color-surface-2);border:1px solid var(--color-border)}.location-card>svg{color:var(--color-primary)}.location-card>div{flex:1;display:grid;min-width:0}.location-card strong{font:var(--text-label)}.location-card span{font:var(--text-caption);color:var(--color-text-muted)}.card{display:grid;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-m);background:var(--color-surface);border:1px solid var(--color-border)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.section{display:grid;gap:var(--space-3);border:0;margin:0;padding:0;min-width:0}.section-title{display:flex;align-items:center;gap:var(--space-2);font:var(--text-heading);padding:0}.section-title svg{color:var(--color-primary)}.button-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}.index-note,.hint-row{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3);border-radius:var(--radius-m);background:var(--color-surface-2);font:var(--text-caption)}.index-note svg,.hint-row svg{color:var(--color-primary);margin-top:1px}.list-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:44px}.list-header h3 span{color:var(--color-text-muted);font-weight:500;margin-left:4px}.micro-label,.eyebrow{font:var(--text-micro);color:var(--color-text-muted)}.dialog-body,.sheet-body,.view-page,.side-panel-inner,.about,.cell-panel,.tasot,.map-panel-content,.disclosure-body,.card,.section,.account,.backup,.evaluation,.conflicts,.legacy-panel,.legacy-offline,.legacy-tasot{grid-template-columns:minmax(0,1fr)}.source-list{display:grid;gap:var(--space-2)}.source-card{display:grid;gap:4px;padding:var(--space-3);border-radius:var(--radius-s);border:1px solid var(--color-border);font:var(--text-caption);overflow-wrap:anywhere}.source-card strong{font:var(--text-label)}.source-card a{display:inline-flex;align-items:center;gap:4px;min-height:44px}.source-dates{display:flex;flex-wrap:wrap;gap:var(--space-3);color:var(--color-text-muted)}.source-dates span{display:grid}.source-dates strong{color:var(--color-text);font:var(--text-caption);font-weight:600}.source-use{font:var(--text-micro);color:var(--color-text-muted)}.source-use.integrated{color:var(--color-success)}.unknown-chip .chip{background:var(--color-surface);border-color:var(--color-border-strong)}.unknown-chip-action{color:var(--color-primary);text-decoration:underline;text-underline-offset:2px;font-weight:650}.discard-ask{flex:1;display:grid;gap:var(--space-2)}.discard-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.discard-actions .btn{flex:1 1 180px}.app{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;background:var(--color-bg)}.stage{position:absolute;top:0;right:0;bottom:0;left:0}.map-stage{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:#dbe4d7}.map-surface{position:absolute;top:0;right:0;bottom:0;left:0;-webkit-touch-callout:none}.map-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font:var(--text-label);color:var(--color-text-muted)}.top-overlay,.top-bar,.map-chips,.nav,.map-rail,.legend-card,.app-bar{user-select:none;-webkit-user-select:none}.top-overlay{position:absolute;z-index:25;top:0;left:0;right:0;padding:calc(env(safe-area-inset-top) + 8px) max(12px,env(safe-area-inset-right)) 4px max(12px,env(safe-area-inset-left));pointer-events:none;display:grid;gap:4px}.top-overlay>*{pointer-events:none}.top-overlay button,.top-overlay a,.top-overlay .chip-static{pointer-events:auto}.view-kartta .top-overlay{background:none}.top-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.top-bar-pills{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px 6px;min-width:0}.top-bar-title{font:var(--text-title);min-height:44px;display:flex;align-items:center}.layer-pill{display:inline-flex;align-items:center;gap:8px;min-height:44px;max-width:min(62vw,360px);padding:6px 12px 6px 14px;border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-1);border:1px solid var(--elevation-border);font:var(--text-label);text-align:left}.layer-pill svg{color:var(--color-primary)}.layer-pill-text{min-width:0;overflow-wrap:break-word}.layer-pill small{color:var(--color-text-muted)}.map-chips{display:flex;flex-wrap:wrap;align-items:center;gap:0 6px}.map-chips .chip,.top-bar-pills .chip{box-shadow:var(--shadow-1)}.map-chips .status-chips{display:contents}.map-rail{position:absolute;z-index:15;right:max(10px,env(safe-area-inset-right));top:calc(var(--top-h, 0px) + 8px);bottom:calc(var(--sheet-h, 0px) + 52px);display:flex;flex-direction:column;justify-content:center;gap:8px;transition:bottom var(--dur-base) var(--ease-standard);pointer-events:none}.map-rail>*{pointer-events:auto}.map-rail.is-hidden,.sheet-full .map-stage .maplibregl-ctrl-bottom-left,.sheet-full .map-stage .maplibregl-ctrl-bottom-right{visibility:hidden}.rail-group{display:grid;gap:2px;border-radius:var(--radius-m);box-shadow:var(--shadow-1)}.rail-group .icon-btn-surface{box-shadow:none}.rail-group .icon-btn-surface:first-child{border-radius:var(--radius-m) var(--radius-m) 4px 4px}.rail-group .icon-btn-surface:last-child{border-radius:4px 4px var(--radius-m) var(--radius-m)}.map-stage .maplibregl-ctrl-bottom-left,.map-stage .maplibregl-ctrl-bottom-right{bottom:var(--sheet-h, 0px);transition:bottom var(--dur-base) var(--ease-standard)}.map-stage .maplibregl-ctrl-scale{margin:0 0 8px 12px;border-color:#1b2e25;color:#1b2e25;background:#ffffffd9;font:var(--text-micro)}.map-stage .maplibregl-ctrl-attrib{margin:0 8px 8px 0;font:var(--text-micro)}.map-stage .maplibregl-ctrl-attrib,.map-stage .maplibregl-ctrl-attrib a{color:#1b2e25}.map-stage .maplibregl-ctrl-attrib.maplibregl-compact{min-height:44px;min-width:0;padding:0 44px 0 0;border-radius:22px}.map-stage .maplibregl-ctrl-attrib-button{width:44px;height:44px;border-radius:22px;background-repeat:no-repeat;background-position:center}.map-stage .maplibregl-ctrl-attrib.maplibregl-compact-show{padding:12px 48px 12px 12px}.map-stage .basemap-status{position:absolute;z-index:12;left:50%;transform:translate(-50%);top:calc(var(--top-h, 0px) + 8px);padding:6px 12px;border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-1);font:var(--text-caption)}.map-stage .basemap-status.error{color:var(--color-danger)}.sheet-bottom{position:absolute;z-index:30;left:0;right:0;bottom:0;display:flex;flex-direction:column;overflow:hidden;background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-l) var(--radius-l) 0 0;box-shadow:var(--shadow-2);border:1px solid var(--elevation-border);border-bottom:0;transition:transform var(--dur-base) var(--ease-standard);will-change:transform}.sheet-bottom.is-dragging{transition:none}.sheet-grab{flex:none;touch-action:none;padding:0 max(16px,env(safe-area-inset-right)) 4px max(16px,env(safe-area-inset-left));cursor:grab}.sheet-handle{display:grid;place-items:start center;width:100%;height:44px;margin-bottom:-28px;padding-top:7px;position:relative;z-index:1}.sheet-handle span{width:40px;height:5px;border-radius:3px;background:var(--color-border-strong)}.sheet-handle:focus-visible{outline:none}.sheet-handle:focus-visible span{outline:3px solid var(--color-focus);outline-offset:2px}.sheet-header{position:relative}.sheet-full-header{padding-top:6px}.sheet-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:4px max(16px,env(safe-area-inset-right)) 24px max(16px,env(safe-area-inset-left));display:grid;align-content:start;gap:var(--space-3)}.sheet-body.is-peek{overflow:hidden}.peek{display:grid;gap:2px;padding-top:2px}.panel-header{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;padding-top:8px}.panel-header-text{flex:1;min-width:0;display:grid}.panel-header-text h2{font:var(--text-title)}.panel-header-text small{color:var(--color-text-muted)}.panel-header-chips{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px}.full-header-chips{display:flex;flex-wrap:wrap;gap:6px}.zoom-prompt{display:flex;align-items:center;gap:8px}.zoom-prompt p{flex:1;min-width:0;font:var(--text-label)}.zoom-prompt .btn{flex:none}.legend-card .zoom-prompt{flex-direction:column;align-items:stretch}.coordinate-row{display:flex;align-items:center;gap:4px 6px;min-height:40px;border-bottom:1px solid var(--color-border)}.coordinate-row .btn,.coordinate-row .icon-btn{margin:-2px 0}.coordinate-row>svg{color:var(--color-primary)}.coordinate-text{flex:1;min-width:0;display:grid;font:var(--text-caption)}.coordinate-text strong{font:var(--text-label)}.sheet-side{position:absolute;z-index:30;left:0;top:var(--top-h, 0px);bottom:0;display:flex}.sheet-side-panel{width:min(340px,36vw);display:flex;flex-direction:column;overflow:hidden;background:var(--color-surface);box-shadow:var(--shadow-2);border-right:1px solid var(--elevation-border);border-radius:0 var(--radius-l) 0 0}.sheet-side .sheet-grab{padding-top:0;cursor:default}.sheet-side .panel-header{padding-top:8px}.sheet-side-toggle{order:2;align-self:center;width:44px;height:64px;margin-left:-1px;border-radius:0 var(--radius-m) var(--radius-m) 0;background:var(--color-surface);box-shadow:var(--shadow-1);color:var(--color-text);display:grid;place-items:center}.nav{display:flex}.nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:44px;min-height:44px;color:var(--color-text-muted);font:var(--text-micro)}.nav-icon{position:relative;display:grid;place-items:center;width:56px;height:30px;border-radius:var(--radius-pill);transition:background-color var(--dur-fast) var(--ease-standard)}.nav-item.is-active{color:var(--color-text)}.nav-item.is-active .nav-icon{background:var(--color-primary-soft);color:var(--color-primary)}.nav-badge{position:absolute;top:3px;right:14px;width:8px;height:8px;border-radius:50%;background:var(--color-danger)}.nav-bar{position:absolute;z-index:40;left:0;right:0;bottom:0;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:grid;grid-template-columns:repeat(5,1fr);background:var(--color-surface);border-top:1px solid var(--color-border)}.nav-bar .nav-item{min-height:var(--nav-h)}.nav-rail{position:absolute;z-index:40;left:0;top:0;bottom:0;width:calc(72px + env(safe-area-inset-left));padding-left:env(safe-area-inset-left);flex-direction:column;justify-content:center;gap:4px;background:var(--color-surface);border-right:1px solid var(--color-border)}.nav-rail .nav-item{min-height:56px}.nav-tabs{gap:4px}.nav-tabs .nav-item{flex-direction:row;gap:6px;padding:0 12px 0 6px;border-radius:var(--radius-pill);font:var(--text-label);min-height:44px}.nav-tabs .nav-icon{width:32px;height:32px}.nav-tabs .nav-item.is-active{background:var(--color-primary-soft)}.nav-tabs .nav-item.is-active .nav-icon{background:none}.layout-phone .stage{bottom:calc(var(--nav-h) + env(safe-area-inset-bottom))}.view-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;overflow-y:auto;overscroll-behavior:contain;background:var(--color-bg);padding-top:var(--top-h, 56px)}.layout-phone .view-layer .view-page,.layout-landscape .view-layer .view-page{padding-bottom:96px}.layout-phone:not(.view-kartta) .top-overlay,.layout-landscape:not(.view-kartta) .top-overlay{background:var(--color-bg);border-bottom:1px solid var(--color-border);padding-bottom:6px}.layout-landscape .stage{left:calc(72px + env(safe-area-inset-left))}.layout-landscape .map-stage .maplibregl-ctrl-bottom-left{left:var(--sheet-h, 0px);bottom:0}.layout-landscape .map-stage .maplibregl-ctrl-bottom-right{bottom:0}.layout-landscape .map-rail{bottom:52px}.layout-landscape .snackbar{left:auto;right:72px;transform:none}.legend-card{position:absolute;z-index:14;left:12px;bottom:40px;width:min(320px,calc(100% - 96px));display:grid;gap:6px;padding:10px 12px 6px;border-radius:var(--radius-m);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-1);border:1px solid var(--elevation-border);transition:left var(--dur-base) var(--ease-standard)}.layout-landscape .legend-card{left:auto;right:calc(72px + env(safe-area-inset-right));bottom:8px;width:min(320px,calc(100% - var(--sheet-h, 0px) - 220px));padding:6px 12px 4px;gap:2px}.layout-desktop .app,.app.layout-desktop,.app.layout-medium{display:grid;grid-template-rows:56px 1fr}.layout-desktop .stage,.layout-medium .stage{position:relative;inset:auto;display:flex;min-height:0}.app-bar{display:flex;align-items:center;gap:16px;height:56px;padding:0 12px 0 16px;background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:30;position:relative}.brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;font:var(--text-heading);font-size:18px;color:var(--color-text);text-decoration:none}.brand img{border-radius:8px}.app-bar-end{margin-left:auto;display:flex;align-items:center;gap:6px}.side-panel{position:relative;z-index:20;flex:none;width:400px;min-width:340px;max-width:560px;resize:horizontal;overflow:auto;background:var(--color-surface);border-right:1px solid var(--color-border)}.side-panel-inner{display:grid;gap:var(--space-4);padding:var(--space-6);align-content:start}.side-panel .view-page{padding:var(--space-6)}.side-panel-title{font:var(--text-title)}.layout-desktop .map-stage,.layout-medium .map-stage{position:relative;inset:auto;flex:1;min-width:0}.map-top{position:absolute;z-index:16;top:12px;left:12px;right:76px;pointer-events:none}.map-top .chip-hit,.map-top .chip-static{pointer-events:auto}.layout-desktop .map-rail,.layout-medium .map-rail{top:12px;right:12px;bottom:auto;justify-content:flex-start}.layout-desktop .map-stage .maplibregl-ctrl-bottom-left,.layout-desktop .map-stage .maplibregl-ctrl-bottom-right,.layout-medium .map-stage .maplibregl-ctrl-bottom-left,.layout-medium .map-stage .maplibregl-ctrl-bottom-right{bottom:0}.layout-medium .side-panel{position:absolute;left:0;top:0;bottom:0;width:min(400px,50vw);min-width:0;box-shadow:var(--shadow-2);resize:none}.layout-medium .map-top{left:calc(var(--panel-w, 0px) + 60px)}.layout-medium .legend-card{left:calc(var(--panel-w, 0px) + 12px)}.layout-medium .map-stage .maplibregl-ctrl-bottom-left{left:var(--panel-w, 0px)}.panel-toggle{position:absolute;z-index:25;top:12px;left:calc(var(--panel-w, 0px) + 8px);width:44px;height:44px;border-radius:var(--radius-m);background:var(--color-surface);box-shadow:var(--shadow-1);display:grid;place-items:center;color:var(--color-text)}.layout-desktop .toast,.layout-medium .toast{left:calc(50% + var(--panel-w, 0px) / 2)}.layout-desktop .snackbar,.layout-medium .snackbar{left:auto;right:76px;transform:none}@media(display-mode:standalone){.install-only-browser{display:none}}.map-stage[inert]{visibility:hidden}.view-page{display:grid;gap:var(--space-4);align-content:start;padding:var(--space-4) max(16px,env(safe-area-inset-right)) var(--space-6) max(16px,env(safe-area-inset-left));max-width:720px;margin:0 auto;width:100%}.view-header{display:grid;gap:var(--space-1)}.view-title{font:var(--text-title);text-wrap:balance}.view-lead{color:var(--color-text-muted);font:var(--text-caption);font-size:14px}.layout-phone .view-header .view-title,.layout-landscape .view-header .view-title{font:var(--text-heading);font-size:18px}@media(min-width:1024px){.side-panel .view-title{font:var(--text-display)}}.map-panel-content{display:grid;gap:var(--space-3)}.tasot{display:grid;gap:var(--space-5)}.tasot .section-title{font:var(--text-heading)}.cell-panel{display:grid;gap:var(--space-3)}.cell-id{font:var(--text-caption);color:var(--color-text-muted);overflow-wrap:anywhere}.cell-id code{font-size:12px}.cell-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-2);position:sticky;bottom:-24px;z-index:2;padding:var(--space-2) 0;background:var(--color-surface)}.layout-landscape .cell-actions{position:static;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.cell-footnote{padding-bottom:var(--space-2)}.source-rows{display:grid;gap:var(--space-2)}.source-row{border:1px solid var(--color-border);border-radius:var(--radius-s)}.source-row>summary{display:grid;gap:2px;min-height:48px;padding:var(--space-2) var(--space-3);cursor:pointer;list-style:none}.source-row>summary::-webkit-details-marker{display:none}.source-row>summary span{font:var(--text-caption);color:var(--color-text-muted)}.source-row>.meta-list,.source-row>.more-info{padding:0 var(--space-3) var(--space-2)}.why .data-rows{margin-top:-4px}.list-section{display:grid;gap:var(--space-3)}.fab-wrap{position:fixed;z-index:35;right:max(16px,env(safe-area-inset-right));bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 16px);display:grid;justify-items:end;gap:var(--space-2)}.layout-landscape .fab-wrap,.layout-desktop .fab-wrap,.layout-medium .fab-wrap{position:sticky;bottom:16px;right:auto}.fab{box-shadow:var(--shadow-2);border-radius:var(--radius-l)}.fab-menu{display:grid;padding:var(--space-1);border-radius:var(--radius-m);background:var(--color-surface);box-shadow:var(--shadow-2);border:1px solid var(--color-border)}.fab-menu-item{display:flex;align-items:center;gap:var(--space-3);min-height:48px;padding:0 var(--space-4);border-radius:8px;font:var(--text-label)}.fab-menu-item:hover{background:var(--color-surface-2)}.fab-menu-item svg{color:var(--color-primary)}.active-trip{border:2px solid var(--color-primary)}.active-trip-status{display:flex;align-items:center;gap:var(--space-2);font:var(--text-label);color:var(--color-danger)}.recording-dot{width:10px;height:10px;border-radius:50%;background:var(--color-danger);box-shadow:0 0 0 4px #a8321c2e}.trip-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.trip-stats>span{display:grid;padding:var(--space-3);border-radius:var(--radius-m);background:var(--color-surface-2)}.trip-stats strong{font:var(--text-figure);font-size:32px;line-height:38px}.trip-stats small{color:var(--color-text-muted)}.trip-note svg{display:inline-block;vertical-align:-3px}.extent-row{display:flex;align-items:center;gap:var(--space-3)}.extent-row>div{display:grid}.extent-row strong{font:var(--text-label)}.extent-row>div>span{color:var(--color-text-muted);font:var(--text-caption);font-size:14px}.v2-offline .show-area{justify-self:start}.extent-thumb{display:grid;place-items:center;width:56px;height:56px;flex:none;border-radius:var(--radius-m);border:2px dashed var(--color-primary);color:var(--color-primary);background:var(--color-primary-soft)}.ready-list{display:grid;gap:var(--space-2)}.ready-list li{display:flex;gap:var(--space-3);align-items:flex-start}.ready-list li>svg{color:var(--color-text-muted);margin-top:1px}.ready-list li.is-ready>svg{color:var(--color-success)}.ready-list li>div{display:grid;gap:2px;min-width:0}.ready-list strong{font:var(--text-label)}.ready-list small{color:var(--color-text-muted);overflow-wrap:anywhere}.tile-summary{display:grid;gap:var(--space-2);font:var(--text-caption)}.install-card{border:2px solid var(--color-primary)}.list-group{display:grid;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-m);background:var(--color-surface);border:1px solid var(--color-border)}.list-group-title{font:var(--text-micro);color:var(--color-text-muted);padding-top:var(--space-2)}.list-group .list-row{padding-left:0;padding-right:0}.version-line{font:var(--text-caption);color:var(--color-text-muted);text-align:center;overflow-wrap:anywhere}.about{display:grid;gap:var(--space-4)}.about-title{font:var(--text-heading);font-size:18px;text-wrap:balance}.explanation-grid{display:grid;gap:var(--space-3)}.explanation-grid>div{display:grid;gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-m);background:var(--color-surface-2)}.explanation-grid dt{font:var(--text-label)}.explanation-grid dd{font:var(--text-caption);color:var(--color-text-muted)}@media(min-width:760px){.explanation-grid{grid-template-columns:1fr 1fr}}.account,.backup,.evaluation,.conflicts{display:grid;gap:var(--space-4)}.account-identity{display:flex;gap:var(--space-3);align-items:center}.account-badge{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--color-primary-soft);color:var(--color-primary)}.account-identity p{color:var(--color-text-muted);font:var(--text-caption)}.sync-status{display:flex;align-items:center;gap:var(--space-2);font:var(--text-caption);font-size:14px}.file-button{cursor:pointer;position:relative}.conflict-comparison{display:grid;gap:var(--space-3)}@media(min-width:760px){.conflict-comparison{grid-template-columns:1fr 1fr}}.conflict-card h3 small{color:var(--color-text-muted);font:var(--text-caption)}.legend-help{display:grid;gap:var(--space-3)}.legend-help .unknown-swatch{display:inline-block;vertical-align:-2px;margin-right:4px}.season-context,.weather-card{display:block}.weather-body{display:grid;gap:var(--space-2);font:var(--text-caption);font-size:14px}.weather-metrics{display:grid;gap:var(--space-2)}.weather-metrics>div{display:flex;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.weather-metrics dt{display:grid;gap:2px;font:var(--text-label)}.weather-metrics dt small{font-weight:400;color:var(--color-text-muted)}.weather-metrics dd{font:var(--text-label);text-align:right;font-variant-numeric:tabular-nums}.weather-caveat{font:var(--text-label)}.research-status{display:flex;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-m);background:var(--color-surface-2)}.research-status svg{color:var(--color-primary)}.capture-details{border-top:1px solid var(--color-border)}
