:root{--primary:#2b5bd7;--on-primary:#fff;--paper:#fff;--ground:#eef0f3;--ink:#1b1f24;--muted:#5e6670;--line:#d9dde2;--error:#b3261e;--radius:14px;color:var(--ink);background:var(--ground);-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17px;line-height:1.45}*{box-sizing:border-box}body{background:var(--ground);min-height:100dvh;margin:0}.page{max-width:28rem;padding:max(24px, env(safe-area-inset-top)) 20px max(32px, env(safe-area-inset-bottom));margin:0 auto}h1{letter-spacing:-.01em;margin:0 0 12px;font-size:1.6rem;line-height:1.2}.lead{color:var(--muted);margin:0 0 24px}.notice{background:var(--paper);border-left:4px solid var(--primary);border-radius:6px;margin:0 0 16px;padding:10px 14px}.field{margin-bottom:16px;display:block}.field span{color:var(--muted);margin-bottom:6px;font-size:.88rem;display:block}input{width:100%;font:inherit;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);border-radius:10px;padding:14px 16px;font-size:1.15rem}input.code{font-variant-numeric:tabular-nums;letter-spacing:.4em;font-size:1.5rem}input:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid var(--primary);outline-offset:2px}button{font:inherit;cursor:pointer}button.primary{background:var(--primary);width:100%;color:var(--on-primary);border:0;border-radius:10px;padding:15px;font-weight:600}button.secondary{border:1.5px solid var(--line);background:var(--paper);width:100%;color:var(--ink);border-radius:10px;padding:13px}button:disabled{opacity:.5;cursor:default}button.link,.links a,a.back{color:var(--ink);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);background:0 0;border:0;padding:8px 0}.links{flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:20px;display:flex}.error{color:var(--error);margin:0 0 16px}.login .brand-name{margin-bottom:8px;font-size:2.2rem}.card{padding-top:0}.card-head{padding:max(28px, env(safe-area-inset-top)) 20px 72px;background:var(--primary);color:var(--on-primary);margin:0 -20px}.card-head .brand-name{margin:0;font-size:1.9rem}.ticket{background:var(--paper);border-radius:var(--radius);margin-top:-52px;padding:20px 20px 22px;position:relative;box-shadow:0 1px 2px #1b1f2414,0 8px 24px #1b1f2414}.qr{aspect-ratio:1;width:100%;max-width:300px;margin:0 auto;display:block}.qr-placeholder{background:var(--ground);border-radius:8px}.hint{text-align:center;color:var(--muted);margin:12px 0 0;font-size:.94rem}.balance{border-top:2px dashed var(--line);font-variant-numeric:tabular-nums;text-align:center;margin:20px -20px 0;padding:18px 20px 0;font-size:1.5rem;font-weight:650}a.back{margin-bottom:8px;display:inline-block}.entries{background:var(--paper);border-radius:var(--radius);margin:0 0 20px;padding:0;list-style:none}.entries li{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;grid-template-areas:"what amount""when amount";gap:2px 12px;padding:14px 16px;display:grid}.entries li:last-child{border-bottom:0}.entries .what{grid-area:what}.entries time{color:var(--muted);grid-area:when;font-size:.88rem}.entries .amount{font-variant-numeric:tabular-nums;grid-area:amount;align-self:center;font-weight:650}.entries .amount.minus{color:var(--muted)}@media (prefers-reduced-motion:no-preference){.ticket{animation:.26s ease-out rise}@keyframes rise{0%{opacity:0;transform:translateY(12px)}}}
