:root{
  --bg:#120f0b;--panel:#1d1811;--panel2:#2a2117;--line:#6d5838;--line2:#9c7b4a;
  --text:#eee1c5;--muted:#b9a98a;--gold:#d7ad5f;--red:#a64e42;--green:#6f8a52;--blue:#5b7893;
  --shadow:0 18px 55px rgba(0,0,0,.45);font-family:Georgia,"Times New Roman",serif;color:var(--text);background:var(--bg)
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(circle at 50% -10%,#332819 0,#15110d 45%,#0b0907 100%);color:var(--text)}
button,input,select{font:inherit}button{border:1px solid var(--line);background:linear-gradient(#34291c,#211910);color:var(--text);padding:.55rem .8rem;border-radius:7px;cursor:pointer;box-shadow:inset 0 1px rgba(255,255,255,.05)}button:hover{border-color:var(--gold);filter:brightness(1.08)}button:disabled{opacity:.4;cursor:not-allowed}.primary{background:linear-gradient(#8c6430,#65441e);border-color:#c6954d;color:#fff4d8}.ghost{background:transparent}.mini{padding:.25rem .45rem;font-size:.78rem}.hidden{display:none!important}.muted{color:var(--muted)}.eyebrow{font:700 .72rem/1.2 system-ui,sans-serif;letter-spacing:.16em;color:var(--gold);margin:0 0 .35rem}.message{min-height:1.2rem;margin-top:.65rem;color:#e5ba78}.message.error{color:#e48a7c}
.auth-screen{min-height:100vh;display:grid;place-items:center;position:relative;overflow:hidden}.auth-screen canvas{position:absolute;width:100%;height:100%;object-fit:cover;inset:0;filter:saturate(.85)}.auth-screen:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,7,5,.78),rgba(8,7,5,.25),rgba(8,7,5,.72))}.auth-card{position:relative;z-index:2;width:min(420px,calc(100vw - 32px));background:rgba(24,19,13,.92);border:1px solid #7e6542;border-radius:14px;padding:2rem;box-shadow:var(--shadow);backdrop-filter:blur(8px)}.auth-card h1{font-size:2.5rem;margin:.15rem 0}.auth-card p{line-height:1.5}.sigil{width:62px;height:62px;border:2px solid var(--gold);display:grid;place-items:center;border-radius:50%;font-size:1.35rem;color:var(--gold);margin-bottom:1rem}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:.35rem;margin:1.1rem 0}.auth-tabs button.active{border-color:var(--gold);background:#4b351c}.auth-card label{display:grid;gap:.4rem;margin:.8rem 0;color:var(--muted)}input,select{width:100%;border:1px solid var(--line);background:#100d09;color:var(--text);border-radius:6px;padding:.7rem}.auth-card form .primary{width:100%;margin-top:.4rem}
.app{min-height:100vh}.topbar{height:68px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:.55rem 1rem;background:rgba(18,14,10,.96);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:.7rem}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--gold);border-radius:50%;color:var(--gold)}.brand strong,.brand small{display:block}.brand small{color:var(--muted)}.world-clock{display:flex;align-items:center;gap:.8rem;background:#110e0a;border:1px solid #493b29;border-radius:8px;padding:.45rem .8rem}.season-chip{border:1px solid #6e784c;color:#c8d69a;padding:.15rem .45rem;border-radius:999px}.top-actions{display:flex;justify-content:flex-end;gap:.4rem;flex-wrap:wrap}
.layout{display:grid;grid-template-columns:minmax(640px,1fr) 310px;gap:12px;padding:12px;max-width:1420px;margin:auto}.game-panel,.card{background:linear-gradient(145deg,rgba(33,27,19,.98),rgba(23,18,13,.98));border:1px solid #54432d;border-radius:10px;box-shadow:0 8px 25px rgba(0,0,0,.25)}.game-panel{overflow:hidden}.location-strip{height:54px;padding:.55rem .8rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #493a28}.location-strip strong{display:block;font-size:1.15rem}.canvas-shell{position:relative;background:#090806;overflow:hidden}.canvas-shell canvas{display:block;width:100%;height:auto;max-height:calc(100vh - 175px);min-height:470px;image-rendering:pixelated;cursor:crosshair}.hover-card{position:absolute;z-index:6;pointer-events:none;max-width:260px;background:rgba(15,12,8,.95);border:1px solid var(--line2);padding:.55rem .7rem;border-radius:7px;box-shadow:var(--shadow);font-size:.85rem}.status-banner{position:absolute;left:50%;top:18px;transform:translateX(-50%);background:rgba(16,12,8,.94);border:1px solid var(--gold);padding:.5rem .9rem;border-radius:6px;z-index:7}.combat-overlay{position:absolute;right:12px;top:12px;display:flex;gap:.7rem;background:rgba(92,28,25,.92);border:1px solid #c66b5f;padding:.45rem .65rem;border-radius:6px;z-index:5}.map-toolbar{min-height:56px;display:flex;align-items:center;gap:.75rem;padding:.55rem .7rem;border-top:1px solid #493a28}.speed-controls{display:flex;gap:.25rem}.speed-controls button.active{border-color:var(--gold);background:#5a3d1d}.map-toolbar>span{flex:1;color:var(--muted);font-size:.84rem}.context-actions{display:flex;gap:.35rem;flex-wrap:wrap}
.sidebar{display:flex;flex-direction:column;gap:10px;min-width:0}.card{padding:.75rem}.identity{display:flex;align-items:center;gap:.7rem}.identity strong,.identity span{display:block}.portrait{width:54px;height:54px;border:1px solid var(--line2);border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#5b4930,#221a11);color:var(--gold);font-size:1.5rem}.meter-line{display:flex;justify-content:space-between;margin-top:.65rem;font-size:.86rem}.bar{height:8px;background:#0d0b08;border:1px solid #423625;border-radius:999px;overflow:hidden}.bar i{display:block;height:100%;width:50%;background:linear-gradient(90deg,#71342e,#bd594c)}.bar.xp i{background:linear-gradient(90deg,#6a5427,#d2a94f)}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;margin-top:.7rem}.stats-grid div{background:#15110c;border:1px solid #403322;border-radius:5px;padding:.4rem}.stats-grid span,.stats-grid b{display:block}.stats-grid span{color:var(--muted);font-size:.76rem}.section-title{font:700 .74rem system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:.65rem}.row-title{display:flex;justify-content:space-between;align-items:center}.equipment-row{display:flex;justify-content:space-between;border-top:1px solid #3b3021;padding:.45rem 0}.selection-card{line-height:1.4}.party-list{display:grid;gap:.35rem}.party-member{display:grid;grid-template-columns:auto 1fr auto;gap:.45rem;align-items:center;padding:.35rem;background:#15110c;border:1px solid #3e3222;border-radius:5px}.party-member .dot{width:9px;height:9px;border-radius:50%;background:#8b9c5e}.party-member small{color:var(--muted)}.log{height:180px;overflow:auto;display:flex;flex-direction:column-reverse;gap:.35rem;font-size:.82rem}.log-entry{border-left:2px solid #655033;padding-left:.5rem;line-height:1.35}.log-entry time{color:var(--gold);margin-right:.35rem}.log-card{flex:1;min-height:230px}
.modal{border:1px solid #80643e;border-radius:12px;background:linear-gradient(145deg,#2a2116,#17120d);color:var(--text);padding:0;width:min(760px,calc(100vw - 30px));max-height:90vh;box-shadow:var(--shadow)}.modal::backdrop{background:rgba(6,5,4,.78);backdrop-filter:blur(3px)}.modal form{padding:1rem;max-height:88vh;overflow:auto}.modal.wide{width:min(1050px,calc(100vw - 30px))}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #56442e;padding-bottom:.75rem;margin-bottom:.8rem}.dialog-head h2{margin:.1rem 0;font-size:1.6rem}.dialog-footer{display:flex;align-items:center;gap:.7rem;justify-content:space-between;border-top:1px solid #56442e;padding-top:.8rem;margin-top:.8rem}.dialog-footer span{flex:1;text-align:center}.stepper{display:flex;gap:.3rem;overflow:auto;margin-bottom:.8rem}.stepper span{flex:1;min-width:90px;text-align:center;padding:.4rem;border:1px solid #4a3a27;border-radius:6px;color:var(--muted);font-size:.78rem}.stepper span.active{border-color:var(--gold);color:var(--text);background:#4a351c}.creator-content{min-height:420px}.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.6rem}.choice-card{border:1px solid #51402b;border-radius:8px;background:#18130e;padding:.7rem;cursor:pointer}.choice-card:hover,.choice-card.selected{border-color:var(--gold);background:#2c2115}.choice-card h3{margin:.1rem 0 .35rem}.choice-card p{margin:.25rem 0;color:var(--muted);font-size:.85rem;line-height:1.35}.choice-card .tags{display:flex;gap:.25rem;flex-wrap:wrap;margin-top:.45rem}.tag{font:600 .68rem system-ui,sans-serif;background:#3b2c1b;border:1px solid #685034;padding:.18rem .35rem;border-radius:999px}.ability-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.65rem}.ability-card{background:#16110c;border:1px solid #4a3926;border-radius:8px;padding:.7rem}.ability-row{display:flex;align-items:center;justify-content:space-between}.ability-row b{font-size:1.5rem}.ability-controls{display:flex;gap:.25rem}.ability-controls button{padding:.25rem .5rem}.loadout-group{margin-bottom:1rem}.loadout-group h3{margin:.2rem 0 .5rem}.range-row{display:grid;grid-template-columns:180px 1fr 90px;gap:.7rem;align-items:center;margin:.65rem 0}.range-row input{padding:0}.summary-sheet{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.summary-box{border:1px solid #4c3b28;border-radius:8px;background:#16120d;padding:.7rem}.save-slots{display:grid;gap:.55rem}.save-slot{display:grid;grid-template-columns:1fr auto;gap:.6rem;align-items:center;border:1px solid #4c3b28;background:#15110d;border-radius:7px;padding:.7rem}.save-actions{display:flex;gap:.35rem}.tabs{display:flex;gap:.35rem;margin-bottom:.7rem;flex-wrap:wrap}.tabs button.active{border-color:var(--gold);background:#4d361c}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem}.panel-box{border:1px solid #4b3a27;background:#16120d;border-radius:8px;padding:.7rem}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{text-align:left;padding:.45rem;border-bottom:1px solid #3d3020;vertical-align:top}.data-table th{color:var(--gold)}.faction-badge{display:inline-flex;align-items:center;gap:.35rem}.faction-badge i{width:11px;height:11px;border-radius:50%;display:inline-block}.progress{height:7px;background:#0d0a07;border:1px solid #3c2f20;border-radius:999px;overflow:hidden}.progress i{display:block;height:100%;background:#9b7440}.spell-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.55rem}.spell-card{border:1px solid #4b3b28;background:#15110c;border-radius:7px;padding:.65rem}.spell-card h3{margin:.1rem 0}.spell-card p{margin:.25rem 0;color:var(--muted);font-size:.84rem}.event-choices{display:grid;gap:.5rem;margin-top:.8rem}.event-choices button{text-align:left}.registry{background:#e3d3aa;color:#302313;border:5px double #7b5b2f;border-radius:4px;padding:1rem;font-family:Georgia,serif}.registry h3{text-align:center}.registry-entry{padding:.6rem 0;border-bottom:1px solid #9d8255;line-height:1.45}.building-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.55rem}.building{border:1px solid #50402c;border-radius:7px;padding:.6rem;background:#17120d}.quest-card{border:1px solid #4c3a27;border-radius:7px;padding:.65rem;margin:.5rem 0;background:#16110c}.quest-card h3{margin:.1rem 0}.notice{border-left:3px solid var(--gold);background:#261d12;padding:.6rem .7rem;margin:.5rem 0}.danger{border-color:#a34b43!important}.success{border-color:#71864d!important}
@media(max-width:1050px){.layout{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:repeat(2,1fr)}.log-card{grid-column:1/-1}.topbar{grid-template-columns:1fr auto}.world-clock{display:none}.canvas-shell canvas{max-height:none}.top-actions{grid-column:1/-1;justify-content:flex-start}.topbar{height:auto;position:relative}}
@media(max-width:680px){.layout{padding:5px}.sidebar{display:flex}.topbar{padding:.5rem}.top-actions button{font-size:.8rem;padding:.4rem}.brand small{display:none}.map-toolbar{align-items:flex-start;flex-wrap:wrap}.map-toolbar>span{width:100%;order:3}.context-actions{width:100%}.ability-grid,.summary-sheet,.two-col,.three-col{grid-template-columns:1fr}.range-row{grid-template-columns:1fr}.creator-content{min-height:520px}.canvas-shell canvas{min-height:390px}}

/* v2: inventory, richer town UI and detailed vector art */
.inventory-side-button{width:100%;margin-top:.55rem}.inventory-modal{width:min(1120px,calc(100vw - 30px))}.inventory-layout{display:grid;grid-template-columns:270px 1fr;gap:1rem}.equipment-paper,.inventory-paper{border:1px solid #5b472f;background:linear-gradient(145deg,#1a150f,#100d09);border-radius:10px;padding:.8rem}.equipment-slots{display:grid;gap:.55rem}.equipment-slot{min-height:84px;border:1px dashed #806744;border-radius:8px;padding:.55rem;background:rgba(89,65,36,.12);display:grid;grid-template-columns:50px 1fr;gap:.55rem;align-items:center}.equipment-slot.drag-over,.inventory-cell.drag-over{border-color:#e0b85f;background:rgba(190,139,55,.18)}.equipment-slot .slot-icon{width:46px;height:46px;border-radius:8px;display:grid;place-items:center;background:#21180f;border:1px solid #4e3b27;font-size:1.45rem}.equipment-slot small,.inventory-item small{display:block;color:var(--muted);line-height:1.25}.inventory-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.7rem}.inventory-grid{display:grid;grid-template-columns:repeat(6,minmax(76px,1fr));gap:.45rem}.inventory-cell{position:relative;min-height:90px;border:1px solid #483823;border-radius:7px;background:#100d09;padding:.35rem;overflow:hidden}.inventory-cell:before{content:attr(data-slot);position:absolute;right:5px;bottom:3px;font:600 .62rem system-ui,sans-serif;color:#5f4d36}.inventory-item{height:100%;min-height:78px;border:1px solid #745c39;border-radius:6px;background:linear-gradient(145deg,#2b2116,#17120d);padding:.42rem;cursor:grab;box-shadow:inset 0 1px rgba(255,255,255,.05)}.inventory-item:active{cursor:grabbing}.inventory-item.equipped{border-color:#d0a84e;box-shadow:inset 0 0 0 1px rgba(208,168,78,.35)}.inventory-item .item-top{display:flex;gap:.35rem;align-items:flex-start}.inventory-item .item-icon{font-size:1.25rem;line-height:1}.inventory-item b{font-size:.79rem;line-height:1.15}.inventory-item .qty{position:absolute;right:7px;top:6px;border-radius:999px;background:#0c0906;border:1px solid #6b5334;padding:.08rem .28rem;font:700 .67rem system-ui,sans-serif}.inventory-actions{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.35rem}.inventory-actions button{padding:.25rem .42rem;font-size:.72rem}.inventory-help{margin-top:.7rem;padding:.55rem .65rem;border-left:3px solid var(--gold);background:#241b11;color:var(--muted);font-size:.84rem}.item-rarity-common{border-color:#66533a}.item-rarity-fine{border-color:#6f8757}.item-rarity-rare{border-color:#587e9d}.item-rarity-relic{border-color:#9b68a8}.town-directory{margin-top:.8rem}.town-directory .building{min-height:150px;position:relative;overflow:hidden}.town-directory .building:after{content:"";position:absolute;inset:auto -15px -22px auto;width:75px;height:75px;border:1px solid rgba(207,170,98,.12);transform:rotate(45deg)}.building .service-icon{font-size:1.45rem;float:right;margin-left:.4rem}.party-manage{display:grid;grid-template-columns:1fr 180px auto;gap:.8rem;align-items:center;border:1px solid #4c3b28;background:#15110d;border-radius:7px;padding:.7rem;margin:.5rem 0}.faction-row{display:grid;grid-template-columns:auto 1fr auto;gap:.55rem;align-items:center;padding:.45rem 0;border-bottom:1px solid #3d3020}.faction-row>i{width:12px;height:12px;border-radius:50%}.faction-row small{display:block;color:var(--muted)}.danger-zone{margin-top:1rem}.town-legend{display:flex;gap:.4rem;flex-wrap:wrap;margin:.55rem 0}.town-legend .tag{background:#251b11}.portrait{position:relative;overflow:hidden}.portrait:after{content:"";position:absolute;inset:5px;border:1px solid rgba(239,202,121,.25);border-radius:50%}
@media(max-width:860px){.inventory-layout{grid-template-columns:1fr}.inventory-grid{grid-template-columns:repeat(4,minmax(70px,1fr))}.party-manage{grid-template-columns:1fr}}
@media(max-width:520px){.inventory-grid{grid-template-columns:repeat(3,minmax(70px,1fr))}}


/* v3: contextual interactions, living towns, spellbook and animated combat */
.canvas-shell{position:relative}.context-menu{position:absolute;z-index:30;width:210px;padding:.38rem;border:1px solid #b08a4d;border-radius:9px;background:linear-gradient(145deg,rgba(45,34,23,.98),rgba(19,15,11,.98));box-shadow:0 16px 38px rgba(0,0,0,.55);display:grid;gap:.28rem}.context-menu .context-title{padding:.35rem .45rem;color:#efcf8b;font-weight:700;border-bottom:1px solid #5b452d;margin-bottom:.1rem}.context-menu button{text-align:left;padding:.45rem .55rem}.combat-overlay{left:12px;right:12px;top:10px;width:auto;max-width:none;display:flex;flex-direction:column;gap:.38rem;align-items:stretch}.combat-summary{display:grid;grid-template-columns:1fr auto auto;gap:.6rem;align-items:center}.combat-summary #combatPhaseText{color:#e8c16d;font-size:.8rem}.initiative-strip{display:flex;gap:.32rem;overflow:hidden;padding-top:.25rem;border-top:1px solid rgba(222,184,101,.24)}.initiative-token{width:36px;height:31px;display:grid;grid-template-columns:1fr auto;align-items:center;border:1px solid #5e4a31;background:#18120d;border-radius:6px;padding:.2rem .28rem;opacity:.72}.initiative-token span{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;background:#40311f;font-weight:700}.initiative-token small{font-size:.62rem;color:#c8b58e}.initiative-token.active{opacity:1;border-color:#f0c66a;box-shadow:0 0 12px rgba(240,198,106,.35);transform:translateY(-2px)}.initiative-token.enemy span{background:#6d2f29}.initiative-token.ally span{background:#3d5c39}.spellbook-modal{width:min(1180px,calc(100vw - 24px))}.spellbook-modal form{background:radial-gradient(circle at 50% 0,rgba(136,94,48,.2),transparent 48%)}.spellbook{display:grid;grid-template-columns:1fr 1fr;gap:2px;min-height:620px;background:#5c4027;padding:8px;border-radius:8px;box-shadow:inset 0 0 35px #1d120a}.book-page{position:relative;color:#342516;background:linear-gradient(90deg,#d8c49b,#ead9af 18%,#e4cea3 82%,#c9b184);padding:1.2rem 1.25rem;overflow:auto;max-height:68vh;box-shadow:inset 0 0 25px rgba(80,49,22,.24)}.left-page{border-radius:5px 0 0 5px;border-right:1px solid #9b7c4d}.right-page{border-radius:0 5px 5px 0;border-left:1px solid #f0ddb6}.book-page h3,.book-page h4{text-align:center;color:#5b351f}.book-page h3{font-size:1.55rem;border-bottom:2px solid #9e7646;padding-bottom:.45rem}.book-note{font-style:italic;color:#684d31}.book-ornament{text-align:center;font-size:1.7rem;color:#88522d}.book-spell{border-bottom:1px solid rgba(113,78,43,.35);padding:.65rem .2rem}.book-spell b{font-size:1.05rem}.book-spell small{display:block;color:#76563a;margin:.12rem 0}.book-spell p{margin:.25rem 0 .45rem;line-height:1.35}.book-spell button{background:linear-gradient(#78502d,#51331d);color:#f8e7c1;border-color:#93663b;padding:.35rem .55rem}.book-spell.prepared,.book-spell.queued{background:rgba(138,91,40,.09);border-left:3px solid #9c6a31;padding-left:.55rem}.memory-meter{height:9px;border:1px solid #89643b;background:#baa176;border-radius:999px;overflow:hidden}.memory-meter i{display:block;height:100%;background:#784629}.book-footer{display:flex;gap:.4rem;flex-wrap:wrap;position:sticky;bottom:0;background:rgba(226,205,164,.94);padding:.5rem 0}.book-page .tag{background:#ad8c5d;border-color:#80613d;color:#382515}.status-banner{pointer-events:none}.town-directory .building{background:linear-gradient(145deg,#1c160f,#120e0a)}
@media(max-width:820px){.spellbook{grid-template-columns:1fr}.left-page,.right-page{border-radius:4px;border:0}.combat-summary{grid-template-columns:1fr auto}.combat-summary #combatPhaseText{grid-column:1/-1}.context-menu{width:190px}}


/* v4: dialogue-driven services, larger viewport, tactical fields and quick abilities */
.layout{grid-template-columns:minmax(760px,1fr) 272px;max-width:1760px;gap:8px;padding:8px}
.topbar{height:60px;padding:.38rem .7rem}.top-actions{gap:.28rem}.top-actions button{padding:.4rem .58rem;font-size:.82rem}
.location-strip{height:45px;padding:.38rem .65rem}.location-strip strong{font-size:1.02rem}
.canvas-shell canvas{max-height:calc(100vh - 150px);min-height:560px;image-rendering:auto}
.map-toolbar{min-height:42px;padding:.32rem .5rem;gap:.45rem}.map-toolbar button{padding:.34rem .52rem;font-size:.78rem}.map-toolbar>span{font-size:.76rem}
.sidebar{gap:7px}.card{padding:.55rem}.portrait{width:46px;height:46px}.stats-grid{gap:.25rem;margin-top:.45rem}.stats-grid div{padding:.28rem}.log{height:120px}.log-card{min-height:155px}.party-card .party-list{max-height:125px;overflow:auto}
.quickbar{position:absolute;left:12px;bottom:12px;z-index:18;display:flex;gap:5px;padding:6px;border:1px solid rgba(212,176,99,.7);border-radius:10px;background:rgba(18,14,10,.86);box-shadow:0 10px 28px rgba(0,0,0,.45);backdrop-filter:blur(5px)}
.quick-slot{position:relative;width:44px;height:44px;padding:0;display:grid;place-items:center;font:700 1.15rem system-ui,sans-serif;border-color:#715b38;background:linear-gradient(#3a2d1e,#1b140d)}.quick-slot small{position:absolute;right:2px;bottom:1px;font-size:.58rem;color:#d6c59f}.quick-slot.selected{border-color:#f0c66a;box-shadow:0 0 0 2px rgba(240,198,106,.2),0 0 16px rgba(240,198,106,.28)}.quick-slot.empty{opacity:.32}
.dialogue-modal{width:min(920px,calc(100vw - 26px))}.dialogue-layout{display:grid;grid-template-columns:175px 1fr;gap:1rem;align-items:start}.dialogue-portrait{height:220px;border:1px solid #8b6b3e;border-radius:12px;display:grid;place-items:center;font-size:4rem;color:#e4bd6d;background:radial-gradient(circle at 50% 28%,#675039,#241a10 68%);box-shadow:inset 0 0 30px rgba(0,0,0,.45)}.dialogue-role{color:#c6ad7d;margin:.1rem 0 .7rem}.dialogue-text{min-height:100px;padding:1rem;border:1px solid #59452e;border-radius:8px;background:#15100b;font-size:1.05rem;line-height:1.55}.dialogue-choices{display:grid;gap:.45rem;margin-top:.7rem}.dialogue-choices button{text-align:left;padding:.65rem .75rem}.dialogue-choices button:before{content:'› ';color:#e6bd69;font-weight:700}
.floating-inspect{pointer-events:none}
.combat-overlay{background:rgba(48,24,19,.9);border-color:#b36c59}.initiative-strip{overflow-x:auto}.initiative-token{flex:0 0 auto}
.combat-legend{position:absolute;right:12px;bottom:12px;z-index:12;display:flex;gap:.5rem;padding:.36rem .48rem;border-radius:7px;background:rgba(13,10,8,.78);font:.68rem system-ui,sans-serif}.combat-legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:3px}.legend-move{background:rgba(62,194,92,.55)}.legend-attack{background:rgba(218,66,58,.48)}.legend-spell{background:rgba(62,134,235,.52)}
.game-over-card{text-align:center;padding:1rem}.game-over-card h3{font-size:2rem;color:#d58d7a}.blood-note{color:#c36f62}
@media(max-width:1180px){.layout{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:repeat(2,1fr)}.canvas-shell canvas{max-height:none}.log-card{grid-column:1/-1}.quickbar{bottom:8px}}
@media(max-width:680px){.dialogue-layout{grid-template-columns:1fr}.dialogue-portrait{height:120px}.quick-slot{width:38px;height:38px}.quickbar{max-width:calc(100% - 24px);overflow-x:auto}}

/* v5: stable strategic map, separated combat controls, named active abilities and D&D-style modifiers */
.log{flex-direction:column}
.toolbar-groups{display:flex;align-items:center;justify-content:flex-end;gap:.45rem;flex-wrap:wrap}.context-actions{align-items:center;padding:.24rem .35rem;border:1px solid #4d3d29;border-radius:7px;background:rgba(16,13,9,.68)}.toolbar-label{font:700 .61rem system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#a99878;margin-right:.1rem}.exploration-actions{border-color:#4f5e43}.combat-actions{border-color:#6e3d37;background:rgba(65,24,21,.34)}.combat-actions.active-combat{border-color:#cc7566;background:rgba(105,35,29,.62);box-shadow:0 0 0 1px rgba(204,117,102,.16)}.combat-actions .danger{background:linear-gradient(#8f443c,#5d2925)}
.quickbar{align-items:flex-end;max-width:calc(100% - 24px);overflow-x:auto}.quick-slot{width:52px;height:52px;flex:0 0 52px}.quick-slot em{display:none;position:absolute;left:50%;bottom:55px;transform:translateX(-50%);white-space:nowrap;padding:.25rem .42rem;border:1px solid #80663e;border-radius:5px;background:rgba(17,13,9,.96);color:#ead8b4;font:600 .68rem system-ui,sans-serif;box-shadow:0 8px 20px rgba(0,0,0,.45)}.quick-slot:hover em,.quick-slot.selected em{display:block}.quick-slot:first-child{border-color:#d2a352}.quick-slot:nth-child(2){border-color:#7e9d65}
.character-summary{display:grid;grid-template-columns:1.2fr 1fr;gap:.8rem}.derived-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem}.derived-stats>div{display:grid;place-items:center;text-align:center;border:1px solid #5a462d;border-radius:8px;background:#120e0a;padding:.65rem}.derived-stats span{color:var(--muted);font-size:.76rem}.derived-stats b{font-size:1.45rem;color:#f0d18e}.dnd-rule{display:grid;gap:.2rem;border-left:4px solid var(--gold);background:#241a10;padding:.6rem .7rem}.dnd-rule span{color:var(--muted);font-size:.82rem}.dnd-grid{grid-template-columns:repeat(3,minmax(180px,1fr));margin-bottom:.8rem}.dnd-ability{position:relative;border-width:2px}.dnd-ability.bonus{border-color:#577d4d}.dnd-ability.penalty{border-color:#87473f}.dnd-ability.primary-ability{box-shadow:inset 0 0 0 1px #c99c4e}.ability-title{display:flex;align-items:center;gap:.45rem}.ability-title>b{display:grid;place-items:center;width:42px;height:42px;border:1px solid #8c6e43;border-radius:50%;font-size:1rem}.ability-title span{font-weight:700}.ability-title i{margin-left:auto;color:#d7ad5f;font-size:.68rem}.ability-numbers{display:grid;grid-template-columns:auto 1fr auto 1fr;align-items:center;gap:.35rem;margin:.65rem 0}.ability-numbers strong{font-size:2rem;color:#efd28e}.ability-numbers>b{font-size:1.45rem}.ability-numbers small{color:var(--muted);font-size:.67rem}.dnd-ability p{min-height:2.7em;color:var(--muted);font-size:.78rem}.saving-throw{border-top:1px solid #493923;padding-top:.35rem;font-size:.78rem}.skill-mod-list{display:grid;grid-template-columns:1fr 1fr;gap:.28rem .6rem}.skill-mod-list>div{display:flex;justify-content:space-between;border-bottom:1px solid #3d3020;padding:.3rem}.bonus-text{color:#91bd70}.penalty-text{color:#dc7d70}
@media(max-width:980px){.toolbar-groups{width:100%;justify-content:flex-start}.character-summary{grid-template-columns:1fr}.dnd-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}}
@media(max-width:580px){.dnd-grid,.derived-stats{grid-template-columns:1fr 1fr}.skill-mod-list{grid-template-columns:1fr}}

/* v5.0 D&D formulas and save proficiencies */
.saving-throw{display:grid;grid-template-columns:1fr auto;gap:.18rem .45rem;align-items:center}.saving-throw em{grid-column:1/-1;color:var(--muted);font-size:.66rem;font-style:normal}.skill-mod-list>div{display:grid;grid-template-columns:1fr auto auto;gap:.45rem;align-items:center}.skill-mod-list span small{display:block;color:var(--muted);font-size:.62rem}.skill-mod-list>div>em{color:#96866a;font-size:.66rem;font-style:normal;min-width:56px;text-align:right}

/* v5: resilient world renderer, separated combat controls, true quick abilities and D&D modifiers */

/* v6 — classic CRPG frame inspired by late-1990s isometric interfaces */
:root{
  --bg:#0b0906;--panel:#20180f;--panel2:#312417;--panel3:#16110c;
  --line:#6b5436;--line2:#aa8350;--text:#eee0bd;--muted:#b8a989;
  --gold:#d8af61;--red:#a4493e;--green:#708b55;--blue:#577b9c;
  --iron:#332f28;--iron-hi:#6f6759;--wood:#3b2818;--parchment:#d7c394;
  --shadow:0 20px 60px rgba(0,0,0,.62)
}
html,body{height:100%;overflow:hidden;background:
  radial-gradient(circle at 50% -20%,#3c2e1b 0,#17110b 38%,#080604 100%)}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.16;background:
  repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.025) 4px),
  repeating-linear-gradient(90deg,transparent 0 7px,rgba(0,0,0,.05) 8px)}
button{border-radius:2px;border:1px solid #765a34;background:
  linear-gradient(#4a3824,#2a1e12 48%,#1b140d 52%,#332315);box-shadow:
  inset 0 1px 0 rgba(255,235,190,.14),inset 0 -1px 0 rgba(0,0,0,.7),0 1px 2px rgba(0,0,0,.5)}
button:hover{border-color:#d1a95d;filter:brightness(1.15)}
button:active{transform:translateY(1px);box-shadow:inset 0 2px 4px rgba(0,0,0,.8)}
button.primary{background:linear-gradient(#9a6d2d,#6b451c 50%,#4a2d12 51%,#6a421b);border-color:#d8aa54}
button.danger{background:linear-gradient(#854037,#572721 50%,#3d1a17 51%,#662b25);border-color:#b85d51}
.iron-window,.game-panel,.sidebar{position:relative;border:2px solid #514536;border-radius:2px;background:
  linear-gradient(135deg,rgba(78,70,57,.55),rgba(32,27,21,.96) 12%,rgba(19,15,11,.98) 88%,rgba(82,68,49,.48));box-shadow:
  inset 0 0 0 1px #17130f,inset 0 0 0 3px rgba(135,111,72,.17),0 10px 32px rgba(0,0,0,.5)}
.iron-window:before,.game-panel:before,.sidebar:before{content:"";position:absolute;inset:4px;pointer-events:none;border:1px solid rgba(190,151,91,.16)}
.iron-bar{background:linear-gradient(#3e382f,#1a1712 60%,#0d0b08);border-bottom:2px solid #7e6540;box-shadow:0 4px 14px rgba(0,0,0,.55)}
.app{height:100vh;display:flex;flex-direction:column;padding:0}
.topbar{height:54px;min-height:54px;position:relative;display:grid;grid-template-columns:1fr auto 1fr;padding:5px 10px;z-index:30}
.brand-mark{border-radius:2px;width:40px;height:40px;background:#17120d;box-shadow:inset 0 0 12px #000;border:2px solid #b28b50}
.brand strong{font-size:1.05rem;letter-spacing:.08em}.brand small{font-size:.7rem}
.world-clock{border-radius:2px;background:linear-gradient(#221a11,#100c08);border:1px solid #80613b;padding:.35rem .7rem;box-shadow:inset 0 0 10px #000}
.header-status{justify-self:end;display:flex;align-items:center;gap:.45rem;color:var(--muted);font-size:.78rem}.status-gem{width:9px;height:9px;border-radius:50%;background:#849b5c;box-shadow:0 0 8px #9fbd6d}
.layout{flex:1;min-height:0;width:100%;max-width:none;margin:0;padding:7px;display:grid;grid-template-columns:66px minmax(620px,1fr) 264px;gap:7px}
.command-rail{min-height:0;padding:7px 5px;display:flex;flex-direction:column;gap:6px;z-index:4}
.command-rail button{height:58px;padding:4px 2px;display:grid;place-items:center;align-content:center;gap:1px;min-width:0}
.command-rail button span{font:700 1.25rem/1 Georgia,serif;color:#e0bd76;text-shadow:0 2px 2px #000}.command-rail button small{font:600 .56rem/1.1 system-ui,sans-serif;color:#d5c39c;max-width:58px;overflow:hidden;text-overflow:ellipsis}.rail-spacer{flex:1}
.game-panel{min-height:0;display:flex;flex-direction:column;overflow:hidden;border-width:2px}
.location-strip{height:42px;min-height:42px;padding:.3rem .65rem;border-bottom:2px solid #604b2e;background:linear-gradient(90deg,#2a1d11,#4a3420 45%,#21170e)}
.location-strip strong{font-size:1rem;text-shadow:0 2px 2px #000}.location-flourish{color:#a9864e;letter-spacing:.2em;font-size:.72rem}
.canvas-shell{flex:1;min-height:0;border:3px solid #17110b;border-left-color:#765c38;border-top-color:#80633d;background:#050403;box-shadow:inset 0 0 30px #000;position:relative}
.canvas-shell canvas{width:100%;height:100%;min-height:0;max-height:none;object-fit:fill;image-rendering:auto;cursor:default}
.canvas-vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 30px 8px rgba(0,0,0,.5);z-index:2}
.command-deck{min-height:72px;display:grid;grid-template-columns:minmax(220px,.72fr) minmax(540px,1.28fr);gap:8px;padding:5px 7px;border-top:2px solid #7f6038;background:
  linear-gradient(#47311d,#281b10 46%,#17100a 49%,#2f2013);box-shadow:inset 0 2px 0 rgba(255,215,145,.08)}
.deck-left{display:flex;align-items:center;gap:8px;min-width:0}.deck-left #modeHint{color:#b9a887;font-size:.72rem;line-height:1.25;overflow:hidden}.speed-controls{display:flex;flex:0 0 auto}.speed-controls button{width:34px;height:32px;padding:0}
.toolbar-groups{display:grid;grid-template-columns:1fr 1fr;gap:7px;min-width:0}.context-actions{display:grid;grid-template-columns:repeat(2,minmax(75px,1fr));gap:4px;align-content:center;padding:4px;border:1px solid #5b472c;border-radius:2px;background:rgba(11,8,5,.55)}.context-actions button{padding:.35rem .4rem;font-size:.72rem;white-space:nowrap}.toolbar-label{grid-column:1/-1;color:#c7a86e;font-size:.56rem;letter-spacing:.17em}.combat-actions{border-color:#713c34;background:rgba(66,22,18,.35)}
.sidebar{min-height:0;padding:7px;display:flex;flex-direction:column;gap:6px;overflow:hidden}.sidebar:before{z-index:0}.sidebar>*{position:relative;z-index:1}
.card{border-radius:1px;border:1px solid #59462e;background:linear-gradient(145deg,rgba(42,31,19,.97),rgba(20,15,10,.98));box-shadow:inset 0 0 0 1px rgba(193,151,87,.06);padding:.55rem}.portrait-card{flex:0 0 auto}.portrait{border-radius:2px;width:50px;height:58px;border:2px ridge #a77b42;background:radial-gradient(circle at 50% 35%,#735b3e,#21160d 72%);box-shadow:inset 0 0 15px #000}.section-title{padding-bottom:4px;border-bottom:1px solid rgba(177,134,73,.34);margin-bottom:.45rem;color:#d2aa62;font-size:.65rem}.equipment-row{gap:.5rem;justify-content:flex-start}.equipment-row b{margin-left:auto;text-align:right;font-size:.76rem}.inventory-side-button{width:100%;margin-top:.35rem;padding:.35rem}.selection-panel{max-height:170px;overflow:auto}.party-card{flex:0 0 auto}.party-list{max-height:145px;overflow:auto}.party-member{border-radius:1px;background:#17110c}.log-card{min-height:0;flex:1}.log{height:100%;min-height:100px;overflow:auto;display:flex;flex-direction:column;gap:.3rem}.log-entry{background:rgba(0,0,0,.14);padding:.25rem .3rem .25rem .5rem}
.quickbar{left:8px;bottom:8px;padding:4px;border-radius:2px;background:linear-gradient(rgba(51,39,24,.96),rgba(19,14,9,.96));border:2px ridge #8d6b3d;z-index:18}.quick-slot{width:48px;height:48px;flex-basis:48px;border-radius:1px;background:radial-gradient(circle,#544128,#1a120b 72%)}.quick-slot span{filter:drop-shadow(0 2px 1px #000)}
.combat-overlay{left:50%;right:auto;top:7px;transform:translateX(-50%);width:min(620px,calc(100% - 26px));display:block;border-radius:2px;background:linear-gradient(rgba(70,28,22,.96),rgba(29,13,11,.96));border:2px ridge #ab6457;padding:.35rem .45rem;z-index:15}.combat-summary{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.initiative-strip{margin-top:4px;padding-top:3px;border-top:1px solid rgba(224,166,118,.28)}
.context-menu{border-radius:1px;border:2px ridge #9d7743;background:linear-gradient(#332516,#17100a);box-shadow:0 14px 34px #000}.context-menu button{text-align:left;border-radius:0}
.hover-card,.status-banner{border-radius:1px;background:rgba(24,17,10,.97);border:2px ridge #9a7543}
.modal{border-radius:2px;border:3px ridge #8e6e43;background:
  linear-gradient(135deg,#3b2a19,#1d150d 15%,#120e09 85%,#4b351f);box-shadow:0 20px 70px #000,inset 0 0 0 2px #100c08}.modal::backdrop{background:rgba(3,2,1,.74);backdrop-filter:blur(1px)}.modal form{padding:.75rem}.dialog-head{cursor:default;background:linear-gradient(90deg,#2b1d11,#4b3420,#26190e);margin:-.75rem -.75rem .75rem;padding:.55rem .65rem;border-bottom:2px ridge #83623a}.dialog-head h2{font-size:1.32rem}.dialog-head button{padding:.35rem .55rem}.panel-box,.choice-card,.summary-box,.save-slot{border-radius:1px;background:linear-gradient(#21170e,#120d08);border-color:#5b452b}
.dialogue-layout{grid-template-columns:150px 1fr}.dialogue-portrait{border-radius:2px;height:190px;background:radial-gradient(circle at 50% 30%,#7b6040,#20150c 72%);border:3px ridge #9f7440}.dialogue-text{border-radius:1px;background:#100c08;border:1px solid #634b2e}.dialogue-choices button{border-radius:1px}
.inventory-paper,.equipment-paper{border-radius:1px}.inventory-cell,.equipment-slot{border-radius:1px}.spellbook{border-radius:1px}.book-page{border-radius:0!important}
.auth-screen:after{background:radial-gradient(circle at 50% 38%,rgba(9,7,4,.15),rgba(7,5,3,.84) 72%)}.auth-card{border-radius:2px;border:3px ridge #a07b49;background:rgba(25,18,11,.94)}
@media(max-width:1250px){.layout{grid-template-columns:58px minmax(620px,1fr) 232px}.command-rail button{height:52px}.sidebar{font-size:.9rem}.command-deck{grid-template-columns:1fr}.deck-left{display:none}}
@media(max-width:980px){html,body{overflow:auto}.app{height:auto;min-height:100vh}.layout{grid-template-columns:54px minmax(0,1fr);grid-template-areas:"rail game" "rail side"}.command-rail{grid-area:rail;position:sticky;top:60px;height:calc(100vh - 68px)}.game-panel{grid-area:game;min-height:620px}.sidebar{grid-area:side;display:grid;grid-template-columns:repeat(2,1fr);overflow:visible}.log-card{grid-column:1/-1;min-height:220px}.canvas-shell canvas{min-height:520px}.toolbar-groups{grid-template-columns:1fr}}
@media(max-width:680px){.layout{padding:3px;gap:3px;grid-template-columns:48px minmax(0,1fr)}.command-rail{padding:3px}.command-rail button{height:47px}.command-rail button small{display:none}.topbar{grid-template-columns:1fr auto}.header-status{display:none}.brand small{display:none}.world-clock{font-size:.72rem}.game-panel{min-height:560px}.canvas-shell canvas{min-height:430px}.sidebar{grid-template-columns:1fr}.command-deck{min-height:110px}.context-actions{grid-template-columns:1fr 1fr}.quick-slot{width:42px;height:42px;flex-basis:42px}}

/* v7 — D&D 2024 turn economy and command feedback */
.action-hint{
  grid-column:1/-1;min-height:26px;padding:.35rem .55rem;border:1px solid rgba(183,143,80,.38);
  background:linear-gradient(90deg,rgba(15,11,7,.92),rgba(48,34,19,.72),rgba(15,11,7,.92));
  color:#ddc69a;font:600 .72rem/1.25 system-ui,sans-serif;letter-spacing:.01em;text-align:center
}
.context-actions button.unavailable,.quick-slot.unavailable{
  opacity:.42;filter:saturate(.35);border-color:#5d4a35!important;box-shadow:none!important
}
.context-actions button.unavailable:hover,.quick-slot.unavailable:hover{filter:saturate(.35);border-color:#9a6155!important}
.combat-summary{flex-wrap:wrap;justify-content:flex-start!important}
.combat-summary strong{margin-right:auto;color:#fff0c8;min-width:150px}
.combat-summary span{padding:.18rem .38rem;border:1px solid rgba(235,188,109,.25);background:rgba(0,0,0,.2);white-space:nowrap;font:600 .68rem/1.15 system-ui,sans-serif}
#combatMoveText{border-color:rgba(105,173,92,.55);color:#c7e6bc}
#combatActionText{border-color:rgba(206,91,73,.55);color:#f1b5a9}
#combatBonusText{border-color:rgba(204,153,70,.55);color:#efd49a}
#combatReactionText{border-color:rgba(100,148,198,.55);color:#bed7f0}
#combatAttackText{border-color:rgba(190,105,91,.45);color:#e9b3a8}
.quick-slot.unavailable:after{content:'×';position:absolute;right:2px;top:0;color:#e18a7a;font:900 1rem system-ui,sans-serif;text-shadow:0 1px 2px #000}
.level-up-modal .choice-card button{width:100%;margin-top:.45rem}
.progression-panel{margin-top:.8rem}.progression-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:.35rem}
.progression-list>div{display:grid;grid-template-columns:32px 1fr;align-items:start;gap:.4rem;padding:.42rem;border:1px solid #493923;background:rgba(0,0,0,.16)}
.progression-list>div>b{width:28px;height:28px;display:grid;place-items:center;border:1px solid #9a7746;color:#e9c77f;background:#21170e}
.progression-list>div>span{font-size:.78rem;line-height:1.25}
.dnd-rule{display:grid;gap:.2rem;margin-top:.55rem;padding:.45rem .55rem;border-left:3px solid #af8247;background:rgba(0,0,0,.2)}
.dnd-rule span{color:var(--muted);font-size:.78rem}.derived-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem}
.derived-stats>div{display:grid;gap:.1rem;padding:.5rem;border:1px solid #4e3b26;background:#15100b}.derived-stats span{font-size:.68rem;color:var(--muted)}.derived-stats b{font-size:1.15rem;color:#e8c47c}
.dnd-ability .ability-title{display:flex;align-items:center;gap:.35rem}.dnd-ability .ability-title>b{font-size:1.3rem;color:#e2bd74}.dnd-ability .ability-title i{margin-left:auto;font-size:.62rem;color:#d9ad65}
.ability-numbers{display:grid;grid-template-columns:auto 1fr auto 1fr;align-items:baseline;gap:.25rem;margin:.35rem 0}.ability-numbers strong{font-size:1.7rem}.ability-numbers small{color:var(--muted);font-size:.62rem}.ability-numbers>b{font-size:1.15rem}
.dnd-ability.bonus{border-color:#607849}.dnd-ability.penalty{border-color:#7f423b}.primary-ability{box-shadow:inset 0 0 0 1px rgba(220,176,92,.28)}
.saving-throw{display:flex;align-items:center;gap:.4rem;padding-top:.35rem;border-top:1px solid rgba(155,119,72,.25)}.saving-throw span{font-size:.7rem;color:var(--muted)}.saving-throw b{font-size:1rem}.saving-throw em{margin-left:auto;font-size:.62rem;color:#c6ad7f}
.skill-mod-list{display:grid;gap:.25rem}.skill-mod-list>div{display:grid;grid-template-columns:1fr auto auto;gap:.45rem;align-items:center;padding:.32rem .4rem;border-bottom:1px solid rgba(128,96,56,.22)}.skill-mod-list small,.skill-mod-list em{font-size:.63rem;color:var(--muted)}
.bonus-text{color:#a8d783!important}.penalty-text{color:#e18c7e!important}
.creator-modal{width:min(1120px,calc(100vw - 22px))}.creator-modal .stepper span{min-width:112px}
@media(max-width:1100px){.derived-stats{grid-template-columns:repeat(2,1fr)}.combat-summary strong{width:100%;margin:0}}
@media(max-width:680px){.action-hint{font-size:.66rem}.combat-summary span{font-size:.6rem}.derived-stats{grid-template-columns:1fr}.progression-list{grid-template-columns:1fr}}

/* Seven Banners v8: expanded journal, equipment artwork and spell memory */
.log-card{min-height:300px}
.log{min-height:240px;font-size:.84rem;line-height:1.42}
.journal-modal{width:min(1380px,96vw);height:min(900px,94vh);max-width:none}
.journal-modal>form{height:100%;display:flex;flex-direction:column}
.journal-modal #journalContent{min-height:0;flex:1;overflow:auto}
.journal-dashboard{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,.8fr);gap:12px;align-items:start}
.journal-summary,.journal-events,.journal-world{grid-column:1/-1}
.journal-events{min-height:430px}
.journal-event-list{height:390px;overflow:auto;padding:.45rem;border:1px solid rgba(177,134,73,.32);background:rgba(7,5,3,.42);display:flex;flex-direction:column;gap:.35rem}
.journal-event-list .log-entry{font-size:.9rem;padding:.38rem .5rem}
.item-art{width:100%;height:100%;display:block;filter:drop-shadow(0 2px 2px rgba(0,0,0,.6))}
.item-visual{height:44px;display:grid;place-items:center;margin-bottom:.15rem}
.slot-picture{width:68px;height:68px;display:grid;place-items:center;border:1px solid #6d5535;background:radial-gradient(circle,#43331f,#17110b);flex:0 0 auto}
.slot-picture .item-art{width:58px;height:58px}
.spell-slot-board{border:1px solid #836538;background:rgba(54,38,21,.18);padding:.6rem;margin-bottom:.8rem}
.slot-level{display:grid;grid-template-columns:72px 1fr 42px;align-items:center;gap:.55rem;padding:.32rem 0;border-top:1px solid rgba(100,74,40,.25)}
.slot-level:first-of-type{border-top:0}.slot-pips{display:flex;gap:5px;flex-wrap:wrap}.slot-pip{width:16px;height:16px;border-radius:50%;display:block;border:2px solid #5e4426;box-shadow:inset 0 0 4px #000}.slot-pip.ready{background:radial-gradient(circle at 35% 30%,#d8ecff,#5e93c8 45%,#233d65);box-shadow:0 0 8px rgba(99,165,226,.75)}.slot-pip.spent{background:#322b24;opacity:.55}
.spell-line{display:flex;gap:.55rem;align-items:flex-start}.spell-line>div{flex:1}.spell-level-badge{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#6d3c2d;color:#f4dfb4;border:2px solid #b89455;font-weight:800;flex:0 0 auto}.spell-level-badge.cantrip{background:#31584d}
.spell-cost-note{margin:.35rem 0;padding:.25rem .4rem;background:rgba(105,52,38,.15);border-left:3px solid #9c5742;font-weight:700}.spell-cost-note.free{border-left-color:#568a6c;color:#38624d}
.spell-separator{display:flex;justify-content:space-between;align-items:center;border-bottom:2px double #85633a;margin:1rem 0 .55rem}.spell-separator h4{margin:0}.cantrip-separator{color:#2f5f4f}
.memory-status{font-size:.78rem;font-weight:700;margin:.35rem 0;color:#6f5434}.memory-meter{height:10px;border:1px solid #6b4e2d;background:#24190e}.memory-meter i{display:block;height:100%;background:linear-gradient(90deg,#5f7d9b,#94b9df)}
.book-spell.cantrip{border-left:4px solid #4b836b}.book-spell.prepared{border-left:4px solid #586f9b}.book-spell.known{border-left:4px solid #9a7541}.book-spell.queued{box-shadow:inset 0 0 0 2px rgba(86,126,158,.35)}
@media(max-width:1180px){.journal-dashboard{grid-template-columns:1fr}.journal-events{min-height:350px}.journal-event-list{height:320px}.log-card{min-height:240px}.log{min-height:180px}}

/* Seven Banners v9: main menu, character book, unique ability icons, configurable quickbar */
.main-menu-overlay{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;background:
  radial-gradient(circle at 50% 30%,rgba(103,74,37,.22),rgba(5,3,2,.9) 68%),
  linear-gradient(rgba(5,3,2,.45),rgba(5,3,2,.85));backdrop-filter:blur(3px)}
.main-menu-card{width:min(520px,calc(100vw - 30px));padding:2rem;text-align:center;background:
  linear-gradient(145deg,rgba(52,36,20,.98),rgba(15,10,6,.98));border:4px ridge #9e7845;box-shadow:0 30px 100px #000,inset 0 0 45px rgba(173,126,62,.12)}
.main-menu-card h1{font-size:2.5rem;margin:.15rem 0 1rem;color:#efd39a;text-shadow:0 3px 8px #000}
.main-menu-sigil{width:92px;height:92px;margin:0 auto .6rem;display:grid;place-items:center;border-radius:50%;border:3px double #c39a58;background:radial-gradient(circle,#5b4023,#171008 70%);font:800 2.2rem Georgia,serif;color:#f3d28e;box-shadow:0 0 28px rgba(196,146,73,.35)}
.main-menu-profile{color:#cbb890}.main-menu-actions{display:grid;gap:.55rem;margin:1.2rem 0}.main-menu-actions button{font-size:1.05rem;padding:.72rem}
.world-actions{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:.45rem;flex-wrap:wrap;padding:.38rem .5rem;border:1px solid rgba(177,135,74,.4);background:rgba(13,9,6,.82)}
.world-actions span{margin-right:.35rem;color:#d8c39a}.world-actions button{padding:.35rem .65rem}
.ability-art{--icon-h:40;--icon-h2:80;position:relative;width:42px;height:42px;display:inline-grid;place-items:center;flex:0 0 auto;border-radius:9px;border:1px solid hsl(var(--icon-h) 45% 58%);background:
  radial-gradient(circle at 35% 28%,hsl(var(--icon-h2) 65% 58% / .72),transparent 42%),
  linear-gradient(145deg,hsl(var(--icon-h) 45% 32%),hsl(var(--icon-h2) 38% 13%));box-shadow:inset 0 0 0 2px rgba(255,255,255,.08),0 2px 5px rgba(0,0,0,.6);font-style:normal}
.ability-art i{font-style:normal;font-size:1.35rem;filter:drop-shadow(0 2px 2px #000)}.ability-art b{position:absolute;right:-3px;bottom:-3px;min-width:17px;height:17px;padding:0 3px;display:grid;place-items:center;border-radius:50%;background:#171008;border:1px solid #d5ad67;color:#f8dfaa;font:800 .62rem system-ui}
.quick-slot .ability-art{width:36px;height:36px}.quick-slot .ability-art i{font-size:1.05rem}.quick-slot>span:not(.ability-art){font-size:1.2rem}
.book-actions{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.45rem}.book-actions button{font-size:.72rem;padding:.32rem .48rem}
.quickbar-editor{margin-top:1rem;padding:.65rem;border:1px solid #765a35;background:rgba(32,22,12,.22)}.quickbar-editor>div{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.35rem;border-bottom:1px solid rgba(111,80,42,.25)}.quickbar-editor>div>span:first-child{display:flex;align-items:center;gap:.45rem}.quickbar-editor .ability-art{width:31px;height:31px}.quickbar-editor button{padding:.2rem .38rem}
.character-book{display:grid;grid-template-columns:1fr 1fr;max-height:76vh;overflow:auto;background:
  linear-gradient(90deg,#d8c08e 0,#ead8ad 48.8%,#8a6b3e 49.5%,#8a6b3e 50.5%,#ead8ad 51.2%,#d8c08e 100%);color:#302316;border:6px solid #3a2715;box-shadow:inset 0 0 35px rgba(78,48,20,.45)}
.character-page{padding:1.2rem 1.4rem;min-width:0}.character-page h2,.character-page h3{color:#4b2d18;border-bottom:1px solid rgba(78,45,20,.35);font-family:Georgia,serif}.character-page .muted{color:#6d5941}.illuminated:first-letter{float:left;font:700 3.2rem/2.5rem Georgia,serif;color:#7c301d;padding:.1rem .3rem 0 0}.character-identity{display:grid;gap:.2rem;padding:.55rem;border:1px solid rgba(82,51,25,.35);background:rgba(255,245,218,.35)}
.character-book .derived-stats>div,.character-book .ability-card,.character-book .progression-list>div{background:rgba(255,248,224,.34);border-color:rgba(78,47,23,.34);color:#302316}.character-book .derived-stats span,.character-book .ability-card p,.character-book .saving-throw span,.character-book .saving-throw em{color:#6a543b}.character-book .derived-stats b,.character-book .ability-title>b{color:#713a22}.character-book .ability-numbers strong{color:#492719}.character-book .skill-mod-list>div{border-color:rgba(80,50,25,.2)}
.book-equipment-list{display:grid;grid-template-columns:1fr 1fr;gap:.45rem}.book-equipment{display:grid;grid-template-columns:64px 1fr;gap:.55rem;padding:.5rem;border:1px solid rgba(86,54,27,.35);background:rgba(255,246,219,.28)}.book-equipment .item-art{width:58px;height:58px}.book-equipment p{margin:.15rem 0;font-size:.72rem;line-height:1.3;color:#5c4933}.trait-list{display:grid;gap:.35rem;max-height:280px;overflow:auto}.trait-entry{padding:.45rem;border-left:3px solid #8d5a2e;background:rgba(255,247,222,.28)}.trait-entry p{margin:.2rem 0;font-size:.76rem;color:#5e4a34}.companion-notes{display:grid;gap:.35rem}.companion-note{display:grid;gap:.1rem;padding:.4rem;border-bottom:1px solid rgba(83,50,25,.25)}.companion-note span{font-size:.72rem;color:#654f38}
.ability-price{margin:.25rem 0;color:#c8a979;font-size:.75rem}.notice.danger{border-color:#8a433b;color:#efb8ac}
.inventory-item[title]{cursor:help}.inventory-item .inventory-actions{opacity:.96}.inventory-item small{line-height:1.15}
@media(max-width:980px){.character-book{grid-template-columns:1fr;background:#ead8ad}.book-equipment-list{grid-template-columns:1fr}.main-menu-card{padding:1.2rem}.main-menu-card h1{font-size:2rem}}
.item-description{font-size:.63rem;line-height:1.22;color:#b9a789;margin:.18rem 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:2.3rem}


/* v10: торговые контейнеры, казна владений и производственные склады */
.trade-container{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;max-height:58vh;overflow:auto;text-align:left}
.trade-container>section{min-width:0;border:1px solid #5a452d;background:#16110c;border-radius:9px;padding:.65rem}
.trade-container h3{margin:.1rem 0 .55rem;color:#e6c77d}
.trade-grid{display:grid;gap:.45rem}
.trade-item{display:grid;grid-template-columns:58px 1fr auto;gap:.55rem;align-items:center;border:1px solid #4d3b28;background:linear-gradient(145deg,#21180f,#14100c);border-radius:8px;padding:.45rem}
.trade-item .item-art{width:52px;height:52px}
.trade-item div{display:grid;gap:.14rem;min-width:0}
.trade-item small{color:#b9aa8e;line-height:1.25}
.trade-item span{color:#e4c473;font-weight:700}
.trade-item button{white-space:nowrap}
.trade-footer{display:flex;justify-content:space-between;align-items:center;gap:.7rem;margin-top:.7rem;border-top:1px solid #56432c;padding-top:.6rem}
.ownership-dashboard{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.ownership-dashboard>.panel-box{min-width:0}
.ownership-chest{background:radial-gradient(circle at 50% 35%,rgba(143,103,38,.22),transparent 55%),#17120d}
.treasury-amount{font:700 1.8rem Georgia,serif;color:#f0ce76;margin:.65rem 0}
.ownership-production,.ownership-recruit{grid-column:1/-1}
.production-storage{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:.5rem}
.hire-card{display:grid;grid-template-columns:1fr auto;gap:.3rem .7rem;align-items:center;border:1px solid #4d3b28;border-radius:7px;padding:.55rem;margin:.4rem 0;background:#17120d}
.hire-card span{color:#b9aa8e}
.hire-card button{grid-row:1/3;grid-column:2}
.item-rarity-fine{box-shadow:inset 0 0 0 1px #719574}
.item-rarity-masterwork{box-shadow:inset 0 0 0 1px #7799c4}
.item-rarity-rare{box-shadow:inset 0 0 0 1px #a174c5}
.item-rarity-legendary{box-shadow:inset 0 0 0 1px #d6a94c,0 0 12px rgba(214,169,76,.22)}
#cancelTargetBtn:not(.hidden){animation:targetCancelPulse 1.25s ease-in-out infinite}
@keyframes targetCancelPulse{50%{box-shadow:0 0 0 3px rgba(176,62,51,.18),0 0 14px rgba(176,62,51,.28)}}
@media(max-width:900px){.trade-container,.ownership-dashboard{grid-template-columns:1fr}.ownership-production,.ownership-recruit{grid-column:auto}}


/* v11 calibrated viewport and tabletop UI */
.canvas-shell{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#16120d;min-width:0;aspect-ratio:18/11;max-height:calc(100vh - 196px)}
#gameCanvas{display:block;width:100%;height:100%;object-fit:contain;aspect-ratio:18/11;image-rendering:auto}
.game-stage,.game-main,.center-stage{min-width:0;min-height:0}
.formation-picker{margin:0 0 12px}.formation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}.formation-grid button{text-align:left;display:grid;gap:4px}.formation-grid small{white-space:normal;color:var(--muted)}
.sb11-dice-overlay{pointer-events:none}.rest-camp-overlay{backdrop-filter:blur(3px)}
@media(max-width:1400px){.canvas-shell{max-height:calc(100vh - 172px)}.command-deck{font-size:.9rem}}


/* Seven Banners v12: calibrated canvas, quest conversations and chronicle layout */
.layout{grid-template-columns:66px minmax(620px,1fr) 350px}
.sidebar{gap:5px}.portrait-card,.equipment-card,.selection-panel,.party-card{flex-shrink:0}
.selection-panel{max-height:125px}.party-card .party-list{max-height:105px}
.log-card{flex:1 1 45%;min-height:360px}.log{min-height:315px;font-size:.86rem}
.log-entry{display:block;border-left:3px solid rgba(192,150,83,.42);padding:.42rem .5rem;background:linear-gradient(90deg,rgba(83,60,32,.18),rgba(0,0,0,.12))}
.log-entry-head{display:flex;justify-content:space-between;gap:.6rem;align-items:baseline;border-bottom:1px solid rgba(187,145,79,.18);padding-bottom:.18rem}.log-entry-head b{font-size:.75rem;color:#e2c181}.log-entry-head time{font-size:.62rem;color:#a99775;white-space:nowrap}.log-entry p{margin:.28rem 0;line-height:1.42}.log-entry small{display:block;color:#978568;font-size:.64rem}
.journal-modal{width:min(1540px,98vw);height:min(960px,96vh)}.journal-events{min-height:560px}.journal-event-list{height:520px;padding:.65rem}.journal-record{padding:.6rem .7rem}.journal-record p{font-size:.93rem;line-height:1.52}.journal-record footer{display:flex;gap:.7rem;flex-wrap:wrap;color:#a99575;font-size:.68rem;border-top:1px solid rgba(177,134,73,.15);padding-top:.3rem}
.quest-dialogue-line{padding:.75rem .85rem;border-left:4px solid #b8894c;background:rgba(0,0,0,.22);margin-bottom:.7rem}.quest-dialogue-line span{font-size:.72rem;color:#caa86d}.quest-dialogue-line p{font:italic 1.02rem/1.55 Georgia,serif;margin:.25rem 0}.quest-brief{padding:.55rem .7rem;border:1px solid #5f482c;background:#17110b}.quest-brief p{margin:.35rem 0}.quest-contract-note{margin-top:.7rem;padding:.5rem .65rem;border:1px solid #76603f;background:rgba(68,47,25,.4)}.quest-contract-note.success{border-color:#627b4d}.quest-contract-note.failed{border-color:#81534a}.dialogue-choices .skill-choice{border-left:3px solid #7890a8}.background-grid .choice-card{min-height:180px}
#gameCanvas{touch-action:none}
@media(max-width:1350px){.layout{grid-template-columns:58px minmax(600px,1fr) 300px}.log-card{min-height:320px}.log{min-height:270px}}
@media(max-width:980px){.log-card{min-height:300px}.log{min-height:250px}.journal-events{min-height:440px}.journal-event-list{height:400px}}

/* v14: selective corpse inventory */
.loot-modal{width:min(900px,calc(100vw - 28px))}.loot-summary{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.75rem;border:1px solid #5b472f;background:#17110c;border-radius:9px;margin-bottom:.75rem}.loot-gold{font-size:1.05rem;color:#e6c77d}.loot-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;max-height:55vh;overflow:auto}.loot-entry{display:grid;grid-template-columns:54px 1fr auto;gap:.65rem;align-items:center;padding:.65rem;border:1px solid #59462e;border-radius:8px;background:linear-gradient(145deg,#241b12,#15100b)}.loot-entry .loot-icon{width:50px;height:50px;border-radius:8px;display:grid;place-items:center;font-size:1.55rem;background:#100c08;border:1px solid #6a5234}.loot-entry small{display:block;color:var(--muted);line-height:1.25}.loot-entry button{white-space:nowrap}.loot-empty{padding:1.2rem;text-align:center;border:1px dashed #675139;border-radius:8px;color:var(--muted)}.loot-actions{display:flex;gap:.55rem;justify-content:flex-end;flex-wrap:wrap;margin-top:.75rem}.tutorial-object{outline:2px solid rgba(225,185,86,.75);box-shadow:0 0 18px rgba(225,185,86,.35)}
@media(max-width:700px){.loot-list{grid-template-columns:1fr}.loot-entry{grid-template-columns:46px 1fr}.loot-entry button{grid-column:1/-1}.loot-summary{align-items:flex-start;flex-direction:column}}

/* v16: taller journal in the right-hand column */
@media (min-width: 981px){
  .layout{grid-template-columns:66px minmax(640px,1fr) 390px}
  .sidebar{min-height:calc(100vh - 104px)}
  .sidebar .log-card{flex:1 1 520px;min-height:460px;display:flex;flex-direction:column}
  .sidebar .log-card .log{flex:1 1 auto;min-height:390px;max-height:none}
}

/* v16: comprehensive D&D 5e 2014 character choices */
.spell-choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:.45rem;max-height:340px;overflow:auto;padding:.15rem}
.spell-choice{display:grid;grid-template-columns:auto 1fr;gap:.18rem .5rem;align-items:start;padding:.55rem;border:1px solid #59462e;border-radius:7px;background:linear-gradient(145deg,#241b12,#15100b);cursor:pointer}
.spell-choice input{grid-row:1/3;margin-top:.18rem}.spell-choice b{line-height:1.25}.spell-choice small{color:var(--muted);line-height:1.35}
.feat-choice-grid{display:grid;gap:.45rem;max-height:450px;overflow:auto;padding-right:.2rem}.feat-choice-grid article{display:grid;grid-template-columns:1fr auto;gap:.25rem .7rem;align-items:center;padding:.55rem .65rem;border:1px solid #59462e;border-radius:7px;background:#17110c}.feat-choice-grid article p{grid-column:1/2;margin:.1rem 0;color:var(--muted);line-height:1.35}.feat-choice-grid article button{grid-column:2;grid-row:1/3}
.proficiency-summary{display:grid;gap:.32rem;padding:.65rem;border:1px solid #5f482c;border-radius:8px;background:rgba(23,17,12,.75)}.proficiency-summary p{margin:0;line-height:1.45}
.skill-mod-list>div.proficient{border-left:3px solid #c89b54;background:rgba(122,84,38,.18)}
@media(max-width:680px){.spell-choice-grid{grid-template-columns:1fr}.feat-choice-grid article{grid-template-columns:1fr}.feat-choice-grid article button{grid-column:1;grid-row:auto}}

.sb-avatar-card{display:grid;grid-template-columns:auto 1fr;gap:.6rem;align-items:center;padding:.35rem .45rem;border:1px solid rgba(115,86,49,.45);background:rgba(21,15,11,.22);border-radius:8px}
.sb-avatar-card.compact{gap:.45rem;padding:.25rem .35rem}
.sb-avatar-card figcaption{display:grid;gap:.08rem;min-width:0}
.sb-avatar-card figcaption b{font-size:.86rem;line-height:1.1}
.sb-avatar-card figcaption small{color:var(--muted);font-size:.72rem;line-height:1.2}
.sb-avatar-card figcaption em{font-style:normal;color:#c4a77a;font-size:.69rem;line-height:1.2}
.sb-avatar-img{display:block;object-fit:cover;border-radius:8px;border:1px solid rgba(214,177,102,.55);background:radial-gradient(circle at 50% 30%,#7b6040,#20150c 72%);box-shadow:inset 0 0 24px rgba(0,0,0,.35)}
.dialogue-portrait{padding:.35rem;overflow:hidden}
.dialogue-portrait .sb-avatar-img{width:100%;height:100%;border-radius:9px}
.party-manage{grid-template-columns:112px 1fr 180px auto}
.party-manage .party-main{display:grid;grid-template-columns:96px 1fr;gap:.75rem;align-items:center}
.party-manage .party-main .sb-avatar-card{background:none;border:none;padding:0;grid-template-columns:1fr}
.party-manage .party-main .sb-avatar-card figcaption{display:none}
.party-manage .party-main .sb-avatar-img{width:92px;height:92px}
.party-manage .party-text{display:grid;gap:.2rem}
.party-manage .party-text p{margin:.05rem 0}
.character-hero-head{display:grid;grid-template-columns:120px 1fr;gap:.8rem;align-items:center;margin-bottom:.85rem}
.character-hero-head .sb-avatar-img{width:116px;height:116px;border-radius:10px}
.companion-notes{display:grid;gap:.45rem}
.companion-note{display:grid;grid-template-columns:88px 1fr;gap:.55rem;align-items:center;padding:.4rem;border-bottom:1px solid rgba(83,50,25,.25)}
.companion-note .sb-avatar-card{background:none;border:none;padding:0;grid-template-columns:1fr}
.companion-note .sb-avatar-card figcaption{display:none}
.companion-note .sb-avatar-img{width:82px;height:82px}
.companion-note .companion-summary{display:grid;gap:.12rem}
.companion-note .companion-summary small{color:#654f38}
.party-inline-roster{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.45rem;margin-top:.65rem}
.party-inline-roster .sb-avatar-img{width:60px;height:60px}
@media(max-width:860px){.party-manage{grid-template-columns:1fr}.party-manage .party-main{grid-template-columns:84px 1fr}.character-hero-head{grid-template-columns:1fr}.companion-note{grid-template-columns:1fr}}

/* v17.3.1 avatar/dialogue corrections */
.dialogue-layout{grid-template-columns:220px 1fr}
.dialogue-portrait{width:210px;height:auto;min-height:246px;padding:5px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:.35rem;font-size:inherit}
.dialogue-portrait .sb-avatar-img{width:200px;height:200px;min-width:200px;min-height:200px;object-fit:cover}
.dialogue-avatar-caption{width:100%;display:grid;gap:.05rem;text-align:center;padding:.15rem .25rem .25rem;background:rgba(14,10,7,.78);border-top:1px solid rgba(221,181,101,.35)}
.dialogue-avatar-caption b{font-size:.84rem;color:#efcf8b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dialogue-avatar-caption small{font-size:.68rem;color:#bca985}
@media(max-width:680px){.dialogue-layout{grid-template-columns:1fr}.dialogue-portrait{width:210px;min-height:246px;margin:0 auto}}

/* v17.3.2 — overflow and responsive layout corrections */
.sb-avatar-card,
.sb-avatar-card *{box-sizing:border-box}
.sb-avatar-card{margin:0;min-width:0;max-width:100%;overflow:hidden}
.sb-avatar-card figcaption,.sb-avatar-card figcaption b,.sb-avatar-card figcaption small,.sb-avatar-card figcaption em{min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:normal}
.sb-avatar-img{max-width:100%;flex:0 0 auto}

/* Character book: keep the portrait in its own column and stop text crossing the centre fold. */
.character-hero-head{grid-template-columns:124px minmax(0,1fr);align-items:start}
.character-hero-head>div{min-width:0}
.character-hero-head>.sb-avatar-card{width:120px;grid-template-columns:1fr;padding:2px;background:rgba(255,246,219,.22)}
.character-hero-head>.sb-avatar-card figcaption{display:none}
.character-hero-head .sb-avatar-img{width:116px;height:116px;max-width:116px}
.character-hero-head h2{margin:.05rem 0 .35rem;overflow-wrap:anywhere}
.character-hero-head .illuminated{margin:.25rem 0 .65rem;line-height:1.42;overflow-wrap:anywhere}
.character-identity{min-width:0;overflow-wrap:anywhere}
.character-page{overflow:hidden}
.character-book .dnd-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}
.character-book .ability-card{min-width:0;overflow:hidden;padding:.58rem}
.character-book .ability-title{min-width:0;flex-wrap:wrap}
.character-book .ability-title span{min-width:0;overflow-wrap:anywhere}
.character-book .ability-title i{margin-left:0}
.character-book .ability-numbers{grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr);gap:.22rem}
.character-book .ability-numbers small{overflow-wrap:anywhere}
.character-book .dnd-ability p{min-height:0;overflow-wrap:anywhere}
.character-book .saving-throw{display:flex;gap:.3rem;align-items:center;flex-wrap:wrap}
.character-book .proficiency-summary{position:static;max-width:100%;overflow:hidden;background:rgba(255,246,219,.32);border-color:rgba(86,54,27,.38);color:#3b2918}
.character-book .proficiency-summary p{color:#4f3a25;overflow-wrap:anywhere}
.character-book .proficiency-summary b{color:#4b2d18}

/* Companion entries in the book. */
.companion-note{grid-template-columns:86px minmax(0,1fr);align-items:start;min-width:0;overflow:hidden}
.companion-note>.sb-avatar-card{width:84px;min-width:84px;margin:0;padding:1px}
.companion-note>.sb-avatar-card figcaption{display:none}
.companion-note .sb-avatar-img{width:82px;height:82px;max-width:82px}
.companion-note .companion-summary{min-width:0;overflow:hidden}
.companion-note .companion-summary>*{min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:normal}

/* Party management: the descriptive block receives flexible width instead of 112px. */
.party-manage{grid-template-columns:minmax(360px,1fr) minmax(190px,240px) minmax(125px,165px) auto;gap:.75rem;align-items:center;min-width:0;overflow:hidden}
.party-manage>*{min-width:0}
.party-manage .party-main{grid-template-columns:96px minmax(0,1fr);min-width:0;align-items:start}
.party-manage .party-main>.sb-avatar-card{width:94px;min-width:94px;margin:0;padding:1px}
.party-manage .party-main .sb-avatar-img{width:92px;height:92px;max-width:92px}
.party-manage .party-text{min-width:0;overflow:hidden}
.party-manage .party-text h3,.party-manage .party-text p{max-width:100%;overflow-wrap:anywhere;word-break:normal}
.party-manage label{display:grid;gap:.3rem;min-width:0}
.party-manage select{width:100%;min-width:0;max-width:100%}
.party-manage .party-side-meta{min-width:0;overflow-wrap:anywhere}
.party-manage>button{white-space:nowrap}

/* Equipped-item column: the artwork is 68px, therefore reserve enough space for it. */
.equipment-slot{grid-template-columns:72px minmax(0,1fr);align-items:start;min-height:104px;overflow:hidden}
.equipment-slot>.slot-picture{width:68px;height:68px;max-width:68px;margin:0}
.equipment-slot>div:last-child{min-width:0;display:grid;gap:.15rem;align-content:start}
.equipment-slot>div:last-child>*{min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:normal}
.equipment-slot>div:last-child>b{line-height:1.2}
.equipment-slot>div:last-child small{line-height:1.28}
.equipment-slot .mini{justify-self:start;margin-top:.15rem;position:static}
.equipment-paper{min-width:0;overflow:hidden}

@media(max-width:1180px){
  .party-manage{grid-template-columns:minmax(0,1fr) minmax(190px,240px)}
  .party-manage .party-side-meta{grid-column:1}
  .party-manage>button{grid-column:2;grid-row:2;justify-self:end}
}
@media(max-width:980px){
  .character-book .dnd-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .character-page{overflow:visible}
}
@media(max-width:760px){
  .party-manage{grid-template-columns:1fr}
  .party-manage>button,.party-manage .party-side-meta{grid-column:auto;grid-row:auto;justify-self:stretch}
  .party-manage .party-main{grid-template-columns:82px minmax(0,1fr)}
  .party-manage .party-main>.sb-avatar-card{width:80px;min-width:80px}
  .party-manage .party-main .sb-avatar-img{width:78px;height:78px}
  .character-book .dnd-grid{grid-template-columns:1fr}
}
@media(max-width:520px){
  .character-hero-head{grid-template-columns:1fr}
  .character-hero-head>.sb-avatar-card{width:120px;justify-self:center}
  .companion-note{grid-template-columns:72px minmax(0,1fr)}
  .companion-note>.sb-avatar-card{width:70px;min-width:70px}
  .companion-note .sb-avatar-img{width:68px;height:68px}
}

/* v17.3.3 — квестовые письма и документы */
.document-modal{width:min(720px,calc(100vw - 28px));background:transparent;border:0;box-shadow:none;padding:0}
.document-modal::backdrop{background:rgba(5,4,3,.72);backdrop-filter:blur(2px)}
.document-modal form{padding:0;background:transparent;border:0;box-shadow:none}
.document-frame{position:relative;min-height:420px;padding:2.4rem 3.2rem 2.2rem;color:#382714;background:
  linear-gradient(90deg,rgba(112,70,26,.12),transparent 8%,transparent 92%,rgba(112,70,26,.12)),
  repeating-linear-gradient(0deg,rgba(91,56,24,.025) 0 1px,transparent 1px 5px),
  #e4ca94;border:1px solid #7c572d;box-shadow:0 22px 70px #000,inset 0 0 45px rgba(89,52,20,.22);transform:rotate(-.15deg);overflow:hidden}
.document-frame:before,.document-frame:after{content:"";position:absolute;left:18px;right:18px;height:1px;background:rgba(92,54,21,.2)}
.document-frame:before{top:22px}.document-frame:after{bottom:22px}
.document-fold{position:absolute;right:-28px;top:-28px;width:92px;height:92px;background:linear-gradient(135deg,#c6a66c 49%,#f0dbad 51%);box-shadow:-4px 5px 10px rgba(70,42,17,.25)}
.document-seal{position:absolute;right:2.4rem;bottom:2.25rem;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 30%,#a64d3b,#6d211c 70%);border:3px double #d29a62;color:#ead4a5;font:bold 14px Georgia,serif;transform:rotate(-8deg);box-shadow:0 3px 8px rgba(60,27,15,.35)}
.document-kicker{margin:0 0 .45rem;text-align:center;font:700 .7rem/1.2 system-ui,sans-serif;letter-spacing:.22em;color:#795329}
.document-frame h2{margin:.15rem 4.5rem 1.2rem 0;text-align:center;font:700 1.7rem/1.15 Georgia,serif;color:#4a2c17;border-bottom:1px solid rgba(91,55,24,.35);padding-bottom:.55rem}
.document-content{font:italic 1.05rem/1.68 Georgia,serif;white-space:pre-line;min-height:210px}
.document-content p{margin:.6rem 0}
.document-route{margin-top:1rem;padding:.65rem .8rem;border-left:4px solid #8f5e2c;background:rgba(255,247,216,.34);font-style:normal}
.document-hint{margin:1rem 5rem .7rem 0;color:#6c4a29;font:.78rem/1.35 system-ui,sans-serif}
.document-frame button{background:linear-gradient(#76502d,#50321c);border-color:#8f653c;color:#f7e7c5}
@media(max-width:620px){.document-frame{padding:1.7rem 1.25rem 1.5rem}.document-frame h2{margin-right:3.2rem;font-size:1.35rem}.document-content{font-size:.94rem}.document-seal{right:1.2rem;bottom:1.3rem;width:44px;height:44px}.document-hint{margin-right:3.4rem}}

/* Seven Realms Online v1.0.0 multiplayer HUD */
.mmo-hud{position:absolute;left:14px;right:14px;top:12px;z-index:8;pointer-events:none;display:grid;grid-template-columns:auto minmax(220px,360px);gap:10px;align-items:start;font-family:Georgia,serif}
.mmo-connection,.mmo-ap{display:flex;align-items:center;gap:8px;background:rgba(24,19,13,.88);border:1px solid rgba(211,178,109,.5);box-shadow:0 4px 16px rgba(0,0,0,.35);color:#f0ddb3;padding:7px 10px;border-radius:4px;backdrop-filter:blur(3px)}
.mmo-connection i{width:9px;height:9px;border-radius:50%;background:#8d3c35;box-shadow:0 0 8px rgba(141,60,53,.8)}
.mmo-connection i.online{background:#6fa45d;box-shadow:0 0 8px rgba(111,164,93,.9)}
.mmo-connection b{margin-left:8px;color:#ceb678;font-size:12px}
.mmo-ap{grid-column:2;justify-self:stretch}
.mmo-ap>div{height:10px;flex:1;background:#211713;border:1px solid #7c6544;overflow:hidden;border-radius:8px}
.mmo-ap>div i{display:block;height:100%;width:0;background:linear-gradient(90deg,#7d5bb1,#c39ae8);transition:width .12s linear}
.mmo-ap b{min-width:74px;text-align:right;font-variant-numeric:tabular-nums}
.mmo-action-bar{grid-column:1/-1;justify-self:center;display:flex;gap:5px;pointer-events:auto;margin-top:4px}
.mmo-action-bar button{min-width:92px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:0 6px;align-items:center;padding:6px 8px;background:rgba(31,24,17,.92);border:1px solid #78613e;color:#e8d4a8;border-radius:3px;box-shadow:0 3px 9px rgba(0,0,0,.35)}
.mmo-action-bar button.active{border-color:#e2bb61;box-shadow:0 0 0 2px rgba(226,187,97,.25),0 3px 9px rgba(0,0,0,.35);background:rgba(75,54,28,.96)}
.mmo-action-bar kbd{grid-row:1/3;border:1px solid #a68c57;background:#17110c;padding:3px 5px;color:#f6df9d;border-radius:3px}
.mmo-action-bar span{font-weight:700;font-size:12px;text-align:left}.mmo-action-bar small{font-size:10px;color:#b7a17b;text-align:left}
.speed-controls{display:none!important}
@media(max-width:850px){.mmo-hud{grid-template-columns:1fr}.mmo-ap{grid-column:1}.mmo-action-bar{overflow-x:auto;max-width:96vw;justify-self:stretch;justify-content:flex-start}.mmo-action-bar button{min-width:82px}.mmo-connection{font-size:11px}}
.mmo-action-bar button.cooldown{filter:saturate(.45);opacity:.72}
