/* Fixed deck alongside the revealed pile; only the extracted card moves. */
.portal #draw[hidden],.portal #keeper-test-draw[hidden]{display:none}
/* Keep the GPU surface in one compositor layer across reveal, landing and rest.
   The native same-card print remains opaque underneath as a safe underlay. */
.portal #omen-cinema,.portal.cinematic-playing #omen-cinema,.portal.card-settling #omen-cinema{z-index:6}
#deck-object.deck-card-drawing #deck-stack-canvas{left:-60%;top:-80%;width:220%;height:260%}
.deck-pull-card{position:absolute;inset:10%;display:none;transform:translateY(var(--deck-pull,0px));border-radius:5%;box-shadow:0 2px 0 #ad945f,0 6px 10px #0008;pointer-events:none;overflow:hidden}
.deck-pull-card img{display:block;width:100%;height:100%;object-fit:cover}
.deck-card-drawing .deck-pull-card{display:block}
.deck-gpu-ready .deck-pull-card{display:none}
.deck-pull-ready .deck-pull-card{box-shadow:0 0 0 1px #e4c783,0 7px 14px #0008}
.portal .deck-toolbar{height:auto;min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:14px 24px;pointer-events:none}
.deck-toolbar>*{pointer-events:auto}
.table-session{display:flex;align-items:center;gap:24px;min-width:0;flex:1}
.portal .table-session .back-link{flex-shrink:0;font-size:12px;min-height:38px;padding:0;color:#e7d9b7}
.table-presence{display:flex;align-items:center;gap:20px;min-width:0;color:#c4c8bd;font-size:12px}
#table-roster{display:flex;align-items:center;gap:14px;overflow-x:auto;white-space:nowrap;min-width:0;scrollbar-width:thin}
#table-roster:empty{display:none}
#table-roster .seat{flex-shrink:0}
#table-roster .seat:before{background:#9acbab;width:5px;height:5px}
#remaining-label{flex-shrink:0;font-size:12px;color:#dfd4b8;white-space:nowrap}
.portal .room-tools{display:flex;align-items:center;gap:6px;margin-left:0;flex-shrink:0}
.portal .room-tools #viewer-name{font-size:11px;margin:0 8px;color:#bfb5a0}
.portal .deck-view-tabs{border:0;border-radius:0;gap:4px;padding:0;margin-right:12px}
.portal .deck-view-tabs button,.portal .room-tools .icon-button{min-height:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #c2b18440;background:#09100f66;border-radius:4px;padding:8px 12px;color:#c6c7b9;box-shadow:none;position:relative;font:12px/1 Segoe UI,Arial,sans-serif}
.portal .room-tools .icon-button{width:38px;padding:8px}
.portal .deck-view-tabs button[aria-selected=true]{background:#c1a46824;border-color:#d2ba7e99;color:#f2dfae}
.portal .deck-view-tabs button:hover,.portal .room-tools .icon-button:hover{background:#252c28aa;border-color:#d7c796aa;color:#fff0c9}
.portal .deck-view-tabs svg,.portal .room-tools svg{display:block;width:17px;height:17px;flex-shrink:0}
.portal .deck-view-tabs button:focus-visible{outline:2px solid #dcc78f;outline-offset:3px}
.deck-view-tabs button:hover:after,.deck-view-tabs button:focus-visible:after{content:attr(data-tooltip);position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%);background:#101713;color:#e8deca;border:1px solid #b59d6555;padding:7px 10px;font:11px/1.3 Segoe UI,Arial,sans-serif;white-space:nowrap;pointer-events:none;z-index:20}
.portal .reading-room{padding:170px 24px 110px;display:grid;grid-template-rows:minmax(0,1fr);gap:0}
.portal .table-scene{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:0;grid-row:1;padding:0;margin:0;gap:0}
.portal .revealed-place{height:min(50dvh,480px);max-height:100%;max-width:100%;width:auto;aspect-ratio:2/3;justify-self:center;flex-shrink:0}
.portal .revealed-place #draw-attribution{position:absolute;left:50%;top:calc(100% + 16px);transform:translateX(-50%);max-width:min(440px,calc(100vw - 36px));width:max-content;white-space:normal;overflow-wrap:anywhere;text-align:center;font:12px/1.5 Segoe UI,Arial,sans-serif;color:#d9c7a2;margin:0;text-shadow:0 1px 5px #000}
.portal .draw-area{position:absolute;left:20px;right:20px;bottom:24px;display:flex;flex-direction:row;align-items:center;justify-content:center;flex-wrap:wrap;gap:12px;width:auto;min-height:40px;margin:0;z-index:6}
.player-draw-tools{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap}
.portal .declaration-controls{padding:0;min-height:0;display:flex;align-items:center;justify-content:center}
.portal #declaration-progress{max-width:175px;font:12px/1.4 Segoe UI,Arial,sans-serif;color:#d6c8a8;text-align:center;margin:0}
.portal .declare-form{gap:8px}
.portal .declare-form label{font-size:14px}
.portal .declare-form button,.portal #draw{min-height:40px;font-size:12px;padding:10px 14px}
.portal #draw.deck-authorized{border-color:#e0c782;background:#6b542c88;color:#fff1cb;box-shadow:0 0 16px #d7b57522}
.portal #draw:disabled{opacity:.55;cursor:not-allowed}
.portal .keeper-test-tools{display:flex;gap:8px;grid-column:auto}
.portal #draw:hover:after{top:auto;bottom:calc(100% + 10px)}
.portal .omen-announcement{top:84px}
.portal .ledger-section{padding-top:96px}
.journal-open .omen-announcement{display:none}
#deck-object{position:fixed;left:0;top:0;width:auto;height:min(42dvh,400px);aspect-ratio:2/3;z-index:3;touch-action:none;user-select:none;cursor:grab;outline:none;will-change:transform;filter:drop-shadow(0 5px 3px #0009) drop-shadow(0 13px 15px #0007)}
#deck-object.dragging{cursor:grabbing;filter:drop-shadow(0 24px 22px #0009)}
#deck-object[aria-disabled=true]{cursor:default}
#deck-object:focus-visible{outline:none}
#deck-object:focus-visible:not([data-focus-input='pointer']),#deck-object[data-focus-input='keyboard']:focus{filter:drop-shadow(0 0 2px #f4d59c) drop-shadow(0 5px 3px #0009) drop-shadow(0 13px 15px #0007)}
#deck-stack-canvas{position:absolute;left:-30%;top:-30%;width:160%;height:160%;pointer-events:none}
.deck-stack-poster{position:absolute;inset:10%;transform:perspective(900px) translate3d(var(--deck-shift-x,0px),var(--deck-shift-y,0px),var(--deck-lift,0px)) rotateX(var(--deck-pitch,0rad)) rotateY(var(--deck-lean,0rad)) rotateZ(var(--deck-roll,0rad));border-radius:5%;box-shadow:1px 1px 0 #d5b879,2px 2px 0 #422d32,3px 3px 0 #b8a177,4px 4px 0 #382732,5px 5px 0 #b89c63,6px 7px 8px #0009;overflow:hidden;pointer-events:none}
.deck-stack-poster img{width:100%;height:100%;object-fit:cover;display:block}
.deck-stack-poster .deck-back-foil{position:absolute;inset:0;opacity:.6;mask-size:100% 100%;background:linear-gradient(112deg,transparent 15%,#e7b65166 30%,#fff0acaa 45%,transparent 60%);mix-blend-mode:screen}
.deck-gpu-ready .deck-stack-poster{visibility:hidden}
.cinematic-playing #deck-object{opacity:0;pointer-events:none}
.viewing-card #deck-object{visibility:hidden}
@media(max-width:1100px){.portal .room-tools #viewer-name{display:none}.table-session{gap:18px}.table-presence{gap:14px}.portal .deck-view-tabs{margin-right:4px}}
@media(max-width:800px){.portal .revealed-place{height:min(46dvh,380px)}.portal .reading-room{padding-top:180px;padding-bottom:110px}.portal .deck-toolbar{gap:14px;padding:12px 16px}}
@media(max-width:650px){
 .portal .deck-toolbar{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:34px auto;gap:10px 12px;padding:10px 12px;min-height:92px}
 .table-session{display:contents}.portal .table-session .back-link{grid-column:1;grid-row:1;font-size:12px;min-height:32px}
 .table-presence{grid-column:1/-1;grid-row:2;justify-content:space-between;gap:16px;min-height:20px}
 .portal .room-tools{grid-column:2;grid-row:1;justify-self:end;gap:4px}
 .portal .deck-view-tabs{margin:0 4px 0 0;gap:4px}.portal .deck-view-tabs button span{display:none}
 .portal .deck-view-tabs button,.portal .room-tools .icon-button{width:32px;height:32px;min-height:32px;padding:7px;gap:0}
 .portal .deck-view-tabs svg,.portal .room-tools svg{display:block;width:16px;height:16px}
 .portal .reading-room{padding:260px 20px 130px}.portal .table-scene{padding-left:84px}.portal .revealed-place{height:min(38dvh,300px,calc((100vw - 150px)*1.5))}
 .portal .omen-announcement{top:116px;width:calc(100% - 36px)}.portal .omen-announcement h2{font-size:22px;line-height:1.35}.portal .omen-announcement>p:last-child{font-size:16px;line-height:1.5;margin-top:8px}
 #deck-object{height:min(16dvh,140px)}
 .portal .draw-area{bottom:18px;left:12px;right:12px;gap:8px}.player-draw-tools{gap:6px}.portal .declare-form label{font-size:12px;gap:6px}.portal .declare-form input{width:42px;min-height:34px}.portal .declare-form button,.portal #draw{font-size:11px;min-height:36px;padding:8px}
 .portal #declaration-progress{max-width:150px}
 .portal .ledger-section{padding-top:118px}.portal .revealed-place #draw-attribution{font-size:11px;top:calc(100% + 12px)}
}
@media(max-height:620px) and (min-width:651px){.portal .deck-toolbar{min-height:56px;padding-top:8px;padding-bottom:8px}.portal .omen-announcement{top:68px}.portal .omen-announcement h2{font-size:18px}.portal .omen-announcement>p:last-child{font-size:15px;margin-top:4px}.portal .reading-room{padding:190px 24px 72px}.portal .revealed-place{height:min(29dvh,calc(100dvh - 300px))}#deck-object{height:min(35dvh,180px)}.portal .draw-area{bottom:12px}}
@media(max-height:620px) and (max-width:650px){.portal .reading-room{padding:285px 18px 110px}.portal .revealed-place{height:min(31dvh,calc(100dvh - 400px))}.portal .omen-announcement h2{font-size:18px}.portal .omen-announcement>p:last-child{font-size:15px}.portal .draw-area{bottom:12px}}
@media(max-width:360px) and (min-height:621px) and (max-height:700px){.portal .reading-room{padding-top:280px}}
@media(max-width:650px) and (max-height:500px){.portal .deck-toolbar{padding:6px 12px;grid-template-rows:30px 18px;row-gap:4px;min-height:0}.table-presence{min-height:18px}.portal .reading-room{padding:176px 18px 88px}.portal .revealed-place{height:min(24dvh,calc(100dvh - 270px))}.portal .revealed-place #draw-attribution{top:calc(100% + 8px);font-size:10px;line-height:1.4}.portal .omen-announcement{top:78px}.portal .omen-announcement h2{font-size:16px;line-height:1.25}.portal .omen-announcement>p:last-child{font-size:14px;line-height:1.4}#deck-object{height:min(14dvh,70px)}}
@media(min-width:651px) and (min-height:800px){.portal .reading-room{padding-top:170px;padding-bottom:170px}}
@media(max-width:650px) and (min-height:800px){.portal .reading-room{padding-top:270px;padding-bottom:270px}}
