@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Manrope:wght@400;500;600;700&display=swap');
:root{--bg:#111c19;--panel:#192823;--panel2:#21312b;--line:#33453a;--text:#e5e4d5;--muted:#8fa397;--gold:#c7ae70;--green:#96bca4;color-scheme:dark;font:13px Manrope,system-ui,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:5px;padding:10px 12px;cursor:pointer;transition:background .15s}button:hover{background:#33483b;border-color:#64765b}button:disabled{opacity:.45;cursor:default}button.active{color:var(--gold);border-color:#9a8551;background:#353c2a}input,select{width:100%;padding:9px 10px;background:#15221d;border:1px solid var(--line);border-radius:4px;color:var(--text)}input:focus,select:focus,button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}label{display:block;color:var(--muted);margin:12px 0}label input,label select{margin-top:6px}.primary{background:var(--gold);color:#1b261e;border-color:var(--gold);font-weight:700}.primary:hover{background:#ddc58b}.wide{width:100%;margin-top:9px}.quiet{background:transparent;border-color:transparent;color:var(--muted)}.danger{color:#d69a86}header{height:86px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 32px;gap:28px}.brand{color:var(--text);text-decoration:none;display:flex;gap:12px;align-items:center;font-family:'Cormorant Garamond',Georgia,serif;font-size:25px;letter-spacing:3px}.sigil{font-size:47px;color:var(--gold)}.brand small{display:block;font:8px Manrope,system-ui;letter-spacing:2px;color:var(--muted);margin-top:4px}.session{margin-left:auto;display:flex;align-items:center;gap:18px;font-size:11px}#roleBadge{border:1px solid var(--line);padding:7px 10px;border-radius:20px}.connection:before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);margin-right:7px}.connection.off:before{background:#be7559}main{display:grid;grid-template-columns:240px minmax(420px,1fr) 274px;min-height:calc(100vh - 130px)}aside{padding:28px 22px;background:var(--panel)}.left{border-right:1px solid var(--line)}.right{border-left:1px solid var(--line)}.chapter,.eyebrow{font-size:9px;letter-spacing:1.6px;color:var(--gold);font-weight:700}.chapter{display:flex;justify-content:space-between}h1,h2,.boardTitle{font-family:'Cormorant Garamond',Georgia,serif}h1{font-size:35px;line-height:1.08;font-weight:500;margin:15px 0}h2{font-size:26px;font-weight:500;margin:0}.muted{color:var(--muted)}.small{font-size:11px;line-height:1.6}.intro{font-size:11px;line-height:1.7}.roundline{margin:28px 0;display:flex;align-items:center;justify-content:space-between;gap:12px}.roundline strong{display:block;font:39px 'Cormorant Garamond',Georgia;color:var(--gold)}.roundline button{font-size:10px;padding:10px}.sectionTitle{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:600;margin-bottom:14px}.sectionTitle span{font-size:9px;color:var(--muted);font-weight:400}.rosterItem{display:flex;text-align:left;align-items:center;gap:10px;width:100%;padding:11px 10px;margin:5px 0;background:transparent}.rosterItem.active{border-color:#6c7957;background:#2b3b2f;color:var(--text)}.rosterDot{width:28px;height:32px;display:grid;place-items:center;background:var(--c);color:#102019;border-radius:13px 13px 5px 5px;font-weight:700;font-family:Georgia}.rosterItem small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.turnMark{margin-left:auto;color:var(--gold);font-size:12px}.divider{height:1px;background:var(--line);margin:23px 0}.boardPanel{padding:23px 24px 0;min-width:0;background:radial-gradient(ellipse at 50% 35%,#25382f 0%,#17251f 68%)}.boardTop{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:8px}.boardTitle{display:block;font-size:22px;margin-top:4px}.hexInfo{font-size:8px;letter-spacing:1.1px;color:var(--muted)}#viewport{height:min(61vh,640px);min-height:360px;position:relative;overflow:hidden;border:1px solid #43523d;border-radius:7px;background:radial-gradient(ellipse,#435243,#1c2b24 75%)}#viewport canvas{display:block;width:100%;height:100%;touch-action:none}#labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}.tokenLabel{position:absolute;transform:translate(-50%,-50%);padding:3px 8px;font-size:10px;font-weight:600;color:#eee9d6;background:#111c19d9;border:1px solid #5c6650;border-radius:3px;white-space:nowrap}.tokenLabel.selected{border-color:var(--gold);color:var(--gold)}#boardHint{position:absolute;bottom:15px;left:50%;transform:translateX(-50%);padding:7px 13px;background:#13201bcc;color:#bfcabb;font-size:10px;border-radius:20px;pointer-events:none;white-space:nowrap}.compass{position:absolute;right:18px;top:18px;text-align:center;color:var(--gold);font:11px Georgia;pointer-events:none}.compass span{font-size:28px}.boardTools{display:flex;justify-content:space-between;gap:8px;margin-top:13px}.tools,.zoom{display:flex;gap:5px}.tools button{font-size:15px;padding:9px}.tools button span{font-size:10px;margin-left:4px}.zoom button{padding:8px 10px}.boardFoot{display:flex;justify-content:space-between;gap:8px;font-size:9px;color:var(--muted);margin:12px 0 25px}.journal{border-top:1px solid var(--line);padding:18px 0}.journal .sectionTitle{margin-bottom:10px}#log{max-height:155px;overflow:auto}.logItem{padding:8px 0;border-bottom:1px solid #2d3d33;display:flex;align-items:baseline;gap:10px;font-size:11px}.logItem time{font-size:9px;color:var(--muted);white-space:nowrap}.logItem b{font-size:9px;color:var(--gold)}.characterHead{display:flex;align-items:center;gap:12px;margin:18px 0 21px}.characterHead button{margin-left:auto;padding:6px}#portrait{width:47px;height:54px;display:grid;place-items:center;background:#668877;color:#18251e;font:30px Georgia;border-radius:21px 21px 5px 5px;border:2px solid #aec3a0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{padding:10px 6px;text-align:center;background:#14211b;border:1px solid var(--line);border-radius:4px}.stat span{font-size:9px;color:var(--muted);display:block}.stat strong{font:26px 'Cormorant Garamond',Georgia;display:block;margin-top:4px}.movement{background:#2c3c2e;padding:10px 12px;border:1px solid #45523b;margin-top:14px;border-radius:4px;font-size:11px;line-height:1.6}.actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.actions button{display:flex;align-items:center;gap:8px;font-size:18px;padding:11px 9px}.actions button span{font-size:11px}.resultTitle{margin-top:24px}#outcomes{display:grid;gap:7px}#outcomes button{text-align:left;font-size:11px;padding:11px 13px}#outcomes button:first-child{color:#b3d6b8;background:#263e2b}#outcomes button:last-child{color:var(--gold)}.note{font-size:10px;line-height:1.8;color:var(--muted);border-left:2px solid var(--gold);padding-left:12px;margin-top:17px}details summary{font-size:11px;color:var(--gold);cursor:pointer}details label{font-size:10px}details button{font-size:10px}footer{display:flex;justify-content:space-between;padding:15px 32px;border-top:1px solid var(--line);font-size:9px;letter-spacing:.6px}dialog{border:1px solid #68745b;background:var(--panel);color:var(--text);border-radius:9px;padding:26px;width:min(470px,92vw);box-shadow:0 24px 100px #0008}dialog::backdrop{background:#0009;backdrop-filter:blur(4px)}.formGrid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.dialogButtons{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.infoLink{font-size:11px;word-break:break-all;padding:12px;background:#112019;border:1px solid var(--line);border-radius:5px}.infoLink a{color:var(--green)}#infoContent p{color:var(--muted);line-height:1.8}#infoContent h2{margin-bottom:14px}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);border:1px solid var(--gold);padding:12px 20px;background:#26372d;box-shadow:0 8px 30px #0006;border-radius:5px;z-index:10;display:none;max-width:90vw}.guest .gm{display:none!important}#webglError{position:absolute;inset:0;padding:60px 30px;background:#17251f;text-align:center;line-height:1.8}#webglError[hidden]{display:none}.assetDrop{outline:3px dashed var(--gold)}
@media(min-width:1600px){main{grid-template-columns:270px minmax(420px,1fr) 310px}.left,.right{padding:32px 28px}}@media(max-width:1100px){header{padding:0 20px}main{grid-template-columns:190px minmax(320px,1fr) 230px}aside{padding:24px 15px}.boardPanel{padding:20px 15px 0}.tools button span{display:none}.hexInfo{display:none}.session{gap:7px}.connection{font-size:9px}}@media(max-width:800px){header{height:74px;padding:0 15px;gap:12px}.brand{font-size:20px}.brand small{font-size:6px}.sigil{font-size:35px}.session{margin-left:auto}#roleBadge{display:none}header .primary{font-size:10px;padding:9px}.connection{display:none}main{display:grid;grid-template-columns:1fr}.boardPanel{grid-row:1;padding:16px 12px 0}.left{grid-row:2;border-right:0;border-top:1px solid var(--line);padding:22px}.right{grid-row:3;border-left:0;border-top:1px solid var(--line);padding:22px}.left h1{font-size:28px}.left .intro,.left .chapter{display:none}#roster{display:flex;flex-wrap:wrap;gap:5px}.rosterItem{width:auto;min-width:130px;flex:1}.roundline{margin:10px 0}.roundline strong{font-size:30px}.stats{grid-template-columns:repeat(6,1fr)}.right .actions{grid-template-columns:repeat(4,minmax(0,1fr))}.right .actions button{padding:10px 4px;gap:4px;flex-direction:column}.right .actions button span{font-size:10px}#outcomes{grid-template-columns:1fr 1fr}#viewport{height:54vh;min-height:330px}.journal{padding-bottom:12px}.boardFoot{font-size:8px}.boardFoot span{max-width:50%}footer{padding:14px 18px}footer>span:last-child{display:none}#boardHint{font-size:9px;max-width:95%;white-space:normal;text-align:center}.right .divider{margin:15px 0}}

.turnControls{margin:-12px 0 24px}.turnControls>div{display:flex;gap:6px}.turnControls>div button{flex:1;padding:8px 5px;font-size:10px}.turnControls .wide{font-size:10px}.rosterItem.current{border:1px solid var(--gold);box-shadow:inset 3px 0 var(--gold)}.rosterItem.completed{opacity:.45}.rosterItem.completed.active{opacity:.7}.rosterItem.hiddenFigure small{color:#c5a1ce}.tokenLabel.current{border:2px solid var(--gold);color:var(--gold)}.tokenLabel.completed{opacity:.45}.tokenLabel.hiddenFigure{font-style:italic;opacity:.7}.movePreview{pointer-events:none;z-index:3;font-size:11px;padding:6px 10px;background:#122119ee}.movePreview[hidden]{display:none}.boardTools{flex-wrap:wrap}.tools{flex-wrap:wrap}.tools button{font-size:12px;padding:8px}.tools button span{font-size:9px}.zoom{margin-left:auto}.resources{margin-top:12px;display:grid;gap:7px}.resourceRow{display:flex;justify-content:space-between;align-items:center;gap:8px;background:#14211b;padding:9px;border:1px solid var(--line);border-radius:4px;font-size:10px}.resourcePips{color:var(--green);font-size:14px;letter-spacing:3px}.resourceEmpty{color:#6c7164}.movementAssign{padding-bottom:10px}.movementAssign label{font-size:10px}.actionRecording button{font-size:10px}.spendButtons{display:flex;gap:5px;margin-top:8px}.spendButtons button{flex:1;padding:8px 4px;font-size:9px}#blocks{padding-top:9px;color:var(--muted)}#blocks.multiple{color:#e2bd62}.check{display:flex;align-items:center;gap:8px;font-size:11px}.check input{width:auto;margin:0}.participant{display:flex;gap:8px;align-items:center;padding:7px 0;font-size:11px}.participantDot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.identityTitle{margin-top:15px}.sessionLink{display:block;padding:12px;margin:8px 0;border:1px solid var(--line);color:var(--text);text-decoration:none;border-radius:5px}.sessionLink small{display:block;color:var(--muted);margin-top:5px}.pingLabel{border-color:var(--c);color:var(--c);font-size:10px}#sessionDialog{width:min(600px,94vw)}#assetName{overflow-wrap:anywhere}#joinError:empty{display:none}
@media(max-width:800px){header{gap:7px}header #sessions{padding:8px;font-size:10px}.turnControls>div{max-width:300px}.turnControls .wide{max-width:300px}.tools button{padding:8px 7px;font-size:10px}.zoom button{padding:8px}.resources{grid-template-columns:1fr 1fr}.movementAssign{display:flex;gap:10px;align-items:end}.movementAssign label{flex:1}.movementAssign button{flex:1;margin:12px 0}.spendButtons button{font-size:10px}}

.logItem.undone{opacity:.45}.logItem.undone span{text-decoration:line-through}.pingLabel{pointer-events:none}

.orderControls>div{display:flex;gap:6px;margin-top:6px}.orderControls>div button{flex:1;padding:8px;font-size:10px}.orderControls .wide{font-size:10px}

@media(min-width:801px){.left,.right{height:calc(100vh - 86px);overflow-y:auto;position:sticky;top:0;scrollbar-width:thin}.left .sectionTitle,.right .sectionTitle{scroll-margin-top:12px}}
@media(max-width:800px){header .brand{font-size:16px;letter-spacing:2px;gap:7px}header .brand small{font-size:5px}header .sigil{font-size:30px}header #share{font-size:9px;padding:8px}header #sessions{font-size:9px;padding:8px}}

.movementAssign label{min-width:0}.movementAssign input,.movementAssign select{min-width:0}
