:root{--background:#f6f7f9;--surface:#fff;--foreground:#14171a;--muted:#5f6b76;--border:#d9dee3;--primary:#0f766e;--primary-strong:#0b5d57;--primary-soft:#e6f4f2;--primary-foreground:#fff;--danger:#b42318;--danger-soft:#fdecea;--success:#067647;--success-soft:#e7f6ee;--warning:#93370d;--warning-soft:#fef3e6;--radius:14px;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814}@media (prefers-color-scheme:dark){:root{--background:#0d1114;--surface:#161c20;--foreground:#e8ecef;--muted:#9aa6b0;--border:#2b343b;--primary:#2bb3a6;--primary-strong:#4cc9bc;--primary-soft:#12302d;--primary-foreground:#04201d;--danger:#f97066;--danger-soft:#3a1714;--success:#47cd89;--success-soft:#0f2a1e;--warning:#fdb022;--warning-soft:#33240b;--shadow:none}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box;margin:0;padding:0}html,body{max-width:100vw;overflow-x:hidden}body{min-height:100dvh;color:var(--foreground);background:var(--background);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif;font-size:16px;line-height:1.45}a{color:inherit;text-decoration:none}a.link{color:var(--primary);text-underline-offset:2px;text-decoration:underline}h1{font-size:1.5rem;line-height:1.2}h2{font-size:1.15rem}h3{font-size:1rem}.container{width:100%;max-width:760px;margin:0 auto;padding:16px}.container-narrow{max-width:440px}.stack{flex-direction:column;gap:16px;display:flex}.stack-sm{flex-direction:column;gap:8px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.between{justify-content:space-between;align-items:center;gap:12px;display:flex}.grow{flex:1;min-width:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.muted{color:var(--muted)}.small{font-size:.875rem}.center{text-align:center}.nowrap{white-space:nowrap}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.btn{border:1px solid var(--border);background:var(--surface);min-height:52px;color:inherit;font:inherit;cursor:pointer;text-align:center;touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:1.05rem;font-weight:600;display:inline-flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-ghost{background:0 0;border-color:#0000}.btn-small{min-height:40px;padding:0 14px;font-size:.95rem}.btn-big{min-height:72px;font-size:1.25rem}.btn-block{width:100%}.btn-tile{flex-direction:column;gap:2px;min-height:80px;padding:10px;line-height:1.2}.btn-tile .tile-sub{opacity:.85;font-size:.95rem;font-weight:500}.btn-selected{border-color:var(--primary);background:var(--primary-soft);box-shadow:inset 0 0 0 1px var(--primary)}.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}@media (min-width:600px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}.segmented{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}@media (min-width:600px){.segmented{grid-template-columns:repeat(4,minmax(0,1fr))}}.field{flex-direction:column;gap:6px;display:flex}.field>span{font-size:.95rem;font-weight:600}.input,select.input,textarea.input{border:1px solid var(--border);background:var(--surface);width:100%;min-height:50px;color:inherit;font:inherit;border-radius:12px;padding:10px 14px;font-size:1.05rem}textarea.input{resize:vertical;min-height:96px}.input:focus-visible,.btn:focus-visible{outline:3px solid color-mix(in srgb, var(--primary) 45%, transparent);outline-offset:1px}.input-amount{text-align:center;min-height:72px;font-size:2rem;font-weight:700}.hint{color:var(--muted);font-size:.85rem}.alert{border-radius:12px;padding:12px 14px;font-weight:500}.alert-error{background:var(--danger-soft);color:var(--danger)}.alert-success{background:var(--success-soft);color:var(--success)}.alert-warning{background:var(--warning-soft);color:var(--warning)}.badge{background:var(--border);color:var(--foreground);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.78rem;font-weight:600;display:inline-block}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-success{background:var(--success-soft);color:var(--success)}.list{flex-direction:column;list-style:none;display:flex}.list>li{border-bottom:1px solid var(--border);padding:12px 0}.list>li:last-child{border-bottom:0}.list-link{align-items:center;gap:12px;min-height:56px;display:flex}.avatar{object-fit:cover;background:var(--primary-soft);width:56px;height:56px;color:var(--primary);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:1.3rem;font-weight:700;display:inline-flex}.avatar-lg{width:96px;height:96px;font-size:2rem}.balance{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:2.25rem;font-weight:800;line-height:1.1}.amount{font-variant-numeric:tabular-nums;font-weight:600}.amount-plus{color:var(--success)}.amount-minus{color:var(--danger)}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.stat .stat-value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:800}.confirm-rows{grid-template-columns:auto 1fr;gap:8px 16px;font-size:1.1rem;display:grid}.confirm-rows dt{color:var(--muted)}.confirm-rows dd{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.confirm-rows .confirm-total{font-size:1.4rem}.topbar{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0}.topbar-inner{align-items:center;gap:12px;max-width:760px;min-height:60px;margin:0 auto;padding:8px 16px;display:flex}.brand{color:var(--primary);flex:none;align-items:center;font-size:1.15rem;font-weight:800;display:inline-flex}.brand-logo{object-fit:cover;border-radius:8px;width:40px;height:40px;display:block}.brand-header{background:var(--surface)}.brand-header img{object-fit:cover;width:100%;max-width:1200px;height:clamp(64px,18vw,140px);margin:0 auto;display:block}.tabs{scrollbar-width:none;gap:4px;max-width:760px;margin:0 auto;padding:0 8px;display:flex;overflow-x:auto}.tabs a{white-space:nowrap;color:var(--muted);border-bottom:3px solid #0000;padding:10px 12px;font-weight:600}.tabs a[aria-current=page]{color:var(--primary);border-bottom-color:var(--primary)}.pin-dots{justify-content:center;gap:16px;margin:8px 0;display:flex}.pin-dots span{border:2px solid var(--primary);border-radius:50%;width:18px;height:18px}.pin-dots span.filled{background:var(--primary)}.pinpad{grid-template-columns:repeat(3,1fr);gap:12px;width:100%;max-width:340px;margin:0 auto;display:grid}.pinpad .btn{min-height:68px;font-size:1.6rem}.scanner{aspect-ratio:4/3;border-radius:var(--radius);background:#000;width:100%;position:relative;overflow:hidden}.scanner video{object-fit:cover;width:100%;height:100%}.scanner-frame{pointer-events:none;border:3px solid #ffffffd9;border-radius:16px;position:absolute;inset:18%}.scanner-message{text-align:center;color:#fff;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.member-card{border:1px solid var(--border);color:#000;background:#fff;border-radius:4mm;align-items:center;gap:4mm;width:85.6mm;min-height:54mm;margin:0 auto;padding:5mm;display:flex}.member-card svg{flex:none;width:34mm;height:34mm}.qr-box svg{background:#fff;border-radius:8px;width:200px;height:200px;margin:0 auto;display:block}@media print{.no-print{display:none!important}body{background:#fff}.member-card{border-color:#999}}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg, var(--surface), var(--border), var(--surface));background-size:200% 100%;min-height:120px;animation:1.2s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.modal-backdrop{z-index:50;background:#0000008c;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{width:100%;max-width:560px;max-height:calc(100dvh - 32px);overflow-y:auto}.crop-area{background:#fff;border-radius:8px;width:100%;height:min(55dvh,360px);position:relative;overflow:hidden}input[type=range]{width:100%;accent-color:var(--primary)}
