.illustrated-scene{display:flex;flex-direction:column;justify-content:flex-end;isolation:isolate;overflow:hidden;touch-action:pan-y}
.room-art-viewport{position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse,#483c2b,#100e0d);overflow:hidden}
.room-art-image{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .3s ease;transform-origin:center 42%}
.room-art-shade{position:absolute;inset:0;background:linear-gradient(#080a10a6,transparent 28%,transparent 50%,#0c0906eb 100%);pointer-events:none}
.room-art-message{position:absolute;left:20px;right:20px;top:30%;text-align:center;color:#d8c7a7;text-shadow:0 2px 5px #000;font:18px Georgia,serif}
.room-art-message:empty{display:none}.is-dark{background:#09090b}.is-foggy .room-art-image{filter:blur(6px) saturate(.4);opacity:.35}.art-unavailable .room-art-image{visibility:hidden}
.illustrated-exits{display:flex;justify-content:safe center;align-items:center;flex-wrap:nowrap;gap:7px;padding:8px 18px;height:60px;min-height:60px;overflow-x:auto;overflow-y:hidden;scrollbar-color:#84683e #21150d;z-index:1}
.illustrated-exits:not(:empty){background:#100c08d9;border-top:1px solid #84683e66}
.illustrated-exit{flex:0 0 auto;white-space:nowrap;text-transform:capitalize;font-size:14px;padding:5px 10px}
.room-cards{display:flex;gap:10px;overflow-x:auto;padding:8px 18px 18px;min-height:0;flex-shrink:0;scrollbar-color:#84683e #21150d}
.room-cards:empty{display:none}.npc-card{flex:0 0 132px;width:132px;position:relative;display:flex;flex-direction:column;align-items:stretch;text-align:left;overflow:hidden;padding:0;border:8px solid transparent;border-image:var(--frame) 12.5% fill / 1 / 0 stretch;background:#21160e;white-space:normal}
.npc-portrait{height:102px;width:100%;object-fit:cover;object-position:center 25%;background:#34271d}.npc-card-name{display:block;font:16px/1.15 var(--serif);padding:7px 7px 2px;color:#f1d6a4;overflow-wrap:anywhere}.npc-card-role{display:block;font:10px/1.4 Arial,sans-serif;padding:4px 7px 7px;color:#c6ae84}.card-object-icon{height:80px;display:grid;place-items:center;font-size:40px;color:#cfac68}
.world:has(.illustrated-scene){min-height:620px}.game:has(.illustrated-scene){grid-template-rows:minmax(620px,calc(100dvh - 122px - var(--console-height))) var(--console-height)}
.world:has(.illustrated-scene) .camera-bar{top:16px;bottom:auto;left:auto;right:14px;z-index:3}.world:has(.illustrated-scene) .camera-bar>span{display:none}
.world:has(.illustrated-scene) .room-heading{max-width:calc(100% - 160px);top:18px}.world:has(.illustrated-scene) .room-heading p{line-height:1.4}
.world:has(.illustrated-scene) .selected{bottom:210px;z-index:4}.world:has(.illustrated-scene) .login-note{bottom:70px}
@media(max-width:620px){.world:has(.illustrated-scene){height:620px;min-height:620px}.room-art-image{object-position:center}.world:has(.illustrated-scene) .room-heading{max-width:calc(100% - 105px)}.world:has(.illustrated-scene) .camera-bar{right:6px;top:8px}.camera-bar button{font-size:18px;padding:0 4px}.npc-card{flex-basis:116px;width:116px}.npc-portrait{height:86px}.illustrated-exits{gap:4px;padding:8px}.illustrated-exit{font-size:12px;padding:3px 6px}.room-cards{padding:6px 10px 12px}}
@media(prefers-reduced-motion:reduce){.room-art-image{transition:none}}
.item-art{width:64px;height:64px;object-fit:contain;border:1px solid #94713c;border-radius:4px;margin-bottom:8px}.npc-card>.item-art{width:100%;height:102px;border:0;margin:0;border-radius:0}.equipment-slot>.item-art{float:right;margin:0 0 8px 10px}#scene.illustrated-scene{touch-action:pan-y}
.world:has(.illustrated-scene) .selected{top:135px;bottom:auto}.illustrated-exits{flex-shrink:0}.room-cards{max-height:250px}
.loot-row>.item-art{flex:0 0 48px;width:48px;height:48px;margin:0}.loot-row>span{flex:1}

/* Resources occupy the former lists sidebar, leaving the console unobstructed. */
body:has(.resource-sidebar){padding-bottom:0}
.resource-sidebar{grid-row:1;overflow:visible;display:flex;flex-direction:column;gap:12px}
.resource-sidebar .character-name{margin:10px 0 0}
.resource-sidebar .orb-dock{position:static;transform:none;max-width:none;width:100%;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:space-evenly;gap:16px;padding:20px 10px;box-shadow:none;margin:0}
.resource-sidebar .orb-glass{width:90px;height:90px}
.resource-sidebar .orb-label small{display:inline;color:#e7c584;font-weight:bold}
.game:has(.resource-sidebar) .journal{grid-column:1/-1}
@media(max-width:620px){.resource-sidebar{order:1;display:flex;gap:8px}.game:has(.resource-sidebar) .journal{order:2}.resource-sidebar .orb-dock{flex-direction:row;gap:12px;padding:18px 8px}.resource-sidebar .orb-glass{width:78px;height:78px}.resource-sidebar .orb-label{font-size:11px}.resource-sidebar .orb-label small{display:block;margin:3px 0 0}.resource-sidebar .character{padding:8px 12px}.resource-sidebar .character-name{margin:4px 0}.resource-sidebar .orb-value{font-size:11px}}
#character-preview{height:220px;width:100%;position:relative;margin-top:12px;overflow:hidden;display:flex;justify-content:center}
#character-preview .character-portrait{display:block;height:100%;width:auto;max-width:100%;object-fit:contain;border:1px solid #9d7843;border-radius:4px;box-sizing:border-box;box-shadow:0 4px 16px #0008}
.game:has(#character-preview){grid-template-rows:minmax(780px,calc(100dvh - 122px - var(--console-height))) var(--console-height)}
@media(max-width:620px){#character-preview{height:160px}}
.window-drag-handle{cursor:grab;touch-action:none;user-select:none}.window-manipulating .window-drag-handle{cursor:grabbing}.movable-window>.window-resize-handle{position:absolute;right:0;bottom:0;width:24px;height:24px;padding:0;border:0;border-radius:0;background:#2b2015;color:#d9b66f;font:20px/1 Arial;cursor:nwse-resize;touch-action:none;z-index:5}.window-manipulating{user-select:none}.game-modal.movable-window #panel-content{flex:1;min-height:0}.game-modal.movable-window>footer{padding-right:34px}.selected.action-window{position:fixed;top:25vh;bottom:auto;left:50%;z-index:7;max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);overflow:auto;padding-bottom:26px}.action-window>.window-drag-handle{align-self:stretch;min-width:100px;padding:4px}.window-drag-handle:focus-visible,.window-resize-handle:focus-visible{outline:2px solid #e4bf71;outline-offset:-2px}
.scene-toggle-bar{max-width:1920px;margin:auto;display:flex;align-items:center;gap:14px;padding:8px 14px;color:#b9a47e;font-size:12px}.scene-toggle-bar button{font-size:13px;padding:5px 14px}.game.console-only:has(#character-preview){grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(720px,calc(100dvh - 180px))}.game.console-only .journal{height:auto;min-height:720px}.scene-toggle-bar span{line-height:1.4}@media(max-width:620px){.scene-toggle-bar{padding:6px;gap:8px;font-size:11px}.game.console-only .journal{height:max(720px,calc(100dvh - 160px))}}
.room-cycle-lighting{position:absolute;inset:0;pointer-events:none;opacity:0}.room-conditions{position:absolute;top:122px;left:24px;right:24px;display:flex;flex-wrap:wrap;gap:5px;z-index:2;pointer-events:none}.room-condition{font:12px/1.3 Georgia,serif;color:#ead7ad;background:#18130edb;border:1px solid #a47e455e;border-radius:3px;padding:5px 8px;text-shadow:0 1px 3px #000}.world:has(.room-conditions:not(:empty)) .selected{top:185px}@media(max-width:620px){.room-conditions{top:166px;left:10px;right:10px;gap:4px}.room-condition{font-size:11px;padding:4px 6px}}@media(prefers-reduced-motion:reduce){.room-cycle-lighting{transition:none!important}}
.game.console-only .journal{grid-row:1}body:not(.player-present) .resource-sidebar .character>*{display:none}body:not(.player-present) .resource-sidebar .orb-dock>*{display:none}body:not(.player-present) .resource-sidebar .character{min-height:318px}body:not(.player-present) .resource-sidebar .orb-dock{min-height:300px}.world:has(.illustrated-scene) .room-heading{pointer-events:auto}.world:has(.illustrated-scene) #room-caption{max-height:108px;overflow:auto;white-space:pre-line;color:#e0d2b8;text-shadow:0 1px 4px #000;background:#0e100a66;border-radius:4px;padding:5px 8px;line-height:1.45}.world:has(.illustrated-scene) #room-caption:empty{display:none}.room-conditions{top:205px}@media(max-width:620px){.room-conditions{top:248px}body:not(.player-present) .resource-sidebar .character{min-height:180px}body:not(.player-present) .resource-sidebar .orb-dock{min-height:124px}.world:has(.illustrated-scene) #room-caption{max-height:115px}}

.art-loading .room-art-image{filter:blur(18px) saturate(.5);opacity:.4}.npc-portrait-slot{display:block;height:102px;flex-shrink:0;background:linear-gradient(135deg,#352a20,#191510);overflow:hidden}.npc-portrait-slot .npc-portrait{display:block;opacity:0;transition:opacity .2s ease}.npc-portrait-slot .portrait-ready{opacity:1}@media(max-width:620px){.npc-portrait-slot{height:86px}}@media(prefers-reduced-motion:reduce){.npc-portrait-slot .npc-portrait{transition:none}}
.selected.action-window:has(.entity-details:not([hidden])){display:grid;grid-template-columns:minmax(0,1fr);width:min(560px,calc(100vw - 24px));gap:14px;padding:22px 24px 32px}.action-window:has(.entity-details:not([hidden])) #clear-selection{position:absolute;right:8px;top:8px}.action-window:has(.entity-details:not([hidden])) .window-drag-handle{padding-right:25px}.action-window:has(.entity-details:not([hidden])) #selection-actions{display:flex;flex-wrap:wrap;gap:8px}.entity-details{min-height:0;overflow:auto}.entity-detail-portrait{float:left;width:112px;height:136px;object-fit:cover;border:1px solid #94713c;margin:0 18px 12px 0;border-radius:5px}.entity-description{margin:0 0 16px;white-space:pre-line;font:16px/1.6 Georgia,serif;color:#e6d5b4}.entity-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:7px 16px;clear:both;margin:0;padding-top:12px;border-top:1px solid #84683e55;font-size:14px}.entity-facts dt{color:#b99a65}.entity-facts dd{margin:0;color:#eddec2}
.selected.action-window>.entity-details{display:block}
/* Combat effects are decorative and never capture input or delay commands. */
.combat-hud{position:absolute;right:16px;top:94px;z-index:2;width:min(255px,42%);padding:12px 14px;background:linear-gradient(135deg,#23180ee8,#100e0dd9);border:1px solid #91704588;border-left:3px solid #b68544;border-radius:5px;pointer-events:none;box-shadow:0 5px 20px #0005}.combat-hud strong{display:block;font:14px/1.4 Georgia,serif;color:#edc788}.combat-hud ol{list-style:none;padding:0;margin:8px 0 0}.combat-hud li{font:12px/1.45 Arial,sans-serif;color:#d3c4ae;margin:6px 0}.combat-hud li:first-child{color:#f6e5c7}.combat-feed-defeat{color:#d6b773!important}.npc-card.combat-target{outline:2px solid #ebaa55;outline-offset:-3px;box-shadow:0 0 17px #e4772944}.npc-condition{padding:0 7px 7px;font:10px/1.3 Arial,sans-serif;color:#c2bc94}.combat-fx-layer{position:fixed;inset:0;pointer-events:none;z-index:6;overflow:hidden}.combat-impact{position:absolute;pointer-events:none;border-radius:7px;animation:combat-ring .8s ease-out forwards;border:2px solid #dd9064;box-shadow:inset 0 0 25px #cf482455}.combat-impact>span{position:absolute;top:25%;left:50%;transform:translateX(-50%);font:bold 19px Georgia,serif;text-shadow:0 2px 5px #000,0 0 8px #000;color:#ffe2ac;white-space:nowrap;animation:combat-label .9s ease-out forwards;z-index:1}.combat-hit:after{content:'';position:absolute;left:15%;top:43%;width:70%;height:4px;background:#ffe4b7;box-shadow:0 0 10px #ed8451;transform:rotate(-35deg);animation:combat-slash .35s ease-out forwards}.combat-magic{border-color:#8faeed;box-shadow:inset 0 0 30px #768fee88}.combat-magic:after{transform:none;height:45%;width:45%;left:27%;top:27%;border:2px solid #c3dcff;background:transparent;border-radius:50%}.combat-block{border-color:#9bc9df;box-shadow:inset 0 0 25px #8daeca44}.combat-dodge{border:1px dashed #d6d2a8;box-shadow:none}.combat-defeat{border-color:#aa8750;box-shadow:none}.combat-defeated-card{filter:grayscale(1);animation:combat-fall .8s ease-in forwards}.combat-loot-arrival{animation:combat-loot .85s ease-out}.combat-defeat>span{color:#efc773}@keyframes combat-ring{0%{opacity:1}65%{opacity:.8}100%{opacity:0}}@keyframes combat-label{from{margin-top:10px;opacity:1}to{margin-top:-30px;opacity:0}}@keyframes combat-slash{0%{opacity:0}20%{opacity:1}100%{opacity:0}}@keyframes combat-fall{to{opacity:0;transform:translateY(22px) scale(.94)}}@keyframes combat-loot{from{box-shadow:0 0 24px #d5b353;filter:brightness(1.3)}to{box-shadow:none;filter:none}}@media(max-width:620px){.combat-hud{top:290px;right:10px;width:45%;padding:8px}.combat-hud li{font-size:10px}.combat-hud li:nth-child(n+3){display:none}.combat-hud strong{font-size:12px}}@media(prefers-reduced-motion:reduce){.combat-impact,.combat-impact>span,.combat-impact:after,.combat-defeated-card,.combat-loot-arrival{animation:none}.combat-impact:after{display:none}}
/* Fixed compass dock: absent exits leave their compass positions empty. */
.illustrated-scene>.illustrated-exits{display:grid;grid-template-columns:repeat(3,minmax(0,120px)) minmax(0,130px);grid-template-rows:repeat(3,38px);justify-content:center;gap:5px 8px;height:140px;min-height:140px;padding:8px 16px;overflow:hidden}.compass-slot{display:flex;min-width:0;gap:4px;overflow:auto;scrollbar-width:thin;align-items:stretch}.compass-slot>.illustrated-exit{flex:1 0 auto;max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;padding:4px 8px;font-size:12px}.room-combatants{display:flex;gap:28px;align-items:stretch;padding:8px 18px 12px;min-height:0;flex-shrink:0;z-index:1;max-height:250px}.room-combatants>.room-cards{flex:1;min-width:0;padding:0 0 5px;align-items:stretch}.player-scene-card{flex-shrink:0;border-color:transparent;align-self:stretch;box-shadow:0 0 15px #79985833}.player-scene-card .npc-portrait{object-position:center 15%}.combat-status{display:block;font:bold 10px/1.4 Arial,sans-serif;padding:2px 7px 7px;color:#e9b87b}.npc-card.in-fight{box-shadow:inset 0 0 20px #ae5d3233;outline:1px solid #b86c42;outline-offset:-3px}.npc-card.combat-target{outline:2px solid #ffd27c;box-shadow:0 0 17px #e4772944}.player-scene-card.in-fight{outline-color:#a8c977}.combat-particle{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--particle-color);box-shadow:0 0 7px 2px var(--particle-color);pointer-events:none;will-change:transform,opacity}.particle-outgoing{--particle-color:#78eb70}.particle-incoming{--particle-color:#ff4b45}.particle-other{--particle-color:#e8b763}@media(max-width:620px){.illustrated-scene>.illustrated-exits{grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,.85fr);padding:8px;gap:5px}.compass-slot>.illustrated-exit{font-size:10px;padding:3px}.room-combatants{gap:12px;padding:6px 10px 10px;max-height:228px}.room-combatants .npc-card{flex-basis:106px;width:106px}.room-combatants .npc-portrait{height:82px}.room-combatants .npc-card-name{font-size:14px}}@media(prefers-reduced-motion:reduce){.combat-particle{display:none}}
.room-combatants{gap:clamp(72px,13vw,180px)}
.room-combatants>.room-cards{justify-content:flex-end}
.combat-particle{box-shadow:0 0 5px #fff,0 0 13px 4px var(--particle-color),0 0 24px var(--particle-color)}
.combat-impact>span{font-size:25px;animation-duration:1.35s}
.combat-impact>.combat-damage{font:bold 40px Georgia,serif;color:var(--particle-color,#ffe2ac);-webkit-text-stroke:1px #241409;text-shadow:0 3px 3px #000,0 0 18px var(--particle-color);top:12%}
.combat-hit{border-width:3px;box-shadow:inset 0 0 38px var(--particle-color,#dd9064),0 0 25px #db8b4355}
.illustrated-scene>.illustrated-exits{width:49%;box-sizing:border-box;grid-template-columns:repeat(4,minmax(0,1fr));height:190px;min-height:190px;align-content:center;padding:10px 8px}
.learned-action-bar{position:absolute;right:12px;bottom:12px;width:calc(51% - 20px);height:166px;z-index:2;box-sizing:border-box;padding:9px 11px;background:#17120ce8;border:1px solid #97733e;border-radius:5px;display:flex;flex-direction:column;gap:6px;color:#ecd9b4}
.learned-action-bar[hidden]{display:none}.learned-action-bar header{display:flex;align-items:center;justify-content:space-between;gap:8px}.learned-action-bar header button{font-size:10px;padding:4px 7px}.learned-action-bar>small{font-size:10px;color:#c1aa86}.learned-action-list{overflow:auto;min-height:0;scrollbar-width:thin}.learned-action{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 8px;padding:6px 0;border-top:1px solid #84643e66}.learned-action>div{min-width:0}.learned-action>div>button{display:block;max-width:100%;font-size:12px;padding:4px 8px;white-space:normal;text-align:left}.learned-action small{display:block;font-size:10px;margin-top:4px;color:#cbb28c}.learned-action label{display:flex;align-items:center;gap:4px;font-size:11px}.learned-action input[type=checkbox]{accent-color:#9dcc60;width:15px;height:15px}.learned-action>input{grid-column:1/-1;min-width:0;width:100%;box-sizing:border-box;font-size:11px;padding:4px 6px;color:#eddbbb;background:#090806aa;border:1px solid #79613b}
@media(max-width:620px){.room-combatants{gap:54px}.illustrated-scene>.illustrated-exits{width:100%;height:140px;min-height:140px;margin-bottom:170px}.learned-action-bar{width:calc(100% - 20px);right:10px;height:155px;bottom:10px}.world:has(.illustrated-scene){height:820px;min-height:820px}.combat-impact>.combat-damage{font-size:30px}}

.room-combatants>.room-cards{justify-content:safe flex-end}
.combat-hit{animation-duration:1.4s}
.combat-fx-layer{z-index:10005;contain:layout style;pointer-events:none}
.learned-action-list .learned-action{grid-template-columns:minmax(0,1fr) auto;padding:8px;background:linear-gradient(115deg,#302719c9,#141313ed);border:1px solid #b5915145;border-radius:8px;gap:5px 8px;transition:border-color .2s,background .2s}
.learned-action:has(input:checked){border-color:#81bb99;background:linear-gradient(115deg,#274033b8,#141b17ed)}
.learned-action .combat-action-use{display:flex;align-items:center;gap:12px;text-align:left;padding:0;border:0!important;background:none!important;box-shadow:none!important;width:100%;min-width:0;text-transform:none}
.combat-action-use .skill-icon{width:64px;height:64px;flex-shrink:0;border-radius:9px;object-fit:cover;border:1px solid #d7b77d88;box-shadow:0 2px 7px #0009}
.combat-action-copy{display:flex;flex-direction:column;gap:6px;min-width:0}.combat-action-copy strong{font:17px/1.15 Georgia,serif;color:#ffe1ad;text-transform:capitalize}.combat-action-copy small{font:10px/1.4 Arial,sans-serif;color:#c6ba9e}
.combat-action-use:hover:not(:disabled) .skill-icon{filter:brightness(1.25);box-shadow:0 0 14px #edc47c66}.combat-action-use:disabled .skill-icon{filter:saturate(.35);opacity:.55}.combat-action-use:focus-visible{outline:2px solid #ffe1ad!important;outline-offset:4px}
.learned-action>details{grid-column:1/-1;margin-left:76px}.learned-action>label{align-self:center;font-size:11px}
.combat-impact{animation-duration:1.65s;border-color:var(--spell-color,var(--particle-color));background:radial-gradient(ellipse,transparent 35%,#ffe8ba12);box-shadow:inset 0 0 32px var(--spell-color,var(--particle-color))}
.combat-impact>span{animation:combat-number 1.65s ease-out forwards;font-size:28px;letter-spacing:.025em}
.combat-impact>.combat-damage{font-size:clamp(32px,3.5vw,52px);top:0;color:var(--particle-color);paint-order:stroke fill;-webkit-text-stroke:3px #17121b}
.combat-impact.combat-magic:after{border-color:var(--spell-color,#a8d7ff);box-shadow:0 0 28px var(--spell-color,#a8d7ff);animation:spell-bloom .75s ease-out both}
.combat-dodge,.combat-miss{box-shadow:none;border-style:dashed;border-color:#e6e6dc}
.combat-block,.combat-parry{border-color:#c3e9ff;box-shadow:inset 0 0 36px #92ceff99}
.combat-block:after,.combat-parry:after{content:'✦';position:absolute;inset:0;text-align:center;font-size:76px;color:#ddf4ff;text-shadow:0 0 25px #75baff;animation:spell-bloom .5s ease-out both}
.combat-cast{position:absolute;display:grid;justify-items:center;gap:3px;width:150px;transform:translate(-50%,-65%);animation:spell-reveal 2.2s ease-out both;text-align:center;filter:drop-shadow(0 3px 4px #000)}
.combat-cast .skill-icon{display:block;width:76px;height:76px;border-radius:50%;border:2px solid var(--spell-color);box-shadow:0 0 12px var(--spell-color),0 0 38px var(--spell-color);object-fit:cover}
.combat-cast strong{font:bold 17px/1.15 Georgia,serif;text-transform:capitalize;color:#fff5de;text-shadow:0 2px 4px #000,0 0 8px #000}
.combat-cast small{font:9px/1.2 Arial,sans-serif;text-transform:uppercase;letter-spacing:.22em;color:var(--spell-color)}
.spell-particle{border-radius:25%;filter:brightness(1.35)}
@keyframes combat-number{0%{opacity:0;transform:translate(-50%,15px) scale(.65)}12%{opacity:1;transform:translate(-50%,-5px) scale(1.15)}28%{transform:translate(-50%,-14px) scale(1)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-88px) scale(.9)}}
@keyframes spell-reveal{0%{opacity:0;transform:translate(-50%,-45%) scale(.65)}15%,70%{opacity:1;transform:translate(-50%,-65%) scale(1)}100%{opacity:0;transform:translate(-50%,-85%) scale(1.1)}}
@keyframes spell-bloom{from{opacity:1;scale:.5}to{opacity:0;scale:1.8}}
@media(prefers-reduced-motion:reduce){.combat-impact,.combat-impact>span,.combat-cast{animation:none}.combat-impact:after{display:none}.combat-cast{filter:none}}
.learned-action-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 10px;align-items:start}
.learned-action details{grid-column:1/-1;font-size:10px;color:#cbb28c}.learned-action summary{cursor:pointer}.learned-action details input{width:100%;box-sizing:border-box;min-width:0;background:#090806aa;color:#eddbbb;border:1px solid #79613b;padding:4px;font-size:11px}
@media(min-width:621px) and (max-width:1000px){.learned-action-list{grid-template-columns:minmax(0,1fr)}}

/* Keep the action panel anchored to the scene while it overhangs the chronicle. */
.world:has(.illustrated-scene){overflow:visible;z-index:7}
.illustrated-scene{overflow:visible}
.learned-action-bar{position:absolute;top:calc(100% - 178px);bottom:auto;height:clamp(400px,54dvh,560px);padding:14px;z-index:5;box-shadow:0 15px 40px #000b;background:linear-gradient(140deg,#261c13fa,#100d09fa);border:2px solid #a58149}
.learned-action-bar header strong{font-size:18px}.learned-action-bar header button{font-size:12px;padding:6px 9px}.learned-action-bar>small{font-size:12px;line-height:1.4}.learned-action{padding:10px 0;gap:8px}.learned-action>div>button{font-size:14px;padding:7px 10px}.learned-action small{font-size:11px;line-height:1.4}.learned-action label{font-size:12px}.learned-action details{font-size:11px}
@media(max-width:620px){.illustrated-scene>.illustrated-exits{margin-bottom:0}.learned-action-bar{top:calc(100% - 6px);bottom:auto;height:420px;max-height:65dvh}}

/* Stable window controls stay mounted while learned actions refresh. */
.learned-action-bar{padding-bottom:25px}.learned-action-bar>header{flex-shrink:0;cursor:grab;touch-action:none;user-select:none}.learned-action-bar>header:active{cursor:grabbing}.combat-panel-buttons{display:flex;align-items:center;gap:7px}.combat-panel-content{display:flex;flex-direction:column;gap:10px;flex:1;min-height:0;overflow:hidden}.combat-panel-content>small{font-size:12px;line-height:1.4;color:#c1aa86}.combat-panel-content>.learned-action-list{flex:1;min-height:0;align-content:start}.learned-action-bar.window-manipulating{z-index:8}
/* Reusable painted iron-and-bronze holder around the live liquid meter. */
.resource-sidebar .orb-dock{gap:4px;padding:12px 8px;background:radial-gradient(ellipse at center,#33281b99,#0d0a08cc);justify-content:space-evenly}
.resource-orb{--holder-size:160px;position:relative;display:block;width:var(--holder-size);height:calc(var(--holder-size) + 22px);flex-shrink:0;isolation:isolate}
.resource-orb::before{content:'';position:absolute;inset:0 0 auto;height:var(--holder-size);background:url('/assets/ui/orb-holder-gothic-v1.png') center/contain no-repeat;pointer-events:none;z-index:2;filter:drop-shadow(0 5px 5px #000b)}
.resource-sidebar .resource-orb .orb-glass{position:absolute;left:18.7%;top:calc(var(--holder-size)*.177);width:62.6%;height:calc(var(--holder-size)*.626);border:0;border-radius:50%;box-shadow:inset 0 0 20px #000,0 0 16px -5px var(--liquid);z-index:1}
.resource-orb .orb-value{inset:0;display:flex;align-items:center;justify-content:center;padding:0;margin:0;line-height:1;font-size:13px;letter-spacing:-.3px;color:#fff3d9;text-shadow:0 2px 3px #000,0 0 5px #000;transform:none}
.resource-orb .orb-label{position:absolute;top:var(--holder-size);left:-12px;right:-12px;text-align:center;font-size:12px;line-height:18px;letter-spacing:.02em}.resource-orb .orb-label small{font-size:10px}
.resource-orb.health{--liquid-light:#ff6d59;--liquid:#b72024;--liquid-dark:#350307}.resource-orb.magic{--liquid-light:#7ed9ff;--liquid:#2764c8;--liquid-dark:#081032}.resource-orb.stamina{--liquid-light:#b5ed8a;--liquid:#548d32;--liquid-dark:#102c12}
.resource-orb .orb-liquid{background:radial-gradient(ellipse at 38% 22%,var(--liquid-light),transparent 62%),linear-gradient(var(--liquid),var(--liquid-dark));box-shadow:inset 0 2px 4px #ffffff80,inset 0 -10px 16px #0007}
@media(max-width:620px){.resource-orb{--holder-size:clamp(84px,25vw,126px)}.resource-orb .orb-value{padding:0;font-size:10px}.resource-orb .orb-label{font-size:10px;left:-5px;right:-5px}.resource-sidebar .resource-orb .orb-label small{display:inline;margin-left:3px}.resource-sidebar .orb-dock{gap:4px;padding:12px 4px}}

.overland-map{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;transform-origin:center 49%;transition:transform .3s ease}.room-art-viewport:has(.overland-map:not([hidden])) .room-art-shade{background:linear-gradient(#080a1040,transparent 30%,#0c090640)}
.learned-action-list .learned-action.is-preparing{border-color:#72e5df;background:linear-gradient(110deg,#153f40ed,#16252aed);box-shadow:inset 3px 0 #88fff0,0 0 16px #51e1db24}
.learned-action.is-preparing .combat-action-use{opacity:1}.learned-action.is-preparing .combat-action-use:disabled .skill-icon{filter:none;opacity:1;border-color:#8cf8ec;box-shadow:0 0 15px #62dedb77}.learned-action.is-preparing .combat-action-copy strong{color:#bdfff2}
.learned-action-list{grid-auto-rows:max-content}
.learned-action-list .learned-action{position:relative;isolation:isolate;overflow:hidden}
.action-preparation{position:absolute;inset:0;z-index:1;pointer-events:none;border-radius:inherit;overflow:hidden}.action-preparation[hidden]{display:none}
.action-preparation-track{height:100%;width:100%}.action-preparation-track>i{position:relative;display:block;height:100%;width:0;background:linear-gradient(90deg,#318db626,#67ebda38,#c4ffe950);box-shadow:2px 0 12px #82ffeb66;transition:width .65s ease}.action-preparation-track>i:after{content:'';position:absolute;right:0;top:0;bottom:0;width:2px;background:#a9fff1aa}
@media(prefers-reduced-motion:reduce){.action-preparation-track>i{transition:none}}
.spell-projectile{position:absolute;width:52px;height:52px;margin:-26px 0 0 -26px;border-radius:50%;background:radial-gradient(circle,#fff9df 5%,var(--spell-color) 35%,transparent 70%);box-shadow:0 0 14px var(--spell-color),0 0 36px var(--spell-color),0 0 65px var(--spell-color);pointer-events:none;will-change:transform}
.spell-projectile .skill-icon{display:block;width:100%;height:100%;border-radius:50%;border:2px solid #ffefd2bb;object-fit:cover;filter:brightness(1.25)}
.spell-trail{position:absolute;width:7px;height:7px;margin:-3px 0 0 -3px;border-radius:50%;background:#fff7df;box-shadow:0 0 6px 2px var(--spell-color),0 0 16px 4px var(--spell-color);pointer-events:none;will-change:transform,opacity}
@media(prefers-reduced-motion:reduce){.spell-projectile,.spell-trail{display:none}}
.spell-field{position:absolute;pointer-events:none;overflow:hidden;border-radius:8px;background:radial-gradient(ellipse,transparent 35%,color-mix(in srgb,var(--spell-color) 18%,transparent));animation:spell-field-glow 2.5s ease-out both}
.spell-field-support{box-shadow:inset 0 0 32px color-mix(in srgb,var(--spell-color) 65%,transparent),0 0 22px color-mix(in srgb,var(--spell-color) 35%,transparent)}
.spell-field-area{border-radius:0;animation-duration:3.1s;background:radial-gradient(ellipse at 50% 70%,color-mix(in srgb,var(--spell-color) 42%,transparent),color-mix(in srgb,var(--spell-color) 12%,transparent) 80%);box-shadow:inset 0 0 100px color-mix(in srgb,var(--spell-color) 48%,transparent)}
.spell-field-area .spell-trail{background:var(--spell-color);box-shadow:0 0 7px 2px var(--spell-color),0 0 19px 5px color-mix(in srgb,var(--spell-color) 75%,transparent)}
.spell-field-area .spell-trail:nth-child(5n){background:color-mix(in srgb,var(--spell-color) 65%,white)}
@keyframes spell-field-glow{0%{opacity:0}15%,60%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.spell-field{animation:none}}
.sound-controls{position:relative;font:13px Georgia;color:#e4d1a5}
.combat-target-input{display:flex;gap:6px;margin-top:6px}.combat-target-input input{flex:1}
.combat-target-pick{font:24px/1 Georgia;min-width:34px;padding:3px 6px!important;color:#e6cd93}
.combat-target-pick.is-picking{outline:2px solid #9ad8c2;background:#29443c!important}
.learned-action-list .learned-action{grid-template-columns:minmax(0,1fr) 82px;gap:8px}
.learned-action .combat-card-controls{grid-column:2;grid-row:1;display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:4px;border-left:1px solid #a7864938;padding-left:8px}
.combat-card-controls .combat-auto-switch{position:relative;display:flex;justify-content:center;align-items:center;gap:6px;min-height:22px;cursor:pointer;font:11px Georgia;color:#dfcda9}
.combat-card-controls .combat-auto-switch:only-child{grid-column:1/-1}
.combat-auto-switch input[type=checkbox]{position:absolute;opacity:0;width:1px;height:1px}
.combat-switch-track{position:relative;width:34px;height:18px;flex-shrink:0;background:#161b18;border:1px solid #73644a;border-radius:12px;box-shadow:inset 0 1px 4px #0009;transition:background .15s,border-color .15s}
.combat-switch-track:after{content:'';position:absolute;left:3px;top:3px;width:10px;height:10px;border-radius:50%;background:#ae9f81;transition:transform .15s,background .15s}
.combat-auto-switch input:checked+.combat-switch-track{background:#2e6652;border-color:#8ec9ad}.combat-auto-switch input:checked+.combat-switch-track:after{transform:translateX(16px);background:#d3f3dd;box-shadow:0 0 6px #a1e4c5}
.combat-auto-switch input:focus-visible+.combat-switch-track{outline:2px solid #ffe1ad;outline-offset:3px}.combat-auto-switch:has(input:disabled){opacity:.4;cursor:not-allowed}
.combat-target-side{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;border-top:1px solid #a7864966;padding-top:4px}
.combat-card-controls .combat-target-pick{display:flex;align-items:center;justify-content:center;min-width:40px;width:40px;max-width:100%;min-height:40px;background:transparent;border:0;box-shadow:none;padding:3px!important}
.combat-target-pick>span:first-child{position:relative;display:block;flex-shrink:0;width:32px;height:32px;transform:scale(.85);font-size:0;background:linear-gradient(currentColor,currentColor) center/2px 100% no-repeat,linear-gradient(currentColor,currentColor) center/100% 2px no-repeat}
.combat-target-pick>span:first-child:after{content:'';position:absolute;inset:5px;border:2px solid currentColor;border-radius:50%}
.combat-target-pick.has-target{color:#a5e7cc;filter:drop-shadow(0 0 4px #67ae92)}
.combat-target-name{display:none}
.combat-target-clear{position:absolute;right:-3px;top:9px;padding:3px 4px!important;border:0;background:none;color:#b9ac91;font-size:18px}.combat-target-clear[hidden],.learned-action>input[hidden]{display:none!important}
.combat-card-controls .combat-action-options{background:transparent;border:0;border-left:1px solid #a7864938;box-shadow:none;text-align:center;font-size:12px}
@media(prefers-reduced-motion:reduce){.combat-switch-track,.combat-switch-track:after{transition:none}}
body.combat-picking,body.combat-picking #scene *{cursor:crosshair!important}
body.combat-picking #scene .npc-card:hover{outline:2px solid #aeead7;box-shadow:0 0 16px #8ad5c6}
.combat-pick-hint{position:fixed;top:68px;left:50%;transform:translateX(-50%);z-index:13000;background:#192e26f5;color:#d5f4e5;border:1px solid #8ac4ab;padding:10px 16px;pointer-events:none;font:14px Georgia}
.topbar:has(.sound-controls[open]){z-index:12001}
.sound-controls summary{cursor:pointer;list-style:none;padding:7px 10px;border:1px solid #796239;background:#251d13}
.sound-settings{position:absolute;right:0;top:calc(100% + 8px);z-index:12000;display:grid;gap:12px;width:205px;padding:16px;background:#201b13;border:1px solid #a08248;box-shadow:0 6px 20px #000b}
.sound-settings label{display:grid;gap:6px}.sound-settings input{width:100%;accent-color:#b99c60}.sound-settings a{color:#ddc291}.sound-settings small:empty{display:none}
.player-scene-card.has-active-aura,.npc-card.has-active-aura{position:relative;overflow:visible!important}
.player-scene-card.has-active-aura:after,.npc-card.has-active-aura:after{content:'';position:absolute;inset:1px;pointer-events:none;border:1px solid var(--active-effect-color);border-radius:inherit;box-shadow:var(--active-effect-shadow),inset 0 0 17px var(--active-effect-color);opacity:.8}
