:root{--bg:#f7f1df;--bg-soft:#fff8e6d1;--panel:#fffcf3eb;--panel-strong:#fffaf0;--line:#12463f24;--line-strong:#12463f47;--text:#234542;--text-soft:#5c746e;--accent:#12463f;--accent-soft:#1f6f63;--accent-ghost:#12463f14;--danger:#b54830;--danger-soft:#b548301f;--warning:#c67a1f;--warning-soft:#c67a1f26;--success:#1c8a65;--shadow:0 20px 70px #223a3324;--font-display:"Trebuchet MS", "Avenir Next", "Segoe UI", sans-serif;--font-body:"Avenir Next", "Segoe UI", sans-serif;--font-mono:"Consolas", "SFMono-Regular", monospace;color:var(--text);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#app{min-height:100%}body{background:radial-gradient(circle at top right, #317e6721, transparent 26rem), radial-gradient(circle at left 10% bottom 15%, #eaa75029, transparent 22rem), linear-gradient(180deg, #fbf6e7 0%, var(--bg) 100%);margin:0}.auth-shell{place-items:center;min-height:100vh;padding:1.25rem;display:grid}.auth-card{border:1px solid var(--line);background:var(--panel);width:min(100%,30rem);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:1.6rem;gap:1rem;padding:1.4rem;display:grid}.auth-card h1{font-family:var(--font-display);margin:0;font-size:clamp(1.8rem,4vw,2.6rem);line-height:1}.auth-card p{color:var(--text-soft);margin:0;line-height:1.5}.auth-badge{color:var(--accent-soft);text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:.5rem;font-size:.85rem;font-weight:700;display:inline-flex}.auth-form{gap:.9rem;display:grid}.auth-submit{background:var(--accent);color:#fff;border:0;border-radius:1rem;justify-content:center;align-items:center;min-height:3rem;font-weight:700;display:inline-flex}.auth-submit:disabled{opacity:.7;cursor:progress}button,input{font:inherit}button{cursor:pointer}code{font-family:var(--font-mono);background:#12463f14;border-radius:999px;padding:.12rem .38rem;font-size:.92em}.app-shell{width:min(1480px,100% - 2rem);margin:0 auto;padding:1.5rem 0 2rem;position:relative}.background-orb{filter:blur(4px);opacity:.55;pointer-events:none;border-radius:50%;width:18rem;height:18rem;position:fixed}.background-orb--one{background:radial-gradient(circle,#1f6f633d,#0000 70%);top:3rem;right:4rem}.background-orb--two{background:radial-gradient(circle,#eaa75042,#0000 68%);bottom:2rem;left:0}.topbar,.workspace{gap:1.2rem;display:grid}.topbar{grid-template-columns:1fr;margin-bottom:1.2rem}.workspace{grid-template-columns:1fr;align-items:start}.hero-card,.search-card,.map-card,.status-card{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:1.6rem;position:relative;overflow:hidden}.hero-card,.search-card,.status-card{padding:1.35rem}.map-card{padding:1.1rem}.eyebrow{color:var(--accent-soft);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:.45rem;font-size:.85rem;font-weight:700;display:inline-flex}.hero-card h1{max-width:15ch;font-family:var(--font-display);letter-spacing:-.05em;margin:.9rem 0 .8rem;font-size:clamp(2rem,4vw,3.65rem);line-height:.97}.hero-copy{max-width:58ch;color:var(--text-soft);margin:0;line-height:1.55}.hero-metrics{flex-wrap:wrap;gap:.7rem;margin-top:1.1rem;display:flex}.metric-chip,.meta-pill,.stat-card{border:1px solid var(--line);background:#ffffffc2}.metric-chip{border-radius:1.1rem;min-width:9rem;padding:.8rem .95rem}.metric-chip span,.stat-card span{color:var(--text-soft);text-transform:uppercase;letter-spacing:.08em;font-size:.76rem;display:block}.metric-chip strong,.stat-card strong{margin-top:.3rem;font-size:1.02rem;display:block}.panel-title-row{justify-content:space-between;align-items:center;gap:.8rem;margin-bottom:.95rem;display:flex}.panel-title-row h2,.selected-point-card h3{font-family:var(--font-display);margin:0;font-size:1.2rem}.panel-caption{color:var(--text-soft);font-size:.92rem}.search-input{border:1px solid var(--line-strong);background:#ffffffdb;border-radius:1.1rem;align-items:center;gap:.75rem;padding:.92rem 1rem;display:flex}.search-input input{width:100%;color:var(--text);background:0 0;border:0;outline:0}.session-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.session-badge{border:1px solid var(--line);text-align:right;background:#ffffffc2;border-radius:1rem;gap:.1rem;padding:.7rem .9rem;display:grid}.session-badge strong{font-size:.95rem}.session-badge span{color:var(--text-soft);text-transform:uppercase;letter-spacing:.08em;font-size:.8rem}.result-list{gap:.65rem;max-height:28rem;padding-right:.15rem;display:grid;overflow:auto}.result-item{border:1px solid var(--line);width:100%;color:inherit;text-align:left;background:#ffffffb3;border-radius:1rem;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;padding:.95rem 1rem;transition:transform .14s,border-color .14s,background .14s;display:grid}.result-item:hover,.result-item.is-selected{background:#f6fffbf5;border-color:#12463f59;transform:translateY(-1px)}.result-main,.result-meta{gap:.2rem;display:grid}.result-main strong{font-size:1rem}.result-main span,.result-meta span{color:var(--text-soft);font-size:.88rem}.inline-warning,.inline-error,.empty-state{border-radius:1rem;padding:.9rem 1rem}.inline-warning{background:var(--warning-soft);color:#85541b;border:1px solid #c67a1f33;margin-bottom:.8rem}.inline-error{color:#8f3624;background:#b5483017;border:1px solid #b5483033;margin-bottom:.8rem}.empty-state{text-align:center;min-height:14rem;color:var(--text-soft);border:1px dashed var(--line-strong);background:#ffffff8f;place-items:center;display:grid}.empty-state.compact{min-height:0}.map-summary{text-align:right;color:var(--text-soft);font-size:.9rem;display:grid}.map-meta-strip{display:none}.meta-pill{color:var(--text);border-radius:999px;align-items:center;gap:.42rem;padding:.65rem .85rem;display:inline-flex}.map-stage-shell{gap:.8rem;display:grid}.map-fullscreen-layer{z-index:79;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;position:fixed;inset:0;overflow-y:auto}.map-stage-shell.is-fullscreen{z-index:80;padding-top:calc(.35rem + env(safe-area-inset-top));padding-right:calc(.35rem + env(safe-area-inset-right));padding-bottom:calc(.35rem + env(safe-area-inset-bottom));padding-left:calc(.35rem + env(safe-area-inset-left));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);-webkit-overflow-scrolling:touch;background:#f7f1dffa;grid-template-rows:auto auto minmax(18rem,1fr);align-content:start;position:fixed;inset:0;overflow-y:auto}.map-toolbar{flex-wrap:wrap;justify-content:flex-end;gap:.55rem;display:flex}.map-stage-shell.is-fullscreen .map-toolbar{border:1px solid var(--line);background:#ffffffe6;border-radius:.85rem;justify-content:flex-end;align-items:center;padding:.25rem}.map-editor-panel{border:1px solid var(--line);background:#ffffffd1;border-radius:1.15rem;gap:.65rem;margin:.8rem 0 .9rem;padding:.8rem;display:grid;box-shadow:0 14px 34px #243a3414}.map-editor-panel.is-floating{background:#ffffffe6}.map-editor-heading{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.map-editor-heading strong{color:var(--text)}.map-editor-heading span{color:var(--text-soft);font-size:.82rem}.map-editor-primary,.map-editor-icons{scrollbar-width:none;gap:.55rem;display:flex;overflow-x:auto}.map-editor-primary::-webkit-scrollbar{display:none}.map-editor-icons::-webkit-scrollbar{display:none}.map-mode-pill{border:1px solid var(--line);min-height:2.45rem;color:var(--text-soft);white-space:nowrap;background:#ffffffb8;border-radius:999px;align-items:center;gap:.45rem;padding:.6rem .95rem;font-weight:700;display:inline-flex}.map-mode-pill.is-active{color:var(--accent);background:#12463f1a;border-color:#12463f47}.map-icon-chip{border:1px solid var(--line);min-width:5.4rem;color:var(--text-soft);text-align:center;background:#ffffffb8;border-radius:1rem;justify-items:center;gap:.4rem;padding:.65rem .55rem;font-size:.76rem;font-weight:700;display:grid}.map-icon-chip.is-active{color:var(--accent);background:#12463f1a;border-color:#12463f47}.map-icon-chip__preview{background:#fffffff2;border-radius:.78rem;place-items:center;width:2.35rem;height:2.35rem;display:grid;box-shadow:inset 0 0 0 1px #12463f14}.map-icon-chip__preview--gps{background:radial-gradient(circle,#12463f0f,#12463f00 70%),#fffffff2}.map-legend-gps-preview{width:.55rem;height:.55rem;box-shadow:0 0 0 1.4px var(--accent), 0 1px 3px #12463f29;background:#f7fff9;border-radius:50%}.map-editor-angle-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.map-legend-panel{border:1px solid var(--line);background:#ffffff8a;border-radius:.9rem;gap:.45rem;margin:.15rem 0 0;padding:.55rem;display:grid}.map-legend-header{justify-content:space-between;align-items:flex-start;gap:.8rem;display:flex}.map-legend-caption{color:var(--text-soft);margin:.1rem 0 0;font-size:.74rem}.map-legend-row{scrollbar-width:none;gap:.4rem;display:flex;overflow-x:auto}.map-legend-row::-webkit-scrollbar{display:none}.map-legend-clear{white-space:nowrap;flex:none;min-height:1.9rem;padding:.38rem .6rem;font-size:.75rem}.map-icon-chip--legend{border-radius:.8rem;flex:none;gap:.25rem;min-width:4.2rem;padding:.42rem .4rem;font-size:.66rem}.map-icon-chip--legend .map-icon-chip__preview{border-radius:.62rem;width:1.8rem;height:1.8rem}.map-icon-chip.is-muted{opacity:.42;background:#ffffff80}.map-angle-badge{min-height:2.3rem;color:var(--accent);background:#12463f17;border-radius:999px;align-items:center;padding:.4rem .7rem;font-weight:700;display:inline-flex}.map-angle-button{min-height:2.3rem}.map-viewport-frame{width:100%;min-height:min(72vh,980px);display:grid}.map-viewport-frame--fullscreen{height:100%;min-height:min(70dvh,52rem)}.map-viewport{border:1px solid var(--line);background:linear-gradient(#12463f05,#12463f0f),repeating-linear-gradient(45deg,#12463f05,#12463f05 10px,#12463f08 10px 20px);border-radius:1.4rem;place-items:center;width:100%;height:100%;min-height:100%;display:grid;overflow:hidden}.map-viewport--fullscreen{height:100%;min-height:0}.map-content{width:fit-content;min-width:0;height:fit-content;min-height:0;padding:0;display:block}.map-stage-shell.is-fullscreen .map-content{padding:0}.map-plane{touch-action:none;border-radius:1.1rem;width:min(100%,1300px);position:relative;overflow:hidden;box-shadow:0 18px 45px #1a352f29}.map-plane.is-saving{cursor:progress}.map-plane:not(.map-plane--empty){cursor:crosshair}.map-media{object-fit:fill;pointer-events:none;background:#edf0e8;width:100%;height:100%;display:block}.map-empty{text-align:center;background:linear-gradient(#12463f12,#12463f05);place-items:center;gap:.4rem;width:100%;height:100%;padding:1.4rem;display:grid}.map-empty p{max-width:36ch;color:var(--text-soft);margin:0}.map-grid{pointer-events:none;background-color:#0000;background-image:linear-gradient(#12463f14 1px,#0000 1px),linear-gradient(90deg,#12463f14 1px,#0000 1px);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:12% 12%;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;position:absolute;inset:0}.map-marker{transform-origin:50%;will-change:transform;z-index:2;background:0 0;border:0;padding:0;position:absolute;transform:translate(-50%,-50%)}.map-marker--gps{width:.42rem;height:.42rem;box-shadow:0 0 0 1.1px var(--accent), 0 1px 3px #12463f29;background:#f7fff9;border-radius:50%}.map-marker--icon{background:#fffffff5;border-radius:.62rem;place-items:center;width:1.92rem;height:1.92rem;display:grid;box-shadow:0 0 0 1px #12463f1f,0 10px 24px #243a3429}.map-marker--readonly{cursor:default;-webkit-user-select:none;user-select:none}.map-marker__image{object-fit:contain;pointer-events:none;width:68%;height:68%}.map-marker__fallback{color:var(--accent);letter-spacing:.02em;font-size:.6rem;font-weight:800}.map-marker.is-selected{z-index:4}.map-marker--gps.is-selected{box-shadow:0 0 0 1.2px #fff, 0 0 0 2.2px var(--danger)}.map-marker--icon.is-selected{box-shadow:0 0 0 1.8px #fff,0 0 0 3px #b54830cc,0 14px 28px #243a3438}.map-marker.is-live{pointer-events:none;z-index:5}.map-marker--gps.is-live{background:#f7fbff;width:.5rem;height:.5rem;box-shadow:0 0 0 1.1px #2f80ed,0 0 0 2.2px #2f80ed1f,0 1px 4px #2f80ed2e}.map-marker.is-pending{pointer-events:none;z-index:6;animation:1.2s ease-in-out infinite pendingFlash}.map-marker--gps.is-pending{box-shadow:0 0 0 1px var(--warning), 0 1px 3px #c67a1f29;background:#fff4cc}.map-marker--icon.is-pending{opacity:.88}.map-marker-action-anchor{z-index:7;width:0;height:0;position:absolute}.map-marker-action-placement{position:absolute;top:0;left:0}.map-marker-action-group{will-change:transform;flex-direction:column;align-items:stretch;gap:.35rem;display:flex}.map-marker-action{border:1px solid var(--line);min-height:2rem;color:var(--text);white-space:nowrap;background:#fffffff7;border-radius:999px;justify-content:center;align-items:center;padding:.38rem .62rem;font-size:.8rem;font-weight:700;line-height:1;display:inline-flex;box-shadow:0 10px 24px #29201d24}.map-marker-action:hover{background:#fff}.map-point-delete{color:var(--danger);white-space:nowrap;will-change:transform;z-index:7;background:#fff3f0fa;border:1px solid #b5483047;border-radius:999px;align-items:center;gap:.32rem;padding:.4rem .62rem;font-size:.8rem;font-weight:700;line-height:1;display:inline-flex;box-shadow:0 10px 24px #29201d2e}.map-point-delete:hover{background:#fff}.ghost-button:disabled,.icon-button:disabled,.map-marker-action:disabled,.map-point-delete:disabled,.map-mode-pill:disabled,.map-icon-chip:disabled{opacity:.45;cursor:default}.status-card{gap:.95rem;display:grid}.gps-badge{border-radius:999px;align-items:center;gap:.6rem;width:fit-content;padding:.75rem .9rem;font-weight:700;display:inline-flex}.gps-badge__dot{background:currentColor;border-radius:50%;width:.7rem;height:.7rem}.gps-badge--excellent{color:var(--success);background:#1c8a6524}.gps-badge--good{color:var(--accent-soft);background:#1f6f631f}.gps-badge--warning{background:var(--warning-soft);color:var(--warning)}.gps-badge--muted{color:var(--text-soft);background:#5c746e1f}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;display:grid}.stat-card{border-radius:1rem;padding:.85rem}.projection-hint{color:var(--text-soft);font-size:.92rem}.icon-button,.ghost-button{border:1px solid var(--line);color:var(--text);background:#ffffffc7;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;display:inline-flex}.icon-button{width:2.45rem;height:2.45rem}.ghost-button{padding:.65rem .95rem}.icon-button:hover,.ghost-button:hover{background:#fff;border-color:#12463f4d}.icon-button.danger{color:var(--danger);background:#ffffffeb}.toast{z-index:40;border:1px solid #0000;border-radius:1rem;padding:.9rem 1rem;position:fixed;bottom:1.2rem;right:1.2rem;box-shadow:0 14px 36px #21362f2e}.toast--success{background:#f2fff8f5;border-color:#1c8a6540}.toast--error{background:#fff3f0f5;border-color:#b548303d}.toast--info{background:#f5fafff5;border-color:#12463f2e}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.28)}}@keyframes pendingFlash{0%,to{opacity:1}50%{opacity:.42}}@media (width<=1180px){.map-viewport{min-height:58vh}}@media (width<=720px){.app-shell{width:min(100%,100% - 1rem);padding:.7rem 0 1rem}.hero-card,.search-card,.status-card,.map-card{border-radius:1.25rem}.hero-card,.search-card,.status-card{padding:1rem}.map-card{padding:.85rem}.hero-card h1{max-width:none;font-size:2.25rem}.panel-title-row{flex-direction:column;align-items:flex-start}.result-item{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr 1fr}.map-toolbar,.map-stage-shell.is-fullscreen .map-toolbar{justify-content:flex-start}.map-editor-panel{border-radius:1rem;margin:.7rem 0 .8rem;padding:.7rem}.map-legend-panel{border-radius:.85rem;padding:.5rem}.map-legend-header{flex-direction:row;align-items:flex-start}.map-editor-heading{flex-direction:column;gap:.2rem}.map-mode-pill{min-height:2.3rem;padding:.55rem .82rem}.map-icon-chip{min-width:5rem;font-size:.72rem}.map-content{padding:.55rem}.map-viewport{min-height:52vh}}
