@font-face{font-family:LuneliaSerif;src:url('fonts/lunelia-serif.woff') format('woff');font-display:swap;font-weight:100 900}
@font-face{font-family:LuneliaSerif;src:url('fonts/lunelia-italic.woff') format('woff');font-display:swap;font-style:italic;font-weight:100 900}
@font-face{font-family:LuneliaSans;src:url('fonts/lunelia-sans.woff') format('woff');font-display:swap;font-weight:100 900}
:root{color-scheme:dark;--ink:#fff0dc;--muted:#e1bdd1;--faint:#bc91ae;--rose:#edbbd1;--line:#d0a38555;--warm:#f1d3a2;--panel:#38203fe8;--serif:LuneliaSerif,Georgia,serif;--sans:LuneliaSans,Arial,sans-serif}
*{box-sizing:border-box}html{min-width:320px}body{margin:0;min-height:100svh;position:relative;isolation:isolate;background:#24132d;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}button,a,input{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;cursor:pointer}button,a{color:inherit}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline:2px solid #ffe4ac;outline-offset:3px}button,svg,img{-webkit-user-select:none;user-select:none}img{max-width:100%;height:auto}button svg,a svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex:none}button svg,button img{pointer-events:none}[hidden]{display:none!important}
.scenery{position:fixed;inset:0;z-index:-2;pointer-events:none;background-color:#2e1635;background-repeat:no-repeat;background-position:center;background-size:cover}.scenery::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#25102b22,#26122e0a 46%,#26112e9e)}
.topbar{width:min(850px,100%);margin:auto;min-height:62px;padding:max(12px,env(safe-area-inset-top,0px)) 20px 6px;display:flex;align-items:center;justify-content:space-between;gap:12px}.portal-link{display:inline-flex;align-items:center;gap:6px;text-decoration:none;font-size:.73rem;min-height:42px;padding:8px 13px;border:1px solid #ddb58d7a;border-radius:17px;background:linear-gradient(135deg,#6b3f58ef,#301b36ee);box-shadow:inset 0 0 0 3px #c7988d18;color:#ffead1}.portal-link svg{width:17px;height:17px}.right-controls{display:flex;gap:6px;align-items:center}.wallet{display:flex;align-items:center;gap:7px;padding:7px 12px;min-height:41px;border:1px solid #dbb28a99;border-radius:18px;background:linear-gradient(130deg,#7a4d61f2,#3c2446f5);box-shadow:inset 0 0 0 3px #e1b28718}.wallet b{font:1.08rem/1 var(--serif);font-variant-numeric:tabular-nums}.wallet small{font-size:.59rem;color:#ebcfcf}.coin{width:23px;height:23px;border:1px solid #f6d9a7;border-radius:50%;display:grid;place-items:center;color:#663d4f;background:radial-gradient(circle at 35% 30%,#fff6cf,#d29d67);font:15px var(--serif);box-shadow:inset 0 0 0 2px #b6825988}.icon-btn{width:41px;height:41px;display:grid;place-items:center;padding:9px;border:1px solid #d0a178a6;border-radius:16px;background:linear-gradient(130deg,#75475c,#37203d);box-shadow:inset 0 0 0 3px #e4b59016;color:#ffe5bf}.icon-btn[aria-pressed=false]{color:#ba91ad}.icon-btn[aria-pressed=false] svg{opacity:.5}
.game-main{width:min(790px,100%);margin:auto;padding:2px 20px max(22px,env(safe-area-inset-bottom,0px))}.branding{position:relative;text-align:center;margin:4px auto 18px;max-width:650px}.brand-text{min-width:0}.game-logo{display:block;width:min(430px,100%);height:auto;max-height:170px;object-fit:contain;margin:auto;aspect-ratio:auto}.branding p{font:italic 1.05rem/1.3 var(--serif);margin:7px 0 0;color:#ffe1e0;text-shadow:0 1px 5px #28102b}.eyebrow{font-size:.6rem;letter-spacing:.17em;text-transform:uppercase;color:#efd0aa}.panel{position:relative;isolation:isolate;border:1px solid #e0af85a6;border-radius:23px;background:linear-gradient(145deg,#6d3e5ceb,#3c2348ed 48%,#2c1b3bed);box-shadow:inset 0 0 0 4px #27132d66,0 12px 28px #17081f55}.enchanted-frame::before{content:'';position:absolute;inset:5px;border:1px solid #deb29042;border-radius:18px;pointer-events:none;z-index:2}.enchanted-frame::after{content:'';position:absolute;inset:2px;border:24px solid transparent;border-image:url('v10/corner-frame.svg') 28 stretch;pointer-events:none;z-index:3;opacity:.82}
.panel-top{position:relative;display:flex;justify-content:space-between;align-items:center;gap:14px;padding:19px 23px 16px;border-bottom:1px solid #d5a27f55;background:linear-gradient(110deg,#a8647e26,#3c204200);border-radius:23px 23px 0 0}.phase-badge{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:61px;min-height:56px;padding:6px 10px;border:1px solid #e0b68c99;border-radius:17px 17px 22px 22px;background:linear-gradient(140deg,#a96f88,#5d375e);box-shadow:inset 0 0 0 3px #edc3ab1f}.phase-badge small{font:500 .51rem var(--sans);letter-spacing:.15em;color:#f1ccbc}.phase-number{font:2rem/.95 var(--serif);color:#ffebc2;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.stat-group{display:flex;align-items:center;gap:27px;justify-content:space-between}.stat{text-align:center}.stat small{display:block;color:#e2bbd0;font-size:.6rem;line-height:1.35;margin-bottom:5px}.stat strong{display:block;color:#ffe8d2;font:1.08rem/1.1 var(--serif);font-variant-numeric:tabular-nums}.stat.reward strong{color:#ffdea1}.stat.danger strong{color:#ffb0c0}
.board-status{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 22px;border-top:1px solid var(--line)}.status-text{font-size:.72rem;line-height:1.4;min-height:2.7em;color:#e1b9cd;display:flex;align-items:center}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:40px;padding:6px 0;background:none;border:0;color:#f0cbcf;font-size:.68rem;white-space:nowrap;text-decoration:underline;text-decoration-color:#d5a3b066;text-underline-offset:4px}.text-button svg{width:14px;height:14px}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:46px;padding:12px 23px;text-decoration:none;font:500 .79rem var(--sans);letter-spacing:.02em;border:1px solid #efd0a9;border-radius:18px;background:linear-gradient(120deg,#ffe7bc,#e6b2be);color:#4a2b45;box-shadow:inset 0 0 0 3px #fff0d136,0 3px 8px #1f0e2922}.button-quiet{background:linear-gradient(120deg,#5d3556,#3d2344);color:#f2cdda;border-color:#cc9b9b88}.button:disabled{opacity:.45}.pill{padding:7px 16px;border:1px solid #d4aa8888;border-radius:18px;background:linear-gradient(120deg,#80506aee,#4e2e55ee);font-size:.64rem;color:#f9d8d4}
.guide-nils{border:0;background:none;padding:0;position:relative;display:block;flex:none}.nils-button img{display:block;object-fit:contain;animation:nils-breathe 5s ease-in-out infinite}.nils-button.reacting img{animation:nils-hop .5s ease-out}.nils-button:focus-visible{border-radius:18px}.power-dock{padding:0 18px 18px}.powers-heading{display:flex;align-items:center;gap:12px;padding:6px 10px 11px}.powers-heading span{height:1px;flex:1;background:linear-gradient(90deg,transparent,#d2a18866,transparent)}.powers-heading h2{font:italic 1.05rem/1.15 var(--serif);color:#f3c9d5;margin:0;white-space:nowrap}.power-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.power{position:relative;min-width:0;display:flex;align-items:center;flex-direction:column;justify-content:center;gap:4px;min-height:100px;padding:9px 7px;border:1px solid #dbab8b8c;border-radius:16px 16px 20px 20px;background:radial-gradient(ellipse at 50% 8%,#d694b535,transparent 70%),linear-gradient(140deg,#8e597151,#45284e99);box-shadow:inset 0 0 0 3px #e5bca412;color:var(--ink)}.power::after{content:'';position:absolute;inset:4px;border:1px solid #e6bd9f20;border-radius:12px 12px 16px 16px;pointer-events:none}.power-art{display:block;width:38px;height:37px;object-fit:contain;flex:none}.power strong{font:500 .73rem/1.25 var(--sans);text-align:center}.power b{font:500 .73rem/1.2 var(--sans);color:#ffdaa5;font-variant-numeric:tabular-nums}.power b span{font-size:.58rem;color:#efc18d}.power:disabled{opacity:.4}.footer-note{text-align:center;font-size:.59rem;color:#e6c5d5;line-height:1.5;margin:14px auto 0;text-shadow:0 1px 4px #22102c}
.modal-cover{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:18px;background:#1e0b2be8;overflow:auto}.dialog-open{overflow:hidden}.modal{position:relative;isolation:isolate;text-align:center;width:100%;max-width:420px;max-height:calc(100svh - 36px);overflow:auto;padding:22px 26px 27px;border:1px solid #ecc697bd;border-radius:26px;background:radial-gradient(ellipse at 50% 0,#b46e8d55,transparent 67%),linear-gradient(150deg,#58304f,#2e1a3d);box-shadow:inset 0 0 0 5px #e6b6a014,0 15px 40px #17091e55}.modal-cat{width:95px;height:118px;object-fit:contain;display:block;margin:0 auto 9px}.modal h2{font:2.15rem/1.1 var(--serif);letter-spacing:-.025em;margin:13px 0 11px;color:#ffe9ce}.modal p{font-size:.8rem;line-height:1.65;color:#e9c6d6;margin:10px 0}.modal .eyebrow{font-size:.55rem}.modal-extra{font:italic 1.35rem var(--serif);color:#f7d5a3;margin:17px 0}.modal-extra:empty{display:none}.modal-actions{display:flex;flex-direction:column;gap:9px;margin-top:20px}.modal .button{width:100%}.toast{position:fixed;bottom:max(20px,env(safe-area-inset-bottom,0px));left:50%;z-index:150;width:max-content;max-width:min(430px,90vw);padding:11px 20px;pointer-events:none;text-align:center;border:1px solid #d8ad91;border-radius:19px;background:#5a3455f7;box-shadow:0 4px 18px #22102e55;color:#ffecd3;font-size:.76rem;line-height:1.4;opacity:0;transform:translate(-50%,9px);transition:opacity .15s,transform .15s}.toast.show{opacity:1;transform:translate(-50%,0)}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.magic-flash{pointer-events:none;position:fixed;width:9px;height:9px;color:#ffe1b3;z-index:70;display:block}.magic-flash svg{display:block;width:100%;height:100%;fill:currentColor}
@keyframes nils-breathe{50%{transform:translateY(-1.5px)}}@keyframes nils-hop{40%{transform:translateY(-7px) rotate(-3deg)}70%{transform:translateY(-3px) rotate(2deg)}}
@media(hover:hover){.power:not(:disabled):hover{border-color:#ffe1b3;background-color:#ba7b9633}.button:hover{background:#ffe7c3}.button-quiet:hover{background:#764366}.icon-btn:hover,.portal-link:hover{border-color:#f2caa5}}
@media(max-width:700px){.topbar{padding-inline:13px;gap:6px;min-height:58px}.portal-link{min-height:40px;font-size:.65rem;padding:8px 10px;border-radius:15px}.right-controls{gap:5px}.wallet{padding:7px 10px;gap:6px;min-height:40px}.wallet small{display:none}.wallet b{font-size:1rem}.icon-btn{width:39px;height:40px;border-radius:15px;padding:8px}.icon-btn svg{width:18px;height:18px}.game-main{padding:3px 12px max(22px,env(safe-area-inset-bottom,0px))}.branding{margin:6px auto 17px}.game-logo{width:min(385px,95%);max-height:144px}.branding p{font-size:.94rem;margin-top:5px}.panel{border-radius:22px}.panel-top{padding:16px 16px 13px;gap:11px}.phase-badge{min-width:53px;min-height:52px;padding:5px 8px}.phase-number{font-size:1.85rem}.phase-badge small{font-size:.48rem}.stat-group{gap:20px}.stat small{font-size:.56rem}.stat strong{font-size:1rem}.board-status{padding:7px 16px;gap:10px}.status-text{font-size:.65rem}.text-button{font-size:.61rem}.power-dock{padding:0 13px 16px}.power-grid{gap:8px}.powers-heading h2{font-size:1rem}.power{padding:8px 5px;min-height:96px;border-radius:14px 14px 19px 19px;gap:4px}.power-art{height:34px;width:35px}.power strong{font-size:.65rem}.power b{font-size:.68rem}.footer-note{font-size:.55rem;margin-top:12px}.modal{padding:21px 22px 24px}.modal h2{font-size:2rem}.modal p{font-size:.77rem}}
@media(max-width:360px){.topbar{padding-inline:10px}.portal-link{font-size:.6rem;padding-inline:8px}.wallet{padding-inline:9px}.icon-btn{width:36px}.game-main{padding-inline:9px}.stat-group{gap:13px}.stat small{font-size:.51rem}.stat strong{font-size:.9rem}.power strong{font-size:.6rem}.power-grid{gap:6px}.power-dock{padding-inline:11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
body.is-hidden *,body.is-hidden *::before,body.is-hidden *::after{animation-play-state:paused!important}
