:root{--canvas:#ffffff;--surface:#ffffff;--sunken:#f7f8fa;--ink:#2b2d36;--muted:#7c8091;--faint:#b3b7c4;--line:#e4e6ec;--line-strong:#d0d3dd;--brand:#2fbf6a;--brand-press:#26a259;--brand-soft:#e7f8ee;--brand-ink:#17703d;--pick:#2a9fe0;--pick-soft:#e6f4fd;--pick-ink:#17618d;--bad:#eb5757;--bad-press:#c94443;--bad-soft:#fdecec;--bad-ink:#9c2b2b;--warm:#f2a02c;--warm-soft:#fef3e3;--warm-ink:#8f5806;--fresh:#8b5cf6;--fresh-soft:#f2ecfe;--radius:16px;--radius-sm:12px;--lift:4px}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}html{font-family:var(--font-nunito),"Nunito","Segoe UI",system-ui,sans-serif;color:var(--ink);background:var(--canvas);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,select{font:inherit;color:inherit}h1,h2,h3{margin:0;letter-spacing:-.01em}.tactile{border-bottom-width:2px;border:2px solid var(--line);border-bottom:var(--lift) solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:transform .06s ease,background-color .12s ease,border-color .12s ease}.tactile.pressed,.tactile:not(:disabled):active{transform:translateY(2px);border-bottom-width:2px;margin-bottom:2px}.tactile:disabled{cursor:default}@media (hover:hover){.tactile:not(:disabled):not(.locked):hover{background:var(--sunken)}}.app{width:min(1080px,calc(100% - 32px));margin:0 auto;padding:28px 0 72px}.brandbar{justify-content:space-between;gap:16px;padding-bottom:24px}.brandbar,.wordmark{display:flex;align-items:center}.wordmark{gap:10px;font-size:26px;font-weight:900;color:var(--brand);letter-spacing:-.02em}.wordmark .spark{width:30px;height:30px;border-radius:10px;background:var(--brand);display:grid;place-items:center;color:#fff;font-size:17px}.langtoggle{display:flex;gap:6px}.langtoggle button{border:2px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 14px;font-weight:800;font-size:13px;color:var(--muted);cursor:pointer}.langtoggle button[aria-pressed=true]{border-color:var(--brand);color:var(--brand-ink);background:var(--brand-soft)}.grid{display:grid;grid-template-columns:repeat(12,1fr);grid-gap:16px;gap:16px}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.panel{border:2px solid var(--line);border-radius:20px;background:var(--surface);padding:22px}.panel h2{font-size:17px;font-weight:800;margin-bottom:16px}.lead{color:var(--muted);font-weight:600;margin:0 0 4px}.stack{flex-direction:column}.row,.stack{display:flex;gap:12px}.row{flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px}.stat{border:2px solid var(--line);border-radius:var(--radius);padding:14px;text-align:center}.stat strong{display:block;font-size:24px;font-weight:900}.stat span{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.04em}.btn,.stat span{text-transform:uppercase}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 22px;font-weight:800;font-size:15px;letter-spacing:.03em;border-radius:var(--radius);border:none;border-bottom:var(--lift) solid transparent;cursor:pointer;transition:transform .06s ease,filter .12s ease}.btn:not(:disabled):active{transform:translateY(2px);border-bottom-width:2px;margin-bottom:2px}.btn.primary{background:var(--brand);border-bottom-color:var(--brand-press);color:#fff}.btn.danger{background:var(--bad);border-bottom-color:var(--bad-press);color:#fff}.btn.quiet{background:var(--surface);border-bottom-width:2px;border:2px solid var(--line);border-bottom:var(--lift) solid var(--line);color:var(--muted)}.btn:disabled{background:var(--line);border-bottom-color:var(--line);color:var(--faint);cursor:default}.btn.block{width:100%}.field{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:13px;color:var(--muted)}.field input,.field select{border:2px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;font-weight:600;color:var(--ink);background:var(--surface)}.field input:focus,.field select:focus{outline:none;border-color:var(--pick)}.tag{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.tag.fresh{background:var(--fresh-soft);color:var(--fresh)}.tag.warm{background:var(--warm-soft);color:var(--warm-ink)}.tag.plain{background:var(--sunken);color:var(--muted)}.heat{display:grid;grid-template-columns:repeat(10,1fr);grid-gap:8px;gap:8px}.heat .cell{aspect-ratio:1;border-radius:10px;background:var(--sunken)}.heat .cell.hot{background:#2fbf6a}.heat .cell.warm{background:#9fdcb6}.heat .cell.cooling{background:#f6c98b}.heat .cell.cold{background:#f09a9a}.list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;border:2px solid var(--line);border-radius:var(--radius-sm);font-weight:700}.list li span.score{font-size:13px;color:var(--muted)}.session{position:fixed;inset:0;background:var(--canvas);display:flex;flex-direction:column;z-index:20}.session-chrome{flex:none;padding:18px 16px 8px}.session-chrome .inner{width:min(600px,100%);margin:0 auto;display:flex;align-items:center;gap:14px}.iconbtn{flex:none;width:34px;height:34px;display:grid;place-items:center;border:none;background:none;color:var(--faint);font-size:26px;line-height:1;cursor:pointer;border-radius:10px}.iconbtn:hover{color:var(--muted);background:var(--sunken)}.progress{flex:1 1;height:16px;border-radius:999px;background:var(--line);overflow:hidden}.progress .fill{height:100%;border-radius:999px;background:var(--brand);transition:width .35s cubic-bezier(.22,1,.36,1);position:relative}.progress .fill:after{content:"";position:absolute;left:8px;right:8px;top:3px;height:4px;border-radius:999px;background:rgba(255,255,255,.35)}.hearts{flex:none;display:flex;align-items:center;gap:5px;font-weight:900;color:var(--bad);font-size:15px}.hearts .pip{width:13px;height:13px;border-radius:50%;background:var(--bad);transition:background-color .25s ease,transform .25s ease}.hearts .pip.spent{background:var(--line);transform:scale(.8)}.session-body{flex:1 1;overflow-y:auto;padding:12px 16px 24px}.session-body .inner{width:min(600px,100%);margin:0 auto;display:flex;flex-direction:column;gap:22px}.session-title{font-size:26px;font-weight:900;line-height:1.2}.session-title em{font-style:normal;color:var(--brand)}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.cards .card{min-height:132px;padding:16px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:10px;text-align:center;font-weight:800;font-size:18px;color:var(--ink)}.cards .card .plate{width:54px;height:54px;border-radius:14px;display:grid;place-items:center;background:var(--sunken);color:var(--faint);font-size:22px;font-weight:900;margin-bottom:auto}.cards .card.chosen{border-color:var(--pick);background:var(--pick-soft);color:var(--pick-ink)}.cards .card.chosen .plate{background:#d3ebfa;color:var(--pick)}.cards .card.right{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink)}.cards .card.wrong{border-color:var(--bad);background:var(--bad-soft);color:var(--bad-ink)}.options{display:flex;flex-direction:column;gap:10px}.options .option{display:flex;align-items:center;gap:12px;padding:15px 16px;font-weight:700;font-size:16px;text-align:left;color:var(--ink)}.options .option .key{flex:none;width:24px;height:24px;border-radius:7px;border:2px solid var(--line);display:grid;place-items:center;font-size:11px;font-weight:900;color:var(--faint)}.options .option.chosen{border-color:var(--pick);background:var(--pick-soft);color:var(--pick-ink)}.options .option.chosen .key{border-color:var(--pick);color:var(--pick)}.options .option.right{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink)}.options .option.wrong{border-color:var(--bad);background:var(--bad-soft);color:var(--bad-ink)}.source{display:flex;align-items:flex-start;gap:12px}.source .avatar{flex:none;width:46px;height:46px;border-radius:14px;background:var(--brand-soft);display:grid;place-items:center;font-size:22px}.bubble{position:relative;border:2px solid var(--line);border-radius:var(--radius);padding:14px 16px;font-size:18px;font-weight:700;line-height:1.4}.bubble:after,.bubble:before{content:"";position:absolute;top:16px;border-style:solid}.bubble:before{left:-10px;border-width:8px 10px 8px 0;border-color:transparent var(--line) transparent transparent}.bubble:after{left:-7px;border-width:8px 10px 8px 0;border-color:transparent var(--surface) transparent transparent}.answer-area{display:flex;flex-direction:column;gap:0;margin-bottom:8px}.answer-row{align-content:flex-start;gap:8px;padding:6px 0;border-bottom:2px solid var(--line)}.answer-row,.tilebank{min-height:52px;display:flex;flex-wrap:wrap}.tilebank{gap:10px}.tile{padding:9px 14px;font-weight:700;font-size:16px;color:var(--ink);border-radius:var(--radius-sm);animation:tile-in .18s cubic-bezier(.2,1.3,.4,1)}.tile.ghost{color:transparent;background:var(--sunken);border-color:var(--sunken);pointer-events:none;animation:none}@keyframes tile-in{0%{transform:scale(.86);opacity:.4}to{transform:scale(1);opacity:1}}.pairs{display:flex;gap:16px}.pairs .col{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:12px}.pairs .pair{padding:16px 12px;font-weight:700;font-size:16px;text-align:center;color:var(--ink);min-height:56px}.pairs .pair.chosen{border-color:var(--pick);background:var(--pick-soft);color:var(--pick-ink)}.pairs .pair.matched{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-ink);animation:pair-pop .32s cubic-bezier(.2,1.4,.4,1)}.pairs .pair.locked{opacity:.32;border-color:var(--line);background:var(--surface);color:var(--muted);cursor:default}.pairs .pair.missed{border-color:var(--bad);background:var(--bad-soft);color:var(--bad-ink);animation:shake .36s ease}@keyframes pair-pop{0%{transform:scale(1)}45%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:translateX(0)}20%{transform:translateX(-6px)}45%{transform:translateX(5px)}70%{transform:translateX(-3px)}}.session-foot{flex:none;border-top:2px solid var(--line);background:var(--surface);padding:16px;transition:background-color .2s ease,border-color .2s ease}.session-foot .inner{width:min(600px,100%);margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px}.session-foot.good{background:var(--brand-soft);border-color:transparent}.session-foot.bad{background:var(--bad-soft);border-color:transparent}.verdict{animation:rise .26s cubic-bezier(.22,1,.36,1);min-width:0}.verdict h3{font-size:21px;font-weight:900;display:flex;align-items:center;gap:8px}.verdict p{margin:4px 0 0;font-size:14px;font-weight:700;line-height:1.4}.session-foot.good .verdict{color:var(--brand-ink)}.session-foot.bad .verdict{color:var(--bad-ink)}@keyframes rise{0%{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}.session-foot .btn{flex:none;min-width:190px}.complete{display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center;padding-top:24px}.complete .trophy{width:96px;height:96px;border-radius:30px;background:var(--warm-soft);display:grid;place-items:center;font-size:46px}.complete h2{font-size:28px;font-weight:900}.scoreboard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px;width:100%}.scoreboard .box{border:2px solid var(--line);border-radius:var(--radius);overflow:hidden}.scoreboard .box .cap{padding:6px;font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:#fff;background:var(--brand)}.scoreboard .box.xp .cap{background:var(--warm)}.scoreboard .box.streak .cap{background:var(--pick)}.scoreboard .box strong{display:block;padding:14px 6px;font-size:22px;font-weight:900}.notice{border:2px solid var(--bad);background:var(--bad-soft);color:var(--bad-ink);border-radius:var(--radius-sm);padding:12px 14px;font-weight:700;font-size:14px}@media (max-width:900px){.span-12,.span-4,.span-5,.span-6,.span-7,.span-8{grid-column:span 12}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.session-foot .inner{flex-direction:column;align-items:stretch}.session-foot .btn{width:100%}.session-title{font-size:22px}.pairs{gap:10px}}@font-face{font-family:Nunito;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/abfec168c8990f67-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Nunito;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/3131c862d4942660-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Nunito;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/6a9c36ea9dc9b36b-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Nunito;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/e1694c6cb47c173f-s.p.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Nunito;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/ee40bb094c99a29a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/abfec168c8990f67-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/3131c862d4942660-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/6a9c36ea9dc9b36b-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/e1694c6cb47c173f-s.p.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/ee40bb094c99a29a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Nunito;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/abfec168c8990f67-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Nunito;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/3131c862d4942660-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Nunito;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/6a9c36ea9dc9b36b-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Nunito;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/e1694c6cb47c173f-s.p.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Nunito;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/ee40bb094c99a29a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Nunito;font-style:normal;font-weight:900;font-display:swap;src:url(/_next/static/media/abfec168c8990f67-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Nunito;font-style:normal;font-weight:900;font-display:swap;src:url(/_next/static/media/3131c862d4942660-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Nunito;font-style:normal;font-weight:900;font-display:swap;src:url(/_next/static/media/6a9c36ea9dc9b36b-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Nunito;font-style:normal;font-weight:900;font-display:swap;src:url(/_next/static/media/e1694c6cb47c173f-s.p.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Nunito;font-style:normal;font-weight:900;font-display:swap;src:url(/_next/static/media/ee40bb094c99a29a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Nunito Fallback;src:local("Arial");ascent-override:99.71%;descent-override:34.82%;line-gap-override:0.00%;size-adjust:101.39%}.__className_633f14{font-family:Nunito,Nunito Fallback;font-style:normal}.__variable_633f14{--font-nunito:"Nunito","Nunito Fallback"}