:root{font:14px/1.5 Georgia,Times New Roman,serif;color:#302e27;background:#c9bea4;color-scheme:light;--muted:#746c59;--line:#af9f80;--paper:#e5dac0}*{box-sizing:border-box}body{margin:0;height:max(1080px,100dvh);background-image:repeating-linear-gradient(0deg,#473a2105 0,#473a2105 1px,transparent 1px,transparent 4px)}#app{height:100%;display:flex;flex-direction:column}button,input,select,textarea{font:12px Courier New,monospace;color:inherit}button,.button{cursor:pointer;background:#e8ddc2;border:1px solid #8d7d60;padding:8px 12px;border-radius:0;box-shadow:1px 2px #0001;text-decoration:none;display:inline-block}button:hover,.button:hover{background:#f4e9cc}button:disabled{cursor:default;opacity:.5}button.active,button.selected{background:#48483b;color:#f7ecd2}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #a14f35;outline-offset:3px}input,select,textarea{padding:7px;background:#f0e7d0;border:1px solid var(--line);max-width:100%}input[type=number]{width:72px}input[type=checkbox]{width:auto}label{display:inline-flex;align-items:center;gap:7px;font:11px Courier New,monospace}header{height:65px;flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:0 24px;border-bottom:3px double #9f9174;background:#ded2b6;gap:15px}.brand{font:700 24px Georgia;letter-spacing:3px;color:inherit;text-decoration:none}.brand small{display:block;font:8px Courier New,monospace;letter-spacing:3px;margin-left:28px}.edition,.eyebrow{font:10px Courier New,monospace;letter-spacing:1.2px;color:var(--muted)}.header-actions{display:flex;align-items:center;gap:15px}.stamp{border:2px solid #96523d;color:#96523d;transform:rotate(-2deg);padding:3px 7px;font:9px Courier New,monospace}.error{background:#f0cfbc;color:#702b18;padding:9px 18px;border-bottom:1px solid #ac6041;font:12px Courier New,monospace;flex-shrink:0}.error button{float:right;padding:0 5px;background:none}.login{max-width:640px;margin:auto;padding:60px}.login h1{font-size:65px;line-height:1.05}.login>p{color:var(--muted)}.local-login{border-top:1px solid var(--line);margin-top:35px;padding-top:15px}main{display:grid;grid-template-columns:minmax(0,1fr) 345px;grid-template-rows:75px minmax(0,1fr);min-height:0;flex:1}.squad-strip{grid-column:1/-1;display:flex;align-items:center;gap:15px;background:#d4c6a7;border-bottom:1px solid var(--line);padding:9px 22px;min-width:0}.mission{min-width:130px;max-width:170px}.mission strong{display:block;line-height:1.15;margin-top:5px;font-size:15px}.squad-strip nav{display:flex;gap:8px;overflow-x:auto;flex:1;justify-content:flex-end}.squad-strip nav button{display:flex;align-items:center;gap:8px;background:none;border:1px solid transparent;box-shadow:none;text-align:left;padding:6px 9px;white-space:nowrap}.squad-strip nav button.selected{background:#e9dfc8;color:#302e27;border-color:#8a7b60}.squad-strip nav small{display:block;font-size:9px;color:var(--muted);margin-top:4px}.avatar{background:#61684d;color:#f4e5bd;padding:5px 9px;border:1px solid #414735;font:700 17px Georgia}.operation{display:flex;flex-direction:column;min-height:0;min-width:0;padding:15px 18px 8px}.map-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-shrink:0;margin-bottom:10px;min-height:48px}.map-heading h1{font:700 25px Georgia;margin:3px 0}.map-heading h1 small{font:10px Courier New,monospace;color:var(--muted);margin-left:12px}.actions{display:flex;gap:5px}.mapwrap{flex:1;min-height:280px;position:relative;background:#302f29;border:5px solid #615a48;outline:1px solid #a08f6f;box-shadow:3px 5px 10px #33291630;overflow:hidden}svg{display:block;width:100%;height:100%;touch-action:none;-webkit-user-select:none;user-select:none}.compass{position:absolute;top:15px;left:15px;font:25px Georgia;color:#eadcba;text-shadow:1px 1px #000}.compass small{display:block;font:8px Courier New,monospace;letter-spacing:2px;margin-top:5px}.zoom-controls{position:absolute;right:14px;top:14px;display:flex;gap:4px}.zoom-controls button{background:#e3d5b9eb}.map-legend{position:absolute;bottom:14px;left:12px;background:#25251fdf;border:1px solid #928568;color:#f0e3c7;font:10px Courier New,monospace;padding:8px 10px;max-width:calc(100% - 24px)}.map-labels text,.map-token text,.territories text{fill:#f3e4c1;paint-order:stroke;stroke:#29251f;stroke-width:2.5px;stroke-linejoin:round;font-family:Georgia;pointer-events:none}.map-token{cursor:grab}.map-token:active{cursor:grabbing}.map-object{cursor:pointer}.sight-rings{filter:drop-shadow(0 0 1px #000)}.territories text{font-size:12px}.loading{position:absolute;top:50%;left:40%;color:#e8d9b9;font:14px Courier New,monospace}.map-status{display:flex;align-items:center;justify-content:space-between;gap:15px;min-height:55px;flex-shrink:0}.map-status strong{display:block;font-size:13px}.map-status span{display:block;font:10px Courier New,monospace;color:var(--muted);margin-top:3px}.gm-tools{background:#d9caab;border:1px solid var(--line);padding:8px;flex-shrink:0;max-height:165px;overflow:auto}.tool-row,.draw-form{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.tool-row>input{width:130px}.tool-row button{padding:7px;font-size:10px}.draw-form{border-top:1px solid var(--line);padding-top:8px;margin-top:8px;font:11px Courier New,monospace}.draw-form input{width:160px}.draw-form input[type=checkbox]{width:auto}.battlefields{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex-shrink:0;padding:8px 0;max-height:90px;overflow:auto}.battlefield{display:inline-flex;gap:3px}.battlefield button{padding:5px 8px;font-size:10px}.muted{color:var(--muted)}.battlefields>.muted{font-size:11px}.personnel{margin:15px 15px 15px 0;padding:20px 16px;background:var(--paper);background-image:repeating-linear-gradient(0deg,transparent,transparent 27px,#9b8d7010 28px);border:1px solid #b2a183;box-shadow:2px 4px 8px #392f1a24;overflow:auto;min-height:0}.file-stamp{display:block;width:max-content;border:2px solid #955540;color:#955540;font:700 10px Courier New,monospace;letter-spacing:2px;padding:4px 10px;transform:rotate(-4deg);margin-bottom:23px}.sectionline{display:flex;justify-content:space-between;align-items:center;font:9px Courier New,monospace;gap:8px}.sectionline button{font-size:9px;padding:5px}.personnel h2{font:700 25px/1.1 Georgia;margin-bottom:8px}.role{font:12px Courier New,monospace;margin:8px 0 12px;color:var(--muted)}.stats{display:flex;justify-content:space-between;border-block:3px double var(--line);padding:14px 0;margin-top:20px;gap:8px}.stats b,.stats small{display:block}.stats b{font:700 20px Georgia}.stats small{font:8px Courier New,monospace;color:var(--muted);margin-top:5px}.personnel h3{font:700 11px Courier New,monospace;letter-spacing:1px;text-transform:uppercase;margin:20px 0 10px}.attribute{display:flex;justify-content:space-between;font:12px Courier New,monospace;padding:4px 0;border-bottom:1px solid var(--line)}pre{white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.7 Courier New,monospace}.sheet-details{font:12px/1.6 Georgia}.fine-print{font:10px/1.7 Courier New,monospace}details{border-top:1px solid var(--line);padding-top:8px;font-size:11px}summary{cursor:pointer}.list-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;font:11px Courier New,monospace}.setup{border:1px solid #9e6f3e;background:#ebd4a7;padding:10px 14px;margin-bottom:10px;flex-shrink:0}.setup form{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:5px 0}.setup small{font:10px Courier New,monospace;color:#705d40}footer{flex-shrink:0;height:32px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 22px;font:9px Courier New,monospace;color:var(--muted)}.modal{position:fixed;inset:0;z-index:10;width:min(780px,95vw);max-height:90vh;margin:auto;padding:24px;border:3px double #7f7056;background:#e7dcc1;color:#302e27;box-shadow:0 0 0 100vmax #1b1a14aa;overflow:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);margin-bottom:15px}.modal-header h2{font:25px Georgia}.modal form{margin:15px 0}.modal label{margin:8px 10px 8px 0}.modal h3{font-size:16px}.json-editor{width:100%;height:50vh;font:12px/1.5 Courier New,monospace;display:block;margin:10px 0}.link-output{display:block;width:100%;margin-top:12px}.modal select{max-width:100%}@media(max-width:1200px){main{grid-template-columns:minmax(0,1fr) 345px}.mission,.edition{display:none}.squad-strip{gap:8px;padding:9px 12px}.squad-strip nav{justify-content:flex-start}.squad-strip nav button{padding:5px;font-size:10px}.squad-strip nav small{font-size:8px}.map-heading h1 small{display:block;margin:5px 0 0}.map-heading .eyebrow{font-size:8px}.actions button{font-size:10px;padding:6px}.tool-row{gap:5px}.map-status>span{max-width:200px}.stamp{font-size:8px}.personnel{padding:16px 12px}.operation{padding:12px}.map-legend{font-size:8px}}@media(max-width:720px){body{height:auto;min-height:1080px}#app{min-height:1080px}header{height:auto;min-height:75px;padding:12px;flex-wrap:wrap}.brand{font-size:20px}.stamp{font-size:7px}main{display:block}.squad-strip{padding:12px;overflow:auto}.squad-strip nav{flex-wrap:nowrap}.operation{padding:12px}.mapwrap{height:600px;min-height:600px;flex:auto}.personnel{margin:12px;max-height:none}.gm-tools{max-height:none}.map-heading{gap:8px}.actions{flex-direction:column}.map-status>span{font-size:8px;max-width:160px}.setup form{align-items:flex-start;flex-direction:column}.battlefields{max-height:none}footer{height:auto;min-height:40px;flex-wrap:wrap;padding:10px}.login{padding:35px}.login h1{font-size:45px}.modal{padding:15px}}.modal-backdrop{position:fixed;inset:0;background:#1b1a1488;z-index:9}.modal{box-shadow:0 6px 35px #0006}.saving{position:absolute;bottom:50px;right:15px;z-index:2;background:#e4d6b8;padding:7px 11px;font:11px Courier New,monospace}.mapwrap[aria-busy=true] .map-token{cursor:wait}.sheet-record{font:12px/1.6 Georgia}.sheet-record p{margin:9px 0}.sheet-record p.bullet{padding-left:10px;border-left:1px solid #b9aa88}.sheet-record h4{font:700 11px Courier New,monospace;margin:18px 0 9px;text-transform:uppercase}.heavy-cover{font-size:8px!important;white-space:nowrap;color:#63583f!important}.map-object:focus-visible{outline:none;filter:drop-shadow(0 0 3px #fff0b9)}.sight-rings{pointer-events:none}.map-object image{filter:drop-shadow(0 1px 1px #000)}.map-token text{stroke-width:1.2px}.zone-review-dialog{width:min(1100px,96vw)}.zone-review-map{background:#25251f;margin:14px 0}.zone-review-map svg{height:auto;aspect-ratio:1024/888}.zone-review-map polygon{cursor:pointer}.zone-review-list{display:flex;gap:6px;flex-wrap:wrap}.zone-review-list button{border-left-width:5px;font-size:11px}.zone-review li{font-size:12px;margin:5px 0}.character-editor fieldset{border:1px solid var(--line);padding:14px;margin:18px 0}.character-editor legend{font:700 12px Courier New,monospace;padding:0 6px}.character-editor .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.character-editor label{display:flex;flex-direction:column;align-items:stretch;gap:6px;font-size:11px;margin:0!important}.character-editor input,.character-editor textarea{width:100%;max-width:100%}.character-editor input[type=number]{width:100%}.character-editor input[type=checkbox]{width:auto}.character-editor .checkbox-label{flex-direction:row;align-items:center}.attribute-form{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.inventory-editor{display:grid;grid-template-columns:minmax(0,1fr) 85px 85px auto;align-items:end;gap:10px;border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:15px}.inventory-editor .item-notes{grid-column:1/-1}.character-editor textarea{resize:vertical;margin-bottom:12px}.condition-list{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.condition-list>span{border:1px solid #a1835c;background:#d7bc8e;padding:3px 7px;font:11px Courier New,monospace}.inline-form{display:flex;gap:8px;align-items:center}.inline-form input{flex:1}.editor-submit{position:sticky;bottom:-24px;background:#e7dcc1;padding:12px 0;border-top:1px solid var(--line);margin-top:12px}.editor-intro{font-size:12px;color:var(--muted)}.roster-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 0;border-bottom:1px solid var(--line)}.roster-row small{display:block;color:var(--muted);font-size:11px}.squad-strip nav button.inactive{opacity:.6}.inventory-list{padding-left:16px;font-size:12px}.inventory-list li{margin:10px 0}.inventory-list p{margin:4px 0;color:var(--muted)}.equipped-label{font:9px Courier New,monospace;border:1px solid var(--line);padding:2px 4px;margin-left:6px}.public-notes{white-space:pre-wrap;font-size:12px}.map-object{cursor:grab}.map-object:active{cursor:grabbing}@media(max-width:720px){.character-editor .form-grid{grid-template-columns:1fr}.attribute-form{grid-template-columns:repeat(2,minmax(0,1fr))}.inventory-editor{grid-template-columns:1fr 75px}.roster-row{flex-wrap:wrap}}.tactical-tools{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:8px 0 2px;flex-shrink:0}.tactical-tools button{padding:5px 8px;font-size:10px}.tactical-tools label,.tactical-tools span{font:10px Courier New,monospace}.tactical-tools select{padding:4px;font-size:10px}.tactical-tools small{font:9px Courier New,monospace;color:var(--muted);margin-left:auto}.ruler-readout{font:700 12px Courier New,monospace;border:1px solid #a58c58;background:#e8d3a9;padding:4px 7px}.ruler-overlay text{fill:#ffebbf;paint-order:stroke;stroke:#28261f;stroke-width:1px;stroke-linejoin:round;font-family:Courier New,monospace}.tactical-grid-overlay{pointer-events:none}.ownership-zones .zone-label{fill:#f8edd3;paint-order:stroke;stroke:#302b24;stroke-width:2px;stroke-linejoin:round;font:14px Georgia;pointer-events:none}.zone-border{stroke-linejoin:round}.interactive-zone{cursor:pointer}.interactive-zone:focus-visible{outline:none}.interactive-zone:focus-visible .zone-fill{fill-opacity:.32}.zone-control-dialog{width:min(1360px,97vw)}.zone-control-intro{font-size:13px;color:var(--muted);margin:10px 0 15px}.zone-control-layout{display:grid;grid-template-columns:minmax(0,1fr) 245px;gap:20px;align-items:start}.zone-control-map{background:#302f29;border:3px solid #70634c}.zone-control-map svg{height:min(67vh,740px);width:100%}.zone-control-panel{padding:10px 0}.zone-control-panel h3{font:23px Georgia;margin:10px 0}.zone-owner-current,.zone-save-state{font:11px/1.5 Courier New,monospace}.zone-save-state{min-height:32px;color:var(--muted)}.zone-owner-buttons{display:flex;flex-direction:column;gap:7px}.zone-owner-buttons button{display:flex;align-items:center;gap:9px;text-align:left}.zone-owner-buttons i,.zone-control-list i{display:inline-block;width:12px;height:12px;border:1px solid #5b5647;flex-shrink:0}.zone-control-list{border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:4px;max-height:360px;overflow:auto}.zone-control-list button{display:flex;align-items:center;gap:7px;text-align:left;padding:7px;font-size:10px;box-shadow:none}.zone-control-list button span{flex:1}.zone-control-list small{font-size:8px;opacity:.8}@media(max-width:900px){.zone-control-layout{grid-template-columns:1fr}.zone-control-map svg{height:55vh}.zone-control-panel{display:grid;grid-template-columns:1fr 1fr;gap:8px 15px}.zone-control-panel>.eyebrow,.zone-control-panel>h3,.zone-control-panel>.zone-owner-current,.zone-control-panel>.muted{grid-column:1/-1}.zone-control-list{grid-column:2;grid-row:5/8;max-height:250px}.zone-owner-buttons,.zone-save-state{grid-column:1}}.personal-map-marker{cursor:pointer}.personal-map-marker text{fill:#f2c477;stroke:#29251e;paint-order:stroke;stroke-linejoin:round;font-family:Courier New,monospace}.personal-map-marker:focus-visible{outline:none;filter:drop-shadow(0 0 3px #ffe5aa)}.personal-marker-editor label{display:flex;flex-direction:column;align-items:stretch;gap:7px;margin:14px 0}.personal-marker-editor input,.personal-marker-editor textarea{width:100%}.personal-marker-editor .checkbox-label{flex-direction:row;align-items:center}.personal-marker-editor .checkbox-label input{width:auto}.marker-editor-actions{display:flex;gap:10px;margin-top:18px}.personal-marker-row{display:flex;align-items:center;gap:15px;border-bottom:1px solid var(--line);padding:14px 0}.personal-marker-row>div{flex:1;min-width:0}.personal-marker-row h3{margin:0 0 5px;font:18px Georgia;overflow-wrap:anywhere}.personal-marker-row p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted);font-size:12px}.marker-global-preference{margin:8px 20px 12px 0!important}.personal-marker-list>p{font-size:13px;color:var(--muted)}.tactical-tools input[type=checkbox]{margin:0}.marker-read-only p{white-space:pre-wrap}.personal-marker-row h3 small{font:9px Courier New,monospace;color:var(--muted);margin-left:6px}.coordinate-major-lines line{stroke:#eadfc4;stroke-opacity:.58;stroke-width:.85;vector-effect:non-scaling-stroke}.coordinate-grid-labels rect{fill:#302d25;fill-opacity:.82;stroke:#ad9974;stroke-width:.4;vector-effect:non-scaling-stroke}.coordinate-grid-labels text{fill:#f2e1bb;font-family:Courier New,monospace;font-weight:700;dominant-baseline:auto}.coordinate-readout{font:700 11px Courier New,monospace;color:#4d3a22;background:#e5cfa6;border:1px solid #a58c58;padding:4px 7px;min-width:64px;text-align:center;-webkit-user-select:text;user-select:text}.coordinate-enabled .compass{left:45px;top:32px}.coordinate-enabled .zoom-controls{top:32px}
