:root{color-scheme:dark;--bg:#141b1d;--panel:#202a2b;--line:#425253;--text:#f1ecdc;--accent:#d4b975}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,sans-serif}header,nav{display:flex;gap:20px;align-items:center;flex-wrap:wrap;padding:16px 28px;border-bottom:1px solid var(--line)}header h1{font:32px Georgia,serif;margin:0}header p{margin:0;color:#b8c4be}header>div{margin-right:auto}nav{gap:12px}button,.file-button{background:#344546;color:var(--text);border:1px solid #617474;border-radius:6px;padding:9px 13px;cursor:pointer;font:inherit}button:hover,.file-button:hover{background:#486061}button:disabled{opacity:.45;cursor:default}input,select,textarea{background:#152022;color:var(--text);border:1px solid #637372;border-radius:4px;padding:7px;font:inherit;max-width:100%}input[type=checkbox]{accent-color:var(--accent)}#size{width:65px}.file-button input{display:none}main{display:grid;grid-template-columns:minmax(340px,1fr) minmax(350px,1fr);gap:24px;padding:24px;max-width:1500px;margin:auto}section{background:var(--panel);padding:20px;border:1px solid var(--line);border-radius:10px}h2,h3{font-family:Georgia,serif;color:var(--accent)}h2{margin-top:0}.section-title{display:flex;justify-content:space-between;align-items:center}#grid{display:grid;gap:4px}#grid button{aspect-ratio:1;min-width:0;padding:0;font-size:clamp(13px,2vw,22px);border-color:#4d6356;border-radius:4px}.forest{background:#294738}.moor{background:#4b4e3a}.hills{background:#4a4946}.ruins{background:#514448}#grid .unseen{background:#263334;color:#899c97}#grid .player{outline:3px solid #efd296;outline-offset:-3px;color:#fff8d7}#grid .selected{box-shadow:inset 0 0 0 3px #8acbcc}.legend,#map-help,footer{color:#b2c0bb;font-size:14px}.directions,.actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}#objective{padding:12px;border-left:3px solid var(--accent);background:#162022;white-space:pre-wrap}#description{white-space:pre-wrap}#stats{color:#d4b975}#log{max-height:450px;overflow:auto;scroll-behavior:smooth}.entry{white-space:pre-wrap;border-top:1px solid var(--line);padding:14px 0}.entry:first-child{border:0}form>label{display:block;margin:12px 0}form>label>input:not([type=checkbox]),form textarea,form select{display:block;width:100%;margin-top:4px}.event-card{border:1px solid var(--line);padding:12px;margin:12px 0;border-radius:6px}.event-card label{display:block;margin:8px 0}.event-card textarea,.event-card input:not([type=checkbox]),.event-card select{width:100%}.event-card small{color:var(--accent)}#choices button{display:block;width:100%;text-align:left;margin:8px 0}#notice{font-size:14px;color:#d4b975}footer{padding:10px 28px 24px}body.editing #play-panel{display:none}body.editing #editor{display:block}#editor[hidden]{display:none}body.editing #editor[hidden]{display:block}@media(max-width:850px){main{grid-template-columns:1fr;padding:12px}header,nav{padding:12px}#grid button{font-size:20px}}:focus-visible{outline:3px solid #8acbcc;outline-offset:2px}

/* Pointy hexagons, with odd rows offset by half a tile. */
#grid{position:relative;display:block;isolation:isolate;}
#grid button{position:absolute;aspect-ratio:auto;min-width:0;padding:0;border:0;border-radius:0;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:var(--hex-edge,#597368);color:var(--text);font-size:clamp(12px,2vw,22px);outline:none;box-shadow:none;}
#grid button::before{content:"";position:absolute;inset:3px;clip-path:inherit;background:var(--hex-fill);}
#grid button span{position:relative;z-index:1;pointer-events:none;}
#grid .forest{--hex-fill:#294738;}
#grid .moor{--hex-fill:#4b4e3a;}
#grid .hills{--hex-fill:#4a4946;}
#grid .ruins{--hex-fill:#514448;}
#grid .unseen{--hex-fill:#263334;color:#899c97;}
#grid .player{--hex-edge:#efd296;color:#fff8d7;outline:none;}
#grid .selected{--hex-edge:#8acbcc;box-shadow:none;}
#grid button:hover,#grid button:focus-visible{--hex-edge:#f6e5b5;filter:brightness(1.2);z-index:2;}
.directions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-width:310px;margin:20px auto 14px;}

#inventory-panel{margin-top:24px;border-top:1px solid var(--line);padding-top:16px;}#inventory-panel summary{cursor:pointer;font:22px Georgia,serif;color:var(--accent);}#equipped-weapon{color:var(--accent);}#weapon-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}.weapon-card{padding:12px;background:#172123;border:1px solid var(--line);border-radius:6px;}.weapon-card strong,.weapon-card span{display:block;}.weapon-card span{font-size:14px;color:var(--accent);}.weapon-card p{font-size:14px;color:#b8c4be;margin:8px 0;}.weapon-card button{width:100%;}#story-items{padding-left:20px;}@media(max-width:420px){#weapon-list{grid-template-columns:1fr;}}

#open-inventory{background:#d4b975;color:#172123;border-color:#ead599;font-weight:600;}#inventory-dialog{width:min(700px,94vw);max-height:85vh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--accent);border-radius:12px;padding:24px;}#inventory-dialog::backdrop{background:rgba(0,0,0,.65);}#inventory-dialog #inventory-panel{margin:0;padding:0;border:0;}#inventory-dialog h2{margin-bottom:0;}#inventory-dialog .section-title{gap:15px;align-items:flex-start;}

#character-dialog{width:min(760px,94vw);max-height:85vh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--accent);border-radius:12px;padding:24px;}#character-dialog::backdrop{background:rgba(0,0,0,.65);}#character-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:18px 0;}#character-values div{padding:8px;background:#172123;border-radius:5px;}#character-training label{display:block;margin:10px 0;}#character-training select{margin-left:10px;}#dr-battle{padding:10px;border:1px solid var(--line);margin:12px 0;}

#party-dialog{width:min(650px,94vw);max-height:85vh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--accent);border-radius:12px;padding:24px;}#party-dialog::backdrop{background:rgba(0,0,0,.65);}.party-member{padding:12px;background:#172123;margin:8px 0;border-radius:6px;}.party-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px;border:1px solid var(--line);margin:12px 0;}#party-turn{font-size:14px;color:var(--accent);}

#battle-dialog,#scene-dialog{width:min(1100px,96vw);max-height:92vh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--accent);border-radius:12px;padding:24px;}#scene-dialog{width:min(800px,95vw);}#battle-dialog::backdrop,#scene-dialog::backdrop{background:rgba(0,0,0,.75);}.battle-layout{display:grid;grid-template-columns:1.4fr 1fr;gap:24px;}#battle-grid{position:relative;isolation:isolate;}#battle-grid button{position:absolute;border:0;padding:0;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:#425d4f;font-size:22px;}#battle-grid button::before{content:"";position:absolute;inset:3px;clip-path:inherit;background:#253a30;}#battle-grid button span{position:relative;z-index:1;}#battle-grid .active-unit{background:#e6c878;}#battle-grid .enemy-unit{background:#d87862;}#battle-grid button:hover,#battle-grid button:focus-visible{background:#94d8df;}#battle-log,#scene-text{white-space:pre-wrap;line-height:1.7;}#battle-log{max-height:330px;overflow:auto;font-size:14px;}#scene-text{margin:22px 0;font-family:Georgia,serif;font-size:19px;}#scene-choices button{display:block;width:100%;text-align:left;margin:10px 0;}@media(max-width:750px){.battle-layout{grid-template-columns:1fr;}}

#battle-grid .forest{--arena-fill:#294738;}#battle-grid .moor{--arena-fill:#4b4e3a;}#battle-grid .hills{--arena-fill:#4a4946;}#battle-grid .ruins{--arena-fill:#514448;}#battle-grid button::before{background:var(--arena-fill,#253a30);}

#dice-dialog{width:min(640px,94vw);max-height:85vh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--accent);border-radius:12px;padding:24px;}#dice-dialog::backdrop{background:rgba(0,0,0,.65);}#dice-form input{display:block;width:100px;}#dice-result{font-size:28px;}#dice-individual{overflow-wrap:anywhere;}#dice-history{max-height:260px;overflow:auto;padding-left:26px;}#dice-history li{padding:8px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere;}

#arena-dialog{width:min(1250px,96vw);max-height:94vh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--accent);border-radius:12px;padding:24px;}#arena-dialog::backdrop{background:rgba(0,0,0,.7);}.arena-layout{display:grid;grid-template-columns:1.3fr 1fr;gap:22px;}#arena-grid{position:relative;min-width:250px;}#arena-grid button{position:absolute;padding:0;border:1px solid #71917b;background:#294738;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);font-size:18px;}#arena-grid button:hover{background:#557b68;}#arena-dialog label{display:block;margin:10px 0;}#arena-dialog label input:not([type=checkbox]),#arena-dialog textarea,#arena-dialog select{display:block;width:100%;margin-top:4px;}#arena-size{max-width:90px;}#arena-note{color:var(--accent);}#npc-config{border:1px solid var(--line);padding:12px;}#ammo-summary{font-size:14px;color:var(--accent);overflow-wrap:anywhere;}@media(max-width:800px){.arena-layout{grid-template-columns:1fr;}}

#master-dialog{width:min(760px,90vw);max-height:85vh;overflow:auto}#master-dialog label{display:block;margin:12px 0}#master-dialog textarea{width:100%;box-sizing:border-box}#master-dialog select{max-width:100%}#master-dialog h3{margin-top:24px;border-top:1px solid #806849;padding-top:12px}#master-status{white-space:pre-wrap}

#starting-weapon-options label{display:block;margin:10px 0}#starting-weapon-options select{margin-left:10px}#sheet-weapons{color:var(--accent)}

#startup-status{padding:12px;background:#5a3024;color:#fff}#saves-dialog{width:min(650px,90vw);max-height:85vh;overflow:auto}#saves-dialog label{display:block;margin:12px 0}#character-setup-status{color:var(--accent)}#game-version{font-weight:bold}

#objective-dialog{width:min(640px,90vw);max-height:85vh;overflow:auto}#objective-location{color:var(--accent)}#objective-pending{font-weight:bold}

#grid button.objective-tile{outline:3px solid var(--accent);outline-offset:-5px;filter:brightness(1.2)}

#art-map-dialog{width:min(1100px,94vw);max-height:90vh;overflow:auto}#art-map-canvas{margin-top:15px;background:#e4d6ad;border-radius:12px}#art-map-canvas svg{display:block;width:100%;height:auto}#art-map-landmarks{columns:2;line-height:1.8}@media(max-width:600px){#art-map-landmarks{columns:1}}

#main-map-artwork svg{display:block;width:100%;height:auto}#main-map-artwork [data-map-tile]{cursor:pointer}#main-map-artwork [data-map-tile]:hover polygon,#main-map-artwork [data-map-tile]:focus polygon{stroke:#6a371c;stroke-width:3}#grid[hidden],#main-map-artwork[hidden]{display:none}

#survival-status{padding:10px 20px;color:var(--accent)}#gather-dialog{width:min(800px,94vw);max-height:88vh;overflow:auto}#gather-scene{font-size:72px;text-align:center;padding:25px;background:linear-gradient(#7897a1,#3c6248);border-radius:12px}#gather-result{white-space:pre-wrap;padding:12px;border:1px solid var(--line)}

#map-player-stats{margin-top:20px;padding:16px;background:var(--panel);border:1px solid var(--line);border-radius:10px}#map-player-stats h2{font-size:21px}#map-player-attributes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#map-player-attributes div{padding:8px;background:#172123;border-radius:5px}#map-player-equipment,#map-player-condition{color:var(--accent);font-size:14px}

#map-party-stats{display:grid;gap:14px;margin-top:18px}.party-stat-card{border-top:1px solid var(--line);padding-top:14px}.party-stat-card h3{margin:0 0 10px;color:var(--accent)}.party-attribute-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.party-attribute-grid div{padding:8px;background:#172123;border-radius:5px}.active-player-card> .section-title{border-left:3px solid var(--accent);padding-left:10px}

#story-csv-dialog{width:min(960px,94vw);max-height:90vh;overflow:auto}#story-csv-dialog label{display:block;margin:12px 0}#story-csv-dialog textarea{display:block;width:100%;box-sizing:border-box;font:13px monospace;margin-top:8px}#csv-preview{white-space:pre-wrap;overflow-wrap:anywhere;background:#172123;padding:14px;border-radius:6px}

#side-quest-dialog{width:min(850px,94vw);max-height:90vh;overflow:auto}.side-quest-card{padding:14px;margin:12px 0;border:1px solid var(--line);border-radius:8px}.side-quest-card p{white-space:pre-wrap}#side-quests-here{color:var(--accent)}
/* Shared illustrated terrain, with tactical markers above the scenery. */
#battle-landscape,#scene-art{overflow:hidden;border:1px solid #8c805d;border-radius:10px;margin:12px 0;background:#66775f}#battle-landscape svg,#scene-art svg{display:block;width:100%;height:auto}#battle-art-note{font-size:12px;color:#c5c7b4}#battle-grid{border-radius:12px;overflow:hidden;background-color:#64745d;box-shadow:inset 0 0 30px #182c26aa}#battle-grid button{background:#263a3129;color:#fff2cd;text-shadow:0 1px 3px #10201a;transition:background .15s}#battle-grid button::before{inset:1px;background:#d8d7ab14;border:1px solid #ebe2b333}#battle-grid .active-unit{background:#efd078b3}#battle-grid .enemy-unit{background:#ad4a3e8c}#battle-grid button:hover,#battle-grid button:focus-visible{background:#f6e6ae80}#battle-grid .unit-badge{display:inline-flex;align-items:center;justify-content:center;min-width:26px;min-height:26px;border-radius:50%;border:2px solid #f0db9a;box-shadow:0 2px 6px #10251e;background:#244e56;font-size:18px;font-weight:bold;line-height:1}#battle-grid .enemy-badge{background:#873b32;border-color:#efb29b}#battle-grid .npc-badge{background:#716039;border-color:#f2db98}#battle-grid .terrain-cell-mark{opacity:.35;font-size:14px}#battle-grid .obstacle-wall::before{background:repeating-linear-gradient(30deg,#5c5b52 0 6px,#aaa18a 7px 9px);opacity:.95}#battle-grid .obstacle-cover::before{background:repeating-linear-gradient(-25deg,#a48754aa 0 5px,#5c684b99 6px 10px)}#battle-grid .obstacle-wall .terrain-cell-mark,#battle-grid .obstacle-cover .terrain-cell-mark{opacity:1;color:#fff3d1;font-size:24px}#gather-scene{font-size:inherit;padding:0;overflow:hidden;border:1px solid #8c805d;background:#66775f}#gather-scene svg{display:block;width:100%;height:auto}dialog{background:var(--panel);color:var(--text);border:1px solid #8c805d;border-radius:12px}dialog::backdrop{background:#07130fe0}

#online-dialog{max-width:680px;width:calc(100% - 3rem)}
#online-dialog input{max-width:100%;box-sizing:border-box}
#online-invite{width:100%}
#online-banner{padding:.6rem 1rem;border:1px solid #a88a52;background:#f2e8d4;color:#30291f}
#online-requests button{margin-left:.5rem}

.role-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px;border:1px solid #b99550;background:#252e25}.role-bar[hidden]{display:none}#role-dialog{max-width:600px}#role-dialog label{display:block;margin:14px 0}#role-dialog input{display:block;width:100%;margin-top:5px}

.role-bar>span{max-width:100%}.role-bar label{display:inline-flex;flex-wrap:wrap;gap:6px;max-width:100%}.role-bar select{max-width:100%}

/* Keep the artwork controls visible alongside a bounded preview. */
#art-studio-dialog{width:min(1000px,94vw);max-height:90vh;overflow:auto;box-sizing:border-box}
#art-preview svg{display:block;width:100%;height:240px;max-height:30vh}
#art-studio-dialog .actions{display:flex;flex-wrap:wrap;gap:.65rem;align-items:end}
#art-studio-dialog input[type=range]{width:140px}
#art-drop{padding:20px;margin:12px 0;border:2px dashed #8aa89a;border-radius:7px;background:#22332d;text-align:center}#art-upload{display:block;margin-top:8px;width:100%}
#adventure-library-dialog,#my-games-dialog,#publish-adventure-dialog{width:min(940px,94vw);max-height:90vh;overflow:auto}#library-adventures section,#my-games-list section{margin:12px 0}#adventure-release-status{padding:0 28px;color:#d4b975}#publish-adventure-dialog label{display:block;margin:14px 0}#publish-adventure-dialog input,#publish-adventure-dialog textarea{display:block;width:100%;max-width:100%}#publish-adventure-dialog textarea{min-height:100px}.release-history{padding:12px;border-left:2px solid #d4b975}

#library-adventures p,#my-games-list p,.release-history p{overflow-wrap:anywhere}#library-adventures button,#my-games-list button,.release-history button{margin:5px}

/* Invitations present only the next joining step. */
#online-journey{margin:12px 0;border-color:var(--accent);background:#162022}
#online-journey h3{margin:0 0 8px}#online-journey p{margin:0}
#online-dialog.invitation>p:not(#online-status){display:none}
#online-dialog.invitation{max-width:650px}

#online-dialog.invitation #online-session{display:none}

/* Role restrictions remain readable on touch screens as well as on hover. */
.file-button[data-master-note],button[data-master-note],button[data-online-role-note]:not(#grid button):not(#battle-grid button),input[data-master-note],select[data-master-note]{opacity:1;background:#303638;color:#aeb7b7;border-color:#586263;cursor:not-allowed}
.file-button[data-master-note]::after,button[data-master-note]::after{content:attr(data-master-note)}button[data-online-role-note]::after{content:attr(data-online-role-note)}
.file-button[data-master-note]::after,button[data-master-note]::after,button[data-online-role-note]::after{display:block;font-size:11px;font-weight:400;line-height:1.4;color:#c1c8c8;margin-top:3px}
#grid button[data-online-role-note]::after,#battle-grid button[data-online-role-note]::after{display:none}

#main-map-artwork{max-width:100%;max-height:70vh;overflow:auto;overscroll-behavior:contain}main>section{min-width:0}#map-zoom-controls label{display:flex;align-items:center;gap:8px}

#online-battle-notice{margin:12px auto;padding:14px 20px;max-width:1452px;border:2px solid var(--accent);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}#online-battle-notice[hidden]{display:none}#online-battle-notice p{margin:0;font-weight:600}#open-online-battle{border-color:var(--accent)}
