/* User Charging — ALVA Design System v2 tokens (same as CESA and CESB). */
:root{
  --bg:#FFFFFF; --surface:#F3F3F3; --text:#1F2120; --text-muted:#6B6C6C; --border:#DBDBDB; --border-control:#898A8D;
  --accent:#33FFC9; --accent-tint:#EBFFFA; --success-ink:#09765A; --success-fill:#D6FFF4;
  --danger:#C9303B; --danger-tint:#FFF0F1; --danger-ink:#B42A33; --warn-tint:#FFEFB6; --warn-ink:#79641D;
  --info-tint:#EFF2FF; --info-fill:#DFE5FF; --info-ink:#435CCE; --neutral-tint:#EDEDED; --neutral-ink:#505151;
  --btn-grad:linear-gradient(90deg,#016248 0%,#038563 100%); --btn-bg:#016248;
  --focus-ring:0 0 0 3px #33FFC9; --focus-border:#06C08F;
  --radius-md:8px; --radius-lg:12px; --radius-full:999px;
  --elev-1:0 1px 2px rgba(31,33,32,.08),0 1px 3px rgba(31,33,32,.06);
  --font:"MADE Outer Sans",Inter,"Segoe UI",system-ui,-apple-system,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--surface);color:var(--text);font:400 15px/1.45 var(--font)}
a{color:var(--info-ink)}
h1{font-size:22px;margin:0 0 6px} h2{font-size:17px;margin:20px 0 8px} h3{font-size:15px;margin:0 0 6px}
p{margin:0 0 10px} .muted{color:var(--text-muted)} .small{font-size:13px} .mono{font-family:var(--mono);font-size:13px}
:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;height:54px;padding:0 16px;background:var(--text);color:#fff}
.brand{display:flex;align-items:center;gap:8px;color:inherit;text-decoration:none;font-weight:700;font-size:17px}
.brand-mark{width:22px;height:22px;border-radius:6px;background:var(--accent);clip-path:polygon(56% 0,18% 56%,46% 56%,38% 100%,82% 40%,54% 40%)}
.env-badge{margin-left:auto;padding:2px 10px;border-radius:var(--radius-full);font-size:12px;font-weight:700;background:var(--warn-tint);color:var(--warn-ink)}
.view{max-width:520px;margin:0 auto;padding:16px 16px 96px;outline:none}
.view:focus,.view:focus-visible{box-shadow:none}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;justify-content:center;gap:4px;padding:6px 8px calc(6px + env(safe-area-inset-bottom));
  background:var(--bg);border-top:1px solid var(--border)}
.tabs a{flex:1;max-width:170px;text-align:center;padding:10px 4px;border-radius:var(--radius-md);color:var(--text-muted);text-decoration:none;font-weight:500}
.tabs a.active{color:var(--text);background:var(--accent-tint);box-shadow:inset 0 -3px 0 var(--accent);font-weight:700}
.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;box-shadow:var(--elev-1);margin:0 0 12px}
.card h3{display:flex;align-items:center;justify-content:space-between;gap:8px}
.row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:8px 0 0;font-size:14px}
.kv dt{color:var(--text-muted)} .kv dd{margin:0;text-align:right;word-break:break-word}
.chip{display:inline-block;padding:2px 9px;border-radius:var(--radius-full);font-size:12px;font-weight:500;white-space:nowrap;background:var(--neutral-tint);color:var(--neutral-ink)}
.chip.ok{background:var(--success-fill);color:var(--success-ink)} .chip.bad{background:var(--danger-tint);color:var(--danger-ink)}
.chip.warn{background:var(--warn-tint);color:var(--warn-ink)} .chip.info{background:var(--info-fill);color:var(--info-ink)}
label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-muted);margin:0 0 12px}
input,select{min-height:46px;padding:10px 12px;border:1px solid var(--border-control);border-radius:var(--radius-md);background:var(--bg);color:var(--text);font:inherit;font-size:16px;width:100%}
input:focus,select:focus{border-color:var(--focus-border);box-shadow:var(--focus-ring);outline:none}
input.code{font-family:var(--mono);font-size:24px;letter-spacing:8px;text-align:center}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:46px;padding:0 20px;border:1px solid transparent;border-radius:var(--radius-full);
  font:inherit;font-weight:700;cursor:pointer;text-decoration:none;width:100%}
.btn-primary{background:var(--btn-bg);background-image:var(--btn-grad);color:#fff}
.btn-secondary{background:var(--bg);border-color:var(--text);color:var(--text)}
.btn-danger{background:var(--bg);border-color:var(--danger);color:var(--danger)}
.btn-sm{min-height:36px;padding:0 14px;font-size:14px;width:auto}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn-row{display:flex;gap:8px;margin-top:8px}
.notice{padding:10px 12px;border-radius:var(--radius-md);font-size:14px;margin:0 0 12px}
.notice-error{background:var(--danger-tint);color:var(--danger-ink)} .notice-info{background:var(--info-tint);color:var(--info-ink)}
.notice-warn{background:var(--warn-tint);color:var(--warn-ink)} .notice-ok{background:var(--success-fill);color:var(--success-ink)}
.dev{border:1px dashed var(--warn-ink)}
.stat{font-size:22px;font-weight:700} .stat.bad{color:var(--danger-ink)}
.list{list-style:none;margin:0;padding:0}
.list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
.list li:last-child{border-bottom:none}
.list a.item{flex:1;color:inherit;text-decoration:none}
table{width:100%;border-collapse:collapse;font-size:14px}
td{padding:8px 0;border-bottom:1px solid var(--border);vertical-align:top} td.num{text-align:right;white-space:nowrap}
tr.total td{font-weight:700;border-bottom:none}
.terms{max-height:220px;overflow:auto;padding:12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);font-size:14px}
.terms li{margin:4px 0}
label.check{flex-direction:row;align-items:flex-start;gap:10px;color:var(--text);font-size:14px}
label.check input{width:20px;min-height:20px;height:20px;margin-top:2px}
.qr{display:block;margin:12px auto;max-width:240px;width:100%;image-rendering:pixelated}
.qr-string{word-break:break-all;padding:10px;background:var(--surface);border-radius:var(--radius-md)}
.toast{position:fixed;left:16px;right:16px;bottom:76px;z-index:10;max-width:488px;margin:0 auto;padding:12px 16px;border-radius:var(--radius-md);background:var(--text);color:#fff}
.toast.error{background:var(--danger)}
.empty{padding:16px 0;text-align:center;color:var(--text-muted)}
.version{text-align:center;font:12px var(--mono);color:var(--text-muted);margin-top:24px}
.mt{margin-top:12px}
.card-link{display:block;color:inherit;text-decoration:none}
.card-link:hover{border-color:var(--focus-border)}
[hidden]{display:none!important}
