:root{color-scheme:dark;--ink:#f3eee1;--muted:#b5c7cf;--gold:#e5c58c;--line:#b9a87950;--panel:#0e2034e8;--accent:#a6e3dc;font-family:Segoe UI,Arial,sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;background:#0b1b2d;color:var(--ink);overflow:hidden}button,a{touch-action:manipulation}button{font:inherit;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:12px 18px;background:linear-gradient(140deg,#3e52645e,#112539dc);cursor:pointer;transition:background .2s,border-color .2s}button:hover{background:#43596ce6;border-color:var(--gold)}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #ffe3a1;outline-offset:3px}button.primary{background:linear-gradient(115deg,#e6ce9d,#b89455);color:#172537;border-color:#ffe5b6;font-weight:650}button.primary:hover{background:#f4d8a0}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400}p{line-height:1.5}#scenery{position:fixed;inset:-10px;background:url('assets/skyrealm.svg') center/cover;z-index:-3;transition:filter 1.5s;transform:scale(1.02)}body[data-region="1"] #scenery{filter:hue-rotate(315deg) saturate(.9)}body[data-region="2"] #scenery{filter:hue-rotate(15deg) saturate(.6) brightness(1.15)}body[data-region="3"] #scenery{filter:hue-rotate(155deg) saturate(.85)}body[data-region="4"] #scenery{filter:hue-rotate(35deg) saturate(1.1) brightness(.8)}.vignette{position:fixed;inset:0;background:linear-gradient(90deg,#071625ce,transparent 90%),linear-gradient(0deg,#071523c9,transparent 70%);z-index:-2}#app{height:100dvh;max-width:1600px;margin:auto;padding:0 4vw}.masthead{height:75px;display:flex;align-items:center;gap:24px;border-bottom:1px solid #c3cbd51c}.wordmark{text-decoration:none;font-weight:700;font-size:13px;letter-spacing:3px;color:var(--ink)}.wordmark span{font-weight:300;color:var(--gold)}.edition{font-size:10px;letter-spacing:2.7px;color:var(--muted)}.icon-button{margin-left:auto;width:42px;height:42px;padding:4px;font-size:24px}.menu-screen{height:calc(100% - 75px);display:flex;align-items:center;position:relative}.hero-copy{width:540px;padding:28px 0;z-index:1}.eyebrow{font-size:11px;font-weight:600;letter-spacing:2.5px;color:var(--gold)}h1{font-size:clamp(56px,6.3vw,94px);line-height:.95;letter-spacing:-4px;margin:25px 0 10px;text-shadow:0 3px 30px #132235}h1 span{display:block;color:var(--gold);font-size:.72em;font-style:italic;letter-spacing:2px;line-height:1.25}.ornament{color:var(--gold);font-size:23px;letter-spacing:6px;margin:10px 0}.intro{font-family:Georgia,serif;font-size:21px;color:#d5e0dc;line-height:1.55;margin:10px 0 25px}.menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:470px}.menu-actions .primary{grid-column:1/-1}.menu-actions button{display:flex;align-items:center;justify-content:space-between;min-height:48px;text-align:left}.menu-actions button:last-child{grid-column:1/-1}.smallnav{display:flex;flex-wrap:wrap;gap:16px;margin:24px 0 10px}.smallnav button{background:none;border:0;border-bottom:1px solid #a6c6cc40;border-radius:0;padding:0 0 4px;font-size:13px;color:#d7dede}.muted,.fan-note{color:var(--muted);font-size:12px}.fan-note{max-width:410px;font-size:10px;line-height:1.5;margin-top:18px;opacity:.8}.hero-detail{flex:1;height:100%;position:relative}.hero-detail>p{position:absolute;bottom:11%;right:0;text-align:right;font-size:11px;letter-spacing:3px;color:var(--gold)}.hero-detail>p span{display:block;letter-spacing:1px;font-size:12px;margin-top:9px;color:var(--muted)}.hero-orb{position:absolute;display:grid;place-items:center;border:1px solid #b9f5f6a9;border-radius:50%;color:#effffde0;font:40px Georgia;text-shadow:0 0 18px #fff;box-shadow:inset -10px -15px 25px #031326d9,inset 5px 8px 18px #d6ffef7d,0 0 30px #8adee533;background:radial-gradient(circle at 30% 25%,#e5ffffb5 0,transparent 13%),radial-gradient(circle at 35% 35%,#64c6d48a,#17556445 65%,#79c7ca7d);animation:drift 7s ease-in-out infinite}.hero-orb:after{content:'';position:absolute;top:-8%;width:60%;height:17%;border:2px solid #ebd9ab;border-radius:50%;box-shadow:0 0 15px #f1d79b66}.orb-a{width:130px;height:130px;left:28%;top:27%}.orb-b{width:82px;height:82px;left:10%;top:52%;filter:hue-rotate(75deg);animation-delay:-3s}.orb-c{width:63px;height:63px;right:5%;top:48%;filter:hue-rotate(260deg);animation-delay:-1.5s}.play-screen{height:calc(100% - 75px);padding-top:18px}.chapter{display:flex;align-items:center;justify-content:space-between;height:64px}.chapter h2{font-size:25px;margin-top:6px}.chapter button{padding:9px 14px}.game-layout{height:calc(100% - 80px);display:grid;grid-template-columns:minmax(160px,1fr) minmax(260px,590px) minmax(170px,1fr);gap:22px;align-items:center}.panel{background:linear-gradient(135deg,#132b40ef,#0b192bec);border:1px solid var(--line);border-radius:12px;padding:22px;box-shadow:0 12px 50px #02091755}.scoreline,.clockline{display:flex;flex-direction:column;gap:5px;margin-top:23px;font-size:13px;color:var(--muted)}.scoreline strong{font-family:Georgia,serif;font-size:36px;color:var(--ink);font-weight:400}.clockline strong{font-size:25px;color:var(--gold);font-variant-numeric:tabular-nums}.clockline strong.urgent{color:#ffb7a9}.objective{margin-top:21px;font-size:13px}.objective .goal-line{display:flex;justify-content:space-between;gap:10px;margin-bottom:7px}.objective progress{width:100%;height:6px;accent-color:#d9be89;border:0;background:#07182b;border-radius:8px;display:block}.objective progress::-webkit-progress-bar{background:#061424;border-radius:8px}.objective progress::-webkit-progress-value{background:linear-gradient(90deg,#7baea7,#e2ca98);border-radius:8px}.objective.complete .goal-line{color:#b2e7c7}.story-caption{font-family:Georgia,serif;font-size:14px;color:#acbfc9;font-style:italic;line-height:1.6;margin-top:25px;padding-top:20px;border-top:1px solid #aaa4a429}.board-column{min-width:0;display:flex;flex-direction:column;align-items:center;width:100%}.board-frame{padding:9px;border:1px solid #d6bd859c;border-radius:14px;box-shadow:0 12px 60px #0007,0 0 0 4px #ad916516,inset 0 0 18px #bbba7930;background:linear-gradient(140deg,#254452c9,#0c1e34ed);position:relative;max-width:100%;width:min(100%,calc(100dvh - 250px));aspect-ratio:1}.board-frame:before,.board-frame:after{content:'✧';position:absolute;color:var(--gold);font-size:21px;line-height:16px;pointer-events:none;z-index:1}.board-frame:before{left:-8px;top:-8px}.board-frame:after{right:-8px;bottom:-8px}canvas{width:100%;height:100%;display:block;touch-action:none;border-radius:7px}#message{height:44px;text-align:center;line-height:1.4;font-size:12px;color:#dfdbbf;padding:10px 5px;max-width:540px}.sequence{font-family:Georgia,serif;font-size:44px;color:var(--gold);margin-top:15px;text-shadow:0 0 25px #a5dce633}.sequence small{font:18px 'Segoe UI',sans-serif}.magic-panel>p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.5}#sequence-text{min-height:42px;margin:4px 0 16px}.charge-row{font-size:12px;display:flex;justify-content:space-between;gap:8px;border-top:1px solid #aaa4a429;padding-top:16px}.charge-row strong{color:var(--gold)}.spell-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:12px 0}.spell{padding:8px 4px;font-size:10px;display:flex;flex-direction:column;align-items:center;gap:4px}.spell b{font:25px Georgia;color:#e7d19a}.spell.armed{background:#4b686b;border:2px solid #ffe4a7;padding:7px 3px}.spell .cost{font-size:10px;color:#b6d1d1}.hint-button{padding:10px 4px;width:100%;font-size:12px}.legend{margin-top:13px;text-align:center}dialog{background:linear-gradient(145deg,#243b4f,#0b1a2d);color:var(--ink);border:1px solid #d9bf87a8;border-radius:18px;padding:30px;width:min(600px,94vw);max-height:90dvh;box-shadow:0 20px 100px #0009}dialog::backdrop{background:#061322bf;backdrop-filter:blur(7px)}dialog h2{font-size:32px;color:#ead4a9;margin:8px 0 17px}dialog h3{font-size:20px;color:#e7d19a;margin:22px 0 8px}dialog p{color:#c4d1d9;font-size:14px;margin:9px 0}dialog .buttons{display:flex;gap:9px;flex-wrap:wrap;margin-top:22px}dialog .buttons button{flex:1;min-width:120px}dialog .close{float:right;border:0;background:transparent;padding:2px 6px;font-size:22px}dialog label{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid #ccd1c320;font-size:14px}dialog input{width:20px;height:20px;accent-color:#dec491}dialog select{background:#1c3349;border:1px solid var(--line);padding:10px;color:#fff;font:inherit;border-radius:6px;width:100%}.level-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:20px}.level-grid button{padding:10px 2px;min-height:58px}.level-grid small{display:block;font-size:10px;color:var(--gold)}.stars{color:var(--gold);font-size:38px;letter-spacing:12px;margin:15px 0}.result-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.result-stats div{padding:15px;border:1px solid var(--line);border-radius:8px;color:var(--muted);font-size:12px}.result-stats strong{display:block;font-size:22px;color:var(--ink);font-weight:400;margin-top:5px}.help-table{width:100%;border-collapse:collapse;font-size:13px}.help-table td{padding:10px 0;border-bottom:1px solid #abc2c122;vertical-align:top}.help-table td:first-child{width:105px;color:var(--gold)}.danger{color:#ffb7a9}#storage-warning{position:fixed;bottom:5px;left:5%;right:5%;text-align:center;padding:8px;font-size:12px;background:#60442b;z-index:5}.high-contrast{--muted:#e2e9ee;--line:#f3d39b;--gold:#ffe1a1}.high-contrast .panel{background:#091522}.reduced *{animation:none!important;transition:none!important}@keyframes drift{50%{transform:translateY(-16px)}}[hidden]{display:none!important}
@media(max-width:1100px){#app{padding:0 22px}.game-layout{grid-template-columns:160px minmax(220px,1fr) 175px;gap:13px}.panel{padding:15px}.story-caption{display:none}.board-frame{width:min(100%,calc(100dvh - 245px))}.hero-copy{width:480px}.hero-orb{opacity:.7}}
@media(max-width:750px){#app{padding:0 12px}.masthead{height:48px}.edition{font-size:8px;letter-spacing:1px}.wordmark{font-size:11px;letter-spacing:2px}.icon-button{height:34px;width:34px}.menu-screen{height:calc(100% - 48px)}.hero-copy{width:min(100%,450px);margin:auto;padding:16px 8px}.hero-detail{display:none}h1{font-size:66px;margin:18px 0 5px}.eyebrow{font-size:9px;letter-spacing:2px}.intro{font-size:18px;margin:10px 0 20px}.ornament{margin:4px 0}.smallnav{gap:15px;margin:18px 0 10px}.fan-note{margin-top:10px}.play-screen{height:calc(100% - 48px);padding-top:5px}.chapter{height:51px}.chapter h2{font-size:18px;margin-top:3px}.chapter button{font-size:13px;padding:9px 12px}.game-layout{height:calc(100% - 56px);display:flex;flex-direction:column;gap:7px;align-items:stretch;justify-content:center}.quest-panel{display:grid;grid-template-columns:1fr 1fr;gap:3px 12px;padding:8px 12px}.quest-panel>.eyebrow{display:none}.scoreline,.clockline{flex-direction:row;align-items:center;margin:0;gap:8px;font-size:11px}.scoreline strong,.clockline strong{font:19px Georgia}.clockline{justify-content:flex-end}.clockline span{font-size:0}.clockline span:after{content:'◷';font-size:16px}#objectives{grid-column:1/-1;display:flex;gap:13px}.objective{flex:1;margin-top:5px;font-size:11px}.objective .goal-line{margin-bottom:4px;gap:2px}.board-column{flex:0 1 auto;min-height:0}.board-frame{width:min(100%,calc(100dvh - 332px));padding:5px;border-radius:10px}#message{height:29px;padding:6px 0 0;font-size:10px}.magic-panel{display:grid;grid-template-columns:auto 1fr auto;gap:3px 8px;padding:8px 10px}.magic-panel>.eyebrow,.legend{display:none}.sequence{font-size:23px;margin:0;grid-row:1}.sequence small{font-size:12px}#sequence-text{grid-row:1;margin:0;min-height:0;font-size:10px;align-self:center}.charge-row{grid-row:1;border:0;padding:0;align-items:center;font-size:10px;gap:3px}.charge-row>span{display:none}.spell-grid{grid-column:1/-1;display:flex;gap:5px;margin:3px 0}.spell{flex:1;padding:3px 1px;gap:1px;min-height:44px;font-size:8px}.spell b{font-size:18px}.spell .cost{font-size:8px}.spell.armed{padding:2px 0}.hint-button{grid-column:1/-1;padding:6px;min-height:32px;font-size:11px}dialog{padding:22px}dialog h2{font-size:28px}}
@media(max-height:710px) and (max-width:750px){.hero-copy{padding:10px 8px}h1{font-size:52px;margin:12px 0}.intro{font-size:15px;margin:7px 0 14px}.ornament{display:none}.menu-actions button{min-height:41px;padding:9px 14px}.smallnav{margin:14px 0 8px}.fan-note{font-size:9px}.board-frame{width:min(100%,calc(100dvh - 319px))}.game-layout{gap:5px}.magic-panel{padding:6px 8px}.spell{min-height:40px}.chapter{height:46px}}
@media(orientation:landscape) and (max-height:600px){#app{padding:0 14px}.masthead{height:36px}.masthead .icon-button{height:29px}.menu-screen{height:calc(100% - 36px)}.hero-copy{width:530px;display:grid;grid-template-columns:200px 1fr;column-gap:22px;padding:10px}.hero-copy>.eyebrow{grid-column:1/-1}.hero-copy h1{font-size:49px;grid-row:2/4;margin:18px 0}.intro{font-size:14px;margin:10px 0}.ornament,.fan-note{display:none}.menu-actions{grid-column:2;grid-row:2/5;margin:10px 0}.menu-actions button{font-size:12px;padding:8px 10px;min-height:38px}.smallnav{grid-column:1/-1;margin:4px 0;justify-content:center}.muted{text-align:center;grid-column:1/-1}.hero-detail{display:none}.play-screen{height:calc(100% - 36px);padding-top:0}.chapter{height:43px}.chapter h2{font-size:17px}.chapter .eyebrow{font-size:8px}.game-layout{height:calc(100% - 44px);display:grid;grid-template-columns:160px 1fr 180px;gap:12px;align-items:center}.panel{padding:10px;display:block}.quest-panel>.eyebrow{display:none}.scoreline,.clockline{display:flex;flex-direction:row;align-items:center;justify-content:space-between;font-size:11px;margin:0 0 6px}.scoreline strong{font-size:22px}.clockline strong{font-size:19px}.clockline span{font-size:10px}.clockline span:after{content:''}#objectives{display:block}.objective{margin-top:12px;font-size:11px}.board-frame{width:min(100%,calc(100dvh - 122px));padding:5px}#message{font-size:9px;height:24px;padding:4px 0}.sequence{font-size:24px;margin:0}.sequence small{font-size:12px}.magic-panel>.eyebrow,.legend{display:none}#sequence-text{font-size:10px;margin:3px 0;min-height:30px}.charge-row{font-size:10px;padding:4px 0;border-top:1px solid var(--line)}.charge-row>span{display:block}.spell-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:6px 0}.spell{min-height:42px;font-size:8px;padding:3px 1px;gap:0}.spell b{font-size:18px}.spell .cost{font-size:8px}.hint-button{font-size:10px;padding:6px;min-height:30px}.story-caption{display:none}}

@media(max-width:750px) and (orientation:portrait){.spell{font-size:10px}.spell .cost{font-size:9px}#sequence-text{font-size:11px}#message{font-size:11px}.objective{font-size:12px}.hint-button{font-size:12px}}
