*{box-sizing:border-box}:root{--ink: #1a0f0a;--paper: #f7ecd8;--paper-dark: #ecd9b8;--muted: #8a7460;--text-dim-on-panel: rgba(255, 255, 255, .82);--vermillion-surface: #a63f36;--vermillion-700: #6e1420;--vermillion-600: #9e1f2b;--vermillion-500: #c62828;--gold-700: #96731f;--gold-500: #d4af37;--gold-300: #f0d78c;--jade-700: #1f4a3d;--jade-500: #2f6f5e;--jade-300: #4a8f79;--suit-jade: var(--jade-500);--suit-sword: var(--ink);--suit-pagoda: var(--vermillion-600);--suit-star: var(--gold-700);--bg: var(--paper);--panel: var(--vermillion-surface);--panel-border: var(--gold-500);--felt: var(--jade-500);--felt-light: var(--jade-300);--gold: var(--gold-500);--gold-dim: var(--gold-700);--text: var(--ink);--text-dim: var(--muted);--red: var(--vermillion-600);--danger: #e05d5d;--kakao: #fee500;--kakao-text: #191919;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius-sm: 6px;--radius: 10px;--radius-lg: 18px;--radius-pill: 999px;--shadow-sm: 0 2px 4px rgba(26, 15, 10, .3);--shadow-md: 0 4px 14px rgba(26, 15, 10, .42);--shadow-lg: 0 10px 28px rgba(26, 15, 10, .5);--fs-xs: 11px;--fs-sm: 13px;--fs-md: 15px;--fs-lg: 18px;--fs-xl: 24px;--fs-2xl: 32px;--card-w: clamp(46px, 13vw, 64px);--card-h: clamp(66px, 18.5vw, 92px);--card-small-w: clamp(30px, 8.5vw, 40px);--card-small-h: clamp(43px, 12vw, 58px);--header-h: 52px}html,body,#root{height:100%}body{margin:0;font-family:Pretendard,"Noto Serif KR",Apple SD Gothic Neo,Malgun Gothic,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--paper);color:var(--text);position:relative}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cg fill='none' stroke='%2396731f' stroke-width='1' opacity='0.16'%3E%3Cpath d='M10 30 q10 -14 20 0 q10 -14 20 0 q10 -14 20 0' /%3E%3Cpath d='M70 90 q10 -14 20 0 q10 -14 20 0' /%3E%3Cpath d='M-10 70 q10 -14 20 0 q10 -14 20 0 q10 -14 20 0' /%3E%3C/g%3E%3C/svg%3E");background-size:220px 220px}button{font-family:inherit}.app-root{min-height:100vh;display:flex;flex-direction:column}.font-display{font-family:Ma Shan Zheng,cursive;letter-spacing:.04em}.motif-fret-border{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='8' viewBox='0 0 24 8'%3E%3Cpath d='M0 7 H6 V3 H10 V7 H14 V1 H18 V7 H24' fill='none' stroke='%23d4af37' stroke-width='1.4'/%3E%3C/svg%3E");background-repeat:repeat-x;background-size:24px 8px;background-position:center;height:8px;opacity:.85}.btn{border:none;border-radius:var(--radius-lg);padding:10px 20px;font-size:var(--fs-md);font-weight:600;cursor:pointer;transition:transform .1s ease,opacity .15s ease,box-shadow .15s ease}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:not(:disabled):active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg,var(--gold-300),var(--gold-500) 55%,var(--gold-700));color:var(--ink);border:2px solid var(--gold-500);box-shadow:var(--shadow-md);border-radius:var(--radius-lg)}.btn-secondary{background:var(--panel);color:var(--paper);border:2px solid var(--gold-500);box-shadow:var(--shadow-sm);border-radius:var(--radius-lg)}.btn-ghost{background:transparent;color:var(--gold-500);border:2px solid var(--gold-500);border-radius:var(--radius-lg)}.btn-tichu{background:linear-gradient(135deg,var(--vermillion-500),var(--vermillion-700));color:var(--gold-300);border:2px solid var(--gold-500);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.btn-kakao{background:var(--kakao);color:var(--kakao-text);padding:12px 28px;text-decoration:none;display:inline-block;border:2px solid var(--gold-500);border-radius:var(--radius-lg)}.input{border-radius:8px;border:1px solid var(--panel-border);background:var(--bg);color:var(--text);padding:10px 12px;font-size:15px;letter-spacing:.1em}.login-shell,.home-shell,.lobby-shell,.loading-shell{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;padding:24px}.login-title{font-family:Ma Shan Zheng,cursive;font-size:40px;font-weight:400;color:var(--gold-500);text-shadow:0 2px 8px rgba(26,15,10,.35);margin:0}.login-title:after{content:"";display:block;margin:10px auto 0;width:140px;height:8px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='8' viewBox='0 0 24 8'%3E%3Cpath d='M0 7 H6 V3 H10 V7 H14 V1 H18 V7 H24' fill='none' stroke='%23d4af37' stroke-width='1.4'/%3E%3C/svg%3E");background-repeat:repeat-x;background-size:24px 8px;opacity:.85}.home-title{font-family:Ma Shan Zheng,cursive;font-size:28px;font-weight:400;color:var(--gold-500);margin:0}.login-desc{color:var(--text-dim);max-width:360px}.online-count{font-size:13px;color:var(--text-dim)}.login-error{color:var(--danger)}.login-shell{position:relative}.login-shell:before,.login-shell:after{content:"";position:absolute;bottom:0;height:clamp(160px,46vw,480px);background-repeat:no-repeat;background-size:contain;background-position:bottom;opacity:.5;pointer-events:none;z-index:-1}.login-shell:before{left:0;aspect-ratio:141 / 420;background-position:bottom left;background-image:url(/mascot-loach.png)}.login-shell:after{right:0;aspect-ratio:221 / 420;background-position:bottom right;background-image:url(/mascot-chick.png)}.home-profile{position:absolute;top:16px;right:20px;display:flex;align-items:center;gap:10px;font-size:14px;color:var(--text-dim);cursor:pointer;max-width:calc(100vw - 40px)}.home-avatar{width:28px;height:28px;border-radius:50%}.home-nickname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.home-actions{display:flex;flex-direction:column;align-items:center;gap:16px;margin-top:8px}.home-join{display:flex;gap:8px}.board-shell{position:relative;flex:1;display:flex;flex-direction:column;gap:24px;padding:48px 32px 32px;max-width:800px;width:100%;margin:0 auto;background:linear-gradient(135deg,var(--paper),var(--paper-dark));border:2px solid var(--gold);border-radius:12px;box-shadow:0 4px 12px #0006}.board-shell:before,.board-shell:after{content:"";position:absolute;bottom:0;height:clamp(120px,24vw,280px);background-repeat:no-repeat;background-size:contain;opacity:.5;pointer-events:none}.board-shell:before{left:0;aspect-ratio:141 / 420;background-position:bottom left;background-image:url(/mascot-loach.png)}.board-shell:after{right:0;aspect-ratio:221 / 420;background-position:bottom right;background-image:url(/mascot-chick.png)}.board-header{display:flex;flex-direction:column;gap:12px;padding-bottom:12px}.board-header:after{content:"";display:block;height:8px;margin-top:4px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='8' viewBox='0 0 24 8'%3E%3Cpath d='M0 7 H6 V3 H10 V7 H14 V1 H18 V7 H24' fill='none' stroke='%23d4af37' stroke-width='1.4'/%3E%3C/svg%3E");background-repeat:repeat-x;background-size:24px 8px;opacity:.7}.board-header-row{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;align-items:center}.board-filters{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.board-filter-btn{border:1px solid var(--panel-border);background:transparent;color:var(--text-dim);border-radius:999px;padding:6px 16px;font-size:13px;cursor:pointer}.board-filter-btn.active{background:var(--gold);border-color:var(--gold);color:var(--ink);font-weight:600}.board-list{display:flex;flex-direction:column;gap:6px}.board-empty{text-align:center;color:var(--text-dim);padding:32px 0}.board-row{display:grid;grid-template-columns:auto 1fr auto auto auto;grid-template-areas:"badge name host count btn";align-items:center;gap:14px;background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);padding:12px 16px;transition:border-color .15s ease,background .15s ease}.board-row:hover{border-color:var(--gold-dim);background:#1c2d3a}.board-row .badge{grid-area:badge}.board-row-name .badge,.board-row-host .badge{grid-area:auto;margin-right:6px}.board-row-name{grid-area:name;font-weight:600;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-lock{margin-right:4px}.board-row-host{grid-area:host;display:inline-flex;align-items:center;gap:6px;color:var(--text-dim);font-size:13px}.board-row-count{grid-area:count;color:var(--text-dim);font-size:13px;font-variant-numeric:tabular-nums}.board-row button{grid-area:btn}.create-room-form{display:flex;flex-direction:column;gap:14px;margin-top:12px}.create-room-label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-dim);text-align:left}.create-room-input{width:100%}.create-room-visibility{display:flex;gap:20px}.create-room-radio{display:flex;align-items:center;gap:6px;font-size:14px;cursor:pointer}.lobby-header{width:100%;max-width:480px;display:flex;justify-content:space-between;align-items:center}.room-code{color:var(--gold);font-size:20px;letter-spacing:.15em}.lobby-turn-time{color:var(--text-dim);font-size:13px}.lobby-seats{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;width:100%;max-width:480px}.lobby-seat{background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);padding:16px;min-height:110px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.lobby-seat.team-0{border-top:3px solid var(--vermillion-500)}.lobby-seat.team-1{border-top:3px solid var(--jade-300)}.lobby-seat.random-teams{border-top:3px solid var(--panel-border)}.lobby-seat-team{font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em}.lobby-seat-player{display:flex;flex-direction:column;align-items:center;gap:6px}.lobby-seat-player img{width:36px;height:36px;border-radius:50%}.lobby-seat-titles{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}.ready-dot{font-size:12px;color:var(--text-dim)}.ready-dot.ready{color:#6fd28a}.kick-vote-banner{width:100%;max-width:480px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#e05d5d1f;border:1px solid var(--danger);border-radius:var(--radius);padding:10px 14px;font-size:13px}.kick-vote-btn{padding:6px 14px;font-size:12px;white-space:nowrap}.kick-start-btn{padding:2px 10px;font-size:11px;border:1px solid var(--panel-border);border-radius:999px}.lobby-seat-actions{display:flex;gap:6px}.lobby-actions{display:flex;gap:12px;margin-top:12px;align-items:center}.lobby-hint{color:var(--text-dim);font-size:14px}.table-shell{flex:1;display:flex;flex-direction:column;height:100vh;height:100dvh;padding:8px;gap:6px;overflow-y:auto;position:relative}.table-header{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;row-gap:4px;min-height:var(--header-h)}.turn-timer{font-size:13px;color:var(--text-dim);font-variant-numeric:tabular-nums}.turn-timer-low{color:var(--danger);font-weight:700}.sound-toggle{padding:6px 10px;font-size:15px;line-height:1}.resign-btn{padding:6px 10px;font-size:15px;line-height:1;opacity:.5;transition:opacity .2s}.resign-btn:hover{opacity:1}.hotseat-switcher{display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.hotseat-tab{padding:4px 12px;font-size:13px;opacity:.6}.hotseat-tab.active{opacity:1;border-color:var(--gold)}.scoreboard{display:flex;gap:14px;align-items:center;background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius-pill);padding:6px 16px;font-size:13px;box-shadow:var(--shadow-sm)}.scoreboard-round{color:var(--gold);font-weight:700}.scoreboard-team{display:flex;align-items:baseline;gap:6px}.scoreboard-label{font-size:11px;color:var(--text-dim)}.scoreboard-value{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}.scoreboard-us .scoreboard-value{color:var(--gold)}.table-felt{flex:1;position:relative;background:radial-gradient(ellipse at center,var(--felt-light) 0%,var(--felt) 70%);border-radius:var(--radius-lg);border:4px solid var(--gold-700);box-shadow:inset 0 0 36px #1a0f0a59;transition:background .9s ease,border-color .9s ease,box-shadow .9s ease;min-height:240px;display:grid;grid-template-columns:minmax(60px,auto) 1fr minmax(60px,auto);grid-template-rows:auto 1fr;grid-template-areas:"partner partner partner" "left trick right";gap:var(--space-2);padding:var(--space-2)}.seat{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;border-radius:var(--radius);min-width:0}.seat-active{background:#d4af372e;box-shadow:0 0 0 2px var(--gold-500)}.seat-top{grid-area:partner;justify-self:center}.seat-left{grid-area:left;justify-self:start}.seat-right{grid-area:right;justify-self:end}.seat-avatar img,.seat-avatar-fallback{width:clamp(28px,8vw,40px);height:clamp(28px,8vw,40px);border-radius:50%;background:var(--panel-border);display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--ink)}.seat-name{font-size:12px;font-weight:700;max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gold-300);text-shadow:0 1px 2px rgba(26,15,10,.6)}.seat-badges{display:flex;gap:3px;flex-wrap:wrap;justify-content:center;max-width:84px}.badge{font-size:var(--fs-xs);padding:2px 7px;border-radius:var(--radius-sm);background:var(--gold-500);color:var(--ink);white-space:nowrap;font-weight:700;box-shadow:inset 0 0 0 1px #1a0f0a40}.badge-grand{background:var(--vermillion-600);color:var(--gold-300)}.badge-tichu{background:var(--jade-500);color:var(--gold-300)}.badge-finished{background:var(--gold-700);color:var(--paper)}.badge-afk{background:var(--danger);color:#fff}.badge-ranked{background:linear-gradient(135deg,var(--gold-300),var(--gold-500));color:var(--ink);font-weight:700}.badge-title{background:var(--ink);color:var(--gold-300)}.seat-cards{--seat-card-step: 5px;display:flex;align-items:flex-end;min-height:var(--card-small-h)}.seat-cards-stack{display:flex;align-items:flex-end}.seat-left .seat-cards,.seat-right .seat-cards{flex-direction:column;align-items:center;min-height:unset;min-width:var(--card-small-w)}.seat-left .seat-cards-stack,.seat-right .seat-cards-stack{flex-direction:column;align-items:center}.seat-left .seat-cards .card,.seat-right .seat-cards .card{margin-left:0;border-left:none;border-top:1px solid rgba(255,255,255,.22);margin-top:calc(var(--seat-card-step) - var(--card-small-h))}.seat-left .seat-cards .card:first-child,.seat-right .seat-cards .card:first-child{margin-top:0;border-top-color:#00000040}.seat-left .seat-cards .card:nth-child(5n+6),.seat-right .seat-cards .card:nth-child(5n+6){border-top-color:#ffffffb3}.seat-left .seat-cards .card:last-child,.seat-right .seat-cards .card:last-child{box-shadow:0 2px 6px #0006}.seat-cards .card{flex:none;margin-left:calc(var(--seat-card-step) - var(--card-small-w));border-left:1px solid rgba(255,255,255,.22);box-shadow:none;cursor:default}.seat-cards .card:first-child{margin-left:0;border-left-color:#00000040}.seat-cards .card:nth-child(5n+6){border-left-color:#ffffffb3}.seat-cards .card:last-child{box-shadow:0 2px 6px #0006}.seat-cards-empty{width:var(--card-small-w);height:var(--card-small-h);border-radius:6px;border:1px dashed rgba(255,255,255,.2)}.seat-cards-count{font-size:var(--fs-xs);font-weight:700;color:var(--gold-300);background:#1a0f0a8c;border-radius:var(--radius-pill);padding:1px 6px;margin:0 4px;white-space:nowrap}@media (min-width: 768px){.table-shell{padding:16px;gap:10px}.table-felt{grid-template-columns:minmax(120px,auto) 1fr minmax(120px,auto);padding:var(--space-4);min-height:340px}.seat-avatar img,.seat-avatar-fallback{width:48px;height:48px}.seat-name{font-size:14px;max-width:120px}.seat-badges{max-width:120px}.my-area{max-width:640px;margin:0 auto;width:100%;border-radius:var(--radius-lg);border:2px solid var(--gold-500);border-top:2px solid var(--gold-500)}.my-actions{width:auto;align-self:center}.my-actions .btn{flex:none;min-width:120px}}.table-mood-tichu:before,.table-mood-grand:before,.table-mood-tichu:after,.table-mood-grand:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none}.table-mood-tichu:before,.table-mood-grand:before{animation:mood-rise .9s ease-out both}.table-mood-tichu:after,.table-mood-grand:after{animation:mood-breathe 6s ease-in-out infinite}.table-mood-tichu:before{background:repeating-linear-gradient(0deg,rgba(74,143,121,.05) 0 1px,transparent 1px 56px),repeating-linear-gradient(90deg,rgba(74,143,121,.04) 0 1px,transparent 1px 112px),radial-gradient(ellipse 120% 70% at 50% -15%,rgba(47,111,94,.32),transparent 62%),radial-gradient(ellipse 100% 60% at 50% 115%,rgba(31,74,61,.5),transparent 60%),linear-gradient(180deg,#04140f,#0a201a,#030807)}.table-mood-tichu:after{background:radial-gradient(circle at 50% 42%,rgba(212,175,55,.18),transparent 55%)}.table-mood-grand:before{background:repeating-linear-gradient(0deg,rgba(198,40,40,.05) 0 1px,transparent 1px 56px),repeating-linear-gradient(90deg,rgba(198,40,40,.04) 0 1px,transparent 1px 112px),radial-gradient(ellipse 120% 70% at 50% -15%,rgba(198,40,40,.32),transparent 62%),radial-gradient(ellipse 100% 60% at 50% 115%,rgba(110,20,32,.55),transparent 60%),linear-gradient(180deg,#240709,#1a0508,#0a0304)}.table-mood-grand:after{background:radial-gradient(circle at 50% 42%,rgba(240,215,140,.2),transparent 55%)}@keyframes mood-rise{0%{opacity:0}to{opacity:1}}@keyframes mood-breathe{0%,to{opacity:.5}50%{opacity:1}}.table-mood-tichu .table-felt{background:radial-gradient(ellipse at center,#1f4a3d,#0a1f18 70%);border-color:#0d251d;box-shadow:0 0 42px #4a8f7947,inset 0 0 60px #00000073}.table-mood-grand .table-felt{background:radial-gradient(ellipse at center,#6e1420,#2a0509 70%);border-color:#3f100e;box-shadow:0 0 46px #c628284d,inset 0 0 60px #00000080}.seat-call-tichu{background:#2f6f5e38;box-shadow:0 0 22px #d4af378c}.seat-call-grand{background:#9e1f2b38;box-shadow:0 0 24px #c6282899}.seat-active.seat-call-tichu{box-shadow:0 0 0 2px var(--gold-500),0 0 22px #d4af378c}.seat-active.seat-call-grand{box-shadow:0 0 0 2px var(--gold-500),0 0 24px #c6282899}.tichu-banner{display:flex;justify-content:center;flex-wrap:wrap;gap:6px}.tichu-call{font-size:12px;font-weight:700;letter-spacing:.04em;padding:4px 12px;border-radius:999px;white-space:nowrap;animation:mood-rise .9s ease-out both}.tichu-call-tichu{background:#2f6f5e3d;border:1px solid rgba(74,143,121,.6);color:var(--gold-300);text-shadow:0 0 10px rgba(212,175,55,.6)}.tichu-call-grand{background:#9e1f2b3d;border:1px solid rgba(198,40,40,.6);color:var(--gold-300);text-shadow:0 0 10px rgba(198,40,40,.7)}@media (prefers-reduced-motion: reduce){.table-mood-tichu:before,.table-mood-grand:before,.table-mood-tichu:after,.table-mood-grand:after,.tichu-call,.card{animation:none}.table-mood-tichu:after,.table-mood-grand:after{opacity:.75}.table-felt{transition:none}}.trick-area{grid-area:trick;display:flex;flex-direction:column;align-items:center;gap:6px;min-height:100px;justify-content:center;min-width:0}.trick-empty{color:#fff9;font-size:14px}.trick-owner{font-size:12px;color:#ffffffbf}.trick-cards{display:flex;gap:4px}.trick-passed{font-size:11px;color:#ffffff8c}.activity-log{position:absolute;top:calc(var(--header-h) + var(--space-2));right:var(--space-2);max-width:200px;display:flex;flex-direction:column;align-items:flex-end;gap:4px;pointer-events:none;z-index:10;overflow:hidden}.wish-indicator{position:absolute;top:calc(var(--header-h) + var(--space-2));left:var(--space-2);background:#d4af3738;border:1px solid var(--gold-500);border-radius:var(--radius-pill);padding:4px 14px;font-size:13px;font-weight:700;color:var(--gold-300);z-index:10;pointer-events:none;animation:mood-rise .9s ease-out both}.activity-entry{font-size:12px;color:#ffffffd9;text-shadow:0 1px 3px rgba(0,0,0,.9),0 0 6px rgba(0,0,0,.7);white-space:nowrap;animation:logSlideUp .35s cubic-bezier(.16,1,.3,1) forwards}@keyframes logSlideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.my-area{display:flex;flex-direction:column;align-items:center;gap:6px;position:sticky;bottom:0;background:var(--paper-dark);border-top:3px solid var(--gold-500);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-2) var(--space-2) calc(var(--space-2) + env(safe-area-inset-bottom));box-shadow:0 -6px 18px #1a0f0a47;z-index:5}.my-status{min-height:22px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center}.turn-indicator{color:var(--gold-700);font-weight:700;font-size:14px}.hand-wrapper{width:100%;display:flex;flex-direction:column;align-items:center;gap:2px}.hand-count{font-size:var(--fs-xs);color:var(--text-dim)}.hand{display:flex;justify-content:safe center;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch;width:100%;padding:22px 8px 6px}.hand .card{margin-left:-22px;flex-shrink:0}.hand .card:first-child{margin-left:0}.my-actions{display:flex;gap:12px;width:100%}.my-actions .btn{flex:1}.card{width:var(--card-w);height:var(--card-h);border-radius:var(--radius-sm);border:1px solid var(--gold-700);background:#faf3e1;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;cursor:pointer;padding:4px;box-shadow:var(--shadow-sm);transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease;animation:cardIn .22s ease-out both}.card-small{width:var(--card-small-w);height:var(--card-small-h);border-radius:5px}.card-selected{transform:translateY(-18px);box-shadow:0 0 0 3px var(--gold-500),0 6px 12px #1a0f0a73;border-color:var(--gold-300)}.card-disabled{opacity:.45;cursor:not-allowed}.card-dimmed{opacity:.35}.suit-jade{color:var(--suit-jade)}.suit-sword{color:var(--suit-sword)}.suit-pagoda{color:var(--suit-pagoda)}.suit-star{color:var(--suit-star)}.card-rank{font-size:12px;font-weight:700;font-family:"Noto Serif KR",serif;position:absolute}.card-rank-top{top:4px;left:6px}.card-rank-bottom{bottom:4px;right:6px;transform:rotate(180deg)}.card-suit{font-size:22px}.card-small .card-suit{font-size:14px}.card-small .card-rank{font-size:9px}.card-special{font-weight:700}.card-special-label{font-size:10px;margin-top:2px}.card-small .card-special-label{display:none}.card-mahjong{background:linear-gradient(160deg,#faf3e1,#2f6f5e3d);color:var(--jade-700);border-color:var(--jade-500)}.card-dog{background:linear-gradient(160deg,#faf3e1,#96731f3d);color:var(--gold-700);border-color:var(--gold-700)}.card-phoenix{background:linear-gradient(160deg,#faf3e1,#c6282833);color:#b5541a;border-color:var(--vermillion-500)}.card-dragon{background:linear-gradient(160deg,#faf3e1,#9e1f2b4d);color:var(--vermillion-600);border-color:var(--gold-500);border-width:2px}.card-back{background:linear-gradient(155deg,var(--vermillion-700) 0%,var(--ink) 100%);border:1px solid var(--gold-700)}.card-back-medallion{width:42%;height:42%;border-radius:50%;border:2px solid var(--gold-500);background:radial-gradient(circle,var(--gold-300) 0%,var(--gold-700) 75%);box-shadow:inset 0 0 0 2px #1a0f0a59;opacity:.92}.card-small .card-back-medallion{border-width:1px}@keyframes cardIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a0f0abf;display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}.modal{background:var(--panel);color:var(--paper);border:2px solid var(--gold-500);border-radius:32px 32px var(--radius-lg) var(--radius-lg);padding:30px 24px 24px;max-width:480px;width:100%;max-height:90vh;max-height:90dvh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal-title{margin:0 0 4px;color:var(--gold-300);font-family:"Noto Serif KR",serif;text-align:center}.modal-title:after{content:"";display:block;margin:10px auto 14px;width:55%;height:8px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='8' viewBox='0 0 24 8'%3E%3Cpath d='M0 7 H6 V3 H10 V7 H14 V1 H18 V7 H24' fill='none' stroke='%23d4af37' stroke-width='1.4'/%3E%3C/svg%3E");background-repeat:repeat-x;background-size:24px 8px;opacity:.85}.modal-desc{color:var(--text);font-size:14px;line-height:1.5}.modal-highlight{color:var(--gold);font-weight:700;font-size:16px}.modal-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:16px}.wish-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:12px}.wish-btn{padding:8px 0}.exchange-slots{display:flex;gap:12px;justify-content:center;margin:16px 0}.exchange-slot{background:var(--bg);border:1px dashed var(--panel-border);border-radius:10px;padding:10px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;min-width:90px}.exchange-slot.is-partner{border-color:var(--gold);border-style:solid}.exchange-slot-role{font-size:10px;color:var(--text-dim);letter-spacing:.03em}.exchange-slot.is-partner .exchange-slot-role{color:var(--gold);font-weight:700}.exchange-slot-name{font-size:12px;color:var(--text);text-align:center;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exchange-slot-card{min-height:58px;display:flex;align-items:center}.exchange-slot-empty{font-size:11px;color:var(--text-dim)}.exchange-hand{border-top:1px solid var(--panel-border);padding-top:12px}.round-end-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:13px}.round-end-table .round-end-us td{background:#e0b84b14}.round-end-table th,.round-end-table td{padding:6px 8px;border-bottom:1px solid var(--panel-border);text-align:left}.round-end-scores{margin-top:12px;font-size:14px;display:flex;flex-direction:column;gap:4px}.round-end-countdown{margin:16px 0 0;font-size:13px;color:var(--text-dim);text-align:center}.chat-panel{position:fixed;right:20px;bottom:20px;z-index:40}.chat-toggle{width:52px;height:52px;border-radius:50%;border:1px solid var(--panel-border);background:var(--panel);color:var(--paper);font-size:22px;cursor:pointer;position:relative;box-shadow:0 4px 12px #0006}.chat-unread{position:absolute;top:-4px;right:-4px;background:var(--danger);color:#fff;font-size:11px;font-weight:700;border-radius:999px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;padding:0 4px}.chat-window{width:300px;height:380px;background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 8px 24px #00000080}.chat-window-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:2px solid var(--gold-500);font-weight:600;position:relative}.chat-window-header:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:6px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='8' viewBox='0 0 24 8'%3E%3Cpath d='M0 7 H6 V3 H10 V7 H14 V1 H18 V7 H24' fill='none' stroke='%23d4af37' stroke-width='1.4'/%3E%3C/svg%3E");background-repeat:repeat-x;background-size:20px 6px;opacity:.7}.chat-close{padding:2px 8px;font-size:13px}.chat-messages{flex:1;overflow-y:auto;padding:10px 14px;display:flex;flex-direction:column;gap:6px}.chat-empty{color:var(--text-dim);font-size:13px;text-align:center;margin-top:12px}.chat-message{font-size:13px;line-height:1.4;word-break:break-word}.chat-message-nickname{color:var(--gold-dim);font-weight:600;margin-right:6px}.chat-message.mine .chat-message-nickname{color:var(--gold)}.chat-input-row{display:flex;gap:8px;padding:10px;border-top:1px solid var(--panel-border)}.chat-input{flex:1;min-width:0;letter-spacing:normal}.chat-send{padding:8px 14px;font-size:13px}.toast{position:fixed;bottom:calc(96px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--vermillion-600);color:var(--gold-300);border:1px solid var(--gold-500);padding:10px 20px;border-radius:var(--radius-pill);font-size:14px;box-shadow:var(--shadow-md);z-index:100;max-width:calc(100vw - 32px);text-align:center}.profile-chip{display:inline-flex;align-items:center;gap:8px;padding:3px 10px;border-radius:999px;background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);font-size:12px;white-space:nowrap}.profile-chip-level{font-weight:700;color:var(--gold)}.profile-chip-rating{color:var(--text-dim)}.profile-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:160px;background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);padding:4px 0;z-index:100;box-shadow:0 8px 24px #0006}.profile-dropdown-item{display:block;width:100%;padding:8px 16px;background:none;border:none;color:var(--paper);font-size:14px;text-align:left;cursor:pointer;white-space:nowrap}.profile-dropdown-item:hover{background:#ffffff1a}.profile-dropdown-danger{color:var(--danger)}.profile-dropdown-divider{height:1px;background:var(--panel-border);margin:4px 0}.create-room-radio.is-disabled{opacity:.5;cursor:not-allowed}.create-room-hint{margin:-6px 0 0;font-size:12px;color:var(--text-dim);text-align:left}.shop-section{margin-top:12px}.shop-section-title{font-size:15px;font-weight:700;margin:0 0 4px;color:var(--gold)}.shop-section-desc{font-size:13px;color:var(--text-dim);margin:0 0 12px}.shop-nickname-row{display:flex;gap:8px;align-items:center}.shop-nickname-input{flex:1;min-width:0}.shop-items{display:flex;flex-direction:column;gap:8px}.shop-item{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius)}.shop-item-emoji{font-size:24px;flex-shrink:0}.shop-item-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.shop-item-name{font-size:14px;font-weight:600}.shop-item-desc{font-size:12px;color:var(--text-dim)}.shop-item-price{font-size:14px;font-weight:700;color:var(--gold);white-space:nowrap}.shop-item-owned{border-color:var(--gold-dim)}.shop-item-status{font-size:13px;font-weight:600;color:#6fd28a;white-space:nowrap}.shop-item-admin{color:var(--gold)}.shop-divider{height:1px;background:var(--panel-border);margin:16px 0 4px}.shop-account{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px;background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius)}.shop-account-label{font-size:13px;color:var(--text-dim)}.shop-account-number{font-size:20px;font-weight:700;letter-spacing:1px;font-variant-numeric:tabular-nums}.shop-account-name{font-size:13px;color:var(--text-dim)}.shop-item-clickable{cursor:pointer;transition:background .15s}.shop-item-clickable:hover{background:#ffffff0f}.shop-request-item{display:flex;align-items:center;gap:12px;padding:12px;background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);margin-bottom:12px}.shop-request-item-emoji{font-size:28px}.shop-request-item-name{font-weight:600;font-size:14px}.shop-request-item-price{font-size:13px;color:var(--text-dim)}.shop-request-account{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px;background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);margin-bottom:12px}.shop-request-account-title{font-size:12px;font-weight:600;color:var(--text-dim);margin-bottom:4px}.shop-request-msg-section{margin-bottom:12px}.shop-request-label{display:block;font-size:12px;font-weight:600;color:var(--text-dim);margin-bottom:4px}.shop-request-textarea{width:100%;resize:none;box-sizing:border-box}.shop-request-done{text-align:center;padding:16px 0}.shop-request-done-icon{font-size:36px;margin-bottom:8px}.shop-request-done p{margin:4px 0;font-size:14px}.shop-request-done-sub{color:var(--text-dim);font-size:13px}.special-card-counts{display:flex;gap:12px;justify-content:center;font-size:13px;color:var(--text-dim);margin-top:6px}.special-card-count{display:inline-flex;align-items:center;gap:3px;font-variant-numeric:tabular-nums;font-weight:600;color:var(--text)}.lobby-ranked{color:var(--gold);font-weight:600}.lobby-seat-progress{font-size:12px;color:var(--text-dim)}.ranking-shell{position:relative;max-width:880px;margin:0 auto;padding:24px 16px 48px;display:flex;flex-direction:column;gap:20px}.ranking-shell:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background-image:url(/bg-grand-wall.jpg);background-size:cover;background-position:center top;pointer-events:none}.ranking-header{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:10px;border-bottom:2px solid var(--gold-500);position:relative}.ranking-header:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:6px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='8' viewBox='0 0 24 8'%3E%3Cpath d='M0 7 H6 V3 H10 V7 H14 V1 H18 V7 H24' fill='none' stroke='%23d4af37' stroke-width='1.4'/%3E%3C/svg%3E");background-repeat:repeat-x;background-size:20px 6px;opacity:.7}.ranking-header .home-title{margin:0;flex:1;text-shadow:0 2px 6px rgba(26,15,10,.6)}.ranking-header .btn-ghost{text-shadow:0 1px 4px rgba(26,15,10,.6);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.ranking-season-select{width:auto;min-width:160px}.ranking-section-title{margin:0;font-size:15px;color:var(--text-dim-on-panel);font-weight:600}.profile-card{background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:18px}.profile-card-main{display:flex;align-items:center;gap:14px}.profile-card-avatar{width:52px;height:52px;border-radius:50%;object-fit:cover;flex-shrink:0}.profile-card-identity{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.profile-card-name{font-size:17px;font-weight:700}.profile-card-name-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.profile-nickname-change{padding:2px 8px;font-size:12px}.profile-nickname-edit{display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%}.profile-nickname-input{flex:1;min-width:120px;max-width:220px}.profile-nickname-hint{margin:0;font-size:11px;color:var(--text-dim-on-panel)}.profile-card-level{display:flex;align-items:center;gap:10px;font-size:12px}.profile-card-level-label{color:var(--gold);font-weight:700;white-space:nowrap}.xp-bar{flex:1;min-width:80px;height:8px;border-radius:999px;background:var(--bg);border:1px solid var(--panel-border);overflow:hidden}.xp-bar-fill{height:100%;background:linear-gradient(90deg,var(--felt-light),var(--gold));transition:width .3s ease}.profile-card-xp{color:var(--text-dim-on-panel);white-space:nowrap}.profile-card-hint{margin:0;font-size:12px;color:var(--text-dim-on-panel)}.profile-card-titles{display:flex;flex-direction:column;gap:8px;padding:10px 0;border-top:1px solid var(--panel-border);border-bottom:1px solid var(--panel-border)}.profile-card-titles-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.profile-titles-toggle{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim-on-panel);cursor:pointer}.profile-title-list{display:flex;flex-wrap:wrap;gap:6px}.profile-card-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.profile-stat{display:flex;flex-direction:column;gap:3px;align-items:center;padding:10px 4px;background:var(--bg);border-radius:var(--radius)}.profile-stat-label{font-size:11px;color:var(--text-dim)}.profile-stat-value{font-size:14px;font-weight:700}.profile-recent-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.recent-item{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--bg);border-radius:var(--radius);border-left:3px solid var(--panel-border);font-size:13px}.recent-item.is-win{border-left-color:var(--gold)}.recent-item.is-loss{border-left-color:var(--danger)}.recent-outcome{font-weight:700;width:24px;flex-shrink:0}.recent-mode{color:var(--text-dim);font-size:12px;flex-shrink:0}.recent-room{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-dim)}.recent-score{font-variant-numeric:tabular-nums;flex-shrink:0}.recent-delta{display:flex;gap:8px;flex-shrink:0}.recent-xp{color:var(--text-dim);font-size:12px}.delta-up{color:var(--gold);font-weight:700}.delta-down{color:var(--danger);font-weight:700}.ranking-board{background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);padding:18px}.ranking-board-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}.ranking-count{font-size:12px;color:var(--text-dim-on-panel)}.ranking-empty{text-align:center;color:var(--text-dim-on-panel);padding:28px 0;margin:0}.ranking-table-wrap{overflow-x:auto}.ranking-table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}.ranking-table th{text-align:left;font-weight:600;color:var(--text-dim-on-panel);font-size:12px;padding:6px 10px;border-bottom:1px solid var(--panel-border)}.ranking-table td{padding:10px;border-bottom:1px solid var(--panel-border)}.ranking-row.is-me{background:#e0b84b1a}.ranking-row.is-me .ranking-nickname{color:var(--gold);font-weight:700}.ranking-gap td{text-align:center;color:var(--text-dim-on-panel);padding:4px}.ranking-rank{font-weight:700;font-variant-numeric:tabular-nums}.ranking-player{display:flex;align-items:center;gap:8px}.ranking-avatar{width:26px;height:26px;border-radius:50%;object-fit:cover;flex-shrink:0}.ranking-avatar-fallback{display:flex;align-items:center;justify-content:center;background:var(--panel-border);font-size:12px;font-weight:700}.ranking-rating{font-weight:700;font-variant-numeric:tabular-nums}.ranking-peak{display:block;font-size:11px;color:var(--text-dim-on-panel)}.ranking-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px;font-size:13px;color:var(--text-dim-on-panel)}.result-block{margin-top:14px;border-top:1px solid var(--panel-border);padding-top:14px}.result-mode{font-size:12px;color:var(--text-dim);margin-bottom:8px}.result-table{width:100%;border-collapse:collapse;font-size:13px}.result-table td{padding:6px 4px;text-align:left}.result-row.is-win .result-name{color:var(--gold);font-weight:700}.result-rating{font-variant-numeric:tabular-nums;text-align:right}.result-xp{text-align:right;color:var(--text-dim);white-space:nowrap}.result-levelup{margin:10px 0 0;font-size:13px;color:var(--gold)}.result-unlock{color:var(--paper)}.chat-report-btn{background:none;border:none;font-size:11px;cursor:pointer;opacity:0;transition:opacity .15s ease;padding:0 2px;line-height:1}.chat-message:hover .chat-report-btn{opacity:.5}.chat-report-btn:hover{opacity:1!important}.report-target{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--bg);border-radius:var(--radius);margin-bottom:14px;font-size:13px}.report-target-nickname{color:var(--gold-dim);font-weight:600}.report-target-text{color:var(--text-dim);word-break:break-word}.report-reasons{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.report-reason{display:flex;align-items:center;gap:4px;padding:6px 14px;border:1px solid var(--panel-border);border-radius:999px;font-size:13px;cursor:pointer;transition:all .15s ease}.report-reason.selected{background:var(--gold);border-color:var(--gold);color:var(--ink);font-weight:600}.report-reason input{display:none}.report-custom-input{width:100%;margin-bottom:14px}.admin-shell{flex:1;display:flex;flex-direction:column;gap:16px;padding:24px;max-width:800px;width:100%;margin:0 auto}.admin-header{display:flex;align-items:center;gap:12px}.admin-title{font-size:24px;color:var(--gold);margin:0}.admin-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.admin-stat-card{background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);padding:14px;text-align:center}.admin-stat-value{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums}.admin-stat-label{font-size:12px;color:var(--text-dim);margin-top:4px}.admin-tabs{display:flex;gap:4px;border-bottom:1px solid var(--panel-border);padding-bottom:0}.admin-tab{background:none;border:none;color:var(--text-dim);padding:10px 18px;font-size:14px;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s ease}.admin-tab.active{color:var(--gold);border-bottom-color:var(--gold)}.admin-panel{display:flex;flex-direction:column;gap:12px}.admin-filter-row{display:flex;gap:6px;flex-wrap:wrap}.admin-filter-btn{border:1px solid var(--panel-border);background:transparent;color:var(--text-dim);border-radius:999px;padding:5px 14px;font-size:13px;cursor:pointer;transition:all .15s ease}.admin-filter-btn.active{background:var(--gold);border-color:var(--gold);color:var(--ink);font-weight:600}.admin-search-row{display:flex;gap:8px}.admin-search-input{flex:1;letter-spacing:normal}.admin-list{display:flex;flex-direction:column;gap:8px}.admin-empty{text-align:center;color:var(--text-dim);padding:32px 0}.admin-report-card{background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:10px}.admin-report-header{display:flex;justify-content:space-between;align-items:center}.admin-report-status{font-size:13px;font-weight:700}.admin-report-time{font-size:12px;color:var(--text-dim)}.admin-report-body{display:flex;flex-direction:column;gap:6px}.admin-report-users{display:flex;align-items:center;gap:8px;font-size:14px}.admin-report-reporter{color:var(--text-dim)}.admin-report-arrow{color:var(--text-dim);font-size:12px}.admin-report-reported{font-weight:600;color:var(--gold)}.admin-report-reason,.admin-report-message{font-size:13px;color:var(--text-dim);line-height:1.4}.admin-report-message{font-style:italic}.admin-report-actions{display:flex;gap:6px;justify-content:flex-end;border-top:1px solid var(--panel-border);padding-top:10px}.btn-sm{padding:6px 14px;font-size:12px}.btn-xs{padding:3px 8px;font-size:11px}.admin-user-card{background:var(--panel);color:var(--paper);border:1px solid var(--panel-border);border-radius:var(--radius);padding:12px 14px;cursor:pointer;transition:border-color .15s ease,background .15s ease}.admin-user-card:hover{border-color:var(--gold-dim);background:#1c2d3a}.admin-user-main{display:flex;align-items:center;gap:10px}.admin-user-avatar{width:32px;height:32px;border-radius:50%}.admin-user-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.admin-user-name{font-weight:600;font-size:14px}.admin-user-id{font-size:11px;color:var(--text-dim)}.admin-user-badges{display:flex;gap:6px;align-items:center}.admin-user-level{font-size:13px;font-weight:700;color:var(--gold)}.badge-warning{background:var(--gold);color:var(--ink);font-weight:600}.badge-ban{background:var(--danger);color:#fff;font-weight:600}.admin-user-meta{display:flex;gap:16px;font-size:12px;color:var(--text-dim);margin-top:6px;padding-left:42px}.admin-detail{display:flex;flex-direction:column;gap:14px}.admin-detail-user{display:flex;align-items:center;gap:12px}.admin-detail-avatar{width:44px;height:44px;border-radius:50%}.admin-detail-name{font-size:17px;font-weight:700}.admin-detail-id{font-size:12px;color:var(--text-dim)}.admin-detail-stats{display:flex;gap:16px;font-size:13px;color:var(--text-dim)}.admin-detail-actions{display:flex;gap:8px;border-top:1px solid var(--panel-border);padding-top:12px}.btn-tichu{background:var(--red);color:#fff}.admin-shop-section{border-top:1px solid var(--panel-border);padding-top:12px}.admin-shop-title{font-size:13px;font-weight:600;color:var(--text-dim);margin-bottom:8px}.admin-shop-list{display:flex;flex-direction:column;gap:6px}.admin-shop-item{display:flex;align-items:center;justify-content:space-between;padding:6px 0;font-size:12px;border-bottom:1px solid var(--panel-border)}.admin-shop-item:last-child{border-bottom:none}.admin-shop-item-label{color:var(--paper)}.admin-request-card{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--panel-border)}.admin-request-card:last-child{border-bottom:none}.admin-request-main{flex:1;min-width:0}.admin-request-info{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.admin-request-nick{font-weight:600;font-size:13px}.admin-request-item{font-size:12px;color:var(--text-dim)}.admin-request-meta{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text-dim);margin-top:2px}.admin-request-msg{font-style:italic;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-request-actions{margin-left:8px}.admin-request-review-row{display:flex;align-items:center;gap:6px}.admin-request-note-input{width:120px;font-size:12px;padding:4px 8px}.admin-penalty-list{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--panel-border);padding-top:12px}.admin-penalty-title{font-size:13px;font-weight:600;color:var(--text-dim)}.admin-penalty-row{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:12px;border-bottom:1px solid var(--panel-border)}.admin-penalty-reason{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-penalty-by,.admin-penalty-time{color:var(--text-dim);white-space:nowrap}.admin-penalty-form{border-top:1px solid var(--panel-border);padding-top:14px;margin-top:12px;display:flex;flex-direction:column;gap:10px}.admin-penalty-form-title{font-size:14px;font-weight:600;color:var(--gold)}.admin-ban-duration{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-dim)}.admin-ban-input{width:80px;text-align:center}.admin-pagination{display:flex;align-items:center;justify-content:center;gap:14px;font-size:13px;color:var(--text-dim);padding-top:8px}@media (max-width: 720px){.ranking-shell{padding:16px 12px 32px}.profile-card-stats{grid-template-columns:repeat(3,1fr)}.ranking-header .home-title{order:-1;flex-basis:100%}.recent-room{display:none}.btn{padding:11px 18px}.board-shell{padding:56px 12px 16px;gap:12px}.home-profile{right:12px;font-size:12px;gap:6px}.board-header-row{gap:8px}.home-join,.home-join .input{flex:1;min-width:0}.board-row{grid-template-columns:auto 1fr auto;grid-template-areas:"badge name btn" "host  host  count";row-gap:8px;padding:10px 12px}.board-row-host,.board-row-count{font-size:12px}.lobby-shell{padding:16px}.lobby-seats{gap:10px}.lobby-seat{padding:12px;min-height:96px}.kick-vote-banner{flex-wrap:wrap}.lobby-actions{flex-wrap:wrap;justify-content:center}.modal-overlay{padding:10px}.modal{padding:16px;border-radius:12px}.wish-grid{gap:4px}.exchange-slots{gap:8px}.exchange-slot{min-width:76px;padding:8px}.chat-panel{right:12px;bottom:12px}.chat-window{width:min(300px,calc(100vw - 24px));height:min(380px,calc(100dvh - 96px))}.shop-account-number{font-size:16px}.special-card-counts{gap:8px;font-size:12px}.admin-shell{padding:16px 12px}.admin-stats{grid-template-columns:repeat(2,1fr)}.admin-user-meta{padding-left:0;flex-wrap:wrap;gap:8px}}@media (max-width: 380px){.login-title,.home-title{font-size:26px}.hand .card{margin-left:-16px}.seat-cards{--seat-card-step: 3px}}
