:root{color-scheme:dark;--bg:#171b17;--panel:#212821;--line:#3d4839;--text:#eef1e8;--muted:#aebca7;--accent:#b7d88d;--bar:65px;font-family:"Atkinson Hyperlegible Next",system-ui,sans-serif;color:var(--text);background:var(--bg)}
*{box-sizing:border-box}
body{margin:0;height:100dvh;overflow:hidden}
[hidden]{display:none!important}
button,input,select,textarea{font:inherit}
button{border:1px solid var(--line);background:#242d23;color:var(--text);border-radius:6px;padding:.6rem .8rem;cursor:pointer}
button:hover{border-color:var(--accent);color:var(--accent)}
button:disabled{opacity:.5;cursor:wait}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
header{height:var(--bar);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 20px;border-bottom:1px solid var(--line)}
header .brand{color:inherit;text-decoration:none;min-width:0}header .brand div{min-width:0}
#server-map-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.missing-map{padding:24px}.missing-map a{color:var(--accent)}
.brand{display:flex;align-items:center;gap:12px}.brand strong{font-size:1.2rem;letter-spacing:.13em}.brand small{display:block;color:var(--muted);font-size:.62rem;letter-spacing:.14em;margin-top:3px}.brand-mark{width:40px;height:40px;flex:none}
main{display:grid;grid-template-columns:270px minmax(0,1fr);height:calc(100dvh - var(--bar))}
aside{background:var(--bg);overflow:auto;border-right:1px solid var(--line);z-index:5}
.filter-body{padding:18px 14px}label{display:grid;gap:6px;font-size:.88rem;color:var(--muted)}
input:not([type=checkbox]),select,textarea{width:100%;color:var(--text);background:#121712;border:1px solid var(--line);border-radius:6px;padding:10px;min-width:0}#search{margin-top:7px}
.filter-title{display:flex;align-items:center;justify-content:space-between;margin:22px 0 8px;color:var(--muted);font-size:.8rem}.filter-title button{font-size:.76rem;padding:4px 7px}
.filter-presets{display:flex;flex-wrap:wrap;gap:5px}.filter-presets button{padding:6px 8px;font-size:.78rem}
.filter-presets button[aria-pressed=true],.map-tool[aria-pressed=true]{color:#182015;background:var(--accent);border-color:var(--accent)}
.location-filters{margin-top:16px;padding:8px 9px;background:var(--panel);border:1px solid var(--line);border-radius:6px}
.location-filters summary{cursor:pointer;font-size:.88rem}.location-filters summary span{float:right;max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}
.location-filters label{margin-top:9px}.location-filters button{font-size:.78rem;margin-top:6px}
.field-note{color:var(--muted);font-size:.82rem;margin:4px 0 8px}
.category,.result{display:flex;align-items:center;gap:9px;min-height:40px;padding:6px 9px;border-radius:6px;margin:3px 0;color:var(--text);background:var(--panel);text-align:left}
.category input{accent-color:var(--accent);margin-left:auto}.result{width:100%;justify-content:flex-start;font-size:.87rem}.category svg,.result svg{width:18px;height:18px;color:var(--icon);flex:none}.empty{color:var(--muted);font-size:.86rem}
#map{position:relative;overflow:hidden;touch-action:none;isolation:isolate;background:radial-gradient(ellipse,#333a30,#1c231c);cursor:grab}#map.dragging{cursor:grabbing}#map.placing{cursor:crosshair}
#world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}#tiles img{position:absolute;pointer-events:none;user-select:none;max-width:none}#markers{position:absolute;inset:0;z-index:10;pointer-events:none}
.pin-wrap{position:absolute;width:0;height:0;transform:scale(var(--inverse));transform-origin:0 0}.pin{pointer-events:auto;display:grid;place-items:center;position:absolute;left:-16px;top:-32px;width:32px;height:32px;padding:0;border-radius:9px 9px 9px 2px;border:2px solid var(--icon);background:#1b231b;color:var(--icon);box-shadow:0 2px 7px #0008}.pin svg{width:19px;height:19px}.pin[aria-pressed=true]{outline:2px solid #fff;outline-offset:2px;z-index:2}
#geometry{position:absolute;inset:0;width:100%;height:100%;z-index:6;pointer-events:none;overflow:hidden}
#map-guides{position:absolute;inset:0;width:100%;height:100%;z-index:11;pointer-events:none;overflow:hidden}
#map-labels{position:absolute;inset:0;pointer-events:none;z-index:9}
.map-label,.map-label:hover{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;font-weight:750;line-height:1.15;padding:2px 3px;border:0;background:transparent;color:#000;pointer-events:auto;text-shadow:0 0 2px #fff,0 0 3px #fff}
.map-label{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.region-title{pointer-events:auto;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.region-title text{fill:#17241d;stroke:#fbf8e4;stroke-linejoin:round;paint-order:stroke;font-weight:750}
#map.dragging :is(.map-label,.region-title){cursor:grabbing}
#map.placing :is(.map-label,.region-title){pointer-events:none}
.category-heading{display:flex;align-items:center;gap:4px}.category-heading .category{flex:1;min-width:0}
.category-expand{padding:5px 7px;min-width:31px;align-self:stretch;margin:3px 0}
.category-expand[aria-expanded=true]{color:var(--accent)}.category-types{padding-left:13px}
.category-type{min-height:33px;font-size:.8rem;background:transparent}
#object-preview{display:block;width:100%;height:100px;background:#e0ddc8;border-radius:6px}
#object-preview[hidden]{display:none}
.map-glyph{width:19px;height:19px;object-fit:contain;flex:none;display:inline-block;vertical-align:middle}
.pin.landmark-pin{top:-16px;left:-16px;background:#2c2319}.landmark-pin .map-glyph{width:23px;height:23px}
.radiation-filter>span:first-child{font-size:1.2rem;color:#ffa28e;line-height:1}
.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tool-grid button{text-align:left;min-height:46px}
.editor-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.editor-row span{min-width:0;overflow-wrap:anywhere}.editor-row button{flex:none;font-size:.8rem}
#catalog-dialog form+form{border-top:1px solid var(--line);padding-top:12px;margin-top:16px}
#catalog-dialog h3{font-size:.95rem;margin:8px 0;color:var(--accent)}
.map-top button{pointer-events:auto}
.map-top .map-tool{padding:6px 8px;font-size:.77rem;white-space:nowrap}
#undo-vertex,#finish-shape{padding:5px 9px;font-size:.77rem}
#map.placing .pin{pointer-events:none}#cancel-placement{pointer-events:auto;padding:5px 9px;font-size:.77rem}
.map-top{position:absolute;inset:12px 12px auto;display:flex;gap:8px;align-items:flex-start;pointer-events:none}#status:not(:empty),#coords{background:#171b17ec;border:1px solid var(--line);border-radius:5px;color:var(--text);font-size:.77rem;padding:7px 9px}#coords{position:absolute;bottom:12px;left:12px;pointer-events:none;font-variant-numeric:tabular-nums}
.controls{position:absolute;right:12px;top:55px;display:grid;gap:5px}.controls button{width:43px;height:43px;font-size:1.3rem;padding:0;box-shadow:0 2px 8px #0006}#filters-toggle{display:none}
#card{position:absolute;right:65px;top:55px;width:min(320px,calc(100% - 82px));max-height:calc(100% - 104px);overflow:auto;touch-action:pan-y;cursor:auto;border:1px solid var(--line);border-radius:9px;padding:16px;background:var(--bg);box-shadow:0 10px 28px #0007}#card h2{font-size:1.14rem;margin:.6rem 0}#card .meta{color:var(--accent);font-size:.78rem;padding-right:32px}#card p{margin:.55rem 0;white-space:pre-wrap;overflow-wrap:anywhere}#card .dismiss{position:absolute;right:8px;top:8px;padding:3px 9px}#card img{width:100%;border-radius:5px;margin-top:8px}#card .actions{justify-content:flex-start;flex-wrap:wrap}
dialog{background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:10px;width:min(460px,calc(100% - 24px));max-height:calc(100dvh - 28px);padding:20px}dialog::backdrop{background:#0b100bc9}dialog h2{font-size:1.2rem;margin:0 0 12px}form label{margin:10px 0}.row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.actions{display:flex;gap:7px;justify-content:flex-end;margin-top:12px}.accent{background:var(--accent);color:#182015;font-weight:650}.message{color:#f0bd8b}#icon-preview svg{width:18px;height:18px;vertical-align:middle;color:var(--accent);margin-left:4px}
@media(max-width:720px){:root{--bar:58px}header{padding:0 10px}header button{font-size:.8rem}.brand-mark{width:33px;height:33px}main{display:block;position:relative}#map{height:100%}aside{display:none;position:absolute;inset:55px auto 12px 12px;width:min(288px,calc(100% - 70px));border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 24px #0008}aside.open{display:block}#filters-toggle{display:block;pointer-events:auto;white-space:nowrap;font-size:.8rem}#card{top:auto;right:10px;bottom:44px;width:min(400px,calc(100% - 20px));max-height:55%}.map-top{flex-wrap:wrap;padding-right:48px}}
