:root{color:#f4f0e6;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0b1711;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button{font:inherit}button:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #8fc9ff}.app-shell{background:linear-gradient(135deg,#1d604833,#0000 44%),linear-gradient(160deg,#07110d 0%,#153b2c 52%,#271c18 100%);min-height:100vh;padding:18px}.game-table{background:linear-gradient(#ffffff0d,#0000 30%),#0c281d;border:1px solid #f4f0e62e;border-radius:8px;grid-template-rows:auto auto auto minmax(420px,1fr) auto auto auto auto auto minmax(120px,170px);gap:12px;width:min(1360px,100%);min-height:calc(100vh - 36px);margin:0 auto;padding:16px;display:grid;box-shadow:0 22px 70px #0000006b}.game-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.header-stats{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.eyebrow{color:#e0bd70;letter-spacing:0;text-transform:uppercase;margin:0 0 6px;font-size:.76rem;font-weight:800}h1,h2,p{margin:0}h1{letter-spacing:0;font-size:2.35rem;line-height:1.05}h2{letter-spacing:0;font-size:.95rem;line-height:1.2}.phase-pill{color:#f4f0e6;background:#0000003d;border:1px solid #f4f0e63d;border-radius:8px;place-items:center;min-width:118px;min-height:36px;padding:7px 12px;font-weight:800;display:grid}.phase-southTurn{border-color:#e0bd70}.phase-handOver{border-color:#d45c62}.team-row{flex-wrap:wrap;gap:8px;display:flex}.team-tag,.ai-difficulty-tag{border-radius:6px;align-items:center;min-height:24px;padding:4px 8px;font-size:.78rem;font-weight:800;line-height:1;display:inline-flex}.ai-difficulty-tag{color:#17120b;background:#d8cfb1;margin-left:6px}.team-blue{color:#eaf4ff;background:#245f9c}.team-red{color:#fff0ef;background:#a53b3d}.team-neutral,.out-badge{color:#17120b;background:#e0bd70}.settings-panel{background:#04120e61;border:1px solid #f4f0e629;border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:10px;display:grid}.setting-field,.setting-toggle{color:#f4f0e6;background:#0000002e;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;min-width:0;min-height:44px;padding:8px 10px;font-size:.84rem;font-weight:900;display:flex}.setting-field select{color:#17120b;background:#f4f0e6;border:1px solid #f4f0e63d;border-radius:6px;min-width:86px;height:30px;font-weight:900}.setting-toggle{justify-content:flex-start}.setting-toggle input{accent-color:#e0bd70;width:18px;height:18px}.upgrade-panel{background:#04120e73;border:1px solid #f4f0e629;border-radius:8px;grid-template-columns:minmax(220px,.65fr) minmax(0,1fr);gap:12px;padding:12px;display:grid}.upgrade-summary{align-content:start;gap:8px;min-width:0;display:grid}.upgrade-summary h2{font-size:1.05rem}.upgrade-summary p:not(.eyebrow){color:#e8efe9;font-size:.9rem;font-weight:700;line-height:1.35}.upgrade-tracks{gap:10px;min-width:0;display:grid}.upgrade-track{grid-template-columns:minmax(138px,.28fr) minmax(0,1fr);align-items:center;gap:10px;min-width:0;display:grid}.upgrade-track-header{gap:4px;min-width:0;display:grid}.upgrade-track-header strong{font-size:.9rem}.upgrade-track-header span{color:#dfe9df;font-size:.78rem;font-weight:800;line-height:1.25}.level-ladder{flex-wrap:wrap;gap:5px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.level-node{color:#dfe9df;background:#ffffff0f;border:1px solid #f4f0e638;border-radius:6px;place-items:center;width:31px;height:28px;font-size:.72rem;font-weight:900;display:grid}.level-complete{color:#f4f0e6;background:#2f6a53}.upgrade-blue .level-current{color:#eaf4ff;background:#245f9c;border-color:#8fc9ff;box-shadow:0 0 0 2px #8fc9ff33}.upgrade-red .level-current{color:#fff0ef;background:#a53b3d;border-color:#ffaaa7;box-shadow:0 0 0 2px #ffaaa72e}.out-badge{border-radius:6px;align-items:center;min-height:22px;margin-top:6px;padding:3px 7px;font-size:.76rem;font-weight:900;display:inline-flex}.table-grid{grid-template:".north."minmax(128px,auto)"west center east"minmax(128px,1fr)"south south south"minmax(260px,auto)"coach coach coach""controls controls controls"/minmax(160px,.72fr) minmax(320px,1.3fr) minmax(160px,.72fr);gap:12px;min-height:0;display:grid}.player-zone{background:#0003;border:1px solid #f4f0e624;border-radius:8px;grid-template-rows:auto 1fr;gap:10px;min-width:0;min-height:126px;padding:12px;display:grid}.player-active{border-color:#e0bd70;box-shadow:inset 0 0 0 1px #e0bd7066}.player-west{grid-area:west}.player-north{grid-area:north}.player-east{grid-area:east}.player-south{grid-area:south;min-height:260px}.zone-header{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.zone-header strong{color:#17120b;background:#e0bd70;border-radius:6px;place-items:center;min-width:38px;min-height:34px;font-size:1.25rem;display:grid}.ai-hand,.south-hand,.played-cards{flex-wrap:wrap;align-content:flex-start;align-items:flex-start;gap:8px;min-width:0;display:flex}.ai-hand{min-height:100px;overflow:visible}.south-hand{background:radial-gradient(circle at 50% 120%,#e0bd7024,#0000 54%),linear-gradient(#ffffff09,#0000001a);border-radius:10px;align-items:flex-start;gap:10px;min-height:218px;padding:12px 8px 7px;overflow:visible;box-shadow:inset 0 0 0 1px #f4f0e614}.card,.empty-hand{border-radius:8px;flex:0 0 74px;width:74px;height:104px}.card{color:#101510;background:#f8f4ea;border:1px solid #0000003d;grid-template-rows:auto 1fr;padding:9px;transition:box-shadow .14s,filter .14s,transform .14s;display:grid;position:relative;box-shadow:0 10px 18px #00000047}.card-button{cursor:pointer;text-align:left}.card-button:focus-visible{outline-offset:2px;outline:3px solid #8fc9ff}.card-button:disabled{cursor:not-allowed}.south-hand .card{z-index:var(--card-z,1);transform-origin:50% 118%;margin-right:0;transform:none}.south-hand .card:last-child{margin-right:0}.south-hand .card-button:hover:not(:disabled),.south-hand .card-button:focus-visible{z-index:190;filter:brightness(1.03);transform:translateY(-8px)scale(1.02);box-shadow:0 16px 28px #00000057}.card-selected{outline:3px solid #e0bd70;transform:translateY(-10px)}.south-hand .card-selected{z-index:220;transform:translateY(-10px)scale(1.02);box-shadow:0 18px 30px #00000061}.card-red{color:#b4242c}.card-black{color:#111711}.card-back{color:#f4f0e6;background:repeating-linear-gradient(45deg,#ffffff1f 0 5px,#0000 5px 10px),#234e83;place-items:center}.card-rank{font-size:1.25rem;font-weight:900}.card-suit{text-transform:none;align-self:end;font-size:1.35rem;font-weight:900;line-height:1}.card-badge{color:#17120b;text-overflow:ellipsis;text-transform:uppercase;background:#e0bd70;border-radius:4px;max-width:calc(100% - 12px);padding:2px 4px;font-size:.52rem;font-weight:900;line-height:1;position:absolute;top:6px;right:6px;overflow:hidden}.empty-hand{color:#d2ded6;border:1px dashed #f4f0e64d;place-items:center;display:grid}.center-panel{background:#ffffff0d;border:1px solid #f4f0e624;border-radius:8px;grid-area:center;grid-template-rows:auto 1fr;gap:10px;min-width:0;min-height:196px;padding:12px;display:grid}.state-strip{flex-wrap:wrap;gap:8px;display:flex}.state-strip span,.winner-panel{color:#1a150d;background:#e0bd70;border-radius:6px;align-items:center;min-height:32px;padding:6px 10px;font-weight:800;display:inline-flex}.table-play-summary{align-content:start;gap:10px;min-width:0;display:grid}.table-play-summary p{color:#e8efe9;margin:0;line-height:1.35}.played-cards,.trick-card-row{padding-bottom:0;overflow:visible}.trick-action-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;min-width:0;display:grid}.trick-seat{background:#0003;border:1px solid #f4f0e624;border-radius:8px;align-content:start;gap:7px;min-width:0;min-height:118px;padding:9px;display:grid}.trick-seat-active{border-color:#e0bd70;box-shadow:inset 0 0 0 1px #e0bd7073}.trick-seat-top{background:#2f6a5352}.trick-seat-header{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.trick-seat-header strong{color:#f4f0e6;font-size:.86rem}.trick-seat-header span{color:#17120b;background:#e0bd70;border-radius:5px;flex:none;padding:3px 6px;font-size:.68rem;font-weight:900}.trick-card-row{flex-wrap:wrap;align-content:flex-start;gap:5px 0;min-width:0;padding-left:2px;display:flex}.trick-card-row .card{z-index:var(--card-z,1);width:38px;height:54px;transform:translateY(var(--card-rise,0px)) rotate(var(--card-tilt,0deg));transform-origin:50% 118%;border-radius:6px;flex-basis:38px;margin-right:-9px;padding:5px;box-shadow:0 6px 12px #0000003d}.trick-card-row .card:last-child{margin-right:0}.trick-card-row .card-rank{font-size:.78rem}.trick-card-row .card-suit{font-size:.9rem}.trick-pass,.trick-empty{color:#dfe9df;border:1px dashed #f4f0e63d;border-radius:6px;place-items:center;min-height:54px;font-weight:900;display:grid}.status-panel{color:#16120b;background:#d8c395;border-radius:8px;align-items:center;min-height:44px;padding:11px 12px;font-weight:800;display:flex}.winner-panel{width:fit-content}.info-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.info-panel{background:#0003;border:1px solid #f4f0e624;border-radius:8px;align-content:start;gap:6px;min-width:0;min-height:84px;padding:10px 12px;display:grid}.info-panel p,.info-panel li{color:#dfe9df;line-height:1.35}.info-panel ul,.info-panel ol{margin:0;padding-left:18px}.timeline-panel{min-height:150px}.timeline-list{gap:6px;padding-left:0;list-style:none;display:grid}.timeline-event{background:#ffffff0d;border:1px solid #f4f0e61f;border-radius:6px;grid-template-columns:58px minmax(58px,.28fr) minmax(0,1fr);align-items:start;gap:7px;min-width:0;padding:6px;display:grid}.timeline-event span{color:#17120b;text-transform:uppercase;background:#d8c395;border-radius:5px;justify-content:center;align-items:center;min-height:22px;font-size:.64rem;font-weight:900;display:inline-flex}.timeline-event strong{color:#f4f0e6;font-size:.78rem}.timeline-event p{color:#dfe9df;overflow-wrap:anywhere;min-width:0;font-size:.78rem}.timeline-play span,.timeline-ai span{background:#8fc9ff}.timeline-pass span{background:#d2ded6}.timeline-out span,.timeline-result span{background:#e0bd70}.rules-reference dl{gap:6px;display:grid}.rules-reference div{grid-template-columns:64px minmax(0,1fr);align-items:start;gap:8px;min-width:0;display:grid}.rules-reference dt{color:#f4f0e6;text-transform:uppercase;font-size:.76rem;font-weight:900}.rules-reference dd{color:#dfe9df;overflow-wrap:anywhere;margin:0;font-size:.8rem;line-height:1.35}.coach-row,.control-row{background:#081c14f5;border:1px solid #f4f0e638;border-radius:8px;gap:10px;width:100%;padding:10px;display:grid}.coach-row{grid-area:coach}.control-row{grid-area:controls;grid-template-columns:repeat(7,minmax(0,1fr))}.control-wrap{display:grid}.play-coach{background:#0c1e2ab8;border:1px solid #8fc9ff38;border-radius:8px;grid-column:1/-1;grid-template-columns:minmax(160px,.8fr) repeat(3,minmax(0,1fr));gap:8px;min-width:0;padding:8px;display:grid}.play-coach-ready{background:#193d2bbd;border-color:#7ccfa073}.play-coach-warning{background:#45241bbd;border-color:#eb8e7680}.play-coach-idle{background:#342b19bd;border-color:#e0bd7057}.play-coach div{align-content:start;gap:3px;min-width:0;display:grid}.play-coach h2,.play-coach span{color:#f4f0e6;letter-spacing:0;text-transform:uppercase;font-size:.74rem;font-weight:900}.play-coach p{color:#dfe9df;overflow-wrap:anywhere;font-size:.86rem;font-weight:800;line-height:1.3}.selection-feedback{color:#f7ead0;background:#e0bd701f;border:1px solid #e0bd7052;border-radius:6px;grid-column:1/-1;align-items:center;min-height:34px;padding:7px 10px;font-size:.9rem;font-weight:800;line-height:1.25;display:flex}.ai-control-strip{grid-column:1/-1;grid-template-columns:minmax(220px,1fr) minmax(100px,.28fr) minmax(100px,.28fr) minmax(150px,.36fr);align-items:stretch;gap:8px;min-width:0;display:grid}.ai-control-strip p,.ai-pace-field{color:#dfe9df;background:#0000002e;border:1px solid #f4f0e624;border-radius:8px;align-items:center;min-width:0;min-height:42px;padding:7px 10px;font-size:.84rem;font-weight:850;line-height:1.25;display:flex}.ai-pace-field{justify-content:space-between;gap:8px}.ai-pace-field select{color:#17120b;background:#f4f0e6;border:1px solid #f4f0e63d;border-radius:6px;min-width:92px;height:30px;font-weight:900}.control-row button{color:#17120b;cursor:pointer;background:#f4f0e6;border:0;border-radius:8px;width:100%;min-height:46px;font-weight:900}.control-wrap button{background:#e0bd70}.control-row button:disabled{color:#f4f0e680;cursor:not-allowed;background:#f4f0e61f}.control-row button:not(:disabled):hover{filter:brightness(1.05)}.log-panel{background:#0000003d;border:1px solid #f4f0e624;border-radius:8px;min-height:120px;max-height:170px;padding:12px;overflow:auto}.log-panel h2{margin-bottom:8px}.log-panel ol{margin:0;padding-left:20px}.log-panel li,.log-empty{color:#dfe9df;line-height:1.45}@media (width<=900px){.app-shell{padding:10px}.game-table{grid-template-rows:auto auto auto auto auto auto auto auto auto auto;min-height:calc(100vh - 20px);padding:12px}.game-header{flex-direction:column}h1{font-size:1.85rem}.table-grid{grid-template:"north""west""center""east""south""coach""controls"/1fr}.upgrade-panel,.upgrade-track,.settings-panel{grid-template-columns:1fr}.coach-row,.control-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.play-coach,.ai-control-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.ai-control-strip p{grid-column:1/-1}.info-grid{grid-template-columns:1fr}.timeline-event{grid-template-columns:54px minmax(52px,.25fr) minmax(0,1fr)}.rules-reference div{grid-template-columns:58px minmax(0,1fr)}.card,.empty-hand{flex-basis:64px;width:64px;height:92px}}@media (width<=520px){.player-south{min-height:0}.south-hand{gap:8px;min-height:0;padding:10px 6px 4px}.south-hand .card,.south-hand .empty-hand{flex-basis:48px;width:48px;height:68px;padding:6px}.south-hand .card{margin-right:0}.south-hand .card-rank{font-size:1rem}.south-hand .card-suit{font-size:.95rem}.south-hand .card-selected{transform:translateY(-8px)scale(1.02)}.coach-row,.control-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:7px}.control-row{align-items:stretch}.control-row button{min-height:42px;padding:0 3px;font-size:.68rem;line-height:1.05}.selection-feedback{min-height:34px;font-size:.82rem;display:flex;overflow:visible}.play-coach{grid-template-columns:1fr;gap:6px;padding:7px}.play-coach p{font-size:.74rem;line-height:1.25}.ai-control-strip{grid-template-columns:1fr}.ai-control-strip p,.ai-pace-field{min-height:38px;font-size:.72rem}}
