.icon{stroke-width:2px;flex:none}.btn{--btn-bg:var(--color-surface-2);--btn-bg-hover:var(--color-surface-3);--btn-fg:var(--color-text);--btn-border:var(--color-border);--btn-h:36px;justify-content:center;align-items:center;gap:var(--space-2);min-height:max(var(--btn-h), var(--target-min));padding:0 var(--space-3);border:1px solid var(--btn-border);border-radius:var(--radius-sm);background:var(--btn-bg);color:var(--btn-fg);font-size:var(--text-md);font-weight:var(--weight-medium);white-space:nowrap;cursor:pointer;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);line-height:1;text-decoration:none;display:inline-flex}.btn:hover{background:var(--btn-bg-hover);color:var(--btn-fg)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn[aria-pressed=true]{--btn-bg:var(--color-accent-soft);--btn-border:var(--color-accent);--btn-fg:var(--color-accent-text)}.btn--primary{--btn-bg:var(--color-accent);--btn-bg-hover:var(--color-accent-hover);--btn-fg:var(--color-on-accent);--btn-border:transparent;font-weight:var(--weight-semibold)}.btn--ghost{--btn-bg:transparent;--btn-border:transparent;--btn-fg:var(--color-text-muted)}.btn--ghost:hover{--btn-fg:var(--color-text)}.btn--danger{--btn-fg:var(--color-danger)}.btn--sm{--btn-h:30px;padding:0 var(--space-2);font-size:var(--text-sm)}.btn--lg{--btn-h:44px;padding:0 var(--space-5);font-size:var(--text-lg)}.btn--icon{width:max(var(--btn-h), var(--target-min));padding:0}.input{width:100%;min-height:max(34px, var(--target-min));padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2);color:var(--color-text)}.input:hover{border-color:var(--color-border-strong)}.input:focus-visible{outline-offset:0;border-color:var(--color-focus)}.input--num{width:72px;padding:0 var(--space-2);text-align:right;font-variant-numeric:tabular-nums}.input--mono{font-family:var(--font-mono);font-size:var(--text-sm)}.select{appearance:auto}.field{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.field__label{font-size:var(--text-sm);color:var(--color-text-muted)}.field-row{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.field-row .input--num,.field-row .input{width:100%}.copy-field{gap:var(--space-2);display:flex}.color-input{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);display:inline-flex}.color-input input[type=color]{width:max(36px, var(--target-min));height:max(30px, calc(var(--target-min) - 4px));border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2);cursor:pointer;padding:2px}.color-input--labelled{justify-content:space-between}.search{align-items:center;display:flex;position:relative}.search>.icon{left:var(--space-3);color:var(--color-text-subtle);pointer-events:none;position:absolute}.search__input{padding-left:calc(var(--space-3) + 24px)}.switch{align-items:center;column-gap:var(--space-3);min-height:var(--target-min);grid-template-columns:1fr auto;display:grid;position:relative}.switch__label{cursor:pointer;padding:var(--space-1) 0}.switch__input{appearance:none;border-radius:var(--radius-full);cursor:pointer;z-index:1;grid-area:1/2;width:40px;height:24px;margin:0}.switch__track{border-radius:var(--radius-full);background:var(--color-surface-3);border:1px solid var(--color-border-strong);width:40px;height:24px;transition:background var(--dur-fast) var(--ease-out);pointer-events:none;grid-area:1/2}.switch__thumb{background:var(--color-text-muted);width:18px;height:18px;transition:transform var(--dur-base) var(--ease-out), background var(--dur-fast);border-radius:50%;margin:2px;display:block}.switch__input:checked+.switch__track{background:var(--color-accent);border-color:var(--color-accent)}.switch__input:checked+.switch__track .switch__thumb{background:var(--color-on-accent);transform:translate(16px)}.switch__input:focus-visible+.switch__track{outline:2px solid var(--color-focus);outline-offset:2px}.switch__input:disabled,.switch__input:disabled~*{opacity:.5;cursor:not-allowed}.switch__desc{font-size:var(--text-sm);color:var(--color-text-subtle);margin-top:calc(var(--space-1) * -1);grid-column:1/-1}.check-row{align-items:center;display:flex;position:relative}.check__input{opacity:0;width:1px;height:1px;position:absolute}.check-row__label{align-items:center;gap:var(--space-2);min-width:0;min-height:var(--target-min);padding:var(--space-1) var(--space-2);margin:0 calc(var(--space-2) * -1);border-radius:var(--radius-sm);cursor:pointer;flex:1;display:flex}.check-row__label:hover{background:var(--color-surface-2)}.check__box{border:1.5px solid var(--color-border-strong);background:var(--color-surface-1);width:18px;height:18px;transition:background var(--dur-fast), border-color var(--dur-fast);border-radius:4px;flex:none;place-items:center;display:grid}.check__box .icon{opacity:0;color:var(--color-on-accent);stroke-width:3px}.check__input:checked+.check-row__label .check__box{background:var(--color-accent);border-color:var(--color-accent)}.check__input:checked+.check-row__label .check__box .icon{opacity:1}.check__input:indeterminate+.check-row__label .check__box{border-color:var(--color-accent);background:linear-gradient(var(--color-accent), var(--color-accent)) center / 8px 2px no-repeat var(--color-surface-1)}.check__input:focus-visible+.check-row__label{outline:2px solid var(--color-focus);outline-offset:-2px}.check__input:disabled+.check-row__label{opacity:.5;cursor:not-allowed}.check-row__img{object-fit:contain;width:22px;height:22px;image-rendering:pixelated;flex:none}.check-row__text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.check-row__meta{text-overflow:ellipsis;white-space:nowrap;max-width:55%;font-size:var(--text-xs);color:var(--color-text-subtle);font-variant-numeric:tabular-nums;flex:none;overflow:hidden}.check-row__stack{min-width:0;line-height:var(--leading-tight);flex-direction:column;flex:1;padding:2px 0;display:flex}.check-row--stacked .check-row__meta{max-width:none}.swatch{background:var(--swatch);border-radius:3px;flex:none;width:14px;height:14px;box-shadow:inset 0 0 0 1px #00000059}.slider{gap:var(--space-1);flex-direction:column;display:flex}.slider__label{font-size:var(--text-sm);color:var(--color-text-muted)}.slider__row{align-items:center;gap:var(--space-3);display:flex}.slider__range{appearance:none;min-width:0;height:var(--target-min);cursor:pointer;background:0 0;flex:1}.slider__range::-webkit-slider-runnable-track{border-radius:var(--radius-full);background:linear-gradient(to right, var(--color-accent) var(--fill), var(--color-surface-3) var(--fill));height:6px}.slider__range::-moz-range-track{border-radius:var(--radius-full);background:linear-gradient(to right, var(--color-accent) var(--fill), var(--color-surface-3) var(--fill));height:6px}.slider__range::-webkit-slider-thumb{appearance:none;background:var(--color-text);border:2px solid var(--color-accent);width:18px;height:18px;box-shadow:var(--shadow-1);border-radius:50%;margin-top:-6px}.slider__range::-moz-range-thumb{background:var(--color-text);border:2px solid var(--color-accent);border-radius:50%;width:14px;height:14px}.slider__range:focus-visible{outline-offset:0}.slider__num{align-items:center;gap:var(--space-1);display:inline-flex}.slider__unit{color:var(--color-text-subtle);font-size:var(--text-sm);min-width:1ch}.segmented{border:0;min-width:0;margin:0;padding:0}.segmented__legend{margin-bottom:var(--space-1);font-size:var(--text-sm);color:var(--color-text-muted);padding:0}.segmented__track{border-radius:var(--radius-sm);background:var(--color-surface-2);border:1px solid var(--color-border);gap:3px;padding:3px;display:flex}.segmented__item{flex:1;display:flex;position:relative}.segmented__input{opacity:0;position:absolute;inset:0}.segmented__label{min-height:max(28px, calc(var(--target-min) - 8px));padding:0 var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;text-align:center;white-space:nowrap;border-radius:4px;flex:1;place-items:center;display:grid}.segmented__label:hover{color:var(--color-text)}.segmented__input:checked+.segmented__label{background:var(--color-surface-1);color:var(--color-text);font-weight:var(--weight-semibold);box-shadow:var(--shadow-1)}.segmented__input:focus-visible+.segmented__label{outline:2px solid var(--color-focus)}.section{border-bottom:1px solid var(--color-border)}.section__summary{align-items:center;gap:var(--space-2);min-height:48px;padding:0 var(--space-4);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none;display:flex}.section__summary::-webkit-details-marker{display:none}.section__summary:hover .section__title{color:var(--color-text)}.section__summary:focus-visible{outline-offset:-2px}.section__title{font-size:var(--text-sm);font-weight:var(--weight-semibold);letter-spacing:.02em;text-transform:uppercase;color:var(--color-text-muted);flex:1}.section__chevron{color:var(--color-text-subtle);transition:transform var(--dur-base) var(--ease-out)}.section:not([open]) .section__chevron{transform:rotate(-90deg)}.section__body{gap:var(--space-3);padding:0 var(--space-4) var(--space-4);flex-direction:column;display:flex}.group{flex-direction:column;display:flex}.group>.check-row .check-row__text{font-weight:var(--weight-semibold)}.group__items{padding-left:var(--space-3);border-left:1px solid var(--color-border);flex-direction:column;margin-left:8px;display:flex}.badge{align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-semibold);background:var(--color-surface-3);color:var(--color-text-muted);white-space:nowrap;text-transform:none;letter-spacing:0;display:inline-flex}.badge--success{background:var(--color-success-soft);color:var(--color-success)}.badge--warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge--info{background:var(--color-info-soft);color:var(--color-info)}.kbd-group{align-items:center;gap:3px;display:inline-flex}.kbd{border:1px solid var(--color-border-strong);min-width:22px;height:22px;font:var(--weight-semibold) var(--text-xs) / 1 var(--font-sans);color:var(--color-text-muted);background:var(--color-surface-2);border-bottom-width:2px;border-radius:5px;place-items:center;padding:0 6px;display:inline-grid}.notice{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);background:var(--color-surface-2);align-items:flex-start;display:flex}.notice .icon{margin-top:1px}.notice--warning{background:var(--color-warning-soft);color:var(--color-warning)}.notice--danger{background:var(--color-danger-soft);color:var(--color-danger)}.progress{border-radius:var(--radius-full);background:var(--color-surface-3);height:6px;overflow:hidden}.progress__bar{border-radius:inherit;background:var(--color-accent);height:100%;transition:width var(--dur-base) var(--ease-out)}.result-list{flex-direction:column;gap:2px;list-style:none;display:flex}.result-list__item{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-1) 0 var(--space-1) var(--space-2);border-radius:var(--radius-sm);background:var(--color-surface-2);font-size:var(--text-sm);font-variant-numeric:tabular-nums;display:flex}.stats{gap:var(--space-2) var(--space-4);font-size:var(--text-sm);grid-template-columns:1fr auto;display:grid}.stats dt{color:var(--color-text-muted)}.stats dd{text-align:right;font-variant-numeric:tabular-nums}.link-list{flex-direction:column;display:flex}.link-row{min-height:var(--target-min);padding:var(--space-1) 0;border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;text-decoration:none;display:flex}.credits{gap:var(--space-2);font-size:var(--text-sm);flex-direction:column;list-style:none;display:flex}.credits__title{margin-top:var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.steps{padding-left:var(--space-5);gap:var(--space-3);flex-direction:column;display:flex}.steps li::marker{color:var(--color-accent-text);font-weight:var(--weight-semibold)}.steps .field{margin-top:var(--space-2)}.faq{border-bottom:1px solid var(--color-border)}.faq__q{padding:var(--space-3) 0;cursor:pointer;font-weight:var(--weight-medium)}.faq__a{padding-bottom:var(--space-3);color:var(--color-text-muted);font-size:var(--text-sm)}.empty{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);gap:var(--space-3);flex-direction:column;align-items:center;display:flex}.toasts{left:50%;top:calc(var(--topbar-h) + var(--space-3));z-index:var(--z-toast);gap:var(--space-2);width:min(440px, calc(100% - var(--space-8)));pointer-events:none;flex-direction:column;display:flex;position:absolute;transform:translate(-50%)}.toast{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border-radius:var(--radius-md);background:var(--color-surface-raised);border:1px solid var(--color-border);box-shadow:var(--shadow-2);pointer-events:auto;animation:toast-in var(--dur-slow) var(--ease-out);display:flex}.toast__msg{flex:1}.toast--success{border-left:3px solid var(--color-success)}.toast--warning{border-left:3px solid var(--color-warning)}.toast--danger{border-left:3px solid var(--color-danger)}.toast.is-leaving{opacity:0;transition:opacity var(--dur-base), transform var(--dur-base);transform:translateY(-6px)}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}}.dialog{width:min(480px, calc(100% - var(--space-8)));max-height:calc(100dvh - var(--space-10));border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-1);color:var(--color-text);box-shadow:var(--shadow-2);padding:0}.dialog[open]{animation:dialog-in var(--dur-base) var(--ease-out);flex-direction:column;display:flex}.dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0000008c}.dialog--wide{width:min(720px, calc(100% - var(--space-8)))}.dialog__header{padding:var(--space-3) var(--space-3) var(--space-3) var(--space-5);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.dialog__title{font-size:var(--text-lg);font-weight:var(--weight-semibold)}.dialog__body{padding:var(--space-5);overflow:auto}.dialog__footer{justify-content:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-5);border-top:1px solid var(--color-border);display:flex}@keyframes dialog-in{0%{opacity:0;transform:translateY(8px)scale(.98)}}.shortcuts{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.shortcuts td{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.shortcuts td:first-child{width:40%}.dialog--palette{width:min(600px, calc(100% - var(--space-6)));margin-top:12vh}.dialog--palette .dialog__header{display:none}.dialog--palette .dialog__body{padding:0}.palette__search{align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-bottom:1px solid var(--color-border);color:var(--color-text-subtle);display:flex}.palette__input{height:56px;font-size:var(--text-lg);background:0 0;border:0;outline:none;flex:1}.palette__list{max-height:min(420px,60dvh);padding:var(--space-2);list-style:none;overflow:auto}.palette__option{align-items:center;gap:var(--space-3);min-height:40px;padding:0 var(--space-3);border-radius:var(--radius-sm);cursor:pointer;display:flex}.palette__option[aria-selected=true]{background:var(--color-accent-soft)}.palette__label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.palette__hint{font-size:var(--text-xs);color:var(--color-text-subtle)}.palette__empty{padding:var(--space-6);text-align:center;color:var(--color-text-muted)}.menu{z-index:var(--z-popover);min-width:220px;padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);box-shadow:var(--shadow-2);position:absolute}.menu__heading{padding:var(--space-2) var(--space-3);font:var(--text-xs) var(--font-mono);color:var(--color-text-subtle)}.menu__item{align-items:center;gap:var(--space-2);width:100%;min-height:var(--target-min);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.menu__item:hover,.menu__item:focus-visible{background:var(--color-surface-3);outline:none}.popover{width:300px;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);color:var(--color-text);box-shadow:var(--shadow-2);margin:0;position:fixed;inset:auto}.popover:popover-open{gap:var(--space-4);flex-direction:column;display:flex}.popover__title{font-size:var(--text-md);font-weight:var(--weight-semibold)}.pin-list{gap:var(--space-1);flex-direction:column;list-style:none;display:flex}.pin-row{align-items:center;gap:var(--space-2);display:flex}.pin-row__color input[type=color]{width:28px;height:28px;padding:1px}.pin-row__name{min-width:0;min-height:max(30px, var(--target-min));flex:1}.pin-row__coords{font:var(--text-xs) var(--font-mono);white-space:nowrap}.link-button{min-height:var(--target-min);padding:0 var(--space-2);color:var(--color-accent-text);text-underline-offset:2px;cursor:pointer;background:0 0;border:0;align-self:center;text-decoration:underline}.link-button:hover{color:var(--color-accent-hover)}.sparkline{width:100%;height:24px;margin-bottom:calc(var(--space-1) * -1);fill:var(--color-accent);opacity:.55}.app{grid-template-columns:var(--rail-w) auto minmax(0, 1fr);grid-template-rows:var(--topbar-h) minmax(0, 1fr);grid-template-areas:"top top top""rail panel stage";height:100dvh;display:grid;position:relative}.topbar{z-index:var(--z-topbar);align-items:center;gap:var(--space-3);padding:0 var(--space-3) 0 var(--space-4);padding-left:max(var(--space-4), env(safe-area-inset-left));padding-right:max(var(--space-3), env(safe-area-inset-right));background:var(--color-surface-1);border-bottom:1px solid var(--color-border);grid-area:top;display:flex}.topbar__brand{margin:0;display:flex}.topbar__logo img{width:auto;height:30px;image-rendering:pixelated}.topbar__spacer{flex:1}.wordmark{display:inline-flex}.wordmark img{width:auto}:root[data-theme=dark] .wordmark--light,:root[data-theme=light] .wordmark--dark{display:none}.file-status{align-items:center;gap:var(--space-2);min-width:0;max-width:420px;min-height:32px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface-2);font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;display:inline-flex}.file-status:hover{color:var(--color-text);border-color:var(--color-border-strong)}.file-status__text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-status__dot{background:var(--color-text-subtle);border-radius:50%;flex:none;width:8px;height:8px}.file-status--ready .file-status__dot{background:var(--color-success)}.file-status--loading .file-status__dot{background:var(--color-accent);animation:1s ease-in-out infinite pulse}.file-status--error .file-status__dot{background:var(--color-danger)}@keyframes pulse{50%{opacity:.3}}.search-trigger{align-items:center;gap:var(--space-2);min-width:240px;min-height:34px;padding:0 var(--space-2) 0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2);color:var(--color-text-subtle);font-size:var(--text-sm);cursor:pointer;display:inline-flex}.search-trigger:hover{border-color:var(--color-border-strong);color:var(--color-text-muted)}.search-trigger__text{text-align:left;flex:1}.rail{z-index:var(--z-panel);gap:var(--space-1);padding:var(--space-2);background:var(--color-surface-1);border-right:1px solid var(--color-border);flex-direction:column;grid-area:rail;display:flex}.rail__item{padding:var(--space-2) var(--space-1);border-radius:var(--radius-md);color:var(--color-text-subtle);font-size:11px;font-weight:var(--weight-semibold);cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:4px;display:flex}.rail__item:hover{color:var(--color-text);background:var(--color-surface-2)}.rail__item[aria-pressed=true]{color:var(--color-accent-text);background:var(--color-accent-soft)}.panel{z-index:var(--z-panel);width:var(--panel-w);background:var(--color-surface-1);border-right:1px solid var(--color-border);flex-direction:column;grid-area:panel;min-height:0;display:flex}.panel__header{min-height:52px;padding:0 var(--space-2) 0 var(--space-4);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.panel__title{font-size:var(--text-lg);font-weight:var(--weight-semibold)}.panel__body{overscroll-behavior:contain;scrollbar-gutter:stable;flex:1;min-height:0;overflow-y:auto}.panel-content{flex-direction:column;display:flex}.panel-content--tiles{min-height:100%}.file-card{padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-surface-2);border:1px solid var(--color-border)}.file-card__name{font-weight:var(--weight-semibold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-card__meta{font-size:var(--text-sm);color:var(--color-text-muted)}.tiles-toolbar{z-index:1;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-surface-1);border-bottom:1px solid var(--color-border);flex-direction:column;display:flex;position:sticky;top:0}.tiles-toolbar__row{align-items:center;gap:var(--space-3);display:flex}.tiles-toolbar__row .switch{font-size:var(--text-sm);flex:1}.selection-bar,.picked{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-3);border-radius:var(--radius-sm);background:var(--color-accent-soft);color:var(--color-accent-text);font-size:var(--text-sm);font-weight:var(--weight-medium);justify-content:space-between;display:flex}.picked{background:var(--color-surface-2);color:var(--color-text);justify-content:flex-start}.picked>span:nth-child(2){flex:1}.tile-list{padding:var(--space-2) var(--space-4) var(--space-4);flex:1}.tile-group{padding-top:var(--space-3);flex-direction:column;display:flex}.tile-group__title{align-items:center;gap:var(--space-1);padding:var(--space-1) 0;font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);display:flex}.section--footer{background:var(--color-surface-1);border-top:1px solid var(--color-border);border-bottom:0;position:sticky;bottom:0}.stage{background:var(--map-bg-dark);grid-area:stage;min-width:0;position:relative;overflow:hidden}.stage:focus{outline:none}.stage--bg-light{background:var(--map-bg-light)}.stage--bg-checker{background:repeating-conic-gradient(#2a2622 0 25%, #1d1a17 0 50%) 0 0 / 24px 24px}.map-view,.map-canvas{width:100%;height:100%;position:absolute;inset:0}.map-canvas{cursor:grab;touch-action:none}.map-canvas.is-dragging{cursor:grabbing}.map-canvas.is-picking{cursor:crosshair}.map-canvas:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.map-labels{z-index:var(--z-labels);pointer-events:none;position:absolute;inset:0;overflow:hidden}.map-label{border-radius:var(--radius-full);border:1px solid var(--label-color);color:#fff;font-size:var(--text-xs);font-weight:var(--weight-semibold);white-space:nowrap;will-change:transform;background:#0c0b0ad1;align-items:center;gap:6px;padding:3px 9px 3px 4px;display:inline-flex;position:absolute;top:0;left:0;box-shadow:0 2px 8px #0006}.map-label:not(:has(img)){padding-left:9px}.map-label img{object-fit:contain;width:20px;height:20px;image-rendering:pixelated}.open-card{z-index:var(--z-overlay);width:min(520px, calc(100% - var(--space-8)));height:-moz-fit-content;height:fit-content;max-height:calc(100% - var(--space-8));align-items:center;gap:var(--space-4);padding:var(--space-8) var(--space-6) var(--space-6);border-radius:var(--radius-lg);border:1px solid var(--color-border);background:var(--color-surface-1);box-shadow:var(--shadow-2);text-align:center;flex-direction:column;margin:auto;display:flex;position:absolute;inset:0;overflow:auto}.open-card__logo img{height:64px;image-rendering:pixelated}.open-card__title{font-size:var(--text-2xl);font-weight:var(--weight-semibold);line-height:var(--leading-tight)}.open-card__lead{color:var(--color-text-muted);max-width:40ch}.open-card__actions{gap:var(--space-2);flex-direction:column;width:min(100%,320px);display:flex}.open-card__drop{align-items:center;gap:var(--space-2);display:flex}.open-card__guide{text-align:left;border-top:1px solid var(--color-border);width:100%;padding-top:var(--space-3)}.open-card__guide>summary{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--target-min);cursor:pointer;color:var(--color-accent-text);font-weight:var(--weight-medium);display:flex}.open-card__guide[open]>summary{margin-bottom:var(--space-3)}.open-card__privacy{max-width:44ch}.open-card .notice{text-align:left;width:100%}.progress-card{z-index:var(--z-overlay);top:var(--space-4);width:min(380px, calc(100% - var(--space-8)));gap:var(--space-2);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-overlay);border:1px solid var(--color-border);box-shadow:var(--shadow-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-direction:column;display:flex;position:absolute;left:50%;transform:translate(-50%)}.progress-card__row{align-items:center;gap:var(--space-2);display:flex}.progress-card__row .icon{color:var(--color-accent);animation:1s linear infinite spin}.progress-card__label{font-weight:var(--weight-medium);flex:1}@keyframes spin{to{transform:rotate(360deg)}}.pick-banner{z-index:var(--z-overlay);top:var(--space-4);align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-4);border-radius:var(--radius-full);background:var(--color-accent);color:var(--color-on-accent);font-weight:var(--weight-semibold);box-shadow:var(--shadow-2);display:flex;position:absolute;left:50%;transform:translate(-50%)}.pick-banner .btn{--btn-fg:var(--color-on-accent)}.map-controls{z-index:var(--z-overlay);right:max(var(--space-4), env(safe-area-inset-right));bottom:calc(var(--space-4) + 44px);border-radius:var(--radius-md);background:var(--color-overlay);border:1px solid var(--color-border);box-shadow:var(--shadow-1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-direction:column;gap:2px;padding:3px;display:flex;position:absolute}.map-controls .btn{--btn-bg:transparent;--btn-border:transparent}.status-bar{z-index:var(--z-overlay);left:var(--space-4);right:var(--space-4);bottom:var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-3);pointer-events:none;display:flex;position:absolute}.status-bar>span{padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);background:var(--color-overlay);border:1px solid var(--color-border);font:var(--text-sm) / 1.6 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-text-muted);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.status-bar__text{min-width:0}.drop-overlay{inset:var(--space-3);z-index:calc(var(--z-overlay) + 1);justify-content:center;align-items:center;gap:var(--space-3);border:2px dashed var(--color-accent);border-radius:var(--radius-lg);color:var(--color-accent-text);font-size:var(--text-xl);font-weight:var(--weight-semibold);pointer-events:none;background:#0009;flex-direction:column;display:none;position:absolute}.stage.is-dropping .drop-overlay{display:flex}@media (max-width:1023px){.app{grid-template-columns:var(--rail-w) minmax(0, 1fr);grid-template-areas:"top top""rail stage"}.panel{top:var(--topbar-h);bottom:0;left:var(--rail-w);width:min(var(--panel-w), calc(100% - var(--rail-w)));box-shadow:var(--shadow-2);position:absolute}.search-trigger{min-width:0}.search-trigger__text{display:none}}@media (max-width:719px){:root{--topbar-h:48px}.app{grid-template-columns:minmax(0,1fr);grid-template-rows:var(--topbar-h) minmax(0, 1fr) calc(var(--tabbar-h) + env(safe-area-inset-bottom));grid-template-areas:"top""stage""rail"}.topbar{gap:var(--space-2);padding-left:var(--space-3)}.topbar__logo img{height:24px}.file-status{flex:1;max-width:none}.topbar__spacer,.search-trigger__kbd{display:none}.search-trigger{padding:0 var(--space-2)}.rail{padding:var(--space-1) var(--space-2) calc(var(--space-1) + env(safe-area-inset-bottom));border-right:0;border-top:1px solid var(--color-border);flex-direction:row;justify-content:space-around}.rail__item{flex:1;max-width:96px}.panel{top:auto;left:0;right:0;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom));width:100%;height:min(62dvh, calc(100dvh - var(--topbar-h) - var(--tabbar-h) - 24px));border-right:0;border-top:1px solid var(--color-border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:sheet-in var(--dur-slow) var(--ease-out)}.panel__header:before{content:"";background:var(--color-border-strong);border-radius:2px;width:36px;height:4px;margin-left:-18px;position:absolute;top:6px;left:50%}.panel__header{position:relative}.app--panel-open .map-controls,.app--panel-open .status-bar{display:none}.map-controls{bottom:var(--space-4)}.status-bar{right:calc(var(--space-4) + 56px)}.status-bar__zoom{display:none}.open-card{padding:var(--space-6) var(--space-4) var(--space-4)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(24px)}}.spot-bar{align-items:center;gap:var(--space-2);display:flex}.spot-bar__status{min-width:0;font-size:var(--text-sm);color:var(--color-text-muted);font-variant-numeric:tabular-nums;flex:1}.focus-ring{z-index:var(--z-labels);border:3px solid var(--color-accent);box-shadow:0 0 0 2px #0009, 0 0 24px var(--color-accent);pointer-events:none;border-radius:50%;position:absolute;top:0;left:0}.focus-ring.is-pulsing{animation:focus-pulse .9s var(--ease-out) 3}@keyframes focus-pulse{0%{opacity:0;scale:1.8}60%{opacity:1;scale:1}}.map-label--pin{border-color:var(--label-color);padding:3px 9px 3px 4px}.map-label--pin:before{content:"";background:var(--label-color);width:14px;height:14px;box-shadow:0 0 0 2px #0c0b0ae6, 0 0 0 3px var(--label-color);border-radius:50%;flex:none}.pick-banner--info{background:var(--color-overlay);color:var(--color-text);border:1px solid var(--color-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-variant-numeric:tabular-nums}.pick-banner--info .icon{color:var(--color-accent)}.pick-banner--info .btn{--btn-fg:var(--color-text-muted)}.pick-banner__detail{font-weight:var(--weight-medium);color:var(--color-text-muted)}.pick-banner>span{white-space:nowrap}@media (max-width:719px){.pick-banner{max-width:calc(100% - var(--space-6))}.pick-banner>span{white-space:normal}}.panel-loading{padding:var(--space-4)}
