html,body.portal{height:100%;overflow:hidden;scroll-behavior:auto}.portal #experience{height:100dvh;position:relative}.portal #experience>section{height:100%;min-height:0;max-height:none}.portal .campaign{height:100%;min-height:0;max-height:none}.portal .campaign-inner{margin-top:-90px;padding:0}.portal .campaign h1{font-size:92px}.portal .watch-strip{position:absolute;bottom:55px;left:32px;right:32px;display:flex;align-items:center;gap:24px;padding:18px 24px;border-top:1px solid #b49c655c;background:#081211c2;backdrop-filter:blur(10px)}.watch-title{display:flex;align-items:center;gap:10px;color:#cbb388;font:16px Georgia,serif}.watch-facts{display:flex;justify-content:center;gap:42px;flex:1}.watch-facts>div{display:flex;gap:10px;align-items:center;font-size:12px}.watch-facts svg{width:16px;color:#b4a17c}.watch-facts .status-badge{font-size:11px}.portal-footer{position:absolute;left:56px;right:56px;bottom:20px;display:flex;justify-content:space-between;color:#869c93;font-size:10px}.portal .campaign:before{background:linear-gradient(180deg,#08121416,transparent 45%,#061211aa 88%,#081211)}#view-transition{position:fixed;inset:0;pointer-events:none;z-index:120;opacity:0;transition:opacity .45s;background:radial-gradient(ellipse at center,#788e8455,#081110f7 70%)}.changing-view #view-transition{opacity:1}.changing-view #view-transition span{position:absolute;inset:-20%;background:url('/assets/omen-void-v1.webp') center/cover;opacity:.15;animation:mist-transition 1.4s ease both}#portal-error{position:fixed;bottom:20px;left:20px;z-index:130;color:#ffc7c7;background:#201113;padding:15px}#admin-view{padding:30px 40px;background:#0e1716;overflow:auto}.admin-header{display:flex;justify-content:space-between;align-items:center;gap:18px;border-bottom:1px solid var(--line);padding-bottom:22px}.admin-header h1{font:30px Cinzel,Georgia,serif}.admin-header>div{display:flex;gap:10px}.admin-telemetry{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:30px}.admin-telemetry article{min-width:0}.admin-telemetry header{display:flex;align-items:center;justify-content:space-between}.admin-telemetry h2{font:24px Georgia,serif}.admin-telemetry p,#admin-status{font-size:12px;color:var(--muted)}.admin-telemetry dl>div{display:flex;justify-content:space-between;gap:12px;padding:18px 0;border-bottom:1px solid var(--line)}.admin-telemetry dt{text-transform:capitalize;color:var(--muted)}.admin-telemetry dd{margin:0;font-variant-numeric:tabular-nums}
.portal .reading-room{min-height:0;height:100%;padding:90px 30px 40px;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:14px}.portal .room-heading h1{font-size:30px}.portal .room-flavor{display:none}.portal .table-scene{min-height:0;margin:0 auto;gap:60px;width:min(960px,100%);height:100%;grid-template-columns:1fr 1fr 1.1fr}.portal .deck-stack{width:auto;height:min(32vh,300px);max-width:100%;margin:0;justify-self:center}.portal .revealed-place{width:auto;height:min(36vh,340px);max-width:100%;justify-self:center}.portal .reveal-slot{height:100%;width:auto;aspect-ratio:2/3}.portal .revealed-place>p{max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portal .deck-stack>span{top:calc(100% + 12px)}.reveal-description{max-height:100%;overflow:auto;min-width:0}.reveal-description h2{font:25px Cinzel,Georgia,serif;margin:8px 0 18px}.reveal-description .effect-copy{font-size:13px;line-height:1.8;color:#e4dac5}.reveal-description .reveal-omen{font:italic 15px/1.7 Georgia,serif;color:#b7a58b}.reveal-description .quiet-button{font-size:11px;padding:8px 12px;min-height:34px}.portal .draw-area{min-height:0;margin:0;display:flex;gap:20px;align-items:center;justify-content:center;flex-wrap:wrap}.portal .draw-area>#draw-caption{display:none}.portal .draw-area>#draw-permission{font:italic 14px Georgia,serif;margin:0}.portal .declaration-controls{min-height:0;padding:0}.portal .table-footer{margin:0;padding-top:12px}.portal .omen-announcement{position:absolute;left:50%;top:85px;transform:translateX(-50%);margin:0;max-width:calc(100% - 32px);pointer-events:none;z-index:4;background:#07100bd0;padding:15px 20px;border-bottom:1px solid #c5b08a55}.portal .omen-announcement h2{font-size:24px}.portal .omen-announcement>p:last-child{font-size:13px;margin:8px 0 0}.portal .room-heading{transition:opacity .5s}.portal[data-omen]:not([data-omen='']) .room-heading{opacity:0}.portal .ledger-section{position:relative;width:100%;height:100%;padding:100px 50px 30px;overflow:auto}.portal .ledger-section .section-heading{position:sticky;top:-1px;z-index:2;background:#12201ff2;padding:10px 0}.portal .ledger-section h2{font-size:28px}.portal .deck-toolbar{position:absolute;height:68px;z-index:8;top:0;width:100%;padding:14px 24px;background:#07100dd9;backdrop-filter:blur(10px)}.portal .back-link{display:flex;align-items:center;gap:8px;background:none;border:0;color:#d0bd99}.deck-view-tabs{display:flex;gap:4px;border:1px solid #b99e5d44;border-radius:4px;padding:3px}.deck-view-tabs button{border:0;border-radius:2px;background:transparent;color:#aaa992;padding:7px 12px;font-size:11px;display:flex;gap:7px;align-items:center}.deck-view-tabs button[aria-selected=true]{background:#6b4d343d;color:#f2dfb4}.deck-view-tabs svg{width:15px}
.portal .keeper-dialog{width:min(1140px,calc(100vw - 36px));height:min(790px,calc(100dvh - 36px));max-height:calc(100dvh - 36px);overflow:hidden;padding:0;background:#121c19}.portal .keeper-heading{padding:22px 26px;border-bottom:1px solid var(--line)}.portal .keeper-heading h2{font-size:23px}.keeper-layout{display:grid;grid-template-columns:175px minmax(0,1fr);height:calc(100% - 88px)}.portal .keeper-tabs{display:flex;flex-direction:column;margin:0;border:0;border-right:1px solid var(--line);padding:14px 10px;gap:5px}.portal .keeper-tabs button{display:flex;gap:10px;align-items:center;text-align:left;border:0;border-radius:3px;padding:13px;font-size:12px}.portal .keeper-tabs button.active{background:#b6945330;color:#f1dab0}.keeper-workspace{min-height:0;overflow:auto;padding:15px 26px 26px}.keeper-workspace>.form-error:empty{display:none}#keeper-content{padding-bottom:10px}.keeper-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;padding:16px 0;border-bottom:1px solid var(--line)}.keeper-summary strong{font:22px Georgia,serif;color:#e3c392}.keeper-summary span{display:block;font-size:10px;color:#97a897;margin-top:5px}.keeper-command-bar{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:18px 0}.keeper-command-bar .quiet-button{font-size:11px;padding:9px 12px}.keeper-command-bar p{margin:0;color:#bfc2ac;font-size:12px}.keeper-guide{color:#94a794;font-size:11px;line-height:1.7}.portal .keeper-section h3{font:18px Georgia,serif}.portal .catalogue-list{max-height:none}.portal .inspect-dialog{width:min(820px,calc(100vw - 30px));grid-template-columns:210px minmax(0,1fr);background:#121c19}.portal .inspect-copy .effect-copy{font:13px/1.8 Segoe UI,Arial,sans-serif;max-height:250px;overflow:auto}.portal .inspect-copy>p:not(.eyebrow){font-size:14px}.effect-source{color:#879b8b;font-size:10px;line-height:1.6}.portal .join-dialog{max-height:calc(100dvh - 30px);overflow:auto}.portal .join-seal{height:75px;width:50px;margin-bottom:12px}.portal .join-dialog h2{margin-bottom:18px}.portal .join-dialog .back-link{margin-bottom:12px}
@keyframes mist-transition{from{transform:scale(1);filter:blur(3px)}to{transform:scale(1.12);filter:blur(10px)}}
#omen-particles{position:fixed;inset:0;pointer-events:none;z-index:3}.portal.omen-entering .omen-announcement{animation:portal-omen-words 3s ease-out both}@keyframes portal-omen-words{0%,25%{opacity:0;transform:translate(-50%,8px)}100%{opacity:1;transform:translate(-50%,0)}}
#view-transition{overflow:hidden}.portal{overflow:clip}
dialog:not([open]){display:none!important}
.portal .keeper-heading>div:first-child{margin-right:auto}
@media(max-height:620px){.portal .declaration-controls{display:flex}.portal .declare-form label{font-size:12px}.portal .declare-form input{height:30px;min-height:30px;padding:5px;width:48px}.portal .declare-form button{font-size:10px;min-height:30px;padding:5px 8px}.portal .draw-area{gap:10px}.portal .draw-area>#draw-permission{font-size:12px}.portal .declaration-controls>p{font-size:10px}.portal .table-footer{margin-top:0}}
.navigation-setting{display:flex;align-items:center;gap:16px;padding:17px 0;border-bottom:1px solid var(--line)}.navigation-setting>div{flex:1;min-width:0}.navigation-setting strong{font-size:13px;font-weight:500}.navigation-setting small{display:block;font-size:10px;color:#90a18f;overflow-wrap:anywhere;margin-top:6px}.visibility-toggle{display:flex;align-items:center;gap:7px;margin:0;font-size:11px}.visibility-toggle input{width:18px;min-height:18px;height:18px;accent-color:#c4a66b}#add-link{max-width:460px;margin-top:25px}#add-link button{margin-top:16px}.portal .keeper-dialog .admin-telemetry{gap:22px}.portal .keeper-dialog .admin-telemetry h2{font-size:21px}.portal .keeper-dialog .admin-telemetry dl>div{font-size:12px;padding:13px 0}.portal.admin-page .keeper-dialog{width:calc(100vw - 40px);height:calc(100dvh - 40px);max-width:1400px;max-height:none}.portal.admin-page #admin-view{background:url('/assets/scenes-physical-v1/lobby.webp') center/cover}.portal.admin-page .admin-header,.portal.admin-page #admin-status,.portal.admin-page #admin-telemetry{visibility:hidden}
body[data-omen='sun'] #omen-scene,body[data-omen='moon'] #omen-scene,body[data-omen='fates'] #omen-scene,body[data-omen='celestial'] #omen-scene,body[data-omen='temple'] #omen-scene,body[data-omen='bridge'] #omen-scene,body[data-omen='door'] #omen-scene{background-image:linear-gradient(#08121925,#080d1399),url('/assets/omen-celestial-v1.webp')}.portal[data-omen='sun']{--paper:#f5e3bb;--gold:#d9b965}.portal[data-omen='sun'] #omen-scene{filter:sepia(.25) brightness(1.12)}.portal[data-omen='moon'] #omen-scene{filter:brightness(.7) saturate(.5);background-image:linear-gradient(#1339554d,#0712238c),url('/assets/omen-celestial-v1.webp')}.portal[data-omen='fates'] #omen-scene{filter:saturate(.6)}.portal[data-omen='temple'] #omen-scene{filter:sepia(.1) brightness(.85)}.portal[data-omen='celestial'] #omen-scene{filter:brightness(1.06)}.portal[data-omen='bridge'] #omen-scene{filter:saturate(.2)}.portal[data-omen='corpse'] #omen-scene,.portal[data-omen='undead'] #omen-scene{background-image:linear-gradient(#05111bb0,#02030be6),url('/assets/omen-donjon-v1.webp');filter:grayscale(.8)}.portal[data-omen='statue'] #omen-scene{background-image:linear-gradient(#263a3280,#09130abc),url('/assets/omen-donjon-v1.webp');filter:saturate(.15)}.portal[data-omen='prisoner'] #omen-scene{background-image:linear-gradient(#20284277,#080f15aa),url('/assets/omen-donjon-v1.webp')}.portal[data-omen='fey'] #omen-scene{background-image:linear-gradient(#0f49326b,#081a24b0),url('/assets/barovia-gates-v1.webp');filter:sepia(.2) hue-rotate(20deg)}.portal[data-omen='beast'] #omen-scene{background-image:linear-gradient(#12321acc,#061009b3),url('/assets/barovia-midnight-v1.webp')}.portal[data-omen='sun'] .omen-announcement h2,.portal[data-omen='temple'] .omen-announcement h2{color:#f5deaa}.portal[data-omen='moon'] .omen-announcement h2,.portal[data-omen='celestial'] .omen-announcement h2{color:#d9e7f0}.portal.omen-entering .tarot-card{box-shadow:0 0 40px #b1baa325,0 20px 50px #000}.portal[data-omen='sun'].omen-entering #omen-scene{animation:golden-revelation 6s ease both}.portal[data-omen='statue'].omen-entering .table-scene{animation:petrify 4s ease-out both}.portal[data-omen='corpse'].omen-entering .table-scene{animation:death-breath 5s ease-out both}.portal[data-omen='prisoner'].omen-entering .table-scene{animation:gate-impact 3s ease-out both}
@keyframes golden-revelation{0%{filter:brightness(.4)}40%{filter:brightness(1.25) sepia(.2)}100%{filter:brightness(1.12) sepia(.25)}}
.runbook-title{display:flex;gap:20px;align-items:center;margin:22px 0}.runbook-art{width:75px;height:112px;border:1px solid #a78b52;flex-shrink:0}.runbook-art .card-art{height:100%}.runbook-title h3{margin:8px 0}.runbook-links{display:flex;gap:12px;flex-wrap:wrap}.runbook-links .quiet-button{font-size:11px;min-height:35px;padding:9px 12px}.book-guidance{border-left:2px solid #bfa065;padding:10px 16px;margin:22px 0;background:#bfa06508}.book-guidance p{font-size:12px;line-height:1.8;color:#bbbfaa}.book-guidance .eyebrow{font-size:10px;color:#cbb98f}.runbook-checklist label{display:flex;gap:12px;align-items:start;font-size:12px;line-height:1.7}.runbook-checklist input{width:16px;height:16px;min-height:16px;margin-top:3px;accent-color:#ae955e;flex-shrink:0}.runbook-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.runbook-grid input,.runbook-grid select{margin-top:8px}.keeper-card-detail #plan-form .launch-button{width:auto;margin:0}.keeper-card-detail .effect-copy{font-size:13px;line-height:1.7}.portal .keeper-card-detail textarea{min-height:85px}.portal .ledger-row{grid-template-columns:46px minmax(0,1fr) minmax(0,1fr) auto}.portal .ledger-thumb{padding:0;background:none}.portal .empty-ledger{padding:20px}.portal .runbook-art .card-art{background-size:600% 200%}
@media(max-width:480px){.runbook-grid{grid-template-columns:1fr}.runbook-art{width:55px;height:82px}.portal .ledger-row{grid-template-columns:42px minmax(0,1fr) auto}.portal .ledger-omen{display:none}}
@media(max-width:800px){.watch-title{display:none}.portal .watch-strip{left:18px;right:18px;gap:12px;padding:15px;bottom:46px}.watch-facts{gap:18px}.watch-facts>div{flex-direction:column;gap:6px;font-size:10px}.watch-facts svg{display:none}.portal-footer{left:30px;right:30px;bottom:15px}.portal .campaign h1{font-size:76px}.portal .table-scene{gap:25px;grid-template-columns:1fr 1fr}.reveal-description{display:none}.portal .reading-room{padding:86px 22px 30px;gap:12px}.portal .room-heading h1{font-size:24px}.portal .deck-stack{height:min(32vh,255px)}.portal .revealed-place{height:min(36vh,290px)}.portal .deck-toolbar{padding:12px 16px}.portal .room-connection{display:none}.portal .draw-area{gap:10px;flex-direction:column}.portal .draw-area .launch-button{min-height:39px;padding:9px 20px}.portal .table-footer #table-roster{display:none}.portal .ledger-section{padding:85px 20px 20px}.keeper-layout{grid-template-columns:135px minmax(0,1fr)}.keeper-workspace{padding:12px 18px}.portal .keeper-tabs button{font-size:11px;padding:11px 8px}.admin-telemetry{grid-template-columns:1fr}.admin-header{flex-wrap:wrap}#admin-view{padding:22px}.portal .omen-announcement{top:78px}.portal .omen-announcement h2{font-size:20px}}
@media(max-width:480px){.portal .campaign h1{font-size:54px}.portal .campaign h1 span{font-size:23px}.portal .campaign-inner{margin-top:-75px}.portal .arrival{font-size:17px;margin-bottom:18px}.portal .campaign-subtitle{margin:22px 0}.portal .campaign-actions{flex-direction:column;gap:10px}.portal .campaign-actions>*{width:235px;font-size:12px}.portal .campaign-caption{font-size:13px;margin-top:20px}.watch-facts{gap:12px}.watch-facts>div{font-size:9px}.watch-facts .status-badge{font-size:10px}.portal .watch-strip{left:12px;right:12px;padding:12px;gap:8px}.portal-footer{left:24px;right:24px;font-size:8px}.portal .deck-toolbar{padding:10px 12px;gap:8px}.deck-view-tabs button{font-size:10px;padding:7px}.deck-view-tabs svg{display:none}.portal .room-tools>span{display:none}.portal .back-link{font-size:10px}.portal .room-tools{gap:4px}.portal .room-tools .icon-button{width:29px;height:29px}.portal .table-scene{gap:22px}.portal .deck-stack{height:min(28vh,210px)}.portal .revealed-place{height:min(31vh,235px)}.portal .room-heading .eyebrow{font-size:9px}.portal .room-heading h1{font-size:19px}.portal .reading-room{padding:82px 18px 18px;gap:8px}.portal .card-title{font-size:12px;padding:7px 4px}.portal .card-title:before{display:none}.portal .table-footer{font-size:9px}.portal .revealed-place>p{font-size:9px;max-width:160px}.portal .declare-form label{font-size:13px}.portal .draw-area>#draw-permission{font-size:12px}.portal .inspect-dialog{grid-template-columns:1fr;padding:28px 24px;display:grid;gap:15px}.portal .inspect-dialog #inspect-art{width:110px;margin:auto}.portal .inspect-copy{text-align:left}.portal .inspect-copy h2{font-size:23px}.portal .inspect-copy .effect-copy{max-height:30vh}.portal .keeper-heading{padding:16px}.keeper-layout{display:flex;flex-direction:column;height:calc(100% - 74px)}.portal .keeper-tabs{flex-direction:row;padding:8px 5px;border:0;border-bottom:1px solid var(--line);flex-shrink:0;overflow-x:auto}.portal .keeper-tabs button{white-space:nowrap;padding:8px;font-size:10px}.portal .keeper-tabs svg{display:none}.keeper-workspace{padding:8px 16px;flex:1}.keeper-summary{gap:10px}.keeper-summary strong{font-size:19px}.portal .keeper-row>select,.portal .keeper-row>input{min-width:120px}.portal .omen-announcement{top:76px;padding:10px 12px}.portal .omen-announcement h2{font-size:17px}.portal .omen-announcement .eyebrow{font-size:10px}.portal .omen-announcement>p:last-child{font-size:12px}.keeper-command-bar{flex-wrap:wrap}}
@media(max-height:620px){.portal .campaign h1{font-size:50px}.portal .arrival{margin-bottom:10px;font-size:15px}.portal .campaign-subtitle{margin:12px 0}.portal .campaign-caption{display:none}.portal .campaign-inner{margin-top:-60px}.portal .watch-strip{padding:10px 18px}.portal .room-heading h1{font-size:18px}.portal .room-heading .eyebrow{display:none}.portal .reading-room{padding-top:73px;gap:5px}.portal .deck-stack{height:29vh}.portal .revealed-place{height:32vh}.portal .declaration-controls{display:flex}.portal .draw-area{flex-direction:row}.portal .omen-announcement h2{font-size:16px}.portal .omen-announcement>p:last-child{display:none}.portal .omen-announcement{top:70px;padding:8px}.portal .inspect-dialog{max-height:calc(100dvh - 20px);overflow:auto}.portal .table-footer{padding-top:6px}}
@media(prefers-reduced-motion:reduce){#view-transition{transition:none}.changing-view #view-transition span{animation:none}.portal .tarot-card.revealing{animation:none}}

/* The status strips are the viewport edge, not floating panels. */
.portal .watch-strip{left:0;right:0;bottom:0;padding:16px 32px;min-height:66px;box-sizing:border-box}
.watch-meta{display:flex;align-items:center;gap:12px;font-size:10px;color:#98aaa2}
.watch-meta .icon-button{width:28px;height:28px;border:0;background:transparent;color:#b5ae98}
.portal .reading-room{padding-bottom:76px;grid-template-rows:auto minmax(0,1fr) auto;gap:14px}
.portal .table-footer{position:absolute;bottom:0;left:0;right:0;width:100%;min-height:48px;padding:14px 30px;margin:0;display:grid;grid-template-columns:1fr minmax(0,2fr) 1fr;align-items:center;gap:18px;background:#08100fe8;border-top:1px solid #b49c655c;box-sizing:border-box}
.portal .table-footer #table-roster{text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.portal .table-footer #drawn-label{text-align:right}
.portal .draw-area{display:grid;grid-template-columns:1fr auto 1fr;width:100%;gap:18px;align-items:center}
.portal .declaration-controls{grid-column:1;justify-self:end}
.portal .draw-command{grid-column:2;display:flex;flex-direction:column;align-items:center;gap:12px;min-width:200px}
.portal #draw-permission{font:italic 14px/1.4 Georgia,serif;margin:0;text-align:center;color:#d3cbb7}
.portal .draw-command .launch-button{min-width:190px;justify-content:center}
.portal #keeper-open{position:relative}
.pending-badge{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:2px;border-radius:50%;background:#d7b57a;color:#191911;font:10px/13px Segoe UI,sans-serif;box-shadow:0 0 0 2px #101b17}
.portal .card-effect{border-top:1px solid var(--line);padding-top:18px;margin-top:18px}
.portal .inspect-copy .effect-copy{max-height:none;overflow:visible}
.portal .inspect-dialog{max-height:calc(100dvh - 36px);overflow:auto;align-items:start}
.effect-copy p{margin:0 0 12px}.effect-copy p:last-child{margin-bottom:0}
.portal .card-story{padding-top:18px;margin-top:18px;border-top:1px solid var(--line)}
.portal .reading-room{padding-top:max(112px,16vh)}
.remaining-count{font:12px/1.4 Segoe UI,Arial,sans-serif;color:#c5bca5;margin:13px 0 0}
.reveal-story{font:italic 13px/1.8 Georgia,serif;color:#b6a992;border-top:1px solid #b49c6533;padding-top:14px}
.standalone-effect{margin:20px 0;border-top:1px solid var(--line);padding-top:16px}
.standalone-effect summary{cursor:pointer;font:14px Georgia,serif;color:#dbc39a;line-height:1.6}
.standalone-effect summary span{display:block;font:10px/1.6 Segoe UI,Arial,sans-serif;color:#919f92;margin:5px 0 12px}
.portal h1,.portal h2,.portal h3{font-kerning:normal;font-variant-ligatures:normal;letter-spacing:0;word-spacing:0;text-rendering:optimizeLegibility}
@media(max-height:620px){.portal .reading-room{padding-top:78px}.remaining-count{font-size:10px;margin:5px 0 0}}

.portal .reading-room{grid-template-rows:auto minmax(0,1fr) auto}
.portal .room-heading #draw-permission{margin:12px 0 0;font-size:12px;min-height:17px;color:#a9b9aa}
.portal .draw-area{display:flex;justify-content:center;min-height:0}
.portal .declaration-controls{justify-self:center}
.portal button.deck-stack{background:none;border:0;padding:0;color:inherit;opacity:1;transition:transform .4s,filter .4s;cursor:default;touch-action:manipulation}
.portal button.deck-stack .stack-under{inset:0;transform:translate(-6px,7px) rotate(-2deg)}
.portal button.deck-stack .stack-under:nth-child(2){transform:translate(6px,3px) rotate(3deg)}
.portal button.deck-stack .deck-touch-label{position:absolute;left:10%;right:10%;top:auto;bottom:15px;transform:rotate(0);font:11px Cinzel,Georgia,serif;color:#efd7a2;background:#090e0ed9;padding:8px 5px;border:1px solid #d1b57a66;opacity:0;transition:opacity .35s;pointer-events:none}
.portal button.deck-stack.deck-authorized{cursor:pointer;filter:drop-shadow(0 0 12px #d7b57544)}
.portal button.deck-stack.deck-authorized .deck-touch-label{opacity:1}
.portal button.deck-stack.deck-authorized:hover{transform:rotate(-3deg) translateY(-7px)}
.portal button.deck-stack.deck-authorized:active{transform:rotate(-2deg) translateY(-3px) scale(.98)}
.portal button.deck-stack:focus-visible{outline:2px solid #e1c68b;outline-offset:16px}
.queue-position{font:18px Georgia,serif;width:23px;color:#aa9875;flex-shrink:0}
.batch-approved{background:#739f6f13;border-left:2px solid #a1be8b;padding-left:12px}
.batch-row progress{width:100%;height:3px;margin-top:10px;accent-color:#c2a675;appearance:none;border:0;background:#06110e}
.batch-row progress::-webkit-progress-bar{background:#071310}
.batch-row progress::-webkit-progress-value{background:#b7a16c}
@media(max-height:620px){.portal .room-heading #draw-permission{margin-top:5px;font-size:10px}.portal button.deck-stack .deck-touch-label{bottom:8px;font-size:8px;padding:4px}}
@media(prefers-reduced-motion:reduce){.portal button.deck-stack{transition:none}.portal button.deck-stack.deck-authorized:hover{transform:rotate(-8deg)}}

.portal[data-omen='moon'] #omen-scene,.portal[data-omen='fates'] #omen-scene,.portal[data-omen='bridge'] #omen-scene{background-image:linear-gradient(#08121922,#080d1366),url('/assets/omen-lunar-v1.webp');filter:none}
.portal[data-omen='skull'] #omen-scene,.portal[data-omen='corpse'] #omen-scene,.portal[data-omen='undead'] #omen-scene{background-image:linear-gradient(#04111822,#01080a66),url('/assets/omen-death-v1.webp');filter:none}
.portal[data-omen='ruin'] #omen-scene,.portal[data-omen='talons'] #omen-scene,.portal[data-omen='flames'] #omen-scene{background-image:linear-gradient(#090c1033,#080a0c77),url('/assets/omen-ruin-v1.webp');filter:none}
.portal[data-omen='ruin'] #omen-scene{filter:saturate(.35)}
.portal[data-omen='talons'] #omen-scene{filter:saturate(.1)}
.portal[data-omen='fey'] #omen-scene,.portal[data-omen='door'] #omen-scene{background-image:linear-gradient(#08161911,#080e1866),url('/assets/omen-fey-v1.webp');filter:none}
.portal[data-omen='flames'].omen-entering #omen-scene{animation:infernal-light 6s ease-out both}
.portal[data-omen='moon'].omen-entering #omen-scene{animation:lunar-light 6s ease-out both}
.portal[data-omen='fey'].omen-entering #omen-scene,.portal[data-omen='door'].omen-entering #omen-scene{animation:threshold-light 6s ease-out both}
@keyframes infernal-light{0%{filter:brightness(.2)}45%{filter:brightness(1.25) saturate(1.4)}100%{filter:brightness(1)}}
@keyframes lunar-light{0%{filter:brightness(.25)}45%{filter:brightness(1.3)}100%{filter:brightness(1)}}
@keyframes threshold-light{0%{filter:brightness(.3) saturate(.1)}45%{filter:brightness(1.2) saturate(1.3)}100%{filter:brightness(1)}}
.portal.scene-still #omen-scene,.portal.scene-still .omen-announcement{animation:none!important}
.portal.scene-still .tarot-card.revealing{animation:none}
@media(prefers-reduced-motion:reduce){.portal #omen-scene,.portal .omen-announcement{animation:none!important}}
.card-story #inspect-story-copy{font:italic 14px/1.85 Georgia,serif;color:#bcb6a4}
.card-story p{margin:0 0 12px}
.portal #inspect-art{position:sticky;top:0}
@media(max-width:800px){.portal .watch-strip{left:0;right:0;bottom:0;padding:12px 18px}.watch-meta{gap:4px}.watch-meta #status-freshness{display:none}.portal .watch-facts{gap:15px}.portal .reading-room{padding-bottom:74px}.portal .draw-area{display:flex;flex-direction:column;gap:9px}.portal .draw-command{gap:8px}.portal .table-footer{padding:13px 22px;grid-template-columns:1fr 1fr}.portal #draw-permission{font-size:12px}.portal .table-footer #drawn-label{grid-column:2}}
@media(max-width:480px){.portal .watch-strip{padding:12px;min-height:62px}.portal .reading-room{padding-bottom:64px;gap:8px}.portal .table-footer{padding:12px 18px;min-height:40px}.portal .draw-command{gap:8px}.portal .inspect-dialog{display:grid;max-height:calc(100dvh - 24px)}.portal #inspect-art{position:static}.portal .inspect-copy .effect-copy{max-height:none}.portal .card-story #inspect-story-copy{font-size:13px}}
@media(max-width:360px){.portal .deck-toolbar>.back-link span{display:none}.portal .deck-toolbar>.back-link{padding:0}.portal .room-tools{gap:3px}.portal .deck-toolbar{gap:6px}.portal .watch-facts{gap:9px}}
@media(max-height:620px){.portal .watch-strip{min-height:48px;padding:7px 20px}.portal .reading-room{padding-bottom:54px;gap:5px}.portal .draw-area{display:grid;grid-template-columns:1fr auto 1fr;gap:10px}.portal .draw-command{gap:5px}.portal .draw-command .launch-button{min-height:32px;padding:7px 16px}.portal #draw-permission{font-size:11px}.portal .table-footer{min-height:32px;padding:8px 22px}.portal .deck-stack{height:26vh}.portal .revealed-place{height:29vh}.portal .draw-command{min-width:180px}}

/* Keep the reading surface centred, with the latest fate resting above its history. */
.portal .keeper-test-tools{display:flex;align-items:center;justify-content:center;gap:8px;grid-column:1/-1}
.portal .keeper-test-tools .quiet-button{min-height:40px;font-size:12px;padding:10px 16px}
.portal .keeper-test-tools .icon-button{width:40px;height:40px}
.portal .test-permission{display:inline-flex;align-items:center;gap:7px;font-size:12px;white-space:nowrap;color:#c9c1ab;margin:8px 0}
.portal .test-permission input{width:16px;height:16px;min-height:16px;margin:0;accent-color:var(--gold)}
.portal .player-row .test-permission{margin:0 8px}
@media(max-width:600px){.portal .player-row{flex-wrap:wrap}.portal .player-row .player-text{flex-basis:100%}.portal .player-row .test-permission{margin:4px auto 4px 0}}
.portal.deck-page #toast{bottom:104px}
.portal .table-scene{padding-bottom:min(12vh,144px);width:min(1060px,100%);gap:42px;grid-template-columns:.85fr 1.15fr 1.1fr}
.portal .revealed-place{height:min(43vh,410px)}
body.portal[data-omen]:not([data-omen='']) .deck-stack{filter:none;opacity:1}
body.portal button.deck-stack.deck-authorized{filter:drop-shadow(0 0 12px #d7b57544)}
@media(max-width:800px){.portal .table-scene{grid-template-columns:.85fr 1.15fr;gap:24px}.portal .revealed-place{height:min(40vh,340px)}}
@media(max-width:480px){.portal .table-scene{gap:20px}.portal .deck-stack{height:min(27vh,196px)}.portal .revealed-place{height:min(35vh,270px)}}
@media(max-width:360px){.portal .deck-stack{height:min(25vh,164px)}}
@media(max-height:620px){.portal .revealed-place{height:34vh}}
.portal .revealed-place{position:relative;z-index:2}
.drawn-stack{position:relative;width:100%;height:100%;perspective:1400px}
.pile-top,.pile-under{position:absolute;inset:0}
.pile-top{z-index:4;transform-style:preserve-3d}
.pile-under{transform:translate(calc(var(--depth)*-4px),calc(var(--depth)*5px)) rotate(var(--turn));pointer-events:none}
.pile-under .tarot-card{cursor:default;box-shadow:0 5px 12px #0008}
.pile-under .tarot-face{border-color:#a99163}
.tarot-card.dealing{pointer-events:none;will-change:transform}
.portal .room-heading .eyebrow{font-size:13px;color:#dfbd79;font-weight:500}
.portal .room-heading .remaining-count{font-size:15px;color:#e5dece;margin-top:14px}
.portal .room-heading #draw-permission{font-size:15px;color:#e4dbc7;margin-top:12px;min-height:21px}
.portal .room-heading{text-shadow:0 2px 5px #000,0 0 16px #0009}
@media(max-width:480px){.portal .room-heading .eyebrow{font-size:11px}.portal .room-heading .remaining-count,.portal .room-heading #draw-permission{font-size:13px}.portal .room-heading .remaining-count{margin-top:11px}.portal .room-heading #draw-permission{margin-top:9px}}
@media(max-height:620px){.portal .table-scene{padding-bottom:20px}.portal .room-heading .remaining-count,.portal .room-heading #draw-permission{font-size:12px;margin-top:5px}.portal .room-heading #draw-permission{min-height:17px}}

.portal[data-omen]:not([data-omen='']) .omen-announcement h2,.portal[data-omen]:not([data-omen='']) .omen-announcement .eyebrow{color:var(--omen-accent)}
.portal[data-omen]:not([data-omen='']) .tarot-face,.portal[data-omen]:not([data-omen='']) .tarot-back{border-color:var(--omen-accent)}
.portal[data-omen]:not([data-omen='']) .deck-toolbar{background:#06100ff0}
body.portal[data-omen].omen-entering #omen-scene{animation:cinematic-arrival 10.5s ease-out both;animation-delay:var(--omen-age,0s)}
body.portal[data-omen='pit'].omen-entering #omen-scene,body.portal[data-omen='maze'].omen-entering #omen-scene{animation-name:cinematic-descent}
body.portal.omen-entering .omen-announcement{animation:cinematic-verdict 4s ease-out both;animation-delay:var(--omen-age,0s)}
.portal[data-omen='ooze'] .omen-announcement{border-color:#a0c77f}
.portal[data-omen='fey'] #omen-scene{filter:none}
.portal[data-presentation='brief'] .deck-stack{filter:none}
.portal[data-omen='rogue'] .omen-announcement,.portal[data-omen='fiend'] .omen-announcement{border-color:#bd807b}
@keyframes cinematic-arrival{0%,14%{filter:brightness(.2) contrast(1.15);transform:scale(1.1)}29%{filter:brightness(1.14) contrast(1.04);transform:scale(1.06)}65%{filter:brightness(1);transform:scale(1.02)}100%{filter:brightness(1);transform:scale(1)}}
@keyframes cinematic-descent{0%,14%{filter:brightness(.25);transform:scale(1.3)}32%{filter:brightness(.75);transform:scale(1.16)}100%{filter:brightness(1);transform:scale(1)}}
@keyframes cinematic-verdict{0%,40%{opacity:0;transform:translate(-50%,10px)}70%,100%{opacity:1;transform:translate(-50%,0)}}
body.portal[data-intensity='mythic'].omen-entering #omen-scene{animation-name:mythic-arrival}
body.portal[data-intensity='subtle'].omen-entering #omen-scene{animation-name:subtle-arrival}
@keyframes mythic-arrival{0%,14%{filter:brightness(.08) contrast(1.3);transform:scale(1.16)}30%{filter:brightness(1.2) contrast(1.08);transform:scale(1.07)}65%{filter:brightness(1.02);transform:scale(1.02)}100%{filter:brightness(1);transform:scale(1)}}
@keyframes subtle-arrival{0%,14%{filter:brightness(.65);transform:scale(1.025)}38%{filter:brightness(1);transform:scale(1.012)}100%{filter:brightness(1);transform:scale(1)}}
body.portal[data-omen='pit'].omen-entering #omen-scene{animation-name:cinematic-descent}
body.portal.scene-still #omen-scene{animation:none!important;transform:none;filter:none}
body.portal.scene-still .omen-announcement{animation:none!important;transform:translateX(-50%);opacity:1}
@media(prefers-reduced-motion:reduce){body.portal #omen-scene{animation:none!important;transform:none;filter:none}body.portal .omen-announcement{animation:none!important;transform:translateX(-50%);opacity:1}}

/* The cinematic stage is a single, full-window surface, above art and below controls. */
#omen-cinema{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}
#omen-direction{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}
#false-omen-promise{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:5}
.viewing-card #false-omen-promise{visibility:hidden}
body.portal:is([data-omen='void'],[data-omen='donjon'],[data-omen='ruin'],[data-omen='statue'],[data-omen='corpse']) #omen-scene{filter:brightness(var(--false-omen-light,1))!important}
#cinema-caption[data-trial] .cinema-verdict{font:normal 26px/1.4 Cinzel,Georgia,serif;letter-spacing:0}
#cinema-caption .cinema-aside{font:italic 17px/1.5 Georgia,serif;color:#d1c0d4;margin:12px 0 0;letter-spacing:0}
@media(max-width:650px){#cinema-caption[data-trial] .cinema-verdict{font-size:20px}#cinema-caption .cinema-aside{font-size:15px;margin-top:9px}}
@media(max-height:500px){#cinema-caption[data-trial]{top:15%!important}#cinema-caption[data-trial] .cinema-verdict{font-size:18px}#cinema-caption .cinema-aside{font-size:13px;margin-top:6px}}
.portal.cinematic-playing #omen-direction{z-index:5}
#cinema-caption{position:fixed;left:8%;right:8%;top:50%;transform:translateY(-50%);text-align:center;pointer-events:none;z-index:6;opacity:0;text-shadow:0 2px 12px #000,0 2px 36px #000}
#cinema-caption .cinema-card-name{font:normal 42px/1.15 Cinzel,Georgia,serif;text-transform:capitalize;color:var(--omen-accent);margin:0 0 14px}
#cinema-caption .cinema-verdict{font:italic 20px/1.5 Georgia,serif;color:#f0e5d5;margin:0}
.icon-button svg,.icon-button i{pointer-events:none}

.portal.cinematic-playing .table-scene,.portal.cinematic-playing .room-heading,.portal.cinematic-playing .draw-area,.portal.cinematic-playing .omen-announcement,.portal.cinematic-playing .ledger-section{opacity:0!important;pointer-events:none}
.portal.cinematic-playing #omen-scene{animation:none!important;transform:none!important}
.portal .table-scene,.portal .room-heading,.portal .draw-area{transition:opacity .6s ease}
.portal.cinematic-playing #omen-cinema{z-index:5}
.portal.cinematic-playing .deck-toolbar,.portal.cinematic-playing .table-footer{opacity:.25}
.portal.cinematic-playing .deck-toolbar:focus-within,.portal.cinematic-playing .deck-toolbar:hover{opacity:1}
.portal.cinematic-playing:after{content:'';position:fixed;inset:0;pointer-events:none;z-index:7;border-top:30px solid #000c;border-bottom:30px solid #000c}
@media(max-width:650px){#cinema-caption .cinema-card-name{font-size:32px}#cinema-caption .cinema-verdict{font-size:17px}.portal.cinematic-playing:after{border-width:18px 0}}
html[data-motion-mode='full'] #rain{display:block}
html[data-motion-mode='full'] body.portal.omen-entering #omen-scene{animation:cinematic-arrival 10.5s ease-out both!important;animation-delay:var(--omen-age,0s)!important}
html[data-motion-mode='full'] body.portal[data-intensity='mythic'].omen-entering #omen-scene{animation-name:mythic-arrival!important}
html[data-motion-mode='full'] body.portal[data-intensity='subtle'].omen-entering #omen-scene{animation-name:subtle-arrival!important}
html[data-motion-mode='full'] body.portal.omen-entering .omen-announcement{animation:cinematic-verdict 4s ease-out both!important;animation-delay:var(--omen-age,0s)!important}
html[data-motion='reduced'] #rain{display:none}
@media(prefers-reduced-motion:reduce){html:not([data-motion-mode='full']) #omen-cinema{display:none}}

/* Decoded paintings crossfade over the retained frame, never the page clear colour. */
html,body.portal{background-color:#05090c}
body.portal #omen-scene,html[data-motion-mode='full'] body.portal.omen-entering #omen-scene{background-color:#05090c;filter:none!important;animation:none!important;isolation:isolate}
.omen-art-layer{position:absolute;inset:0;background-size:cover;background-position:var(--art-focus,50%) center;transition:opacity .85s ease;will-change:opacity}
#omen-scene:before{content:'';position:absolute;inset:0;z-index:2;background:#030609;opacity:0;transition:opacity .35s ease;pointer-events:none}
.scene-loading #omen-scene:before{opacity:0}
.tarot-card.gpu-dealing{visibility:hidden!important;pointer-events:none}
.portal .tarot-card{box-shadow:0 2px 0 #b99b5c70,0 10px 24px #0009,0 24px 48px #0008}
.portal[data-omen].omen-entering .tarot-card{box-shadow:0 2px 0 #b99b5c70,0 12px 32px #000b}
.portal[data-omen].omen-entering .table-scene,.portal[data-omen].omen-entering .deck-stack,.portal[data-omen].omen-entering .reading-room{animation:none!important}
.portal .card-title{display:none}
.portal .tarot-face,.portal[data-omen]:not([data-omen='']) .tarot-face{border:0;box-shadow:none;border-radius:5% / 3.333333%}
.portal .card-art{height:100%;width:100%;flex:1}
.card-foil{position:absolute;inset:0;pointer-events:none;border-radius:inherit;opacity:.14;background:linear-gradient(120deg,transparent 24%,#c6a9ed44 36%,#fbe5ab99 43%,transparent 51%,#92cde833 65%,transparent 72%);mix-blend-mode:screen;box-shadow:inset 0 0 0 1px #ead9a255}
.tarot-card[data-finish='gilded']{--finish-light:#f1cc7566;--finish-shade:#baa05222}
.tarot-card[data-finish='prism']{--finish-light:#a8d6ee77;--finish-shade:#edb8d866}
.tarot-card[data-finish='opal']{--finish-light:#d3dcef77;--finish-shade:#b8e1d744}
.tarot-card[data-finish='decay']{--finish-light:#b8b68c33;--finish-shade:#867e4933}
.tarot-card[data-finish='ember']{--finish-light:#efbf7c66;--finish-shade:#b6643422}
.tarot-card[data-finish='verdant']{--finish-light:#c7d9a855;--finish-shade:#74a19b33}
.tarot-card[data-finish='iron']{--finish-light:#bdd2e244;--finish-shade:#8d9dba33}
.tarot-card[data-finish='astral']{--finish-light:#c7b8de55;--finish-shade:#8499c433}
.tarot-card[data-finish] .card-foil{background:radial-gradient(ellipse at var(--foil-x,45%) var(--foil-y,30%),var(--finish-light,#d5c8a933),transparent 48%),linear-gradient(125deg,transparent 25%,var(--finish-shade,#a5926833) 45%,transparent 64%)}
.portal .reveal-description{position:relative;isolation:isolate;padding:24px 20px;margin:-24px -20px;text-shadow:0 2px 4px #000,0 0 14px #000}
.portal .reveal-description:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 45% 48%,#03070bea 0%,#03070bb8 52%,#03070b00 74%)}
.portal .reveal-description .reveal-omen{color:#ecd8af;font-size:17px;line-height:1.65}
.portal .reveal-description .reveal-story{color:#d0cabd;font-size:15px;line-height:1.75}
.portal .reveal-description h2{color:#f0e0bd}
.portal .viewer-flavour{isolation:isolate;padding:22px;margin:-22px}
.portal .viewer-flavour:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse,#03070bf0 0%,#03070ba0 55%,transparent 75%)}
.portal .card-viewer[open]{display:block;position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;overflow:hidden;box-shadow:none}
.card-viewer::backdrop{background:#02040699;backdrop-filter:none}
.portal .card-viewer .dialog-close{right:24px;top:20px;z-index:5}
#card-viewer-stage{position:absolute;inset:20px 36% 78px 4%;container-type:size;perspective:1200px;touch-action:none;cursor:grab;outline-offset:-12px}
#card-viewer-stage.dragging{cursor:grabbing}
#card-viewer-stage:focus{outline:none}
#card-viewer-stage:focus-visible{box-shadow:none}
#card-viewer-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
/* Keep the preview and GPU on the existing 73%-height/72%-width stage fit. */
.portal .card-viewer #inspect-art{position:absolute;left:50%;top:50%;margin:0;width:min(72cqw,calc(73cqh * 2 / 3));height:auto;max-width:none;aspect-ratio:2/3;translate:-50% -50%;transform-style:preserve-3d;will-change:transform}
#inspect-art.viewer-gpu-ready{visibility:hidden}
#card-viewer-stage:focus-visible{outline:none}
.card-viewer #inspect-art .tarot-card{box-shadow:0 24px 80px #000c}
.card-viewer #inspect-art .card-foil{opacity:.38;background:radial-gradient(ellipse at var(--foil-x,50%) var(--foil-y,50%),#ffefb766,transparent 45%),linear-gradient(120deg,#b58bd333,transparent 35%,#a3cbd333 65%,transparent)}
.tarot-card[data-foil="gold-selective"] .card-foil,.card-viewer #inspect-art .tarot-card[data-foil="gold-selective"] .card-foil{opacity:0}
.card-viewer #inspect-art .tarot-card[data-foil="gold-selective"] .card-foil.gold-mask-ready{opacity:.55;mask-size:100% 100%;background:radial-gradient(ellipse at var(--foil-x,50%) var(--foil-y,50%),#fff4bc,transparent 46%),linear-gradient(120deg,transparent 25%,#edc56888 44%,transparent 60%);box-shadow:none}
.card-viewer-tools{position:absolute;bottom:24px;left:50%;translate:-50% 0;display:flex;align-items:center;gap:12px;z-index:4}
.card-viewer-tools button{background:#0b1118e6;border-color:#c7aa6955;color:#dfcfab;min-height:42px}
.card-viewer-tools .icon-button[data-tooltip]:hover:after,.card-viewer-tools .icon-button[data-tooltip]:focus-visible:after{top:auto;bottom:calc(100% + 12px);left:50%;right:auto;transform:translateX(-50%);max-width:200px;white-space:nowrap}
#viewer-zoom{width:110px;accent-color:#c7aa69;cursor:pointer}
.viewer-flavour{position:absolute;left:66%;right:7%;top:50%;transform:translateY(-50%);max-height:65dvh;overflow:auto;overscroll-behavior:contain;text-align:left;text-shadow:0 2px 10px #000}
.viewer-flavour h2{font:normal 32px/1.25 Cinzel,Georgia,serif;color:#ead5a8;margin:0 0 22px;overflow-wrap:anywhere}
.viewer-flavour p{font:italic 19px/1.65 Georgia,serif;color:#d1c6ad;margin:0 0 22px}
.viewer-flavour .viewer-story{font-size:16px;color:#acb2aa}
.portal .card-viewer .inspect-copy{position:absolute;right:24px;top:76px;bottom:88px;width:min(380px,40%);overflow:auto;padding:24px;background:#0b1118f5;border:1px solid #c7aa6944;border-radius:4px;align-self:auto;z-index:3}
.card-viewer .inspect-copy[hidden]{display:none}
.card-viewer.show-card-details #card-viewer-stage{right:min(410px,42%)}
.card-viewer .inspect-copy h2{font-size:26px}
.viewing-card #omen-direction,.viewing-card #omen-particles,.viewing-card #omen-cinema{visibility:hidden}
.viewing-card .table-scene,.viewing-card .room-heading,.viewing-card .draw-area,.viewing-card .omen-announcement{visibility:hidden}
@media(max-width:650px){#card-viewer-stage{inset:30px 0 34%}.portal .card-viewer .dialog-close{right:16px;top:16px}.viewer-flavour{left:24px;right:24px;top:68%;bottom:88px;transform:none;max-height:none;text-align:center}.viewer-flavour h2{font-size:23px;margin-bottom:8px}.viewer-flavour p{font-size:16px;margin-bottom:10px}.viewer-flavour .viewer-story{font-size:14px}.card-viewer-tools{bottom:20px;white-space:nowrap}}
@media(prefers-reduced-motion:reduce){.omen-art-layer{transition:none}}

/* Keep the homepage status readable without covering the artwork. */
.portal .campaign{background-image:url('/assets/barovia-midnight-v2.webp')}
.portal .watch-strip{background:transparent;backdrop-filter:none;border:0;box-shadow:none;justify-content:center;text-shadow:0 1px 3px #000,0 0 7px #000}
.portal .watch-facts{flex:0 1 auto;gap:36px}
.portal .watch-facts>div{font-size:12px;color:#f1e7d3}
.portal .watch-facts svg{color:#dfc48d}
.portal .watch-facts .status-badge{font-size:11px;font-weight:600}
.portal .watch-facts .status-badge.online{color:#a2e0bc}
.portal .watch-facts .status-badge.offline{color:#ffacb5}
.portal .watch-facts .status-badge.degraded{color:#f0d18f}
.portal .watch-facts .status-badge.unknown{color:#d0d5cf}
.portal .watch-meta{position:absolute;right:24px;color:#c4cdc5}
@media(max-width:850px){.portal .watch-meta{display:none}}
@media(max-width:650px){.portal .watch-facts{gap:28px}.portal .watch-facts>div{font-size:11px}}
@media(max-width:360px){.portal .watch-facts{gap:20px}.portal .watch-facts>div{font-size:10px}}

/* The shared table is a centred pair; card prose belongs in the private viewer. */
.portal .deck-toolbar,.portal[data-omen]:not([data-omen='']) .deck-toolbar{background:transparent;backdrop-filter:none;box-shadow:none;border-bottom:0;text-shadow:0 1px 4px #000,0 0 10px #000}
.portal .table-footer{background:transparent;border-top:0;box-shadow:none;backdrop-filter:none;text-shadow:0 1px 4px #000,0 0 10px #000}
.portal .reading-room{padding:88px 30px 76px;grid-template-rows:minmax(0,1fr) auto auto;gap:12px;background:linear-gradient(#070d1018,#05090c38),url('/assets/scenes-cosmic-v1/lobby.webp') center/cover}
.portal .table-scene{grid-row:1;grid-template-columns:repeat(2,minmax(0,1fr));width:min(740px,100%);gap:76px;padding:0;align-items:center;justify-items:center}
.portal .deck-stack{height:min(42dvh,400px);width:auto;aspect-ratio:2/3;margin:0}
.portal .revealed-place{height:min(50dvh,480px);width:auto;aspect-ratio:2/3}
.portal #reveal-description[hidden]{display:none!important}
.portal .table-status{grid-row:2;display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap;opacity:1!important;min-height:22px}
.portal .table-status .remaining-count,.portal .table-status #draw-permission{font-size:14px;line-height:1.5;margin:0;min-height:0;color:#eee1bf;text-shadow:0 1px 4px #000,0 0 9px #000}
.portal .draw-area{grid-row:3;display:flex;flex-direction:row;gap:14px;min-height:40px}
.portal .omen-announcement{top:90px;width:min(900px,calc(100% - 40px));min-height:0;background:none;border:0;box-shadow:none;padding:0;text-shadow:0 2px 5px #000,0 0 14px #000}
.portal .omen-announcement .eyebrow{display:none}
.portal .omen-announcement h2{font-size:28px;line-height:1.35;margin:0;color:#f3e8ca}
.portal .omen-announcement>p:last-child{font-size:18px;line-height:1.5;margin:10px 0 0;color:#e4dccb}
.portal .table-footer{grid-template-columns:auto minmax(0,1fr) minmax(0,1fr) auto;gap:18px;font-size:11px}
.portal #draw-attribution{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#d0b887;text-align:center}
.portal .table-footer #drawn-label{grid-column:auto}
.card-rest-surface{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;border-radius:5% / 3.333333%;z-index:2}
.tarot-card.material-resting .card-foil{display:none}
.tarot-card[data-foil='gold-selective'] .card-foil.gold-mask-ready{opacity:.36;mask-size:100% 100%;background:linear-gradient(112deg,transparent 15%,#f4cf6d55 33%,#fff1b27a 43%,transparent 57%),radial-gradient(ellipse at 70% 18%,#ffe9a966,transparent 55%);mix-blend-mode:screen}
.portal button.deck-stack .deck-back-foil{inset:0;transform:none;border-radius:7px;pointer-events:none;opacity:.6;mask-size:100% 100%;background:linear-gradient(112deg,transparent 12%,#e7b65155 30%,#fff0acbb 43%,transparent 59%),radial-gradient(ellipse at 68% 20%,#f6d68155,transparent 60%);mix-blend-mode:screen}
@media(max-width:800px){.portal .table-scene{width:min(620px,100%);gap:48px}.portal .deck-stack{height:min(38dvh,310px,calc((100vw - 128px)*.75))}.portal .revealed-place{height:min(46dvh,380px,calc((100vw - 108px)*.75))}.portal .omen-announcement h2{font-size:22px}.portal .omen-announcement>p:last-child{font-size:16px}.portal .table-footer{grid-template-columns:auto minmax(0,1fr) auto}.portal .table-footer #table-roster{display:none}}
@media(max-width:480px){.portal .reading-room{padding:80px 24px 66px;gap:9px}.portal .table-scene{gap:26px}.portal .deck-stack{height:min(29dvh,225px)}.portal .revealed-place{height:min(35dvh,270px)}.portal .omen-announcement{top:94px;width:calc(100% - 42px)}.portal .omen-announcement h2{font-size:22px}.portal .omen-announcement>p:last-child{font-size:16px}.portal .table-status{gap:3px 12px}.portal .table-status .remaining-count,.portal .table-status #draw-permission{font-size:12px}.portal .table-footer{padding:12px 16px;gap:9px;font-size:10px}}
@media(max-width:360px){.portal .table-scene{gap:20px}.portal .deck-stack{height:min(27dvh,174px)}.portal .revealed-place{height:min(33dvh,212px)}}
@media(max-height:620px){.portal .reading-room{padding:142px 24px 50px;gap:5px}.portal .table-scene{width:min(460px,100%);gap:60px}.portal .deck-stack{height:29dvh}.portal .revealed-place{height:35dvh}.portal .omen-announcement{top:76px}.portal .omen-announcement h2{font-size:20px}.portal .omen-announcement>p:last-child{display:block;font-size:16px;margin-top:4px}.portal .table-status .remaining-count,.portal .table-status #draw-permission{font-size:11px}.portal .draw-area{min-height:32px}.portal .keeper-test-tools .quiet-button{min-height:32px;padding:6px 12px}.portal .keeper-test-tools .icon-button{height:32px;width:32px}}
@media(max-width:480px) and (min-height:621px){.portal .revealed-place{height:min(35dvh,270px,calc((100vw - 74px)*.75))}.portal .deck-stack{height:min(29dvh,225px,calc((100vw - 94px)*.75))}}
@media(max-width:650px) and (min-height:621px) and (max-height:740px){.portal .reading-room{padding-top:190px}}
@media(min-width:481px) and (max-width:650px) and (min-height:621px) and (max-height:740px){.portal .revealed-place{height:min(37dvh,280px,calc((100vw - 108px)*.75))}.portal .deck-stack{height:min(30dvh,225px,calc((100vw - 128px)*.75))}}
@media(max-width:650px) and (max-height:620px){.portal .omen-announcement h2{font-size:18px}.portal .revealed-place{height:min(35dvh,calc((100vw - 108px)*.75))}.portal .deck-stack{height:min(29dvh,calc((100vw - 128px)*.75))}}
