:root{
  color-scheme:dark;
  --bg:#070907;
  --bg-soft:#0b0e0c;
  --surface:#111511;
  --surface-2:#171b16;
  --surface-3:#1d221b;
  --felt:#123d2e;
  --felt-2:#0d2e23;
  --felt-3:#071e17;
  --gold:#c9aa69;
  --gold-2:#e2c98e;
  --gold-3:#8b6c35;
  --cream:#f3eee2;
  --text:#f2f1eb;
  --muted:#93978f;
  --muted-2:#636860;
  --line:rgba(220,196,139,.11);
  --line-strong:rgba(220,196,139,.24);
  --safe:#78c79a;
  --danger:#dc7e75;
  --shadow:0 24px 80px rgba(0,0,0,.46);
  --radius-xl:28px;
  --radius-lg:22px;
  --radius-md:16px;
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Display","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
}
*{box-sizing:border-box}
html{background:#050705;scroll-behavior:smooth}
body{margin:0;min-height:100vh;color:var(--text);font:14px/1.5 var(--font);background:
  radial-gradient(circle at 50% -10%,rgba(69,78,48,.18),transparent 32%),
  linear-gradient(180deg,#080b08,#050705 64%);overscroll-behavior:none}
button,input,select{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}input,select{outline:none}button:disabled{opacity:.42;cursor:not-allowed}h1,h2,h3,p{margin:0}.hidden{display:none!important}
button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gold-2);outline-offset:2px}
.eyebrow{display:block;color:var(--gold);font-size:9px;font-weight:800;letter-spacing:1.8px;text-transform:uppercase}
.panel{background:linear-gradient(145deg,rgba(22,26,21,.98),rgba(13,16,13,.98));border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.app-shell{position:relative;max-width:520px;min-height:100vh;margin:0 auto;overflow:hidden;background:
  radial-gradient(circle at 100% 18%,rgba(37,75,56,.10),transparent 28%),
  linear-gradient(180deg,#0b0e0b 0,#080a08 100%);border-inline:1px solid rgba(255,255,255,.015)}
.app-shell:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.15;background-image:linear-gradient(rgba(255,255,255,.012) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.01) 1px,transparent 1px);background-size:32px 32px;mask-image:linear-gradient(#000,transparent 80%)}

/* top bar */
.topbar{position:sticky;top:0;z-index:40;height:70px;padding:env(safe-area-inset-top) 15px 0;box-sizing:content-box;display:flex;align-items:center;justify-content:space-between;gap:12px;background:linear-gradient(180deg,rgba(8,11,8,.985) 0,rgba(8,11,8,.90) 72%,rgba(8,11,8,0));backdrop-filter:blur(18px)}
.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-mark{width:38px;height:38px;border-radius:12px;position:relative;display:grid;place-items:center;background:linear-gradient(145deg,#1f241c,#0d100d);border:1px solid var(--line-strong);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 8px 24px rgba(0,0,0,.22)}.brand-mark:after{content:"";position:absolute;inset:4px;border-radius:9px;border:1px solid rgba(201,170,105,.12)}.brand-mark i{font-style:normal;font:24px/.8 Georgia,serif;color:#030504;text-shadow:0 0 0.8px var(--gold-2),0 2px 12px rgba(201,170,105,.18)}.brand-copy{min-width:0;display:flex;flex-direction:column;line-height:1.1}.brand-copy strong{font-size:14px;letter-spacing:.3px;font-weight:800;white-space:nowrap}.brand-copy small{margin-top:5px;color:#656a62;font-size:7px;letter-spacing:1.35px;white-space:nowrap}
.balance-pill{height:42px;min-width:118px;padding:0 7px 0 10px;display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,#161a15,#0d100d);box-shadow:inset 0 1px rgba(255,255,255,.03),0 8px 24px rgba(0,0,0,.16)}.balance-copy{display:flex;flex:1;min-width:0;flex-direction:column;align-items:flex-start;line-height:1.05}.balance-copy small{font-size:7px;color:#71766e;letter-spacing:.7px}.balance-copy strong{margin-top:3px;font-size:13px;color:#e7d29f;font-weight:800;font-variant-numeric:tabular-nums}.plus{width:24px;height:24px;display:grid;place-items:center;border-radius:8px;background:#242419;color:var(--gold-2);font-weight:800;border:1px solid var(--line-strong)}.coin-stack{position:relative;width:17px;height:20px}.coin-stack i{position:absolute;left:1px;width:14px;height:6px;border-radius:50%;background:linear-gradient(180deg,#dfc582,#9b763d);border:1px solid #eddbad}.coin-stack i:nth-child(1){bottom:1px}.coin-stack i:nth-child(2){bottom:5px}.coin-stack i:nth-child(3){bottom:9px}
.main-content{position:relative;padding:6px 14px calc(104px + env(safe-area-inset-bottom))}.route{display:none;animation:routeIn .22s ease}.route.active{display:block}@keyframes routeIn{from{opacity:.15;transform:translateY(5px)}to{opacity:1;transform:none}}

/* home hero */
.hero-card{position:relative;min-height:314px;padding:20px 19px 18px;overflow:hidden;border-radius:30px;border:1px solid rgba(218,192,132,.20);background:
  radial-gradient(circle at 86% 45%,rgba(27,92,66,.45),transparent 29%),
  radial-gradient(circle at 12% 0%,rgba(201,170,105,.09),transparent 28%),
  linear-gradient(145deg,#161a14 0,#0c1510 48%,#09261d 100%);box-shadow:0 28px 90px rgba(0,0,0,.35),inset 0 1px rgba(255,255,255,.025)}
.hero-noise{position:absolute;inset:0;opacity:.19;pointer-events:none;background-image:radial-gradient(rgba(255,255,255,.055) .55px,transparent .55px);background-size:5px 5px;mask-image:linear-gradient(135deg,#000,transparent 74%)}
.hero-card:after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.015);pointer-events:none}
.hero-topline{position:relative;z-index:4;display:flex;align-items:center;justify-content:space-between}.club-tag{padding:5px 8px;border-radius:8px;border:1px solid rgba(201,170,105,.18);color:#a78d59;font-size:8px;font-weight:800;letter-spacing:1.5px;background:rgba(7,11,8,.28)}.hero-status{display:flex;align-items:center;gap:6px;color:#8e998f;font-size:9px}.hero-status i{width:6px;height:6px;border-radius:50%;background:#62ba87;box-shadow:0 0 0 3px rgba(98,186,135,.10),0 0 12px rgba(98,186,135,.5)}
.hero-copy{position:relative;z-index:5;width:67%;padding-top:24px}.hero-copy h1{margin:7px 0 10px;font-family:"Songti SC",Georgia,serif;font-size:35px;line-height:1.03;font-weight:700;letter-spacing:-1px}.hero-copy h1 em{font-style:normal;color:#ead49c}.hero-copy p{max-width:270px;color:#9ca39a;font-size:11px;line-height:1.65}.hero-actions{display:flex;gap:8px;margin-top:18px}.hero-actions .gold-btn,.hero-actions .ghost-btn{height:39px;padding:0 12px;font-size:11px}.hero-actions .gold-btn span{font-size:15px;margin-right:2px}.hero-actions .ghost-btn b{margin-left:6px;font-weight:600}
.hero-emblem{position:absolute;z-index:2;right:20px;top:72px;width:122px;height:146px;display:flex;align-items:center;justify-content:center}.hero-emblem:before{content:"";position:absolute;inset:5px 0 14px;border-radius:50%;background:radial-gradient(circle,#183b2d 0,#0b251c 62%,#081912 100%);border:1px solid rgba(201,170,105,.18);box-shadow:inset 0 0 35px rgba(0,0,0,.58),0 16px 34px rgba(0,0,0,.22)}.hero-emblem:after{content:"";position:absolute;inset:14px 8px 23px;border-radius:50%;border:1px solid rgba(220,196,139,.08)}.hero-spade{position:relative;z-index:2;margin-top:-1px;font:96px/.7 Georgia,serif;color:#020403;text-shadow:0 0 1px #d2b778,0 12px 30px rgba(0,0,0,.64)}.hero-emblem small{position:absolute;z-index:3;bottom:3px;letter-spacing:4px;color:#7a6843;font:700 7px/1 var(--font)}.hero-orbit{position:absolute;border-radius:50%;border:1px solid rgba(201,170,105,.07);pointer-events:none}.orbit-a{right:-37px;top:48px;width:210px;height:210px}.orbit-b{right:-2px;top:82px;width:141px;height:141px}
.hero-stats{position:absolute;z-index:5;left:18px;right:18px;bottom:15px;height:49px;border-top:1px solid rgba(255,255,255,.055);display:grid;grid-template-columns:repeat(3,1fr);align-items:end}.hero-stats span{display:flex;flex-direction:column;gap:2px;padding-left:10px;border-left:1px solid rgba(255,255,255,.045)}.hero-stats span:first-child{padding-left:0;border-left:0}.hero-stats b{font-size:10px;color:#d7c087;letter-spacing:.8px}.hero-stats small{font-size:8px;color:#70776f}
.gold-btn,.ghost-btn,.outline-btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;border-radius:13px;padding:0 16px;font-weight:800;transition:transform .15s ease,filter .15s ease,border-color .15s ease}.gold-btn{color:#17130b;background:linear-gradient(180deg,#e5cc91,#b7904f);border:1px solid #e9d6aa;box-shadow:inset 0 1px rgba(255,255,255,.55),0 8px 24px rgba(169,130,63,.10)}.gold-btn:active{transform:translateY(1px);filter:brightness(.92)}.ghost-btn,.outline-btn{color:#c4a86d;background:rgba(201,170,105,.025);border:1px solid rgba(201,170,105,.24)}.compact{min-height:34px;padding:0 12px;font-size:11px}

/* quick actions */
.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0 4px}.quick-card{min-height:84px;padding:10px 8px;border:1px solid rgba(255,255,255,.045);border-radius:18px;background:linear-gradient(145deg,#141814,#0d100d);display:flex;flex-direction:column;align-items:flex-start;text-align:left;position:relative;overflow:hidden}.quick-card:after{content:"";position:absolute;width:50px;height:50px;border-radius:50%;right:-20px;top:-22px;background:rgba(201,170,105,.035)}.quick-card .quick-icon{width:29px;height:29px;display:grid;place-items:center;border-radius:10px;background:#1c211a;border:1px solid var(--line);color:#c7aa6d;font-size:13px}.quick-card>span:nth-child(2){display:flex;flex-direction:column;margin-top:8px;min-width:0}.quick-card strong{font-size:11px}.quick-card small{margin-top:1px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#666d65;font-size:8px}.quick-card>b{position:absolute;right:8px;bottom:8px;color:#82704d;font-size:8px;font-weight:700}.daily-quick{background:linear-gradient(145deg,#1b1b13,#10120e);border-color:rgba(201,170,105,.13)}
.section-heading{margin:25px 2px 11px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.section-heading>div{display:flex;flex-direction:column;gap:3px}.section-heading h2{font-size:18px;letter-spacing:-.25px}.section-heading>button{padding:0 0 3px;color:#777d76;font-size:9px}.section-note{padding-bottom:3px;color:#71766f;font-size:9px}

/* game cards */
.game-grid{display:grid;grid-template-columns:1.12fr .88fr;gap:9px}.game-card{position:relative;min-width:0;overflow:hidden;border:1px solid rgba(255,255,255,.05);border-radius:22px;background:#111510;box-shadow:0 14px 38px rgba(0,0,0,.16)}.game-art{position:relative;height:132px;overflow:hidden}.poker-art{background:radial-gradient(circle at 63% 45%,rgba(39,115,82,.54),transparent 30%),linear-gradient(145deg,#16170f,#09261c)}.poker-art:before{content:"";position:absolute;left:12px;right:-20px;bottom:-72px;height:150px;border-radius:50%;background:linear-gradient(180deg,#164936,#0b281e);border:10px solid rgba(8,10,8,.45);box-shadow:0 0 0 1px rgba(201,170,105,.16),inset 0 0 30px rgba(0,0,0,.25)}.poker-art:after{content:"PRIVATE";position:absolute;right:9px;top:9px;color:rgba(225,207,162,.25);font-size:6px;letter-spacing:1.5px}.poker-art .ace{position:absolute;z-index:3;left:17px;top:14px;font:italic 700 63px/.9 Georgia,serif;color:#e1cb95;text-shadow:0 8px 26px #000}.poker-art .spade{position:absolute;z-index:4;left:59px;top:30px;font:51px/.75 Georgia,serif;color:#020403;text-shadow:0 0 1px #bca268}.chip{position:absolute;z-index:5;width:34px;height:34px;border-radius:50%;border:4px dashed rgba(255,255,255,.55);box-shadow:0 5px 12px rgba(0,0,0,.45)}.chip:after{content:"";position:absolute;inset:5px;border-radius:50%;border:1px solid rgba(255,255,255,.45)}.chip.c1{right:35px;bottom:15px;background:#a14a40;transform:rotate(12deg)}.chip.c2{right:15px;bottom:31px;background:#9c7c43;transform:rotate(-9deg)}
.mahjong-art{background:radial-gradient(circle at 45% 40%,rgba(91,80,47,.34),transparent 34%),linear-gradient(150deg,#191b15,#0d1712)}.mj{position:absolute;width:48px;height:64px;border-radius:7px 7px 10px 10px;background:linear-gradient(155deg,#eee7d2,#cfc3a4);display:grid;place-items:center;color:#236847;font:700 25px/1 "Songti SC",serif;border:1px solid #efe5c8;box-shadow:0 9px 18px rgba(0,0,0,.34),inset -5px -5px rgba(88,70,43,.08)}.mj.m1{left:16px;top:32px;transform:rotate(-11deg)}.mj.m2{left:53px;top:21px;color:#9e3d37;z-index:2}.mj.m3{left:89px;top:34px;transform:rotate(10deg)}
.game-info{min-height:82px;padding:12px 12px 13px;display:flex;align-items:center;justify-content:space-between;gap:6px;background:linear-gradient(180deg,#131712,#0f120f)}.game-info>div{min-width:0}.game-info .pill{display:inline-block;padding:2px 6px;border-radius:6px;border:1px solid rgba(201,170,105,.15);color:#9a824f;font-size:6px;letter-spacing:1px}.game-info h3{margin:4px 0 2px;font-size:15px}.game-info p{color:#666d65;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.round-arrow{flex:0 0 auto;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:#1c211a;color:#b99d64;border:1px solid var(--line);font-size:15px}.mahjong-card .game-info{padding-inline:10px}.mahjong-card .round-arrow{display:none}.mahjong-card .game-info h3{font-size:14px}.mahjong-card .game-info p{white-space:normal;line-height:1.3}

/* lobby tiers */
.tier-list{display:grid;gap:8px}.tier-card{min-height:66px;padding:10px 10px 10px 13px;border-radius:17px;border:1px solid rgba(255,255,255,.045);background:linear-gradient(145deg,#131713,#0d100d);display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px}.tier-title{display:flex;align-items:center;gap:7px}.tier-badge{display:inline-flex;align-items:center;min-height:20px;padding:0 7px;border-radius:7px;background:#242218;color:#bea363;border:1px solid rgba(201,170,105,.12);font-size:8px;font-weight:800}.tier-card h3{font-size:12px}.tier-card p{margin-top:3px;color:#686e67;font-size:8px}.tier-actions{display:flex;gap:5px}.tier-actions button{height:32px;min-width:48px;padding:0 8px;border-radius:10px;border:1px solid var(--line);background:#171b16;color:#a68c59;font-size:8px}.tier-actions button.primary{color:#17130b;background:linear-gradient(180deg,#d9bf83,#a98349);font-weight:800;border-color:#d1b879}.notice-card{margin:14px 0 0;padding:10px 11px;display:flex;gap:8px;align-items:flex-start;border-radius:14px;border:1px solid rgba(103,167,128,.12);background:rgba(19,62,46,.12);color:#7e8c82;font-size:9px}.notice-icon{width:18px;height:18px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(105,190,143,.23);color:#76b993;font-size:9px}

/* general pages */
.page-title{min-height:112px;padding:18px 4px 18px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.page-title h1{margin:3px 0 5px;font-size:29px;letter-spacing:-1px}.page-title p{max-width:300px;color:#7b8179;font-size:10px}.friends-title{position:relative}.friends-title:after{content:"♠";position:absolute;right:58px;top:4px;color:#0c120e;font:92px/1 Georgia;z-index:-1;text-shadow:0 0 1px rgba(201,170,105,.12)}.icon-btn{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;border:1px solid var(--line);background:#141814;color:#aaa07d;font-size:18px}.icon-btn.danger{color:#d5847d;border-color:rgba(220,126,117,.20)}.create-fab{background:linear-gradient(145deg,#d8bd7f,#a98349);color:#15110b;border-color:#e0cb9b;box-shadow:0 10px 26px rgba(180,142,75,.14)}
.active-room-card{margin-bottom:11px;padding:14px;border-radius:20px;border:1px solid rgba(104,188,143,.18);background:linear-gradient(145deg,rgba(20,62,47,.42),rgba(13,24,18,.9))}.ar-top{display:flex;align-items:flex-start;justify-content:space-between}.ar-top h3{margin-top:3px;font-size:15px}.active-room-card>p{margin:7px 0 11px;color:#7e8b82;font-size:9px}.active-room-card>.gold-btn{width:100%;height:38px;font-size:10px}
.join-panel{padding:15px}.premium-join{position:relative;overflow:hidden;background:radial-gradient(circle at 100% 0,rgba(201,170,105,.07),transparent 32%),linear-gradient(145deg,#171b15,#0e120f)}.premium-join:after{content:"#";position:absolute;right:14px;top:-23px;color:rgba(201,170,105,.035);font:900 100px/1 Georgia}.panel-title{position:relative;z-index:2;display:flex;align-items:center;gap:10px}.panel-title h2{font-size:14px}.panel-title p{margin-top:2px;color:#70776f;font-size:9px}.panel-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#22231a;color:#c3a867;border:1px solid var(--line);font-weight:800}.join-row{position:relative;z-index:2;display:grid;grid-template-columns:1fr 76px;gap:7px;margin-top:13px}.join-row input,.field-label input,.form-grid input,.form-grid select{width:100%;height:43px;padding:0 12px;border-radius:12px;border:1px solid rgba(255,255,255,.065);background:#0a0d0a;color:#eee9dc;font-size:12px}.join-row input{text-transform:uppercase;letter-spacing:2px;font-weight:800}.join-row input::placeholder{letter-spacing:0;color:#4f554f;font-weight:500}.join-row .gold-btn{height:43px;padding:0 12px}
.friend-game-list{display:grid;gap:8px}.friend-game{min-height:72px;padding:10px 11px;display:grid;grid-template-columns:50px 1fr auto;align-items:center;gap:10px;text-align:left;border-radius:17px;border:1px solid rgba(255,255,255,.05);background:linear-gradient(145deg,#141814,#0d100d)}.friend-game .fg-art{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,#1b2c22,#0d1712);border:1px solid rgba(201,170,105,.12);color:#dbc486;font:700 22px/1 Georgia}.mahjong-mini .fg-art{background:linear-gradient(145deg,#ebe2c9,#c9bd9d);color:#276847;font-family:"Songti SC",serif}.friend-game>span:nth-child(2){display:flex;flex-direction:column;min-width:0}.friend-game strong{font-size:12px}.friend-game small{margin-top:2px;color:#666d65;font-size:8px}.friend-game>b{color:#947c50;font-size:9px}.rules-card{margin-top:12px;padding:14px}.rules-card h3{font-size:12px}.rules-card p{margin-top:5px;color:#727970;font-size:9px;line-height:1.65}

/* tasks/profile/rank */
.reward-hero{min-height:116px;padding:17px;display:flex;align-items:center;justify-content:space-between;gap:14px;background:radial-gradient(circle at 85% 40%,rgba(201,170,105,.12),transparent 28%),linear-gradient(145deg,#181a12,#0f130f)}.reward-hero h2{margin:4px 0;font-size:18px}.reward-hero p{color:#767d75;font-size:9px}.relief-card{margin-top:9px;padding:13px;display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:9px}.relief-icon{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;background:#18251d;color:#75ba90;border:1px solid rgba(100,179,134,.14);font-size:18px}.relief-copy h3{font-size:12px}.relief-copy p{margin-top:2px;color:#6e756d;font-size:8px}.task-list{display:grid;gap:7px}.task-item{min-height:74px;padding:10px;border-radius:16px;border:1px solid rgba(255,255,255,.045);background:#101410;display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.task-icon{display:none}.task-copy h3{font-size:11px}.task-copy p{margin-top:2px;color:#666d65;font-size:8px}.task-progress{height:3px;margin-top:8px;border-radius:4px;background:#252b24;overflow:hidden}.task-progress i{display:block;height:100%;background:linear-gradient(90deg,#7e6438,#d0b477)}.task-right{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.task-right strong{font-size:9px;color:#c9af72}.task-right small{font-size:7px;color:#626861}.task-right button{height:26px;min-width:51px;border-radius:8px;border:1px solid var(--line);color:#786d53;font-size:8px}.task-right button.claimable{color:#17130b;background:#c4a661;border-color:#d4bd83;font-weight:800}
.profile-card{padding:16px;display:grid;grid-template-columns:58px 1fr;gap:13px;align-items:center}.avatar,.podium-avatar,.rank-avatar{display:grid;place-items:center;border-radius:50%;background:linear-gradient(145deg,#294736,#11251b);border:1px solid rgba(201,170,105,.20);color:#dec98f;font-weight:900}.avatar{width:58px;height:58px;font-size:20px}.profile-copy h2{font-size:16px}.profile-copy>p{margin-top:2px;color:#767c75;font-size:9px}.profile-balance{margin-top:8px;display:flex;align-items:baseline;gap:7px}.profile-balance span{color:#6b716a;font-size:8px}.profile-balance strong{color:#e2ca91;font-size:19px;font-variant-numeric:tabular-nums}.profile-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:9px 0}.profile-action{min-height:86px;padding:10px;border-radius:17px;border:1px solid rgba(255,255,255,.045);background:#101410;display:flex;flex-direction:column;align-items:flex-start;text-align:left}.profile-action>span{width:29px;height:29px;display:grid;place-items:center;border-radius:9px;background:#1a211a;color:#bea366}.profile-action strong{margin-top:8px;font-size:10px}.profile-action small{margin-top:1px;color:#636a62;font-size:7px}.account-list{padding:4px 13px}.account-row{min-height:48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.04);gap:12px}.account-row:last-child{border-bottom:0}.account-row span{color:#71776f;font-size:9px}.account-row strong{font-size:9px;text-align:right}.safe-text{color:#72bd91}.safety-banner{margin-top:9px;padding:11px;border-radius:14px;display:flex;gap:8px;background:rgba(32,72,50,.12);color:#798a7d;font-size:8px;border:1px solid rgba(109,183,137,.10)}.safety-banner>span{color:#79be95}
.podium{min-height:185px;display:flex;align-items:flex-end;justify-content:center;gap:7px;padding:12px 0}.podium-card{width:29%;height:128px;border-radius:18px 18px 9px 9px;border:1px solid var(--line);background:linear-gradient(180deg,#161a15,#0d100d);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:15px;position:relative}.podium-card.first{height:156px;background:linear-gradient(180deg,#242217,#10130f);border-color:rgba(201,170,105,.25)}.podium-avatar{width:42px;height:42px}.podium-name{margin-top:6px;max-width:82%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px}.podium-score{color:#cbb073;font-size:10px}.podium-step{position:absolute;bottom:6px;color:#615b4e;font:700 24px/1 Georgia}.rank-panel{padding:4px 12px}.rank-row{height:52px;display:grid;grid-template-columns:25px 34px 1fr auto;align-items:center;gap:8px;border-bottom:1px solid rgba(255,255,255,.035)}.rank-row:last-child{border-bottom:0}.rank-no{color:#777d75;font-size:9px;text-align:center}.rank-avatar{width:30px;height:30px;font-size:9px}.rank-name{font-size:10px}.rank-coins{color:#c4aa70;font-size:10px;font-variant-numeric:tabular-nums}

/* bottom navigation */
.bottom-nav{position:fixed;z-index:60;left:50%;bottom:0;transform:translateX(-50%);width:min(520px,100%);height:78px;padding:7px 10px calc(8px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,1fr);align-items:center;background:linear-gradient(180deg,rgba(8,11,8,.70),rgba(6,8,6,.97) 28%);backdrop-filter:blur(20px);border-top:1px solid rgba(255,255,255,.04)}.bottom-nav button{height:49px;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#5f655e;position:relative}.bottom-nav button span{font-size:16px;line-height:1}.bottom-nav button b{font-size:7px;font-weight:700}.bottom-nav button.active{color:#d5bd84;background:linear-gradient(180deg,rgba(201,170,105,.095),rgba(201,170,105,.02))}.bottom-nav button.active:before{content:"";position:absolute;top:0;width:22px;height:2px;border-radius:2px;background:#c6a866;box-shadow:0 0 10px rgba(201,170,105,.28)}

/* sheets */
.sheet-backdrop{position:fixed;z-index:89;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(4px)}.bottom-sheet{position:fixed;z-index:90;left:50%;bottom:0;transform:translateX(-50%);width:min(520px,100%);max-height:86vh;overflow:auto;padding:8px 15px calc(18px + env(safe-area-inset-bottom));border-radius:28px 28px 0 0;background:linear-gradient(180deg,#171b16,#090c09);border:1px solid rgba(201,170,105,.14);box-shadow:0 -28px 80px rgba(0,0,0,.55)}.sheet-handle{width:40px;height:4px;margin:1px auto 13px;border-radius:4px;background:#3f443d}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:13px}.sheet-head h2{margin-top:3px;font-size:20px}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:13px;background:#0c100c;border:1px solid rgba(255,255,255,.04);margin-bottom:12px}.segmented button{height:36px;border-radius:10px;color:#676e66;font-size:10px;font-weight:700}.segmented button.active{background:#1d221b;color:#d5bd83;border:1px solid var(--line)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.form-grid label,.field-label{display:flex;flex-direction:column;gap:5px;color:#777d76;font-size:8px}.form-grid label.full{grid-column:1/-1}.form-grid input,.form-grid select{height:42px}.sheet-submit{width:100%;height:44px;margin-top:12px}.sheet-footnote{margin-top:9px;color:#626861;font-size:8px;text-align:center}.score-target{height:61px;margin-bottom:11px;padding:0 13px;display:flex;align-items:center;justify-content:space-between;border-radius:14px;background:#0c100c;border:1px solid rgba(255,255,255,.045)}.score-target span{font-size:10px}.score-target strong{font-size:18px;color:#d8bf82}.field-label{margin-top:8px}.detail-sheet{min-height:42vh}.detail-body{display:grid;gap:6px}.detail-row{min-height:49px;padding:8px 10px;border-radius:12px;background:#0d110d;border:1px solid rgba(255,255,255,.035);display:flex;align-items:center;justify-content:space-between;gap:10px}.detail-row strong{font-size:10px}.detail-row p{margin-top:2px;color:#676d66;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-row .delta{font-size:10px;font-weight:900}.delta.positive{color:#75bf94}.delta.negative{color:#d57f78}.empty-state{padding:34px 10px;text-align:center;color:#646a63;font-size:9px}.empty-state span{display:block;margin-bottom:6px;font-size:28px}

/* boot */
.boot-screen{position:fixed;z-index:500;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 40%,#10251b,#080b08 34%,#050705 75%)}.boot-logo{width:84px;height:84px;display:grid;place-items:center;border-radius:28px;background:linear-gradient(145deg,#1a2118,#0b0e0b);border:1px solid var(--line-strong);color:#020403;font:62px/.8 Georgia;text-shadow:0 0 1px #d3b979;box-shadow:0 28px 70px rgba(0,0,0,.42)}.boot-screen h1{margin-top:18px;font-size:19px;letter-spacing:.8px}.boot-screen p{margin-top:6px;color:#6d736c;font-size:9px}.loader{display:flex;gap:5px;margin-top:16px}.loader span{width:5px;height:5px;border-radius:50%;background:#9f8959;animation:load 1.2s infinite}.loader span:nth-child(2){animation-delay:.18s}.loader span:nth-child(3){animation-delay:.36s}@keyframes load{0%,70%,100%{opacity:.2;transform:translateY(0)}35%{opacity:1;transform:translateY(-4px)}}.boot-screen .outline-btn{margin-top:18px}

/* immersive room */
.room-sheet{position:fixed;z-index:75;inset:0;margin:auto;width:min(520px,100%);overflow-y:auto;padding-bottom:calc(90px + env(safe-area-inset-bottom));background:
  radial-gradient(circle at 50% 39%,rgba(22,75,54,.32),transparent 35%),
  linear-gradient(180deg,#090c09,#050705 76%)}
.room-sheet:before{content:"";position:absolute;inset:0 0 auto;height:220px;pointer-events:none;background:linear-gradient(180deg,rgba(30,39,30,.16),transparent)}.room-header{position:sticky;top:0;z-index:12;min-height:69px;padding:calc(env(safe-area-inset-top) + 8px) 12px 8px;display:grid;grid-template-columns:38px 1fr auto;gap:9px;align-items:center;background:linear-gradient(180deg,rgba(7,10,7,.96),rgba(7,10,7,.75),transparent);backdrop-filter:blur(16px)}.room-header>div:nth-child(2){min-width:0}.room-header h2{margin-top:2px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-header h2 small{color:#716b59;font-size:9px;font-weight:600}.room-head-actions{display:flex;gap:5px}.room-header .icon-btn{width:34px;height:34px;border-radius:11px}.room-meta{position:relative;z-index:5;display:flex;justify-content:center;gap:7px;padding:2px 12px 4px}.room-meta span{padding:4px 8px;border-radius:8px;background:rgba(13,17,13,.72);border:1px solid rgba(255,255,255,.04);color:#6e756e;font-size:7px}.room-meta span:last-child{color:#94a398}
.game-table{position:relative;height:390px;margin:3px 8px 0}.table-felt{position:absolute;left:47px;right:47px;top:50px;bottom:52px;border-radius:46% / 34%;background:
  radial-gradient(circle at 50% 42%,rgba(47,121,87,.20),transparent 29%),
  radial-gradient(circle at 50% 50%,#15513b 0,#0d392a 55%,#08251c 100%);border:10px solid #171a15;box-shadow:
  0 0 0 1px rgba(201,170,105,.17),
  0 0 0 13px #080a08,
  0 0 0 14px rgba(201,170,105,.07),
  0 24px 50px rgba(0,0,0,.45),
  inset 0 0 60px rgba(0,0,0,.35)}.table-felt:before{content:"♠";position:absolute;inset:0;display:grid;place-items:center;color:rgba(3,12,8,.22);font:92px/.8 Georgia}.table-felt:after{content:"ACE CLUB";position:absolute;left:50%;top:59%;transform:translateX(-50%);color:rgba(220,201,155,.12);font:700 7px/1 var(--font);letter-spacing:3px;white-space:nowrap}
.table-center{position:absolute;z-index:4;left:50%;top:50%;transform:translate(-50%,-50%);width:62%;display:flex;flex-direction:column;align-items:center;gap:8px}.community{display:flex;gap:4px;justify-content:center}.playing-card{width:34px;height:47px;padding:4px;border-radius:6px;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(145deg,#f7f2e4,#dcd2ba);border:1px solid #fff8e8;color:#171b17;font:700 11px/1 Georgia;box-shadow:0 5px 11px rgba(0,0,0,.28)}.playing-card.red{color:#a4423c}.playing-card.back{background:repeating-linear-gradient(45deg,#1a2b22 0 4px,#223d2e 4px 8px);border-color:#6f765f}.pot-label{min-height:24px;padding:4px 9px;border-radius:12px;background:rgba(4,10,7,.68);border:1px solid rgba(201,170,105,.10);color:#8a9188;font-size:7px;display:flex;align-items:center;gap:5px;backdrop-filter:blur(4px)}.pot-label strong{color:#d1b774;font-size:11px}.table-center>strong{color:#cdb575;font-size:12px}
.seats{position:absolute;z-index:8;inset:0}.seat{position:absolute;width:72px;display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center}.seat-avatar{width:39px;height:39px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#28342b,#111812);border:2px solid #30382f;color:#cdb779;font-size:11px;font-weight:900;box-shadow:0 7px 16px rgba(0,0,0,.40)}.seat-copy{width:72px;min-height:29px;padding:3px 5px 4px;border-radius:9px;background:rgba(7,10,7,.88);border:1px solid rgba(255,255,255,.055);backdrop-filter:blur(4px)}.seat-copy strong{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#b9bdb7;font-size:7px;font-weight:700}.seat-copy small{display:block;margin-top:1px;color:#d0b677;font-size:8px;font-weight:800;font-variant-numeric:tabular-nums}.seat.me .seat-avatar{border-color:#c9aa69;box-shadow:0 0 0 3px rgba(201,170,105,.08),0 7px 18px rgba(0,0,0,.42)}.seat.turn .seat-avatar{animation:turnPulse 1.8s infinite}@keyframes turnPulse{0%,100%{box-shadow:0 0 0 2px rgba(201,170,105,.08),0 7px 18px #0007}50%{box-shadow:0 0 0 5px rgba(201,170,105,.13),0 0 23px rgba(201,170,105,.13)}}.seat.folded{opacity:.42;filter:saturate(.5)}.seat-badge{position:absolute;z-index:3;right:4px;top:27px;padding:2px 4px;border-radius:7px;background:#a88a50;color:#0e0b07;font-size:6px;font-weight:900}.seat .blind-badge{position:absolute;left:4px;top:28px;width:16px;height:16px;border-radius:50%;display:grid;place-items:center;background:#e3d1a0;color:#14110b;font:900 6px/1 var(--font);border:1px solid white}.seat:nth-child(1){left:50%;bottom:0;transform:translateX(-50%)}.seat:nth-child(2){left:2px;bottom:65px}.seat:nth-child(3){left:4px;top:82px}.seat:nth-child(4){left:50%;top:1px;transform:translateX(-50%)}.seat:nth-child(5){right:4px;top:82px}.seat:nth-child(6){right:2px;bottom:65px}.seat:nth-child(7){left:16%;top:15px}.seat:nth-child(8){right:16%;top:15px}.seat:nth-child(9){right:4%;bottom:8px}
.hand-area{position:relative;z-index:9;min-height:79px;margin-top:-32px;text-align:center}.hand-title{margin-bottom:5px;color:#656c65;font-size:8px}.my-cards{display:flex;justify-content:center;gap:5px}.my-cards .playing-card{width:47px;height:65px;padding:5px;font-size:15px;border-radius:8px;box-shadow:0 9px 18px rgba(0,0,0,.42)}.tile-list{display:flex;gap:2px;justify-content:center;flex-wrap:wrap;padding:0 8px}.tile{width:29px;height:42px;border-radius:5px;background:linear-gradient(145deg,#f2ead4,#cfc2a2);color:#236846;border:1px solid #f2e8cb;display:grid;place-items:center;font:700 10px "Songti SC",serif;box-shadow:0 4px 9px rgba(0,0,0,.34)}.tile.clickable{transform:translateY(-4px);border-color:#fff4d0}.tile.red{color:#a8423b}.mahjong-table .table-felt{left:42px;right:42px;top:47px;bottom:48px;border-radius:24%;background:radial-gradient(circle at 50% 45%,#1b5d45,#0d392a 62%,#08251c)}
.room-members{margin:4px 13px 8px;padding:0 11px;border-radius:17px;background:#0c100c;border:1px solid rgba(255,255,255,.035)}.member-row{min-height:42px;display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;border-bottom:1px solid rgba(255,255,255,.035)}.member-row:last-child{border-bottom:0}.member-name{display:flex;flex-direction:column}.member-name strong{font-size:9px}.member-name small{color:#626861;font-size:7px}.member-score{color:#bca266;font-size:9px;font-variant-numeric:tabular-nums}.member-row button{height:26px;padding:0 7px;border-radius:8px;border:1px solid var(--line);color:#a68f5f;font-size:7px}
.room-actions{position:fixed;z-index:82;left:50%;bottom:0;transform:translateX(-50%);width:min(520px,100%);min-height:78px;padding:9px 12px calc(10px + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:center;gap:7px;background:linear-gradient(180deg,rgba(6,8,6,.67),#050705 28%);backdrop-filter:blur(16px);border-top:1px solid rgba(255,255,255,.04)}.room-actions button{flex:1;max-width:132px;height:45px;border-radius:14px;border:1px solid rgba(201,170,105,.15);background:#111510;color:#b49a65;font-size:10px;font-weight:800}.room-actions button.primary{color:#17130b;background:linear-gradient(180deg,#e3c98e,#ad8749);border-color:#e2ce9c}.room-actions button.danger{color:#d5837b;border-color:rgba(220,126,117,.18)}.room-actions .action-note{color:#676d66;font-size:9px;text-align:center}

.toast{position:fixed;z-index:300;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));transform:translateX(-50%);max-width:min(420px,88vw);padding:10px 13px;border-radius:12px;background:#e7dcc0;color:#201b12;font-size:9px;font-weight:800;text-align:center;box-shadow:0 14px 38px rgba(0,0,0,.48);animation:toastIn .18s ease}@keyframes toastIn{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}

@media(min-width:700px){body{padding:18px 0}.app-shell{min-height:calc(100vh - 36px);border:1px solid rgba(201,170,105,.16);border-radius:28px;box-shadow:0 35px 120px rgba(0,0,0,.55)}.bottom-nav{bottom:18px;border-radius:0 0 27px 27px}.room-sheet{top:18px;bottom:18px;height:calc(100vh - 36px);border:1px solid rgba(201,170,105,.16);border-radius:27px}.room-actions{bottom:18px;border-radius:0 0 27px 27px}.bottom-sheet{bottom:18px;border-radius:28px}.sheet-backdrop{background:rgba(0,0,0,.78)}}
@media(max-width:390px){.hero-card{min-height:300px}.hero-copy{width:69%}.hero-copy h1{font-size:31px}.hero-emblem{right:10px;width:110px}.hero-spade{font-size:86px}.game-grid{grid-template-columns:1fr 1fr}.game-info p{display:none}.game-art{height:120px}.mj.m1{left:11px}.mj.m2{left:45px}.mj.m3{left:79px}.game-table{height:370px}.table-felt{left:42px;right:42px}.seat{width:66px}.seat-copy{width:66px}}
.dealer-badge{position:absolute;z-index:4;right:3px;top:28px;width:16px;height:16px;border-radius:50%;display:grid;place-items:center;background:#e4d4a8;color:#16120b;border:1px solid #fff4d6;font:900 7px/1 var(--font);box-shadow:0 3px 8px #0006}.seat-bet{position:absolute;z-index:2;left:50%;top:65px;transform:translateX(-50%);padding:2px 5px;border-radius:8px;background:#6b5532;color:#f0dba7;border:1px solid rgba(255,255,255,.11);font-size:6px;font-weight:800;box-shadow:0 3px 7px #0007}.seat:nth-child(1) .seat-bet{top:-18px}.seat:nth-child(2) .seat-bet,.seat:nth-child(3) .seat-bet{left:79px;top:34px}.seat:nth-child(5) .seat-bet,.seat:nth-child(6) .seat-bet{left:-7px;top:34px}.seat:nth-child(4) .seat-bet,.seat:nth-child(7) .seat-bet,.seat:nth-child(8) .seat-bet{top:66px}
/* V3 contrast polish */
.hero-copy h1{color:#f0eee6}.hero-copy p{color:#aeb3ab}.quick-card strong,.game-info h3,.tier-card h3,.friend-game strong,.panel-title h2,.rules-card h3,.task-copy h3{color:#ebe8de}.quick-card small,.game-info p,.tier-card p,.friend-game small,.panel-title p,.rules-card p{color:#7d837b}.section-heading h2,.page-title h1{color:#f0eee8}.section-heading>button,.section-note{color:#848981}.game-card,.quick-card,.tier-card,.friend-game{box-shadow:inset 0 1px 0 rgba(255,255,255,.018),0 12px 30px rgba(0,0,0,.12)}
