:root{color:#dfe7df;background:#0e1718;font-family:Manrope,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0;background:#0e1718}button,input,select{font:inherit}button{cursor:pointer}.app-shell{height:100dvh;overflow:hidden;display:grid;grid-template-rows:52px minmax(0,1fr);background:radial-gradient(circle at 49% 0%,#203536 0,#111c1d 42%,#0d1516)}.topbar{z-index:2;display:flex;align-items:center;justify-content:space-between;padding:0 18px;border-bottom:1px solid #2d4141;background:#122021e8;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand{display:flex;align-items:baseline;gap:12px;min-width:0}.wordmark{flex:none;color:#e8eee7;text-decoration:none;font:700 25px Fraunces,serif;letter-spacing:-.06em}.wordmark span{color:#d9bd63}#project-name{min-width:80px;max-width:240px;border:0;border-bottom:1px solid transparent;padding:3px 1px;color:#8fa099;background:transparent;font:500 10px DM Mono,monospace}#project-name:focus{outline:0;border-bottom-color:#cdb461;color:#e0e9df}.header-actions{display:flex;align-items:center;gap:13px}.text-button{border:0;padding:5px 1px;color:#aab8b0;background:none;font-size:11px}.text-button:hover{color:#fff}.export-button{border:1px solid #dbbf64;border-radius:3px;padding:7px 10px;color:#182021;background:#dbbf64;font-size:11px;font-weight:700}.export-button span{margin-left:5px}.view-switch{display:flex;padding:2px;border:1px solid #354849;border-radius:3px;background:#19292a}.view-switch button{border:0;border-radius:2px;padding:5px 7px;color:#81918a;background:transparent;font-size:10px}.view-switch button.active{color:#f0f3ed;background:#354849}.workspace{min-height:0;overflow:hidden;display:grid;grid-template-columns:58px minmax(0,1fr) 274px}.tool-rail{min-height:0;overflow-y:auto;padding:5px 6px;border-right:1px solid #2a3d3e;background:#122021}.rail-group{display:grid;gap:1px;padding:5px 0;border-bottom:1px solid #293b3c}.rail-group:last-child{border-bottom:0}.rail-group>span{display:none}.panel-kicker,.map-readout span{color:#71847d;font:500 8px DM Mono,monospace;letter-spacing:.12em;text-transform:uppercase}.tool{position:relative;display:grid;width:100%;min-height:27px;place-items:center;border:1px solid transparent;border-radius:3px;color:#91a199;background:transparent}.tool svg{width:15px;height:15px}.tool.active{border-color:#506765;color:#e2c969;background:#2a3e3e}.canvas-area{min-width:0;min-height:0;padding:14px;overflow:hidden}.canvas-wrap{position:relative;min-height:100%;overflow:hidden;background-image:linear-gradient(#203637 1px,transparent 1px),linear-gradient(90deg,#203637 1px,transparent 1px);background-size:24px 24px}.canvas-wrap canvas{display:block;width:auto;height:auto;image-rendering:pixelated;cursor:crosshair;touch-action:none}.canvas-wrap canvas[data-tool=pick]{cursor:copy}.canvas-wrap canvas[data-tool^=erase]{cursor:not-allowed}.canvas-wrap canvas[data-tool=place]{cursor:cell}.canvas-wrap canvas[data-tool=main-road],.canvas-wrap canvas[data-tool=small-road],.canvas-wrap canvas[data-tool=waterway-label]{cursor:crosshair}#world-layer{position:absolute;top:50%;left:50%;transform-origin:0 0}.empty-hint{position:absolute;z-index:3;top:50%;left:50%;transform:translate(-50%,-50%);padding:8px 12px;border:1px solid #405756;border-radius:3px;color:#c7d2c8;background:#1b2c2ddf;font-size:11px;pointer-events:none;transition:opacity .2s}.empty-hint.hidden{opacity:0}.brush-cursor{position:absolute;z-index:5;display:none;border:1px solid #ecdc85;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;mix-blend-mode:screen}.brush-cursor.visible{display:block}.tool-panel{position:relative;display:flex;min-height:0;flex-direction:column;overflow:hidden;border-left:1px solid #2a3d3e;background:#132223}.panel-section{display:none;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:14px 15px}.panel-section.active{display:block;flex:1 1 0}.panel-section header{margin-bottom:10px}.panel-section h2{margin:3px 0 0;color:#e5ede4;font:600 22px Fraunces,serif;letter-spacing:-.03em}.panel-note{margin:0 0 10px;color:#84958e;font-size:10px;line-height:1.45}.control-group{padding:12px 0 0;margin-top:12px;border-top:1px solid #2b3e3e}.control-group label,.label{display:flex;justify-content:space-between;color:#c1cbc2;font-size:10px}.control-group output{color:#ddc96e;font:500 9px DM Mono,monospace}.control-group input{width:100%;margin:8px 0 0;accent-color:#d9bd63}.control-group[hidden]{display:none}.shape-picker{display:flex;gap:5px;margin-top:8px}.shape{width:28px;height:26px;border:1px solid #3b5050;border-radius:3px;color:#8d9e97;background:#1b2d2e}.shape.active{border-color:#d9bd63;color:#e0c96d}.territory-create{display:grid;grid-template-columns:minmax(0,1fr) 30px;gap:4px}.territory-create select,.territory-create button{grid-column:span 1}.territory-create select{grid-column:1 / -1}.territory-create input,.territory-create button,.territory-create select,.place-create input,.place-create select,.semantic-form input,.semantic-form button{min-width:0;border:1px solid #3a5050;border-radius:3px;padding:6px;color:#dce5dc;background:#1a2c2d;font-size:10px}.territory-create input[type=color]{width:30px;height:29px;padding:2px}.territory-create button{border-color:#c9ae55;color:#e1c96d}.territory-list,.place-list,.semantic-list{display:grid;gap:4px;margin-top:10px}.territory-swatch{--territory-colour:#c88258;border:1px solid #3a5050;border-left:8px solid var(--territory-colour);border-radius:3px;padding:6px;color:#cbd6cc;background:#1a2c2d;text-align:left;font-size:10px}.territory-swatch.subdivision{margin-left:12px;border-left-style:dashed}.territory-swatch.active{border-color:#dec96e;color:#fff}.place-create{display:grid;gap:5px}.place-list{color:#a3b2aa;font-size:10px}.place-list button,.semantic-list button{width:100%;border:0;padding:4px 6px;border-left:2px solid #78968f;color:inherit;background:transparent;text-align:left;font-size:10px}.place-list .place-type{margin:8px 0 1px;color:#d5bf66;font:500 8px DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase}.semantic-form{display:grid;gap:5px;padding-top:10px;border-top:1px solid #2b3e3e}.semantic-form label{display:grid;gap:5px;color:#aebcb2;font-size:10px}.semantic-form.compact{grid-template-columns:1fr 1fr}.danger-button{color:#dfa19a!important}.map-readout{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-top:auto;border-top:1px solid #344949;background:#101d1e}.map-readout div{min-width:0;padding:9px 10px;border-right:1px solid #26393a}.map-readout strong{display:block;overflow:hidden;margin-top:3px;color:#c4d0c6;font-size:9px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.territory-swatch.subdivision{border-left:2px dashed #97a5a0}.roads-panel.active,.places-panel.active{display:flex;flex-direction:column}.roads-panel #road-list,.places-panel #place-list{flex:1 1 auto;min-height:0;max-height:clamp(150px,36vh,420px);overflow-y:auto;overscroll-behavior:contain}dialog{width:min(420px,calc(100vw - 30px));border:1px solid #526965;border-radius:5px;padding:0;color:#dfe7df;background:#182829;box-shadow:0 24px 80px #020707aa}dialog::backdrop{background:#071011ad}.new-map-form{padding:22px}.new-map-form h2{margin:4px 0 8px;font:600 26px Fraunces,serif}.new-map-form p{margin:0 0 18px;color:#a7b5ad;font-size:11px;line-height:1.45}.dimension-fields{display:flex;align-items:end;gap:8px}.dimension-fields label{display:grid;flex:1;gap:5px;color:#92a49d;font-size:10px}.dimension-fields input{width:100%;border:1px solid #415858;border-radius:3px;padding:8px;color:#e5ede5;background:#102021}.dimension-fields b{padding:8px 0;color:#70827a}menu{display:flex;justify-content:flex-end;gap:10px;margin:22px 0 0;padding:0}.help-form{padding:20px}.help-form header{display:flex;align-items:start;justify-content:space-between}.help-form h2{margin:3px 0 0;font:600 25px Fraunces,serif}.help-form dl{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;margin:18px 0 0;color:#aebeb4;font-size:11px}.help-form dt{color:#e1c96f;font:500 10px DM Mono,monospace}.help-form dd{margin:0}.render-dialog{width:min(1040px,calc(100vw - 34px));max-height:calc(100vh - 34px);overflow:hidden}.render-form{padding:20px}.render-form>header{display:flex;align-items:start;justify-content:space-between}.render-form h2,.place-picker h2{margin:3px 0 0;font:600 26px Fraunces,serif}.render-grid{display:grid;grid-template-columns:minmax(0,1fr) 275px;gap:18px;margin-top:16px}.render-preview-wrap{min-width:0}.render-preview-wrap canvas{display:block;width:100%;height:auto;cursor:crosshair;border:1px solid #3d5554;background:#0e191a}.render-preview-wrap p{color:#82958e;font-size:10px}.render-controls{display:grid;align-content:start;gap:9px;min-height:0;max-height:calc(100vh - 180px);overflow:auto;padding-right:3px}.render-controls>label,.render-controls fieldset>label{display:grid;gap:4px;color:#bdc9bf;font-size:10px}.render-controls select,.render-controls input[type=number]{width:100%;border:1px solid #3c5553;border-radius:3px;padding:6px;color:#e1e9e0;background:#102122}.crop-fields{display:grid;grid-template-columns:1fr 1fr;gap:5px}.crop-fields label{color:#96a79f;font-size:9px}.render-controls fieldset{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:0;border:1px solid #304646;padding:9px}.render-controls legend{padding:0 3px;color:#d9c46e;font:500 8px DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase}.render-controls fieldset>label{display:block;color:#aab9b0}.render-controls output{padding:7px;border:1px solid #415957;color:#e2ce75;font:500 10px DM Mono,monospace}.place-picker-button{border:1px solid #4a625f;border-radius:3px;padding:6px;color:#d7e1d8;background:#1a2d2d;text-align:left;font-size:10px}.place-picker{position:fixed;z-index:20;inset:calc(50% - min(42vh,360px)) calc(50% - min(38vw,430px));display:flex;flex-direction:column;min-height:0;border:1px solid #5b7270;border-radius:5px;padding:18px;color:#dfe7df;background:#172829;box-shadow:0 28px 80px #020707c9}.place-picker[hidden]{display:none}.place-picker>header{display:flex;justify-content:space-between}.place-picker-actions{display:grid;grid-template-columns:1fr auto auto;gap:6px;margin:14px 0 8px}.place-picker-actions input,.place-picker-actions button{border:1px solid #405957;border-radius:3px;padding:6px;color:#dce6de;background:#102122;font-size:10px}.render-place-options{display:grid;flex:1;min-height:0;gap:4px;overflow:auto;padding-right:3px}.render-place-options .place-type{margin-top:9px;color:#d4bf69;font:500 8px DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase}.render-place-options label{display:grid!important;grid-template-columns:auto 1fr auto;align-items:center;gap:5px;color:#b9c7bd;font-size:10px}.render-place-options select{padding:3px;border:1px solid #3d5553;border-radius:3px;color:#cfdbd1;background:#102122;font-size:9px}@media (max-width:800px){.workspace{grid-template-columns:59px minmax(0,1fr)}.tool-panel{display:none}.header-actions{gap:8px}.view-switch button:nth-child(n+3),#save-heightmap,#export-data{display:none}}@media (max-width:570px){.topbar{padding:0 11px}.wordmark{font-size:22px}.header-actions{gap:7px}.view-switch{display:none}.canvas-area{padding:8px}.tool-rail{padding:7px}}#location-overlay{position:absolute;z-index:4;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.roads-panel #road-list,.places-panel #place-list{max-height:none}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
