/* The Preparation Chambers: aged brass, deep forest leather and a moonlit 3D study.
   Everything is scoped to this room. The casting controls and arena are untouched. */
#app #overlay.preparation-overlay{display:block;padding:0;background:radial-gradient(ellipse at 50% 0,#35443645,transparent 650px),#101c18;backdrop-filter:none;-webkit-backdrop-filter:none;overflow-x:hidden;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#85734e #101c18;overscroll-behavior-y:contain}
#overlay.preparation-overlay>.panel{--room-ui:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;width:100%;max-width:480px;margin:0 auto;padding:max(14px,env(safe-area-inset-top)) 20px max(24px,env(safe-area-inset-bottom));font-family:var(--room-ui);background:none;box-shadow:none;border:0;border-radius:0}
.preparation-overlay button{touch-action:pan-y;-webkit-tap-highlight-color:transparent;font-family:var(--room-ui);transition:background .15s,border-color .15s}
.preparation-overlay button:focus-visible{outline:2px solid #efdaab;outline-offset:3px}
.preparation-overlay .pre-game-toolbar{border:0;margin:0 0 19px;padding:0;gap:8px;min-height:46px}
.preparation-overlay .pre-game-toolbar>span{display:flex;align-items:center;gap:9px;color:#e3cfaa;font:10px/1.35 var(--room-ui);letter-spacing:1.8px}
.pre-game-toolbar>span>svg{width:28px;height:31px;fill:none;stroke:#b8a171;stroke-width:1.2;stroke-linejoin:round}
.pre-game-toolbar>span small{display:block;font:7px/1.5 var(--room-ui);letter-spacing:1.05px;color:#8eaa98;margin-top:4px}
.room-tools{display:flex;align-items:center;gap:7px}
.room-mode-tabs.three-modes{grid-template-columns:repeat(3,minmax(0,1fr))}.room-mode-tabs.three-modes button{gap:5px;padding:9px 3px;font-size:10px}.room-mode-tabs.three-modes svg{width:17px;height:17px;flex:none}
.chamber-theme-picker{text-align:left;margin:6px 0 25px;padding:18px 0 20px;border-block:1px solid #b4a16b33}.chamber-theme-picker h3{display:flex;align-items:center;gap:9px;margin:0;color:#e7d4ac;font:400 23px/1.3 var(--book)}.chamber-theme-picker h3>svg{width:26px;height:26px;fill:none;stroke:#bba474;stroke-width:1.3}.chamber-theme-picker>p{font:10px/1.6 var(--room-ui);color:#9cad98;margin:7px 0 14px}.chamber-theme-picker>div{display:grid;gap:8px}.chamber-theme-picker button{width:100%;display:flex;align-items:center;gap:12px;min-height:65px;text-align:left;border:1px solid #9caa8b33;border-radius:10px;padding:11px 13px;background:#182c2388;color:var(--theme)}.chamber-theme-picker button[aria-pressed=true]{border-color:var(--theme);background:linear-gradient(100deg,#4c5c3a70,#25362b88);box-shadow:inset 0 0 0 1px #e7d8a92b}.chamber-theme-picker i{width:34px;height:34px;display:grid;place-items:center;flex:none;border:1px solid currentColor;border-radius:9px;background:#ffffff05}.chamber-theme-picker i svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.2}.chamber-theme-picker button>span{flex:1}.chamber-theme-picker strong{display:block;font:400 17px/1.3 var(--book);color:#e3d5b2}.chamber-theme-picker small{display:block;font:9px/1.5 var(--room-ui);margin-top:3px;color:#a7b3a1}.chamber-theme-picker b{font-size:17px}
.prep-presets>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:52px;cursor:pointer;list-style:none}.prep-presets>summary::-webkit-details-marker{display:none}.prep-presets>summary small{display:block;font:7px/1.6 var(--room-ui);letter-spacing:2px;color:#b8a577}.prep-presets>summary strong{display:block;font:400 23px/1.35 var(--book);color:#e6d3ab;margin-top:4px}.preset-disclosure{font:22px/1 var(--book);color:#bba679}.prep-presets[open]>summary .preset-disclosure{transform:rotate(45deg)}
.room-resident{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 0 10px;text-align:left}.room-resident>span{display:flex;align-items:center;gap:8px;min-width:0}.room-resident svg{width:24px;height:24px;flex:none;fill:none;stroke:#b8a171;stroke-width:1.4}.room-resident strong{font:400 17px/1.3 var(--book);color:#dfcfa8;overflow-wrap:anywhere}.room-resident button{min-height:44px;padding:8px 10px;border:1px solid #c4ac6c40;border-radius:9px;background:#2c403466;color:#d7c8a5;font-size:10px;flex:none}
.room-mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:4px;border:1px solid #a8ac8933;border-radius:12px;margin:0 0 17px;background:#09171166}.room-mode-tabs button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:45px;border:1px solid transparent;border-radius:9px;background:none;font-size:11px;color:#8da18e}.room-mode-tabs svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.3}.room-mode-tabs button[aria-pressed=true]{background:linear-gradient(130deg,#3e4c35,#293c2f);border-color:#baaa7159;color:#ead8b1;box-shadow:0 2px 8px #0002}
.room-save-state{padding:14px 16px;margin:4px 0 23px;text-align:left;border-left:2px solid #aabf875c;border-radius:0 9px 9px 0;background:#2f423030}.room-save-state strong{color:#d1d6af;font:400 18px/1.3 var(--book)}.room-save-state p{font:10px/1.7 var(--room-ui);color:#9faf9b;margin:6px 0 0}.room-save-state.planning{border-color:#b99b65}.room-save-state #room-save-message:not(:empty){color:#e5c998;margin-top:9px}
.prep-presets{text-align:left;padding:22px 0 8px;border-top:1px solid #b7a47a30;margin:18px 0}.prep-presets h3{font:400 24px/1.3 var(--book);color:#e6d3ab;margin:7px 0 8px}.preset-list{display:grid;gap:10px;margin-top:16px}.preset-card{border:1px solid #b5a5763b;border-radius:12px;background:linear-gradient(120deg,#2d3b2e88,#14281f88);padding:15px}.preset-top{display:flex;align-items:center;justify-content:space-between;min-height:29px;gap:9px;margin-bottom:8px}.preset-top>small{font:8px/1.4 var(--room-ui);letter-spacing:2px;color:#c9b279}.preset-spells{display:flex;gap:5px}.preset-spells .spell-icon{width:27px;height:27px}.preset-spells svg{width:23px;height:23px}.preset-empty{font:italic 12px/1.4 var(--book);color:#829581}.preset-card>strong{font:400 21px/1.3 var(--book);color:#e4d5b1}.preset-card p{font:10px/1.6 var(--room-ui);color:#aab6a0;margin:6px 0}.preset-card details{margin-top:8px;font:10px/1.6 var(--room-ui);color:#bcb89d}.preset-card summary{cursor:pointer;min-height:32px;padding-top:4px}.preset-card .preset-unavailable{color:#d3b685}.preset-actions{display:flex;gap:8px;margin-top:12px}.preset-actions button{flex:1;min-height:44px;padding:10px;border:1px solid #b8aa745c;border-radius:8px;background:#43513a66;color:#e0d1ac;font-size:10px}.preset-actions button:disabled{opacity:.4}.preset-actions button:active{background:#556246}.room-tools [data-action=menu] svg{transform:rotate(180deg)}
.preparation-overlay .pre-game-menu-button,.preparation-overlay .room-map-button{display:flex;align-items:center;justify-content:center;gap:5px;min-width:46px;min-height:46px;padding:10px;border:1px solid #b6a27338;border-radius:12px;background:#26392f80;color:#ded1ae;box-shadow:inset 0 1px #e2d3a509;letter-spacing:1px;font-size:8px;font-weight:500}
.preparation-overlay .pre-game-menu-button>span{font-size:8px}
.room-tools svg{height:19px;width:19px;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;fill:none}
.preparation-overlay .room-heading{text-align:left;margin:0 0 19px;padding:0 1px}
.preparation-overlay .room-heading .kicker{font:7px/1.5 var(--room-ui);letter-spacing:2.4px;color:#a99b77}
.preparation-overlay .room-heading h2{font:400 clamp(29px,8.6vw,39px)/1.15 var(--book);letter-spacing:-.8px;color:#f0dfb9;margin:6px 0 8px}
.room-heading>p{font:11px/1.5 var(--room-ui);color:#aebca9;margin:0}.room-heading>p>span{padding:0 5px;color:#6f856f}
.preparation-overlay .prep-weaver{margin:0 0 23px;padding:0;text-align:left;border:0;border-radius:0;background:none;box-shadow:none}
.prep-chamber{position:relative;isolation:isolate;margin:0 -20px;aspect-ratio:1.16;overflow:hidden;background:linear-gradient(#142a2380,#111c19aa),url('art/tower-sanctuary.webp') center 42%/cover;border-block:1px solid #c6ae7335;box-shadow:0 12px 30px #0003}
.prep-chamber::before{content:'';position:absolute;z-index:2;pointer-events:none;inset:9px 12px;border:1px solid #cfb98124;border-radius:100px 100px 1px 1px;mask-image:linear-gradient(#000,transparent 70%);-webkit-mask-image:linear-gradient(#000,transparent 70%)}
.prep-chamber canvas{width:100%;height:100%;object-fit:cover;touch-action:pan-y}
.chamber-edit{pointer-events:auto;display:flex;flex:none;align-items:center;gap:7px;min-height:46px;padding:8px 11px;border:1px solid #d0b57966;border-radius:10px;background:linear-gradient(125deg,#394a35ed,#192f25ed);color:#ead7af;box-shadow:inset 0 1px #e9ddb322,0 3px 12px #0004;text-align:left;touch-action:pan-y}
.chamber-edit svg{width:25px;height:25px;flex:none;color:#d5b77d}.chamber-edit span{font:500 10px/1.35 var(--room-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif);letter-spacing:.25px}.chamber-edit:active{background:#4a5c3d;border-color:#efd49b}.chamber-edit:focus-visible{outline:2px solid #f3dfac;outline-offset:3px}
.preparation-overlay .character-creator .character-stage{top:0;border-radius:80px 80px 12px 12px;margin-top:20px}
.free-map-example{overflow:hidden;text-align:left;margin:22px 0 23px;border:1px solid #b4a16b55;border-radius:18px;background:#142720;box-shadow:inset 0 1px #e0d4a411,0 10px 24px #0002}
.free-map-example-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:17px 16px 0;background:#1c2d25}.free-map-example-heading small{display:block;font:7px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:1.8px;color:#a5b095}.free-map-example-heading h3{font:400 23px/1.25 var(--book);color:#e3d4ae;margin:7px 0 4px}.free-map-example-heading>span{font:7px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:1px;color:#c3b180;border:1px solid #c3b18040;border-radius:5px;padding:5px 7px}
.free-map-example-scene{position:relative;aspect-ratio:420/435;overflow:hidden;background:#1c2d25}.free-map-example-scene::before{content:'';position:absolute;inset:0 0 auto;height:24px;pointer-events:none;background:linear-gradient(#1c2d25,transparent)}.free-map-example canvas{width:100%;height:100%;touch-action:pan-y}
.free-map-example figcaption{text-align:center;font:italic 13px/1.6 var(--book);color:#d3c49f;padding:7px 12px 0}
.free-map-legend{display:flex;justify-content:center;gap:18px;padding:13px 12px 17px;font:8px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#a9b7a2}.free-map-legend span{display:flex;align-items:center;gap:5px}.free-map-legend i{width:6px;height:6px;border-radius:50%;background:#8ba683}.free-map-legend .next{background:#ecd09c;box-shadow:0 0 7px #ecd09c66}.free-map-legend .locked{background:#64736c}
@media(max-width:350px){.chamber-caption{gap:7px;left:15px;right:15px}.chamber-edit{padding:8px;gap:5px}.chamber-edit svg{width:21px;height:21px}.chamber-edit span{font-size:9px}.free-map-example-heading{padding-inline:12px}.free-map-example-heading h3{font-size:21px}}
.chamber-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#09171322,transparent 25%,transparent 65%,#0a1715ed),radial-gradient(ellipse at 48% 45%,transparent 30%,#07131155)}
.chamber-caption{position:absolute;z-index:2;bottom:17px;left:21px;right:21px;display:flex;align-items:center;gap:10px;pointer-events:none;text-align:left;text-shadow:0 2px 8px #041009}
.chamber-sigil{display:grid;place-items:center;border:1px solid #cdb47c80;width:35px;height:35px;flex:none;border-radius:50%;color:#ebcc8c;font:24px Georgia,serif;background:#14291b66}
.chamber-caption>div{min-width:0;flex:1}.chamber-caption small{display:block;font:7px/1.5 var(--room-ui);letter-spacing:2px;color:#a6b69b}.chamber-caption strong{display:block;font:400 23px/1.2 var(--book);color:#f1dfb6;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:3px}.chamber-at-rest{max-width:75px;font:6px/1.7 var(--room-ui);letter-spacing:1.4px;color:#a1b198;text-align:right}
.preparation-overlay .prep-portrait-status{inset:12px 18px auto;font-size:9px}
.preparation-overlay .prep-run-status{margin:0 -20px;padding:15px 16px 16px;border-top:0;border-bottom:1px solid #bba36c29;border-radius:0;background:linear-gradient(#0a1715,#14221c);gap:0}
.preparation-overlay .prep-run-status>div+div{border-left:1px solid #bba36c22}
.preparation-overlay .prep-run-status dd{font:400 22px/1.2 var(--book)}
.preparation-overlay .prep-run-status dt{font:8px/1.4 var(--room-ui);letter-spacing:.3px;color:#92a58f;margin-top:4px}
.preparation-overlay .prep-owned{height:auto;margin:19px 0 0;padding:0;border:0}
.preparation-overlay .prep-owned h3{display:flex;align-items:center;gap:10px;font:10px/1.5 var(--room-ui);font-weight:500;color:#c6c3a5;letter-spacing:.6px;margin:0 0 10px}
.preparation-overlay .prep-owned h3::after{content:'';height:1px;flex:1;background:#bba36c29}
.preparation-overlay .prep-perk-list{flex:none;max-height:172px;padding:0 5px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:9px 12px;align-items:start;scrollbar-color:#7f7755 #15231b}
.preparation-overlay .prep-perk-group+.prep-perk-group{margin:0}
.preparation-overlay .prep-perk-group h4{font:7px/1.4 var(--room-ui);letter-spacing:1.1px;color:#839c89;margin:1px 0 6px}
.preparation-overlay .prep-perk-items{border:0;background:none;border-radius:0}
.preparation-overlay .prep-owned .owned-gift{padding:6px 0;grid-template-columns:21px minmax(0,1fr);gap:7px;border:0}
.preparation-overlay .prep-owned .owned-gift+.owned-gift{border:0}
.preparation-overlay .prep-owned .owned-gift .spell-icon{width:21px;height:21px}
.preparation-overlay .prep-owned .owned-gift strong{font:500 11px/1.35 var(--room-ui);color:#dbd5b9}
.preparation-overlay .prep-owned .owned-gift p{font:10px/1.45 var(--room-ui);color:#9fad98;margin-top:3px}
.preparation-overlay .prep-perk-hint{font:8px/1.5 var(--room-ui);color:#94a78e;margin:7px 0 0}
.preparation-overlay .prep-empty-perks{padding:0;margin:0;border:0;color:#8fa18c;font:10px/1.6 var(--room-ui)}
.preparation-overlay .prep-empty-perks span{float:left;display:inline;margin:2px 9px 0 0;font-size:21px;color:#b9a270}
.preparation-overlay .prep-empty-perks br{display:none}
.preparation-overlay .room-section-title{font:400 25px/1.2 var(--book);color:#e7d8b4;text-align:left;margin:20px 0 8px}
.preparation-overlay .setup-panel>.sub{text-align:left;font:11px/1.7 var(--room-ui);color:#a5b49f;margin:0 0 18px}
.preparation-overlay .prep-section,.preparation-overlay .perk-loadout{margin:0 0 18px;padding:18px 15px 15px;border:1px solid #aa946439;border-radius:16px;background:radial-gradient(ellipse at 0 0,#81835712,transparent 75%),linear-gradient(130deg,#26382d,#192920);box-shadow:inset 0 1px #d9c49012,0 8px 18px #06100b2b;text-align:left}
.room-section-label{font:7px/1.4 var(--room-ui);letter-spacing:2.1px;color:#a79b77;margin-bottom:6px}
.preparation-overlay .prep-section h3,.preparation-overlay .perk-loadout-heading h3{font:400 25px/1.2 var(--book);color:#edddba;margin:0 0 8px;letter-spacing:-.4px}
.preparation-overlay .prep-section h3:nth-of-type(2){font-size:20px;margin:22px 0 8px}
.preparation-overlay .prep-caption{font:10px/1.6 var(--room-ui);color:#aab9a2;margin:5px 0 12px}
.preparation-overlay .slots{gap:8px;margin:14px 0}
.preparation-overlay .slot{min-width:0;min-height:120px;padding:12px 5px 10px;border:1px solid color-mix(in srgb,var(--school) 32%,#304336);border-radius:12px;background:radial-gradient(ellipse at 50% 12%,color-mix(in srgb,var(--school) 13%,transparent),transparent 80%),#11251e;box-shadow:inset 0 1px #efffe609}
.preparation-overlay .slot.selected{border-color:var(--school);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--school) 30%,transparent),0 0 16px color-mix(in srgb,var(--school) 7%,transparent)}
.preparation-overlay .slot small{font:8px/1.4 var(--room-ui);letter-spacing:1.6px;color:#a9b5a1}
.preparation-overlay .slot .spell-icon{width:33px;height:33px;margin:11px auto 9px;filter:drop-shadow(0 0 8px color-mix(in srgb,var(--school) 30%,transparent))}
.preparation-overlay .slot strong{font:400 13px/1.25 var(--book);color:var(--school)}
.preparation-overlay .slot-state{font:6px/1.4 var(--room-ui);letter-spacing:.7px;color:#8c9f8d;margin:10px 0 0}
.preparation-overlay .slot.selected .slot-state{color:#f1dcac}
.preparation-overlay .edit-slot{font:10px/1.6 var(--room-ui);padding:9px 10px;background:#0b1d1740;border:1px solid #aa946423;border-radius:7px;color:#aabbab;margin-bottom:11px}
.preparation-overlay .edit-slot strong{color:#e3cc9e}
.preparation-overlay .prep-section .spell-grid{gap:7px;margin:0 0 15px;grid-template-columns:repeat(3,minmax(0,1fr))}
.preparation-overlay .prep-section .equip{position:relative;min-height:84px;padding:12px 4px 10px;border:1px solid #99a88f26;border-radius:10px;background:#14271e;box-shadow:none}
.preparation-overlay .prep-section .equip.equipped{border-color:var(--school);background:linear-gradient(135deg,color-mix(in srgb,var(--school) 10%,#12261e),#162b23)}
.preparation-overlay .prep-section .equip .spell-icon{height:25px;width:25px;margin:0 auto 7px}
.preparation-overlay .prep-section .equip strong{font:500 11px/1.3 var(--room-ui)}
.preparation-overlay .equipment-status{font:6px/1.5 var(--room-ui);letter-spacing:.45px;color:#829780;margin-top:7px}
.preparation-overlay .equip.in-use .equipment-status{color:#d0c9a0}
.preparation-overlay .ultimate-prep{position:relative;overflow:hidden;margin:17px 0 13px;padding:15px 9px;border:1px solid #bca27655;border-radius:11px;background:radial-gradient(ellipse at 50% 20%,#b6a56917,transparent 80%),#15251e}
.ultimate-seals{display:flex;align-items:center;justify-content:center;gap:9px;margin:0 0 11px}.ultimate-seals>span{display:grid;place-items:center;width:29px;height:29px;border:1px solid color-mix(in srgb,var(--school) 35%,transparent);border-radius:50%;color:var(--school);background:color-mix(in srgb,var(--school) 7%,transparent)}.ultimate-seals .spell-icon{width:17px;height:17px}.ultimate-seals>i{font:11px var(--room-ui);color:#9b9677}
.preparation-overlay .ultimate-prep h3{font:7px/1.5 var(--room-ui);letter-spacing:1.6px;text-transform:uppercase;color:#aea481;margin:0}
.preparation-overlay .ultimate-prep>strong{font:400 23px/1.2 var(--book);color:#ead5a8;margin-top:5px}
.preparation-overlay .ultimate-prep p{font:9px/1.5 var(--room-ui);color:#adb8a0;margin:8px 0 0}
.preparation-overlay .spell-detail{border:0;border-left:2px solid var(--school);border-radius:0;background:none;padding:2px 0 3px 10px}
.preparation-overlay .spell-detail strong{font:400 15px var(--book)}
.preparation-overlay .spell-detail p{font:10px/1.6 var(--room-ui);color:#afbaa4;margin:4px 0 0}
.preparation-overlay .locked-schools{font:9px/1.6 var(--room-ui);color:#82947d;margin:15px 0 0}
.preparation-overlay .perk-loadout-heading{align-items:flex-start;gap:8px}
.preparation-overlay .perk-loadout-heading h3{font-size:22px}
.preparation-overlay .perk-loadout-heading>strong{font:9px/1.6 var(--room-ui);padding:5px 7px;color:#cfd5ac;background:#59674522;border-color:#a8b27d40;border-radius:7px}
.preparation-overlay .perk-choice{border-radius:10px;margin-bottom:7px;min-height:67px;background:#15271f;border-color:#839d7f29;padding:10px}
.preparation-overlay .perk-choice.active{border-color:#9ca77666;background:#35473380;box-shadow:inset 2px 0 #c0b77a}
.preparation-overlay .perk-choice strong{font:500 12px/1.4 var(--room-ui);color:#e0d8b9}.preparation-overlay .perk-choice small{font:10px/1.5 var(--room-ui);color:#a9b69e}.preparation-overlay .perk-choice em{font-size:8px}
.preparation-overlay .perk-selection-group h4{font:8px/1.4 var(--room-ui);letter-spacing:1.2px;color:#93a385}
.preparation-overlay .perk-ready{font:10px/1.5 var(--room-ui)}
.preparation-overlay .quest-brief{border:0;border-top:1px solid #b49b6533;margin:25px 0 0;padding:22px 1px 10px;text-align:left}
.preparation-overlay .quest-brief .kicker{font:8px/1.5 var(--room-ui);letter-spacing:2px;color:#ad9e76}
.preparation-overlay .quest-brief h2{font:400 27px/1.2 var(--book);color:#e4d5b1;margin:9px 0}
.preparation-overlay .quest-brief .story-copy{font:14px/1.8 var(--book);color:#b3b7a1;margin:13px 0}
.preparation-overlay .quest-task{border:1px solid #9aa47a30;border-radius:9px;background:#2a3c2c55;padding:12px;font:11px/1.6 var(--room-ui);color:#d1d5b1}
.preparation-overlay .quest-task small{font:7px/1.5 var(--room-ui);letter-spacing:1.6px;color:#8eaa87;margin-bottom:5px}
.preparation-overlay .prep-departure{border-top:1px solid #b6a26a35;margin-top:12px;padding:18px 0 3px}
.preparation-overlay .prep-departure>p{font:7px/1.5 var(--room-ui);letter-spacing:2px;color:#98a88b;margin:0}
.preparation-overlay .departure-slots{margin:12px 0 17px;gap:8px}
.preparation-overlay .departure-slots span{font:400 17px var(--book)}.preparation-overlay .departure-slots small{font:7px var(--room-ui);letter-spacing:1.1px;color:#8fa089;margin-bottom:5px}
.preparation-overlay .primary{min-height:56px;padding:16px 13px;border:1px solid #edd6a284;border-radius:12px;background:radial-gradient(ellipse at 22% 0,#fff2c353,transparent 70%),linear-gradient(115deg,#d9bf8b,#bca06b);box-shadow:inset 0 1px #fff0c688,inset 0 -2px #7e6a3d50,0 5px 18px #030e0840;color:#273026;font:600 11px/1.5 var(--room-ui);letter-spacing:1.6px}
.preparation-overlay .primary:disabled{opacity:.4;box-shadow:none}
.preparation-overlay .primary:active{filter:brightness(.92);transform:translateY(1px)}
.preparation-overlay .secondary{min-height:50px;background:linear-gradient(115deg,#2b3e30,#1b2d24);border:1px solid #b3a07340;border-radius:11px;font:500 10px/1.5 var(--room-ui);letter-spacing:1.1px;box-shadow:inset 0 1px #d6e4ac0a;color:#d7d1ae;padding:13px}
.preparation-overlay .quiet{min-height:44px;font:10px/1.5 var(--room-ui);color:#a5b79c}
.preparation-overlay .hold-note{font:10px/1.7 var(--room-ui);color:#8fa18b}
.preparation-overlay .guide-steps{margin:5px 0 22px;font-family:var(--room-ui)}
.preparation-overlay .guide-copy{font:12px/1.8 var(--room-ui)}
.preparation-overlay .unlock-hero{margin:0 0 18px;border:1px solid color-mix(in srgb,var(--school) 50%,transparent);border-radius:14px;background:#20362c}
.preparation-overlay .room-menu-panel{padding-top:max(24px,env(safe-area-inset-top))!important}
.room-menu-panel>.kicker{font:8px/1.6 var(--room-ui);letter-spacing:2.5px;color:#b7a879}.preparation-overlay .room-menu-panel h2{font:400 31px/1.2 var(--book);color:#f0dfb9;margin:10px 0 18px}
.prep-chamber.compact{aspect-ratio:1.65;margin:19px -20px 18px}.prep-chamber.compact .chamber-at-rest{display:none}.prep-chamber.compact .chamber-caption{bottom:12px}.prep-chamber.compact .chamber-caption strong{font-size:19px}
.room-menu-panel>.sub{font:12px/1.7 var(--room-ui);color:#acb7a0;margin:16px 0 22px}
.preparation-overlay .map-button{margin:0 0 14px;border-radius:11px;min-height:54px}.preparation-overlay .map-button small{font-size:8px}
@media(max-width:350px){#overlay.preparation-overlay>.panel{padding-inline:15px}.prep-chamber{margin-inline:-15px}.preparation-overlay .prep-run-status{margin-inline:-15px}.preparation-overlay .pre-game-menu-button,.preparation-overlay .room-map-button{padding:9px 7px}.room-tools{gap:5px}.pre-game-toolbar>span small{font-size:6px}.preparation-overlay .prep-section,.preparation-overlay .perk-loadout{padding-inline:11px}.preparation-overlay .slot strong{font-size:11px}.preparation-overlay .slot-state{font-size:5.5px}.chamber-at-rest{display:none}.preparation-overlay .prep-owned .owned-gift strong{font-size:9px}.preparation-overlay .room-heading h2{font-size:29px}}
@media(min-height:900px){.prep-chamber:not(.compact){aspect-ratio:1.08}}
@media(prefers-reduced-motion:no-preference){.preparation-overlay .room-heading,.preparation-overlay .prep-chamber{animation:chamber-arrive .6s ease-out both}@keyframes chamber-arrive{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}}
.room-first-welcome{font:12px/1.7 var(--room-ui);color:#aab9a2;margin:12px 0 5px}.room-first-details{margin:18px 0;text-align:left;border:1px solid #b7a67544;border-radius:12px;padding:0 13px;background:#23362b66}.room-first-details>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:56px;font:400 18px/1.4 var(--book);color:#e3d4b1;cursor:pointer;list-style:none}.room-first-details>summary::-webkit-details-marker{display:none}.room-first-details[open]>summary>span{transform:rotate(45deg)}.room-first-details .chamber-theme-picker{margin-top:6px}.room-journey-tools{margin:0 0 20px}.room-journey-tools .quiet{width:100%;margin-top:5px}
/* Small, persistent actions for long menus; use the existing save/back handlers. */
.menu-top-actions{position:sticky;top:0;z-index:12;display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:56px;min-height:56px;margin:0 0 17px;padding:6px 0;border-bottom:1px solid #bca67438;background:linear-gradient(105deg,#1e3026f7,#14251df7);box-shadow:0 7px 12px #08130c35;isolation:isolate}
.menu-top-actions .menu-top-label{flex:1;min-width:0;text-align:center;font:500 7px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:1.2px;color:#a5b498}.menu-top-actions .menu-top-label:first-child{text-align:left;padding-left:10px}
.menu-top-actions .menu-top-button{display:flex;flex:none;align-items:center;justify-content:center;gap:6px;min-height:44px;max-width:65%;padding:9px 12px;border:1px solid #b9a4724a;border-radius:9px;background:#263b2e;color:#d9cda9;box-shadow:inset 0 1px #ffffff09;font:500 11px/1.3 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:0;touch-action:pan-y;-webkit-tap-highlight-color:transparent}
.menu-top-button>span[aria-hidden]{font:23px/1 Georgia,serif}.menu-top-actions .menu-top-save{background:linear-gradient(120deg,#c9b37f,#aa8d59);border-color:#e6ce977a;color:#202c22}.menu-top-actions .menu-top-button:active{filter:brightness(.9)}.menu-top-actions .menu-top-button:focus-visible{outline:2px solid #f1d9a5;outline-offset:2px}.menu-top-actions .menu-top-button:disabled{opacity:.45}
.preparation-overlay .character-creator.menu-has-top-nav .character-stage{top:56px}
.preparation-overlay .pre-game-toolbar{position:sticky;top:0;z-index:10;background:linear-gradient(105deg,#17291ff5,#12231bf5);padding:5px 0;border-bottom:1px solid #bca67429;box-shadow:0 6px 12px #08130c2b}
@media(max-width:350px){.menu-top-actions .menu-top-label{display:none}.menu-top-actions .menu-top-label:first-child{display:block}.menu-top-actions .menu-top-button{padding-inline:10px}}
.menu-top-feedback{margin:-6px 0 15px;padding:10px 12px;border:1px solid #dbb07455;border-radius:8px;background:#3b302555;color:#edcb99;font:11px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;text-align:left}
/* One build editor: equipped perks first, reserves second, saved snapshots below. */
.preparation-overlay .perk-equipped{padding:14px 0 6px;border-top:1px solid #b9ab7438}.perk-equipped>h4,.perk-reserve>h4{display:flex;align-items:center;gap:8px;margin:0 0 12px;color:#e2d3ae;font:500 12px/1.5 var(--room-ui);letter-spacing:.4px}.perk-reserve>h4>span{padding:2px 7px;border:1px solid #a5b08b33;border-radius:12px;font-size:10px;color:#aebd9e}
.preparation-overlay .perk-reserve{margin-top:15px;padding-top:18px;border-top:1px solid #b9ab7438}.preparation-overlay #perk-collection{max-height:none;overflow:visible;padding:0}.preparation-overlay .perk-choice{grid-template-columns:28px minmax(0,1fr) 50px}.preparation-overlay .perk-choice:disabled{opacity:.64}.preparation-overlay .perk-choice:disabled em{color:#9aa48b}.preparation-overlay .perk-choice.active em{color:#e0cf97}.preparation-overlay .perk-choice .perk-element-note{color:#cbb079;font-size:9px;margin-top:6px}.preparation-overlay .perk-open-slots{padding:13px;border:1px dashed #c2ad724f;border-radius:9px;font:11px/1.5 var(--room-ui);color:#c3c4a0;margin:10px 0 0}.preparation-overlay .prep-empty-perks{font:11px/1.65 var(--room-ui);color:#aab79b}
.perk-filter-tabs{display:flex;gap:5px;margin:14px 0;padding:3px;background:#0d1d1780;border:1px solid #a4ae8033;border-radius:9px}.perk-filter-tabs button{flex:1;min-height:44px;padding:8px 4px;border:1px solid transparent;border-radius:6px;background:none;color:#9dad95;font:11px/1.4 var(--room-ui)}.perk-filter-tabs button[aria-pressed=true]{background:#3a4b37;border-color:#c6b77d55;color:#e5d7ac}.perk-selection-group h5{font:500 10px/1.5 var(--room-ui);color:#9eae92;text-transform:uppercase;letter-spacing:1px;margin:18px 0 9px}
.preset-card.matches-build{border-color:#b9bd8266}.preset-current{font:10px/1.4 var(--room-ui);color:#c6d3a6}.preset-card>strong,.duel-preset-pick strong{overflow-wrap:anywhere}.preset-card .preset-ultimate{color:#c3b78d}.preset-perk-details summary{min-height:44px}.preset-name-editor{margin-top:12px;padding-top:8px;border-top:1px solid #b8ab7230;color:#bcb89d;text-align:left;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}.preset-name-editor>summary{min-height:44px;padding:12px 0;font-size:11px;cursor:pointer;color:#d2c19a}.preset-name-editor>label{display:block;font-size:11px;line-height:1.5;letter-spacing:0;margin:9px 0 6px;color:#d7c9a5}.preset-name-editor>label>span{color:#95a58e;font-size:10px;margin-left:5px}.preset-name-editor input{display:block;box-sizing:border-box;width:100%;min-width:0;min-height:46px;padding:10px 12px;border:1px solid #a5af8355;border-radius:8px;background:#10251e;color:#eadfc1;font:16px/1.4 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:0}.preset-name-editor input::placeholder{color:#92a18b}.preset-name-editor input:focus{outline:2px solid #d8c08b;outline-offset:2px}.preset-name-editor>p{font:10px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#a3b096;margin:7px 0 9px}.preset-name-editor>button{min-height:44px;padding:10px 16px;margin:0 0 8px;border:1px solid #c6ae7166;border-radius:8px;background:#3c4d35;color:#ebd9ad;font:11px/1.4 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}.preset-name-editor button:disabled,.preset-name-editor input:disabled{opacity:.5}.new-preset-name{border-top:0}.duel-preset{flex-wrap:wrap}.duel-preset>.preset-name-editor{flex-basis:100%;min-width:0;grid-column:1 / -1;padding-inline:12px}.duel-preset>.preset-name-editor>p{max-width:none}.preset-actions button{line-height:1.4}.chamber-theme-picker button:disabled{opacity:.7;filter:saturate(.65)}.chamber-theme-picker .theme-unlock{font-size:9px;margin-top:7px}.chamber-theme-picker .theme-unlock.locked{color:#c5b38e}.chamber-theme-picker .theme-unlock.earned{color:#b5c8a0}
.perk-group-toggle{display:flex;align-items:center;gap:9px;min-height:48px;width:100%;margin:5px 0 8px;padding:10px 12px;border:1px solid #a7aa7c30;border-radius:9px;background:#1c3025;color:#d4ccb0;text-align:left;font:500 11px/1.5 var(--room-ui)}.perk-group-toggle>span{flex:1}.perk-group-toggle small{font-size:10px;color:#9eaf92}.perk-group-toggle b{width:15px;text-align:center;font-size:18px;font-weight:400;color:#b9aa79}.perk-group-toggle[aria-expanded=true]{background:#30432f;border-color:#b4b17d55}.perk-selection-group [hidden]{display:none}

/* A pocket grimoire: the resident and their chamber remain the main scene. */
.preparation-panel .prep-chamber:not(.compact){aspect-ratio:1.08}
.preparation-panel .room-save-state{margin:0 0 14px;padding:9px 12px;background:none;border-left:1px solid #aa956044}
.preparation-panel .room-save-state strong{font-size:15px}
.preparation-panel .room-save-state p{margin-top:4px;line-height:1.5}
.preparation-panel .room-save-state #room-save-message:empty{display:none}
.preparation-overlay .chamber-spellbook{position:relative;isolation:isolate;margin:16px 0 20px;padding:17px 14px 13px 21px;text-align:left;border:1px solid #a68a565c;border-radius:5px 17px 17px 5px;background:repeating-linear-gradient(112deg,#ffe6ad03 0 1px,transparent 1px 5px),radial-gradient(ellipse at 90% 0,#977a3d1c,transparent 65%),linear-gradient(115deg,#302c22,#202c24 44%,#1b2923);box-shadow:inset 5px 0 #100f0e80,inset 7px 0 #bda06825,inset 0 1px #f6d79b20,2px 3px #7c70533b,3px 6px #141b16,0 12px 28px #0004}
.chamber-spellbook::before{content:'';position:absolute;pointer-events:none;inset:8px 7px 8px 12px;border:1px solid #bda0681f;border-radius:1px 12px 12px 1px;z-index:-1}
.book-heading{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.book-heading>svg{height:29px;width:29px;fill:none;stroke:#d5b77c;stroke-width:1.3;flex:none}
.book-heading>div{flex:1}.book-heading small{display:block;color:#a8a58c;font:8px/1.4 var(--room-ui);letter-spacing:1.7px}
.preparation-overlay .book-heading h3{margin:3px 0 0;color:#ecd8ae;font:400 24px/1.2 var(--book)}
.book-binding-mark{color:#b99b63;font-size:20px;margin-right:4px}
.book-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;border-block:1px solid #c1aa6c28;padding:4px 0;margin-bottom:12px}
.book-tabs button{min-height:44px;padding:8px 2px;background:none;border:1px solid transparent;border-radius:6px;color:#a6b09a;font:11px/1.3 var(--room-ui)}
.book-tabs button[aria-pressed=true]{background:linear-gradient(#cfb77d24,#cfb77d0b);color:#efdbac;border-color:#c8ae6d30;box-shadow:inset 0 -2px #c5a36480}
.book-spells{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:6px}
.book-spells button{display:flex;align-items:center;gap:6px;min-width:0;min-height:64px;padding:8px 6px;border-radius:9px;border:1px solid color-mix(in srgb,var(--school) 28%,transparent);background:linear-gradient(140deg,color-mix(in srgb,var(--school) 10%,#19231c),#14231d);text-align:left;box-shadow:inset 0 1px #fff1}
.book-spells .spell-icon{width:25px;height:25px;flex:none;margin:0}.book-spells .spell-icon svg{width:100%;height:100%}
.book-spells small{display:block;font:8px/1.4 var(--room-ui);text-transform:uppercase;letter-spacing:.6px;color:#a8b19e}
.book-spells strong{display:block;font:500 11px/1.5 var(--room-ui);color:var(--school)}
.book-spells i{font:11px var(--room-ui);color:#b4b397;margin-left:auto}
.book-ultimate{display:flex;align-items:center;gap:9px;padding:12px 0;border-bottom:1px solid #c1aa6c28;margin-bottom:5px}.book-ultimate>span{font-size:27px;color:#d9bd7c}
.book-ultimate small{display:block;font:7px/1.5 var(--room-ui);letter-spacing:1.6px;color:#a79e81}.book-ultimate strong{display:block;font:400 19px/1.3 var(--book);color:#e3cf9e;margin:2px 0;overflow-wrap:anywhere}.book-ultimate p{font:9px/1.5 var(--room-ui);color:#b7b7a0;margin:3px 0 0}
.book-perk-heading{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:44px;margin:2px 0 3px}.book-perk-heading>strong{font:500 11px/1.5 var(--room-ui);color:#e0d4b5}.book-perk-heading strong span{font-size:10px;color:#aebc9f;margin-left:5px;white-space:nowrap}
.book-perk-heading button{min-height:44px;border:0;padding:6px 0 6px 9px;background:none;color:#d7bd86;font:10px/1.5 var(--room-ui)}
.book-perks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.book-perk{display:flex;align-items:center;gap:7px;min-width:0;min-height:46px;padding:7px 8px;text-align:left;border:1px solid color-mix(in srgb,var(--school) 18%,transparent);border-radius:7px;background:linear-gradient(120deg,color-mix(in srgb,var(--school) 6%,#1a261f),#18241e);color:#dcd5bd;box-shadow:inset 0 1px #fff04}
.book-perk.selected{border-color:var(--school);background:#364334}.book-perk .spell-icon{width:23px;height:23px;flex:none;margin:0}.book-perk .spell-icon svg{width:100%;height:100%}.book-perk>span:last-child{font:10px/1.35 var(--room-ui);overflow-wrap:anywhere}
.book-tip{margin:8px 0 12px;font:italic 11px/1.5 var(--book);color:#a4ab94}
.book-perk-detail{padding:10px 11px;margin:8px 0 11px;border-left:2px solid #c3ac73;background:#d8bd7810;border-radius:0 6px 6px 0}.book-perk-detail strong{font:500 11px/1.5 var(--room-ui);color:#e7d8af}.book-perk-detail p{font:11px/1.5 var(--room-ui);margin:4px 0 0;color:#bdc4aa}
.book-warning{color:#ebc88d!important;font:11px/1.5 var(--room-ui);margin:8px 0}
.book-preset-row{padding-top:10px;border-top:1px solid #c1aa6c28}.book-preset-row label{display:block;color:#aeb39b;font:9px/1.5 var(--room-ui);margin-bottom:5px}.book-preset-row>div{display:flex;gap:6px}
.book-preset-row select{min-width:0;flex:1;min-height:44px;border:1px solid #ab9c683f;border-radius:7px;background:#15231c;color:#dfd3b1;font:16px/1.3 var(--book);padding:7px 8px;touch-action:pan-y}
.book-preset-row button,.book-editor-bar button{min-height:44px;border:1px solid #bba66d55;border-radius:7px;padding:8px 12px;background:linear-gradient(125deg,#514d33,#35412c);color:#efdab0;font:11px/1.4 var(--room-ui)}
.book-editor-bar{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-bottom:10px}.book-editor-bar>span{font:italic 15px/1.4 var(--book);color:#cdbb94}
.book-editor{max-height:min(65dvh,580px);overflow-y:auto;overscroll-behavior-y:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:#9a8657 #17221b;padding:2px 4px 8px 1px}
.preparation-overlay .book-editor .prep-section,.preparation-overlay .book-editor .perk-loadout{border:0;border-radius:0;box-shadow:none;background:none;padding:0;margin:0}
.book-editor .room-section-label{display:none}
.preparation-overlay .book-editor h3,.preparation-overlay .book-editor .perk-loadout-heading h3{font-size:19px}
.preparation-overlay .book-editor .prep-caption{font-size:11px;line-height:1.5;margin:5px 0 12px}
.preparation-overlay .book-editor .perk-choice{min-height:62px;padding:8px;grid-template-columns:24px minmax(0,1fr) 43px;gap:7px}
.preparation-overlay .book-editor .perk-choice strong{font-size:11px}.preparation-overlay .book-editor .perk-choice small{font-size:10px}.book-editor .perk-choice .spell-icon{width:24px;height:24px}
.preparation-overlay .book-editor .perk-equipped{padding-top:10px}.preparation-overlay .book-editor .perk-reserve{margin-top:10px;padding-top:12px}
.book-editor .prep-presets{padding:0;margin:0;border:0}.book-editor .prep-presets>summary{display:none}.book-editor .prep-presets>.prep-caption{margin-top:8px}.book-editor .preset-list{margin-top:8px}.book-editor .preset-card{padding:12px}.book-editor .preset-card>strong{font-size:20px}
.book-save-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.book-save-slots button{min-width:0;min-height:55px;padding:7px 6px;border:1px solid #a4946240;border-radius:7px;background:#17251d;color:#dcc590;font:15px/1.3 var(--book)}.book-save-slots button span{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#a7b298;font:9px/1.5 var(--room-ui);margin-top:3px}.book-save-slots button[aria-pressed=true]{border-color:#d2b575;background:#3a432d}
@media(max-width:350px){.preparation-overlay .chamber-spellbook{padding:14px 10px 11px 16px}.book-spells button{gap:4px;padding-inline:5px}.book-spells .spell-icon{width:21px;height:21px}.book-spells i{display:none}.book-spells strong{font-size:10px}.book-spells{grid-template-columns:repeat(auto-fit,minmax(72px,1fr))}.book-perk{padding-inline:6px;gap:5px}.book-heading h3{font-size:22px}}

/* Desktop-only: give the Preparation Chambers space without changing the phone layout. */
@media (min-width: 800px){
 #overlay.preparation-overlay>.panel.preparation-hub{max-width:min(860px,calc(100vw - 64px));padding-inline:30px}
 #overlay.preparation-overlay>.panel.preparation-hub .prep-chamber{margin-left:-30px;margin-right:-30px}
 #overlay.preparation-overlay>.panel.preparation-hub .prep-chamber:not(.compact){aspect-ratio:1.7}
}
/* Desktop keyboard legend for the two interactive onboarding lessons. */
.tutorial-key-hint{display:none;margin:10px 0 12px;font:11px/1.65 var(--room-ui,system-ui,sans-serif);letter-spacing:.2px;color:#e6d7b4}
.tutorial-key-hint strong{font-weight:700;color:#f3e2b6;letter-spacing:1.1px}
@media (min-width: 800px){#overlay.preparation-overlay .tutorial-key-hint{display:block}}

/* Keep the desktop chamber's edges aligned with the full resource bar.
   An auto width plus aspect-ratio and max-height can otherwise shrink the figure. */
@media (min-width: 800px) {
 #overlay.preparation-overlay > .panel .prep-weaver > .prep-chamber {
  width: calc(100% + 40px);
  margin-inline: -20px;
 }
}
