:root{--bg:#07101e;--panel:#10192e;--panel2:#15213c;--panel3:#0b1428;--line:#2b395f;--text:#f4f7ff;--muted:#9eadd2;--accent:#8b5cf6;--accent2:#0bb9d5;--gold:#f3c85d;--green:#4ade80;--red:#ff7a84;--shadow:0 18px 40px rgba(0,0,0,.34);--safe:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;min-height:100%;background:linear-gradient(180deg,#07101e,#0a1427 65%,#07101e);color:var(--text);font-family:Tahoma,Arial,sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer;touch-action:manipulation}.hidden{display:none!important}a{color:inherit}.app{width:min(1120px,100%);margin:auto;padding:10px 10px calc(22px + var(--safe))}.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;background:rgba(10,18,35,.94);border:1px solid var(--line);border-radius:18px;padding:10px 12px;margin-bottom:10px;position:sticky;top:0;z-index:40;backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:9px;font-weight:900;font-size:20px}.logo{width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:grid;place-items:center}.pill{border:1px solid var(--line);background:#111b33;border-radius:999px;padding:6px 9px;font-size:10px;color:#d9e1f8}.hero{padding:20px 4px 12px}.hero h1{font-size:34px;margin:0 0 7px}.hero p,.muted{color:var(--muted);font-size:12px;line-height:1.75}.small{font-size:10px;color:var(--muted)}.grid,.games{display:grid;gap:12px}.games{grid-template-columns:1fr}.card,.panel{background:linear-gradient(180deg,#111b33,#0d1629);border:1px solid var(--line);border-radius:22px;padding:16px;box-shadow:var(--shadow)}.card h2,.panel h2{margin:0 0 6px}.actions,.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.primary,.secondary,.danger,.ghost{border:none;border-radius:12px;padding:10px 14px;font-weight:900}.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}.secondary{background:#15213b;border:1px solid var(--line);color:#fff}.danger{background:#3a1b29;border:1px solid #6a2c41;color:#ffdce7}.ghost{background:transparent;border:1px dashed var(--line);color:#dfe6fb}.primary:disabled,.secondary:disabled,.danger:disabled{opacity:.45;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:5px;margin:9px 0}.field label{font-size:11px;color:var(--muted)}.field input,.field textarea,.field select{width:100%;background:var(--panel3);color:#fff;border:1px solid var(--line);border-radius:12px;padding:11px;outline:none}.field input:focus,.field textarea:focus{border-color:#5370b1}.choice{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.choice button{background:#111b33;border:1px solid var(--line);border-radius:15px;padding:12px;color:#fff}.choice button.active{outline:2px solid var(--gold)}.notice{background:#0b1428;border:1px solid var(--line);border-radius:12px;padding:9px 10px;color:#d8e0f7;font-size:11px;margin:8px 0}.notice[data-kind="ok"]{border-color:#245b3a}.notice[data-kind="bad"]{border-color:#6a2c41}.room-code{font-size:34px;font-weight:900;letter-spacing:5px;color:var(--gold)}.member-list,.answer-list,.vote-list,.score-list{display:grid;gap:7px}.member,.answer-item,.score-item{background:#111b33;border:1px solid var(--line);border-radius:13px;padding:10px;display:flex;align-items:center;justify-content:space-between;gap:8px}.online-dot{width:8px;height:8px;border-radius:50%;background:var(--green);display:inline-block}.offline{opacity:.45}.qr{width:190px;height:190px;background:#fff;border-radius:14px;padding:7px;display:grid;place-items:center;margin:10px auto}.question-box{background:radial-gradient(circle at 50% 30%,#173b5c,#102947 58%,#0b2038);border:1px solid rgba(255,255,255,.08);border-radius:22px;padding:18px;text-align:center}.question{font-size:22px;font-weight:900;line-height:1.55}.scorebar{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.team{background:#111b33;border:1px solid var(--line);border-radius:14px;padding:10px;text-align:center}.team.active{outline:2px solid var(--gold)}.team.elim{opacity:.45}.team b{display:block;font-size:23px}.hearts{font-size:18px;margin-top:4px}.answers10{display:grid;gap:7px}.answer10{display:grid;grid-template-columns:38px 1fr;gap:8px;align-items:center;background:#111b33;border:1px solid var(--line);border-radius:13px;padding:8px}.answer10.open{background:#153149;border-color:#235879}.rank{width:34px;height:34px;border-radius:10px;background:#0b1428;display:grid;place-items:center;font-weight:900}.masked{color:#6f7da6;letter-spacing:2px}.entry{display:flex;gap:7px;margin:10px 0}.entry input{flex:1;min-width:0;background:var(--panel3);color:#fff;border:1px solid var(--line);border-radius:12px;padding:11px}.stage{min-height:380px;background:radial-gradient(circle at 50% 25%,#173b5c,#102947 58%,#0b2038);border:1px solid rgba(255,255,255,.08);border-radius:24px;padding:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.secret-question{font-size:23px;font-weight:900;line-height:1.65;margin:14px 0}.real-question{width:100%;background:#0d1b33;border:1px solid var(--line);border-radius:16px;padding:12px;margin-bottom:12px}.real-question b{display:block;font-size:20px;margin-top:4px}.vote-option{width:100%;background:#111b33;border:1px solid var(--line);border-radius:12px;padding:11px;color:#fff;text-align:right}.vote-option.selected{outline:2px solid var(--gold)}
/* Kalim */.kalim-layout{display:grid;gap:9px}.opponents{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scroll-snap-type:x proximity}.opp{min-width:230px;max-width:270px;background:#111b33;border:1px solid var(--line);border-radius:14px;padding:9px;scroll-snap-align:start}.opp.active{outline:2px solid var(--gold)}.opp-cards,.hand{display:flex;gap:6px;overflow-x:auto;padding:6px 1px}.mini-card{flex:0 0 38px;height:52px;border-radius:8px;background:#f3f5fb;color:#101624;display:grid;place-items:center;font-size:20px;font-weight:900;position:relative}.mini-card small{position:absolute;top:2px;left:4px;font-size:10px}.word{display:flex;justify-content:center;gap:12px;margin:12px 0}.word-slot{position:relative}.game-card-letter{width:86px;height:118px;border-radius:16px;background:#f6f7fb;color:#101624;border:3px solid rgba(255,255,255,.2);display:grid;place-items:center;font-size:50px;font-weight:900;position:relative;box-shadow:0 12px 25px rgba(0,0,0,.25)}.game-card-letter.selected{outline:4px solid var(--gold)}.game-card-letter.star{background:linear-gradient(160deg,#fff8d8,#f6f7fb)}.game-card-letter .corner{position:absolute;top:7px;left:9px;font-size:20px}.depth{font-size:10px;color:var(--muted);text-align:center;margin-top:3px}.my-hand-wrap{position:sticky;bottom:0;background:rgba(7,16,30,.96);border:1px solid var(--line);border-radius:18px;padding:9px;z-index:20;backdrop-filter:blur(12px)}.hand .game-card-letter{flex:0 0 70px;width:70px;height:96px;font-size:42px}.hand .game-card-letter .corner{font-size:17px}.timer{font-size:34px;font-weight:900;color:var(--gold)}.chat{max-height:170px;overflow:auto;display:grid;gap:5px}.chat-msg{background:#111b33;border-radius:10px;padding:7px 9px;font-size:11px}.winner{font-size:32px;color:var(--gold);font-weight:900}.host-solution{width:100%;display:grid;grid-template-columns:38px 1fr;gap:8px;align-items:center;background:#111b33;border:1px solid var(--line);border-radius:12px;padding:9px;color:#fff;text-align:right}.host-solution.used{opacity:.4}.suggestion{background:#0d2438;border:1px solid #235879;border-radius:15px;padding:12px;margin:10px 0}.footer-note{margin-top:16px;text-align:center;font-size:10px;color:var(--muted)}
@media(min-width:760px){.app{padding:16px}.games{grid-template-columns:repeat(3,1fr)}.answers10{grid-template-columns:1fr 1fr}.question{font-size:27px}.grid.two{grid-template-columns:1fr 1fr}.kalim-layout{grid-template-columns:1fr}.game-card-letter{width:100px;height:136px;font-size:58px}}
@media(max-width:560px){.choice{grid-template-columns:1fr}.hero h1{font-size:29px}.word{gap:7px}.game-card-letter{width:72px;height:100px;font-size:43px}.game-card-letter .corner{font-size:17px}.room-code{font-size:28px}.scorebar{gap:6px}}


/* Host management */
.manage-modal{position:fixed;inset:0;background:rgba(2,6,14,.82);z-index:100;display:flex;align-items:flex-end;justify-content:center;padding:10px}
.manage-card{width:min(680px,100%);max-height:82dvh;overflow:auto;background:linear-gradient(180deg,#111b33,#0d1629);border:1px solid var(--line);border-radius:22px;padding:14px;box-shadow:var(--shadow);margin-bottom:var(--safe)}
.manage-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.cohost-fab,.chat-fab{position:fixed;z-index:70;border:none;border-radius:999px;padding:10px 13px;font-weight:900;color:#fff;box-shadow:0 10px 28px rgba(0,0,0,.35)}
.cohost-fab{left:10px;top:74px;background:linear-gradient(135deg,#7756d9,#4b69b9)}
.chat-fab{right:12px;bottom:calc(128px + var(--safe));background:linear-gradient(135deg,var(--accent),var(--accent2));font-size:18px}
.cohost-panel,.chat-drawer{position:fixed;z-index:90;background:linear-gradient(180deg,#111b33,#0d1629);border:1px solid var(--line);box-shadow:var(--shadow)}
.cohost-panel{left:10px;top:118px;width:min(340px,calc(100vw - 20px));max-height:65dvh;overflow:auto;border-radius:18px;padding:12px}
.chat-drawer{right:10px;bottom:calc(10px + var(--safe));width:min(380px,calc(100vw - 20px));max-height:62dvh;border-radius:20px;padding:12px}
.game-card-letter{touch-action:manipulation;user-select:none;-webkit-user-select:none}


@media(max-width:560px){
  .app{padding:7px 7px calc(12px + var(--safe))}
  .topbar{padding:7px 9px;border-radius:14px;margin-bottom:6px}
  .brand{font-size:17px}.logo{width:32px;height:32px;border-radius:10px}
  .panel{padding:11px;border-radius:16px}
  .kalim-layout{gap:6px;padding-bottom:128px}
  .opponents{gap:6px;padding:2px 0 3px}
  .opp{min-width:175px;max-width:195px;padding:6px;border-radius:11px}
  .opp .small{font-size:9px}
  .opp-cards{gap:4px;padding:4px 0}
  .mini-card{flex-basis:30px;width:30px;height:42px;font-size:16px;border-radius:6px}
  .mini-card small{font-size:8px;left:3px}
  .kalim-layout .question-box{padding:9px 7px;border-radius:15px}
  .kalim-layout .question{font-size:18px;line-height:1.25}
  .timer{font-size:29px;line-height:1.1}
  .word{gap:5px;margin:7px 0}
  .word .game-card-letter{width:62px;height:84px;font-size:36px;border-radius:12px}
  .word .game-card-letter .corner{font-size:14px;top:5px;left:6px}
  .depth{font-size:8px}
  .kalim-layout .notice{font-size:9px;padding:6px 7px;margin:5px 0}
  .kalim-layout .toolbar{gap:5px;margin-top:6px}
  .kalim-layout .toolbar button{padding:7px 9px;font-size:11px}
  .my-hand-wrap{position:fixed;left:7px;right:7px;bottom:calc(7px + var(--safe));z-index:55;padding:7px;border-radius:15px;background:rgba(7,16,30,.98)}
  .my-hand-wrap>div:first-child{font-size:11px;gap:6px}
  .my-hand-wrap .small{font-size:8px}
  .hand{gap:5px;padding:5px 0 1px}
  .hand .game-card-letter{flex:0 0 56px;width:56px;height:76px;font-size:32px;border-radius:11px}
  .hand .game-card-letter .corner{font-size:13px;top:4px;left:5px}
  .chat-fab{bottom:calc(112px + var(--safe));right:10px;padding:8px 11px;font-size:16px}
  .cohost-fab{top:62px;left:7px;padding:7px 10px;font-size:10px}
  .room-code{font-size:25px}
  .manage-modal{padding:6px}
}

/* Kalim timer stepper */
.timer-stepper{display:grid;grid-template-columns:54px minmax(110px,160px) 54px;justify-content:center;align-items:stretch;gap:8px;margin:4px auto 7px}
.timer-stepper>button{font-size:25px;padding:8px 0}
.timer-stepper-value{background:#0b1428;border:1px solid var(--line);border-radius:14px;display:flex;align-items:baseline;justify-content:center;gap:6px;padding:8px 14px}
.timer-stepper-value b{font-size:30px;color:var(--gold);line-height:1}
.timer-stepper-value span{font-size:11px;color:var(--muted)}
.host-play-area{margin-top:6px}
.host-hand-title{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
@media(max-width:560px){.timer-stepper{grid-template-columns:48px minmax(100px,140px) 48px}.timer-stepper-value b{font-size:27px}}
