:root{color-scheme:dark;--ink:#130e1d;--cream:#f8edda;--muted:#beb0c5;--gold:#e7ae60;--teal:#60ded5;--violet:#af86e6;--panel:rgba(26,18,37,.91);--font:'DM Sans',sans-serif;--display:'Cinzel',Georgia,serif}*{box-sizing:border-box}html,body{margin:0;overflow:hidden;width:100%;height:100%;background:var(--ink);color:var(--cream);font-family:var(--font)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{opacity:.34;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--teal);outline-offset:5px}button{touch-action:manipulation}button svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}#game{position:relative;width:100%;height:100%;height:100dvh;isolation:isolate;overflow:hidden}.backdrop{position:absolute;inset:0;background:url('./assets/crypt-backdrop.jpg') center 38% / cover no-repeat;z-index:-4}.scene-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(14,8,27,.10),rgba(17,9,27,.25) 60%,#160e22);z-index:-3}#scene{display:block;width:100%;height:100%;touch-action:none;position:absolute;inset:0;z-index:-2}.vignette{position:absolute;inset:0;pointer-events:none;z-index:-1;background:linear-gradient(180deg,rgba(12,7,20,.82) 0,transparent 22%,transparent 70%,rgba(12,7,20,.9) 100%),linear-gradient(90deg,rgba(15,8,24,.6),transparent 28%,transparent 72%,rgba(15,8,24,.6))}.topbar{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:26px 38px;gap:24px;z-index:5}.brand{display:flex;gap:12px;align-items:center;color:var(--cream);text-decoration:none;font-family:var(--display);font-size:23px;font-weight:600;letter-spacing:2px}.brand-sigil{font-size:42px;color:var(--gold);font-weight:400;line-height:1}.brand small{display:block;font:500 8px/1.7 var(--font);letter-spacing:3px;color:var(--gold)}.score-block{position:absolute;left:50%;transform:translateX(-50%);text-align:center}.eyebrow{font-size:9px;letter-spacing:2.1px;font-weight:650;color:var(--muted);display:block}.score-block strong{display:block;font-family:var(--display);font-size:31px;font-weight:500;letter-spacing:3px;font-variant-numeric:tabular-nums;line-height:1.25}.combo{position:absolute;right:-42px;top:24px;border:1px solid rgba(231,174,96,.3);border-radius:50%;width:30px;height:30px;font-size:12px;display:grid;place-items:center;color:var(--gold);background:rgba(29,18,35,.75)}.utilities{display:flex;gap:9px}.icon-button{width:40px;height:40px;border:1px solid rgba(239,220,255,.16);background:rgba(28,19,39,.55);border-radius:50%;display:grid;place-items:center;transition:.2s}.icon-button:hover{background:rgba(125,84,139,.4);border-color:var(--gold)}.level-info{position:absolute;left:40px;top:158px;pointer-events:none}.level-info .eyebrow{color:var(--gold)}h1{font:500 29px/1.25 var(--display);margin:12px 0 16px;letter-spacing:.2px}.level-number{font-size:9px;letter-spacing:2px;color:#b89bc5}.level-info p{font-size:12px;line-height:1.8;color:var(--muted);margin-top:22px}.harvest{position:absolute;right:35px;top:163px;width:226px}.harvest>.eyebrow{margin-bottom:15px;color:var(--gold)}.basket{display:grid;grid-template-columns:28px 1fr auto;gap:9px;align-items:center;text-align:left;width:100%;position:relative;background:rgba(28,19,40,.7);border:1px solid rgba(220,192,242,.12);padding:14px 12px;margin-bottom:9px;border-radius:9px;transition:.2s}.basket:hover{background:rgba(60,42,73,.8)}.basket.selected{border-color:rgba(96,222,213,.6);background:rgba(36,57,64,.65)}.basket-icon{color:var(--teal);font-size:27px;line-height:1}.basket-icon.pumpkin{color:var(--gold)}.basket-name{display:block;font-size:11px;font-weight:600;white-space:nowrap}.basket-name small{display:block;font-size:7px;letter-spacing:1.3px;color:var(--muted);margin-top:3px;font-weight:450}.basket strong{align-self:start;font-size:10px;white-space:nowrap;font-weight:500;font-variant-numeric:tabular-nums}.meter{display:block;margin-top:9px;height:3px;border-radius:5px;background:rgba(255,255,255,.1);overflow:hidden}.meter>span{display:block;width:0;height:100%;background:var(--teal);transition:width .7s;border-radius:5px}#right-fill{background:var(--gold)}.route-tick{position:absolute;right:10px;bottom:9px;font-size:9px;color:var(--teal);opacity:0}.selected .route-tick{opacity:1}.harvest-hint{display:block;text-align:center;font-size:9px;color:var(--muted);margin-top:12px}.bottom-bar{position:absolute;left:35px;right:35px;bottom:max(22px,env(safe-area-inset-bottom));display:flex;justify-content:space-between;align-items:flex-end;gap:20px;z-index:5}.ammo-dock{display:flex;align-items:center;gap:17px;background:linear-gradient(145deg,rgba(43,29,51,.94),rgba(21,15,30,.98));border:1px solid rgba(231,174,96,.32);border-radius:16px;box-shadow:0 12px 50px #10081dc2,inset 0 1px rgba(255,255,255,.06);padding:17px 24px;position:absolute;left:50%;bottom:0;transform:translateX(-50%)}.ammo-dock:before{content:'◆';position:absolute;left:50%;top:-7px;font-size:10px;color:var(--gold)}.shots{text-align:center;min-width:65px}.shots .eyebrow{font-size:8px;letter-spacing:1.3px}.shots strong{font:500 37px/1.25 var(--display);font-variant-numeric:tabular-nums}.dock-divider{width:1px;height:48px;background:linear-gradient(transparent,rgba(231,174,96,.26),transparent)}.ammo{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:51px}.ammo>.eyebrow{font-size:7px;letter-spacing:1.7px}.ammo>span:last-child{font-size:9px;color:var(--muted)}.monster-portrait{width:40px;height:40px;position:relative;border-radius:50%;box-shadow:inset -4px -6px 10px rgba(0,0,0,.5),inset 3px 3px 5px rgba(255,255,255,.3),0 0 18px rgba(128,87,206,.15);background-size:cover}.next .monster-portrait{width:32px;height:32px;margin:4px}.swap-button{border:0;background:none;color:var(--gold);display:flex;flex-direction:column;align-items:center;gap:7px;padding:9px 0;min-width:34px}.swap-button svg{width:25px;height:25px;transition:transform .25s}.swap-button:hover svg{transform:rotate(180deg)}kbd{font-family:var(--font);font-size:6px;letter-spacing:1px;color:var(--muted)}.spell{display:flex;align-items:center;gap:8px;text-align:left;background:rgba(209,175,255,.04);border:1px solid rgba(209,175,255,.12);padding:11px 12px;border-radius:8px;min-height:53px;font-size:10px;white-space:nowrap;transition:.2s}.spell small{display:block;color:var(--muted);font-size:8px;margin-top:3px}.spell-symbol{font-size:27px;line-height:1;color:var(--gold)}.hex-symbol{color:var(--violet)}.spell.active{border-color:var(--gold);background:rgba(231,174,96,.14);box-shadow:0 0 20px rgba(231,174,96,.1)}.spell:hover:not(:disabled){border-color:rgba(231,174,96,.5)}.help-link{display:flex;align-items:center;gap:8px;font-size:10px;color:var(--muted);border:0;background:none;padding:10px 0}.help-link>span{width:20px;height:20px;display:grid;place-items:center;border:1px solid rgba(219,193,240,.25);border-radius:50%;font:12px var(--display)}.view-note{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:7px;letter-spacing:1.5px;line-height:1.8;text-align:right}.tiny-moon{font-size:28px;color:var(--gold)}.aim-help{position:absolute;bottom:154px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;font-size:10px;color:#e8d5e7;white-space:nowrap;text-shadow:0 2px 5px #120a1e;pointer-events:none}.help-dot{width:4px;height:4px;border-radius:50%;background:var(--teal);box-shadow:0 0 8px var(--teal)}.toast{position:absolute;left:50%;top:116px;transform:translate(-50%,-10px);border:1px solid rgba(231,174,96,.32);background:rgba(29,18,39,.94);backdrop-filter:blur(14px);padding:11px 21px;border-radius:30px;color:var(--cream);font-size:12px;opacity:0;transition:.25s;pointer-events:none;white-space:nowrap;z-index:12}.toast.visible{opacity:1;transform:translate(-50%,0)}.floating-score{position:absolute;left:50%;top:43%;transform:translate(-50%,0);pointer-events:none;z-index:10;text-align:center;font:600 35px var(--display);color:#ffda91;text-shadow:0 2px 12px #2c102a;opacity:0}.floating-score small{display:block;font:600 10px var(--font);letter-spacing:3px;margin-top:8px;color:var(--cream)}.floating-score.show{animation:score-rise 1.8s ease-out forwards}@keyframes score-rise{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}18%{opacity:1;transform:translate(-50%,0) scale(1.05)}65%{opacity:1}100%{opacity:0;transform:translate(-50%,-60px)}}.loading{position:absolute;inset:0;background:#160f22;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;color:var(--muted);font-size:12px;letter-spacing:1px;transition:opacity .5s}.loading-pumpkin{font-size:50px;color:var(--gold);animation:pulse 1.4s infinite}@keyframes pulse{50%{opacity:.4;transform:scale(.9)}}.modal-layer{position:absolute;inset:0;background:rgba(13,8,22,.65);backdrop-filter:blur(9px);z-index:25;display:flex;align-items:center;justify-content:center;padding:24px;overflow-y:auto}.modal-layer[hidden]{display:none}.modal{background:linear-gradient(150deg,#302038,#191321);border:1px solid rgba(231,174,96,.35);border-radius:18px;width:min(470px,100%);padding:34px;box-shadow:0 25px 100px #080511a6;position:relative;max-height:calc(100dvh - 48px);overflow-y:auto;text-align:center}.modal.welcome{width:min(510px,100%);padding:0 36px 30px;overflow:hidden}.welcome-art{height:140px;background:linear-gradient(transparent,#261a30),url('./assets/concept.jpg') center 35% / cover;margin:0 -36px 22px}.modal .eyebrow{color:var(--gold)}.modal h2{font:500 32px/1.2 var(--display);margin:12px 0 14px}.modal p{font-size:13px;line-height:1.8;color:#c6b6cc;margin:10px 0 24px}.primary-button{border:1px solid #eec78c;background:linear-gradient(115deg,#f4cb8e,#d89b53);color:#281b27;font-weight:700;letter-spacing:.3px;padding:15px 24px;border-radius:7px;width:100%;font-size:13px;box-shadow:0 4px 20px #e2a25914;transition:.2s}.primary-button:hover{filter:brightness(1.1);transform:translateY(-1px)}.secondary-button{display:block;background:transparent;border:1px solid #68516e;padding:13px;border-radius:7px;font-size:12px;width:100%;margin-top:10px}.secondary-button:hover{background:#ffffff09}.daily-button{background:none;border:0;color:var(--muted);font-size:11px;margin:17px auto 0;padding:6px 12px}.daily-button span{color:var(--gold);margin-right:6px}.modal-foot{font-size:9px;letter-spacing:1px;color:#ab93b4;margin-top:21px;line-height:1.7}.welcome .modal-foot{margin-top:10px}.modal-close{position:absolute;right:14px;top:12px;background:#17101fa8;border:1px solid #ffffff20;border-radius:50%;width:30px;height:30px;font-size:20px;line-height:1;z-index:2}.instruction-list{text-align:left;display:grid;gap:18px;margin:25px 0}.instruction-list>div{display:flex;gap:13px;align-items:start}.instruction-list b{font:500 21px var(--display);color:var(--gold);min-width:24px}.instruction-list p{margin:0;font-size:12px;line-height:1.7}.instruction-list strong{color:var(--cream);font-weight:600}.settings-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:17px 0;border-bottom:1px solid #ffffff12;text-align:left}.settings-row span{font-size:12px}.settings-row small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.settings-row input{accent-color:var(--gold);width:20px;height:20px}.settings-group{margin:20px 0 26px}.record-table{border-collapse:collapse;width:100%;margin:24px 0;font-size:11px;text-align:left}.record-table th{color:var(--muted);font-size:9px;font-weight:500;padding:10px 6px;border-bottom:1px solid #ffffff20}.record-table td{padding:12px 6px;border-bottom:1px solid #ffffff10}.record-table td:nth-child(n+2),.record-table th:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums}.empty-records{padding:25px 0;font-size:12px;color:var(--muted)}.result-stats{display:flex;justify-content:space-around;margin:25px 0 28px;gap:10px}.result-stats strong{font:500 26px var(--display);display:block;color:var(--gold)}.result-stats small{font-size:8px;letter-spacing:1px;color:var(--muted)}.result-sigil{font-size:46px;color:var(--gold);line-height:1.2;margin:10px 0 20px}.touch-aim{display:none}.blood-theme{--teal:#ed708d;--gold:#e3b67d}.blood-theme .backdrop{filter:hue-rotate(330deg)}
@media(min-width:1600px){.topbar{padding:35px 50px}.level-info{left:50px;top:185px}.harvest{right:50px;top:190px;width:250px}.bottom-bar{left:50px;right:50px;bottom:32px}h1{font-size:34px}.ammo-dock{padding:20px 28px}}
@media(max-width:1100px){.topbar{padding:24px}.brand{font-size:19px}.brand small{font-size:7px}.level-info{left:24px;top:133px}.level-info h1{font-size:23px}.level-info p{font-size:10px}.harvest{right:23px;top:137px;width:193px}.basket{padding:12px 9px;gap:6px;grid-template-columns:22px 1fr auto}.basket-icon{font-size:22px}.basket-name{font-size:10px}.basket strong{font-size:9px}.basket-name small{font-size:6px}.bottom-bar{left:24px;right:24px}.view-note{display:none}.help-link{position:absolute;bottom:115px;left:0}.ammo-dock{gap:13px;padding:14px 20px}.harvest-hint{font-size:8px}.level-info p{max-width:135px}}
@media(max-width:700px){.topbar{padding:18px 18px 0;align-items:start;gap:5px}.brand{font-size:16px;gap:6px;letter-spacing:1.2px}.brand-sigil{font-size:31px}.brand small{font-size:5px;letter-spacing:2px}.score-block{top:66px}.score-block .eyebrow{font-size:7px;letter-spacing:1.6px}.score-block strong{font-size:25px}.combo{top:20px;right:-32px;width:24px;height:24px;font-size:10px}.utilities{gap:6px}.icon-button{width:34px;height:34px}.icon-button svg{width:17px;height:17px}.level-info{left:18px;top:77px}.level-info>.eyebrow{font-size:6px;letter-spacing:1.2px}.level-info h1{font-size:15px;margin:7px 0}.level-number{font-size:6px;letter-spacing:1px}.level-info p{display:none}.harvest{top:134px;left:18px;right:18px;width:auto;display:flex;gap:8px}.harvest>.eyebrow,.harvest-hint{display:none}.basket{padding:9px 10px;border-radius:7px;gap:7px;grid-template-columns:22px 1fr auto;margin:0;min-height:49px}.basket-icon{font-size:22px}.basket-name{font-size:9px}.basket-name small{display:none}.basket strong{font-size:8px;align-self:center}.meter{margin-top:6px;height:3px}.route-tick{display:none}.bottom-bar{left:12px;right:12px;bottom:max(14px,env(safe-area-inset-bottom))}.ammo-dock{gap:10px;padding:13px 12px 11px;max-width:100%;width:100%;justify-content:center;border-radius:13px}.shots{min-width:39px}.shots .eyebrow{font-size:6px;letter-spacing:1px;white-space:nowrap}.shots strong{font-size:29px}.dock-divider{height:40px}.ammo{min-width:34px;gap:4px}.ammo>.eyebrow{font-size:6px;letter-spacing:1px}.monster-portrait{width:34px;height:34px}.next .monster-portrait{width:27px;height:27px;margin:3.5px}.ammo>span:last-child{font-size:7px}.swap-button{min-width:30px;padding:10px 0}.swap-button svg{width:22px;height:22px}.swap-button kbd{display:none}.spell{display:flex;flex-direction:column;gap:4px;padding:7px 8px;min-width:44px;min-height:60px;font-size:7px;text-align:center}.spell-symbol{font-size:22px}.spell small{font-size:6px;margin-top:2px}.aim-help{bottom:120px;font-size:8px;max-width:90%;text-align:center;white-space:normal;width:max-content}.help-link{bottom:104px;left:3px;font-size:0;padding:0}.help-link>span{font-size:11px;width:22px;height:22px}.toast{top:194px;font-size:10px;padding:10px 16px;white-space:normal;text-align:center;width:max-content;max-width:90%}.floating-score{top:44%;font-size:29px}.floating-score small{font-size:8px}.modal-layer{padding:18px}.modal{padding:27px 24px;border-radius:15px}.modal h2{font-size:27px}.modal.welcome{padding:0 26px 25px}.welcome-art{height:126px;margin:0 -26px 20px}.modal p{font-size:12px}.touch-aim{display:block;position:absolute;bottom:150px;left:0;right:0;height:80px;text-align:center;pointer-events:none;opacity:0;transition:opacity .3s}.touch-aim span{font-size:8px;letter-spacing:1px;color:#c5afcc}.touch-aim.visible{opacity:1}.record-table{font-size:10px}}
@media(max-width:365px){.ammo-dock{gap:7px;padding-inline:8px}.shots{min-width:33px}.spell{padding-inline:5px;min-width:40px}.brand{font-size:14px}.brand-sigil{font-size:26px}.utilities{gap:4px}.icon-button{width:31px;height:31px}.basket{padding-inline:7px;gap:5px}.basket-name{font-size:8px}}
@media(max-height:550px) and (orientation:landscape){.topbar{padding:12px 20px}.brand{font-size:16px}.brand-sigil{font-size:28px}.score-block{top:10px}.score-block strong{font-size:23px}.icon-button{width:31px;height:31px}.level-info{top:83px;left:20px}.level-info h1{font-size:18px}.level-info p{display:none}.harvest{top:85px;right:20px;width:175px;left:auto;display:block}.harvest>.eyebrow,.harvest-hint{display:none}.basket{padding:8px;margin-bottom:6px;min-height:44px}.bottom-bar{bottom:10px}.ammo-dock{padding:8px 13px;gap:11px;width:auto}.shots strong{font-size:25px}.ammo>span:last-child{display:none}.ammo>.eyebrow{font-size:6px}.monster-portrait{width:29px;height:29px}.next .monster-portrait{width:25px;height:25px}.spell{min-height:43px;padding:7px 9px}.aim-help{bottom:100px;font-size:8px}.help-link{bottom:0;font-size:9px}.toast{top:65px}.modal{max-height:calc(100dvh - 24px)}.welcome-art{display:none}.modal.welcome{padding:25px;max-width:430px}.modal.welcome h2{font-size:24px}.modal.welcome p{margin-bottom:15px}.modal-foot{display:none}.touch-aim{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}

.basket:disabled{opacity:.85}

/* The game viewport ends above the desktop dock, so the cannon cannot hide behind it. */
#scene{height:calc(100% - 126px)}
.scene-shade{background:linear-gradient(180deg,rgba(14,8,27,.04),rgba(17,9,27,.08) 65%,rgba(22,14,34,.6))}
.vignette{background:linear-gradient(180deg,rgba(12,7,20,.65),transparent 20%,transparent 74%,rgba(12,7,20,.62)),linear-gradient(90deg,rgba(15,8,24,.4),transparent 24%,transparent 76%,rgba(15,8,24,.4))}
.help-tools{display:flex;flex-direction:column;gap:2px}.help-tools .help-link{position:static;font-size:10px;padding:6px 0}.help-link[aria-pressed="true"]{color:var(--gold)}
.support-note{position:absolute;left:40px;top:387px;max-width:180px;font-size:11px;line-height:1.7;color:#e1ccd9;text-shadow:0 1px 5px #160b22;background:rgba(29,17,37,.75);padding:13px;border:1px solid #e7ae6033;border-radius:8px;pointer-events:none}.support-note strong{display:block;font-size:8px;letter-spacing:1.2px;color:var(--gold);margin-bottom:7px}.support-note span{display:block;font-size:9px;color:var(--muted);margin-top:9px}
.celebration{position:absolute;top:105px;left:50%;transform:translateX(-50%);text-align:center;z-index:15;pointer-events:none;text-shadow:0 3px 20px #190819}.celebration[hidden],.support-note[hidden]{display:none}.celebration .eyebrow{color:var(--gold);font-size:9px}.celebration strong{display:block;font:600 38px/1.4 var(--display);color:#ffe1a5}.celebration>span:last-of-type{font-size:12px;color:var(--cream)}.celebration button{display:block;border:1px solid #e7ae6055;background:#281933bb;color:var(--cream);padding:8px 15px;border-radius:20px;font-size:10px;margin:12px auto 0;pointer-events:auto}.is-celebrating .aim-help,.is-celebrating .support-note{visibility:hidden}.is-celebrating .ammo-dock{opacity:.48}
.modal.lesson{width:min(560px,100%)}.lesson h2{font-size:27px}.lesson-visual{height:176px;position:relative;background:#130e1d88;border:1px solid #e7ae6022;border-radius:10px;margin:20px 0;display:flex;align-items:center;flex-direction:column;justify-content:center;gap:10px;overflow:hidden}.lesson-visual small{font-size:8px;letter-spacing:1.4px;color:var(--gold)}.lesson-faces{display:flex;gap:8px;justify-content:center;position:relative}.lesson-face{width:33px;height:33px;background-size:cover;border-radius:50%;box-shadow:inset -3px -5px 8px #0005,inset 2px 3px 5px #fff4}.lesson-line{height:17px;width:2px;background:var(--gold);margin-top:-7px;margin-bottom:-7px}.lesson-link{box-shadow:0 0 0 2px var(--gold),0 0 17px #e7ae6044;transition:opacity .35s}.lesson-loose{transition:transform .6s,opacity .6s}.is-broken .lesson-link{opacity:0}.is-broken .lesson-line{opacity:.2}.is-broken .lesson-loose{transform:translateY(13px);opacity:.45}.lesson-copy{min-height:65px}.lesson-copy p{margin:12px 0;font-size:12px}.lesson-copy strong{color:var(--cream)}.lesson-cost{display:flex;justify-content:center;gap:14px;font-size:10px;color:var(--gold);margin-top:15px}.witch-diagram{gap:14px}.witch-diagram .lesson-faces{gap:13px}.witch-diagram .chosen{outline:2px solid var(--violet);outline-offset:3px}.witch-diagram .lesson-face{width:43px;height:43px;transition:transform .4s}.witch-diagram .swap-arrow{position:absolute;left:calc(50% - 11px);top:46px;font-size:22px;color:var(--gold)}.lesson-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:13px}.lesson-actions button{margin:0;font-size:11px;padding:12px 8px}.lesson-dismiss{margin-top:17px;border:0;background:none;color:var(--muted);font-size:11px;padding:8px}
@media(max-width:1100px){.help-tools{position:absolute;bottom:0;left:0}.support-note{left:24px;top:355px;max-width:155px;font-size:10px}}
@media(max-width:700px){#scene{height:100%}.help-tools{flex-direction:row;bottom:96px;gap:4px}.help-tools .help-link{font-size:0;min-width:40px;min-height:40px;justify-content:center}.help-tools .help-link>span{font-size:13px}.support-note{left:18px;right:18px;top:191px;max-width:none;text-align:center;font-size:9px;padding:8px}.support-note strong{font-size:7px;margin-bottom:2px}.support-note span{font-size:8px;margin-top:2px}.celebration{top:195px;width:94%}.celebration strong{font-size:27px}.celebration .eyebrow{font-size:7px}.celebration>span:last-of-type{font-size:10px}.celebration button{padding:8px 14px}.lesson-visual{height:159px}.lesson h2{font-size:23px}.lesson-copy{min-height:72px}.aim-help{max-width:77%;bottom:119px;line-height:1.7}}
@media(max-height:550px) and (orientation:landscape){#scene{height:calc(100% - 87px)}.help-tools{bottom:0;left:0;gap:0;flex-direction:column}.help-tools .help-link{min-height:25px;font-size:8px;justify-content:start;padding:3px}.support-note{left:20px;top:165px;max-width:150px;right:auto}.celebration{top:66px}.celebration strong{font-size:25px}.celebration>span:last-of-type{display:none}.celebration button{margin-top:5px}.lesson-visual{height:105px}.lesson-line{height:9px}.lesson-face{width:23px;height:23px}.lesson p{margin:8px 0}.lesson h2{font-size:23px}.lesson-copy{min-height:0}}
@media(min-width:701px) and (min-height:551px){.celebration{left:40px;top:176px;transform:none;text-align:left;width:230px}.celebration strong{font-size:29px}.celebration button{margin-left:0}.is-celebrating .level-info{opacity:0}}

/* One hoard, two unlimited cauldrons. */
.hoard-progress{padding:16px 17px 14px;background:linear-gradient(145deg,#30203ada,#191323e8);border:1px solid #e7ae6055;border-radius:10px;margin-bottom:10px;box-shadow:0 8px 24px #0d071a33}.hoard-progress>.eyebrow{font-size:8px;color:var(--gold)}.hoard-progress>div{display:flex;align-items:baseline;gap:10px;margin-top:5px}.hoard-progress strong{font:500 38px/1.2 var(--display);font-variant-numeric:tabular-nums}.hoard-progress>div>span{font-size:7px;letter-spacing:1.1px;color:var(--muted)}.hoard-progress .meter{height:4px;margin-top:9px}#hoard-fill{background:linear-gradient(90deg,var(--teal),var(--gold));width:100%}.cauldron-totals .basket{cursor:default;padding-block:11px}.cauldron-totals .basket:hover{background:rgba(28,19,40,.7)}.cauldron-totals strong{align-self:center}.basket.next-bonus{border-color:#e7ae6077;background:#46333c99}.pour-bonus{display:flex;align-items:center;justify-content:space-between;padding:8px 2px 0;font-size:8px;font-weight:600;letter-spacing:1.2px;color:var(--muted)}.pour-bonus strong{font:500 17px var(--display);color:var(--gold);letter-spacing:0}.pour-bonus.is-active{color:var(--gold)}.harvest-hint{line-height:1.6;margin-top:5px}.celebration button[hidden]{display:none}
@media(max-width:1100px){.hoard-progress{padding:12px}.hoard-progress strong{font-size:32px}.hoard-progress>div{gap:7px}.hoard-progress>div>span{font-size:6px}.hoard-progress>.eyebrow{font-size:7px}}
@media(max-width:700px){.harvest{top:131px;display:grid;grid-template-columns:104px 1fr;grid-template-rows:42px 17px;gap:3px 8px;align-items:stretch}.hoard-progress{grid-row:1 / 3;margin:0;padding:7px 9px;border-radius:7px}.hoard-progress>.eyebrow{font-size:6px;letter-spacing:1px}.hoard-progress>div{margin-top:2px;justify-content:center}.hoard-progress strong{font-size:24px;line-height:1.05}.hoard-progress>div>span{display:none}.hoard-progress .meter{margin-top:4px;height:3px}.cauldron-totals{display:grid;grid-template-columns:1fr 1fr;gap:6px;min-width:0}.cauldron-totals .basket{padding:6px;gap:4px;grid-template-columns:16px 1fr auto;min-height:0}.cauldron-totals .basket-icon{font-size:18px}.cauldron-totals .basket-name{font-size:8px;white-space:normal}.cauldron-totals .basket strong{font-size:9px}.pour-bonus{padding:0 3px;font-size:6px;letter-spacing:1px}.pour-bonus strong{font-size:12px}.harvest .harvest-hint{display:none}}
@media(max-width:365px){.harvest{grid-template-columns:85px 1fr;gap:3px 6px}.cauldron-totals .basket{grid-template-columns:1fr auto;padding:5px}.cauldron-totals .basket-icon{display:none}.cauldron-totals .basket-name{font-size:7px}.hoard-progress{padding-inline:5px}.hoard-progress>.eyebrow{font-size:5px}}
@media(max-height:550px) and (orientation:landscape){.harvest{top:78px;left:auto;right:20px;width:175px;display:block}.hoard-progress{padding:8px 11px;margin-bottom:6px}.hoard-progress strong{font-size:25px}.hoard-progress>div{margin-top:1px}.hoard-progress .meter{margin-top:3px}.cauldron-totals{display:grid;grid-template-columns:1fr 1fr;gap:5px}.cauldron-totals .basket{display:grid;grid-template-columns:1fr auto;padding:7px 6px;min-height:0;margin:0}.cauldron-totals .basket-icon,.cauldron-totals .basket-name small{display:none}.cauldron-totals .basket-name{font-size:8px}.pour-bonus{font-size:6px;padding-top:5px}.pour-bonus strong{font-size:12px}.harvest .harvest-hint{display:none}}

.hoard-progress>small{display:block;margin-top:9px;color:var(--muted);font-size:8px;letter-spacing:1px}
@media(max-width:700px){.harvest{grid-template-rows:46px 23px}.hoard-progress>small{font-size:7px;letter-spacing:.2px;margin-top:5px}.pour-bonus{align-self:start;padding-top:2px}}
@media(max-height:550px) and (orientation:landscape){.hoard-progress>small{font-size:6px;margin-top:5px}}

body[data-chapter="2"]{--gold:#a7dfb4}body[data-chapter="2"] .backdrop{background-image:url('./assets/mummy-garden.jpg')}body[data-chapter="3"]{--gold:#f0adce}body[data-chapter="3"] .backdrop{background-image:url('./assets/witch-sweetshop.jpg')}.level-info h1{max-width:220px}.welcome-extras{display:grid;grid-template-columns:1fr 1fr;gap:8px}.welcome-extras .secondary-button{font-size:10px;padding:11px 7px}.modal.welcome{overflow-y:auto}.courtyard-list{display:grid;gap:10px;margin:22px 0}.courtyard-card{min-height:91px;text-align:left;border:1px solid #a994ad55;border-radius:9px;padding:13px 17px;background:linear-gradient(90deg,#1c1426e8,#1c142644),var(--courtyard-art) center 40% / cover;transition:border-color .2s}.courtyard-card:hover{border-color:var(--gold)}.courtyard-card span{font-size:7px;letter-spacing:1.5px;color:var(--gold);display:block}.courtyard-card strong{display:block;font:500 18px var(--display);margin:5px 0}.courtyard-card small{font-size:10px;color:#e3d5df}.bonus-choice strong,.bonus-choice span,.bonus-choice small{display:block}.bonus-choice strong{font:500 19px var(--display);color:var(--gold);margin:5px 0 8px}.bonus-choice span{font-size:11px}.bonus-choice small{font-size:8px;letter-spacing:1px;color:var(--muted);margin:13px 0 3px}
.is-bonus .topbar,.is-bonus .level-info,.is-bonus .harvest,.is-bonus .bottom-bar,.is-bonus .aim-help,.is-bonus .support-note,.is-bonus .celebration,.is-bonus .touch-aim,.is-bonus .toast,.is-bonus .floating-score,.is-bonus #scene{visibility:hidden}.bonus-layer{position:absolute;inset:0;height:100dvh;z-index:40;display:flex;flex-direction:column;background:radial-gradient(ellipse at center,#271a2a44,#100b19c9);overflow:hidden}.bonus-top{display:flex;justify-content:space-between;align-items:center;padding:20px 35px 0;flex-shrink:0}.bonus-pause{font-size:18px}.bonus-heading{text-align:center;flex-shrink:0;margin-top:-16px;pointer-events:none}.bonus-heading>.eyebrow{color:var(--gold);font-size:8px}.bonus-heading h1{font-size:27px;margin:7px 0 11px}.bonus-stats{display:flex;justify-content:center;gap:38px}.bonus-stats span{min-width:85px}.bonus-stats strong{display:block;font:500 23px var(--display);font-variant-numeric:tabular-nums;color:var(--cream)}.bonus-stats small{display:block;font-size:7px;letter-spacing:1.3px;color:var(--gold);margin-top:3px}.bonus-stage{position:relative;min-height:0;flex:1;margin:8px auto 0;width:min(100%,720px)}.bonus-stage canvas{display:block;width:100%;height:100%;touch-action:none;outline:none}.bonus-card{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(370px,calc(100% - 44px));padding:28px;background:linear-gradient(145deg,#38263deF,#191321f5);border:1px solid #e8b66a77;border-radius:15px;text-align:center;box-shadow:0 18px 70px #080410b3;max-height:calc(100% - 12px);overflow-y:auto}.bonus-card h2{font:500 25px/1.3 var(--display);margin:13px 0}.bonus-card p{font-size:12px;line-height:1.8;color:#d2bfd4}.bonus-card .bonus-reassurance{color:var(--gold);font-size:10px;margin:18px 0}.bonus-card .daily-button{margin-top:12px}.bonus-layer [hidden]{display:none}.bonus-bottom{display:flex;justify-content:center;align-items:center;gap:25px;flex-shrink:0;padding:10px 20px max(15px,env(safe-area-inset-bottom))}.bonus-bottom p{font-size:8px;color:var(--gold);letter-spacing:1.2px}.bonus-bank{width:auto;margin:0;padding:10px 18px;font-size:10px}.bonus-bank:disabled{opacity:.4}
@media(max-width:700px){.level-info h1{max-width:113px}.bonus-top{padding:14px 18px 0}.bonus-top .brand{font-size:14px}.bonus-heading{margin-top:17px}.bonus-heading h1{font-size:22px;margin:5px 0 10px}.bonus-heading>.eyebrow{font-size:6px}.bonus-stats{gap:20px}.bonus-stats span{min-width:70px}.bonus-stats strong{font-size:21px}.bonus-stats small{font-size:6px}.bonus-stage{margin-top:4px}.bonus-card{padding:23px;width:min(340px,calc(100% - 38px))}.bonus-card h2{font-size:22px}.bonus-card p{font-size:11px}.bonus-bottom{gap:12px;padding-top:4px}.bonus-bottom p{font-size:6px;letter-spacing:.7px;max-width:185px;line-height:1.6}.bonus-bank{font-size:9px;padding:10px 12px}}
@media(max-height:550px) and (orientation:landscape){.level-info h1{max-width:135px}.bonus-top{position:absolute;left:0;right:0;top:0;padding:10px 18px;z-index:2;pointer-events:none}.bonus-top>*{pointer-events:auto}.bonus-top .brand{font-size:13px}.bonus-top .brand-sigil{font-size:25px}.bonus-heading{margin-top:9px}.bonus-heading>.eyebrow{font-size:6px}.bonus-heading h1{font-size:18px;margin:3px 0}.bonus-stats{position:absolute;left:24px;top:88px;flex-direction:column;gap:12px;text-align:left}.bonus-stats strong{font-size:20px}.bonus-stats small{font-size:6px}.bonus-stage{margin-top:0}.bonus-bottom{padding:1px 20px 6px}.bonus-bottom p{font-size:6px}.bonus-bank{font-size:8px;padding:7px 14px}.bonus-card{padding:14px 20px;width:min(350px,calc(100% - 42px))}.bonus-card h2{font-size:18px;margin:8px 0}.bonus-card p{font-size:10px;line-height:1.6;margin:8px 0}.bonus-card .bonus-reassurance{margin:8px 0;font-size:9px}.bonus-card .primary-button{padding:11px}.bonus-card .daily-button{margin-top:5px;padding:3px}}

/* Device-local graphics control, shared by courtyard and bonus pause screens. */
.graphics-setting{display:grid;grid-template-columns:1fr minmax(120px,145px);align-items:center;gap:9px 14px;text-align:left;padding:13px 0 18px;border-bottom:1px solid #ffffff12;margin-bottom:2px}.graphics-setting>label{font-size:12px;color:var(--cream)}.graphics-setting>select{width:100%;min-height:44px;padding:9px 12px;border:1px solid #9c7caa80;border-radius:7px;background:#1c1528;color:var(--cream);font:500 14px var(--font);cursor:pointer}.graphics-setting>select:focus-visible{outline:2px solid var(--teal);outline-offset:3px}.graphics-setting>p{grid-column:1/-1;font:12px/1.6 var(--font);color:var(--gold);margin:0}.graphics-setting>small{grid-column:1/-1;color:var(--muted);font:10px/1.6 var(--font)}.welcome-links{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.welcome-links .daily-button{margin:9px 0 0;min-height:40px;padding:8px 10px}.bonus-card .graphics-setting{margin:16px 0 20px}.bonus-card .graphics-setting>p{margin:0;color:var(--gold);font-size:11px}.bonus-card .graphics-setting>small{font-size:9px}@media(max-width:700px){.graphics-setting{grid-template-columns:1fr minmax(114px,136px)}.graphics-setting>select{font-size:16px}.graphics-setting>p{font-size:11px}.welcome-links{gap:2px}.welcome-links .daily-button{font-size:10px}}
