:root{
  --accent:#087f5b;--accent2:#b7791f;--grad:linear-gradient(120deg,var(--accent),var(--accent2));
  --btn-c1:#087f5b;--btn-c2:#9c6719;--btn-grad:linear-gradient(120deg,var(--btn-c1),var(--btn-c2));
  --bg:#f4f7f3;--card-bg:#fff;--text:#202823;--muted:#647069;--card-border:#d8e2db;--danger:#bd3030;--hero-grid:rgba(8,80,55,.05);
}
:root[data-theme="dark"]{
  --accent:#63d7ad;--accent2:#f1c36f;--btn-c1:#176c53;--btn-c2:#91631f;
  --bg:#111714;--card-bg:#1c2520;--text:#eef5f0;--muted:#b8c6bd;--card-border:#34483d;--danger:#ff8d7d;--hero-grid:rgba(255,255,255,.055);
}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;align-items:center;font-family:"Hiragino Sans","Yu Gothic",Meiryo,sans-serif;color:var(--text);background-color:var(--bg);background-image:radial-gradient(circle,var(--hero-grid) 1px,transparent 1px),radial-gradient(850px circle at 10% -10%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 55%),radial-gradient(700px circle at 100% 5%,color-mix(in srgb,var(--accent2) 9%,transparent),transparent 55%);background-size:22px 22px,auto,auto;background-attachment:fixed}
.hidden{display:none!important}.site-nav{width:100%;padding:.7rem 1rem;font-size:.85rem}.site-nav a{display:inline-flex;padding:.35rem .9rem;border:1px solid var(--card-border);border-radius:999px;color:var(--text);background:var(--card-bg);text-decoration:none;transition:.15s}.site-nav a:hover{border-color:var(--accent);transform:translateY(-1px)}
.site-header{text-align:center;padding:.8rem 1rem}.site-header h1{margin:0;font-size:1.85rem;background:var(--grad);background-clip:text;-webkit-background-clip:text;color:transparent}.subtitle{margin:.35rem 0 0;color:var(--muted)}
main{width:100%;max-width:920px;padding:1rem 1rem 2rem}.panel,.table-screen{width:100%;margin:0 0 1rem;padding:1.25rem;border:1px solid var(--card-border);border-radius:12px;background:var(--card-bg);box-shadow:0 4px 16px rgba(0,0,0,.06);text-align:center}.panel h2,.panel h3{margin-top:0}
.mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.mode-card{min-height:92px;padding:1rem;border:1px solid var(--card-border);border-radius:12px;background:color-mix(in srgb,var(--accent) 5%,var(--card-bg));color:var(--text);font:inherit;cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s}.mode-card:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 7px 18px color-mix(in srgb,var(--accent) 18%,transparent)}.mode-card strong,.mode-card span{display:block}.mode-card strong{margin-bottom:.3rem;font-size:1.08rem}.mode-card span{color:var(--muted);font-size:.88rem}
.online-setup{max-width:470px;margin:auto}.online-setup>label{display:block;margin:.7rem}.text-input,.select-input,.seat-row input,.seat-row select{padding:.65rem .75rem;border:1px solid var(--card-border);border-radius:8px;background:var(--card-bg);color:var(--text);font:inherit}.online-setup>.text-input{display:block;width:min(100%,270px);margin:0 auto 1rem;text-align:center}.online-choice{display:flex;flex-direction:column;align-items:center;gap:.8rem}.join-row{display:flex;justify-content:center;gap:.5rem}.room-input{width:145px;text-transform:uppercase;text-align:center;letter-spacing:.13em}
button,.secondary-btn{font:inherit}.primary{padding:.72rem 1rem;border:0;border-radius:8px;background:var(--btn-grad);color:#fff;font-weight:700;cursor:pointer;transition:transform .15s,box-shadow .15s}.primary:hover{transform:translateY(-1px);box-shadow:0 6px 16px color-mix(in srgb,var(--btn-c1) 35%,transparent)}.primary:disabled{opacity:.48;cursor:not-allowed;transform:none;box-shadow:none}.secondary,.secondary-btn{display:inline-flex;align-items:center;justify-content:center;padding:.68rem .9rem;border:1px solid var(--accent);border-radius:8px;background:transparent;color:var(--accent);font-weight:700;text-decoration:none;cursor:pointer}.link-button{padding:.4rem;border:0;background:none;color:var(--accent);text-decoration:underline;cursor:pointer}.compact{padding:.55rem .7rem}.actions,.game-actions,.config-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.65rem;margin-top:1rem}
.error{min-height:1.2em;color:var(--danger)}.status{color:var(--muted)}.host-code{padding-bottom:1rem;border-bottom:1px solid var(--card-border)}.room-code{color:var(--accent);font-size:2rem;font-weight:800;letter-spacing:.2em}.roster{padding:0;list-style:none}.roster li{margin:.35rem 0;padding:.5rem;border-radius:7px;background:color-mix(in srgb,var(--accent) 8%,var(--card-bg));font-weight:700}
.seat-editor{display:grid;gap:.55rem;margin-top:1rem}.seat-row{display:grid;grid-template-columns:66px minmax(100px,1.4fr) minmax(92px,1fr) 86px;align-items:center;gap:.5rem;padding:.6rem;border:1px solid var(--card-border);border-radius:9px;text-align:left}.seat-label{font-weight:800;color:var(--accent)}
.turn-banner{display:flex;justify-content:space-between;gap:.7rem;align-items:center;margin-bottom:.65rem;padding:.65rem .9rem;border-radius:9px;background:color-mix(in srgb,var(--accent) 11%,var(--card-bg));text-align:left}.turn-banner strong{font-size:1.05rem}.turn-banner span{color:var(--muted);font-size:.88rem}.foul-status{margin:.4rem 0;padding:.55rem;border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);border-radius:8px;color:var(--danger);font-weight:700}
.table-frame{width:100%;aspect-ratio:2/1;padding:1.6%;border-radius:16px;background:linear-gradient(145deg,#7c481f,#4d2914);box-shadow:inset 0 0 0 3px #29160b,0 8px 22px #0004}.table-frame canvas{display:block;width:100%;height:100%;border-radius:8px;background:#087f5b;touch-action:none;cursor:crosshair;outline:none}.table-frame canvas:focus-visible{outline:3px solid var(--accent2);outline-offset:4px}
.shot-controls{max-width:620px;margin:1rem auto 0}.shot-controls>label{display:flex;justify-content:space-between;font-weight:700}.shot-controls input[type="range"]{width:100%;accent-color:var(--accent)}.angle-row{display:flex;justify-content:center;align-items:center;gap:.65rem;margin-top:.7rem}.control-hint{margin:.7rem 0 0;font-size:.86rem}.game-actions{margin-top:.6rem}
.winner-text{font-size:1.35rem;font-weight:800;color:var(--accent)}.scoreboard{max-width:460px;margin:1rem auto}.score-row{display:flex;justify-content:space-between;padding:.65rem .8rem;border-bottom:1px solid var(--card-border)}.score-row.winner{font-weight:800;color:var(--accent)}.howto{text-align:left}.howto h2{text-align:center}.howto li{margin:.5rem 0;line-height:1.6}
.connection-health{position:sticky;top:.5rem;z-index:20;margin:0 auto .7rem;padding:.7rem 1rem;max-width:42rem;border:1px solid color-mix(in srgb,var(--danger) 45%,transparent);border-radius:.6rem;background:color-mix(in srgb,var(--danger) 12%,var(--card-bg));color:var(--danger);font-weight:700;text-align:center}.site-footer{margin-top:auto;padding:1.2rem;color:var(--muted);font-size:.82rem;text-align:center}.site-footer a{color:inherit}
@media(max-width:480px){.site-header h1{font-size:1.48rem}main{padding:.7rem}.panel,.table-screen{padding:.9rem}.mode-grid{grid-template-columns:1fr;gap:.55rem}.mode-card{min-height:70px;padding:.75rem}.seat-row{display:flex;flex-wrap:wrap}.seat-row .seat-name{flex:1 1 140px;min-width:0}.seat-row .seat-kind,.seat-row .seat-side{flex:1 1 110px}.join-row{flex-wrap:wrap}.room-code{font-size:1.65rem}.table-frame{padding:2%;border-radius:10px}.turn-banner{align-items:flex-start;flex-direction:column;gap:.2rem}.angle-row{gap:.35rem}.angle-row button{padding:.55rem .5rem}.actions{flex-direction:column}.actions>*{width:100%}}
