/* TapClock — mobile-first, elegant, practical. */
:root{
  --bg:#0d1117; --panel:#161b22; --panel2:#1f2630; --line:#2b333d;
  --text:#e6edf3; --muted:#9aa6b2; --brand:#2563eb; --brand2:#3b82f6;
  --ok:#16a34a; --warn:#d97706; --bad:#dc2626; --radius:14px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{margin:0;max-width:100%;overflow-x:hidden}
body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);
  line-height:1.45;overflow-wrap:anywhere}
a{color:var(--brand2);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:960px;margin:0 auto;padding:16px}
.topbar{position:sticky;top:0;z-index:5;background:rgba(13,17,23,.92);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:10px 14px;padding:12px 16px;flex-wrap:wrap}
.brand{font-weight:800;font-size:1.15rem;white-space:nowrap}
.brand .dot{color:var(--brand2)}
.nav{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.nav a{padding:8px 12px;border-radius:10px;color:var(--text);font-size:.92rem}
.nav a.active,.nav a:hover{background:var(--panel2);text-decoration:none}
.who{color:var(--muted);font-size:.82rem;overflow-wrap:anywhere}
@media(max-width:680px){
  .topbar .wrap{gap:8px 12px}
  .brand{width:100%;order:1}      /* logo alone on top */
  .nav{margin-left:0;width:100%;order:2}
  .who{width:100%;order:3;text-align:left}   /* email below, not pushed right */
}
h1{font-size:1.5rem;margin:.2em 0 .4em}
h2{font-size:1.15rem;margin:1.2em 0 .5em}
.muted{color:var(--muted)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin:14px 0}
.grid{display:grid;gap:14px}
@media(min-width:640px){.grid.cols-2{grid-template-columns:1fr 1fr}.grid.cols-3{grid-template-columns:repeat(3,1fr)}}
label{display:block;font-size:.85rem;color:var(--muted);margin:10px 0 4px}
input,select,button,textarea{font-family:inherit}
/* 16px min prevents iOS Safari auto-zoom on focus */
input,select,textarea{width:100%;max-width:100%;padding:11px 12px;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;color:var(--text);font-size:16px;line-height:1.3}
input:focus,select:focus{outline:2px solid var(--brand);border-color:var(--brand)}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.btn{display:inline-flex;align-items:center;gap:8px;justify-content:center;background:var(--brand);color:#fff;
  border:none;padding:12px 18px;border-radius:11px;font-weight:600;cursor:pointer;min-height:46px;
  transition:background .18s ease, transform .12s ease, box-shadow .18s ease, opacity .18s ease}
.btn:hover{background:#1d4ed8;text-decoration:none;color:#fff}
.btn:active{transform:translateY(1px)}
.act-btn{min-width:124px}            /* equal-width row actions — no column jerk */
.pill.status{min-width:88px;text-align:center}   /* stable status column */
.btn.secondary{background:var(--panel2);border:1px solid var(--line);color:var(--text)}
.btn.danger{background:var(--bad)}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--text)}
.btn.sm{padding:7px 12px;min-height:0;font-size:.85rem}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.74rem;font-weight:600}
.pill.ok{background:rgba(22,163,74,.16);color:#4ade80}
.pill.warn{background:rgba(217,119,6,.16);color:#fbbf24}
.pill.bad{background:rgba(220,38,38,.16);color:#f87171}
table{width:100%;border-collapse:collapse;font-size:.92rem}
th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.stat{font-size:1.9rem;font-weight:800}
.notice{padding:12px 14px;border-radius:10px;margin:10px 0;font-size:.92rem}
.notice.ok{background:rgba(22,163,74,.12);border:1px solid rgba(22,163,74,.4)}
.notice.warn{background:rgba(217,119,6,.12);border:1px solid rgba(217,119,6,.4)}
.notice.info{background:rgba(37,99,235,.12);border:1px solid rgba(37,99,235,.4)}
.right{margin-left:auto}
.spacer{flex:1}
hr{border:none;border-top:1px solid var(--line);margin:16px 0}
.help{font-size:.8rem;color:var(--muted);margin-top:4px}

/* Kiosk */
.kiosk{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:24px;background:radial-gradient(1200px 600px at 50% -10%,#16233f,#0d1117)}
.kiosk .biz{position:absolute;top:18px;left:0;right:0;color:var(--muted)}
.kiosk h1{font-size:1.4rem;color:var(--muted);font-weight:600}
.kiosk .feedback{font-size:clamp(2.4rem,9vw,5rem);font-weight:900;margin:10px 0;min-height:1.2em;transition:.2s}
.kiosk .sub{font-size:clamp(1.2rem,4vw,2rem);color:var(--text)}
.kiosk .hint{margin-top:30px;color:var(--muted);font-size:.95rem}
.kiosk.flash-in{background:radial-gradient(1200px 600px at 50% -10%,#0c3a22,#0d1117)}
.kiosk.flash-out{background:radial-gradient(1200px 600px at 50% -10%,#3a2a0c,#0d1117)}
.kiosk.flash-bad{background:radial-gradient(1200px 600px at 50% -10%,#3a0c0c,#0d1117)}
#cardInput{position:absolute;opacity:0;pointer-events:none;left:-9999px}

/* Elegant confirm modal — fade + lift, no native dialogs */
.modal-overlay{position:fixed;inset:0;background:rgba(2,6,12,.62);backdrop-filter:blur(5px);
  display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;
  opacity:0;visibility:hidden;transition:opacity .22s ease, visibility .22s ease}
.modal-overlay.open{opacity:1;visibility:visible}
.modal{background:var(--panel);border:1px solid var(--line);border-radius:16px;max-width:430px;width:100%;
  padding:24px 26px;box-shadow:0 30px 80px rgba(0,0,0,.55);
  transform:translateY(10px) scale(.97);opacity:.6;
  transition:transform .24s cubic-bezier(.34,1.2,.5,1), opacity .24s ease}
.modal-overlay.open .modal{transform:none;opacity:1}
.modal h3{margin:0 0 8px;font-size:1.2rem}
.modal p{margin:0 0 20px;color:var(--muted);line-height:1.55}
.modal .row{justify-content:flex-end;gap:10px}
@media(prefers-reduced-motion:reduce){
  .modal-overlay,.modal{transition:none}
}
.clock{font-variant-numeric:tabular-nums;color:var(--muted);font-size:1.1rem}

/* LLM model list — toggle on/off + drag to reorder (itranscribe-style) */
.chain-badge{margin-left:auto;font-size:.72rem;color:var(--brand2);background:rgba(37,99,235,.16);padding:3px 10px;border-radius:999px;white-space:nowrap}
.chain-list{list-style:none;padding:0;margin:10px 0 0}
.chain-item{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--line);
  background:var(--panel2);border-radius:12px;margin-bottom:10px;cursor:grab;user-select:none;
  transition:background .12s ease, box-shadow .15s ease, opacity .15s ease}
.chain-item:active{cursor:grabbing}
.chain-item.dragging{background:#1c2740;border-color:var(--brand);box-shadow:0 14px 34px rgba(0,0,0,.5)}
.chain-item.drag-over{border-top:2px solid var(--brand2)}
.chain-item.is-disabled .model-flag,.chain-item.is-disabled .model-info,.chain-item.is-disabled .model-cost{opacity:.5}
.chain-item.is-disabled .rank{background:#3a434f}
.drag-handle{flex-shrink:0;color:var(--muted);display:flex;align-items:center;cursor:grab}
.chain-item .rank{width:24px;height:24px;border-radius:7px;background:var(--brand);color:#fff;font-size:.72rem;
  font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.model-flag{font-size:1rem;flex-shrink:0}
.model-info{flex:1;min-width:0}
.model-name{font-size:.92rem;font-weight:600}
.model-desc{font-size:.74rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.model-cost{flex-shrink:0;font-size:.78rem;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.toggle-switch{position:relative;width:38px;height:22px;flex-shrink:0}
.toggle-switch input{opacity:0;width:0;height:0;position:absolute}
.toggle-switch .slider{position:absolute;inset:0;background:#3a434f;border-radius:22px;cursor:pointer;transition:background .25s}
.toggle-switch .slider::before{content:'';position:absolute;height:18px;width:18px;left:2px;bottom:2px;background:#fff;
  border-radius:50%;transition:transform .25s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.toggle-switch input:checked + .slider{background:var(--brand)}
.toggle-switch input:checked + .slider::before{transform:translateX(16px)}
.save-toast{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%) translateY(60px);background:var(--brand);
  color:#fff;font-size:.85rem;font-weight:600;padding:.55rem 1.4rem;border-radius:999px;
  box-shadow:0 12px 34px rgba(0,0,0,.45);opacity:0;transition:all .3s ease;pointer-events:none;z-index:120}
.save-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
