@font-face{font-family:Bungee;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/75791ab424a6b224-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:Bungee;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/736504ce0c225627-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:Bungee;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/63b7f7cf762c1c1b-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:Bungee Fallback;src:local("Arial");ascent-override:73.58%;descent-override:21.64%;line-gap-override:0.00%;size-adjust:138.63%}.__className_5d57fa{font-family:Bungee,Bungee Fallback;font-weight:400;font-style:normal}.__variable_5d57fa{--font-display:"Bungee","Bungee Fallback"}@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:500;font-display:swap;src:url(/_next/static/media/00f4982f357db61e-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:500;font-display:swap;src:url(/_next/static/media/62a3c74fa0e47362-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:500;font-display:swap;src:url(/_next/static/media/8201559e247ad180-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 Fallback;src:local("Arial");ascent-override:90.61%;descent-override:24.01%;line-gap-override:0.00%;size-adjust:110.36%}.__className_83907a{font-family:Be Vietnam Pro,Be Vietnam Pro Fallback;font-style:normal}.__variable_83907a{--font-body:"Be Vietnam Pro","Be Vietnam Pro Fallback"}:root{--paper:oklch(96% 0.021 88);--paper-deep:oklch(92.5% 0.032 84);--card:oklch(98.2% 0.012 92);--ink:oklch(31% 0.045 55);--ink-soft:oklch(45% 0.038 55);--ink-faint:oklch(60% 0.028 60);--line:oklch(84% 0.03 75);--son:oklch(55% 0.185 32);--son-deep:oklch(44% 0.16 32);--son-tint:oklch(93% 0.032 32);--cham:oklch(44% 0.1 262);--cham-deep:oklch(35% 0.088 262);--cham-tint:oklch(93% 0.026 262);--nghe:oklch(82% 0.145 88);--nghe-deep:oklch(58% 0.125 70);--moss:oklch(53% 0.09 145);--sp-2xs:4px;--sp-xs:8px;--sp-sm:12px;--sp-md:16px;--sp-lg:24px;--sp-xl:32px;--sp-2xl:48px;--sp-3xl:64px;--sp-4xl:96px;--radius-sm:8px;--radius-md:14px;--radius-lg:22px;--shadow-soft:0 1px 2px oklch(31% 0.045 55/0.08),0 6px 18px oklch(31% 0.045 55/0.09);--shadow-lift:0 2px 4px oklch(31% 0.045 55/0.1),0 14px 34px oklch(31% 0.045 55/0.14);--ease-out:cubic-bezier(0.16,1,0.3,1);--font-display-stack:var(--font-display),"Bungee",system-ui,sans-serif;--font-body-stack:var(--font-body),"Be Vietnam Pro",system-ui,sans-serif}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;color:var(--ink);background-color:var(--paper);background-image:repeating-linear-gradient(0deg,oklch(50% .05 80/.028) 0 1px,transparent 1px 7px),repeating-linear-gradient(90deg,oklch(50% .05 80/.02) 0 1px,transparent 1px 7px);font-family:var(--font-body-stack);font-size:16px;line-height:1.6;min-height:100dvh}h1,h2,h3{font-family:var(--font-display-stack);font-weight:400;line-height:1.12;margin:0;text-wrap:balance}p{margin:0;max-width:68ch}a{color:var(--son);text-decoration-thickness:1.5px;text-underline-offset:3px}button{font-family:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--nghe-deep);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-xs);border:none;border-radius:var(--radius-md);padding:14px 26px;font-size:17px;font-weight:600;line-height:1.2;text-decoration:none;transition:transform .15s var(--ease-out),box-shadow .15s var(--ease-out),background .15s;touch-action:manipulation;white-space:nowrap}.btn:active{transform:translateY(1px) scale(.99)}.btn-primary{background:var(--son);color:oklch(97% .02 40);box-shadow:0 3px 0 var(--son-deep),var(--shadow-soft)}.btn-primary:hover{background:oklch(58% .19 32);transform:translateY(-1px)}.btn-primary:active{box-shadow:0 1px 0 var(--son-deep)}.btn-secondary{background:var(--card);color:var(--ink);border:1.5px solid var(--line);box-shadow:0 2px 0 var(--line)}.btn-secondary:hover{border-color:var(--ink-faint)}.btn-ghost{background:transparent;color:var(--ink-soft);padding:10px 14px;border-radius:var(--radius-sm)}.btn-ghost:hover{background:oklch(31% .045 55/.06);color:var(--ink)}.btn-lg{padding:18px 34px;font-size:19px;border-radius:var(--radius-lg)}.btn-sm{padding:8px 16px;font-size:14.5px;border-radius:10px}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.input{font-family:inherit;font-size:17px;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius-md);padding:13px 16px;width:100%;transition:border-color .15s}.input::placeholder{color:var(--ink-faint)}.input:focus{outline:none;border-color:var(--nghe-deep);box-shadow:0 0 0 3px oklch(82% .145 88/.35)}.chip{display:inline-flex;align-items:center;gap:6px;background:var(--paper-deep);border-radius:999px;padding:5px 13px;font-weight:600}.chip,.field-label{font-size:13.5px;color:var(--ink-soft)}.field-label{display:block;font-weight:700;letter-spacing:.04em;text-transform:uppercase;margin-bottom:var(--sp-xs)}.site-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-md);padding:var(--sp-md) clamp(16px,4vw,40px);max-width:1120px;margin:0 auto}.logo-link{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}.logo-word{font-family:var(--font-display-stack);font-size:20px;letter-spacing:.02em;white-space:nowrap}.logo-word em{font-style:normal;color:var(--son)}.brand-trail{display:flex;align-items:center;gap:var(--sp-sm);min-width:0}.brand-sep{color:var(--ink-faint);font-size:18px;line-height:1}.brand-game{font-family:var(--font-display-stack);font-size:14px;letter-spacing:.03em;color:var(--son-deep);text-decoration:none;background:var(--son-tint);border:1.5px solid oklch(55% .185 32/.35);border-radius:var(--radius-sm);padding:5px 12px;transform:rotate(-1.5deg);white-space:nowrap}.brand-game:hover{transform:rotate(0deg)}.header-nav{display:flex;align-items:center;gap:var(--sp-xs)}@media (max-width:640px){.has-game .brand-sep,.has-game .logo-word,.hide-sm{display:none}}.home-main{max-width:1120px;margin:0 auto;padding:0 clamp(16px,4vw,40px) var(--sp-4xl)}.hero{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);align-items:center;grid-gap:clamp(24px,5vw,64px);gap:clamp(24px,5vw,64px);padding-top:clamp(16px,4vh,56px)}.hero-kicker{display:inline-flex;align-items:center;gap:8px;background:var(--nghe);color:oklch(34% .07 70);font-size:13.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:6px 14px;border-radius:999px;transform:rotate(-1.2deg);box-shadow:var(--shadow-soft)}.hero-title{font-size:clamp(56px,11vw,118px);color:var(--ink);margin:var(--sp-md) 0 0;line-height:.98}.hero-title .ganh{color:var(--son);display:inline-block}.hero-tagline{font-size:clamp(17px,2.2vw,21px);color:var(--ink-soft);margin-top:var(--sp-md);max-width:44ch}.hero-tagline strong{color:var(--ink)}.hero-panel{margin-top:var(--sp-xl);display:grid;grid-gap:var(--sp-md);gap:var(--sp-md);max-width:460px}.path-chooser{display:grid;grid-gap:2px;gap:2px}.path-lane{display:grid;grid-gap:var(--sp-sm);gap:var(--sp-sm);padding:var(--sp-md) var(--sp-lg)}.path-lane-create{background:var(--son-tint);border-radius:var(--radius-lg) var(--radius-lg) 6px 6px;padding-bottom:var(--sp-xl)}.path-lane-join{background:var(--cham-tint);border-radius:6px 6px var(--radius-lg) var(--radius-lg);padding-top:var(--sp-xl)}.path-question{font-weight:700;font-size:15.5px;margin:0}.path-lane-create .path-question{color:var(--son-deep)}.path-lane-join .path-question{color:var(--cham-deep)}.path-btn{width:100%}.path-divider{display:flex;align-items:center;justify-content:center;height:0;position:relative;z-index:1}.path-divider span{font-family:var(--font-display-stack);font-size:13px;color:var(--ink-faint);background:var(--card);border:1.5px solid var(--line);border-radius:999px;padding:3px 16px;transform:rotate(-2deg)}.join-row{display:flex;gap:var(--sp-xs);width:100%}.join-row .input{text-transform:uppercase;letter-spacing:.14em;font-weight:700;font-size:16px;flex:1 1;min-width:0}.hero-board-wrap{position:relative;transform:rotate(1.6deg)}.hero-board-wrap:after{content:"minh họa";position:absolute;right:8px;bottom:-12px;background:var(--card);border:1.5px solid var(--line);border-radius:999px;padding:4px 12px;font-size:12.5px;font-weight:600;color:var(--ink-faint);transform:rotate(-2deg)}.error-note{color:var(--son-deep);background:var(--son-tint);border-radius:var(--radius-sm);padding:10px 14px;font-size:14.5px;font-weight:500}.hero-cta-row{display:flex;flex-wrap:wrap;gap:var(--sp-sm);margin-top:var(--sp-xl)}.hero-stack{position:relative}.hero-stack-back{position:absolute;inset:-26px -14px auto auto;width:62%;background:var(--paper-deep);border:2px dashed var(--line);border-radius:var(--radius-md);padding:10px 6px 2px;transform:rotate(4.5deg);opacity:.9}.games-section{margin-top:clamp(56px,10vh,110px)}.stamp{display:inline-block;font-family:var(--font-display-stack);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;padding:5px 12px;border:2px solid;border-radius:7px;background:oklch(98.2% .012 92/.85)}.stamp-open{color:var(--moss);position:absolute;right:14px;top:12px;transform:rotate(5deg)}.stamp-soon{color:var(--nghe-deep);position:absolute;right:16px;top:-13px;transform:rotate(4deg);background:var(--paper)}.game-feature{position:relative;display:grid;grid-template-columns:minmax(200px,280px) minmax(0,1fr);background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);overflow:hidden}.game-feature-media{position:relative;display:grid;place-items:center;background:var(--son-tint);background-image:repeating-linear-gradient(-45deg,oklch(55% .185 32/.05) 0 10px,transparent 10px 20px);padding:var(--sp-xl) var(--sp-lg)}.game-feature-body{display:grid;grid-gap:var(--sp-sm);gap:var(--sp-sm);align-content:center;justify-items:start;padding:var(--sp-lg) clamp(20px,3.5vw,40px)}.game-name{font-size:clamp(24px,3.5vw,34px);color:var(--son)}.game-meta{display:flex;flex-wrap:wrap;gap:6px}.game-desc{color:var(--ink-soft);font-size:15.5px;max-width:56ch}.game-actions{display:flex;flex-wrap:wrap;gap:var(--sp-sm);margin-top:var(--sp-xs)}.games-soon{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-gap:var(--sp-lg);gap:var(--sp-lg);margin-top:var(--sp-lg)}.game-soon-card{position:relative;display:grid;grid-gap:var(--sp-xs);gap:var(--sp-xs);align-content:start;justify-items:start;border:2px dashed var(--line);border-radius:var(--radius-lg);padding:var(--sp-lg)}.game-soon-0{transform:rotate(.6deg)}.game-soon-1{transform:rotate(-.5deg)}.game-soon-sketch{width:100%;max-width:240px;justify-self:center;margin-bottom:var(--sp-xs)}.sketch-svg{display:block;width:100%;height:auto}.game-name-soon{font-size:20px;color:var(--ink)}.game-hook{font-size:14.5px;color:var(--ink-soft)}.game-soon-card .game-meta{margin-top:var(--sp-xs)}.suggest-card{border-style:solid;border-color:oklch(82% .145 88/.7);background:oklch(82% .145 88/.14);transform:rotate(.4deg)}.suggest-card .btn{margin-top:var(--sp-sm)}.mission{margin-top:clamp(56px,10vh,110px);background:var(--paper-deep);border-radius:var(--radius-lg);padding:clamp(24px,4vw,48px);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:var(--sp-lg);gap:var(--sp-lg);align-items:center}.mission p{color:var(--ink-soft);margin-top:var(--sp-xs)}.mission strong{color:var(--ink)}.steps-section{margin-top:clamp(56px,10vh,110px)}.section-heading{font-size:clamp(26px,4vw,40px);margin-bottom:var(--sp-xs)}.section-sub{color:var(--ink-soft);margin-bottom:var(--sp-xl)}.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:var(--sp-lg);gap:var(--sp-lg);counter-reset:step}.step{position:relative;padding:var(--sp-lg) var(--sp-lg) var(--sp-lg) 68px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius-lg);counter-increment:step}.step:nth-child(2){transform:rotate(.6deg)}.step:nth-child(3){transform:rotate(-.5deg)}.step:before{content:counter(step);position:absolute;left:18px;top:20px;width:36px;height:36px;display:grid;place-items:center;font-family:var(--font-display-stack);font-size:18px;color:oklch(97% .02 40);background:var(--cham);border-radius:50%}.step:nth-child(2):before{background:var(--nghe-deep)}.step:nth-child(3):before{background:var(--son)}.step h3{font-size:18px;margin-bottom:6px}.step p{font-size:15px;color:var(--ink-soft)}.rules-teaser{margin-top:clamp(56px,10vh,110px);background:var(--paper-deep);border-radius:var(--radius-lg);padding:clamp(24px,4vw,48px);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:var(--sp-lg);gap:var(--sp-lg);align-items:center}.rules-teaser p{color:var(--ink-soft);margin-top:var(--sp-xs)}.site-footer{max-width:1120px;margin:0 auto;padding:var(--sp-xl) clamp(16px,4vw,40px) var(--sp-2xl);color:var(--ink-faint);font-size:14px;display:flex;flex-wrap:wrap;gap:var(--sp-xs) var(--sp-lg);justify-content:space-between}.board-frame{background:var(--card);border-radius:var(--radius-lg);padding:clamp(8px,2vw,16px);box-shadow:var(--shadow-soft);border:1.5px solid var(--line)}.board-svg{display:block;width:100%;height:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.board-svg .grid-line{stroke:oklch(58% .05 60);stroke-width:2.5;stroke-linecap:round;fill:none}.board-svg .grid-dot{fill:oklch(58% .05 60)}.piece{transition:transform .38s var(--ease-out);will-change:transform}.piece-body{transform-box:fill-box;transform-origin:center}.piece-flip .piece-body{animation:cap-flip .55s var(--ease-out) both;animation-delay:var(--flip-delay,.12s)}@keyframes cap-flip{0%{transform:scaleX(1)}45%{transform:scaleX(.06) translateY(-6px)}to{transform:scaleX(1)}}.piece-selected .piece-body{transform:scale(1.14)}.piece.piece-mine-turn{cursor:pointer}.hint-dot{fill:var(--nghe-deep);opacity:.85;animation:hint-pulse 1.3s ease-in-out infinite;pointer-events:none}.hint-ring{fill:none;stroke:var(--nghe-deep);stroke-width:3;stroke-dasharray:5 5;animation:hint-spin 5s linear infinite,hint-pulse 1.3s ease-in-out infinite;transform-box:fill-box;transform-origin:center;pointer-events:none}@keyframes hint-pulse{0%,to{opacity:.9}50%{opacity:.45}}@keyframes hint-spin{to{transform:rotate(1turn)}}.lastmove-mark{fill:oklch(58% .05 60/.22)}.hit-area{fill:transparent;cursor:pointer}.hit-area.hit-disabled{cursor:default}.room-shell{max-width:1060px;margin:0 auto;padding:0 clamp(12px,3vw,32px) var(--sp-2xl)}.room-top{justify-content:space-between;gap:var(--sp-sm);padding:var(--sp-sm) 0 var(--sp-md)}.room-top,.room-top-side{display:flex;align-items:center}.room-top-side{gap:var(--sp-xs)}.room-code-chip{font-weight:700;letter-spacing:.12em;cursor:pointer;border:1.5px solid var(--line);background:var(--card);transition:background .15s}.room-code-chip:hover{background:var(--paper-deep)}.room-grid{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:var(--sp-md);gap:var(--sp-md);justify-items:center}.room-board-col{grid-gap:var(--sp-sm);gap:var(--sp-sm)}.room-board-col,.room-side-col{width:100%;max-width:560px;display:grid}.room-side-col{grid-gap:var(--sp-md);gap:var(--sp-md);align-content:start}@media (min-width:920px){.room-grid{grid-template-columns:minmax(0,560px) minmax(260px,330px);align-items:start;justify-content:center;gap:var(--sp-xl)}.room-side-col{max-width:none}}.plate{display:flex;align-items:center;gap:var(--sp-sm);background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius-md);padding:10px 14px;position:relative;transition:box-shadow .25s,border-color .25s,background .25s}.plate-active{border-color:var(--nghe-deep);box-shadow:0 0 0 3px oklch(82% .145 88/.4),var(--shadow-soft)}.plate-avatar{width:40px;height:40px;flex:none}.plate-name{font-weight:700;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:24ch}.plate-sub{font-size:13px;color:var(--ink-faint);font-weight:500}.plate-caps{margin-left:auto;display:flex;align-items:center;gap:3px;flex:none}.plate-cap-dot{width:11px;height:11px;border-radius:50%;transition:transform .3s var(--ease-out),opacity .3s}.plate-cap-count{font-size:13.5px;font-weight:700;color:var(--ink-soft);margin-left:4px;min-width:2ch}.turn-tag{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--nghe-deep);background:oklch(82% .145 88/.3);border-radius:999px;padding:3px 10px;margin-left:8px}.emote-bubble{position:absolute;top:-18px;right:14px;font-size:26px;background:var(--card);border:1.5px solid var(--line);border-radius:14px 14px 14px 4px;padding:4px 10px;box-shadow:var(--shadow-soft);animation:emote-pop .35s var(--ease-out) both}@keyframes emote-pop{0%{transform:scale(.4) translateY(8px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.status-bar{min-height:46px;display:flex;align-items:center;justify-content:center;gap:var(--sp-xs);text-align:center;font-weight:600;color:var(--ink-soft);font-size:15.5px}.status-forced{color:var(--nghe-deep)}.action-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-sm);flex-wrap:wrap}.emote-row{display:flex;gap:4px}.emote-btn{font-size:20px;background:transparent;border:none;border-radius:10px;padding:6px 8px;transition:transform .15s var(--ease-out),background .15s}.emote-btn:hover{transform:scale(1.25) rotate(-6deg);background:oklch(31% .045 55/.05)}.game-log{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius-md);padding:var(--sp-sm) var(--sp-md);display:grid;grid-gap:6px;gap:6px;font-size:14px;color:var(--ink-soft);max-height:180px;overflow-y:auto}.game-log-entry{display:flex;gap:8px;align-items:baseline}.game-log-entry .who-R{color:var(--son);font-weight:700}.game-log-entry .who-B{color:var(--cham);font-weight:700}.game-log-entry em{font-style:normal;color:var(--nghe-deep);font-weight:700}.invite-card{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius-lg);padding:var(--sp-lg);display:grid;grid-gap:var(--sp-md);gap:var(--sp-md);text-align:center;justify-items:center}.invite-card h2{font-size:22px}.invite-card>p{color:var(--ink-soft);font-size:15px}.invite-code{font-family:var(--font-display-stack);font-size:clamp(30px,7vw,40px);letter-spacing:.18em;color:var(--cham);background:var(--cham-tint);border-radius:var(--radius-md);padding:8px 20px 8px 26px}.invite-link-row{display:flex;gap:var(--sp-xs);width:100%;max-width:420px}.invite-link-row .input{font-size:13.5px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis}.invite-qr{background:white;padding:10px;border-radius:var(--radius-md);border:1.5px solid var(--line);line-height:0}.waiting-dots:after{content:"";animation:dots 1.6s steps(4) infinite}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.end-banner{background:var(--card);border:2px solid var(--nghe-deep);border-radius:var(--radius-lg);box-shadow:var(--shadow-lift);padding:var(--sp-lg) var(--sp-xl);display:grid;grid-gap:var(--sp-sm);gap:var(--sp-sm);justify-items:center;text-align:center;animation:banner-in .5s var(--ease-out) both}.end-banner h2{font-size:clamp(26px,5vw,36px)}.end-banner .end-sub{color:var(--ink-soft)}.end-actions{display:flex;flex-wrap:wrap;justify-content:center}.end-actions,.rematch-inline{gap:var(--sp-sm);margin-top:var(--sp-xs)}.rematch-inline{display:grid;grid-gap:var(--sp-sm);justify-items:center;animation:banner-in .3s var(--ease-out) both}.rematch-inline p{font-weight:700;color:var(--nghe-deep)}.rematch-inline .end-actions{margin-top:0}@keyframes banner-in{0%{transform:translateY(14px) scale(.96);opacity:0}to{transform:none;opacity:1}}.confetti-cap{position:fixed;top:-30px;width:16px;height:16px;border-radius:50%;z-index:60;animation:cap-fall linear both;pointer-events:none}@keyframes cap-fall{to{transform:translateY(110vh) rotateX(9turn) rotate(540deg)}}.offer-toast{position:fixed;left:16px;right:16px;bottom:max(16px,env(safe-area-inset-bottom));margin:0 auto;max-width:440px;background:var(--ink);color:var(--paper);border-radius:var(--radius-md);box-shadow:var(--shadow-lift);padding:var(--sp-sm) var(--sp-md);display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-sm);z-index:50;animation:banner-in .35s var(--ease-out) both}.offer-toast span{flex:1 1 100%;font-weight:600}.offer-toast .btn{flex:1 1}.conn-banner{background:var(--nghe);color:oklch(34% .07 70);border-radius:var(--radius-md);padding:10px 16px;font-weight:600;font-size:14.5px;text-align:center}.conn-banner.conn-bad{background:var(--son-tint);color:var(--son-deep)}.hero-oq{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}.hero-board-wrap-oq{transform:rotate(-1.2deg)}.game-feature+.game-feature{margin-top:var(--sp-lg)}.game-feature-media-oq{background:var(--cham-tint);background-image:repeating-linear-gradient(-45deg,oklch(44% .1 262/.05) 0 10px,transparent 10px 20px)}.game-feature-media-oq .sketch-svg{max-width:220px}.game-name-oq{color:var(--cham)}.oq-svg{background:radial-gradient(120% 90% at 50% 10%,oklch(97% .018 92/.9),transparent 70%),oklch(93.5% .03 86);border-radius:var(--radius-md)}.oq-lines path{fill:none;stroke:oklch(58% .05 60);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.oq-cell-bg{fill:transparent;transition:fill .2s}.oq-cell-ready{fill:oklch(82% .145 88/.22);animation:oq-ready-pulse 1.6s ease-in-out infinite}.oq-cell-selected{fill:oklch(82% .145 88/.5);stroke:var(--nghe-deep);stroke-width:2.5;stroke-dasharray:7 6}@keyframes oq-ready-pulse{0%,to{fill-opacity:1}50%{fill-opacity:.45}}.oq-flash ellipse,.oq-flash rect{fill:var(--nghe);animation:oq-flash-fade .55s var(--ease-out) both;pointer-events:none}@keyframes oq-flash-fade{0%{opacity:.95}to{opacity:0}}.oq-quan-shadow{fill:oklch(36% .055 60)}.oq-quan-body{fill:oklch(48% .075 62)}.oq-stone-glint{fill:oklch(99% .005 90);opacity:.4}.oq-stone{stroke:oklch(30% .04 60/.25);stroke-width:.8}.oq-count-bg{fill:var(--card);stroke:var(--line);stroke-width:1.5}.oq-count-text{font-family:var(--font-body-stack);font-size:13px;font-weight:700;fill:var(--ink-soft);text-anchor:middle;pointer-events:none}.oq-hand-bg{fill:var(--ink)}.oq-hand-text{font-family:var(--font-body-stack);font-size:14px;font-weight:800;fill:var(--paper);text-anchor:middle;pointer-events:none}.oq-hand{animation:oq-fade-in .25s var(--ease-out) both}@keyframes oq-fade-in{0%{opacity:0}to{opacity:1}}.oq-arrow{cursor:pointer}.oq-arrow circle{fill:var(--nghe);stroke:var(--nghe-deep);stroke-width:2;transition:fill .15s}.oq-arrow:hover circle{fill:oklch(86% .15 88)}.oq-arrow path{fill:oklch(34% .07 70);pointer-events:none}.oq-arrows{animation:oq-fade-in .2s var(--ease-out) both}.room-shell-oq{max-width:1200px}.room-board-col-oq{max-width:760px}@media (min-width:1080px){.room-grid-oq{grid-template-columns:minmax(0,760px) minmax(260px,330px)}}@media (min-width:920px) and (max-width:1079.9px){.room-grid-oq{grid-template-columns:minmax(0,760px)}.room-grid-oq .room-side-col{max-width:760px}}.lore{margin-top:clamp(56px,10vh,110px)}.lore-block{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);grid-gap:clamp(24px,4vw,56px);gap:clamp(24px,4vw,56px);align-items:center;padding:clamp(28px,5vh,52px) 0;border-top:2px dashed var(--line)}.lore-block-flip{grid-template-columns:minmax(240px,320px) minmax(0,1fr)}.lore-block-flip .lore-text{order:2}.lore-text h3{font-size:clamp(22px,3.2vw,30px);color:var(--son);margin-bottom:var(--sp-sm)}.lore-text p{color:var(--ink-soft);font-size:16px}.lore-text p+p{margin-top:var(--sp-sm)}.lore-text strong{color:var(--ink)}.verse{margin:0;background:var(--card);border:1.5px solid var(--line);border-left:4px solid var(--nghe-deep);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);padding:var(--sp-lg) var(--sp-lg) var(--sp-md);transform:rotate(-1.2deg);position:relative}.verse:before{content:"“";position:absolute;top:-6px;left:12px;font-family:var(--font-display-stack);font-size:44px;line-height:1;color:var(--nghe-deep);opacity:.55}.verse p{font-size:16.5px;font-style:italic;line-height:1.75;color:var(--ink)}.verse footer{margin-top:var(--sp-sm);font-size:13.5px;font-weight:600;font-style:normal;color:var(--ink-faint)}.verse-chant{background:var(--cham-tint);border-left-color:var(--cham);transform:rotate(1.4deg)}.verse-chant p{font-family:var(--font-display-stack);font-style:normal;font-size:clamp(19px,2.4vw,24px);line-height:1.5;color:var(--cham-deep)}.verse-stack{display:grid;grid-gap:var(--sp-lg);gap:var(--sp-lg)}.verse-stack .verse:nth-child(2){transform:rotate(1.1deg)}.lore-fact{background:var(--paper-deep);border-radius:var(--radius-lg);padding:var(--sp-lg) var(--sp-lg) var(--sp-xl);text-align:center;transform:rotate(1.2deg)}.lore-block-flip .lore-fact{transform:rotate(-1.2deg)}.lore-fact-no{display:block;font-family:var(--font-display-stack);font-size:clamp(56px,8vw,84px);line-height:1.05;color:var(--son)}.lore-fact p{margin:var(--sp-sm) auto 0;font-size:14.5px;color:var(--ink-soft);max-width:30ch}@media (max-width:860px){.hero-board-wrap.hero-board-wrap-oq{max-width:560px}}@media (max-width:720px){.hero-oq,.lore-block,.lore-block-flip{grid-template-columns:1fr}.lore-block-flip .lore-text{order:0}.lore-fact,.verse,.verse-chant,.verse-stack{max-width:420px;margin:0 auto;width:100%}}.rule-section.rule-section-oq,.rule-section.rule-section-oq:nth-child(2n){grid-template-columns:1fr;gap:clamp(20px,3vh,32px);justify-items:stretch}.rule-section.rule-section-oq:nth-child(2n) .rule-text{order:0}.rule-section-oq .rule-demo{max-width:660px;margin:0 auto;width:100%;transform:rotate(-.6deg)}.rule-section-oq:nth-child(2n) .rule-demo{transform:rotate(.6deg)}.rule-section-oq .verse-chant{max-width:480px;margin:0 auto;width:100%}.rules-main{max-width:880px;margin:0 auto;padding:0 clamp(16px,4vw,40px) var(--sp-4xl)}.rules-hero{padding:clamp(8px,3vh,40px) 0 clamp(24px,5vh,56px)}.rules-hero h1{font-size:clamp(38px,7vw,64px)}.rules-hero p{margin-top:var(--sp-md);font-size:17.5px;color:var(--ink-soft)}.rule-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,300px);grid-gap:clamp(20px,4vw,48px);gap:clamp(20px,4vw,48px);align-items:center;padding:clamp(28px,5vh,52px) 0;border-top:2px dashed var(--line)}.rule-section:nth-child(2n){grid-template-columns:minmax(240px,300px) minmax(0,1fr)}.rule-section:nth-child(2n) .rule-text{order:2}.rule-no{font-family:var(--font-display-stack);font-size:15px;color:var(--nghe-deep);letter-spacing:.1em}.rule-text h2{font-size:clamp(24px,3.5vw,32px);margin:6px 0 12px}.rule-text h2 .term-son{color:var(--son)}.rule-text h2 .term-cham{color:var(--cham)}.rule-text p{color:var(--ink-soft);font-size:16px}.rule-text p+p{margin-top:var(--sp-sm)}.rule-text strong{color:var(--ink)}.rule-demo{transform:rotate(-1deg)}.rule-section:nth-child(2n) .rule-demo{transform:rotate(1deg)}.demo-caption{text-align:center;font-size:13.5px;color:var(--ink-faint);font-weight:600;margin-top:var(--sp-xs)}.rules-cta{margin-top:var(--sp-2xl);text-align:center;display:grid;grid-gap:var(--sp-md);gap:var(--sp-md);justify-items:center}@media (max-width:860px){.hero{grid-template-columns:1fr}.hero-board-wrap,.hero-stack{max-width:420px;margin:0 auto;width:100%}.hero-stack-back{inset:-18px -8px auto auto}.game-feature,.mission,.rules-teaser{grid-template-columns:1fr}.game-feature-media{padding:var(--sp-lg)}}@media (max-width:720px){.rule-section,.rule-section:nth-child(2n){grid-template-columns:1fr}.rule-section:nth-child(2n) .rule-text{order:0}.rule-demo,.rule-section:nth-child(2n) .rule-demo{max-width:320px;margin:0 auto;width:100%}}@media (max-width:480px){.btn-lg{width:100%}}