/* Through the Rift — the live client. Keep the original game/editor styles as
   the structural base; this sheet owns the visual shell, not game behaviour. */
:root{
  color-scheme:dark;
  --sea:#051716;--land:#102723;--bone:#e1e9d5;--haze:#9db5a7;
  --brass:#c3d3ae;--brass-dim:#49685a;--gold-hi:#e4edcc;
  --dm:#b9d8c8;--route:#d4977b;--verdigris:#86b9a7;
  --parchment:#dce7ce;--vellum:#a7c4a6;--ink:#10251e;--ink-soft:#426052;
  --table:#071c19;--table-hi:#132e26;--gilt:#b8c89e;
  --rift-line:rgba(184,211,187,.23);--rift-glass:rgba(7,28,26,.86);
  --sans:system-ui,-apple-system,"Segoe UI",sans-serif;
  --rift-header:82px;--rift-footer:88px;
}
body{background:var(--sea);isolation:isolate;height:100dvh}
button,input,select,textarea{accent-color:var(--brass)}
button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,
textarea:focus-visible,select:focus-visible{outline:2px solid var(--brass);outline-offset:3px}
[hidden]{display:none!important}
#play-ring,#gate-bg,#gate-plan,#gate-chart,#gate-vig,#gate-mark,.ledger>.mast-sub{display:none}

/* A still readable world, even when images or animation are unavailable. */
#rift-world{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:#041414}
.rift-art{position:absolute;inset:-2%;background:url("assets/through-the-rift.png") 70% 50%/cover no-repeat;opacity:.32;animation:rift-breathe 28s ease-in-out infinite alternate}
.rift-shade{position:absolute;inset:0;background:linear-gradient(90deg,#041817e8 15%,#04181796 55%,#04181745),linear-gradient(0deg,#041817ec,transparent 75%)}
.rift-mist{position:absolute;inset:35% -15% -20%;background:radial-gradient(ellipse at 70% 70%,#97d7b925,transparent 58%);animation:rift-drift 19s ease-in-out infinite alternate;opacity:.3}
.rift-motes{position:absolute;inset:0;opacity:.25}
.rift-motes i{position:absolute;left:var(--x);top:var(--y);width:2px;height:2px;background:#dcf7d7;box-shadow:0 0 9px #bce8c1;border-radius:50%;animation:rift-float 12s linear infinite;animation-delay:var(--delay)}
body.gated .rift-art,body.rift-dungeon .rift-art{opacity:1}
body.gated .rift-mist,body.rift-dungeon .rift-mist{opacity:.8}
body.gated .rift-motes,body.rift-dungeon .rift-motes{opacity:.8}
body.gated .rift-shade{background:linear-gradient(90deg,#041415ee 10%,#041415a0 43%,#04141512 85%),linear-gradient(0deg,#041415d9,transparent 70%)}
@keyframes rift-breathe{from{transform:scale(1)}to{transform:scale(1.04)}}
@keyframes rift-drift{from{transform:translate(-3%,2%)}to{transform:translate(4%,-3%)}}
@keyframes rift-float{0%{transform:translate(0,25px);opacity:0}20%{opacity:.7}80%{opacity:.3}100%{transform:translate(24px,-125px);opacity:0}}
.rift-motion-off *, .rift-motion-off *::before,.rift-motion-off *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
.rift-motion-off #fx-hit,.rift-motion-off #fx-wound{display:none!important}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  #fx-hit,#fx-wound{display:none!important}
}

/* The same masthead at the threshold and inside the world. */
#rift-header{position:relative;z-index:1001;display:flex;align-items:center;gap:30px;min-height:var(--rift-header);flex:0 0 var(--rift-header);margin:0 36px;border-bottom:1px solid var(--rift-line)}
.rift-brand{font:24px var(--serif);letter-spacing:.22em;color:#ecf1d9;white-space:nowrap}
.rift-brand small{display:block;font:8px var(--sans);letter-spacing:.18em;color:var(--haze);margin-top:7px}
#rift-location{font:11px var(--sans);letter-spacing:.06em;color:var(--haze);padding-left:27px;border-left:1px solid var(--rift-line);min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.rift-header-end{display:flex;align-items:center;gap:24px;margin-left:auto}
#rift-motion{border:0;background:none;color:var(--haze);font:10px var(--sans);cursor:pointer;white-space:nowrap;padding:10px 0}
#link-state{position:static;background:none;border:0;padding:0;max-width:240px;text-align:right;font:10px/1.6 var(--sans);letter-spacing:.02em;color:var(--haze)}
#link-state::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:currentColor;margin-right:8px;vertical-align:1px}
#link-state.err{color:var(--route)}

/* Login: the account protocol, with a cinematic threshold around it. */
#gate{background:transparent;z-index:1;overflow:auto;padding:46px max(36px,7vw) 20px}
#gate.on{display:flex;flex-direction:column;align-items:flex-start}
#rift-invitation{max-width:465px;margin-bottom:27px}
.rift-eyebrow{font:9px/1.5 var(--sans);letter-spacing:.19em;text-transform:uppercase;color:var(--haze)}
#rift-invitation h1{font:clamp(48px,5.2vw,78px)/1.04 var(--serif);letter-spacing:-.045em;font-weight:400;margin:15px 0 20px;color:#edf0d9}
#rift-invitation h1 em{font-weight:400;color:#c3ddc6}
#rift-invitation p{font:15px/1.8 var(--serif);color:#bbcec1;max-width:365px}
#gate .ledger{position:relative;left:auto;top:auto;transform:none;z-index:1;flex-shrink:0;width:390px;max-width:100%;max-height:none;overflow:visible;background:rgba(6,27,26,.8);border:1px solid var(--rift-line);border-top-color:#abc9ac80;outline:none;padding:0 0 14px;box-shadow:0 20px 65px #0003;backdrop-filter:blur(16px)}
#gate .ledger.wide{width:min(700px,65vw)}
/* Keep sign-in, the account menu and character selection centered without moving the scenery
   or changing the layout of character creation and the other account steps. */
#gate:is([data-step="account"],[data-step="menu"],[data-step="chars"]) .ledger{
  align-self:center;margin-inline:auto;
}
.ledger-head{padding:16px 24px;border-bottom:1px solid var(--rift-line);background:none}
.ledger-head .init,.ledger-head .label{font:11px var(--sans);font-variant:normal;letter-spacing:.13em;color:var(--brass)}
.ledger-body{padding:20px 24px 4px}
.field{margin-bottom:16px}
.field label{font:9px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--haze);margin-bottom:8px}
.field input{font:16px var(--serif);padding:10px 12px;background:#9bc8ac09;border:1px solid var(--rift-line)}
.field input:focus{background:#bad6b70d;border-color:var(--brass)}
.gate-btn{font:11px var(--sans);font-variant:normal;letter-spacing:.08em;padding:13px 12px;background:#c2d2ac;color:#152d22;border-color:#c2d2ac}
.gate-btn.ghost{font-size:10px;border-color:var(--rift-line);color:var(--haze)}
.gate-note{font-size:12px;line-height:1.65}
.gate-err:empty{display:none}
#gate[data-step]:not([data-step="account"]) #rift-invitation h1{font-size:40px;margin-block:8px}
#gate[data-step]:not([data-step="account"]) #rift-invitation p{display:none}
#gate[data-step]:not([data-step="account"]) #rift-invitation{margin-bottom:20px}
#gate-notes{position:relative;left:auto;top:auto;width:min(560px,100%);order:4;margin:25px 0 20px;z-index:1}
#gate-notes:has(.chron:empty){display:none}
#gate-notes h3{font:9px var(--sans);letter-spacing:.17em;color:var(--haze)}
.chron{font-size:12px;max-height:150px;overflow:auto}
.chron div{border-color:var(--rift-line);padding:6px 0}
#gate-colophon{position:relative;inset:auto;order:5;margin-top:auto;padding:22px 0 0;max-width:950px;color:#8da69a;text-align:left;background:none;font:9px/1.7 var(--sans)}
.mtile,.pick,.roster .char{background:#aacba20a;border-color:var(--rift-line)}
.mtile{padding:15px}.mtile .t{font-size:17px;font-weight:400}.mtile .d{font-size:12px;line-height:1.6}

/* Play: tool rail, room, console, and a quiet stack of real world data. */
main{padding:22px 36px 18px;gap:26px;flex-direction:row}
#rift-tools{display:flex;flex-direction:column;gap:10px;flex:0 0 55px;overflow-y:auto;border-right:1px solid var(--rift-line);padding-right:13px}
#rift-tools .tool{font:9px var(--sans);letter-spacing:0;font-variant:normal;background:none;border:1px solid transparent;padding:7px 2px;min-height:53px;width:40px;color:var(--haze)}
#rift-tools .tool>span{font:24px/1.1 var(--serif);display:block;margin-bottom:7px;color:#b7cdb7}
#rift-tools .tool:hover,#rift-tools .tool.on{background:#b9d1b514;border-color:var(--rift-line);color:var(--bone)}
#rift-tools .rift-tool-bottom{margin-top:auto}
#rift-tools,#rift-room-header,#rift-exits,#rift-character-bar{display:none}
body.rift-playing #rift-tools{display:flex}
body.rift-playing #rift-room-header{display:block}
body.rift-playing #rift-exits{display:flex}
body.rift-playing #rift-character-bar{display:flex}
#term-col{flex:1 1 auto;min-height:0}
#rift-room-header{padding:0 0 19px;border-bottom:1px solid var(--rift-line);flex-shrink:0}
#rift-room-name{font:clamp(24px,2.9vw,42px)/1.2 var(--serif);font-weight:400;letter-spacing:-.025em;margin-top:9px;overflow-wrap:anywhere}
#term-frame{border:0;outline:none;background:rgba(4,20,20,.5);padding:17px 8px 10px 0}
.xterm .xterm-viewport{background:transparent!important}
#rift-exits,.rift-dungeon-exits{display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:12px 0;border-block:1px solid var(--rift-line);flex-shrink:0}
#rift-exits:empty,.rift-dungeon-exits:empty{display:none!important}
.rift-exit{border:1px solid var(--rift-line);padding:8px 12px;color:var(--bone);background:#a6cbb60a;font:13px var(--serif);cursor:pointer;text-transform:capitalize;min-height:35px}
.rift-exit small{font:9px var(--sans);color:var(--haze);margin-left:7px}
.rift-exit:hover{border-color:var(--brass);background:#b5d0a91c}
#cmd-row{margin-top:0;padding:11px 0 0;gap:12px}
#cmd-prompt{color:var(--brass);font-size:23px}
#cmd-input{padding:10px 0;border-color:var(--rift-line);font-size:14px;min-width:0}
#cmd-input::placeholder{color:#89a497}
#side-col{flex:0 0 295px;padding:0 5px 0 0;gap:19px}
.sheet{border:0;border-top:1px solid var(--rift-line);outline:none;background:rgba(8,29,26,.69);box-shadow:none;padding:13px 15px}
.rubric-head{padding:0 0 12px;background:none;border-bottom:1px solid var(--rift-line)}
.rubric-head .init,.rubric-head .label{font:10px var(--sans);font-variant:normal;letter-spacing:.13em;color:var(--haze)}
.rubric-head .note{font:9px var(--sans);color:var(--haze)}
#map-canvas{background:rgba(5,23,22,.6);border:0;height:190px}
#map-legend{font-size:11px;gap:8px}
#dm-log{max-height:210px}
.dm-beat{font-size:14px;line-height:1.8;border-color:var(--rift-line)}
.dice-row{border-color:var(--rift-line)}
.dice-row.fresh{background:#b6d4ac18}
.dice-empty,.dm-empty{font-size:12px;color:var(--haze)}
#rift-quest-title{font:23px/1.3 var(--serif);font-weight:400;margin:15px 0 9px}
#rift-quest-summary{font:13px/1.8 var(--serif);color:var(--haze)}
#rift-quest-card>button{border:0;background:none;color:var(--brass);font:10px var(--sans);cursor:pointer;padding:16px 0 2px}
#rift-quest-progress{color:var(--brass);font:11px/1.7 var(--sans);margin-top:12px}

/* A compact, persistent record. Slot counts are actual remaining counts,
   not guessed maxima; all detailed rules stay in the character/spell panels. */
#rift-character-bar{position:relative;z-index:1001;flex:0 0 var(--rift-footer);min-height:var(--rift-footer);align-items:center;gap:30px;margin:0 36px;padding:15px 0;border-top:1px solid var(--rift-line);background:linear-gradient(0deg,#051a17cc,transparent)}
.rift-identity{display:flex;align-items:center;gap:12px;border:0;background:none;color:var(--bone);cursor:pointer;text-align:left;min-width:195px;max-width:270px}
.rift-seal{display:grid;place-items:center;width:39px;height:43px;flex-shrink:0;border:1px solid #c9d7b866;border-radius:50% 50% 40% 40%;font:23px var(--serif);color:var(--brass);background:#c4d6b509}
.rift-identity strong{display:block;font:19px var(--serif)}
.rift-identity small{display:block;font:9px/1.6 var(--sans);color:var(--haze);margin-top:5px}
.rift-vital{flex:1;min-width:85px;max-width:170px}
.rift-vital>div{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}
.rift-vital span,.rift-slots>span,.rift-defense>span{font:9px var(--sans);text-transform:uppercase;letter-spacing:.08em;color:var(--haze)}
.rift-vital b{font:12px var(--mono);color:var(--bone);white-space:nowrap}
.rift-meter{height:3px;background:#bdd8bd20;display:block;overflow:hidden}
.rift-meter>i{height:100%;background:#b9d197;display:block;width:0%;transition:width .3s ease}
.rift-vital.low .rift-meter>i{background:var(--route)}
#rift-move-fill{background:var(--verdigris)}
.rift-slots{background:none;border:0;text-align:left;cursor:pointer;min-width:90px;color:var(--bone)}
#rift-slot-counts{display:block;font:12px var(--mono);margin-top:9px;word-spacing:5px;color:var(--brass)}
.rift-defense{margin-left:auto;text-align:right}
.rift-defense strong{display:block;font:18px var(--serif);margin-top:5px}
#rift-condition{font:10px var(--sans);color:var(--haze);max-width:120px;line-height:1.6}
#toolbar{position:fixed;bottom:var(--rift-footer);left:118px;right:36px;border:0;background:none;padding:0;pointer-events:none;z-index:1150;min-height:0}
#tool-status:empty{display:none}
#tool-status{background:#102d27;border:1px solid var(--rift-line);padding:10px 14px;color:var(--bone);opacity:1!important}
#rift-menu{position:relative}
#rift-menu summary{list-style:none;cursor:pointer;font:10px var(--sans);color:var(--haze);padding:10px 0}
#rift-menu summary::-webkit-details-marker{display:none}
#rift-menu>div{position:absolute;top:40px;right:0;width:300px;padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:7px;background:#0b2522f5;border:1px solid var(--brass-dim);box-shadow:0 12px 40px #0007}
#rift-menu button{font:12px var(--serif);background:#b8d3ad0b;color:var(--bone);border:1px solid var(--rift-line);padding:12px 9px;cursor:pointer;text-align:left}
body:not(.rift-playing) #rift-menu{display:none}
body.gated #rift-menu,body.gated #rift-character-bar{display:none!important}

/* The rest of the client uses the same material, including builder tools. */
.fmodal,.modal{background:rgba(2,15,15,.8);backdrop-filter:blur(9px)}
.fmodal .frame,.scriptorium{background:#0a211ff5;border-color:var(--brass-dim);box-shadow:0 22px 95px #0007,inset 0 1px #c1d8b520}
.fmodal .fhead,.script-head{border-bottom-color:var(--rift-line);padding:17px 21px;background:#abc9aa05}
.fmodal .fbody{padding:22px}
.script-btn{background:#b9d2b00d;border-color:var(--brass-dim);color:var(--bone);min-height:30px}
.script-btn:hover{background:#b9d2b020;border-color:var(--brass)}
.script-btn.commit,.gilt{color:#13291f;background:linear-gradient(#e0e8c7,#afc79f);border-color:var(--brass)}
.cs-stat{background:#b8d1ad08;border-color:var(--rift-line)}
.cs-stat .m{color:#a9cbb0}
.cs-sec,.oe-sub,.cs-row,.set-row,.olc-tabs,.olc-actions{border-color:var(--rift-line)}
.bar,.dwho .bar{border:0;background:#bcd4b31b}
.bar i{background:var(--brass)}
.dwho .bar i{background:var(--brass)}
.dwho .bar i.low{background:var(--route)}
#foe-bar i{background:var(--route)}

/* The dungeon becomes a place to play, not a small window over the game. */
body.rift-dungeon main{visibility:hidden}
body.rift-dungeon .rift-shade{background:linear-gradient(90deg,#041817ed 18%,#041817b3 52%,#04181736),linear-gradient(0deg,#041817f2,transparent 85%)}
#dungeon-modal{inset:var(--rift-header) 0 var(--rift-footer);z-index:1000;background:none;backdrop-filter:none}
#dungeon-modal .frame{width:100%;height:100%;max-height:100%;margin:0;border:0;box-shadow:none;background:none}
#dungeon-modal .fhead{padding:17px 36px;border-color:var(--rift-line);margin:0 36px;background:none;padding-inline:0}
#dungeon-modal .fbody{padding:29px 36px 35px;overscroll-behavior:contain}
.dseats{max-width:1320px;margin:0 auto;grid-template-columns:minmax(0,760px) 295px;gap:26px 65px;align-items:start;justify-content:space-between}
.dseat-story{grid-column:1;grid-row:1 / span 2;gap:21px}
.dseat-run{grid-column:2;grid-row:1}
.dseat-party{grid-column:2;grid-row:2}
.dseat>.k{font:9px var(--sans);letter-spacing:.16em;color:var(--haze)}
.dseat-story>.k{display:none}
.rift-scene-heading{font:clamp(34px,4.5vw,64px)/1.06 var(--serif);font-weight:400;letter-spacing:-.04em;max-width:750px;margin:11px 0 6px;overflow-wrap:anywhere}
.dcard{border-top-width:1px;padding:15px 17px;background:#09221dcc;border-color:var(--rift-line)}
.dcard.dm{border:0;border-left:1px solid #a7c8b7;background:none;padding:0 0 0 19px}
.dcard>.t{font:10px/1.6 var(--sans);letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px}
.dcard>.t .r{font-size:10px;letter-spacing:0;text-transform:none}
.dmtext{font:16px/1.9 var(--serif);color:#bed5c7}
.dcard.sit{border:0;background:none;padding:0}
.dcard.sit>.t{color:var(--haze)}
.dprompt{font:21px/1.5 var(--serif);font-style:italic;margin-bottom:15px;color:var(--bone)}
.dopt{padding:17px 16px;margin-bottom:9px;border-color:#b3d0b247;background:#0b2622c9;gap:17px;min-height:56px;transition:background .18s,border-color .18s}
.dopt:hover{background:#244231d9;border-color:var(--brass)}
.dopt.mine{border-color:#c6d9a4;box-shadow:inset 2px 0 #c6d9a4}
.dopt .n{font-size:10px;color:#a7c498}.dopt .l{font:16px/1.5 var(--serif)}
.dopt .chk{font:10px/1.5 var(--sans);color:var(--brass);max-width:135px;white-space:normal;text-align:right}
.dopt .fill{background:#b9d79717}
.dseat-story>.dcard.party{border:0;padding:0;background:none}
.dsay{gap:10px;flex-wrap:wrap}
.dsay input{border:0;border-bottom:1px solid var(--brass-dim);font:15px var(--serif);background:#041a1866;padding:12px 3px;flex:1 1 220px;min-width:0}
.dsay button{font-size:11px;padding:10px 12px;min-height:42px}
.dhint{font-size:12px;line-height:1.7}
.drooms{grid-template-columns:repeat(6,1fr);gap:7px;margin-block:15px}
.drooms i{height:17px;border-color:#9ebc9880;background:none}
.drooms i.f{background:#83ae80aa}.drooms i.h{background:#d7e6b8;box-shadow:0 0 12px #cfec9c50}
.drooms i.b{border-color:var(--route)}
.dfact{font-size:12px;padding-block:4px}.dfact .kk{color:var(--haze)}
.dpace{border-color:var(--rift-line)}.dfoot{color:var(--haze)}
.rift-roll-heading{font:9px var(--sans);letter-spacing:.15em;color:var(--haze);text-transform:uppercase;margin:0 0 13px}
#rift-dungeon-dice .dice-row{background:none;border:0;padding:0}
#rift-dungeon-dice .dice-bottom{flex-wrap:wrap;margin-top:14px}
.rift-dungeon-combat{border-top:1px solid #c5987d50;padding:15px 0 0}
.rift-enemy-row{display:flex;justify-content:space-between;align-items:center;gap:15px;color:var(--route);font:17px var(--serif);margin-bottom:12px}
#rift-enemy-fill{background:var(--route)}
.rift-combat-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:15px}
.rift-combat-actions button{padding:9px 12px}
.rift-dungeon-command{display:flex;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid var(--rift-line)}
.rift-dungeon-command input{min-width:0;flex:1;background:#092321aa;color:var(--bone);border:0;border-bottom:1px solid var(--brass-dim);padding:12px 5px;font:13px var(--mono)}
.rift-dungeon-command button{background:none;border:0;color:var(--brass);font:11px var(--sans);cursor:pointer}

@media(min-width:1700px){
  :root{--rift-header:94px;--rift-footer:100px}
  #rift-header,#rift-character-bar{margin-inline:60px}main{padding:30px 60px;gap:35px}
  #side-col{flex-basis:340px}#rift-invitation{margin-top:20px}#gate{padding-top:55px}
  #dungeon-modal .fbody{padding:40px 60px}.dseats{grid-template-columns:minmax(0,1fr) 340px;gap:30px 85px}
  .dmtext{font-size:18px}.dopt .l{font-size:18px}.dopt{padding:20px}
}
@media(max-width:1100px){
  #rift-header{gap:20px;margin-inline:22px}.rift-header-end{gap:15px}#rift-location{display:none}
  main{padding:19px 22px;gap:19px}#side-col{flex-basis:240px}
  #rift-character-bar{margin-inline:22px;gap:20px}.rift-identity{min-width:155px}.rift-identity strong{font-size:17px}
  #rift-condition{display:none}.dseats{grid-template-columns:minmax(0,1fr) 245px;gap:24px 30px}
  #dungeon-modal .fhead{margin-inline:22px}#dungeon-modal .fbody{padding:25px 22px}
  .dopt{gap:10px}.dopt .l{font-size:15px}.dmtext{font-size:15px}.rift-scene-heading{font-size:45px}
}
@media(max-width:800px){
  :root{--rift-header:75px;--rift-footer:126px}
  body{overflow:auto;min-height:100dvh;height:auto}
  #rift-header{margin-inline:18px;gap:12px}.rift-brand{font-size:20px}.rift-brand small{font-size:6px}
  .rift-header-end{gap:12px;flex-wrap:wrap;justify-content:flex-end;max-width:230px}
  #link-state{font-size:8px;max-width:200px;flex-basis:100%}#rift-motion,#rift-menu summary{font-size:9px;padding:0}
  #rift-menu>div{top:23px;width:270px}
  #gate{padding:34px 22px 20px;overflow:visible;flex:1}
  #gate .ledger,#gate .ledger.wide{width:min(100%,550px)}
  #rift-invitation h1{font-size:62px}#rift-invitation p{font-size:14px}
  body.gated .rift-shade{background:linear-gradient(90deg,#041415e8,#04141575),linear-gradient(0deg,#041415ed,transparent 90%)}
  main{flex-direction:column;padding:18px;gap:21px;overflow:visible;flex:none}
  #rift-tools{flex-direction:row;gap:10px;flex:0 0 auto;border-right:0;border-bottom:1px solid var(--rift-line);padding:0 0 10px;overflow:visible;justify-content:space-between}
  #rift-tools .tool{width:44px;min-height:48px;padding:4px 1px;font-size:8px}
  #rift-tools .tool>span{font-size:22px}#rift-tools .rift-tool-bottom{margin-top:0}
  #term-col{flex:none;height:620px;max-height:calc(100svh - 155px);min-height:360px}
  #rift-room-name{font-size:29px}#rift-room-header{padding-bottom:16px}
  #term-frame{padding-top:15px}#cmd-input{font-size:16px}
  #side-col{display:grid;grid-template-columns:1fr 1fr;gap:15px;overflow:visible;flex:none;min-height:0;padding:0}
  #map-canvas{height:175px}.sheet{padding:12px}.rubric-head .note{display:none}
  body.rift-playing #rift-character-bar{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(70px,.8fr);grid-template-rows:38px 38px}
  #rift-character-bar{position:sticky;bottom:0;margin:0;padding:12px 18px;gap:12px 18px;background:#071e1cf5;min-height:var(--rift-footer);backdrop-filter:blur(16px)}
  .rift-identity{min-width:0;max-width:none;grid-column:1 / 3;grid-row:1}.rift-identity strong{font-size:17px}.rift-identity small{font-size:8px;margin-top:3px}.rift-seal{width:29px;height:32px;font-size:19px}
  .rift-vital{max-width:none;min-width:0}.rift-vital span{font-size:8px}.rift-vital b{font-size:11px}
  #rift-hp{grid-column:1;grid-row:2}#rift-move{grid-column:2;grid-row:2}
  .rift-defense{grid-column:3;grid-row:1;margin-left:auto}.rift-defense>span{font-size:8px}.rift-defense strong{font-size:16px;margin-top:1px}
  .rift-slots{grid-column:3;grid-row:2;min-width:0}.rift-slots>span{font-size:8px}#rift-slot-counts{font-size:10px;word-spacing:0;margin-top:6px}
  #toolbar{left:18px;right:18px}
  body.rift-dungeon{height:100dvh;overflow:hidden}body.rift-dungeon #rift-character-bar{position:fixed;left:0;right:0;bottom:0;height:var(--rift-footer)}
  body.rift-dungeon main{display:none}
  body.rift-dungeon .rift-shade{background:linear-gradient(90deg,#041817ed,#041817a6),linear-gradient(0deg,#041817f2,transparent 95%)}
  #dungeon-modal .fhead{margin-inline:18px;padding-block:15px;flex-wrap:wrap;row-gap:8px}
  #dungeon-modal .fhead .fnm{font-size:12px;max-width:45%;margin-left:12px}
  #dungeon-modal .fbody{padding:25px 18px 30px}
  .dseats{grid-template-columns:1fr;gap:25px}.dseat-story{grid-column:1;grid-row:1}.dseat-run{grid-column:1;grid-row:2}.dseat-party{grid-column:1;grid-row:3}
  .rift-scene-heading{font-size:45px}.dmtext{font-size:16px}.dopt .l{font-size:15px}.dopt .chk{max-width:85px;font-size:9px}
  .fmodal .frame{width:calc(100% - 28px);max-height:90dvh;margin:4dvh auto}.fmodal .fbody{padding:17px}.fmodal .fhead{padding:15px 17px}
  .help-wrap{grid-template-columns:125px minmax(0,1fr);gap:12px}.help-body{overflow-wrap:anywhere}.cs-rows{gap:2px 14px}
}
@media(max-width:450px){
  #rift-invitation h1{font-size:56px}#rift-invitation{margin-bottom:24px}
  #rift-header{min-height:var(--rift-header)}.rift-brand{font-size:18px}.rift-header-end{max-width:178px;gap:9px}
  .ledger-body{padding-inline:18px}.ledger-head{padding-inline:18px}
  #side-col{grid-template-columns:1fr}.sheet{padding:16px}#map-canvas{height:210px}
  #rift-tools{gap:3px}.rift-exit{padding:8px 10px;font-size:12px}
  #rift-character-bar{gap:10px 14px}.rift-vital{min-width:85px}.rift-vital b{font-size:10px}.rift-slots{min-width:62px}
  .rift-scene-heading{font-size:40px}.dsay button{width:100%}.dopt{padding:14px 12px}
  .menu-grid{gap:7px}.mtile{padding:13px}.mtile .d{font-size:11px}
}

/* Compact, graphical dungeon play. Outcomes are cards, never a terminal. */
#rift-queue-status{display:flex;align-items:center;gap:12px;margin-left:auto;padding:10px 15px;
  color:var(--bone);background:#234735e8;border:1px solid #c3dba3;cursor:pointer;text-align:left;flex-shrink:0}
#rift-queue-status strong{display:block;font:13px var(--sans);color:#e1efc6}
#rift-queue-status small{display:block;font:10px var(--sans);margin-top:5px;color:#b5cdb6}
.rift-waiting #rift-location{display:none}
.rift-queue-orb{display:inline-block;width:9px;height:9px;border-radius:50%;background:#d0e9a4;
  box-shadow:0 0 12px #c5ee8b70;flex-shrink:0;animation:rift-queue-pulse 2.5s ease-in-out infinite}
@keyframes rift-queue-pulse{50%{opacity:.4;box-shadow:0 0 2px #c5ee8b20}}
.rift-queue-confirmation{display:flex;align-items:center;gap:17px;padding:20px;background:#234735cc;
  border:1px solid #c3dba380;margin-bottom:17px}
.rift-queue-confirmation strong{font:23px/1.3 var(--serif);color:#ecf4d5}
.rift-queue-confirmation p{font:13px/1.7 var(--sans);margin-top:9px;color:#c3d5bb}
.rift-queue-confirmation p b{font:22px var(--mono);color:#e7f2bd;margin-right:6px}
.rift-queue-stages{display:flex;list-style:none;gap:0;counter-reset:queue-step;margin:0 0 15px}
.rift-queue-stages li{flex:1;font:11px/1.6 var(--sans);color:var(--haze);border-top:2px solid #789b7f44;padding:12px 10px 0 0}
.rift-queue-stages li::before{counter-increment:queue-step;content:counter(queue-step) ". ";color:var(--brass)}
.rift-queue-stages li.current{border-top-color:#c4df9d;color:#e4eecb}
#rift-room-name{font-size:32px;margin-top:6px}
#rift-room-header{padding-bottom:12px}
#rift-room-card{max-height:280px;overflow:auto}
.rift-contents-grid{display:grid;gap:12px;padding-top:10px;min-width:0}
.rift-contents-grid h3{font:9px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--haze);margin-bottom:7px}
.rift-contents-grid ul{list-style:none;display:grid;gap:7px}
.rift-contents-grid li{font:13px/1.5 var(--serif);overflow-wrap:anywhere}
.rift-contents-grid li small{font:9px var(--sans);color:var(--haze);margin-left:7px}
.rift-contents-grid button{font:10px var(--sans);color:var(--brass);background:#adc9ae0c;
  border:1px solid var(--rift-line);padding:4px 7px;margin-left:6px;cursor:pointer}
.rift-contents-grid .rift-present-name{color:#dfebd1}
.rift-empty{font:12px/1.6 var(--serif);color:var(--haze)}
.rift-room-summary{border-block:1px solid var(--rift-line);padding:0 0 8px}
.rift-room-summary .rift-contents-grid{grid-template-columns:1fr 1fr;gap:18px}
.rift-room-description{margin-top:9px;font:11px/1.65 var(--serif);color:var(--haze)}
.rift-room-description summary,.rift-roll-history summary,.rift-run-details>summary,.dhint summary{cursor:pointer;color:var(--brass)}
.rift-room-description p{margin-top:7px;white-space:pre-line}
#dungeon-modal .fhead{padding-block:12px}
#dungeon-modal .fbody{padding-top:17px;padding-bottom:18px}
.dseats{gap:16px 34px;grid-template-columns:minmax(0,1fr) 310px}
.dseat-story{gap:12px}.dseat-run,.dseat-party{gap:12px}
.rift-scene-heading{font-size:36px;line-height:1.1;margin:6px 0 0}
.dcard{padding:11px 13px}.dcard>.t{font-size:9px;margin-bottom:7px}
.dmtext{font-size:14px;line-height:1.65}
.dprompt{font-size:17px;line-height:1.4;margin-bottom:10px}
.dopt{padding:10px 12px;min-height:40px;margin-bottom:6px;gap:11px}
.dopt .l{font-size:14px;line-height:1.4}.dopt .chk{font-size:10px}
.dcard.sit>.t{margin-bottom:7px}
.dhint{font-size:11px;line-height:1.5}
.dsay input{font-size:13px;padding:9px 3px}.dsay button{min-height:34px;padding:7px 10px}
.rift-dungeon-exits{padding:8px 0}.rift-dungeon-exits .rift-exit{padding:6px 10px;min-height:30px;font-size:12px}
.rift-dungeon-command{margin-top:0;padding-top:0}.rift-dungeon-command input{font-size:12px;padding:9px 4px}
.rift-dungeon-combat{padding-top:10px}.rift-enemy-row{font-size:15px;margin-bottom:8px}
.rift-combat-actions{margin-top:9px}.rift-combat-actions button{padding:6px 10px}
.rift-outcomes{border-top-color:#b5d5ac;background:#09251fea}
.rift-outcomes>.rift-roll-heading{font-size:10px;color:#d3e4c0}
.rift-notice{padding:10px 0;border-top:1px solid var(--rift-line)}
.rift-notice h3{font:9px var(--sans);letter-spacing:.07em;text-transform:uppercase;color:var(--haze);margin-bottom:6px}
.rift-notice p{font:13px/1.6 var(--serif);color:#d1dfc9;overflow-wrap:anywhere}
.rift-notice.dm{border-left:2px solid #a9c9bb;padding-left:10px}
.rift-notice.damage h3{color:#e2ac96}.rift-notice.reward h3{color:#d5e7a3}
#rift-notices{max-height:300px;overflow:auto;scrollbar-gutter:stable}
#rift-notices.expanded{max-height:430px}
.rift-more-results{background:none;border:0;color:var(--brass);font:10px var(--sans);padding:9px 0 0;cursor:pointer}
.rift-check-result{padding:12px;margin-bottom:11px;background:#bedb9820;border:1px solid #bcd39e66}
.rift-check-result.failed{background:#98644c20;border-color:#d99e7977}
.rift-check-heading{display:flex;gap:12px;justify-content:space-between;align-items:baseline}
.rift-check-heading strong{font:15px var(--serif)}
.rift-check-heading>span{font:10px var(--sans);text-transform:uppercase;color:#cfdfa9}
.rift-check-result.failed .rift-check-heading>span{color:#efb89c}
.rift-check-math{display:flex;align-items:baseline;gap:12px;margin:9px 0}
.rift-check-math>b{font:29px var(--serif);color:var(--bone)}
.rift-check-math>span{font:11px var(--sans);color:var(--haze)}
.rift-check-result p{font:11px/1.6 var(--sans);color:var(--haze)}
.rift-roll-history summary,.rift-run-details>summary{font:10px var(--sans);letter-spacing:.08em;text-transform:uppercase;padding:2px 0}
.rift-roll-history[open] summary,.rift-run-details[open]>summary{margin-bottom:10px}
#rift-dungeon-dice{max-height:245px;overflow:auto}
#rift-dungeon-dice .dice-row{padding:10px 0;border-bottom:1px solid var(--rift-line)}
.dice-detail{font:11px/1.6 var(--serif);color:var(--haze);margin-top:6px}
@media(min-width:1700px){.rift-scene-heading{font-size:42px}.dmtext{font-size:15px}.dopt .l{font-size:15px}}
@media(max-width:1100px){
  .dseats{grid-template-columns:minmax(0,1fr) 260px;gap:15px 22px}
  #rift-queue-status{padding:8px 10px;gap:8px}#rift-queue-status strong{font-size:11px}#rift-queue-status small{font-size:9px}
  .rift-scene-heading{font-size:30px}.rift-room-summary .rift-contents-grid{gap:10px}
}
@media(max-width:800px){
  :root{--rift-header:75px}
  body.rift-waiting{--rift-header:125px}
  .rift-waiting #rift-header{flex-wrap:wrap;align-content:center;row-gap:10px}
  #rift-queue-status{order:3;flex-basis:100%;padding:9px 12px}
  #rift-queue-status small{display:inline;margin:0 0 0 10px}#rift-queue-status strong{display:inline}
  .dseats{grid-template-columns:1fr}.rift-scene-heading{font-size:29px}
  #rift-room-name{font-size:27px}.rift-room-summary .rift-contents-grid{grid-template-columns:1fr 1fr}
  #dungeon-modal .fbody{padding:15px 18px}.dseat-story{gap:11px}
  .dseat-run{grid-row:2}.dseat-party{grid-row:3}
  .rift-queue-stages{flex-direction:column;gap:12px}.rift-queue-stages li{padding-top:7px}
  .rift-queue-confirmation{padding:15px}.rift-queue-confirmation strong{font-size:19px}
  .rift-queue-confirmation p{font-size:11px}.dsay button{width:auto}
}
@media(min-width:801px) and (max-height:850px){
  body.rift-dungeon{--rift-header:64px;--rift-footer:68px}
  #dungeon-modal .fhead{padding-block:8px}
  #dungeon-modal .fbody{padding-block:12px}
  .dseat-story{gap:8px}
  .rift-scene-heading{font-size:29px;margin-top:2px}
  .rift-room-summary .rift-contents-grid{max-height:100px;overflow:auto;padding-top:7px}
  .rift-room-description{margin-top:5px}
  .dmtext{line-height:1.5;max-height:84px;overflow:auto}
  .dcard>.t,.dcard.sit>.t{margin-bottom:5px}
  .dprompt{font-size:16px;margin-bottom:7px}
  .dopt{padding:7px 10px;min-height:34px;margin-bottom:5px}
  .rift-dungeon-exits{padding:5px 0}
  #rift-notices{max-height:180px}
  #rift-notices.expanded{max-height:260px}
}
