:root{--canvas:#f4f7f7;--surface:#fff;--surface-muted:#f7fafa;--surface-hover:#f0f5f4;--text:#172022;--text-2:#667477;--text-3:#8a9799;--border:#e1e9e8;--border-strong:#d2dddc;--teal:#10b39a;--teal-deep:#0f766e;--teal-ink:#087f72;--teal-pale:#e7f7f3;--amber:#f2b84b;--amber-ink:#8a5a0b;--amber-pale:#fdf3df;--red:#d95c5c;--red-ink:#a8342f;--red-pale:#fbe9e8;--indigo:#6366f1;--indigo-ink:#4338ca;--indigo-pale:#eef0fe;--blue:#3b82f6;--blue-ink:#1d4ed8;--blue-pale:#e8f0fe;--radius-card:12px;--radius-control:8px;--shadow-sm:0 1px 2px #1720220d;--shadow-md:0 8px 24px #17202214, 0 2px 6px #1720220a;--shadow-lg:0 24px 64px #1720222e;--font:"Inter", "Noto Sans Thai", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--topbar:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--canvas);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:13px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:2px solid var(--teal);outline-offset:2px}::selection{background:var(--teal-pale);color:var(--teal-ink)}h1,h2,h3{margin:0}.icon{letter-spacing:normal;text-transform:none;white-space:nowrap;-webkit-font-smoothing:antialiased;font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 20;vertical-align:middle;-webkit-user-select:none;user-select:none;direction:ltr;font-family:Material Symbols Outlined;font-size:18px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.icon-filled{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 20}.mono{font-family:var(--mono);letter-spacing:-.01em;font-size:.95em}.thai{font-family:"Noto Sans Thai", var(--font)}.text-muted{color:var(--text-2)}.text-teal{color:var(--teal-ink)}.text-amber{color:var(--amber-ink)}.text-red{color:var(--red-ink)}.italic{font-style:italic}.truncate{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--teal-ink);align-items:center;gap:8px;font-size:10.5px;font-weight:700;display:flex}.app{flex-direction:column;min-height:100%;display:flex}.topbar{z-index:40;height:var(--topbar);background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:16px;padding:0 24px;display:flex;position:sticky;top:0}.topbar-left,.topbar-right{align-items:center;gap:10px;display:flex}.brand{letter-spacing:-.02em;font-size:17px;font-weight:700}.page-chip{background:var(--teal-pale);color:var(--teal-ink);border:1px solid #10b39a38;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600}.search{background:var(--surface-muted);border:1px solid var(--border);width:300px;height:34px;color:var(--text-2);border-radius:999px;align-items:center;gap:6px;padding:0 10px;transition:border-color .12s,background .12s;display:flex;position:relative}.search:focus-within{border-color:var(--teal);background:var(--surface)}.search input{min-width:0;color:var(--text);background:0 0;border:0;outline:0;flex:1;font-size:13px}.search-clear{color:var(--text-3);background:0 0;border:0;padding:0;display:flex}.topbar-divider{background:var(--border);width:1px;height:22px;margin:0 4px}.icon-button{border-radius:var(--radius-control);width:34px;height:34px;color:var(--text-2);background:0 0;border:0;justify-content:center;align-items:center;padding:0;transition:background .12s,color .12s;display:inline-flex;position:relative}.icon-button:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.icon-button-active{background:var(--teal-pale);color:var(--teal-ink)}.icon-button:disabled{opacity:.5}.icon-button .icon{font-size:20px}.icon-badge{background:var(--teal);color:#fff;border-radius:999px;min-width:15px;height:15px;padding:0 4px;font-size:9.5px;font-weight:700;line-height:15px;position:absolute;top:3px;right:3px}.spinning .icon{animation:1s linear infinite spin}.nav-backdrop{z-index:60;opacity:0;pointer-events:none;background:#17202247;transition:opacity .18s;position:fixed;inset:0}.nav-backdrop.open{opacity:1;pointer-events:auto}.nav-drawer{z-index:61;background:var(--surface);border-right:1px solid var(--border);width:300px;max-width:86vw;box-shadow:var(--shadow-lg);flex-direction:column;transition:transform .22s cubic-bezier(.2,.8,.2,1);display:flex;position:fixed;top:0;bottom:0;left:0;transform:translate(-102%)}.nav-drawer.open{transform:translate(0)}.nav-head{height:var(--topbar);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:0 16px 0 20px;display:flex}.nav-list{flex-direction:column;gap:4px;margin:0;padding:12px;list-style:none;display:flex}.nav-item{text-align:left;width:100%;color:var(--text);background:0 0;border:0;border-radius:10px;align-items:center;gap:12px;padding:10px 12px;display:flex}.nav-item:hover{background:var(--surface-hover)}.nav-item.active{background:var(--teal-pale);color:var(--teal-ink)}.nav-item .icon{color:var(--text-2);font-size:21px}.nav-item.active .icon{color:var(--teal)}.nav-item-text{flex-direction:column;font-size:13.5px;font-weight:600;display:flex}.nav-item-text small{color:var(--text-2);font-size:11.5px;font-weight:400}.nav-foot{border-top:1px solid var(--border);flex-direction:column;gap:12px;margin-top:auto;padding:16px;display:flex}.nav-snapshot{flex-direction:column;gap:3px;font-size:12px;display:flex}.main{flex:1;width:100%;max-width:1920px;margin:0 auto;padding:24px}.workspace{height:calc(100vh - var(--topbar) - 48px);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);min-height:640px;box-shadow:var(--shadow-sm);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid;position:relative;overflow:hidden}.directory{border-right:1px solid var(--border);flex-direction:column;min-width:0;min-height:0;display:flex}.directory-head{border-bottom:1px solid var(--border);flex-direction:column;gap:12px;padding:16px 20px 12px;display:flex}.directory-title-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.directory-title{align-items:center;gap:10px;display:flex}.directory-title h1{letter-spacing:-.01em;font-size:16px;font-weight:650}.directory-actions{align-items:center;gap:8px;display:flex}.count-pill{border:1px solid var(--border);background:var(--surface-muted);color:var(--text-2);white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:12px}.tabs{scrollbar-width:none;align-items:center;gap:4px;display:flex;overflow-x:auto}.tab{color:var(--text);white-space:nowrap;background:0 0;border:0;border-radius:999px;flex:none;padding:5px 12px;font-size:13px;font-weight:500}.tab:hover{background:var(--surface-hover)}.tab-active,.tab-active:hover{background:var(--teal);color:#fff;box-shadow:var(--shadow-sm);font-weight:600}.tab-count{white-space:pre}.chip-row{flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.filter-chip{background:var(--teal-pale);color:var(--teal-ink);border-radius:999px;align-items:center;gap:4px;padding:2px 4px 2px 10px;font-weight:500;display:inline-flex}.filter-chip button{color:inherit;background:0 0;border:0;border-radius:999px;padding:1px;display:flex}.filter-chip button:hover{background:#10b39a26}.filter-chip .icon{font-size:14px}.segment{border:1px solid var(--border);background:var(--surface);color:var(--text-2);border-radius:999px;padding:3px 10px;font-size:12px}.segment:hover{border-color:var(--border-strong);color:var(--text)}.segment-active{border-color:var(--teal);background:var(--teal-pale);color:var(--teal-ink);font-weight:600}.table-scroll{flex:1;min-height:0;overflow:auto}.data-table{border-collapse:separate;border-spacing:0;width:100%}.data-table thead th{z-index:1;background:var(--surface-muted);border-bottom:1px solid var(--border);text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--text);white-space:nowrap;padding:11px 14px;font-size:11px;font-weight:650;position:sticky;top:0}.data-table tbody td{border-bottom:1px solid var(--border);vertical-align:middle;padding:13px 14px}.data-table tbody tr{cursor:pointer;transition:background .1s}.data-table tbody tr:hover{background:var(--surface-muted)}.data-table tbody tr.row-active{background:#e7f7f38c}.data-table tbody tr.row-active td:first-child{box-shadow:inset 3px 0 0 var(--teal)}.col-check{width:40px;padding-right:0!important}.col-check input,.data-table thead input{width:16px;height:16px;accent-color:var(--teal);cursor:pointer}.cell-primary{color:var(--text);font-weight:500}.cell-secondary{color:var(--text-2);margin-top:2px;font-size:11.5px}.cell-suggested,.cell-empty{color:var(--text-2);font-style:italic}.cell-coords{color:var(--text-2);white-space:nowrap;font-size:12px}.cell-province{margin-top:2px;font-size:12px;font-weight:500}.row-link{text-align:left;color:var(--text);background:0 0;border:0;padding:0;font-weight:500}.row-link:hover{color:var(--teal-ink);text-underline-offset:2px;text-decoration:underline}.local-dot{color:var(--indigo-ink);font-family:var(--font)}.match-cell{flex-direction:column;align-items:flex-start;gap:6px;min-width:120px;display:flex}.badge{white-space:nowrap;border-radius:6px;align-items:center;gap:4px;padding:2px 8px;font-size:11.5px;font-weight:550;line-height:1.45;display:inline-flex}.badge-teal{background:var(--teal-pale);color:var(--teal-ink)}.badge-amber{background:var(--amber-pale);color:var(--amber-ink)}.badge-red{background:var(--red-pale);color:var(--red-ink)}.badge-indigo{background:var(--indigo-pale);color:var(--indigo-ink)}.badge-blue{background:var(--blue-pale);color:var(--blue-ink)}.badge-gray{color:var(--text-2);background:#eef2f2}.meter{align-items:center;gap:8px;display:inline-flex}.meter-track{background:#e6eeed;border-radius:999px;width:72px;height:5px;overflow:hidden}.meter-fill{border-radius:inherit;height:100%;display:block}.meter-teal{background:var(--teal)}.meter-amber{background:var(--amber)}.meter-red{background:var(--red)}.meter-indigo{background:var(--indigo)}.meter-gray,.meter-blue{background:var(--blue)}.meter-value{min-width:30px;font-size:11.5px;font-weight:650}.meter-empty{color:var(--text-3)}.pagination{border-top:1px solid var(--border);background:var(--surface-muted);color:var(--text-2);justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;display:flex}.pagination strong{color:var(--text);font-weight:600}.pagination-pages{align-items:center;gap:6px;display:flex}.page-button{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);min-width:32px;height:30px;color:var(--text);padding:0 10px;font-size:12.5px}.page-button:hover:not(:disabled){background:var(--surface-hover)}.page-button:disabled{color:var(--text-3)}.page-current,.page-current:hover:not(:disabled){background:var(--teal);border-color:var(--teal);color:#fff;font-weight:600}.page-gap{color:var(--text-3);padding:0 2px}.detail-pane{background:var(--surface-muted);flex-direction:column;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.map-panel{isolation:isolate;background:#e8eeed;flex:auto;min-height:280px;transition:flex-basis .2s;position:relative;overflow:hidden}.has-workbench .map-panel{border-bottom:1px solid var(--border);flex:0 0 44%}.map-canvas{background:#e8eeed;position:absolute;inset:0}.map-style-soft-teal .leaflet-tile-pane{filter:grayscale(.85)sepia(.12)hue-rotate(120deg)contrast(.92)brightness(1.06)}.map-control{z-index:500;position:absolute}.map-layer-toggle{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border);box-shadow:var(--shadow-sm);background:#ffffffeb;border-radius:10px;gap:2px;padding:3px;display:flex;top:14px;left:14px}.map-layer-toggle button{color:var(--text-2);background:0 0;border:0;border-radius:7px;padding:4px 12px;font-size:12.5px;font-weight:500}.map-layer-toggle button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm);font-weight:650}.map-status-pill{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border);max-width:calc(100% - 260px);color:var(--text);box-shadow:var(--shadow-sm);white-space:nowrap;text-overflow:ellipsis;background:#ffffffe6;border-radius:999px;align-items:center;gap:6px;padding:5px 14px;font-size:12px;font-weight:500;display:flex;top:14px;left:50%;overflow:hidden;transform:translate(-50%)}.map-status-icon{color:var(--teal);font-size:15px}.map-status-zoom{color:var(--text-2)}.map-zoom{border:1px solid var(--border);box-shadow:var(--shadow-sm);background:#fffffff2;border-radius:10px;flex-direction:column;display:flex;top:14px;right:14px;overflow:hidden}.map-zoom button{width:34px;height:34px;color:var(--text);background:0 0;border:0;justify-content:center;align-items:center;display:flex}.map-zoom button+button{border-top:1px solid var(--border)}.map-zoom button:hover{background:var(--surface-hover)}.map-tile-warning{border:1px solid var(--border);color:var(--amber-ink);box-shadow:var(--shadow-sm);background:#fffffff2;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:12px;display:flex;bottom:28px;left:14px}.map-unavailable{text-align:center;color:var(--text-2);background:radial-gradient(#087f722e 1px,#0000 1px) 0 0/16px 16px,linear-gradient(135deg,#e1ebea,#d5e3e1);flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:24px;display:flex}.leaflet-container{font-family:var(--font);background:#e8eeed}.leaflet-control-attribution{font-size:10px;background:#fffc!important}.map-tooltip{font-family:var(--font);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:6px;padding:4px 8px;font-size:12px;font-weight:500}.map-cluster-wrapper{background:0 0;border:0}.map-cluster{cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:4px;transition:transform .12s;display:flex;box-shadow:0 2px 8px #17202238}.map-cluster:hover{transform:scale(1.08)}.map-cluster-count{background:var(--teal-deep);color:#fff;font-variant-numeric:tabular-nums;border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;gap:1px;width:100%;height:100%;font-size:12px;font-weight:700;display:flex}.map-cluster-stack .map-cluster-count{color:var(--teal-ink);background:#fff;border-color:#fff}.map-cluster-count .icon{font-size:13px}.leaflet-marker-icon.map-cluster-wrapper:focus-visible{outline:none}.leaflet-marker-icon.map-cluster-wrapper:focus-visible .map-cluster{outline:3px solid var(--blue);outline-offset:2px}.map-stack-leaflet-popup .leaflet-popup-content-wrapper{box-shadow:var(--shadow-md);border-radius:12px}.map-stack-leaflet-popup .leaflet-popup-content{font-family:var(--font);margin:12px}.map-stack-title{letter-spacing:.06em;text-transform:uppercase;color:var(--teal-ink);margin-bottom:8px;font-size:11px;font-weight:700}.map-stack-popup ul{flex-direction:column;gap:2px;max-height:240px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.map-stack-popup button{text-align:left;width:100%;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:6px 8px;display:flex}.map-stack-popup button:hover,.map-stack-popup button:focus-visible{background:var(--surface-hover);outline:none}.map-stack-dot{width:10px;height:10px;box-shadow:0 0 0 1px var(--border-strong);border:1.5px solid #fff;border-radius:999px;flex:none}.map-stack-text{flex-direction:column;min-width:0;display:flex}.map-stack-text strong{font-size:12.5px;font-weight:600}.map-stack-text small{color:var(--text-2);font-size:11px}.map-stack-more{color:var(--text-2);margin-top:8px;font-size:11px}.map-pin-wrapper{background:0 0;border:0}.map-pin{pointer-events:auto;flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;transform:translate(-50%,-50%)}.map-pin-dot{color:#fff;border:2px solid #fff;border-radius:999px;justify-content:center;align-items:center;display:flex;box-shadow:0 2px 6px #17202240}.map-pin-lg .map-pin-dot{width:32px;height:32px}.map-pin-md .map-pin-dot{width:26px;height:26px}.map-pin-dot .icon{font-size:16px}.map-pin-teal .map-pin-dot{background:var(--teal)}.map-pin-blue .map-pin-dot{background:var(--blue)}.map-pin-gray .map-pin-dot{background:#94a3a5}.map-pin-amber .map-pin-dot{background:var(--amber)}.map-pin-label{border:1px solid var(--border);box-shadow:var(--shadow-sm);color:var(--text);white-space:nowrap;background:#fffffff5;border-radius:6px;padding:2px 8px;font-size:11.5px;font-weight:600;position:absolute;top:calc(100% + 2px)}.map-pin-lg .map-pin-label{font-size:12px}.map-pin-teal.map-pin-lg .map-pin-label{color:var(--teal-ink)}.map-pin-detail{font-family:var(--mono);color:var(--teal-ink);margin-left:4px;font-size:10.5px;font-weight:500}.map-pin-md{cursor:pointer}.workbench{background:var(--surface);flex-direction:column;flex:1;gap:12px;min-height:0;padding:16px 20px 20px;display:flex;overflow-y:auto}.workbench-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:12px;display:flex}.workbench-title{letter-spacing:-.01em;margin-top:2px;font-size:16px;font-weight:700}.workbench-head-actions{align-items:center;gap:8px;display:flex}.info-grid{border:1px solid var(--border);background:var(--surface-muted);border-radius:10px;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:12px 14px;display:grid}.info-cell{flex-direction:column;gap:3px;min-width:0;display:flex}.info-label{color:var(--text-2);font-size:11px}.info-value{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.section-label{letter-spacing:.07em;text-transform:uppercase;color:var(--text);margin-top:4px;font-size:11px;font-weight:700}.section-label-row{justify-content:space-between;align-items:center;display:flex}.section-label-row .text-teal{text-transform:none;letter-spacing:0;font-size:12px;font-weight:500}.diagnostics{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.diagnostic{border:1px solid var(--border);background:var(--surface-muted);color:var(--text-2);border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.diagnostic span{align-items:center;gap:6px;display:flex}.diagnostic strong{color:var(--text);font-weight:650}.recommendation{background:#e7f7f380;border:1px solid #10b39a40;border-radius:12px;flex-direction:column;gap:12px;padding:14px 16px;display:flex}.recommendation-none{background:#eef0fe80;border-color:#6366f140}.recommendation-body{align-items:flex-start;gap:12px;display:flex}.recommendation-icon{color:var(--teal);margin-top:1px;font-size:22px}.recommendation-none .recommendation-icon{color:var(--indigo)}.recommendation-text{flex-direction:column;gap:2px;min-width:0;display:flex}.recommendation-eyebrow{color:var(--teal-ink);font-size:12.5px;font-weight:600}.recommendation-none .recommendation-eyebrow{color:var(--indigo-ink)}.recommendation-text strong{font-size:14px}.jev-reason{color:var(--text-2);align-items:flex-start;gap:4px;margin-top:4px;font-size:12px;display:flex}.jev-reason .icon{font-size:15px}.selection-line{border:1px solid var(--border);background:#ffffffbf;border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;font-size:12.5px;display:flex}.selection-line .icon{color:var(--text-2);font-size:16px}.selection-line .link-button{margin-left:auto}.recommendation-actions{flex-wrap:wrap;gap:8px;display:flex}.grow{flex:220px}.workbench-actions{flex-wrap:wrap;gap:8px;display:flex}.candidate-list,.linked-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.candidate{border:1px solid var(--border);background:var(--surface);border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.candidate-selected{background:#e7f7f359;border-color:#10b39a80}.candidate-dot{border-radius:999px;width:10px;height:10px}.dot-blue{background:var(--blue)}.dot-teal{background:var(--teal)}.dot-gray{background:#b5c1c2}.candidate-name{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.candidate-meta{color:var(--text-2);flex-wrap:wrap;gap:5px;margin-top:2px;font-size:11.5px;display:flex}.empty-note{border:1px dashed var(--border-strong);color:var(--text-2);border-radius:10px;margin:0;padding:12px;font-size:12.5px}.linked{border:1px solid var(--border);background:var(--surface-muted);border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.linked-icon{background:var(--teal-pale);width:32px;height:32px;color:var(--teal-ink);border-radius:8px;justify-content:center;align-items:center;display:flex}.linked-name{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.linked-meta{color:var(--text-2);margin-top:2px;font-size:12px}.offset-chip{background:var(--teal-pale);color:var(--teal-ink);border-radius:5px;padding:1px 6px;font-size:10.5px}.button{border-radius:var(--radius-control);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;height:34px;padding:0 14px;font-size:13px;font-weight:550;text-decoration:none;transition:background .12s,border-color .12s,color .12s,box-shadow .12s;display:inline-flex}.button .icon{font-size:17px}.button-small{height:30px;padding:0 11px;font-size:12.5px}.button-primary{background:var(--teal);color:#fff;box-shadow:var(--shadow-sm)}.button-primary:hover:not(:disabled){background:#0ea28b}.button-secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.button-secondary:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong)}.button-danger{background:var(--red);color:#fff}.button-danger:hover:not(:disabled){background:#c84d4d}.button-danger-ghost{background:var(--surface);border-color:var(--border);color:var(--red-ink)}.button-danger-ghost:hover:not(:disabled){background:var(--red-pale)}.button:disabled{opacity:.5;box-shadow:none}.button.full{width:100%}.link-button{color:var(--teal-ink);background:0 0;border:0;padding:0;font-size:12.5px;font-weight:550}.link-button:hover:not(:disabled){text-underline-offset:2px;text-decoration:underline}.link-button.strong{color:var(--text);font-size:13px;font-weight:600}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--text);font-size:12px;font-weight:600}.field-hint{color:var(--text-2);font-size:12px}.field input,.field select,.field textarea,.config-field input[type=number],.picker-search input{border:1px solid var(--border);border-radius:var(--radius-control);background:var(--surface);outline:0;width:100%;min-height:34px;padding:7px 10px;font-size:13px}.field textarea{resize:vertical;font-family:var(--font)}.field input:focus,.field select:focus,.field textarea:focus,.config-field input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #10b39a1f}.field input:disabled{background:var(--surface-muted);color:var(--text-2)}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-span{grid-column:1/-1}.form-hint{color:var(--text-2);align-items:center;gap:6px;margin:0;font-size:12.5px;display:flex}.form-error{background:var(--red-pale);color:var(--red-ink);border-radius:8px;margin:0;padding:8px 10px;font-size:12.5px}.filter-popover{z-index:700;background:var(--surface);border:1px solid var(--border);width:340px;box-shadow:var(--shadow-md);border-radius:12px;animation:.14s pop;position:absolute;top:10px;right:10px}.filter-popover-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.filter-popover-body{flex-direction:column;gap:14px;padding:14px;display:flex}.picker{border:1px solid var(--border);border-radius:10px;overflow:hidden}.picker-search{border-bottom:1px solid var(--border);color:var(--text-2);align-items:center;gap:6px;padding:0 10px;display:flex}.picker-search input,.picker-search input:focus{padding-left:0;box-shadow:none!important;border:0!important}.picker-list{max-height:200px;padding:4px;overflow-y:auto}.picker-list.tall{max-height:320px}.picker-option{text-align:left;background:0 0;border:0;border-radius:7px;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:7px 10px;font-size:12.5px;display:flex}.picker-option:hover{background:var(--surface-hover)}.picker-option.selected{background:var(--teal-pale);color:var(--teal-ink);font-weight:600}.picker-option>span:first-child{flex-direction:column;min-width:0;display:flex}.picker-sub{color:var(--text-2);font-size:11.5px;font-weight:400}.picker-meta{color:var(--text-3);font-size:11.5px}.picker-empty{color:var(--text-2);text-align:center;padding:12px;font-size:12.5px}.notice{border-radius:10px;align-items:flex-start;gap:8px;margin:0;padding:10px 12px;font-size:12.5px;display:flex}.notice .icon{font-size:17px}.notice.small{padding:8px 10px;font-size:11.5px}.notice-teal{background:var(--teal-pale);color:var(--teal-ink)}.notice-indigo{background:var(--indigo-pale);color:var(--indigo-ink)}.state-panel{text-align:center;min-height:280px;color:var(--text-2);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:32px;display:flex}.state-icon{color:var(--text-3);font-size:34px}.state-red .state-icon{color:var(--red)}.state-title{color:var(--text);font-size:14px;font-weight:650}.state-body{max-width:380px;font-size:12.5px}.spinner{border:2px solid var(--border-strong);border-top-color:var(--teal);vertical-align:middle;border-radius:999px;width:14px;height:14px;animation:.8s linear infinite spin;display:inline-block}.modal-backdrop{z-index:900;background:#17202252;justify-content:center;align-items:center;padding:16px;animation:.14s fade;display:flex;position:fixed;inset:0}.modal{background:var(--surface);width:100%;max-height:calc(100vh - 32px);box-shadow:var(--shadow-lg);border-radius:14px;flex-direction:column;animation:.16s pop;display:flex}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px 14px;display:flex}.modal-title{margin-top:3px;font-size:16px;font-weight:700}.modal-body{flex-direction:column;gap:14px;padding:18px 20px;display:flex;overflow-y:auto}.modal-body p{color:var(--text-2);margin:0}.modal-footer{border-top:1px solid var(--border);background:var(--surface-muted);border-radius:0 0 14px 14px;justify-content:flex-end;align-items:center;gap:8px;padding:14px 20px;display:flex}.modal-footnote{color:var(--text-2);align-items:center;gap:4px;margin-right:auto;font-size:12px;display:flex}.modal-footnote .icon{font-size:15px}.toasts{z-index:1000;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{background:var(--text);color:#fff;box-shadow:var(--shadow-md);border-radius:10px;align-items:center;gap:8px;max-width:520px;padding:10px 14px;font-size:13px;animation:.16s pop;display:flex}.toast-success .icon{color:#5eead4}.toast-error{background:var(--red-ink)}.toast-info .icon{color:#93c5fd}.config-layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:24px;display:grid}.page-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-sm);flex-direction:column;gap:16px;padding:20px;display:flex}.page-card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.page-title{letter-spacing:-.01em;margin-top:3px;font-size:18px;font-weight:700}.page-title.small{font-size:15px}.config-section{border:1px solid var(--border);border-radius:10px;flex-direction:column;padding:4px 16px 8px;display:flex}.config-section .section-label{color:var(--teal-ink);margin:12px 0 4px}.config-field{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) minmax(0,320px);align-items:center;gap:20px;padding:12px 0;display:grid}.config-section .section-label+.config-field{border-top:0}.config-field-text{flex-direction:column;gap:2px;display:flex}.config-field-control{justify-content:flex-end;align-items:center;gap:12px;display:flex}.config-field input[type=number]{text-align:right;width:110px}.config-field input[type=range]{accent-color:var(--teal);flex:1}.input-unit{color:var(--text-2);align-items:center;gap:6px;display:inline-flex}.toggle-row{align-items:center;gap:12px;display:inline-flex}.toggle{appearance:none;background:var(--border-strong);cursor:pointer;border-radius:999px;width:38px;height:22px;transition:background .14s;position:relative}.toggle:after{content:"";width:16px;height:16px;box-shadow:var(--shadow-sm);background:#fff;border-radius:999px;transition:transform .14s;position:absolute;top:3px;left:3px}.toggle:checked{background:var(--teal)}.toggle:checked:after{transform:translate(16px)}.mode-pill{background:var(--surface-muted);border:1px solid var(--border);color:var(--text-2);border-radius:999px;padding:2px 10px;font-size:12px}.cluster-zoom{border:1px solid var(--border);border-radius:10px;grid-template-columns:minmax(0,1fr) minmax(0,360px) 72px;align-items:center;gap:20px;padding:14px 16px;display:grid}.cluster-zoom-control{padding-bottom:18px;position:relative}.cluster-zoom-control input[type=range]{width:100%;accent-color:var(--teal)}.cluster-zoom-scale{height:14px;position:absolute;bottom:0;left:8px;right:8px}.cluster-zoom-scale span{color:var(--text-3);white-space:nowrap;font-size:10.5px;position:absolute;transform:translate(-50%)}.cluster-zoom-value{background:var(--teal-pale);color:var(--teal-ink);border-radius:10px;flex-direction:column;align-items:center;padding:6px 0;display:flex}.cluster-zoom-value strong{font-size:20px;line-height:1.1}.cluster-zoom-value span{font-size:11px}.cluster-step{grid-template-columns:minmax(0,1fr) auto}.segmented{background:var(--surface-muted);border:1px solid var(--border);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.segmented-option{min-width:44px;height:30px;color:var(--text-2);font-variant-numeric:tabular-nums;background:0 0;border:0;border-radius:7px;padding:0 10px;font-size:12.5px;font-weight:600}.segmented-option:hover:not(:disabled){color:var(--text);background:var(--surface-hover)}.segmented-option.active,.segmented-option.active:hover:not(:disabled){background:var(--teal);color:#fff;box-shadow:var(--shadow-sm)}@media (width<=720px){.cluster-zoom,.cluster-step{grid-template-columns:1fr}}.config-main{flex-direction:column;gap:24px;min-width:0;display:flex}.align-right{text-align:right}.style-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.style-card{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;padding:0;transition:border-color .12s,box-shadow .12s,transform .12s;display:flex;overflow:hidden}.style-card:hover:not(:disabled){border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.style-card:disabled{cursor:progress}.style-card-selected,.style-card-selected:hover:not(:disabled){border-color:var(--teal);box-shadow:0 0 0 3px #10b39a29}.style-preview{border-bottom:1px solid var(--border);background:#e8eeed;height:96px;display:block;position:relative;overflow:hidden}.style-preview img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.style-preview.map-style-soft-teal img{filter:grayscale(.85)sepia(.12)hue-rotate(120deg)contrast(.92)brightness(1.06)}.style-check{background:var(--teal);color:#fff;width:24px;height:24px;box-shadow:var(--shadow-sm);border-radius:999px;justify-content:center;align-items:center;display:flex;position:absolute;top:8px;right:8px}.style-check .icon{font-size:16px}.style-check .spinner{border-color:#fff #fff6 #fff6}.style-text{flex-direction:column;gap:2px;padding:10px 12px 12px;display:flex}.style-label{font-size:13px;font-weight:650}.style-card-selected .style-label{color:var(--teal-ink)}.style-description{color:var(--text-2);font-size:11.5px;line-height:1.4}.snapshot-card{top:calc(var(--topbar) + 24px);position:sticky}.snapshot-list{flex-direction:column;margin:0;display:flex}.snapshot-list div{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:8px 0;font-size:12.5px;display:flex}.snapshot-list dt{color:var(--text-2)}.snapshot-list dd{text-align:right;margin:0;font-weight:550}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(4px)scale(.98)}}@media (width<=1180px){.workspace{grid-template-rows:minmax(420px,1fr) minmax(420px,1fr);grid-template-columns:1fr;height:auto}.directory{border-right:0;border-bottom:1px solid var(--border);max-height:70vh}.detail-pane{min-height:560px}.config-layout{grid-template-columns:1fr}.snapshot-card{position:static}}@media (width<=720px){.main{padding:12px}.topbar{padding:0 12px}.search{display:none}.brand{font-size:15px}.page-chip{display:none}.topbar .button-primary{padding:0 10px}.info-grid{grid-template-columns:1fr 1fr}.diagnostics,.config-field,.form-grid{grid-template-columns:1fr}}.job-banner{top:var(--topbar);z-index:35;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm);position:sticky}.job-banner-inner{align-items:center;gap:12px;max-width:1920px;margin:0 auto;padding:8px 24px;font-size:12.5px;display:flex}.job-phase{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;max-width:360px;overflow:hidden}.job-meter{background:#e6eeed;border-radius:999px;flex:1;min-width:120px;height:6px;position:relative;overflow:hidden}.job-meter-fill{border-radius:inherit;background:var(--teal);height:100%;transition:width .2s;display:block}.job-meter-fill.indeterminate{width:35%;animation:1.3s ease-in-out infinite indeterminate}.job-numbers,.job-cost{color:var(--text-2);white-space:nowrap;font-size:12px}.job-cost{color:var(--teal-ink)}.job-queued{background:var(--amber-pale);color:var(--amber-ink);white-space:nowrap;border-radius:999px;padding:2px 8px;font-weight:600}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(300%)}}.option-group{flex-direction:column;gap:8px;display:flex}.option-card{border:1px solid var(--border);cursor:pointer;border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;transition:border-color .12s,background .12s;display:grid}.option-card:hover{border-color:var(--border-strong)}.option-card.selected{border-color:var(--teal);background:#e7f7f373}.option-card input{accent-color:var(--teal)}.option-card strong{font-size:13px;display:block}.option-card small{color:var(--text-2);font-size:12px;line-height:1.4;display:block}.option-count{color:var(--teal-ink);font-size:15px;font-weight:700}.check-row{cursor:pointer;align-items:center;gap:8px;font-size:12.5px;display:flex}.check-row input{accent-color:var(--teal);width:16px;height:16px}.notice-amber{background:var(--amber-pale);color:var(--amber-ink)}.notice-amber .link-button{color:var(--amber-ink);text-decoration:underline}.import-screen{gap:20px;max-width:880px;margin:48px auto}.import-hero{align-items:flex-start;gap:18px;display:flex}.import-hero p{max-width:640px;margin:8px 0 0}.import-icon{background:var(--teal-pale);width:56px;height:56px;color:var(--teal-ink);border-radius:16px;flex:none;justify-content:center;align-items:center;display:flex}.import-icon .icon{font-size:30px}.import-actions{flex-wrap:wrap;gap:10px;display:flex}.job-history{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.job-history li{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:8px 0;display:flex}.job-history-main{flex-direction:column;flex:1;min-width:0;font-size:12.5px;display:flex}.job-history-main small{color:var(--text-2);font-size:11.5px;line-height:1.4}.job-state{text-align:center;text-transform:capitalize;min-width:72px;color:var(--text-2);background:#eef2f2;border-radius:6px;flex:none;padding:2px 6px;font-size:11px;font-weight:600}.job-state-running,.job-state-queued{background:var(--blue-pale);color:var(--blue-ink)}.job-state-succeeded{background:var(--teal-pale);color:var(--teal-ink)}.job-state-failed{background:var(--red-pale);color:var(--red-ink)}.config-aside{top:calc(var(--topbar) + 24px);flex-direction:column;gap:24px;display:flex;position:sticky}.config-aside .snapshot-card{position:static}.config-field-stack{grid-template-columns:minmax(0,1fr);gap:10px}.model-picker{flex-direction:column;gap:4px;width:100%;display:flex;position:relative}.model-picker-input{align-items:center;gap:4px;display:flex}.model-picker-input input{border:1px solid var(--border);border-radius:var(--radius-control);min-height:34px;font-family:var(--mono);outline:0;flex:1;padding:7px 10px;font-size:12.5px}.model-picker-input input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #10b39a1f}.input-missing{background:var(--amber-pale);border-color:var(--amber)!important}.model-picker-list{z-index:30;background:var(--surface);border:1px solid var(--border);max-height:320px;box-shadow:var(--shadow-md);border-radius:10px;padding:4px;position:absolute;top:40px;left:0;right:0;overflow-y:auto}.config-field-control .model-picker .field-hint{text-align:left}.exclusion-editor{flex-direction:column;gap:10px;display:flex}.exclusion-editor .input-unit input{border:1px solid var(--border);border-radius:var(--radius-control);width:140px;min-height:30px;padding:5px 10px}.class-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;display:grid}.class-option{border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:12.5px;display:flex}.class-option.selected{background:#e7f7f366;border-color:#10b39a80}.class-option input{accent-color:var(--teal)}.class-option .picker-meta{margin-left:auto}.ai-evidence{background:#eef0fe80;border:1px solid #6366f140;border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;font-size:12.5px;display:flex}.ai-evidence-row{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.ai-evidence-row .info-label{align-items:center;gap:4px;min-width:150px;display:inline-flex}.ai-probabilities{flex-wrap:wrap;gap:6px;display:flex}.ai-probability{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:2px 8px;font-size:12px}.ai-probability.chosen{border-color:var(--indigo);color:var(--indigo-ink)}.ai-tag{color:var(--indigo-ink);align-items:center;gap:2px;font-weight:600;display:inline-flex}.ai-tag .icon{font-size:13px}.small-text{font-size:11.5px}.workbench-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;padding-top:10px;display:flex}.workbench-footer .field-hint{margin-right:auto}.badge-stack{flex-wrap:wrap;gap:4px;display:flex}.segment-gap{margin-left:10px}.segment .icon{font-size:14px}@media (width<=1180px){.config-aside{position:static}}.map-action{box-shadow:var(--shadow-md);white-space:nowrap;bottom:26px;left:50%;transform:translate(-50%)}.map-action:disabled{opacity:.6}.chip-row .segment .icon{font-size:14px}.dedupe-page{max-width:1200px;margin:0 auto}.dedupe-list{flex-direction:column;gap:12px;display:flex}.dedupe-card{border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.dedupe-card-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.dedupe-kind{text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);align-items:center;gap:4px;font-size:11px;font-weight:600;display:inline-flex}.dedupe-kind .icon{font-size:15px}.dedupe-rows{flex-direction:column;gap:6px;display:flex}.dedupe-row{border-top:1px solid var(--border);grid-template-columns:64px minmax(0,1fr) minmax(0,1fr);align-items:center;gap:12px;padding:6px 0;display:grid}.dedupe-row:first-child{border-top:0}.dedupe-row-rename{grid-template-columns:minmax(0,1fr) 24px minmax(0,1.4fr)}.dedupe-role{color:var(--teal-ink);text-transform:uppercase;font-size:11px;font-weight:600}.dedupe-role-remove{color:var(--red-ink)}.dedupe-ref,.dedupe-name{flex-direction:column;gap:2px;min-width:0;display:flex}.dedupe-arrow{color:var(--text-2);justify-content:center;display:flex}.dedupe-input{border:1px solid var(--border-strong);background:var(--surface);border-radius:8px;width:100%;padding:6px 10px}.dedupe-input:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px #10b39a1f}.dedupe-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.dedupe-actions .field-hint{margin-right:auto}.dedupe-steps{flex-direction:column;gap:8px;margin:0;padding-left:18px;font-size:13px;display:flex}@media (width<=720px){.dedupe-row,.dedupe-row-rename{grid-template-columns:minmax(0,1fr);gap:4px}.dedupe-arrow{display:none}.dedupe-actions{flex-wrap:wrap}}.dedupe-title{cursor:pointer;font:inherit;color:var(--text);-webkit-text-decoration:underline dotted var(--border-strong);text-decoration:underline dotted var(--border-strong);text-underline-offset:3px;background:0 0;border:0;padding:0;font-weight:700}.dedupe-title:hover{color:var(--teal-ink);-webkit-text-decoration-color:var(--teal);text-decoration-color:var(--teal)}.dedupe-map-button{margin-left:auto}.dedupe-map-layout{grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:16px;min-height:520px;display:grid}.dedupe-map-list{flex-direction:column;gap:8px;max-height:560px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.dedupe-map-list>li{border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:4px;padding:8px 10px;display:flex}.dedupe-map-list>li.active{border-color:var(--teal);box-shadow:0 0 0 2px #10b39a26}.dedupe-map-record{text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:8px;padding:0;display:grid}.dedupe-map-swatch{width:12px;height:12px;box-shadow:0 0 0 1px var(--border-strong);border:2px solid #fff;border-radius:999px}.dedupe-map-stations{flex-direction:column;gap:2px;margin:0;padding-left:20px;display:flex}.dedupe-map-note{padding-left:20px}.dedupe-map-open{align-self:flex-start;align-items:center;gap:2px;padding-left:20px;font-size:12px;display:inline-flex}.dedupe-map-open .icon{font-size:14px}.dedupe-map-canvas{border:1px solid var(--border);border-radius:10px;min-height:520px;position:relative;overflow:hidden}.dedupe-map-canvas .map-canvas{position:absolute;inset:0}.map-pin-red .map-pin-dot{background:var(--red,#d95c5c)}.map-pin-indigo .map-pin-dot{background:var(--indigo,#6366f1)}@media (width<=720px){.dedupe-map-layout{grid-template-columns:minmax(0,1fr)}.dedupe-map-canvas{min-height:360px}}.linked-recommended{border-left:3px solid var(--amber)}
