html,body{background:#000;height:100%;margin:0;overflow:hidden}#app{position:fixed;inset:0}#view{width:100%;height:100%;display:block}#overlay{pointer-events:none;position:absolute;inset:0}#overlay>*{pointer-events:auto}.loading{color:#d9d2c5;letter-spacing:.02em;background:#07060a;flex-direction:column;justify-content:center;align-items:center;gap:12px;font:15px/1.4 system-ui,sans-serif;display:flex;position:absolute;inset:0}.loading-title{font-size:18px}.loading-bar{background:#241f2a;border-radius:2px;width:240px;height:4px;overflow:hidden}.loading-bar>div{background:#c9a25a;width:0;height:100%;transition:width .15s}.loading-count{color:#8a8290;font-size:12px}.loading-error{color:#ff8a7a}.dev-panel{color:#cfc8d8;background:#0a090ec7;border-radius:6px;align-items:center;gap:10px;max-width:calc(100vw - 330px);padding:6px 10px;font:12px/1.3 ui-monospace,SFMono-Regular,Menlo,monospace;display:flex;position:absolute;top:8px;right:8px}.dev-panel[hidden]{display:none}.dev-panel button{font:inherit;color:#f2e6cf;cursor:pointer;background:#2c2533;border:1px solid #4a3f55;border-radius:4px;padding:2px 8px}.dev-panel button:hover{background:#3a3044}.label-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.token-label-anchor{pointer-events:none;width:0;height:0}.token-label{white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;letter-spacing:.02em;color:#efe8dc;background:#0c0a10b8;border:1px solid #ffffff1f;border-radius:999px;padding:1px 7px 2px;font:600 11px/1.3 system-ui,sans-serif;position:absolute;bottom:6px;left:0;transform:translate(-50%);box-shadow:0 1px 3px #00000073}.token-label--player{border-color:#4aa3ff73}.token-label--npc{border-color:#ff4a4a73}.tl-status{vertical-align:1px;align-items:center;gap:3px;margin-left:5px;display:inline-flex}.tl-status:empty{display:none}.tl-cond{letter-spacing:.03em;color:#1a1410;background:#d9b45e;border-radius:3px;padding:2px 3px;font:700 8px/1 system-ui,sans-serif;text-decoration:none}.tl-bar{background:#ffffff24;border-radius:3px;width:34px;height:5px;display:inline-block;overflow:hidden}.tl-bar i{background:#5fbf5a;height:100%;display:block}.tl-bar--hurt i{background:#d6b13c}.tl-bar--bad i{background:#e0603c}.tl-bar--down i{background:0 0}.tl-bar--down{background:#e03c3c80}.tl-hp{color:#cfc6b6;font-size:9px;font-weight:500}.combat-tracker{z-index:20;color:#e6dcc4;background:#14121cdb;border:1px solid #c9a22759;border-radius:8px;width:220px;padding:8px;font:12px/1.4 system-ui,sans-serif;position:absolute;top:48px;right:12px}.combat-tracker[hidden]{display:none}.combat-tracker:not(.combat-tracker--on){width:auto;padding:4px}.combat-tracker button{color:#f5e3a6;font:inherit;cursor:pointer;background:#3a2f12;border:1px solid #c9a227;border-radius:4px;padding:3px 9px}.combat-tracker button:disabled{opacity:.45;cursor:default}.ct-head{justify-content:space-between;align-items:baseline;margin-bottom:4px;display:flex}.ct-title{color:#c9a25a;letter-spacing:.06em;text-transform:uppercase;font-size:11px;font-weight:700}.ct-round{color:#9d94a6}.ct-list{max-height:40vh;margin:0;padding:0;list-style:none;overflow:auto}.ct-row{border-top:1px solid #ffffff0f;align-items:center;gap:4px;padding:2px 0;display:flex}.ct-row:first-child{border-top:0}.ct-mark{color:#e8c766;width:10px;font-size:9px}.combat-tracker .ct-name{text-align:left;color:inherit;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;flex:1;padding:0;overflow:hidden}.ct-player .ct-name{color:#9cc8ff}.ct-npc .ct-name{color:#ffb0a8}.ct-current{background:#c9a2271f}.ct-current .ct-name{font-weight:700}.ct-dead .ct-name{opacity:.55;text-decoration:line-through}.ct-init{text-align:right;color:#e3d6bd;min-width:26px}.combat-tracker button.ct-init{color:#e3d6bd;background:0 0;border:0;padding:0 2px}.combat-tracker button.ct-remove{color:#8a8290;background:0 0;border:0;padding:0 3px}.combat-tracker button.ct-remove:hover{color:#ffb4a8}.ct-turn{color:#cfc6b6;margin:6px 0}.ct-actions{gap:6px;display:flex}.ct-actions .ct-next{color:#1a1410;background:#c9a25a;flex:1;font-weight:700}.ap-combat{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 12px;display:flex}.ap-combat[hidden]{display:none}.ap-combat input[type=number]{color:#e3d6bd;width:52px;font:inherit;background:#241f2b;border:1px solid #4a4155;border-radius:4px;padding:1px 4px}.cr-label{color:#9d94a6;margin-right:4px}.cr-change{align-items:center;gap:4px;display:inline-flex}.cr-cond{position:relative}.cr-cond summary{cursor:pointer;color:#e3d6bd}.cr-cond-list{z-index:2;white-space:nowrap;background:#14121cf5;border:1px solid #c9a22759;border-radius:6px;grid-template-columns:repeat(3,max-content);gap:2px 12px;padding:8px;display:grid;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.cr-cond-list label{cursor:pointer}.toasts{z-index:40;pointer-events:none;flex-direction:column;gap:6px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.toast{color:#ffe2d8;background:#281212eb;border:1px solid #ff6e5a80;border-radius:6px;padding:6px 12px;font:13px/1.4 system-ui,sans-serif;transition:opacity .3s}.toast--leaving{opacity:0}.start-overlay{color:#d9d2c5;z-index:50;background:#07060ad1;flex-direction:column;justify-content:center;align-items:center;gap:18px;font:15px/1.4 system-ui,sans-serif;transition:opacity .4s;display:flex;position:absolute;inset:0}.start-overlay--leaving{opacity:0;pointer-events:none}.start-title{letter-spacing:.04em;color:#efe3c8;font-size:28px}.start-button{letter-spacing:.03em;color:#1a1410;cursor:pointer;background:#c9a25a;border:0;border-radius:6px;padding:13px 28px;font:600 16px/1 system-ui,sans-serif}.start-button:hover,.start-button:focus-visible{outline-offset:2px;background:#dcb86f;outline:2px solid #f2e6cf}.start-hint{color:#8a8290;font-size:12px}#overlay>.cine,#overlay>.cine-flash{pointer-events:none}#overlay.cine-on>.dev-panel,#overlay.cine-on>.gm-toolbar,#overlay.cine-on>.action-panel,#overlay.cine-on>.combat-tracker{visibility:hidden}.cine{z-index:20;position:absolute;inset:0;overflow:hidden}.cine-bar{background:#000;height:11vh;transition:transform .4s cubic-bezier(.4,0,.2,1);position:absolute;left:0;right:0}.cine-bar--top{top:0;transform:translateY(-100%)}.cine-bar--bottom{bottom:0;transform:translateY(100%)}.cine--letterbox .cine-bar{transform:translateY(0)}.cine-title{text-align:center;opacity:0;flex-direction:column;align-items:center;gap:10px;transition:opacity .8s;display:flex;position:absolute;top:66%;left:0;right:0;transform:translateY(-50%)}.cine--title .cine-title{opacity:1}.cine-title-text{letter-spacing:.08em;color:#f1e3c2;text-transform:uppercase;text-shadow:0 0 18px #ff8c3c59,0 2px 6px #000000e6;font:400 clamp(36px,6.2vw,84px)/1.05 Cinzel,Trajan Pro,Cormorant Garamond,Georgia,Times New Roman,serif}.cine-title-sub{letter-spacing:.12em;color:#cdbb98;text-shadow:0 1px 4px #000000e6;font:italic 400 clamp(15px,1.7vw,24px)/1.2 Cormorant Garamond,Georgia,Times New Roman,serif}.cine-title-sub:empty{display:none}.cine-flash{opacity:0;z-index:19;mix-blend-mode:screen;position:absolute;inset:0}.gm-toolbar,.action-panel{z-index:10;box-sizing:border-box;color:#d9d2c5;-webkit-user-select:none;user-select:none;background:#0a090ecc;border:1px solid #ffffff14;border-radius:8px;font:12px/1.3 system-ui,sans-serif;position:absolute;box-shadow:0 4px 16px #00000073}.gm-toolbar{flex-direction:column;gap:8px;width:304px;padding:8px;display:flex;top:8px;left:8px}.gm-toolbar button,.action-panel button,.gm-toolbar select,.action-panel select{font:inherit;color:#efe6d4;cursor:pointer;text-align:left;background:#241f2a;border:1px solid #3d3446;border-radius:4px;padding:4px 7px}.gm-toolbar button:hover:not(:disabled),.action-panel button:hover:not(:disabled){background:#332a3c}.gm-toolbar button.is-active,.action-panel button.is-active{color:#fff3da;background:#4a3a26;border-color:#c9a25a}.gm-toolbar button:disabled,.action-panel button:disabled,.gm-toolbar select:disabled,.action-panel select:disabled,.gm-toolbar input:disabled{opacity:.45;cursor:default}.gm-toolbar button:focus-visible,.action-panel button:focus-visible{outline-offset:1px;outline:2px solid #c9a25a}.gm-toolbar kbd,.action-panel kbd{color:#b9ad98;background:#ffffff12;border:1px solid #ffffff1f;border-radius:3px;margin-left:2px;padding:1px 4px;font:600 10px/1 ui-monospace,SFMono-Regular,Menlo,monospace}.tb-head{justify-content:space-between;align-items:center;display:flex}.tb-title{letter-spacing:.1em;text-transform:uppercase;color:#c9a25a;font-size:11px;font-weight:600}.gm-toolbar .tb-help-btn{text-align:center;border-radius:50%;width:22px;height:22px;padding:0;font-weight:700}.tb-grid{grid-template-columns:1fr 1fr;gap:4px;display:grid}.tb-grid button{white-space:nowrap;align-items:center;gap:3px;padding:4px 6px;display:flex}.tb-grid kbd{margin-left:auto}.tb-group{flex-direction:column;gap:4px;display:flex}.tb-label{color:#9d94a6;letter-spacing:.02em;justify-content:space-between;font-size:11px;display:flex}.tb-val{color:#e3d6bd;font-variant-numeric:tabular-nums}.tb-grid .tb-val{color:#c9a25a;font-size:11px}.tb-seg{gap:0;display:flex}.tb-seg button{text-align:center;border-radius:0;flex:1;margin-left:-1px}.tb-seg button:first-child{border-radius:4px 0 0 4px;margin-left:0}.tb-seg button:last-child{border-radius:0 4px 4px 0}.tb-seg button.is-active{position:relative}.tb-inline{align-items:center;gap:6px;display:flex}.tb-inline input{flex:1;min-width:0}.gm-toolbar input[type=range]{accent-color:#c9a25a;height:16px;margin:0}.tb-seq{color:#8a8290;flex-direction:column;gap:4px;display:flex}.tb-seq-btn:before{content:"▶";color:#c9a25a;margin-right:6px;font-size:9px}.tb-help{background:#0a090eeb;border:1px solid #ffffff1a;border-radius:8px;width:380px;max-height:calc(100vh - 32px);padding:10px 12px;position:absolute;top:0;left:calc(100% + 8px);overflow:auto;box-shadow:0 4px 16px #00000080}.tb-help[hidden]{display:none}.tb-help-title{letter-spacing:.08em;text-transform:uppercase;color:#c9a25a;margin:6px 0 4px;font-size:11px;font-weight:600}.tb-help-title:first-child{margin-top:0}.tb-help dl{grid-template-columns:112px 1fr;gap:4px 10px;margin:0;display:grid}.tb-help dt{white-space:nowrap}.tb-help dd{color:#cfc8d8;margin:0}.action-panel{flex-direction:column;align-items:center;gap:6px;width:max-content;max-width:calc(100vw - 32px);padding:8px 12px;display:flex;bottom:14px;left:50%;transform:translate(-50%)}.ap-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 16px;display:flex}.action-panel[hidden]{display:none}.ap-who{align-items:center;gap:8px;display:flex}.ap-portrait{color:#f1e3c2;background:#2a2330;border:2px solid #4aa3ffb3;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font:700 16px/1 Georgia,Times New Roman,serif;display:grid}.ap-portrait[data-side=npc]{border-color:#ff4a4ab3}.ap-name{color:#f1e7d4;font-size:14px;font-weight:600}.ap-target{color:#9d94a6}.ap-target span{color:#e3d6bd}.ap-control{color:#9d94a6;align-items:center;gap:6px;margin-top:2px;display:flex}.ap-control:empty,.ap-controller:empty{display:none}.ap-assign{color:#e3d6bd;font:inherit;background:#241f2b;border:1px solid #4a4155;border-radius:4px;max-width:160px;padding:1px 4px}.ap-controls{align-items:center;gap:6px;display:flex}.action-panel .ap-act{color:#1a1410;background:#c9a25a;border-color:#c9a25a;padding:5px 14px;font-weight:700}.action-panel .ap-act:hover:not(:disabled){background:#dcb86f}.ap-hint{color:#8a8290;text-align:center;font-size:11px}.ap-hint:empty{display:none}.online-badge{z-index:20;color:#d8cfb8;background:#14121cd1;border:1px solid #c9a22759;border-radius:6px;align-items:center;gap:8px;padding:4px 10px;font:12px/1.4 system-ui,sans-serif;display:flex;position:absolute;bottom:12px;left:12px}.online-badge.offline{color:#ffb4a8;border-color:#ff6e5a99}.dice-panel{z-index:20;color:#e6dcc4;background:#14121cdb;border:1px solid #c9a22759;border-radius:8px;width:270px;padding:8px;font:12px/1.4 system-ui,sans-serif;position:absolute;bottom:12px;right:12px}.dice-form{align-items:center;gap:6px;display:flex}.dice-expr{color:#f2e8cf;min-width:0;font:inherit;background:#15131c;border:1px solid #5a4f3a;border-radius:4px;flex:1;padding:4px 6px}.dice-secret{white-space:nowrap;color:#b9ae94}.dice-form button{color:#f5e3a6;cursor:pointer;background:#3a2f12;border:1px solid #c9a227;border-radius:4px;padding:4px 10px}.dice-error{color:#ffb4a8;min-height:0}.dice-error:empty{display:none}.dice-log{max-height:14em;margin:0 0 6px;padding:0;list-style:none;overflow:auto}.journal-title{color:#c9a25a;letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px;font-size:11px;font-weight:700}.journal-form{gap:6px;margin-top:6px;display:flex}.journal-text{color:#f2e8cf;min-width:0;font:inherit;background:#15131c;border:1px solid #5a4f3a;border-radius:4px;flex:1;padding:4px 6px}.journal-form button{color:#f5e3a6;cursor:pointer;background:#3a2f12;border:1px solid #c9a227;border-radius:4px;padding:4px 10px}.dice-log .j-message .j-text{color:#f2e8cf}.dice-log .j-combat{color:#e8c766}.dice-log .j-status,.dice-log .j-action{color:#cfc6b6}.dice-error{margin-top:4px}.dice-log li{border-top:1px solid #ffffff0f;padding:1px 0}.dice-log li:first-child{border-top:0}.dice-log li.secret{color:#c7b6e8}.dice-log .who{color:#c9a227}.dice-log .dice{color:#9e957f}.online-badge button{color:#f5e3a6;font:inherit;cursor:pointer;background:#3a2f12;border:1px solid #c9a227;border-radius:4px;padding:2px 8px}.start-button.start-button--secondary{color:#e8c766;box-shadow:none;background:#14121c99;border:1px solid #c9a227;margin-top:8px;padding:.45em 1.2em;font-size:.85em}.start-button.start-button--secondary:hover{background:#3a2f12d9}.start-online{color:#d8cfb8;flex-direction:column;align-items:center;gap:6px;margin-top:10px;font:13px/1.4 system-ui,sans-serif;display:flex}.start-account{color:#b9ae94}.start-link{color:#c9a227;cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.start-tables-title{color:#c9a227;letter-spacing:.05em;text-transform:uppercase;margin-top:4px;font-size:11px}.start-tables{text-align:center;margin:0;padding:0;list-style:none}.start-tables a{color:#f2e8cf}.start-discord{text-decoration:none;display:inline-block}.start-note{color:#8f8670;font-size:12px}.editor-panel{box-sizing:border-box;color:#e3d6bd;background:#0e0c12e6;border:1px solid #3a3145;border-radius:8px;flex-direction:column;gap:8px;width:250px;max-height:calc(100vh - 20px);padding:12px;font:13px/1.35 system-ui,sans-serif;display:flex;position:absolute;top:10px;left:10px;overflow:auto}.editor-panel .ed-title{color:#f2e6cf;font-size:15px;font-weight:600}.editor-panel .ed-field{color:#9d94a6;flex-direction:column;flex:1;gap:3px;font-size:12px;display:flex}.editor-panel input,.editor-panel select{font:inherit;color:#e3d6bd;background:#241f2b;border:1px solid #4a4155;border-radius:4px;padding:3px 6px;font-size:13px}.editor-panel input[type=number]{box-sizing:border-box;width:100%}.editor-panel button{font:inherit;color:#f2e6cf;cursor:pointer;background:#2c2533;border:1px solid #4a3f55;border-radius:4px;padding:4px 8px}.editor-panel button:hover:not(:disabled){background:#3a3044}.editor-panel button:disabled{opacity:.45;cursor:default}.editor-panel button.active{color:#1a1410;background:#c9a25a;border-color:#c9a25a}.editor-panel kbd{opacity:.7;font:10px ui-monospace,monospace}.editor-panel .ed-tools{grid-template-columns:1fr 1fr;gap:4px;display:grid}.editor-panel .ed-row{flex-wrap:wrap;gap:6px;display:flex}.editor-panel .ed-row>button{flex:1}.editor-panel .ed-hint,.editor-panel .ed-help,.editor-panel .ed-selection{color:#9d94a6;font-size:12px}.editor-panel .ed-selection:empty,.editor-panel .ed-status:empty{display:none}.editor-panel .ed-file summary{cursor:pointer;color:#c9a25a;margin-bottom:6px}.editor-panel .ed-file[open]{flex-direction:column;gap:6px;display:flex}.editor-panel .ed-try{color:#1a1410;background:#c9a25a;border-color:#c9a25a;padding:6px;font-weight:600}.editor-panel .ed-status{color:#b9d8a8;font-size:12px}.editor-panel .ed-status.ed-error{color:#ff8a7a}.editor-panel [hidden]{display:none!important}.editor-panel .ed-modes{border:1px solid #4a3f55;border-radius:6px;grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.editor-panel .ed-modes button{border:0;border-radius:0;padding:6px}.editor-panel .ed-tools button[hidden]{display:none}.editor-panel .ed-build,.editor-panel .ed-palette{flex-direction:column;gap:6px;display:flex}.editor-panel .ed-room{color:#c9a25a;font-size:12px}.editor-panel .ed-room:empty{display:none}.editor-panel .ed-group{text-transform:uppercase;letter-spacing:.06em;color:#9d94a6;margin-top:2px;font-size:11px}.editor-panel .ed-props{grid-template-columns:1fr 1fr;gap:4px;display:grid}.editor-panel .ed-props button{text-align:left;padding:4px 6px;font-size:12px}.ed-inspector{color:#e3d6bd;background:#0e0c12f0;border:1px solid #4aa3ff;border-radius:8px;flex-direction:column;gap:6px;width:210px;padding:10px;font:13px/1.3 system-ui,sans-serif;display:flex;position:absolute;box-shadow:0 4px 14px #00000080}.ed-inspector[hidden]{display:none}.ed-inspector .ed-insp-title{color:#f2e6cf;font-weight:600}.ed-inspector .ed-insp-row{align-items:center;gap:4px;display:flex}.ed-inspector .ed-insp-row>span:first-child{color:#9d94a6;flex:1;font-size:12px}.ed-inspector .ed-insp-check{align-items:center;gap:6px;font-size:12px;display:flex}.ed-inspector input[type=number]{width:58px;font:inherit;color:#e3d6bd;background:#241f2b;border:1px solid #4a4155;border-radius:4px;padding:2px 4px}.ed-inspector button{font:inherit;color:#f2e6cf;cursor:pointer;background:#2c2533;border:1px solid #4a3f55;border-radius:4px;padding:2px 8px}.ed-inspector button:hover{background:#3a3044}.ed-inspector .ed-insp-actions button{flex:1}.ed-inspector .ed-del{border-color:#7a3a33}.editor-panel>*{flex-shrink:0}.editor-panel .ed-terrain{flex-direction:column;gap:6px;display:flex}.editor-panel .ed-check{align-items:center;gap:6px;font-size:12px;display:flex}.editor-panel input[type=range]{accent-color:#c9a25a;width:100%}.tb-tokens .tb-inline{gap:6px;display:flex}.tb-preset{color:#e3d6bd;min-width:0;font:inherit;background:#241f2b;border:1px solid #4a4155;border-radius:4px;flex:1;padding:2px 4px}.tb-placing{color:#e8c766;margin-top:4px;font-size:11px}.tb-placing[hidden]{display:none}canvas.placing{cursor:crosshair}.ap-gm{justify-content:center;gap:6px;display:flex}.ap-gm[hidden]{display:none}.ap-gm button{padding:2px 8px;font-size:11px}
