@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/cd79e1ff94fa521b-s.p.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:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/89362aa296165c6d-s.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:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e11f95d95ac59fa4-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:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/2173e4bb28c315da-s.p.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:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/c6f81e539d11fc99-s.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:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/25ab8995c98996d7-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:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/9ddf1512dbee9c99-s.p.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:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/8247d8d2a376ae43-s.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:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/e270c9fc4fe96f5a-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:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/6bb6a9cb68044e10-s.p.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:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/9a3689a7cda641d2-s.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:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/bed26dc8a57eea87-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:Be Vietnam Pro Fallback;src:local("Arial");ascent-override:90.61%;descent-override:24.01%;line-gap-override:0.00%;size-adjust:110.36%}.__className_c2328f{font-family:Be Vietnam Pro,Be Vietnam Pro Fallback;font-style:normal}:root{--navy:#12324d;--text:#243b53;--muted:#627d98;--bg:#fffaf3;--bg-2:#fff4e0;--sun:#ff9f1c;--sun-2:#ee6c4d;--card:#ffffff;--line:#eadfcf;--ink:#0b0907;--gold:#e0b45a;--game-bg:#1c1612;--tile-text:#f8f1e4}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{font-family:Be Vietnam Pro,system-ui,sans-serif;background:var(--bg);color:var(--text)}a{color:inherit}.wrap{width:min(960px,calc(100% - 40px));margin:0 auto}.nav{justify-content:space-between;padding:16px 0;border-bottom:1px solid var(--line)}.logo,.nav{display:flex;align-items:center}.logo{gap:10px;font-weight:800;font-size:22px;letter-spacing:-.04em;text-decoration:none;color:var(--navy)}.logo-mark{width:32px;height:32px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe08a,var(--sun) 55%,var(--sun-2))}.hero{padding:64px 0 48px}.hero h1{font-size:clamp(32px,5vw,52px);line-height:1.15;color:var(--navy);letter-spacing:-.04em;margin:0 0 16px}.hero p{font-size:18px;color:var(--muted);max-width:46rem}.row{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;border-radius:999px;font-weight:700;text-decoration:none;border:1px solid var(--line);background:var(--card)}.btn.sun{background:var(--sun);border-color:transparent;color:var(--ink)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px;padding:8px 0 64px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px}.card h3{margin:0 0 8px;color:var(--navy)}.card p{margin:0}.card p,.muted{color:var(--muted);font-size:14px}.play-shell{min-height:100dvh;background:var(--game-bg);color:var(--tile-text);display:grid;place-items:center;padding:24px;text-align:center}.play-shell h1{color:var(--gold)}button.btn{font:inherit;cursor:pointer}.btn.block{width:100%}.field{display:flex;flex-direction:column;gap:6px;margin:12px 0;font-size:14px;font-weight:600;color:var(--navy)}.field input,.field select,.field textarea{font:inherit;font-weight:400;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:#fff}.field textarea{min-height:160px;resize:vertical}.piano,.piano-wrap{position:relative;width:min(420px,100%);margin:0 auto;background:#0b1220;border-radius:16px;overflow:hidden}.piano canvas,.piano-wrap canvas{display:block;width:100%;height:auto}.piano-banner{padding:10px 12px 6px;background:rgba(8,16,32,.92);color:#fff;font-size:14px;line-height:1.4;text-align:left}.piano-banner .muted{color:#c9d4e8}.piano-sent em{color:#e0b45a;font-style:normal;font-weight:800}.piano-over,.piano-overlay{position:absolute;inset:0;display:grid;place-items:center;align-content:center;grid-gap:12px;gap:12px;background:rgba(8,16,32,.78);color:#fff;text-align:center;padding:24px}.token-list,.token-row{display:flex;flex-wrap:wrap;gap:8px}.token{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px;min-width:108px;max-width:220px}.token.gold{border-color:#d4a017;background:#fff8e5}.token.hidden,.token.hide{opacity:.45}.token strong{display:block;color:var(--navy)}.token small{display:block;color:var(--muted);font-size:12px}.token input{font:inherit;width:100%;margin-top:6px;padding:4px 6px;border:1px solid var(--line);border-radius:6px}.error{color:var(--sun-2)}.error,.ok{font-weight:600}.ok{color:#2f6f4e}.qr{width:min(280px,100%);height:auto;display:block;margin:8px 0 16px;background:#fff}