@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/assets/bricolage-grotesque-vietnamese-standard-normal-Br4FGdAc.woff2) format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/assets/bricolage-grotesque-latin-ext-standard-normal-qp-RdZgh.woff2) format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/assets/bricolage-grotesque-latin-standard-normal-C5Lc8Qmc.woff2) format("woff2-variations");unicode-range:U+0000-00FF,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:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2) format("woff2-variations");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:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2) format("woff2-variations");unicode-range:U+0000-00FF,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}:root{--deck: #2130c9;--deck-deep: #16208f;--deck-night: #0c1150;--deck-line: #3d4ce0;--deck-text: #ffffff;--deck-text-soft: #c9cdf8;--deck-glass: rgba(255, 255, 255, .12);--deck-glass-strong: rgba(255, 255, 255, .2);--face: #f6f6fb;--face-shade: #e4e4f0;--face-out: #dcdce8;--ink: #15133a;--ink-soft: #4b4970;--ink-faint: #6e6c90;--stamp: #e0194f;--stamp-deep: #b0103c;--stamp-ink: #5a0019;--stamp-press: #a30f3a;--gold: #ffd23f;--gold-press: #c79a00;--font-display: "Bricolage Grotesque Variable", "Bricolage Grotesque", system-ui, sans-serif;--font-text: "Figtree Variable", "Figtree", system-ui, sans-serif;--radius-card: 14px;--radius-btn: 16px;--radius-field: 12px;--shadow-card: inset 0 1px 0 rgba(255, 255, 255, .6), 0 10px 22px -10px rgba(0, 0, 0, .75), 0 2px 4px rgba(0, 0, 0, .25);--shadow-lift: 0 18px 30px -12px rgba(0, 0, 0, .8), 0 3px 6px rgba(0, 0, 0, .25);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-back: cubic-bezier(.34, 1.4, .64, 1);--fg: var(--deck-text);--fg-soft: var(--deck-text-soft);--field-bg: rgba(255, 255, 255, .1);--field-line: rgba(255, 255, 255, .45);--field-fg: var(--deck-text);color-scheme:dark}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{background:var(--deck-deep);-webkit-text-size-adjust:100%}body{font-family:var(--font-text);font-size:1rem;line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--deck);color:var(--fg);min-height:100vh;min-height:100dvh}#root{min-height:100vh;min-height:100dvh}::selection{background:var(--gold);color:var(--ink)}:focus-visible{outline:3px solid var(--gold);outline-offset:3px}a{color:inherit;text-underline-offset:4px}button{font:inherit;color:inherit}h1,h2,h3{font-family:var(--font-display);font-weight:800;font-stretch:80%;line-height:1.05;letter-spacing:-.01em;text-wrap:balance}h1{font-size:clamp(1.75rem,7vw,2.4rem);letter-spacing:-.02em}h2{font-size:1.4rem}h3{font-size:1.15rem;font-weight:700}.container{width:100%;max-width:720px;margin:0 auto;padding:0 16px 48px}.sheet{--fg: var(--ink);--fg-soft: var(--ink-soft);--field-bg: #ffffff;--field-line: #b9b8d0;--field-fg: var(--ink);color-scheme:light;position:relative;background:var(--face);color:var(--ink);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:20px 18px}.page-title{margin:8px 0 20px}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:32px 0 12px}.section-head h2,.section-head h3{font-size:1.15rem;font-weight:700;font-stretch:90%}.section-head .aside{font-size:.875rem;font-weight:600;color:var(--fg-soft)}.muted{color:var(--fg-soft)}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.icon{width:1.375rem;height:1.375rem;flex:none;display:block}.btn{min-height:52px;padding:0 20px;border:0;border-radius:var(--radius-btn);font-family:var(--font-text);font-size:1rem;font-weight:700;line-height:1.15;text-align:center;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out),background-color .2s var(--ease-out);-webkit-tap-highlight-color:transparent}.btn:active:not(:disabled){transform:translateY(2px) scale(.99)}.btn:disabled,.btn:disabled:hover{background:transparent;color:var(--deck-text-soft);box-shadow:none;outline:2px dashed rgba(255,255,255,.35);outline-offset:-2px;cursor:not-allowed}.sheet .btn:disabled,.sheet .btn:disabled:hover{background:var(--face-shade);color:var(--ink-faint);box-shadow:none;outline-color:#b9b8d0}.btn-block{width:100%;min-height:58px;font-size:1.05rem}.btn-primary{background:var(--gold);color:var(--ink);box-shadow:0 4px 0 var(--gold-press),0 10px 20px -8px #000000b3}.btn-primary:hover:not(:disabled){background:#ffdb66}.btn-primary:active:not(:disabled){box-shadow:0 2px 0 var(--gold-press),0 6px 12px -8px #000000b3}.btn-danger{background:var(--stamp);color:#fff;box-shadow:0 4px 0 var(--stamp-press),0 10px 20px -8px #000000b3}.btn-danger:hover:not(:disabled){background:#cf1447}.btn-danger:active:not(:disabled){box-shadow:0 2px 0 var(--stamp-press),0 6px 12px -8px #000000b3}.btn-outline,.btn-secondary{background:var(--deck-glass);color:var(--deck-text);box-shadow:inset 0 0 0 1.5px #ffffff47}.btn-outline:hover:not(:disabled),.btn-secondary:hover:not(:disabled){background:var(--deck-glass-strong)}.sheet .btn-outline,.sheet .btn-secondary,.game-card .btn-outline{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}.sheet .btn-outline:hover:not(:disabled),.sheet .btn-secondary:hover:not(:disabled),.game-card .btn-outline:hover:not(:disabled){background:var(--face-shade)}.sheet .btn-secondary{background:var(--deck);color:#fff;box-shadow:0 4px 0 var(--deck-deep),0 10px 20px -8px #00000073}.sheet .btn-secondary:hover:not(:disabled){background:#2a3ad6}.btn-sm{min-height:40px;padding:0 14px;border-radius:12px;font-size:.9rem}.btn-icon{width:44px;min-height:44px;padding:0;border-radius:12px}.btn-link{min-height:44px;padding:0 8px;background:none;border:0;color:var(--fg-soft);font-weight:600;font-size:.95rem;text-decoration:underline;text-underline-offset:4px;cursor:pointer}.btn-link:hover:not(:disabled){color:var(--fg)}.btn-row{display:flex;flex-wrap:wrap;gap:10px}.btn-stack{display:grid;gap:12px}.input{width:100%;min-height:52px;padding:12px 14px;border:2px solid var(--field-line);border-radius:var(--radius-field);background:var(--field-bg);color:var(--field-fg);font-family:var(--font-text);font-size:1rem;caret-color:var(--stamp);transition:border-color .2s var(--ease-out),box-shadow .2s var(--ease-out)}.input:focus{outline:none;border-color:var(--deck);box-shadow:0 0 0 3px var(--gold)}.input[aria-invalid=true]{border-color:var(--stamp-deep)}.label{display:block;margin-bottom:6px;font-weight:700;font-size:.95rem;color:var(--fg)}.field{display:grid;margin-bottom:16px}.field-hint{margin-top:6px;font-size:.875rem;color:var(--fg-soft)}.error,.notice-error{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--radius-field);background:var(--stamp);color:#fff;font-weight:600;font-size:.95rem;white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0}.success{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--radius-field);background:var(--face);color:var(--ink);font-weight:600;margin:12px 0;box-shadow:var(--shadow-card)}.error .icon,.success .icon{width:1.25rem;height:1.25rem}.loading{display:grid;justify-items:center;gap:16px;padding:64px 0;color:var(--deck-text-soft);font-weight:600}.loading:before{content:"";width:44px;aspect-ratio:5 / 7;border-radius:6px;border:3px solid var(--face);background:var(--stamp);animation:loading-flip 1.2s var(--ease-out) infinite}@keyframes loading-flip{0%{transform:perspective(300px) rotateY(0)}50%,to{transform:perspective(300px) rotateY(180deg)}}*{scrollbar-color:var(--deck-line) transparent}@media (min-width: 720px){.container{padding:0 24px 64px}.sheet{padding:24px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.auth-container{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:32px 16px 48px;background:var(--deck)}.auth-brand{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-display);font-weight:800;font-stretch:76%;font-size:clamp(2rem,10vw,2.8rem);line-height:1;letter-spacing:-.02em;color:var(--deck-text)}.auth-brand-card{display:grid;place-items:center;width:34px;height:46px;border-radius:7px;background:var(--face);color:var(--stamp);transform:rotate(-8deg);box-shadow:0 8px 14px -6px #000c}.auth-brand-card .icon{width:22px;height:22px}.auth-card{width:100%;max-width:400px;padding:44px 26px 40px;border-radius:20px;box-shadow:var(--shadow-lift);animation:auth-deal .6s var(--ease-out) both}@keyframes auth-deal{0%{transform:translateY(40px) rotate(-5deg);opacity:0}}.auth-idx{position:absolute;top:12px;left:14px;display:grid;justify-items:center;font-family:var(--font-display);font-weight:800;font-size:1.1rem;line-height:1;color:var(--stamp-deep)}.auth-idx .icon{width:15px;height:15px;margin-top:2px}.auth-idx-br{top:auto;left:auto;bottom:12px;right:14px;transform:rotate(180deg)}.auth-card h1{margin-bottom:22px;text-align:center;color:var(--ink)}.auth-card .btn-block{margin-top:8px}.auth-footer{margin-top:22px;text-align:center;color:var(--ink-soft)}.auth-footer a{color:var(--deck);font-weight:700;text-decoration:underline;text-underline-offset:4px}.auth-footer a:hover{color:var(--ink)}.auth-notice{display:flex;align-items:flex-start;gap:10px;margin-bottom:16px;padding:12px 14px;border-radius:var(--radius-field);background:var(--face-shade);color:var(--ink);font-weight:600}.auth-notice .icon{flex:none;width:1.25rem;height:1.25rem;color:var(--deck)}.auth-account{margin-bottom:16px;color:var(--ink-soft);overflow-wrap:anywhere}.auth-account strong{color:var(--ink)}.game-card{position:relative;display:flex;align-items:center;gap:12px;padding:14px 14px 14px 16px;background:var(--face);color:var(--ink);border-radius:var(--radius-card);box-shadow:var(--shadow-card);transition:transform .25s var(--ease-out),box-shadow .25s var(--ease-out)}.game-card-link{text-decoration:none}.game-card-link:hover{transform:translateY(-2px) rotate(-.6deg);box-shadow:var(--shadow-lift)}.game-card-link:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.game-card-body{display:grid;gap:6px;flex:1;min-width:0}.game-card-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.game-card-title,.game-room-code{font-family:var(--font-display);font-weight:800;font-stretch:85%;font-size:1.2rem;line-height:1.1;min-width:0;overflow-wrap:anywhere}.game-room-code{letter-spacing:.08em;color:var(--deck)}.game-card-meta{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:.85rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.game-card-arrow{color:var(--deck);width:20px;height:20px}.game-status{flex:none;padding:3px 8px;border:2px solid currentColor;border-radius:6px;font-size:.75rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;line-height:1.2;transform:rotate(-3deg)}.status-lobby{color:var(--deck)}.status-in-progress{color:var(--stamp-deep)}.status-finished{color:var(--ink-faint)}.games-list{display:grid;gap:12px}.dashboard{padding-top:12px}.dashboard-actions{display:grid;gap:20px;margin-top:28px}.dashboard .my-games-section .section-head{margin-top:0}.new-game{display:grid;gap:16px;padding:4px 0 8px}.new-game-deck{position:relative;width:76px;height:100px;margin:4px 0 4px 8px}.new-game-deck span{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:10px;border:5px solid var(--face);background-color:var(--stamp);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 28 28'%3E%3Cpath d='M14 0L28 14L14 28L0 14Z' fill='none' stroke='%23ffffff' stroke-opacity='.4' stroke-width='2'/%3E%3C/svg%3E");background-size:16px 16px;box-shadow:0 8px 16px -8px #000c;transition:transform .4s var(--ease-out)}.new-game-deck span:nth-child(1){transform:rotate(-12deg) translate(-6px)}.new-game-deck span:nth-child(2){transform:rotate(-3deg)}.new-game-deck span:nth-child(3){transform:rotate(7deg) translate(8px)}.new-game:hover .new-game-deck span:nth-child(1){transform:rotate(-20deg) translate(-14px)}.new-game:hover .new-game-deck span:nth-child(3){transform:rotate(15deg) translate(16px)}.new-game-copy h2{font-size:1.6rem}.new-game-copy p{margin-top:4px;color:var(--deck-text-soft)}.join-game h2{font-size:1.4rem}.join-game>p{margin:4px 0 16px}.join-form{display:grid;gap:8px}.join-form .label,.join-form .error{margin:0}.join-form .btn{margin-top:8px}.join-code{font-family:var(--font-display);font-weight:800;font-size:1.5rem;letter-spacing:.2em;text-transform:uppercase}@media (min-width: 720px){.dashboard-actions{grid-template-columns:1fr 1fr;align-items:start;gap:28px}}.avatar{position:relative;border-radius:50%;overflow:hidden;background:var(--deck);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 0 0 2px var(--face)}.avatar-clickable{border:none;padding:0;font:inherit;cursor:zoom-in;transition:transform .25s var(--ease-out),box-shadow .25s var(--ease-out)}.avatar-clickable:hover{transform:scale(1.05) rotate(-2deg);box-shadow:0 0 0 2px var(--face),0 8px 16px -6px #0009}.avatar-clickable:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.avatar-image{width:100%;height:100%;object-fit:cover;display:block}.avatar-initials{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-display);font-weight:800;font-stretch:80%;font-size:.5em;letter-spacing:.01em;line-height:1}.avatar-small{width:32px;height:32px;font-size:26px}.avatar-medium{width:48px;height:48px;font-size:38px}.avatar-large{width:84px;height:84px;font-size:66px}.avatar-xlarge{width:128px;height:128px;font-size:100px}.admin{padding-top:12px}.admin-head{display:flex;align-items:center;gap:14px;margin:8px 0 12px}.admin-head h1{overflow-wrap:anywhere}.admin-head p{margin-top:2px}.admin-badge{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--face);color:var(--deck);transform:rotate(-6deg);box-shadow:var(--shadow-card)}.admin-back{display:inline-flex;align-items:center;gap:6px;margin-left:-8px;text-decoration:none}.admin-back .icon{width:18px;height:18px}.admin-empty{color:var(--deck-text-soft)}.admin-user-search{margin-bottom:12px}.admin-users{list-style:none;display:grid;gap:8px}.admin-user{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px 12px;padding:10px 14px;background:var(--face);color:var(--ink);border-radius:12px;box-shadow:0 6px 12px -8px #000000b3}.admin-user-body{display:grid;gap:2px;min-width:0}.admin-user-name{font-family:var(--font-display);font-weight:800;font-stretch:85%;font-size:1.15rem;line-height:1.1;overflow-wrap:anywhere}.admin-user-meta{display:flex;flex-wrap:wrap;gap:0 12px;font-size:.85rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.admin-user-status{padding:3px 10px;border:2px solid currentColor;border-radius:999px;font-size:.75rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;line-height:1.2;color:var(--ink-soft)}.admin-user-status.is-active{color:var(--deck)}.admin-user-status.is-reset_pending{color:var(--ink)}.admin-user-status.is-locked{color:var(--stamp-deep)}.admin-user-foot{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding-top:8px;border-top:1px solid var(--face-shade)}.admin-user-actions{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}.admin-user .btn-outline{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}.admin-user .btn-outline:hover:not(:disabled){background:var(--face-shade)}.admin-user .btn:disabled{background:var(--face-shade);color:var(--ink-faint);outline-color:#b9b8d0}.admin-game-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.admin-game-actions .icon{width:18px;height:18px}.admin-info{display:grid;gap:12px;margin-top:16px}.admin-info-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.admin-info-head h2{font-size:1.2rem}.admin-facts{display:grid;gap:6px}.admin-facts div{display:flex;flex-wrap:wrap;gap:6px}.admin-facts dt{font-weight:700}.admin-facts dd{color:var(--ink-soft);font-variant-numeric:tabular-nums}.admin-winner{display:flex;align-items:center;gap:12px;margin-top:16px;padding:16px 18px;border-radius:var(--radius-card);background:var(--gold);color:var(--ink);box-shadow:var(--shadow-card)}.admin-winner .icon{width:28px;height:28px}.admin-winner h2{font-size:1.3rem;overflow-wrap:anywhere}.admin-participants{list-style:none;display:grid;gap:8px}.admin-participant{display:grid;gap:6px;padding:12px 14px;background:var(--face);color:var(--ink);border-radius:12px;box-shadow:0 6px 12px -8px #000000b3}.admin-participant.is-eliminated{background:var(--face-out)}.admin-participant.is-winner{background:var(--gold)}.admin-participant-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.admin-participant-name{font-weight:800;overflow-wrap:anywhere}.admin-participant-status{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;font-weight:700;color:var(--ink-soft)}.admin-participant.is-eliminated .admin-participant-status{color:var(--stamp-deep)}.admin-participant.is-winner .admin-participant-status{color:var(--ink)}.admin-participant-status .icon,.admin-participant-target .icon{width:18px;height:18px}.admin-participant-target{display:flex;align-items:center;gap:6px;font-size:.9rem;color:var(--ink-soft)}.admin-participant-meta{font-size:.85rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.admin-danger{margin-top:28px}.avatar-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0c1150db;display:flex;align-items:center;justify-content:center;padding:16px;z-index:1000;animation:fadeIn .2s var(--ease-out);cursor:zoom-out}.avatar-modal-content{position:relative;background:var(--face);color:var(--ink);border-radius:18px;padding:16px 16px 18px;max-width:min(92vw,520px);max-height:90vh;display:flex;flex-direction:column;align-items:center;gap:14px;cursor:default;animation:cardIn .45s var(--ease-out);box-shadow:0 30px 60px -20px #000000e6,0 3px 8px #0000004d}.avatar-modal-close{position:absolute;top:-14px;right:-10px;width:44px;height:44px;border:0;border-radius:50%;background:var(--ink);color:#fff;cursor:pointer;display:grid;place-items:center;box-shadow:0 6px 14px -6px #000c;transition:transform .2s var(--ease-out)}.avatar-modal-close:hover{transform:rotate(90deg)}.avatar-modal-image{max-width:100%;max-height:68vh;width:auto;height:auto;border-radius:10px;object-fit:contain;display:block}.avatar-modal-initials{display:none;width:min(280px,70vw);aspect-ratio:1;border-radius:50%;background:var(--deck);color:#fff;font-family:var(--font-display);font-weight:800;font-stretch:80%;font-size:6rem;align-items:center;justify-content:center}.avatar-modal-username{font-family:var(--font-display);font-weight:800;font-stretch:80%;font-size:1.6rem;line-height:1.1;text-align:center;overflow-wrap:anywhere}@keyframes fadeIn{0%{opacity:0}}@keyframes cardIn{0%{transform:translateY(30px) rotate(-6deg) scale(.92);opacity:0}}.pcard{--tilt: 0deg;position:relative;aspect-ratio:5 / 7;min-width:0;display:grid;place-items:center;padding:10px 6px 28px;background:var(--face);color:var(--ink);border-radius:var(--radius-card);box-shadow:var(--shadow-card);transform:rotate(var(--tilt))}.pcard:nth-child(3n+1){--tilt: -2deg}.pcard:nth-child(3n+2){--tilt: 1.6deg}.pcard:nth-child(3n){--tilt: -.8deg}.pcard-idx{position:absolute;top:8px;left:9px;display:grid;justify-items:center;font-family:var(--font-display);font-weight:800;font-size:.8rem;line-height:1;color:var(--deck)}.pcard-idx .icon{width:13px;height:13px;margin-top:2px}.pcard .avatar-letters{background:none;box-shadow:none;width:auto;height:auto}.pcard .avatar-letters .avatar-initials{color:var(--deck);font-size:2.6rem}.pcard .avatar-photo{width:62%;height:auto;aspect-ratio:1;box-shadow:0 0 0 3px var(--deck)}.pcard-name{position:absolute;left:6px;right:6px;bottom:9px;text-align:center;font-weight:700;font-size:.85rem;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pcard-badge{position:absolute;top:-9px;left:50%;transform:translate(-50%);background:var(--gold);color:var(--ink);font-size:.7rem;font-weight:700;line-height:1;padding:4px 8px;border-radius:999px;white-space:nowrap;box-shadow:0 3px 6px -3px #0009}.pcard.is-out{background:var(--face-out)}.pcard.is-out .pcard-idx{color:var(--ink-faint)}.pcard.is-out .avatar-letters .avatar-initials{color:var(--ink-faint);opacity:.3}.pcard.is-out .avatar-photo{filter:grayscale(1);opacity:.7;box-shadow:0 0 0 3px var(--ink-faint)}.pcard.is-out .pcard-name{color:var(--ink-soft)}.pcard-stamp{position:absolute;top:42%;left:50%;transform:translate(-50%,-50%) rotate(-22deg);border:2.5px solid var(--stamp-deep);border-radius:4px;padding:1px 6px 2px;color:var(--stamp-deep);mix-blend-mode:multiply;font-family:var(--font-display);font-weight:800;font-stretch:75%;font-size:1.05rem;letter-spacing:.06em;line-height:1.1}.pcard-mini{padding:8px 4px 22px;border-radius:10px}.pcard-mini .pcard-idx{top:5px;left:6px;font-size:.68rem}.pcard-mini .pcard-idx .icon{width:10px;height:10px}.pcard-mini .avatar-letters .avatar-initials{font-size:1.6rem}.pcard-mini .avatar-photo{box-shadow:0 0 0 2px var(--deck)}.pcard-mini .pcard-name{bottom:6px;font-size:.75rem}.pcard-mini .pcard-stamp{font-size:.8rem;border-width:2px;padding:0 4px 1px}.game-room{max-width:560px}.room-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;padding:20px 0 8px}.room-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 100%}.room-title h1{min-width:0;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.room-code{display:flex;align-items:center;gap:8px}.room-chip{padding:7px 12px;border-radius:999px;background:var(--deck-glass);font-weight:700;font-size:.9rem;letter-spacing:.1em;font-variant-numeric:tabular-nums}.room-meta{flex-basis:100%;margin-top:-4px;color:var(--deck-text-soft);font-weight:600;font-size:.9rem}.name-edit{flex:1 1 100%;display:grid;gap:10px}.name-edit-input{font-family:var(--font-display);font-weight:800;font-stretch:85%;font-size:1.4rem}.lobby-status{font-family:var(--font-display);font-weight:700;font-stretch:90%;font-size:1.55rem;line-height:1.1;letter-spacing:-.01em;max-width:18ch;margin:10px 0 0;text-wrap:balance}.lobby .section-head{margin-top:20px}.deal-table{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 12px;margin-bottom:28px}.deal-table .pcard{animation:deal .7s var(--ease-back) both;animation-delay:calc(var(--deal, 0) * 90ms + 50ms)}@keyframes deal{0%{transform:translate(40px,-120px) rotate(18deg);opacity:0}}.deal-slot{aspect-ratio:5 / 7;display:grid;place-items:center;border:2px dashed rgba(255,255,255,.5);border-radius:var(--radius-card);background:transparent;color:var(--deck-text);cursor:pointer;transition:background-color .2s var(--ease-out),border-color .2s var(--ease-out)}.deal-slot:hover{background:var(--deck-glass);border-color:#fffc}.deal-slot .icon{width:28px;height:28px}.invite-input{min-height:44px;font-size:.85rem;color:var(--deck-text-soft);border-width:1.5px;border-color:#ffffff40}.target-zone{display:grid;justify-items:center;text-align:center;padding-top:4px}.target-heading{font-size:1.3rem;margin:4px 0 14px}.target-notice{justify-self:stretch;display:flex;align-items:center;gap:10px;text-align:left;background:var(--gold);color:var(--ink);border-radius:12px;padding:10px 12px;margin-bottom:16px;font-size:.95rem;animation:pop .6s var(--ease-out) both}@keyframes pop{0%{transform:scale(.92) translateY(-6px);opacity:0}}.target-hold{display:grid;justify-items:center;gap:18px;width:100%;padding:6px 0 4px;border:0;background:none;color:var(--deck-text);cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:none;border-radius:var(--radius-card)}.target-stage{display:block;width:min(220px,58vw);perspective:1000px}.target-flip{position:relative;display:block;aspect-ratio:5 / 7;transform-style:preserve-3d;transition:transform .55s var(--ease-out)}.target-flip.is-open{transform:rotateY(180deg)}.target-hold:not(.is-held):hover .target-flip{transform:rotate(-2deg) translateY(-4px)}.target-face{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius-card);box-shadow:var(--shadow-lift);backface-visibility:hidden;-webkit-backface-visibility:hidden}.target-back{background-color:var(--stamp);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M14 0L28 14L14 28L0 14Z' fill='none' stroke='%23ffffff' stroke-opacity='.35' stroke-width='1.5'/%3E%3Ccircle cx='14' cy='14' r='3' fill='%23ffffff' fill-opacity='.5'/%3E%3C/svg%3E");background-size:28px 28px;background-position:center;border:8px solid var(--face)}.target-back:after{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border:1.5px solid rgba(255,255,255,.6);border-radius:6px}.target-front{transform:rotateY(180deg);background:var(--face);color:var(--ink);display:grid;place-content:center;justify-items:center;gap:14px;padding:16px 12px}.target-front .pcard-idx{font-size:1.2rem;color:var(--stamp-deep)}.target-front .pcard-idx .icon{width:18px;height:18px}.target-front .avatar{box-shadow:0 0 0 3px var(--deck)}.target-name{font-family:var(--font-display);font-weight:800;font-stretch:80%;font-size:clamp(1.6rem,9vw,2.3rem);line-height:1;letter-spacing:-.02em;max-width:100%;overflow-wrap:anywhere}.pcard-idx.pcard-idx-br{top:auto;left:auto;bottom:8px;right:9px;transform:rotate(180deg)}.target-hint{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;background:var(--deck-glass);font-weight:700}.target-hold.is-held .target-hint{background:var(--face);color:var(--ink)}.target-hold:focus-visible{outline:none}.target-hold:focus-visible .target-hint{outline:3px solid var(--gold);outline-offset:3px}.target-task{margin-top:14px;color:var(--deck-text-soft);font-size:.95rem;max-width:32ch}.mini-table{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:12px 8px}.report{margin-top:32px;display:grid;gap:8px}.report p{color:var(--deck-text-soft);font-size:.95rem;margin-bottom:8px}.out-panel{display:grid;justify-items:center;text-align:center;margin:4px -16px 8px;padding:28px 22px 26px;background:var(--stamp);color:#fff;border-radius:0 0 24px 24px}.out-card{position:relative;width:min(190px,52vw);aspect-ratio:5 / 7;display:grid;place-items:center;background:var(--face);border-radius:var(--radius-card);box-shadow:var(--shadow-lift);transform:rotate(-4deg);margin-bottom:22px}.out-card .pcard-idx{font-size:1.05rem;color:var(--ink-faint)}.out-card-initial{opacity:.45;font-family:var(--font-display);font-weight:800;font-size:4.4rem;line-height:1;color:#b8b7cc}.out-card-name{position:absolute;left:8px;right:8px;bottom:14px;font-weight:700;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.out-stamp{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%) rotate(-18deg);border:5px solid var(--stamp-ink);color:var(--stamp-ink);border-radius:8px;padding:2px 14px 4px;font-family:var(--font-display);font-weight:800;font-stretch:75%;font-size:3.2rem;letter-spacing:.04em;line-height:1;mix-blend-mode:multiply;animation:slam .5s cubic-bezier(.2,1.6,.5,1) .35s both}@keyframes slam{0%{transform:translate(-50%,-50%) rotate(-18deg) scale(2.4);opacity:0}}.out-panel h2{font-size:2rem;letter-spacing:-.02em}.out-panel p{margin-top:8px;font-weight:500;max-width:30ch}.sound-live{justify-self:stretch;display:flex;align-items:center;gap:12px;margin-top:18px;padding:12px 14px;border-radius:14px;background:#5a00194d;text-align:left}.sound-live .icon{width:26px;height:26px}.wave{display:flex;gap:3px;align-items:center;height:26px;margin-left:auto}.wave i{width:4px;height:6px;background:#fff;border-radius:2px;animation:wave 1s ease-in-out infinite}.wave i:nth-child(2n){animation-delay:-.3s}.wave i:nth-child(3n){animation-delay:-.55s}@keyframes wave{0%,to{height:6px}50%{height:24px}}.finale-title{font-size:1.4rem;text-align:center;margin:4px 0 18px}.winner{display:grid;justify-items:center;text-align:center}.trump{position:relative;width:min(200px,54vw);aspect-ratio:5 / 7;display:grid;place-content:center;justify-items:center;gap:12px;background:var(--gold);color:var(--ink);border-radius:var(--radius-card);box-shadow:var(--shadow-lift);transform:rotate(3deg);animation:rise .9s var(--ease-back) .2s both}@keyframes rise{0%{transform:translateY(40px) rotate(-8deg) scale(.9);opacity:0}}.trump .pcard-idx{font-size:1.1rem;color:var(--ink)}.trump .pcard-idx .icon{width:16px;height:16px}.trump-icon{width:28px;height:28px}.trump .avatar{background:var(--ink);box-shadow:0 0 0 3px var(--ink)}.trump .avatar-initials{color:var(--gold)}.trump-name{font-family:var(--font-display);font-weight:800;font-stretch:80%;font-size:clamp(1.5rem,8vw,2.1rem);line-height:1;letter-spacing:-.02em;max-width:100%;padding:0 10px;overflow-wrap:anywhere}.trump-back{background-color:var(--face-out);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M14 0L28 14L14 28L0 14Z' fill='none' stroke='%236e6c90' stroke-opacity='.45' stroke-width='1.5'/%3E%3C/svg%3E");background-size:28px 28px;border:8px solid var(--face);transform:rotate(-3deg)}.winner-line{margin-top:24px;font-size:1.35rem}.winner p{margin-top:4px;color:var(--deck-text-soft)}.ranking{list-style:none;display:grid;gap:6px}.ranking li{display:grid;grid-template-columns:2rem auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:52px;padding:8px 12px;background:var(--face);color:var(--ink);border-radius:10px;box-shadow:0 6px 12px -8px #000000b3}.ranking li.is-winner{background:var(--gold)}.ranking-pos{font-family:var(--font-display);font-weight:800;font-size:1.2rem;color:var(--deck);font-variant-numeric:tabular-nums}.ranking li.is-winner .ranking-pos{color:var(--ink)}.ranking-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-status{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;font-weight:600;color:var(--ink-soft)}.ranking li.is-winner .ranking-status{color:var(--ink)}.ranking-status .icon{width:18px;height:18px}.rematch{margin-top:28px;display:grid;gap:10px;text-align:center}.rematch p{color:var(--deck-text-soft);font-size:.9rem}.leave{display:flex;justify-content:center;margin-top:20px}@media (min-width: 560px){.room-title{flex-basis:auto}.room-code{margin-left:auto}.deal-table{grid-template-columns:repeat(4,minmax(0,1fr))}.out-panel{margin-left:0;margin-right:0;border-radius:24px}}.profile{padding-top:12px}.profile-hero{display:grid;justify-items:center;gap:22px;margin-bottom:28px}.profile-card{position:relative;width:min(210px,58vw);aspect-ratio:5 / 7;display:grid;place-content:center;justify-items:center;gap:14px;padding:16px 12px;background:var(--face);color:var(--ink);border-radius:18px;box-shadow:var(--shadow-lift);transform:rotate(-2deg)}.profile-card .avatar{width:min(128px,34vw);height:auto;aspect-ratio:1;box-shadow:0 0 0 4px var(--deck)}.profile-idx{position:absolute;top:10px;left:12px;display:grid;justify-items:center;font-family:var(--font-display);font-weight:800;font-size:1.15rem;line-height:1;color:var(--deck)}.profile-idx .icon{width:16px;height:16px;margin-top:2px}.profile-idx-br{top:auto;left:auto;bottom:10px;right:12px;transform:rotate(180deg)}.profile-name{font-family:var(--font-display);font-weight:800;font-stretch:80%;font-size:1.6rem;line-height:1;max-width:100%;overflow-wrap:anywhere;text-align:center}.avatar-actions{width:100%;max-width:360px;display:grid;gap:12px}.sound-section,.settings-section{display:grid;gap:16px}.settings-section{margin-top:32px}.sound-head,.settings-head{display:flex;gap:14px;align-items:flex-start}.sound-badge,.settings-badge{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--stamp);color:#fff;transform:rotate(-6deg)}.sound-head h2,.settings-head h2{font-size:1.35rem}.help-text{margin-top:4px;color:var(--ink-soft);font-size:.95rem}.sound-buttons{display:flex;flex-wrap:wrap;gap:10px}.sound-buttons .btn{flex:1 1 auto}.sound-preview{display:grid;gap:12px}.sound-preview.is-draft{padding:12px;border-radius:12px;background:var(--face-shade)}.sound-preview audio{width:100%;accent-color:var(--stamp)}.is-recording{animation:rec-pulse 1.2s ease-in-out infinite}@keyframes rec-pulse{50%{box-shadow:0 4px 0 var(--stamp-press),0 0 0 6px #e0194f40}}.profile-messages:empty{display:none}.score-card{margin-top:28px;padding:22px 20px 18px 52px}.score-card .profile-idx{color:var(--stamp-deep)}.score-rows{display:grid}.score-row{display:flex;align-items:baseline;gap:10px;padding:9px 0;border-bottom:1.5px dotted #b9b8d0}.score-row:last-child{border-bottom:0}.score-row dt{flex:1;color:var(--ink-soft);font-weight:600}.score-row dd{font-family:var(--font-display);font-weight:800;font-stretch:80%;font-size:1.6rem;line-height:1;color:var(--deck);font-variant-numeric:tabular-nums}.score-row.is-out dd{color:var(--stamp-deep)}.profile .my-games-section{margin-top:8px}.no-games{padding:22px 16px;text-align:center;color:var(--deck-text-soft);border:2px dashed rgba(255,255,255,.4);border-radius:var(--radius-card)}@media (min-width: 720px){.profile-hero{grid-template-columns:auto 1fr;justify-items:start;align-items:center;gap:36px}}.layout{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.navbar{background:var(--deck-deep);position:sticky;top:0;z-index:100;box-shadow:0 10px 24px -18px #000000e6}.nav-container{max-width:1080px;margin:0 auto;padding:8px 16px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand account" "links links";align-items:center;gap:4px 12px}.nav-brand{grid-area:brand;display:inline-flex;align-items:center;gap:10px;min-height:44px;font-family:var(--font-display);font-weight:800;font-stretch:78%;font-size:1.35rem;letter-spacing:-.01em;line-height:1;color:var(--deck-text);text-decoration:none;white-space:nowrap}.nav-brand-card{display:grid;place-items:center;width:24px;height:32px;border-radius:5px;background:var(--face);color:var(--stamp);transform:rotate(-8deg);box-shadow:0 4px 8px -4px #000c}.nav-brand-card .icon{width:16px;height:16px}.nav-links{grid-area:links;display:flex;gap:4px}.nav-link{display:inline-flex;align-items:center;min-height:40px;padding:0 12px;border-radius:999px;color:var(--deck-text-soft);font-weight:600;font-size:.95rem;text-decoration:none;transition:background-color .2s var(--ease-out),color .2s var(--ease-out)}.nav-link:hover{color:var(--deck-text);background:var(--deck-glass)}.nav-link.active{color:var(--ink);background:var(--face)}.nav-account{grid-area:account;display:flex;align-items:center;gap:10px}.nav-user-section{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 4px;border-radius:999px;text-decoration:none;color:var(--deck-text)}.nav-user-section:hover .nav-user{text-decoration:underline}.nav-user{font-size:.9rem;font-weight:600;max-width:14ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-logout .icon{width:18px;height:18px}.main-content{flex:1;padding:0 0 24px}@media (max-width: 479px){.nav-user{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}}@media (min-width: 720px){.nav-container{grid-template-columns:auto 1fr auto;grid-template-areas:"brand links account";padding:10px 24px;gap:24px}}
