:root{font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#fff7ea;background:#160d23;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}html{min-height:100%;overflow-x:hidden}body{min-height:100vh;overflow-x:hidden;background:radial-gradient(circle at 50% -20%,rgba(167,93,220,.34),transparent 45%),linear-gradient(180deg,#251339,#140b20)}button,input{font:inherit}button{color:inherit}button:disabled{cursor:not-allowed;opacity:.5}input{width:100%;border:1px solid rgba(255,255,255,.16);border-radius:14px;outline:none;padding:12px 14px;background:#170b22bd;color:#fff7ea}input:focus{border-color:#d5a4ff;box-shadow:0 0 0 3px #d5a4ff1f}.lobby-shell,.waiting-shell{position:relative;display:grid;min-height:100vh;place-items:center;overflow:hidden;padding:24px}.lobby-backdrop{position:absolute;inset:0;background:linear-gradient(90deg,#13081e33,#13081eb8 62%),url(/assets/concepts/toothtrap-splash-concept-v1.png) center / cover;filter:saturate(.92)}.lobby-card,.waiting-card{position:relative;z-index:1;width:min(470px,100%);border:1px solid rgba(255,255,255,.16);border-radius:30px;padding:clamp(26px,5vw,44px);background:#1c0d2ae0;box-shadow:0 32px 100px #07030c8c;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.lobby-card{margin-left:min(42vw,620px)}.lobby-card h1,.waiting-card h1{margin:8px 0 10px;font-size:clamp(38px,6vw,64px)}.lobby-card p,.waiting-card p{margin:0 0 26px;color:#d0bddc;line-height:1.65}.lobby-card label{display:grid;gap:8px;color:#e6d8ec;font-size:13px;font-weight:700}.primary-action,.join-row button,.waiting-actions button{border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:12px 16px;background:#ffffff14;font-weight:800;cursor:pointer}.lobby-card>.primary-action{width:100%;margin-top:14px}.primary-action{border-color:#f4c662;background:linear-gradient(135deg,#ffdc86,#e9ad43)!important;color:#2b1736}.join-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:10px}.connection{display:block;margin-top:16px;color:#ba9bc9}.connection:before{content:"";display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#e16e72}.connection.online:before{background:#79dc9c;box-shadow:0 0 10px #79dc9cb3}.error-banner{margin-top:12px;border:1px solid rgba(255,115,120,.35);border-radius:12px;padding:10px 12px;background:#8924393d;color:#ffc4c6;font-size:13px}.waiting-shell{background:radial-gradient(circle at 50% 0%,rgba(157,88,207,.36),transparent 48%),#160d23}.waiting-card{width:min(820px,100%)}.waiting-card h1{letter-spacing:.16em}.waiting-players{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.waiting-players article{display:grid;min-height:92px;grid-template-columns:38px 1fr;grid-template-rows:1fr 1fr;column-gap:10px;align-items:center;border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:12px;background:#ffffff0f}.waiting-players article>span{display:grid;grid-row:1 / 3;width:38px;height:38px;place-items:center;border-radius:12px;background:#7b4ca8;font-weight:900}.waiting-players small{color:#bda9c8}.waiting-players .empty{opacity:.48}.waiting-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.game-shell{position:relative;display:grid;min-height:100vh;grid-template-columns:minmax(0,1fr) 250px;grid-template-rows:auto auto minmax(430px,1fr) auto;gap:16px;padding:20px clamp(18px,3vw,48px) 24px}.topbar{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between}.topbar h1{margin:2px 0 0;font-size:clamp(24px,3vw,42px);letter-spacing:.04em}.eyebrow,.effects-panel>span{color:#d8a9ff;font-size:11px;font-weight:800;letter-spacing:.2em}.room-pill{border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:10px 16px;background:#ffffff12;color:#dfd1e9}.players{grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.player{display:flex;align-items:center;gap:10px;min-width:0;border:1px solid rgba(255,255,255,.1);border-radius:18px;padding:10px 12px;background:#12091cb8;transition:.18s ease}.player.active{border-color:#f7c65d;box-shadow:0 0 22px #f7c65d2e;transform:translateY(-2px)}.avatar{display:grid;width:36px;aspect-ratio:1;flex:0 0 auto;place-items:center;border-radius:12px;background:linear-gradient(145deg,#aa72dc,#684198);font-weight:900}.player div{display:grid;min-width:0;gap:3px}.player strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hands{color:#ffd87d;font-size:13px}.stage{position:relative;min-height:430px;overflow:hidden;border:1px solid rgba(255,255,255,.1);border-radius:32px;background:#1a1029;box-shadow:0 28px 80px #00000059}.stage-copy{position:absolute;bottom:22px;left:50%;display:grid;min-width:220px;gap:3px;padding:12px 18px;transform:translate(-50%);border:1px solid rgba(255,255,255,.14);border-radius:18px;background:#130a1ec2;text-align:center;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none}.stage-copy span,.stage-copy small{color:#c9b4d8;font-size:12px}.stage-copy strong{font-size:18px}.effects-panel{align-self:stretch;border:1px solid rgba(255,255,255,.1);border-radius:26px;padding:22px;background:linear-gradient(180deg,#43265bd1,#1a0d26e6)}.effects-panel strong{display:block;margin-top:14px;font-size:18px}.effects-panel p{color:#bbaac7;font-size:13px;line-height:1.65}.hand{grid-column:1 / -1;display:flex;justify-content:center;gap:12px;min-height:130px}.card{display:grid;width:min(155px,28vw);min-height:118px;gap:4px;border:1px solid rgba(255,255,255,.16);border-radius:20px;padding:14px;background:linear-gradient(150deg,#573774f2,#2a183cfa);text-align:left;cursor:pointer;transition:.18s ease}.card:hover{transform:translateY(-8px) rotate(-1deg);border-color:#ffffff6b}.card>span{color:#cda8ef;font-size:11px;font-weight:800}.card strong{font-size:19px}.card small{color:#cbbbd6;line-height:1.45}.card em{color:#8ce6aa;font-size:11px;font-style:normal;font-weight:800}.card.selected{border-color:#ffd76f;box-shadow:0 0 0 2px #ffd76f40,0 12px 30px #00000052;transform:translateY(-8px)}.card-scout{box-shadow:inset 0 3px #5cc9ff}.card-defense{box-shadow:inset 0 3px #79dc9c}.card-risk{box-shadow:inset 0 3px #ff746e}.card-control{box-shadow:inset 0 3px #b681ff}.card-resource{box-shadow:inset 0 3px #f2bd55}.card-ghost{box-shadow:inset 0 3px #e8ebff;background:linear-gradient(150deg,#5c6079f2,#231e32fa)}.empty-hand{display:grid;min-height:110px;place-items:center;color:#a990b7}.pass-button{position:fixed;z-index:8;right:28px;bottom:28px;border:1px solid rgba(255,255,255,.18);border-radius:14px;padding:12px 18px;background:#f2bd55;color:#281635;font-weight:900;cursor:pointer}.card-action-panel{position:fixed;z-index:12;right:28px;bottom:84px;width:min(390px,calc(100vw - 32px));border:1px solid rgba(255,255,255,.2);border-radius:22px;padding:18px;background:#1b0d28f5;box-shadow:0 24px 80px #0000008c;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.card-action-panel>div:first-child{display:flex;align-items:center;justify-content:space-between}.card-action-panel>div:first-child button{border:0;background:transparent;color:#bca8c8;font-size:24px;cursor:pointer}.card-action-panel>.primary-action{width:100%;margin-top:12px}.card-action-panel p{color:#cbbbd6;font-size:13px}.target-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.target-options button{border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:8px 11px;background:#ffffff14;cursor:pointer}.target-options button.selected{border-color:#ffd76f;background:#ffd76f2e}.intel-notes{display:grid;gap:7px;margin-top:14px}.intel-notes small{border-left:2px solid #65c9ff;padding-left:8px;color:#d9cbe2;line-height:1.4}.reset-button{position:absolute;right:clamp(18px,3vw,48px);bottom:26px;border:0;border-radius:14px;padding:10px 14px;background:#f2bd55;color:#2b1938;font-weight:800;cursor:pointer}@media(max-width:820px){.lobby-card{margin:38vh 0 0}.lobby-backdrop{background-position:42% center}.waiting-players{grid-template-columns:repeat(2,minmax(0,1fr))}.waiting-actions{flex-wrap:wrap}.game-shell{display:flex;min-height:100dvh;flex-direction:column;gap:10px;padding:12px}.topbar h1{font-size:24px}.room-pill{padding:7px 10px;font-size:12px}.players{display:flex;overflow-x:auto;scroll-snap-type:x proximity;padding-bottom:3px}.player{min-width:142px;flex:1 0 142px;scroll-snap-align:start;padding:8px}.stage{width:100%;height:clamp(310px,54dvh,440px);min-height:310px;flex:0 0 auto;border-radius:24px}.effects-panel{display:block;padding:15px}.effects-panel strong{margin-top:8px}.effects-panel p{margin:7px 0}.hand{width:100%;min-height:116px;overflow-x:auto;justify-content:flex-start;scroll-snap-type:x mandatory;padding:8px 2px 18px}.card{min-height:108px;flex:0 0 min(168px,72vw);scroll-snap-align:start;padding:12px}.reset-button{position:static;grid-column:1;justify-self:end}.pass-button{right:14px;bottom:14px}.card-action-panel{right:16px;bottom:72px;max-height:min(70dvh,520px);overflow-y:auto}}@media(max-width:1000px)and (max-height:600px)and (orientation:landscape){.game-shell{display:grid;min-height:100dvh;grid-template-columns:minmax(0,1fr) 210px;grid-template-rows:auto auto minmax(250px,calc(100dvh - 172px)) auto;gap:8px;padding:8px 12px 12px}.topbar h1{font-size:21px}.eyebrow{font-size:9px}.players{display:flex;grid-column:1 / -1;overflow-x:auto}.player{min-width:128px;flex:1 0 128px;padding:6px 8px}.avatar{width:30px}.stage{min-height:250px;height:calc(100dvh - 172px);border-radius:22px}.stage-copy{bottom:10px;padding:7px 12px}.effects-panel{display:block;min-width:0;overflow-y:auto;padding:14px}.hand{grid-column:1 / -1;min-height:104px;overflow-x:auto;justify-content:flex-start;padding:4px 2px 10px}.card{min-height:98px;flex:0 0 155px;padding:10px}.card strong{font-size:16px}.card small{font-size:11px}.pass-button{right:12px;bottom:12px}.card-action-panel{right:12px;bottom:64px;max-height:calc(100dvh - 76px);overflow-y:auto}}
