/* Board Game Club v0.5 — mobile web client styles
   Created: unknown (BoardClub v0.1, GPT-generated)
   Modified: 2026-11-10 by Claude Opus 5.5 via claude.ai
   Install path: BoardClub/portable/style.css
   Changelog:
     v0.2 2026-11-09 Claude Opus 5.5 styles for three new games, lobby settings, turn clock, rematch, board-first phone layout
     v0.3 2026-11-09 Claude Opus 5.5 styles for hidden code, blind command, night sky and liar dice
     v0.4 2026-11-09 Claude Opus 5.5 styles for one card, who's the liar and secret letter
     v0.5 2026-11-10 Claude Opus 5.5 12px text floor (10px inside board cells and cards), darker greys, invite landing, compact lobby
          with sticky start bar, sticky turn bar, docked action bars on phones, error toast, full-width gomoku board */
:root{--paper:#f8f5ee;--ink:#203450;--muted:#7b807f;--line:#deded5;--coral:#ed795b;--blue:#4569e8;--mint:#1c8072;--amber:#bd872c;--white:#fffef9;font-family:"Pretendard","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none;line-height:1.55}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #7997ff;outline-offset:4px}input:focus{outline:2px solid var(--blue);outline-offset:1px}a{color:inherit;text-decoration:none}button{color:inherit}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{line-height:1.22;letter-spacing:-.045em}small{font-size:.75rem}.muted{color:var(--muted)}.eyebrow{font-size:0.75rem;font-weight:800;letter-spacing:.16em;color:#6a706b}.site-header{max-width:1320px;margin:auto;padding:25px 42px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;gap:11px;align-items:center;font-size:1.05rem;font-weight:850;letter-spacing:-.06em}.brand-icon{display:grid;place-items:center;background:var(--coral);color:var(--paper);border-radius:13px;width:43px;height:43px;font-size:31px;line-height:1}.brand small{display:block;font-size:0.75rem;letter-spacing:.23em;margin-top:3px;color:#6a6f6b}.header-note{font-size:.75rem;display:flex;gap:9px;align-items:center;color:#747c78}.dot{width:7px;height:7px;background:var(--mint);display:inline-block;border-radius:50%;box-shadow:0 0 0 4px #1c807212}.dot.offline{background:var(--coral)}.text-button,.rules-link{background:none;border:0;font-size:.78rem;padding:8px 0;color:#676f72}.text-button:hover,.rules-link:hover{text-decoration:underline;color:var(--ink)}.home{max-width:1236px;margin:auto;padding:66px 36px 0;display:grid;grid-template-columns:1fr 390px;gap:58px 70px}.hero{position:relative;padding:10px 0 8px}.hero .eyebrow{font-size:0.75rem;color:#667267;letter-spacing:.04em}.tiny-star{color:var(--coral);font-size:1rem;margin-right:6px}.hero h1{font-size:clamp(3rem,5.6vw,5rem);font-weight:850;letter-spacing:-.085em;line-height:1.2;margin-top:25px;position:relative;display:inline-block}.hero h1 em{font-style:normal;color:var(--blue)}.hero-spark{position:absolute;top:11px;right:-70px;color:var(--coral);font-size:3.8rem;font-weight:500;transform:rotate(12deg)}.hero-copy{font-size:.95rem;color:#69706d;line-height:1.9;margin-top:25px;letter-spacing:-.025em}.hero-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:27px}.hero-chips span{border:1px solid #dddfd4;border-radius:30px;padding:7px 12px;font-size:0.75rem;color:#666f64;background:#f1f2e8}.panel{background:var(--white);border:1px solid var(--line);border-radius:20px}.entry-panel{padding:27px 28px;box-shadow:0 8px 0 #e4e2d93b}.entry-panel h2{font-size:1.35rem;margin:7px 0 9px}.entry-panel p{font-size:.75rem}.field{display:flex;flex-direction:column;gap:8px;font-size:0.75rem;font-weight:750;margin-top:23px}input{background:#faf9f4;border:1px solid #e0e1d8;border-radius:10px;color:var(--ink);padding:12px 13px;width:100%;min-width:0;font-size:.8rem;line-height:1.5}input::placeholder{color:#a4a8a0}.selected-mini{display:flex;gap:8px;align-items:center;font-size:0.75rem;margin:13px 0 16px}.selected-mini .muted{margin-left:auto;font-size:0.75rem}.game-dot{width:7px;height:7px;border-radius:50%;display:inline-block}.game-dot.blue{background:var(--blue)}.game-dot.amber{background:var(--amber)}.game-dot.mint{background:var(--mint)}.btn{min-height:44px;border:1px solid transparent;border-radius:10px;font-size:.76rem;font-weight:750;display:inline-flex;justify-content:center;align-items:center;gap:14px;padding:11px 17px;white-space:nowrap;transition:background .15s,transform .15s}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn-primary{background:var(--blue);color:white}.btn-primary:hover:not(:disabled){background:#3458d9}.btn-ink{background:var(--ink);color:white}.btn-secondary{border-color:#dadfd8;background:#fffef9;color:var(--ink)}.btn-secondary:hover:not(:disabled){background:#f0f2eb}.wide{width:100%;justify-content:space-between}.or-line{display:flex;align-items:center;gap:12px;color:#71746d;font-size:0.75rem;margin:20px 0 14px}.or-line::before,.or-line::after{content:"";height:1px;background:#e9e9df;flex:1}.join-row{display:flex;gap:8px}.join-row input{letter-spacing:.08em;font-size:.75rem}.join-row .btn{padding:11px 13px;font-size:0.75rem}.resume-button{display:block;width:100%;background:none;border:0;font-size:0.75rem;color:var(--blue);margin-top:16px}.library{grid-column:1/-1}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:0 0 23px}.section-heading h2{font-size:1.65rem;margin-top:6px}.count-label{font-size:0.75rem;color:#6a7168;letter-spacing:.08em}.game-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:21px}.game-card{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--white);transition:box-shadow .2s,border .2s}.game-card.selected{box-shadow:0 0 0 2px var(--ink)}.card-art{height:183px;position:relative;overflow:hidden}.card-art svg{width:100%;height:100%}.blue .card-art{background:#e2ebfb;color:#4569e8}.amber .card-art{background:#f5e7c8;color:#d99a25}.mint .card-art{background:#dfeee0;color:#1c8072}.art-badge{position:absolute;top:14px;left:16px;background:#fffef9c9;border:1px solid #fff9;border-radius:30px;font-size:0.75rem;font-weight:750;padding:3px 10px}.card-body{padding:22px 23px}.card-body .eyebrow{font-size:0.75rem;letter-spacing:.18em}.card-body h3{font-size:1.45rem;margin:7px 0 10px}.card-body p{font-size:0.75rem;color:#70766e;letter-spacing:-.035em}.card-meta{display:flex;justify-content:space-between;font-size:0.75rem;color:#6e766d;margin-top:20px;gap:8px}.card-actions{display:flex;align-items:center;gap:15px;margin-top:19px;border-top:1px solid #ecece3;padding-top:17px}.card-actions .btn{flex:1;font-size:0.75rem;min-height:39px;padding:9px 12px}.rules-link{font-size:0.75rem;white-space:nowrap}.how-to{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);padding:26px 0 34px;border-top:1px solid var(--line);margin-top:3px}.how-to>div{display:grid;grid-template-columns:40px 1fr;column-gap:10px}.how-to .step{grid-row:1/3;font-family:Georgia,serif;font-style:italic;color:var(--coral);font-size:1.5rem}.how-to strong{font-size:.78rem}.how-to p{font-size:0.75rem;color:#6a7169;margin-top:6px}.site-footer{max-width:1236px;padding:20px 36px 27px;margin:auto;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:0.75rem;color:#6b7167;letter-spacing:.03em}.loading{min-height:70vh;display:grid;place-content:center;justify-items:center;gap:18px;color:var(--muted)}.error{max-width:1164px;margin:20px auto 0;background:#fff0e9;color:#a54129;border:1px solid #f2c3b0;border-radius:12px;padding:12px 18px;display:flex;align-items:center;gap:16px;font-size:.8rem}.error button{margin-left:auto;border:0;background:none;font-size:22px}.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);padding:12px 22px;border-radius:12px;background:var(--ink);color:#fffef9;font-size:.8rem;z-index:15;box-shadow:0 10px 35px #20345033;max-width:calc(100% - 32px);text-align:center}.toast[hidden]{display:none}dialog{border:1px solid var(--line);border-radius:22px;max-width:480px;width:calc(100% - 32px);padding:34px;color:var(--ink);background:var(--white);box-shadow:0 25px 100px #20345030}dialog::backdrop{background:#20345066;backdrop-filter:blur(3px)}dialog h2{font-size:1.8rem;margin:10px 0 14px}.dialog-close{position:absolute;right:17px;top:10px;font-size:27px;border:0;background:none;color:#8d948b;padding:8px}.rules-meta{display:flex;gap:15px;color:var(--muted);font-size:.75rem}dialog ol{padding-left:22px;font-size:.84rem;line-height:1.9;margin:23px 0 28px}dialog li{padding-left:5px;margin:13px 0}dialog li::marker{color:var(--blue);font-weight:800}.room-page{max-width:1236px;margin:0 auto;padding:39px 36px 55px}.table-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:29px}.table-heading h1{font-size:1.95rem;margin-top:8px;display:flex;gap:17px;align-items:center}.live-pill{font-size:0.75rem;letter-spacing:0;display:flex;align-items:center;gap:9px;font-weight:600;color:#606b61;background:#e8eddf;border-radius:20px;padding:6px 12px}.room-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:30px}.room-sidebar{display:flex;flex-direction:column;gap:17px}.invite-card{padding:23px;text-align:center}.invite-card .eyebrow{font-size:0.75rem}.invite-card p{font-size:0.75rem;color:var(--muted);margin:9px 0 0}.room-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:2rem;font-weight:800;letter-spacing:.14em;margin:11px 0 17px}.two-buttons{display:grid;grid-template-columns:1fr 1fr;gap:7px}.two-buttons .btn{font-size:0.75rem;padding:10px 6px;min-height:39px}.invite-card>small{display:block;font-size:0.75rem;margin-top:14px}.members-panel{padding:22px}.panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.panel-heading h2{font-size:.95rem}.panel-heading>span{font-size:0.75rem;color:var(--muted)}.players{display:flex;flex-direction:column;gap:16px}.player{display:flex;align-items:center;gap:10px;text-align:left;font-size:0.75rem}.avatar{width:34px;height:34px;flex-shrink:0;border-radius:50%;background:color-mix(in srgb,var(--avatar,#798487) 13%,white);border:1px solid color-mix(in srgb,var(--avatar,#798487) 24%,white);color:var(--avatar,#798487);display:grid;place-items:center;font-weight:800;font-size:.82rem}.player strong{font-size:0.75rem;display:block;overflow-wrap:anywhere}.player strong small{font-size:0.75rem;color:var(--blue);margin-left:5px;font-weight:600}.player div>span{display:block;font-size:0.75rem;color:var(--muted);margin-top:3px}.player-mark{margin-left:auto;color:#adb1a5}.player-mark.ready{color:var(--mint)}.player.empty{border:0;background:none;padding:0;color:#6e776b;font-size:0.75rem}.player.empty .avatar{background:transparent;border:1px dashed #c9cec1;color:#a4af9b;font-size:1.1rem}.room-tip{display:flex;gap:11px;padding:4px 7px;color:#8b9486;font-size:0.75rem;line-height:1.85}.room-tip>span{color:var(--coral);font-size:1.2rem}.lobby-heading{display:flex;align-items:center;justify-content:space-between;margin:6px 0 20px}.lobby-heading h2{font-size:1.6rem;margin:6px 0 9px}.lobby-heading p{font-size:0.75rem}.pill{font-size:0.75rem;border:1px solid #dce1d7;border-radius:20px;padding:5px 10px;white-space:nowrap;color:#62705e;background:#eff2e8}.lobby-games{gap:14px}.compact .card-art{height:125px}.compact .card-body{padding:16px}.compact .card-body .eyebrow{font-size:0.75rem;letter-spacing:.11em}.compact .card-body h3{font-size:1.15rem}.compact .card-body p{font-size:0.75rem;min-height:34px}.compact .card-meta{font-size:0.75rem;gap:4px;margin-top:12px;flex-wrap:wrap}.compact .card-actions{gap:8px;margin-top:13px;padding-top:12px;flex-wrap:wrap}.compact .card-actions .btn{font-size:0.75rem;min-height:36px;padding:8px}.compact .rules-link{font-size:0.75rem}.start-bar{display:flex;justify-content:space-between;align-items:center;padding:21px;margin-top:23px;gap:15px}.start-bar strong{font-size:.93rem}.start-bar p{font-size:0.75rem;margin-top:6px}.play-heading{display:flex;align-items:center;justify-content:space-between;margin:3px 0 20px}.play-heading h2{font-size:1.75rem;margin-top:5px}.play-heading-right{display:flex;gap:15px;align-items:center}.game-surface{padding:27px}.game-status{display:flex;align-items:center;gap:14px;margin-bottom:23px}.status-icon{width:43px;height:43px;flex-shrink:0;display:grid;place-items:center;border-radius:13px;font-size:1.5rem}.status-icon.blue{background:#e9efff;color:var(--blue)}.status-icon.amber{background:#fbefd5;color:var(--amber)}.status-icon.mint{background:#e0f0e6;color:var(--mint)}.game-status h3{font-size:1.1rem}.game-status p{font-size:0.75rem;color:var(--muted);margin-top:6px}.game-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:20px}.game-bottom>.muted{font-size:0.75rem}.game-bottom .btn{font-size:0.75rem}.result-panel{background:#edf0db;border:1px solid #d9dfc2;border-radius:16px;padding:22px;display:flex;align-items:center;gap:16px;margin-bottom:20px}.result-star{font-size:2.4rem;color:#b08b33}.result-panel h2{font-size:1.2rem;margin:7px 0 5px;overflow-wrap:anywhere}.result-panel p{font-size:0.75rem;color:#656d52}.result-panel>.btn,.result-panel>.muted{margin-left:auto;font-size:0.75rem}.result-panel .eyebrow{font-size:0.75rem;color:#666d4f}.fleet-toolbar{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:17px}.ship-picker{display:flex;gap:6px;flex-wrap:wrap}.ship-choice{padding:8px 9px;border:1px solid #dfe4eb;border-radius:9px;background:#fafcff;color:#58749f;display:flex;flex-direction:column;gap:4px;min-width:47px}.ship-choice>span{font-size:0.75rem;letter-spacing:-.12em}.ship-choice>small{font-size:0.75rem}.ship-choice.chosen{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue);color:var(--blue)}.ship-choice.placed{background:#e7eefb}.tool-buttons{display:flex;gap:8px;align-items:center}.btn.small{font-size:0.75rem;min-height:34px;padding:7px 10px}.tool-buttons .text-button{font-size:0.75rem}.sea-board-wrap{max-width:460px;margin:auto}.sea-labels{display:grid;grid-template-columns:20px repeat(10,1fr);font-size:0.75rem;text-align:center;color:#657689;margin-bottom:5px}.sea-with-rows{display:grid;grid-template-columns:20px minmax(0,1fr)}.sea-rows{display:grid;grid-template-rows:repeat(10,1fr);font-size:0.75rem;color:#657689;text-align:center;align-items:center}.sea-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));border:1px solid #c6d8ed;border-radius:7px;overflow:hidden;background:#e6eef8;gap:1px}.sea-cell{aspect-ratio:1;min-width:0;padding:0;border:0;background:#f2f7fe;color:#4976b5;font-size:1.2rem;display:grid;place-items:center;position:relative}.sea-cell:disabled{opacity:1}.sea-cell:not(:disabled):hover{background:#d6e4ff}.sea-cell.ship{background:#849cc1;box-shadow:inset 0 0 0 3px #9db1d1}.sea-cell.hit{background:#f8d7c6;color:#df6f4c}.sea-cell.miss{background:#e4edf7;color:#9aadc6;font-size:1.4rem}.sea-cell.target{background:#d7e2fe;box-shadow:inset 0 0 0 2px var(--blue);color:var(--blue)}.board-tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:20px}.board-tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:10px 20px;font-size:0.75rem;color:var(--muted)}.board-tabs button.active{color:var(--blue);border-bottom-color:var(--blue);font-weight:800}.legend{display:flex;gap:15px;margin:16px 0 0;font-size:0.75rem;color:#697585;justify-content:center}.legend span{display:flex;gap:5px;align-items:center}.legend i{display:inline-block;width:8px;height:8px;border-radius:2px}.legend-hit{background:#ed795b}.legend-miss{background:#bac9dd}.legend-ship{background:#849cc1}.waiting-scene{text-align:center;padding:65px 15px}.waiting-orbit{width:77px;height:77px;background:#e7effc;color:var(--blue);font-size:2.5rem;border-radius:50%;display:grid;place-items:center;margin:0 auto 23px}.waiting-scene h3{font-size:1.35rem}.waiting-scene p{font-size:.77rem;margin-top:12px}.deployment-status{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:24px}.spectator-seas{display:grid;grid-template-columns:1fr 1fr;gap:20px}.spectator-seas h4{font-size:.75rem;margin-bottom:15px}.dice-stage{background:#faf4e6;border:1px solid #f0e6ce;border-radius:15px;padding:28px 20px 19px;text-align:center}.dice-row{display:flex;justify-content:center;gap:15px;margin-bottom:28px}.die{width:65px;border:0;padding:0;background:none;color:#726e60;opacity:1!important}.die-face{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:4px;aspect-ratio:1;background:#fffefa;border:1px solid #e4d8be;border-radius:13px;padding:12px;box-shadow:0 5px 0 #e4d8be}.die.held .die-face{border:2px solid var(--coral);background:#fff0e6;box-shadow:0 5px 0 #ed795b66;padding:11px}.die-face i{border-radius:50%;aspect-ratio:1}.die-face .pip{background:var(--ink)}.die small{font-size:0.75rem;display:block;margin-top:12px}.die.held small{color:#d16b4f;font-weight:800}.roll-button{min-width:210px}.small-copy{font-size:0.75rem;margin-top:12px}.score-heading{display:flex;justify-content:space-between;align-items:center;margin:24px 0 13px}.score-heading h4{font-size:.9rem}.score-options{display:grid;grid-template-columns:1fr 1fr;border:1px solid #e4e5db;border-radius:12px;overflow:hidden;gap:1px;background:#e4e5db}.score-option{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border:0;background:#fffef9;min-height:61px;text-align:left;opacity:1!important;gap:10px}.score-option strong{font-size:0.75rem;display:block}.score-option small{font-size:0.75rem;color:#707667;display:block;margin-top:3px}.score-option .score-number{font-size:1.1rem;font-weight:800;color:#a5aa9e}.score-option.used{background:#f2f3eb}.score-option.used .score-number{color:var(--ink)}.score-option.used strong{color:#929a88}.preview-number{color:#877244;font-weight:600}.score-option.chosen{background:#f5e7c7;box-shadow:inset 0 0 0 2px #c9a24d}.score-option.chosen .preview-number{color:#a7771c}.score-option:not(:disabled):hover{background:#faf1db}.bonus-bar{display:flex;align-items:center;justify-content:space-between;background:#eef1e7;padding:12px 14px;border-radius:9px;color:#636e59;font-size:0.75rem;margin-top:12px;gap:12px}.bonus-bar strong{margin-left:7px;color:#607153}.score-details{margin-top:26px;border-top:1px solid var(--line);padding-top:18px}.score-details summary{display:flex;justify-content:space-between;cursor:pointer;font-size:0.75rem;list-style:none}.score-details summary::-webkit-details-marker{display:none}.table-scroll{overflow:auto;margin-top:15px}.score-table{width:100%;border-collapse:collapse;text-align:right;font-size:0.75rem}.score-table th,.score-table td{padding:10px 10px;border-bottom:1px solid #eceee4;white-space:nowrap}.score-table th:first-child{text-align:left;font-weight:600}.score-table thead th{color:#77856c;font-size:0.75rem}.score-table tbody th{color:#8b9581}.score-table .total{background:#edf0e2;font-weight:850;font-size:.8rem}.reversi-scores{display:flex;gap:12px;margin-bottom:20px}.rv-score{display:flex;gap:10px;align-items:center;flex:1;padding:13px 16px;border:1px solid #e4e8dd;border-radius:12px}.rv-score.current{background:#edf2e5;border-color:#b5c7a7}.rv-score>.stone{width:26px;height:26px}.rv-score strong{display:block;font-size:0.75rem}.rv-score div>span{display:block;font-size:0.75rem;color:#646e5b;margin-top:3px}.rv-score b{margin-left:auto;font-size:1.2rem}.stone{display:block;width:78%;aspect-ratio:1;border-radius:50%;box-shadow:0 3px 3px #102e2530;position:relative}.stone.black{background:radial-gradient(circle at 32% 27%,#4d5c65,#203450 60%);border:1px solid #152a3c}.stone.white{background:radial-gradient(circle at 32% 27%,white,#e8ecdf 70%);border:1px solid #c6d1be}.rv-board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:2px;padding:9px;border-radius:12px;background:#164e45;max-width:450px;margin:auto;box-shadow:0 5px 0 #123c34}.rv-cell{aspect-ratio:1;padding:0;border:0;background:#2e8b77;display:grid;place-items:center;position:relative;min-width:0;opacity:1!important}.rv-cell:nth-child(16n+1),.rv-cell:nth-child(16n+3),.rv-cell:nth-child(16n+5),.rv-cell:nth-child(16n+7),.rv-cell:nth-child(16n+10),.rv-cell:nth-child(16n+12),.rv-cell:nth-child(16n+14),.rv-cell:nth-child(16n+16){background:#328f7b}.rv-cell.selected{background:#78b48e!important;box-shadow:inset 0 0 0 2px #f5eac3}.rv-cell.last::after{content:"";position:absolute;bottom:6%;left:46%;width:8%;height:8%;border-radius:50%;background:var(--coral)}.legal-dot{width:14%;height:14%;border-radius:50%;background:#a6d8bd66}.legal-dot.selected{background:#fff3c8;width:24%;height:24%}.rv-cell:not(:disabled):hover{background:#64a789}.rv-score .stone{flex-shrink:0}
@media(min-width:1500px){.home{padding-top:80px}.hero h1{font-size:5.2rem}.card-art{height:196px}}
@media(max-width:1050px){.site-header{padding:22px 30px}.home{grid-template-columns:1fr 345px;gap:45px 40px;padding:48px 30px 0}.hero h1{font-size:4.1rem}.hero-spark{right:-50px;font-size:3rem}.hero-copy{font-size:.83rem}.entry-panel{padding:25px}.card-body{padding:20px}.card-body p{font-size:0.75rem}.card-meta{font-size:0.75rem}.room-layout{grid-template-columns:235px minmax(0,1fr);gap:22px}.room-page{padding:32px 25px 45px}.lobby-games{grid-template-columns:1fr}.compact{display:grid;grid-template-columns:140px 1fr}.compact .card-art{height:100%;min-height:130px}.compact .card-body{padding:15px 18px;display:grid;grid-template-columns:1fr 120px;gap:4px 15px;align-items:center}.compact .card-body .eyebrow,.compact .card-body h3,.compact .card-body p,.compact .card-meta{grid-column:1}.compact .card-body h3{margin:2px 0}.compact .card-body p{min-height:0}.compact .card-actions{grid-column:2;grid-row:1/5;margin:0;padding:0;border:0;flex-direction:column;gap:3px}.compact .card-actions .btn{width:100%}.compact .card-meta{margin-top:4px}.game-surface{padding:20px}.dice-row{gap:10px}.die{width:59px}.die-face{padding:10px;gap:3px}.die.held .die-face{padding:9px}.result-panel{flex-wrap:wrap}.result-panel>.btn,.result-panel>.muted{margin-left:0}.table-heading h1{font-size:1.7rem}.game-status h3{font-size:1rem}}
@media(max-width:760px){.site-header{padding:18px 22px}.brand{font-size:.95rem}.brand-icon{width:36px;height:36px;font-size:26px;border-radius:11px}.header-note{display:none}.home{grid-template-columns:1fr;gap:29px;padding:32px 22px 0}.hero{padding:4px 0 5px}.hero h1{font-size:3.6rem;margin-top:19px}.hero-spark{font-size:3rem;right:-62px;top:3px}.hero-copy{font-size:.8rem;margin-top:19px}.hero-chips{margin-top:20px}.hero-chips span{font-size:0.75rem;padding:6px 11px}.entry-panel{padding:24px}.entry-panel h2{font-size:1.27rem}.entry-panel .field{margin-top:19px}.hero .eyebrow{font-size:0.75rem}.library{margin-top:10px}.section-heading{align-items:start}.section-heading h2{font-size:1.45rem}.count-label{font-size:0.75rem;margin-top:7px;max-width:95px;text-align:right;line-height:1.8}.game-grid{grid-template-columns:1fr;gap:20px}.game-card:not(.compact){display:grid;grid-template-columns:136px 1fr}.game-card:not(.compact) .card-art{height:100%;min-height:205px}.game-card:not(.compact) .card-art svg{width:220px;max-width:none;transform:translateX(-40px);height:100%}.game-card:not(.compact) .card-body{padding:19px 17px}.card-body h3{font-size:1.25rem}.card-body p{font-size:0.75rem;line-height:1.7}.card-meta{font-size:0.75rem;flex-wrap:wrap;gap:5px;margin-top:12px}.card-actions{gap:10px;margin-top:13px;padding-top:12px}.card-actions .btn{font-size:0.75rem;padding:8px;min-height:36px}.card-actions .rules-link{font-size:0.75rem}.card-body .eyebrow{font-size:0.75rem;letter-spacing:.12em}.art-badge{top:13px;left:12px;font-size:0.75rem;padding:3px 8px}.how-to{grid-template-columns:1fr;gap:23px;padding:26px 0 30px}.how-to>div{grid-template-columns:36px 1fr}.site-footer{margin:0 22px;padding:18px 0 22px;font-size:0.75rem;gap:12px}.error{margin:14px 22px 0;font-size:0.75rem;padding:10px 13px}.room-page{padding:27px 19px 36px}.table-heading{align-items:end;margin-bottom:24px}.table-heading h1{font-size:1.55rem;gap:9px}.table-heading .eyebrow{font-size:0.75rem}.table-heading .text-button{font-size:0.75rem}.live-pill{font-size:0.75rem;padding:5px 8px;gap:6px}.live-pill .dot{width:5px;height:5px}.room-layout{grid-template-columns:1fr;gap:23px}.room-sidebar{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}.invite-card{padding:16px 13px}.invite-card .eyebrow{font-size:0.75rem;letter-spacing:.09em}.invite-card p{font-size:0.75rem;margin-top:7px}.room-code{font-size:1.35rem;margin:10px 0 14px;letter-spacing:.13em}.two-buttons{grid-template-columns:1fr;gap:6px}.two-buttons .btn{min-height:33px;padding:7px 4px;font-size:0.75rem}.invite-card>small{font-size:0.75rem;margin-top:12px}.members-panel{padding:16px 13px}.panel-heading{margin-bottom:14px}.panel-heading h2{font-size:.76rem}.panel-heading>span{font-size:0.75rem}.players{gap:12px}.avatar{width:29px;height:29px;font-size:0.75rem}.player{gap:7px}.player strong{font-size:0.75rem}.player div>span{font-size:0.75rem}.player.empty{font-size:0.75rem}.player-mark{font-size:0.75rem}.room-tip{display:none}.lobby-heading{margin-bottom:16px;gap:10px}.lobby-heading h2{font-size:1.35rem}.lobby-heading p{font-size:0.75rem}.lobby-heading .pill{font-size:0.75rem;max-width:110px;white-space:normal;text-align:center}.compact{grid-template-columns:97px 1fr}.compact .card-art{min-height:141px}.compact .card-art svg{width:180px;max-width:none;transform:translateX(-40px);height:100%}.compact .card-body{padding:14px;display:block}.compact .card-body .eyebrow{font-size:0.75rem}.compact .card-body h3{font-size:1.08rem;margin:5px 0}.compact .card-body p{font-size:0.75rem}.compact .card-meta{display:none}.compact .card-actions{flex-direction:row;margin-top:11px;gap:10px}.compact .card-actions .btn{font-size:0.75rem;min-height:32px;flex:1;width:auto}.compact .art-badge{left:8px;top:9px;font-size:0.75rem}.start-bar{padding:18px;gap:14px;margin-top:19px}.start-bar strong{font-size:.8rem}.start-bar p{font-size:0.75rem;line-height:1.7}.start-bar .btn{font-size:0.75rem;padding:10px 12px}.play-heading{margin-top:4px;margin-bottom:16px}.play-heading h2{font-size:1.5rem}.play-heading .eyebrow{font-size:0.75rem}.play-heading-right{gap:9px}.play-heading-right .pill{font-size:0.75rem}.game-surface{padding:17px;border-radius:16px}.game-status{gap:11px;margin-bottom:20px}.status-icon{width:35px;height:35px;border-radius:11px;font-size:1.2rem}.game-status h3{font-size:.9rem}.game-status p{font-size:0.75rem;line-height:1.8}.game-bottom{gap:10px;align-items:end}.game-bottom>.muted{font-size:0.75rem;max-width:50%;line-height:1.75}.game-bottom .btn{font-size:0.75rem;padding:10px 12px}.fleet-toolbar{gap:12px}.ship-picker{gap:5px;width:100%;justify-content:space-between}.ship-choice{padding:7px;min-width:43px;flex:1}.ship-choice>span{font-size:0.75rem}.ship-choice>small{font-size:0.75rem}.tool-buttons{justify-content:end;width:100%;gap:8px}.sea-labels{font-size:0.75rem;grid-template-columns:15px repeat(10,1fr)}.sea-with-rows{grid-template-columns:15px minmax(0,1fr)}.sea-rows{font-size:0.75rem}.sea-cell{font-size:1rem}.sea-cell.ship{box-shadow:inset 0 0 0 2px #9db1d1}.board-tabs button{padding:9px 15px;font-size:0.75rem}.waiting-scene{padding:40px 5px}.waiting-scene h3{font-size:1.1rem}.waiting-scene p{font-size:0.75rem}.spectator-seas{grid-template-columns:1fr;gap:23px}.spectator-seas h4{font-size:0.75rem}.legend{font-size:0.75rem}.dice-stage{padding:23px 12px 16px}.dice-row{gap:9px;margin-bottom:24px}.die{width:49px;flex:1;max-width:56px}.die-face{padding:9px;gap:3px;border-radius:10px;box-shadow:0 4px 0 #e4d8be}.die.held .die-face{padding:8px;box-shadow:0 4px 0 #ed795b66}.die small{font-size:0.75rem;margin-top:9px}.roll-button{min-width:185px;min-height:41px;font-size:0.75rem}.small-copy{font-size:0.75rem;line-height:1.8}.score-heading h4{font-size:.8rem}.score-heading .pill{font-size:0.75rem}.score-options{grid-template-columns:1fr 1fr}.score-option{padding:10px 11px;min-height:58px}.score-option strong{font-size:0.75rem}.score-option small{font-size:0.75rem}.score-option .score-number{font-size:.94rem}.bonus-bar{font-size:0.75rem;padding:10px;gap:6px}.score-confirm{align-items:center}.score-details summary{font-size:0.75rem}.score-table{font-size:0.75rem}.score-table th,.score-table td{padding:9px 8px}.score-table thead th{font-size:0.75rem}.score-table .total{font-size:0.75rem}.reversi-scores{gap:8px;margin-bottom:18px}.rv-score{padding:11px 9px;gap:7px}.rv-score>.stone{width:22px;height:22px}.rv-score strong{font-size:0.75rem}.rv-score div>span{font-size:0.75rem}.rv-score b{font-size:1rem}.rv-board{padding:6px;gap:2px;border-radius:9px}.result-panel{padding:17px;gap:11px;border-radius:14px}.result-star{font-size:1.8rem}.result-panel h2{font-size:1.05rem}.result-panel p{font-size:0.75rem}.result-panel .eyebrow{font-size:0.75rem}.result-panel>.btn{font-size:0.75rem;min-height:39px;margin-left:auto}.result-panel>.muted{font-size:0.75rem}.toast{font-size:0.75rem;padding:11px 17px;bottom:18px}dialog{padding:27px}dialog h2{font-size:1.5rem}dialog ol{font-size:.77rem}.rules-meta{font-size:0.75rem}}
@media(max-width:370px){.home{padding-left:17px;padding-right:17px}.hero h1{font-size:3.1rem}.hero-spark{right:-53px;font-size:2.6rem}.game-card:not(.compact){grid-template-columns:105px 1fr}.card-body{padding:16px!important}.card-actions{gap:7px}.card-actions .btn{font-size:0.75rem}.game-surface{padding:13px}.die-face{padding:7px;gap:2px}.die.held .die-face{padding:6px}.dice-row{gap:7px}.room-page{padding-left:15px;padding-right:15px}.start-bar{flex-wrap:wrap}.start-bar>.btn{width:100%}.score-option strong{font-size:0.75rem}.score-option small{font-size:0.75rem}.reversi-scores{flex-direction:column}.rv-score{padding:10px 12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Phone overrides keep reading sizes and touch targets comfortable. The sea
   and reversi cells remain compact and use a separate confirmation button. */
@media(max-width:760px){
  input,.join-row input{font-size:16px;min-height:48px;padding:12px 13px}
  .field,.hero-copy,.entry-panel p,.card-body p,.compact .card-body p,
  .lobby-heading p,.start-bar p,.game-status p,.waiting-scene p,
  .result-panel p,.result-panel>.muted,.game-bottom>.muted,
  .small-copy,.score-confirm>.muted,.toast,.error{font-size:14px;line-height:1.75}
  .btn,.btn.small,.join-row .btn,.two-buttons .btn,.card-actions .btn,
  .compact .card-actions .btn,.start-bar .btn,.game-bottom .btn,
  .result-panel>.btn,.roll-button{font-size:14px;min-height:44px;padding:11px 14px;line-height:1.4}
  .card-actions .btn,.compact .card-actions .btn{white-space:normal}
  .text-button,.rules-link,.card-actions .rules-link,.compact .rules-link,
  .table-heading .text-button,.tool-buttons .text-button,.resume-button{
    min-height:44px;font-size:14px;line-height:1.4;display:inline-flex;align-items:center;justify-content:center
  }
  .rules-link,.text-button{min-width:44px}
  .resume-button{display:flex;min-height:44px}
  .brand small,.eyebrow,.hero .eyebrow,.card-body .eyebrow,
  .compact .card-body .eyebrow,.table-heading .eyebrow,
  .invite-card .eyebrow,.play-heading .eyebrow,.result-panel .eyebrow,
  .hero-chips span,.count-label,.card-meta,.compact .card-meta,
  .art-badge,.compact .art-badge,.live-pill,.pill,.lobby-heading .pill,
  .play-heading-right .pill,.score-heading .pill,.site-footer,
  .selected-mini,.selected-mini .muted,.or-line,
  .invite-card p,.invite-card>small,.panel-heading>span,
  .player strong small,.player div>span,.legend,.die small,
  .score-option small,.bonus-bar,.score-table,.score-table thead th,
  .score-table .total,.rv-score div>span,.rules-meta{font-size:12px;line-height:1.6}
  .eyebrow,.card-body .eyebrow,.compact .card-body .eyebrow,
  .invite-card .eyebrow,.play-heading .eyebrow,.result-panel .eyebrow,
  .brand small,.count-label,.site-footer{font-size:0.75rem}
  .hero .eyebrow{font-size:12px}
  .hero-chips{gap:7px}.hero-chips span{padding:6px 10px}
  .selected-mini{flex-wrap:wrap}.selected-mini .muted{margin-left:0}
  .or-line{margin-top:19px}.join-row{flex-wrap:wrap}.join-row input{flex:1;min-width:125px}
  .entry-panel .field{margin-top:20px}.count-label{max-width:115px}
  .card-actions,.compact .card-actions{gap:7px;flex-wrap:wrap}
  .card-actions .rules-link,.compact .rules-link{min-width:44px}
  .art-badge{padding:4px 9px}.card-meta{gap:8px}
  .how-to strong,.how-to p{font-size:14px}.how-to p{line-height:1.7}
  .invite-card{padding:17px 13px}.invite-card p{font-size:12px}
  .invite-card>small{font-size:0.75rem}.two-buttons .btn{padding:11px 5px}
  .room-sidebar{gap:12px}.room-code{font-size:1.5rem;letter-spacing:.1em}
  .panel-heading h2{font-size:15px}.player{min-height:44px}
  .player strong{font-size:14px;line-height:1.4}.player div>span{font-size:12px}
  .player.empty{font-size:13px;min-height:44px}.player strong small{font-size:0.75rem}
  .avatar{width:32px;height:32px;font-size:14px}.player-mark{font-size:14px}
  .lobby-heading{align-items:start}.lobby-heading .pill{max-width:115px;padding:5px 8px}
  .compact .card-body h3{font-size:20px}.compact .card-art{min-height:180px}
  .compact .card-body{padding:16px}.compact .card-actions{margin-top:12px}
  .start-bar{align-items:start;flex-wrap:wrap}.start-bar strong{font-size:16px}
  .start-bar .btn{margin-left:auto}.game-status h3{font-size:17px}
  .game-status{align-items:start}.status-icon{margin-top:1px}
  .game-bottom{align-items:center;flex-wrap:wrap}
  .game-bottom>.muted{max-width:none;flex:1;min-width:125px}
  .game-bottom .btn{margin-left:auto}.tool-buttons{flex-wrap:wrap}
  .ship-choice{min-height:54px;min-width:44px;padding:7px 4px}
  .ship-choice>small{font-size:12px}.ship-choice>span{font-size:0.75rem}
  .board-tabs button{min-height:44px;font-size:14px;padding:11px 16px}
  .sea-labels,.sea-rows{font-size:0.75rem}
  .sea-labels{grid-template-columns:20px repeat(10,1fr)}
  .sea-with-rows{grid-template-columns:20px minmax(0,1fr)}
  .waiting-scene h3{font-size:21px}.spectator-seas h4{font-size:14px}
  .legend{gap:12px;flex-wrap:wrap}.legend i{width:10px;height:10px}
  .dice-row{gap:8px}.die{min-width:44px;max-width:58px}
  .die small{font-size:12px;line-height:1.6}.dice-stage{padding:24px 12px 18px}
  .score-heading h4{font-size:16px}.score-option{min-height:68px;padding:12px 14px;gap:10px}
  .score-option strong{font-size:14px;line-height:1.4}.score-option small{font-size:12px}
  .score-option .score-number{font-size:20px}.score-details summary{font-size:14px;min-height:44px;align-items:center}
  .score-table th,.score-table td{padding:11px 10px}.score-table .total{font-size:14px}
  .bonus-bar{padding:12px;flex-wrap:wrap}.score-confirm{gap:12px}
  .rv-score{min-height:64px;flex-wrap:wrap;padding:12px}
  .rv-score strong{font-size:14px}.rv-score div>span{font-size:12px}
  .rv-score b{font-size:20px}.rv-score>.stone{width:24px;height:24px}
  .result-panel h2{font-size:22px;line-height:1.35}.result-panel .eyebrow{font-size:0.75rem}
  .result-panel>.btn{margin-top:7px}.site-footer{flex-wrap:wrap;gap:10px}
  dialog ol{font-size:15px;line-height:1.85}.rules-meta{font-size:13px}
}
@media(max-width:440px){
  .game-card:not(.compact){display:block}
  .game-card:not(.compact) .card-art{height:170px;min-height:170px}
  .game-card:not(.compact) .card-art svg{width:100%;height:100%;transform:none}
  .game-card:not(.compact) .card-body{padding:22px!important}
  .card-body h3{font-size:25px}.card-body p{font-size:14px}
  .card-meta{font-size:12px}.card-actions{flex-wrap:nowrap}
  .card-actions .btn{padding:11px 15px;font-size:14px}
  .compact{grid-template-columns:82px minmax(0,1fr)}
  .compact .card-body{padding:15px!important}.compact .card-actions{flex-wrap:wrap}
  .compact .card-actions .btn{flex-basis:100%;width:100%}
  .compact .rules-link{margin-left:auto}.compact .card-art{min-height:230px}
  .compact .card-art svg{transform:translateX(-47px)}
  .compact .art-badge{left:7px;padding:3px 7px;font-size:0.75rem}
  .score-options{grid-template-columns:1fr}
  .score-option{min-height:62px}.score-option strong{font-size:15px}
  .reversi-scores{flex-direction:column}.rv-score{flex-wrap:nowrap}
  .game-bottom .btn{max-width:100%;white-space:normal}
  .play-heading-right .rules-link{font-size:13px}.play-heading-right{gap:8px;flex-wrap:wrap;justify-content:end}
}
/* ---- Board Club v0.2 additions (2026-11-09, Claude Opus 5.5): new game themes, lobby settings, turn clock, rematch, baseball, blind nine, gomoku ---- */
:root{--coral-soft:#fbe3da;--violet:#7a5fc7;--violet-soft:#ebe5f8;--wood:#a8762e;--wood-soft:#f3e4c6}
.coral .card-art{background:var(--coral-soft);color:var(--coral)}.violet .card-art{background:var(--violet-soft);color:var(--violet)}.wood .card-art{background:var(--wood-soft);color:var(--wood)}
.game-dot.coral{background:var(--coral)}.game-dot.violet{background:var(--violet)}.game-dot.wood{background:var(--wood)}
.status-icon.coral{background:var(--coral-soft);color:#d4603f}.status-icon.violet{background:var(--violet-soft);color:var(--violet)}.status-icon.wood{background:var(--wood-soft);color:var(--wood)}
.waiting-orbit.coral{background:var(--coral-soft);color:#d4603f}
.tiny{font-size:0.75rem;margin-top:8px}
.settings{padding:18px 21px;margin-top:20px;display:flex;flex-direction:column;gap:14px}
.setting-row{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.setting-row strong{font-size:.8rem;display:block}.setting-row small{font-size:0.75rem;color:var(--muted);display:block;margin-top:3px;max-width:340px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid #dadfd8;background:#fffef9;border-radius:20px;padding:7px 13px;font-size:0.75rem;min-height:34px;color:var(--ink)}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fffef9;font-weight:750}
.chip:disabled{opacity:1;cursor:default}.chip:disabled:not(.on){color:#a2a69e}
.clock-pill{font-size:0.75rem;border-radius:20px;padding:6px 11px;background:#eef1e7;color:#5f6d5c;font-variant-numeric:tabular-nums;white-space:nowrap}
.clock-pill.mine{background:#e5ecff;color:var(--blue);font-weight:750}
.clock-pill.low{background:#fde6dc;color:#c4502f;font-weight:800}
.strike-note{background:#fff4e2;border:1px solid #f1d6a4;color:#8f6216;border-radius:10px;padding:9px 13px;font-size:0.75rem;margin:0 0 14px}
.result-actions{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.result-actions .btn{font-size:0.75rem;min-height:39px}.result-actions small,.result-actions .muted{font-size:0.75rem;text-align:right}
/* number baseball */
.bb-slots{display:flex;justify-content:center;gap:10px;margin:6px 0 14px}
.bb-slot{width:52px;height:62px;border-radius:12px;border:2px dashed #e3c6ba;display:grid;place-items:center;font-size:1.7rem;font-weight:850;color:var(--ink);background:#fffaf6}
.bb-slot.filled{border-style:solid;border-color:var(--coral);background:#fff}
.bb-keypad{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;max-width:420px;margin:0 auto}
.bb-key{min-height:46px;border-radius:11px;border:1px solid #e5ddd3;background:#fffef9;font-size:1.05rem;font-weight:800;color:var(--ink)}
.bb-key.soft{font-size:0.75rem;font-weight:700;color:#7d756c;grid-column:span 2}
.bb-key:not(:disabled):active{background:var(--coral-soft)}
.bb-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0}
.bb-history{border:1px solid #efe5dc;border-radius:12px;padding:12px 14px;background:#fffcf8}
.bb-history h4{font-size:.76rem;display:flex;justify-content:space-between;margin-bottom:8px}.bb-history h4 small{color:var(--muted);font-weight:600}
.bb-history ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.bb-history li{display:grid;grid-template-columns:22px 1fr auto;align-items:center;font-size:.8rem;padding:4px 0;border-bottom:1px dashed #f0e6dc}
.bb-turn{font-size:0.75rem;color:#a8a097}.bb-guess{font-weight:850;letter-spacing:.18em;font-variant-numeric:tabular-nums}
.bb-result{display:flex;gap:4px}.bb-s,.bb-b,.bb-out{font-size:0.75rem;font-weight:850;border-radius:10px;padding:2px 7px;color:#fff}
.bb-s{background:var(--coral)}.bb-b{background:var(--blue)}.bb-out{background:#9aa197}
.bb-secret-chip{display:flex;align-items:center;gap:9px;margin:0 auto 12px;border:1px solid #ecd8cd;background:#fff6f1;border-radius:20px;padding:6px 14px;font-size:0.75rem;color:#8b5a49}
.bb-secret-chip strong{letter-spacing:.2em;font-size:.9rem;color:var(--ink)}.bb-secret-chip small{color:#9a634e}
.bb-own{letter-spacing:.2em}
.bb-alert{background:#fff0e9;border:1px solid #f2c3b0;color:#a54129;border-radius:10px;padding:9px 13px;font-size:0.75rem;text-align:center}
.bb-reveal{display:flex;justify-content:center;gap:12px;margin:6px 0 4px;flex-wrap:wrap}
.bb-reveal span{display:flex;flex-direction:column;align-items:center;font-size:0.75rem;color:var(--muted);border:1px solid var(--line);border-radius:12px;padding:8px 16px}
.bb-reveal strong{font-size:1.3rem;letter-spacing:.2em;color:var(--ink)}
.bb-input{border-top:1px solid var(--line);padding-top:16px;margin-top:6px}.bb-input.waiting .bb-keypad{opacity:.85}
.bb-memo{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:center;margin-top:16px}.bb-memo>.muted{font-size:0.75rem;margin-right:4px}
.memo-digit{width:30px;height:30px;border-radius:8px;border:1px solid #e3e0d6;background:#fffef9;font-size:.75rem;font-weight:800;position:relative;padding:0}
.memo-digit.no{color:#b9bcb3;text-decoration:line-through;background:#f1f1ec}
.memo-digit.yes{background:var(--ink);color:#fffef9;border-color:var(--ink)}
.bb-memo+.tiny{text-align:center}
/* blind nine */
.bn-scores{display:flex;gap:10px;margin-bottom:16px}
.bn-score{flex:1;display:flex;align-items:center;gap:8px;padding:12px 15px;border:1px solid #e6e1f1;border-radius:12px}
.bn-score.current{background:var(--violet-soft);border-color:#c9bce9}
.bn-score strong{display:block;font-size:0.75rem}.bn-score span{display:block;font-size:0.75rem;color:#6a637d;margin-top:3px}
.bn-score b{margin-left:auto;font-size:1.5rem;color:var(--violet)}
.bn-table{background:#f6f3fc;border:1px solid #e6e0f3;border-radius:15px;padding:16px;text-align:center}
.bn-table .eyebrow{color:#726892}
.bn-slots{display:flex;justify-content:center;align-items:center;gap:22px;margin-top:12px}
.bn-slot{display:flex;flex-direction:column;align-items:center;gap:8px}.bn-slot small{font-size:0.75rem;color:#706a83}
.bn-empty{width:52px;height:70px;border-radius:11px;border:2px dashed #cfc6e6;display:grid;place-items:center;color:#c1b8dc}
.bn-vs{font-size:0.75rem;font-weight:850;color:#7466a1}
.bn-hand-wrap{margin-top:18px}.bn-hand-wrap h4{font-size:.8rem;margin-bottom:10px}.bn-hand-wrap h4 small{font-weight:500;margin-left:6px}
.bn-hand{display:grid;grid-template-columns:repeat(9,1fr);gap:6px}
.tile{aspect-ratio:5/7;border-radius:10px;font-size:1.25rem;font-weight:850;display:grid;place-items:center;padding:0;min-width:0;opacity:1!important}
.tile.black{background:var(--ink);color:#fffef9;border:2px solid var(--ink)}
.tile.white{background:#fffef9;color:var(--ink);border:2px solid #cfc9df}
.tile.selected{box-shadow:0 0 0 3px var(--coral);transform:translateY(-4px)}
.tile.used{background:#f1f0ec;color:#c9c8c1;border:2px dashed #dddbd3}
.tile.small{width:52px;aspect-ratio:auto;height:70px}
button.tile:disabled{cursor:default}button.tile:disabled:not(.selected){filter:saturate(.85)}
.bn-history td,.bn-history th{text-align:center!important}
/* gomoku */
.gm-board{display:grid;grid-template-columns:repeat(15,minmax(0,1fr));background:#e3bd7c;border-radius:10px;padding:6px;max-width:520px;margin:0 auto;box-shadow:0 5px 0 #c89d58}
.gm-cell{aspect-ratio:1;min-width:0;padding:0;border:0;background:transparent;position:relative;display:grid;place-items:center;opacity:1!important}
.gm-cell::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:#8a6a35;opacity:.55}
.gm-cell::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:#8a6a35;opacity:.55}
.gm-cell:nth-child(15n+1)::before{left:50%}.gm-cell:nth-child(15n)::before{right:50%}
.gm-cell:nth-child(-n+15)::after{top:50%}.gm-cell:nth-child(n+211)::after{bottom:50%}
.gm-cell.star{background:radial-gradient(circle,#8a6a35 0 9%,transparent 11%)}
.gm-cell .stone{width:86%;z-index:1}
.gm-cell .stone.ghost{opacity:.45}
.gm-cell.selected{box-shadow:inset 0 0 0 2px var(--coral);border-radius:4px}
.stone.last::after{content:"";position:absolute;inset:36%;border-radius:50%;background:var(--coral)}
.gm-cell.win .stone{box-shadow:0 0 0 2px var(--coral),0 3px 3px #102e2530}
.gm-ban{z-index:1;color:#b4532f;font-size:0.75rem;font-weight:800}
.gm-cell:not(:disabled):hover{background:#f0d6a3}
@media(max-width:760px){.settings{padding:15px}.setting-row strong{font-size:0.75rem}.setting-row small{font-size:0.75rem}.chip{font-size:0.75rem;padding:6px 10px}.clock-pill{font-size:0.75rem;padding:5px 9px}.result-panel{flex-wrap:wrap}.result-actions{width:100%;align-items:stretch}.result-actions small{text-align:left}.bb-columns{grid-template-columns:1fr 1fr;gap:8px}.bb-history{padding:10px}.bb-history li{font-size:0.75rem}.bb-slot{width:46px;height:56px;font-size:1.5rem}.bb-key{min-height:44px}.bn-score{padding:10px}.bn-score strong{font-size:0.75rem}.bn-score span{font-size:0.75rem}.bn-hand{gap:4px}.tile{font-size:1.05rem;border-radius:8px}.gm-board{padding:4px;border-radius:8px}.play-heading{flex-wrap:wrap;gap:8px}}
/* v0.2: on phones, keep the board first during a game; the invite card is only needed in the lobby */
.gm-scores{flex-direction:row!important}.gm-scores .rv-score{min-height:0;flex-wrap:nowrap}
@media(max-width:760px){.room-layout.in-game .room-sidebar{order:2;grid-template-columns:1fr}.room-layout.in-game .invite-card,.room-layout.in-game .room-tip{display:none}.room-layout.in-game .players{flex-direction:row;flex-wrap:wrap;gap:10px 16px}}

/* ---- Board Club v0.3 additions (2026-11-09, Claude Opus 5.5): hidden code, blind command, night sky, liar dice ---- */
:root{--slate:#4b5875;--slate-soft:#e3e7f0;--olive:#5b7340;--olive-soft:#e4ead6;--night:#2b3766;--night-soft:#dfe3f3;--rose:#a54b61;--rose-soft:#f5e1e6}
.slate .card-art{background:var(--slate-soft);color:var(--slate)}.olive .card-art{background:var(--olive-soft);color:var(--olive)}.night .card-art{background:#202a4a;color:#e3b23c}.rose .card-art{background:var(--rose-soft);color:var(--rose)}
.game-dot.slate{background:var(--slate)}.game-dot.olive{background:var(--olive)}.game-dot.night{background:var(--night)}.game-dot.rose{background:var(--rose)}
.status-icon.slate{background:var(--slate-soft);color:var(--slate)}.status-icon.olive{background:var(--olive-soft);color:var(--olive)}.status-icon.night{background:var(--night-soft);color:var(--night)}.status-icon.rose{background:var(--rose-soft);color:var(--rose)}
.waiting-orbit.olive{background:var(--olive-soft);color:var(--olive)}
/* hidden code */
.hc-drawn{display:flex;align-items:center;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:14px;font-size:0.75rem}
.hc-rows{display:flex;flex-direction:column;gap:12px}
.hc-row{border:1px solid #e2e5ec;border-radius:13px;padding:12px 14px;background:#fbfcfe}
.hc-row.current{border-color:#aab4cc;background:#f1f4fa}.hc-row.out{opacity:.6}
.hc-row h4{font-size:.76rem;display:flex;gap:8px;align-items:center;margin-bottom:9px}.hc-row h4 small{margin-left:auto;font-weight:500;font-size:0.75rem}
.hc-tiles{display:flex;gap:6px;flex-wrap:wrap}
.hc-tile{width:44px;height:62px;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;position:relative;opacity:1!important;gap:2px}
.hc-tile b{font-size:1.2rem;font-weight:850}
.hc-tile.black{background:var(--ink);color:#fffef9;border:2px solid var(--ink)}
.hc-tile.white{background:#fffef9;color:var(--ink);border:2px solid #c9cfdc}
.hc-tile.open{box-shadow:inset 0 0 0 2px var(--coral)}
.hc-tile.mine-hidden{outline:2px dashed #9aa6bd;outline-offset:2px}
.hc-tile.selected{transform:translateY(-4px);box-shadow:0 0 0 3px var(--coral)}
.hc-miss{font-size:0.625rem;line-height:1;opacity:.75;letter-spacing:-.02em}
.hc-picker{margin:14px 0}.hc-numbers{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.hc-numbers .chip{min-height:40px;font-size:.85rem;font-weight:800}.chip.missed:not(.on){text-decoration:line-through;color:#b4b8b0}
.hc-log{list-style:none;padding:0;margin:10px 0 0;display:flex;flex-direction:column;gap:5px;font-size:0.75rem}
/* blind command */
.bc-board,.bc-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:3px;background:#b9c59a;border-radius:11px;padding:5px;max-width:420px;margin:0 auto}
.bc-board{box-shadow:0 5px 0 #98a676}
.bc-cell{aspect-ratio:1;min-width:0;padding:0;border:0;border-radius:6px;background:#dfe6c8;display:grid;place-items:center;position:relative;opacity:1!important}
.bc-board .bc-cell:nth-child(n+13):nth-child(-n+36){background:#d5ddb9}
.bc-cell.selected{box-shadow:inset 0 0 0 3px var(--coral)}.bc-cell.target{background:#f3e7c0!important}.bc-cell.chosen{box-shadow:inset 0 0 0 3px var(--blue)}
.bc-cell.last::after{content:"";position:absolute;inset:2px;border:2px dashed #ed795b99;border-radius:5px;pointer-events:none}
.bc-dot{width:22%;height:22%;border-radius:50%;background:#c29a3b}
.bc-piece{width:88%;height:88%;border-radius:7px;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.05}
.bc-piece b{font-size:0.75rem;font-weight:850}.bc-piece small{font-size:0.625rem;opacity:.85}
.bc-piece.mine{background:#4d6a3a;color:#fffef9}.bc-piece.enemy{background:#8c3b2f;color:#fffef9}.bc-piece.enemy.known{background:#b25a49}
.bc-piece.k-mine,.bc-piece.k-flag{background:#2f3e24}.bc-piece.enemy.k-flag{background:#6b241b}
.bc-setup{display:flex;flex-direction:column;align-items:center;gap:6px}.bc-setup .eyebrow{font-size:0.75rem}
.home-grid{width:100%}
.bc-battle{background:#f6ece7;border:1px solid #ecc7ba;color:#8a3a26;border-radius:10px;padding:9px 13px;font-size:0.75rem;margin-bottom:12px;text-align:center}
.bc-legend{font-size:0.75rem;line-height:1.8;padding-left:18px;margin:10px 0 0}
/* night sky */
.sky-tokens{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:0.75rem;color:#5e6687;margin-bottom:12px}.sky-tokens b{color:var(--night);letter-spacing:.06em}.sky-tokens b i{color:#6471a5;font-style:normal}.sky-tokens .fuse{color:#c4502f}
.sky-stacks{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-bottom:16px}
.sky-stack{border-radius:11px;padding:10px 4px;text-align:center;color:#fff}.sky-stack b{display:block;font-size:1.4rem}.sky-stack small{font-size:0.75rem;opacity:.9}
.c-red{--sky:#e0584a}.c-yellow{--sky:#d9a32b}.c-green{--sky:#3f9e6a}.c-blue{--sky:#4a78d6}.c-white{--sky:#a7a294}
.sky-stack,.sky-card:not(.unknown),.sky-mini{background:var(--sky)}
.sky-others{display:flex;flex-direction:column;gap:10px}
.sky-hand{border:1px solid #e1e4ef;border-radius:13px;padding:11px 13px}.sky-hand.current{border-color:#a9b2d6;background:#f4f5fb}.sky-hand.mine{margin-top:12px}
.sky-hand h4{font-size:0.75rem;margin-bottom:8px}.sky-hand h4 small{font-weight:500;margin-left:6px;font-size:0.75rem}
.sky-cards{display:flex;gap:6px}
.sky-card{flex:1;max-width:58px;aspect-ratio:5/7;border-radius:9px;border:0;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;position:relative;opacity:1!important}
.sky-card b{font-size:1.25rem}.sky-card small{font-size:0.625rem}
.sky-card.unknown{background:repeating-linear-gradient(45deg,#2b3766,#2b3766 6px,#34417a 6px,#34417a 12px);color:#e3b23c}
.sky-card.selected{transform:translateY(-5px);box-shadow:0 0 0 3px var(--coral)}
.sky-know{position:absolute;top:3px;right:4px;font-size:0.625rem;font-style:normal;background:#fffef9;color:var(--night);border-radius:6px;padding:0 3px}
.sky-hints{margin-top:9px}.sky-hints .chip.c-red,.sky-hints .chip.c-yellow,.sky-hints .chip.c-green,.sky-hints .chip.c-blue,.sky-hints .chip.c-white{border-color:var(--sky);color:var(--sky);font-weight:750}.sky-hints .chip.on{background:var(--ink);color:#fff}
.sky-actions{margin-top:12px}
.sky-discards{display:flex;flex-wrap:wrap;gap:4px;margin:10px 0}.sky-mini{width:22px;height:28px;border-radius:5px;color:#fff;font-size:0.75rem;font-weight:800;display:grid;place-items:center}
/* liar dice */
.ld-players{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:7px;margin-bottom:14px}
.ld-player{border:1px solid #eedde2;border-radius:11px;padding:9px 11px;font-size:0.75rem;display:flex;flex-direction:column;gap:3px}.ld-player.current{background:var(--rose-soft);border-color:#dfaab8}.ld-player.out{opacity:.5}
.ld-bid{display:flex;align-items:center;justify-content:center;gap:10px;background:#fbf3f5;border:1px solid #efd7de;border-radius:14px;padding:14px;margin-bottom:14px;flex-wrap:wrap}
.ld-bid b{font-size:1.5rem;color:var(--rose)}.ld-bid small{font-size:0.75rem;color:#836870;width:100%;text-align:center}.ld-bid small:first-child{order:-1}.ld-bid.empty{min-height:54px}
.die-face.mini{width:34px;padding:6px;gap:2px;border-radius:8px;box-shadow:0 3px 0 #e4d8be;display:inline-grid}
.ld-mine{text-align:center;margin-bottom:14px}.ld-mine small{font-size:0.75rem;color:var(--muted)}.ld-mine>div{display:flex;justify-content:center;gap:8px;margin-top:6px}
.ld-die.big .die-face.mini{width:46px;padding:8px}
.ld-controls{border-top:1px solid var(--line);padding-top:14px}
.ld-qty{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:10px}.ld-qty b{font-size:1.2rem;min-width:56px;text-align:center}.ld-qty .bb-key{width:52px}
.ld-faces{display:flex;justify-content:center;gap:7px;flex-wrap:wrap}
.ld-face{border:2px solid transparent;background:none;padding:3px;border-radius:11px}.ld-face.on{border-color:var(--rose)}
.ld-liar{color:var(--rose);border-color:#e7b5c2}
.ld-reveal{margin-top:16px;background:#f7f4ee;border:1px solid #e6dfd2;border-radius:13px;padding:12px 14px}.ld-reveal h4{font-size:0.75rem}.ld-reveal p{font-size:0.75rem;margin:6px 0 10px;color:#6c6a62}
.ld-all{display:flex;flex-direction:column;gap:6px}.ld-all>div{display:flex;align-items:center;gap:8px}.ld-all small{width:64px;font-size:0.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ld-all span{display:flex;gap:4px;flex-wrap:wrap}
.ld-die.match .die-face{border-color:var(--rose);background:#fde9ee}
@media(max-width:760px){.hc-tile{width:38px;height:54px}.hc-tile b{font-size:1.05rem}.hc-numbers .chip{min-height:38px}.bc-piece b{font-size:0.75rem}.bc-piece small{font-size:0.625rem}.sky-stack b{font-size:1.15rem}.sky-card b{font-size:1.05rem}.die-face.mini{width:30px;padding:5px}.ld-die.big .die-face.mini{width:42px}}

/* ---- Board Game Club v0.4 additions (2026-11-09, Claude Opus 5.5): one card, who's the liar, secret letter ---- */
:root{--sky-blue:#2f7fb8;--sky-soft:#dcecf7}
.sky .card-art{background:var(--sky-soft);color:var(--sky-blue)}.game-dot.sky{background:var(--sky-blue)}.status-icon.sky{background:var(--sky-soft);color:var(--sky-blue)}
/* one card */
.pc{width:52px;height:74px;border-radius:9px;border:1px solid #cfd6e6;background:#fffef9;color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;flex-shrink:0;opacity:1!important;gap:1px}
.pc b{font-size:1.05rem;font-weight:850;line-height:1}.pc span{font-size:1.15rem;line-height:1}.pc small{font-size:0.625rem}
.pc.red{color:#d2453a}.pc.joker{background:linear-gradient(135deg,#fff6e8,#f4e3ff)}.pc.joker b{font-size:0.625rem;letter-spacing:.04em}
.pc.big{width:74px;height:104px}.pc.big b{font-size:1.5rem}.pc.big span{font-size:1.6rem}
.pc.back{background:repeating-linear-gradient(45deg,#2f7fb8,#2f7fb8 6px,#3b8dc8 6px,#3b8dc8 12px);border:2px solid #fffef9;box-shadow:0 0 0 1px #2f7fb8;display:block;width:52px;height:74px}
.pc:disabled:not(.playable):not(.big){filter:grayscale(.35);opacity:.6!important}.oc-hand .pc.playable{box-shadow:0 0 0 2px #7fb7de}
.pc.selected{transform:translateY(-6px);box-shadow:0 0 0 3px var(--coral)!important}
.oc-table{display:flex;align-items:center;justify-content:center;gap:18px;background:#eef5fa;border:1px solid #d3e4f1;border-radius:16px;padding:16px;margin-bottom:12px}
.oc-pile{display:flex;flex-direction:column;align-items:center;gap:5px}.oc-pile small,.oc-state small{font-size:0.75rem;color:#5c7080}
.oc-state{display:flex;flex-direction:column;gap:5px;min-width:88px}.oc-state b{font-size:.8rem}
.oc-attack{background:#e0584a;color:#fff;border-radius:10px;padding:3px 9px;font-size:0.75rem;font-weight:850;text-align:center}
.oc-hand-wrap h4{font-size:.78rem;margin:6px 0 10px}.oc-hand{display:flex;gap:6px;flex-wrap:wrap}
.oc-suits{margin-top:12px}
/* who's the liar */
.wl-role{border:1px solid #e9d3da;background:#fdf6f8;border-radius:15px;padding:14px 16px;margin-bottom:12px;display:flex;flex-direction:column;gap:4px;text-align:center}
.wl-role small{font-size:0.75rem;color:#785f66}.wl-role b{font-size:1.6rem;color:var(--rose);letter-spacing:.02em}.wl-role span{font-size:0.75rem;color:#7d6a70}
.wl-role.liar{background:#2e2430;border-color:#2e2430}.wl-role.liar b{color:#ffb4c4}.wl-role.liar small,.wl-role.liar span{color:#d9c4cb}
.wl-clues{border:1px solid var(--line);border-radius:13px;padding:12px 14px;margin-bottom:12px}.wl-clues h4{font-size:.76rem;margin-bottom:8px}.wl-clues h4 small{font-weight:500;font-size:0.75rem;margin-left:6px}
.wl-clues ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.wl-clues li{display:grid;grid-template-columns:86px 1fr;gap:8px;font-size:0.75rem;align-items:start}
.wl-who{font-weight:750;font-size:0.75rem}.wl-who small{display:block;font-weight:500;color:var(--muted);font-size:0.75rem}
.wl-input{display:flex;gap:8px}.wl-input input{font-size:.85rem}
.wl-wait{text-align:center;padding:10px;font-size:0.75rem}
.wl-vote h4{font-size:.8rem;margin-bottom:10px}.wl-vote h4 small{font-weight:500;font-size:0.75rem;margin-left:6px}
/* secret letter */
.sl-discards{display:flex;gap:3px;flex-wrap:wrap}.sl-discards em{font-style:normal;font-size:0.625rem;background:#f1ece4;border-radius:5px;padding:1px 5px}
.sl-hand h4,.sl-notes h4{font-size:.78rem;margin:8px 0 10px}.sl-hand h4 small{font-weight:500;font-size:0.75rem;margin-left:6px}
.sl-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:380px}
.sl-card{border-radius:14px;border:2px solid #efd6cc;background:#fffaf6;padding:12px 10px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;opacity:1!important}
.sl-card b{font-size:1.8rem;color:var(--coral);line-height:1}.sl-card strong{font-size:.8rem}.sl-card small{font-size:0.75rem;color:#7d7068;line-height:1.5}
.sl-card.v8{background:#2e2430;border-color:#2e2430;color:#fffef9}.sl-card.v8 small{color:#d9c4cb}
.sl-card.selected{box-shadow:0 0 0 3px var(--coral);transform:translateY(-3px)}
.sl-card:disabled:not(.selected){filter:saturate(.7)}
.sl-hand .setting-row{margin-top:12px}
.sl-notes{background:#fff7e6;border:1px solid #f0dcae;border-radius:12px;padding:8px 14px;margin:8px 0}.sl-notes ul{margin:0;padding-left:16px;font-size:0.75rem;line-height:1.8}
@media(max-width:760px){.pc{width:44px;height:64px}.pc.big{width:64px;height:90px}.pc.back{width:44px;height:64px}.oc-table{gap:12px;padding:12px}.wl-role b{font-size:1.35rem}.wl-clues li{grid-template-columns:70px 1fr;font-size:0.75rem}.sl-card b{font-size:1.5rem}}

/* ---- v0.5: UI/UX pass ---- */
:root{--muted:#636866;--dock-h:0px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* toasts float above a docked action bar; errors no longer sit at the top of the page */
.toast{bottom:calc(var(--dock-h) + 16px + env(safe-area-inset-bottom));z-index:40;font-size:14px;line-height:1.5}
body.has-error .toast{bottom:calc(var(--dock-h) + 88px + env(safe-area-inset-bottom))}
.error-toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--dock-h) + 16px + env(safe-area-inset-bottom));z-index:41;width:min(560px,calc(100% - 24px));max-width:none;margin:0;padding:6px 6px 6px 16px;font-size:14px;line-height:1.5;box-shadow:0 12px 36px #2034502e}
.error-toast[hidden]{display:none}
.error-toast button{min-width:44px;min-height:44px;color:#a54129;flex-shrink:0}
/* invite landing */
.invite-page{max-width:520px;margin:0 auto;padding:26px 18px 36px;display:flex;flex-direction:column;gap:12px}
.invite-landing{padding:24px 22px 22px;box-shadow:0 8px 0 #e4e2d93b}
.invite-landing h1{font-size:26px;line-height:1.32;letter-spacing:-.05em;margin:10px 0 14px}
.invite-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.invite-meta .pill{font-size:13px}
.code-chip{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:800;font-size:16px;letter-spacing:.14em;background:#eef1e7;border:1px solid #dce1d7;border-radius:10px;padding:3px 10px}
.invite-warn{margin-top:14px;background:#fff4e2;border:1px solid #f1d6a4;color:#7a5312;border-radius:10px;padding:10px 12px;font-size:14px;line-height:1.55}
.invite-landing .field{margin-top:18px;font-size:14px}
.invite-landing .btn.wide{margin-top:12px;min-height:52px;font-size:16px}
.invite-note{font-size:13px;margin-top:14px;line-height:1.6}
.invite-home{align-self:center}
/* lobby: chosen game, settings, compact picker, sticky start bar */
.lobby-current{display:grid;grid-template-columns:220px minmax(0,1fr);overflow:hidden;padding:0}
.lobby-current .lc-art{height:auto;min-height:180px}
.lc-body{padding:18px 20px 20px}
.lc-body h2{font-size:24px;margin:6px 0 4px}
.lc-body p{font-size:14px;color:var(--muted);line-height:1.65}
.lc-body .card-meta{justify-content:flex-start;gap:16px;margin-top:10px;font-size:13px}
.lc-rules{margin-top:14px}
.lobby-picker{margin-top:22px}
.lobby-picker .panel-heading{margin-bottom:10px;gap:10px;flex-wrap:wrap}
.lobby-picker .panel-heading h2{font-size:17px}
.lobby-picker .panel-heading>span{font-size:13px}
.game-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.game-tile{position:relative;display:flex;align-items:center;gap:10px;min-height:60px;padding:8px 26px 8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--white);text-align:left;color:var(--ink)}
.game-tile .status-icon{width:36px;height:36px;border-radius:10px;font-size:18px}
.gt-text{display:flex;flex-direction:column;min-width:0;line-height:1.35}
.gt-text strong{font-size:14px;letter-spacing:-.03em;overflow-wrap:anywhere}
.gt-text small{font-size:12px;color:var(--muted)}
.gt-note{color:#7a5312;font-weight:800}
.gt-check{position:absolute;top:6px;right:8px;font-size:13px;font-weight:900;color:var(--ink)}
.game-tile.selected{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);background:#f3f1e8}
.game-tile:not(:disabled):hover{background:#f4f3ec}
.start-bar{position:sticky;bottom:calc(10px + env(safe-area-inset-bottom));z-index:12;margin-top:20px;padding:12px 14px 12px 18px;align-items:center;flex-wrap:nowrap;box-shadow:0 10px 30px #2034501f}
.sb-text{min-width:0}
.sb-text strong{font-size:16px;display:block}
.sb-text p{font-size:13px;color:var(--muted);margin-top:2px;line-height:1.5}
.start-bar>.btn{width:auto;flex-shrink:0;margin-left:auto;min-height:48px;font-size:15px;padding:10px 18px}
/* in game: sticky turn bar replaces the big heading */
.turn-bar{position:sticky;top:max(0px,env(safe-area-inset-top));z-index:14;display:flex;align-items:center;gap:2px;margin:0 0 14px;padding:4px 4px 4px 14px;min-height:56px;background:#fffef9f0;border:1px solid var(--line);border-radius:14px;box-shadow:0 6px 18px #2034500f;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.turn-bar.mine{background:#eaf0fff2;border-color:#b9c8f7}
.turn-bar.done{background:#edf0dbf2;border-color:#d9dfc2}
.tb-main{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.tb-main small{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.turn-pill{font-size:16px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.turn-bar.mine .turn-pill{color:#2747b8}
.turn-pill.low{color:#a8391b}
.tb-button{min-width:48px;padding:0 10px;font-size:14px;color:var(--ink)}
.result-panel{scroll-margin-top:84px}
.score-details summary{min-height:44px;align-items:center}
.bc-cell{width:100%}
.gm-nudge{display:flex;gap:6px;flex:1 1 auto}
.gm-nudge button{width:44px;height:44px;border-radius:10px;border:1px solid #dadfd8;background:#fffef9;font-size:18px;font-weight:800;color:var(--ink);display:grid;place-items:center;padding:0}
@media(min-width:761px){.dock-roll{display:none}}
@media(max-width:1050px){.game-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.lobby-current{grid-template-columns:170px minmax(0,1fr)}}
@media(max-width:760px){
  .lobby-current{grid-template-columns:1fr}
  .lobby-current .lc-art{min-height:0;height:112px}
  .lc-body{padding:14px 16px 16px}
  .lc-body h2{font-size:21px}
  .room-layout:not(.in-game) .room-tip{display:none}
  .game-tile{min-height:58px;padding:8px 22px 8px 8px;gap:8px}
  .game-tile .status-icon{width:32px;height:32px;font-size:16px;border-radius:9px}
  .gt-text strong{font-size:13px}
  body.in-game .site-header,body.in-game .table-heading,body.in-game .site-footer{display:none}
  body.in-game .room-page{padding-top:8px}
  .action-bar.dock{position:fixed;left:0;right:0;bottom:0;z-index:20;margin:0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fffef9f7;border-top:1px solid var(--line);box-shadow:0 -8px 24px #2034501a;flex-wrap:nowrap;align-items:center;gap:8px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
  .action-bar.dock>.muted{flex:1 1 auto;min-width:0;max-width:none;font-size:13px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .action-bar.dock>.btn{flex:1 1 0;margin-left:0;min-width:0;min-height:50px;font-size:15px;padding:10px 12px;white-space:normal}
  .action-bar.dock>.muted~.btn,.action-bar.dock>.gm-nudge~.btn,.action-bar.dock>.dock-roll{flex:0 0 auto}
  body.has-dock .room-page{padding-bottom:calc(var(--dock-h) + 24px)}
  body.has-dock .dice-stage .roll-button{display:none}
  .gm-board{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);border-radius:0;padding:0;box-shadow:none}
}
/* v0.5 contrast: night sky colours carry text that passes 4.5:1 (darker red/green/blue fills, dark text on yellow and white) */
.how-to .step{color:#c4502f}
.c-red{--sky:#c94437;--sky-text:#c94437;--sky-on:#fff}
.c-yellow{--sky:#d9a32b;--sky-text:#87610f;--sky-on:#203450}
.c-green{--sky:#2e7d52;--sky-text:#2e7d52;--sky-on:#fff}
.c-blue{--sky:#3d66c4;--sky-text:#3d66c4;--sky-on:#fff}
.c-white{--sky:#a7a294;--sky-text:#666252;--sky-on:#203450}
.sky-stack,.sky-mini,.sky-card:not(.unknown){color:var(--sky-on,#fff)}
.sky-stack small,.sky-card:not(.unknown) small{color:var(--sky-on,#fff);opacity:1}
.chip.c-red,.sky-hints .chip.c-yellow,.sky-hints .chip.c-green,.sky-hints .chip.c-blue,.sky-hints .chip.c-white{color:var(--sky-text)}
.rules-link{min-width:44px;min-height:44px}
@media(max-width:760px){.invite-card .eyebrow{letter-spacing:.08em}.room-layout:not(.in-game) .invite-card>p{display:none}}
