@layer reveal,base,ui;@layer reveal,base,ui;:root{--green:#143229;--green-2:#21503f;--cream:#f3ecdf;--ink:#1d1a24;--gold:#e0a03a;--red:#a83f2a;--ok:#2f7d4f;--paper:#fffdf8;--paper-hover:#fff3d6;--table:#e8dfcb;--table-line:#c9bb98;--table-ink:#8a7c5a;--sp-1:12px;--sp-2:24px;--sp-3:36px;--sp-4:48px;--sp-5:72px;--sp-6:96px;--r-sm:12px;--r-md:18px;--r-lg:28px;--r-pill:999px;--font-body:"Source Sans 3",Arial,sans-serif;--font-title:"Fraunces",Georgia,serif;--font-pop:"Bangers",Impact,sans-serif;--fs-xs:26px;--fs-sm:32px;--fs-md:40px;--fs-lg:46px;--fs-xl:60px;--fs-h2:84px;--fs-h1:150px;--card-ratio:.716;--status-ratio:.716;--att-scale:.7;--shadow-card:0 14px 32px rgba(0,0,0,.35)}@layer base{html,body{background:#0b0b0d}.reveal{font-family:var(--font-body)}.reveal .slides{text-align:left}.reveal .slides section *{margin:0;padding:0;box-sizing:border-box}.reveal .slides>section{width:1920px;height:1080px;top:0;left:0;box-sizing:border-box;overflow:hidden;padding:var(--sp-6) 128px;display:flex;flex-direction:column}.reveal .controls,.reveal .progress{color:var(--gold)}.reveal .slide-number{background:#00000059;font-family:var(--font-body)}h1,h2,h3{font-family:var(--font-title);font-weight:800;line-height:1.05}p,li{font-size:var(--fs-lg);line-height:1.3}ul,ol{list-style:none}b{font-weight:700}button{font:inherit;color:inherit}}@layer ui{.dark{background:radial-gradient(ellipse at 30% 20%,var(--green-2) 0%,var(--green) 55%,#0f261f 100%);color:var(--cream)}.light{background:var(--cream);color:var(--ink)}.gold{background:var(--gold);color:var(--ink)}.center{justify-content:center}.split{flex-direction:row;gap:var(--sp-6);align-items:center;justify-content:center}.split>.copy{flex:1}.reveal .slides section h1{font-size:var(--fs-h1)}.reveal .slides section h2{font-size:var(--fs-h2);margin-bottom:var(--sp-4)}.stack{display:flex;flex-direction:column;gap:var(--sp-2)}.kicker{font-family:var(--font-pop);font-size:44px;letter-spacing:.06em;color:var(--gold);margin-bottom:var(--sp-2)}.light .kicker{color:var(--red)}.gold .kicker{color:var(--ink)}.lead{font:italic 400 42px var(--font-title);opacity:.8;margin-bottom:var(--sp-3)}.quote{font:italic 400 36px var(--font-title);opacity:.75;margin-top:var(--sp-3)}.bullets{display:flex;flex-direction:column;gap:22px}.bullets li:before{content:"✦";color:var(--gold);margin-right:20px}.gold .bullets li:before{color:var(--ink)}.macaron{position:absolute;right:150px;top:130px;display:grid;place-items:center;width:250px;height:250px;padding:34px;border:6px solid var(--ink);border-radius:50%;background:var(--gold);color:var(--ink);font:400 50px/1.05 var(--font-pop);letter-spacing:.04em;text-align:center;transform:rotate(-9deg);box-shadow:0 0 0 8px var(--gold),0 12px 30px #0006}.signoff{margin-top:var(--sp-5);font:800 var(--fs-xl) var(--font-title)}.footer{position:absolute;left:128px;bottom:64px;font-size:28px}.card{position:relative;display:block;height:var(--card-h,var(--ch,360px));width:calc(var(--card-h,var(--ch,360px)) * var(--card-ratio));flex:none}.card img{display:block;width:100%;height:100%;border-radius:calc(var(--card-h,var(--ch,360px)) * .035);box-shadow:var(--shadow-card)}.card.exhausted{width:var(--card-h,var(--ch,360px));height:calc(var(--card-h,var(--ch,360px)) * var(--card-ratio))}.card.exhausted img{position:absolute;top:50%;left:50%;width:calc(var(--card-h,var(--ch,360px)) * var(--card-ratio));height:var(--card-h,var(--ch,360px));transform:translate(-50%,-50%) rotate(90deg)}.card.status{height:auto;width:calc(var(--card-h,var(--ch,360px)) * var(--status-ratio));filter:drop-shadow(0 14px 22px rgba(0,0,0,.35))}.card.status svg{display:block;width:100%;height:auto}.card .badge{position:absolute;right:-18px;top:34%;width:76px;height:76px;border-radius:50%;background:#b3261e;color:#fff;border:5px solid #fff;font:800 42px var(--font-title);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 14px #0006;z-index:3}.btn{font:700 38px var(--font-body);padding:18px var(--sp-3);border:4px solid var(--ink);border-radius:var(--r-pill);background:var(--gold);color:var(--ink);cursor:pointer;transition:transform .12s}.btn:hover{transform:translateY(-3px)}.btn.ghost{background:transparent}.opt{font:700 var(--fs-md) var(--font-body);text-align:left;padding:20px 30px;border:4px solid var(--ink);border-radius:var(--r-md);background:var(--paper);color:var(--ink);cursor:pointer;transition:transform .12s,background .2s;display:flex;gap:22px;align-items:center}.opt kbd{font:700 28px var(--font-body);border:3px solid currentColor;border-radius:10px;padding:2px 16px;opacity:.55}.opt:hover:not(:disabled){transform:translate(8px);background:var(--paper-hover)}.opt:disabled{cursor:default}.opt.right{background:var(--ok);border-color:var(--ok);color:#fff;animation:pop .5s cubic-bezier(.3,1.6,.5,1)}.opt.wrong{background:var(--red);border-color:var(--red);color:#fff;animation:shake .45s}.opt.dim{opacity:.4}.cases{display:grid;gap:var(--sp-4);align-items:stretch}.cases.n2{grid-template-columns:1fr 1fr}.cases.n3{grid-template-columns:1fr 1fr 1fr}.case{padding:var(--sp-4);border:4px solid rgba(243,236,223,.35);border-radius:var(--r-lg);background:#f3ecdf14}.case h3{font-size:56px;margin-bottom:var(--sp-3)}.case.hi{background:var(--gold);color:var(--ink);border-color:var(--gold)}.points{display:flex;flex-direction:column;gap:var(--sp-2)}.points li{font-size:40px;line-height:1.25}.points li:before{content:"✦";margin-right:16px;color:var(--gold)}.case.hi .points li:before{color:var(--ink)}.tiers{display:flex;flex-direction:column;gap:var(--sp-2);max-width:1400px}.tier{display:flex;align-items:center;gap:40px;padding:30px var(--sp-4);border-radius:var(--r-lg);border:4px solid rgba(243,236,223,.35)}.tier .rank{font:800 96px/1 var(--font-title);width:80px;text-align:center;flex:none}.tier b{display:block;font:800 var(--fs-xl)/1.1 var(--font-title)}.tier small{display:block;font:400 38px var(--font-body);margin-top:8px;opacity:.85}.tier.t1{background:var(--gold);color:var(--ink);border-color:var(--gold)}.tier.t2{background:#f3ecdf24}.tier.t3{background:transparent}.tier.t3 .rank,.tier.t3 b{opacity:.8}.order{display:flex;gap:28px;align-items:stretch}.order .step{flex:1;padding:28px var(--sp-2) 28px 32px;border:4px solid var(--cream);border-radius:20px;font:700 44px var(--font-title);display:flex;flex-direction:column;gap:10px;justify-content:flex-start}.order .step .num{display:grid;place-items:center;width:64px;height:64px;margin-bottom:6px;border-radius:50%;border:4px solid var(--gold);color:var(--gold);font:800 38px/1 var(--font-title)}.order .step.mid .num{border-color:var(--ink);color:var(--ink)}.order .step{flex:1 1 0;min-width:0}.order.many{gap:10px}.order.many .step{padding:24px 20px;font-size:36px}.order.many .step small{font-size:26px}.order.many .arrow{flex:none;font-size:40px}.step.zoomchip{display:inline-flex;flex-direction:row;align-items:center;gap:var(--sp-2);align-self:flex-start;flex:none;padding:14px var(--sp-3);margin-bottom:var(--sp-3);border:4px solid var(--cream);border-radius:20px;font:700 44px var(--font-title)}.step.zoomchip .num{margin:0}.step.zoomchip small{font-size:28px;margin-left:var(--sp-1)}.order .step small{font:400 28px var(--font-body);opacity:.8}.order .step.done{background:var(--ok);border-color:#7fd3a0;color:#fff}.order .step.done .num{border-color:#fff;color:#fff}.order .step.mid{background:var(--gold);color:var(--ink);border-color:var(--gold)}.order .arrow{align-self:center;font-size:64px;color:var(--gold)}.puzzle{flex-direction:row;gap:64px;align-items:stretch;padding:84px var(--sp-6) 52px}.stage{flex:1 1 0;min-width:0;display:flex;flex-direction:column;border-radius:var(--r-lg);background:var(--table);border:3px solid #d9cdb0;overflow:hidden}.zone{--ch:320px;flex:1 1 0;display:flex;align-items:center;justify-content:center;gap:56px;padding:44px 40px 18px;position:relative}.zone.alone{--ch:560px}.zone+.zone{border-top:3px dashed var(--table-line)}.zone .zl{position:absolute;left:28px;top:18px;font:400 30px var(--font-pop);letter-spacing:.08em;color:var(--table-ink)}.enemy{display:flex;align-items:flex-end}.enemy{gap:var(--sp-2)}.enemy .att{--card-h:calc(var(--ch) * var(--att-scale));position:relative;margin-bottom:-6px}.zone.alone .enemy .att{margin-bottom:-30px}.zone.players{gap:var(--sp-5);--ch:265px;padding-top:50px;align-items:flex-start}.players .card{transform:none!important}.pgroup{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px}.pgroup .pl{font:400 30px var(--font-pop);letter-spacing:.08em;color:var(--table-ink)}.pcards{display:flex;align-items:flex-end;gap:var(--sp-1)}.hand .card{transform-origin:50% 100%}.hand:not(.solo) .card:nth-child(odd){transform:rotate(-2deg)}.hand:not(.solo) .card:nth-child(2n){transform:rotate(2deg)}.side{flex:0 0 540px;display:flex;flex-direction:column;justify-content:center;gap:24px;position:relative}.kick{font:400 44px var(--font-pop);letter-spacing:.06em;color:var(--red)}.q{font:700 50px/1.15 var(--font-title)}.q.long{font-size:42px}.opts{display:flex;flex-direction:column;gap:16px}.seq{display:flex;gap:8px;padding:14px var(--sp-2) 22px;border-bottom:3px solid var(--table-line);background:#00000009}.seq li{position:relative;flex:1 1 0;min-width:0;display:flex;align-items:center;gap:8px;padding:5px 12px 5px 8px;border:3px solid var(--table-line);border-radius:26px;font:600 22px/1.05 var(--font-body);color:var(--table-ink)}.seq li:before{content:none}.seq .n{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:50%;border:3px solid currentColor;font:800 17px/1 var(--font-title)}.seq .done{background:#0000000d}.seq .cur{background:var(--gold);border-color:var(--ink);color:var(--ink);font-weight:800}.seq .cur:after{content:"";position:absolute;left:50%;bottom:-17px;transform:translate(-50%);border:9px solid transparent;border-bottom:11px solid var(--ink);border-top:0}.scenario{padding:18px var(--sp-4);font-size:30px;line-height:1.3;background:#0000000f;border-bottom:3px solid var(--table-line)}.opts.row{flex-direction:row;flex-wrap:wrap}.opts.four{gap:10px}.opts.four .opt{padding:8px 22px;font-size:30px}.opts.grid .opt{padding:12px 22px;font-size:32px}.opts.row .opt{flex:1 1 0;justify-content:center;padding:20px 22px}.why{opacity:0;transform:translateY(24px);transition:all .6s cubic-bezier(.2,.8,.2,1);border-left:8px solid var(--gold);padding:4px 0 4px var(--sp-3)}.why p{font-size:30px;line-height:1.3;margin-bottom:10px}.why p:last-child{margin-bottom:0}.why .verdict{font:400 54px var(--font-pop);letter-spacing:.04em;margin-bottom:4px}.answered .why{opacity:1;transform:none}.answered.good .verdict{color:var(--ok)}.answered.bad .verdict{color:var(--red)}.next-wrap{display:none}.answered .next-wrap{display:flex;align-items:center;gap:var(--sp-2);margin-top:6px}.next-wrap .btn{margin-top:0}.next-wrap .hint{font-size:var(--fs-xs);opacity:.55;margin-top:0}.score-left{flex:0 0 700px;display:flex;flex-direction:column}.bigscore{font:800 220px/1 var(--font-title);margin-top:8px}.bigscore small{font-size:90px;opacity:.5}.scoreline{font-size:44px;line-height:1.3;margin-top:var(--sp-2);max-width:640px}.scoreline b{color:var(--red)}.scorebtns{display:flex;gap:22px;flex-wrap:wrap;margin-top:var(--sp-4)}.rows{flex:1;display:flex;flex-direction:column;gap:14px}.rows li{display:flex;align-items:center;gap:26px;padding:16px 30px;border-radius:var(--r-md);background:var(--paper);border:4px solid #e6e1d4;font:600 var(--fs-md) var(--font-body);cursor:pointer}.rows li:hover{background:var(--paper-hover)}.rows .n{font:800 44px var(--font-title);width:50px;opacity:.5}.rows .t{flex:1}.rows .m{font:800 46px var(--font-title);width:60px;text-align:center}.rows .retried{font:400 var(--fs-xs) var(--font-body);opacity:.6}.rows.two{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:column;grid-template-rows:repeat(var(--r),auto);gap:10px 16px;align-content:start}.rows.two li{padding:10px 18px;gap:14px;font-size:30px}.rows.two .n{width:34px;font-size:32px}.rows.two .m{width:40px;font-size:34px}.rows.two .retried{display:none}.rows li.good .m{color:var(--ok)}.rows li.bad{border-color:var(--red)}.rows li.bad .m{color:var(--red)}.rows li.skip .m{opacity:.4}.dots{position:absolute;top:22px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:4px;z-index:5}.dot{display:grid;place-items:center;width:40px;height:40px;padding:0;border:0;background:none;color:inherit;cursor:pointer}.dot:before{content:"";display:block;box-sizing:border-box;border:3px solid currentColor;opacity:.4;transition:all .2s}.dot.lesson:before{width:14px;height:14px;transform:rotate(45deg)}.dot.exercise:before{width:22px;height:22px;border-radius:50%}.dot.score:before{width:26px;height:26px;border:0;background:currentColor;clip-path:polygon(50% 0,62% 36%,100% 38%,70% 60%,80% 100%,50% 76%,20% 100%,30% 60%,0 38%,38% 36%)}.dot:hover:before{opacity:.85}.dot.seen:before{opacity:.8;background:currentColor}.dot.cur:before{opacity:1;background:var(--gold);border-color:var(--gold)}.dot.exercise.good:before{opacity:1;background:var(--ok);border-color:var(--ok)}.dot.exercise.bad:before{opacity:1;background:var(--red);border-color:var(--red)}.dot.exercise.cur:before{box-shadow:0 0 0 4px #e0a03a59}.where{font-size:30px;opacity:.7;margin-top:-18px}.sessions{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);margin-top:var(--sp-4);font-size:var(--fs-sm)}.sessions a{color:inherit;font-weight:600;text-underline-offset:6px}.card .tag{position:absolute;left:50%;top:-8px;transform:translate(-50%,-100%);z-index:3;padding:2px 18px 0;border:3px solid var(--ink);border-radius:var(--r-pill);background:var(--gold);color:var(--ink);font:400 30px/1.25 var(--font-pop);letter-spacing:.08em;white-space:nowrap;box-shadow:0 4px 10px #00000040}.card-lesson{--ch:600px}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.07)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:none}20%{transform:translate(-14px)}40%{transform:translate(12px)}60%{transform:translate(-8px)}80%{transform:translate(5px)}}@keyframes rise{0%{opacity:0;transform:translateY(40px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}@keyframes spark{0%{opacity:0;transform:translate(0) scale(.4)}12%{opacity:1}to{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--r)) scale(1)}}.reveal section.present .rise{animation:rise .9s cubic-bezier(.2,.8,.2,1) var(--d,0s) both}.spark{position:absolute;pointer-events:none;color:var(--gold);animation:spark 1.3s ease-out forwards}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}}
