/* Shared Japanese type scale; the board, art and effects retain their own styling. */
body.gate-page,body.entrance-page,body.support-lounge {
  --font-body:'Noto Sans JP','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;
  --font-mono:'IBM Plex Mono','Noto Sans JP',monospace;
  font-family:var(--font-body);
  font-size:18px;
  line-height:1.85;
  font-weight:400;
  font-feature-settings:normal;
  line-break:strict;
}
.gate-page { --muted:#b2bfd2; --text-muted:#b2bfd2; }
.gate-page :is(button,input,select,textarea),.entrance-page :is(button,input,select),.support-lounge :is(button,input,select) { font-family:var(--font-body); }
.gate-page :is(h1,h2,h3),.entrance-page :is(h1,h2,h3),.support-lounge :is(h1,h2,h3) { font-weight:700; font-feature-settings:'palt'; }
.gate-page .gate-intro h1 { font-family:var(--font-body); font-size:clamp(28px,3.6vw,48px); font-weight:800; line-height:1.2; letter-spacing:-.045em; }
.gate-page .chamber-byline { gap:12px 20px; }
.gate-page .chamber-motto { font:500 14px/1.7 var(--font-body); letter-spacing:.02em; }
.gate-page .gate-header .nav { font-size:16px; font-weight:500; }
.gate-page .room-switch { align-items:center; flex-wrap:wrap; gap:8px 28px; }
/* A real bottom border keeps tab decoration off the other three edges. */
.gate-page .room-switch a { flex:0 0 auto; font-size:18px; font-weight:600; padding-bottom:13px; border:0; border-bottom:2px solid transparent; box-shadow:none; }
.gate-page .room-switch #difficulty-note { flex:1 1 24rem; min-width:0; margin:0 0 0 auto; padding:6px 0 13px; font-size:13px; line-height:1.65; color:#a6b8cc; }
.gate-page .room-switch #difficulty-note[hidden] { display:none; }
@media(max-width:600px) { .gate-page .room-switch #difficulty-note { flex-basis:100%; margin:0; padding:0; font-size:12px; line-height:1.75; } }
.gate-page .room-switch a[aria-current=page] { border-bottom-color:#8de7f4; color:#edfaff; }
.gate-page .keeper-picker-controls>h2 { font-size:26px; font-weight:700; line-height:1.5; letter-spacing:-.025em; }
@media(min-width:1001px) {
  .gate-page .keeper-picker-controls { grid-template-columns:250px minmax(0,1fr); }
  .gate-page .join-card { grid-template-columns:250px minmax(0,1fr); }
}
.gate-page #keeper-choice { font-size:16px; line-height:1.7; color:#c5d1e2; }
.gate-page .keeper-stops button { padding:8px 5px 12px; border-radius:7px; }
.gate-page .keeper-stops strong { font-size:15px; font-weight:700; letter-spacing:0; }
.gate-page .keeper-stops small { font-size:12px; line-height:1.6; color:#bcc9d9; min-height:2.8em; }
.gate-page .keeper-stops button[aria-pressed=true] { border-color:#8cdae9; background:#193445; box-shadow:inset 0 -3px #86e1f1; }
.gate-page .keeper-stops button:enabled:hover { background:#1a2d3c; border-color:#617f95; }
.gate-page .join-card { padding:24px; border-color:#bc87ef; border-radius:8px; background:#11202d; }
.gate-page .join-intro { display:grid; grid-template-columns:minmax(0,1fr); justify-items:center; align-content:center; gap:14px; min-width:0; text-align:center; }
.gate-page .join-crown { display:block; position:static; width:132px; max-width:100%; height:auto; pointer-events:none; user-select:none; filter:drop-shadow(0 0 8px #ae52ff35); }
.gate-page .join-intro h2 { margin:0; font-size:22px; font-weight:700; line-height:1.6; }
@media(max-width:900px) {
  .gate-page .join-crown { width:112px; }
}
.gate-page .join-intro>p { font-size:15px; line-height:1.8; color:#b9c9d9; }
.gate-page .join-fields>label { font-size:17px; font-weight:600; margin-bottom:10px; }
.gate-page .join-fields>label .helper { display:inline-block; font-size:14px; font-weight:400; }
.gate-page .join-card .helper { font-size:14px; line-height:1.8; color:#b2c2d5; }
.gate-page .join-card .helper[lang=en],.gate-page .join-card .helper [lang=en] { font-size:13px; line-height:1.75; color:#9faec3; }
.gate-page #visitor { font-size:18px; min-height:54px; padding:12px 16px; border-color:#3b526b; }
.gate-page input::placeholder { color:#a3b6cf; opacity:1; }
.gate-page :is(.primary,.secondary) { font-size:17px!important; font-weight:600; min-height:50px; padding:11px 18px; border-radius:6px; line-height:1.5; }
.gate-page .primary { background:#ffc98e; border-color:#ffdaa9; font-weight:700; box-shadow:0 3px 0 #946840; }
.gate-page .primary:enabled:hover { background:#ffdbaf; }
.gate-page .primary:enabled:active { box-shadow:none; transform:translateY(1px); }
.gate-page .secondary { background:#172a3a; border-color:#55758c; color:#e2edf9; }
.gate-page .join-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin:12px 0 16px; }
.gate-page .join-actions :is(#anonymous-start,#start-button) { width:100%; min-height:54px; margin:0; padding:12px 18px; font-size:17px!important; white-space:normal; }
@media(max-width:480px) { .gate-page .join-actions { grid-template-columns:minmax(0,1fr); gap:10px; } }
.gate-page .text-button { font-size:14px!important; min-height:44px; font-weight:500; }
.gate-page .view-toolbar,.gate-page .view-switch button { font-size:15px; }
.gate-page .view-switch button { min-height:46px; font-weight:600; }
.gate-page #status { font-size:26px; font-weight:700; line-height:1.6; }
.gate-page #status-detail { font-size:18px; line-height:1.8; }
.gate-page :is(.helper,.human-note,.scene-note,.board-caption,.rule-list,.agent-copy,.gate-footer) { font-size:15px; line-height:1.8; }
.gate-page :is(.score-head,.seat-state,.turn-label,.eyebrow) { font-size:13px; }
.gate-page .keeper-label { font:500 14px/1.7 var(--font-body); letter-spacing:.03em; }
.gate-page .keeper-dialogue #keeper-line { font-size:21px; font-weight:500; line-height:1.7; letter-spacing:.015em; }
.gate-page .keeper-material :is(.material-label,.captures) { font-size:14px; }
.gate-page .keeper-unified .music-title select { font-size:16px; font-weight:500; min-height:46px; }
.gate-page .keeper-unified .music-actions button { font-size:15px; min-height:46px; font-weight:600; }
.gate-page .keeper-unified .music-actions label { font-size:14px; }
.gate-page .salon-panel summary { font-size:18px; font-weight:600; line-height:1.7; }
.gate-page .move-list { font-size:18px; }
.gate-page .record-actions>.secondary { font-size:16px!important; font-weight:600; min-height:68px; }
.gate-page .record-actions .download-format { font-size:12px; }
.gate-page .tip-title { font-size:21px; font-weight:700; line-height:1.55; }
.gate-page .tip-caption { font-size:16px; line-height:1.8; }
.gate-page .tip-english { font-size:14px; line-height:1.7; }
.gate-page .tip-bar :is(.tip-agent,.tip-button) { font-size:16px; font-weight:600; min-height:52px; padding:12px 14px; }
.gate-page .tip-bar :is(.tip-agent,.tip-button) small { font-size:13px; font-weight:400; }
.gate-page .agent-shortcut { font-size:14px; }
.gate-page .agent-shortcut button { font-size:14px; min-height:46px; }
.gate-page #scorebook { font-family:var(--font-body); font-size:17px; }
.gate-page #scorebook :is(h1,h2,h3) { font-weight:700; }
.gate-page #scorebook .game-card strong { font-size:19px; font-weight:700; }
.gate-page #scorebook :is(.game-meta,.game-result) { font-size:14px; line-height:1.7; }
.gate-page #scorebook :is(.helper,.book-note) { font-size:15px; }
.entrance-page h1 { font-weight:700; letter-spacing:-.035em; }
.entrance-page .intro { font-size:19px; }
.entrance-page :is(.welcome-aside,.path p,.entry-details,.agent-brief) { font-size:16px; }
.entrance-page .path h2 { font-weight:700; }
.entrance-page :is(.challenge-cta,.path .button) { font-size:18px; font-weight:600; }
.entrance-page .keeper-speech { font-weight:500; font-size:22px; }
.entrance-page .dialogue-name { font-weight:600; font-size:15px; }
.entrance-page footer { font-size:13px; }
.support-lounge h1 { font-weight:700; }
.support-lounge :is(.lounge-intro,.tip-option>p:not(.eyebrow):not(.support-english)) { font-size:18px; }
.support-lounge .support-english,.support-lounge .tip-option>p.support-english,.support-lounge .lounge-note { font-size:15px; }
@media(max-width:1000px) and (min-width:901px) {
  .gate-page .keeper-picker-controls { grid-template-columns:190px minmax(0,1fr); gap:8px 20px; }
  .gate-page .keeper-stops { gap:6px; }
  .gate-page .keeper-stops strong { font-size:13px; }
}
@media(max-width:600px) {
  body.gate-page,body.entrance-page,body.support-lounge { font-size:17px; }
  .gate-page .gate-intro h1 { font-size:clamp(27px,7.5vw,40px); }
  .gate-page .chamber-motto { font-size:12px; }
  .gate-page .gate-header .nav { font-size:14px; gap:14px; }
  .gate-page .keeper-picker-controls>h2 { font-size:24px; }
  .gate-page #keeper-choice { font-size:15px; }
  .gate-page .keeper-stops { display:flex; gap:10px; overflow-x:auto; padding:4px 2px 10px; scroll-snap-type:x proximity; scrollbar-width:thin; scrollbar-color:#52687c transparent; }
  .gate-page .keeper-stops button { flex:0 0 92px; scroll-snap-align:center; }
  .gate-page .keeper-stops strong { font-size:15px; }
  .gate-page .keeper-stops small { font-size:12px; }
  .gate-page .join-card { padding:18px; }
  .gate-page .join-intro { gap:12px; }
  .gate-page .join-intro h2 { font-size:20px; }
  .gate-page .join-intro>p { font-size:14px; }
  .gate-page .join-fields>label { font-size:16px; }
  .gate-page #visitor { font-size:17px; }
  .gate-page #status { font-size:24px; }
  .gate-page #status-detail { font-size:17px; }
  .gate-page .keeper-dialogue { position:relative; padding-bottom:26px; }
  .gate-page .keeper-dialogue #keeper-line { font-size:18px; line-height:1.65; }
  .gate-page .keeper-dialogue .keeper-pixel { position:absolute; bottom:-10px; right:0; width:48px; height:48px; }
  .gate-page .keeper-label { font-size:13px; }
  .gate-page .keeper-material { padding-right:36px; }
  .gate-page .keeper-unified .music-title select { font-size:15px; }
  .gate-page .view-switch button { font-size:14px; }
  .gate-page .view-toolbar { flex-wrap:wrap; gap:6px; }
  .entrance-page .intro { font-size:18px; }
  .entrance-page .keeper-speech { font-size:20px; }
  .support-lounge :is(.lounge-intro,.tip-option>p:not(.eyebrow):not(.support-english)) { font-size:17px; }
  .support-lounge .lounge-hello { grid-template-columns:1fr; }
  .support-lounge .lounge-keeper { margin:0; }
  .support-lounge .lounge-keeper img { width:180px; max-width:100%; height:200px; margin:0 auto; object-fit:contain; }
}
@media(prefers-reduced-motion:reduce) { .gate-page .primary:enabled:active { transform:none; } }
