/* 交換台 — 真鍮と黒ベークライトの計器。会話画面は静かに、メーターだけ光らせる */
:root{
  --bakelite:#221E1A;   /* 筐体 */
  --panel:#2C2721;      /* 面板 */
  --brass:#C9A227;      /* 真鍮 */
  --brass-dim:#8A6F1E;
  --cream:#EFE7D8;      /* 文字 */
  --olive:#6E8F5E;      /* 通話中の信号 */
  --rust:#B4553A;       /* 通報・停止 */
  --line:rgba(239,231,216,.14);
  --radius:3px;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background:var(--bakelite);color:var(--cream);
  font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP",system-ui,sans-serif;
  font-size:16px;line-height:1.7;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
  overscroll-behavior:none;
}
.screen{display:none;padding:28px 20px 24px;max-width:560px;margin:0 auto;min-height:100%}
.screen[data-on]{display:flex;flex-direction:column;gap:18px}

/* 銘板の見出しは明朝。本文は角ゴシックで読みやすく */
.wordmark{
  font-family:"Hiragino Mincho ProN","Yu Mincho",serif;
  font-size:40px;line-height:1.1;letter-spacing:.22em;margin:0;
  color:var(--brass);text-shadow:0 1px 0 rgba(0,0,0,.6);
}
.wordmark.small{font-size:20px;letter-spacing:.16em}
.eyebrow{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:11px;letter-spacing:.3em;color:var(--brass-dim);margin:0 0 6px;text-transform:uppercase;
}
.plate{border-bottom:1px solid var(--line);padding-bottom:14px}
.lead{margin:0;color:rgba(239,231,216,.82)}
.fine{margin:0;font-size:12.5px;color:rgba(239,231,216,.5)}

.rules{margin:0;padding-left:1.1em;display:grid;gap:8px;font-size:14.5px;color:rgba(239,231,216,.8)}
.rules strong{color:var(--brass)}

.btn{
  appearance:none;border:1px solid var(--brass-dim);background:transparent;color:var(--cream);
  font:inherit;padding:14px 18px;border-radius:var(--radius);cursor:pointer;
  letter-spacing:.04em;transition:background .18s,border-color .18s,transform .1s;
}
.btn:hover{border-color:var(--brass)}
.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--brass);border-color:var(--brass);color:#231F16;font-weight:600}
.btn.primary:hover{background:#D8B234}
.btn.ghost{color:rgba(239,231,216,.9)}
.btn.small{padding:9px 14px;font-size:14px}
.btn:focus-visible,.link:focus-visible,.icon:focus-visible,input:focus-visible{outline:2px solid var(--brass);outline-offset:2px}

.link{background:none;border:0;color:rgba(239,231,216,.66);font:inherit;font-size:13.5px;padding:6px 2px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.link:hover{color:var(--cream)}
.link.danger{color:var(--rust)}

.bar{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding-bottom:10px}
.bar .peer{font-family:"Hiragino Mincho ProN",serif;color:var(--brass);letter-spacing:.08em}
.bar .link{margin-left:auto}
.meter{
  margin-left:auto;font-family:ui-monospace,Menlo,monospace;font-size:12px;
  color:var(--brass-dim);letter-spacing:.12em;
}
.badge{font-size:11px;border:1px solid var(--olive);color:var(--olive);padding:2px 8px;border-radius:99px;letter-spacing:.1em}

/* 回線メーター */
.gauge{text-align:center;padding:8px 0 0}
.gauge svg{width:min(280px,72vw);height:auto}
.gauge .arc{fill:none;stroke:var(--line);stroke-width:2}
.gauge .ticks line{stroke:var(--brass-dim);stroke-width:2}
.gauge .hub{fill:var(--brass-dim)}
.gauge .needle line{stroke:var(--brass);stroke-width:2.5;stroke-linecap:round}
.gauge .needle{transform-box:fill-box;transform-origin:100px 105px;transform:rotate(-52deg);transition:transform .5s cubic-bezier(.3,1.4,.4,1)}
.gauge[data-state="waiting"] .needle{animation:sweep 2.6s ease-in-out infinite}
.gauge[data-state="live"] .needle{transform:rotate(48deg)}
.gauge[data-state="live"] .needle line{stroke:var(--olive)}
.gauge-label{margin:2px 0 0;font-family:ui-monospace,Menlo,monospace;font-size:12px;letter-spacing:.16em;color:var(--brass-dim)}
@keyframes sweep{0%{transform:rotate(-46deg)}50%{transform:rotate(14deg)}100%{transform:rotate(-46deg)}}
@media (prefers-reduced-motion:reduce){
  .gauge .needle,.gauge[data-state="waiting"] .needle{animation:none;transition:none}
}

/* 会話 */
.screen.chat[data-on]{gap:12px;height:100%}
.log{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:6px 0;-webkit-overflow-scrolling:touch}
.b{max-width:78%;padding:9px 13px;border-radius:var(--radius);font-size:15.5px;white-space:pre-wrap;word-break:break-word}
.b.me{align-self:flex-end;background:var(--brass);color:#231F16}
.b.you{align-self:flex-start;background:var(--panel);border:1px solid var(--line)}
.b.sys{align-self:center;background:none;color:rgba(239,231,216,.5);font-size:12.5px;text-align:center;max-width:100%}
.typing{align-self:flex-start;color:rgba(239,231,216,.45);font-size:12.5px}

.notice{background:rgba(180,85,58,.14);border:1px solid var(--rust);color:#F0C4B6;padding:9px 12px;border-radius:var(--radius);font-size:13.5px}
.voice-ask{background:var(--panel);border:1px solid var(--brass-dim);border-radius:var(--radius);padding:12px}
.voice-ask p{margin:0 0 10px;font-size:14.5px}
.row{display:flex;gap:8px}
.voice-live{display:flex;gap:8px;justify-content:center}

.composer{display:flex;gap:8px;align-items:center}
.composer input{
  flex:1;min-width:0;background:var(--panel);border:1px solid var(--line);color:var(--cream);
  font:inherit;font-size:16px;padding:13px 14px;border-radius:var(--radius);
}
.composer input::placeholder{color:rgba(239,231,216,.38)}
.icon{
  background:transparent;border:1px solid var(--brass-dim);color:var(--cream);font:inherit;font-size:14px;
  padding:12px 12px;border-radius:var(--radius);cursor:pointer;white-space:nowrap;
}
.icon.send{background:var(--brass);border-color:var(--brass);color:#231F16;font-weight:600}
.icon[disabled]{opacity:.45;cursor:default}

.tools{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:8px}
.tools .fine{margin-left:auto}
.reasons{display:grid;gap:8px}
