/* Map Room v2 — Photoshop-style shell over the real detection engine. Glass, squared. */
:root{
  --abyss:#0a0f13; --ink:#0e1418; --ink3:#241c12;
  --cream:#ece0c2; --muted:#8fa3a8; --brass:#b8945a; --gold:#d7b878;
  --red:#b21e28; --green:#4f7a4c; --green2:#3d5f3a; --sea:#7ba7a3;
  --serif:Georgia,'Times New Roman',serif; --mono:ui-monospace,'SFMono-Regular',Menlo,monospace;
  --hair:rgba(184,148,90,.45); --glass-bg:rgba(10,16,20,.58); --shadow:0 14px 50px -22px #000;
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0}
body{background:var(--abyss);color:var(--cream);font-family:var(--serif);overflow:hidden}
.glass{background:var(--glass-bg);backdrop-filter:blur(9px) saturate(1.1);-webkit-backdrop-filter:blur(9px) saturate(1.1);border:1px solid var(--hair);box-shadow:var(--shadow)}
.eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin:0}
button{font:inherit;color:inherit}

.ps-app{display:flex;flex-direction:column;height:100vh;height:100dvh}

/* ---------- menu bar ---------- */
.ps-menubar{flex:0 0 auto;position:relative;z-index:50;display:flex;align-items:center;line-height:1;gap:6px;padding:6px 12px;
  background:var(--glass-bg);backdrop-filter:blur(9px) saturate(1.1);-webkit-backdrop-filter:blur(9px) saturate(1.1);border-bottom:1px solid var(--hair)}
/* width tuned so the map-name box's left edge lines up with the tool-rail divider (rail is 172px; 12 menubar pad + 154 + 6 gap = 172) */
.ps-brand{display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1;padding:0 10px 0 4px;margin-right:0;width:154px;flex:0 0 auto}
.ps-brand .eyebrow{color:var(--brass);font-size:8.5px;letter-spacing:.22em}
.ps-brand b{font-size:15px;font-weight:700;color:var(--cream);white-space:nowrap}
.ps-mapname{font:inherit;font-size:13px;color:var(--cream);background:rgba(0,0,0,.25);border:1px solid var(--hair);padding:6px 10px;width:160px;min-width:90px}
.ps-mapname::placeholder{color:var(--muted);font-style:italic}
.ps-mapname:focus-visible{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold)}
.ps-menu{position:relative}
.ps-menu>button{background:transparent;border:1px solid transparent;padding:6px 12px;font-size:14px;color:var(--cream);cursor:pointer}
.ps-menu>button:hover,.ps-menu.open>button{background:rgba(184,148,90,.14);border-color:var(--hair)}
.ps-dropdown{position:absolute;top:calc(100% + 4px);left:0;min-width:220px;z-index:40;padding:6px;display:none;
  background:#0a1014;border:1px solid var(--hair);box-shadow:var(--shadow)}
.ps-menu.open .ps-dropdown{display:block}
.ps-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:0;padding:9px 11px;font-size:14px;color:var(--cream);cursor:pointer}
.ps-item:hover:not(:disabled){background:rgba(215,184,120,.14)}
.ps-item:disabled{color:var(--muted);cursor:not-allowed}
.ps-item .key{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--muted)}
.ps-item .soon{margin-left:auto;font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--brass);border:1px solid var(--hair);padding:1px 5px}
.ps-sep{height:1px;background:var(--hair);margin:5px 4px}
.ps-divider{width:1px;height:22px;background:var(--hair);margin:0 6px}
.ps-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:32px;border:1px solid var(--hair);background:rgba(184,148,90,.08);color:var(--cream);cursor:pointer}
.ps-iconbtn:hover:not(:disabled){background:rgba(215,184,120,.16);border-color:rgba(215,184,120,.6)}
.ps-iconbtn:disabled{opacity:.4;cursor:not-allowed}
.ps-iconbtn svg{width:17px;height:17px}
.ps-check{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--cream);cursor:pointer;padding:6px 8px;white-space:nowrap}
.ps-check input{accent-color:var(--gold);width:15px;height:15px;cursor:pointer}
.ps-spacer{flex:1}
.ps-status{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--muted);white-space:nowrap;padding-right:6px}
.ps-app.has-map .ps-status{color:var(--gold)}

/* ---------- main ---------- */
.ps-main{flex:1 1 auto;min-height:0;display:flex}
.ps-tools{flex:0 0 172px;display:flex;flex-direction:column;gap:3px;padding:8px;
  background:var(--glass-bg);backdrop-filter:blur(9px) saturate(1.1);-webkit-backdrop-filter:blur(9px) saturate(1.1);border-right:1px solid var(--hair);overflow-y:auto}
.ps-tool{display:flex;align-items:center;gap:11px;padding:9px 10px;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;text-align:left}
.ps-tool:hover:not(:disabled){background:rgba(184,148,90,.1);color:var(--cream)}
.ps-tool.active{background:rgba(215,184,120,.14);border-color:var(--hair);color:var(--cream);box-shadow:inset 2px 0 0 var(--gold)}
.ps-tool:disabled{opacity:.45;cursor:not-allowed}
.ps-tool svg{width:22px;height:22px;flex:0 0 auto;stroke:currentColor;color:var(--brass)}
.ps-tool.active svg{color:var(--gold)}
.ps-tool .nm{flex:1;font-size:13.5px;line-height:1.1}
.ps-tool .key{font-family:var(--mono);font-size:10px;color:var(--muted);border:1px solid var(--hair);padding:1px 5px}
.ps-tool .soon{font-family:var(--mono);font-size:8px;letter-spacing:.1em;text-transform:uppercase;color:var(--brass);border:1px solid var(--hair);padding:1px 4px}
.ps-tools .ps-sep{width:100%;margin:6px 2px}
.ps-action[data-action="delete"]{margin-top:auto}
/* unsaved-changes dot on the Save button */
.ps-action[data-action="save"].unsaved .nm::after{content:"•";color:var(--gold);margin-left:7px;font-size:15px;line-height:0;vertical-align:middle}
.ps-tool.ps-danger:hover:not(:disabled){background:rgba(178,30,40,.14);color:#e8a2a8}
.ps-tool.ps-danger:hover:not(:disabled) svg{color:#d47a82}

.ps-work{flex:1 1 auto;min-width:0;display:flex;flex-direction:column}
.ps-options{flex:0 0 auto;display:flex;align-items:center;line-height:1;gap:16px;min-height:44px;padding:6px 16px;
  background:rgba(10,16,20,.4);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);border-bottom:1px solid var(--hair)}
.ps-options .otool{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.ps-options .ohint{font-size:13px;color:var(--muted)}
.ps-options .octrl{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--muted)}
.ps-options .octrl input[type=range]{width:150px;accent-color:var(--gold)}
.ps-options .octrl b{font-family:var(--mono);color:var(--gold)}

.ps-canvasrow{flex:1 1 auto;min-height:0;display:flex}
.ps-stage{flex:1 1 auto;min-width:0;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--abyss)}
#ps-bg{position:absolute;inset:0;width:100%;height:100%;z-index:0}
#ps-canvas{position:absolute;top:0;left:0;z-index:1;transform-origin:0 0;background:transparent;image-rendering:auto}
#ps-canvas.pixelated{image-rendering:pixelated;image-rendering:-moz-crisp-edges}
#ps-svg{position:absolute;top:0;left:0;z-index:2;transform-origin:0 0;pointer-events:none;overflow:visible;display:none}
#ps-water{position:absolute;inset:0;z-index:1;background:linear-gradient(160deg,#0d1a22,#0a1016);pointer-events:none;display:none}
.ps-options .obtn{font:inherit;font-size:12px;cursor:pointer;padding:5px 12px;border:1px solid var(--hair);background:rgba(184,148,90,.08);color:var(--cream)}
.ps-zoombar{position:absolute;left:14px;bottom:14px;z-index:5;display:none;align-items:center;gap:10px;padding:6px 8px 6px 13px}
.ps-app.has-map .ps-zoombar{display:flex}
.ps-zoombar .z{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--muted);white-space:nowrap}
.ps-zoombar .z b{color:var(--gold)}
.ps-zoombar .obtn{font:inherit;font-size:12px;cursor:pointer;padding:4px 11px;border:1px solid var(--hair);background:rgba(184,148,90,.08);color:var(--cream)}
.ps-zoombar .obtn:hover{background:rgba(215,184,120,.16)}
.ps-options .obtn:hover{background:rgba(215,184,120,.16)}
/* Tools use the normal cursor; grab/grabbing appears only while Space-panning or dragging (class-driven) */
.ps-app.tool-edge #ps-stage{cursor:crosshair}
.ps-app.space-pan #ps-stage,.ps-app.space-pan #ps-stage *{cursor:grab!important}
.ps-app.panning #ps-stage,.ps-app.panning #ps-stage *{cursor:grabbing!important}

/* dismiss-backdrop shown behind the upload prompt when a map is already loaded (New over a map) */
.ps-dropback{position:absolute;inset:0;z-index:3;background:rgba(6,9,12,.5);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}

/* empty-state upload prompt */
.ps-drop{position:relative;z-index:4;width:min(520px,90%);text-align:center;padding:34px 30px;border:1.5px dashed rgba(184,148,90,.6);
  background:var(--glass-bg);backdrop-filter:blur(9px) saturate(1.1);-webkit-backdrop-filter:blur(9px) saturate(1.1);box-shadow:var(--shadow)}
.ps-drop.over{border-color:var(--gold);border-style:solid}
.ps-drop .ic{font-size:40px}
.ps-drop h2{margin:12px 0 6px;font-size:23px;color:var(--cream)}
.ps-drop .sub{margin:0 auto 18px;max-width:42ch;color:var(--muted);font-size:14px;line-height:1.55}
.chips-lead{margin:0 0 9px;font-size:12px;color:var(--muted);font-family:var(--mono);letter-spacing:.05em}
.ps-chips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:22px}
.chip-rule{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--cream);background:rgba(184,148,90,.08);border:1px solid var(--hair);padding:5px 12px}
.chip-rule .sw{display:inline-block;width:13px;height:13px;border-radius:2px;border:1px solid rgba(184,148,90,.55)}
.sw-border{background:#111}
.sw-land{background:#fff}
.sw-water{background:#4f7fc0}
.ps-optrow{display:flex;gap:16px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:16px;font-size:13px;color:var(--muted)}
.ps-optrow select{font:inherit;font-size:13px;color:var(--cream);border:1px solid var(--hair);background:rgba(0,0,0,.25);padding:6px 9px;cursor:pointer}
.ps-optrow label.ck{display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.ps-optrow input[type=checkbox]{accent-color:var(--gold)}

/* buttons */
.gbtn{font-size:14px;font-weight:700;cursor:pointer;padding:10px 18px;border:1px solid var(--hair);background:rgba(184,148,90,.08);color:var(--cream)}
.gbtn:hover{background:rgba(184,148,90,.16)}
.gbtn.brass{background:linear-gradient(var(--gold),var(--brass));color:#241a0c;border-color:#a07d3e}
.gbtn.save{background:linear-gradient(var(--green),var(--green2));color:#f4ecdc;border-color:#31502e}
.gbtn.danger{background:linear-gradient(#c33040,#a51f2c);color:#fbeede;border-color:#7e1420}
.gbtn:active{transform:translateY(1px)}
.gbtn:focus-visible,.ps-tool:focus-visible,.ps-iconbtn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

/* right dock */
.ps-app.hide-dock .ps-right{display:none}
.ps-right{flex:0 0 284px;display:flex;flex-direction:column;overflow:hidden;
  background:var(--glass-bg);backdrop-filter:blur(9px) saturate(1.1);-webkit-backdrop-filter:blur(9px) saturate(1.1);border-left:1px solid var(--hair)}
.ps-panel{display:flex;flex-direction:column;min-height:0;flex:0 0 auto}
.ps-panel+.ps-panel{border-top:1px solid var(--hair)}
.ps-panel.terr{flex:1 1 auto;min-height:0}
.ps-phead{display:flex;align-items:center;justify-content:space-between;padding:11px 14px 9px}
.ps-phead .eyebrow{color:var(--brass)}
.ps-phead .ct{font-family:var(--mono);font-size:11px;color:var(--gold)}
.ps-list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 8px 10px}
.ps-li{display:flex;align-items:center;gap:10px;padding:7px 8px;cursor:pointer;border:1px solid transparent}
.ps-li:hover{background:rgba(184,148,90,.1)}
.ps-li.sel{background:rgba(215,184,120,.16);border-color:var(--hair)}
.ps-li .n{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:var(--ink3);border:1px solid var(--hair);color:var(--cream);display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:700}
.ps-li .nm{flex:1;font-size:14px;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ps-empty{padding:16px 14px;color:var(--muted);font-size:13px;font-style:italic;line-height:1.5}
.ps-props{padding:12px 14px 16px}
.ps-props .trow{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ps-props .n{flex:0 0 auto;width:26px;height:26px;border-radius:50%;background:var(--ink3);border:1px solid var(--hair);color:var(--cream);display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:700;font-size:13px}
.ps-props input{flex:1;font:inherit;font-size:15px;padding:7px 10px;border:1px solid var(--hair);background:rgba(0,0,0,.25);color:var(--cream)}
.ps-props input:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.ps-props .meta{font-family:var(--mono);font-size:11px;color:var(--muted);margin:0 0 12px 36px}
.ps-props .acts{display:flex;gap:8px}
.ps-props .acts .gbtn{flex:1;padding:8px}

/* tuning popup */
.overlay{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(6,9,12,.55);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.overlay.open{display:flex}
.win{width:min(400px,100%);background:#0a1014;border:1px solid var(--hair);box-shadow:var(--shadow);backdrop-filter:none;-webkit-backdrop-filter:none}
.win-head{display:flex;align-items:center;gap:10px;padding:15px 14px 13px}
.win-title{flex:1;text-align:center}
.win-title .t{font-size:16px;color:var(--cream);font-weight:700}
.iconbtn{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--brass);cursor:pointer;font-size:22px;line-height:1}
.iconbtn:hover{color:var(--gold);background:rgba(215,184,120,.1)}
.iconbtn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.win-body{padding:4px 20px 20px}
.win-body .field span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.win-body .field span b{color:var(--gold)}
.win-body input[type=range]{width:100%;accent-color:var(--gold)}
.win-body .sub{font-size:12px;color:var(--muted);margin:8px 0 0;line-height:1.5}
.win-body .ck{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--cream);margin-top:16px;cursor:pointer}
.win-body .ck input{accent-color:var(--gold)}

/* save/open dialogs */
.win-body .field input[type=password]{width:100%;font:inherit;font-size:14px;padding:9px 11px;border:1px solid var(--hair);background:rgba(0,0,0,.3);color:var(--cream);margin-top:4px}
.win-body .field input[type=password]:focus-visible{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold)}
.ps-maplist{max-height:min(52vh,420px);overflow-y:auto;margin:2px -6px 0}
.ps-maprow{display:flex;align-items:center;gap:10px;padding:10px;border-bottom:1px solid rgba(184,148,90,.18)}
.ps-maprow:hover{background:rgba(184,148,90,.08)}
.ps-maprow .mn{flex:1;min-width:0;font-size:15px;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ps-maprow .md{font-family:var(--mono);font-size:10px;color:var(--muted);white-space:nowrap}
.ps-maprow .mo{font:inherit;font-size:12px;cursor:pointer;padding:5px 12px;border:1px solid var(--hair);background:rgba(184,148,90,.1);color:var(--cream)}
.ps-maprow .mo:hover{background:rgba(215,184,120,.18)}
.ps-maprow .mdel{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--brass);cursor:pointer;padding:4px 6px;line-height:1}
.ps-maprow .mdel svg{width:17px;height:17px;stroke:currentColor;fill:none}
.ps-maprow .mdel:hover{color:#e0808a}

.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);z-index:80;padding:10px 18px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--gold);background:#0a1014;border:1px solid var(--hair);opacity:0;transition:opacity .25s;pointer-events:none}
.toast.show{opacity:1}

/* portrait guard */
.ps-rotate{display:none}
@media (orientation:portrait){
  .ps-app{display:none}
  .ps-rotate{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;height:100dvh;padding:32px;text-align:center}
  .ps-rotate .g{font-size:50px}
  .ps-rotate h1{font-size:22px;margin:0;color:var(--cream)}
  .ps-rotate p{max-width:24ch;color:var(--muted);line-height:1.5;margin:0}
}
@media (max-width:900px){.ps-tools{flex-basis:150px}.ps-right{flex-basis:250px}}
@media (prefers-reduced-motion:reduce){#ps-bg{display:none}}
