@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Thai:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap";:root{--bg: #fafaf7;--bg-sunken: #f3f2ed;--surface: #ffffff;--surface-2: #faf9f6;--ink: #0e1116;--ink-2: #2a2f38;--muted: #6b7280;--muted-2: #8a8f99;--line: #ececea;--line-strong: #d8d8d4;--accent: oklch(.54 .2 258);--accent-2: oklch(.46 .22 258);--accent-soft: oklch(.96 .03 258);--accent-ink: oklch(.32 .18 258);--success: oklch(.55 .13 155);--success-soft: oklch(.95 .04 155);--danger: oklch(.55 .2 25);--danger-soft: oklch(.96 .04 25);--warning: oklch(.72 .16 75);--warning-soft: oklch(.96 .05 80);--violet: oklch(.55 .2 295);--radius: 8px;--radius-lg: 12px;--radius-sm: 4px;--shadow-sm: 0 1px 0 rgba(14,17,22,.04), 0 1px 2px rgba(14,17,22,.04);--shadow-md: 0 1px 0 rgba(14,17,22,.04), 0 4px 14px -4px rgba(14,17,22,.1);--shadow-lg: 0 24px 60px -20px rgba(14,17,22,.2), 0 8px 20px -6px rgba(14,17,22,.1);--font-sans: "Sarabun","IBM Plex Sans Thai",ui-sans-serif,system-ui,sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace}[data-theme=dark]{--bg: #0b0c0e;--bg-sunken: #08090b;--surface: #131418;--surface-2: #181a1f;--ink: #f4f4f1;--ink-2: #d6d7d3;--muted: #8a8d95;--muted-2: #6d7079;--line: #22242a;--line-strong: #2f323a;--accent: oklch(.72 .17 258);--accent-2: oklch(.78 .16 258);--accent-soft: color-mix(in oklab, oklch(.72 .17 258) 18%, transparent);--accent-ink: oklch(.85 .1 258);--success: oklch(.72 .16 155);--success-soft: color-mix(in oklab, oklch(.72 .16 155) 14%, transparent);--danger: oklch(.7 .18 25);--danger-soft: color-mix(in oklab, oklch(.7 .18 25) 14%, transparent);--warning: oklch(.8 .16 75);--warning-soft: color-mix(in oklab, oklch(.8 .16 75) 14%, transparent);--shadow-sm: 0 1px 0 rgba(0,0,0,.4);--shadow-md: 0 1px 0 rgba(0,0,0,.4), 0 6px 20px -8px rgba(0,0,0,.5);--shadow-lg: 0 30px 70px -20px rgba(0,0,0,.7)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{font-family:var(--font-sans);font-feature-settings:"ss01","cv11";background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:14px;line-height:1.5}#root{min-height:100vh}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}a{color:inherit;text-decoration:none}.mono{font-family:var(--font-mono);font-feature-settings:"zero"}.tabular{font-variant-numeric:tabular-nums}.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh;background:var(--bg)}.sidebar{background:var(--surface);border-right:1px solid var(--line);padding:18px 14px 24px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 18px;border-bottom:1px solid var(--line);margin-bottom:14px}.brand-mark{width:28px;height:28px;border-radius:7px;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-family:var(--font-mono);font-weight:600;font-size:14px;letter-spacing:-.5px}.brand-name{font-weight:600;letter-spacing:-.01em;font-size:15px}.brand-sub{font-size:11px;color:var(--muted);margin-top:1px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em}.nav-section-label{font-size:10.5px;font-weight:500;color:var(--muted-2);text-transform:uppercase;letter-spacing:.12em;padding:14px 10px 6px;font-family:var(--font-mono)}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;color:var(--ink-2);font-size:13.5px;font-weight:450;cursor:pointer;position:relative;transition:background .12s,color .12s}.nav-item:hover{background:var(--surface-2);color:var(--ink)}.nav-item.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:500}.nav-item .icon{width:16px;height:16px;flex-shrink:0;opacity:.85}.nav-item .badge{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;background:var(--ink);color:var(--bg);padding:1px 6px;border-radius:8px;font-weight:500}.nav-item.active .badge{background:var(--accent);color:#fff}.sidebar-bottom{margin-top:auto;padding-top:14px;border-top:1px solid var(--line)}.topbar{display:flex;align-items:center;gap:18px;padding:14px 28px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.topbar-title{font-size:16px;font-weight:600;letter-spacing:-.01em}.topbar-sub{font-size:12px;color:var(--muted);font-family:var(--font-mono)}.topbar-spacer{flex:1}.credit-pill{display:flex;align-items:center;gap:12px;padding:6px 8px 6px 14px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface-2)}.credit-pill .lbl{font-size:10.5px;font-family:var(--font-mono);text-transform:uppercase;color:var(--muted);letter-spacing:.08em}.credit-pill .val{font-family:var(--font-mono);font-weight:600;font-size:14px}.credit-pill .btn-mini{background:var(--ink);color:var(--bg);padding:4px 10px;border-radius:999px;font-size:12px;border:none;font-weight:500}.role-switch{display:flex;background:var(--bg-sunken);border-radius:8px;padding:3px;border:1px solid var(--line)}.role-switch button{background:transparent;border:none;padding:5px 12px;font-size:12px;color:var(--muted);border-radius:6px;font-weight:500}.role-switch button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#518fe9,#6d73db,#7c54cd);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:600}.page{padding:28px 32px 64px;max-width:1480px;margin:0 auto;width:100%}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}.page-title{font-size:26px;font-weight:600;letter-spacing:-.02em;margin:0}.page-desc{color:var(--muted);font-size:13.5px;margin-top:4px}.eyebrow{font-size:11px;font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.12em;margin-bottom:6px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg)}.card-pad{padding:22px}.card-head{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;border-bottom:1px solid var(--line)}.card-title{font-size:14px;font-weight:600;letter-spacing:-.005em}.card-sub{font-size:12px;color:var(--muted);margin-top:2px}.btn{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:7px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font-weight:500;font-size:13px;transition:background .12s,border-color .12s,transform .06s}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(.5px)}.btn-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn-primary:hover{background:var(--ink-2)}[data-theme=dark] .btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}[data-theme=dark] .btn-primary:hover{background:var(--accent-2)}.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-accent:hover{background:var(--accent-2)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--surface-2)}.btn-danger{color:var(--danger);border-color:var(--line-strong)}.btn-icon{padding:7px 8px}.btn-sm{padding:5px 10px;font-size:12px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat{padding:18px 20px}.stat .label{font-size:11.5px;font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.stat .value{font-size:30px;font-weight:600;letter-spacing:-.025em;margin-top:10px;display:flex;align-items:baseline;gap:6px}.stat .value .unit{font-size:13px;color:var(--muted);font-weight:400;letter-spacing:0;font-family:var(--font-mono)}.stat .delta{margin-top:10px;font-size:12px;display:inline-flex;align-items:center;gap:6px;color:var(--muted)}.stat .delta .up{color:var(--success);font-family:var(--font-mono);font-weight:500}.stat .delta .down{color:var(--danger);font-family:var(--font-mono);font-weight:500}.stat-spark{margin-top:14px}.tbl{width:100%;border-collapse:collapse}.tbl thead th{text-align:left;font-size:11px;font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-weight:500;padding:12px 18px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}.tbl tbody td{padding:14px 18px;border-bottom:1px solid var(--line);font-size:13.5px;vertical-align:middle}.tbl tbody tr{transition:background .1s;cursor:pointer}.tbl tbody tr:hover{background:var(--surface-2)}.tbl tbody tr:last-child td{border-bottom:none}.tbl tfoot td{padding:14px 18px;font-size:13.5px;vertical-align:middle}.tbl .num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.tbl .right{text-align:right}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;padding:2px 8px;border-radius:999px;font-family:var(--font-mono);letter-spacing:0}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.pill.success{color:var(--success);background:var(--success-soft)}.pill.danger{color:var(--danger);background:var(--danger-soft)}.pill.warning{color:var(--warning);background:var(--warning-soft)}.pill.muted{color:var(--muted);background:var(--bg-sunken)}.pill.accent{color:var(--accent-ink);background:var(--accent-soft)}.pill.violet{color:var(--violet);background:color-mix(in oklab,var(--violet) 12%,transparent)}.tag{display:inline-flex;align-items:center;padding:2px 7px;border-radius:4px;font-size:11px;font-family:var(--font-mono);background:var(--bg-sunken);color:var(--ink-2);border:1px solid var(--line)}.input{background:var(--surface);border:1px solid var(--line-strong);border-radius:7px;padding:8px 12px;font-size:13.5px;color:var(--ink);outline:none;transition:border-color .12s,box-shadow .12s;width:100%}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input-group{position:relative}.input-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted)}.input-icon+.input{padding-left:34px}.field{display:flex;flex-direction:column;gap:6px}.label{font-size:12px;font-weight:500;color:var(--ink-2)}.help{font-size:11.5px;color:var(--muted)}.toolbar{display:flex;align-items:center;gap:10px;padding:14px 22px;border-bottom:1px solid var(--line)}.filter-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;font-size:12.5px;color:var(--ink-2)}.filter-chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}[data-theme=dark] .filter-chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}.chart-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:24px}.bars{display:flex;align-items:flex-end;gap:6px;height:180px;padding-top:12px}.bar-col{flex:1;display:flex;flex-direction:column;gap:2px;align-items:stretch}.bar-col .seg{border-radius:2px 2px 0 0;transition:opacity .15s}.bar-col:hover .seg{opacity:.85}.bar-col .lbl{font-size:10px;color:var(--muted);text-align:center;font-family:var(--font-mono);padding-top:6px}.legend{display:flex;gap:16px;padding-top:16px;font-size:12px}.legend-item{display:flex;align-items:center;gap:6px;color:var(--muted)}.legend-dot{width:10px;height:10px;border-radius:2px}.donut-wrap{display:flex;align-items:center;gap:20px}.donut{position:relative;width:130px;height:130px}.donut svg{transform:rotate(-90deg)}.donut-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.donut-center .pct{font-size:24px;font-weight:600;letter-spacing:-.02em}.donut-center .lbl{font-size:10.5px;color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0e111666;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .15s ease-out}[data-theme=dark] .modal-backdrop{background:#0009}.modal{background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);width:100%;max-width:540px;max-height:88vh;overflow:auto;animation:rise .18s ease-out}.modal.wide{max-width:760px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}.modal-body{padding:22px}.modal-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1fr 520px;background:var(--bg)}.auth-side{background:linear-gradient(160deg,#0a1628,#010309 60%,#000001);color:#fff;padding:56px 56px 40px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.auth-side:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle at 20% 30%,oklch(.5 .2 258) 0%,transparent 40%),radial-gradient(circle at 80% 80%,oklch(.55 .18 295) 0%,transparent 50%);opacity:.25}.auth-side:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:linear-gradient(to bottom,black 0%,transparent 80%);mask-image:linear-gradient(to bottom,black 0%,transparent 80%);pointer-events:none}.auth-side>*{position:relative;z-index:1}.auth-quote{font-size:28px;font-weight:400;letter-spacing:-.02em;line-height:1.3;max-width:460px}.auth-quote span{color:#b0d0ff;color:oklch(.85 .1 258)}.auth-meta{display:flex;flex-direction:column;gap:4px}.auth-meta .l1{font-size:13px;font-weight:500}.auth-meta .l2{font-size:11.5px;color:#9bafce;font-family:var(--font-mono)}.auth-brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:17px;letter-spacing:-.01em}.auth-brand-mark{width:30px;height:30px;border-radius:7px;background:#fff;color:var(--ink);display:grid;place-items:center;font-family:var(--font-mono);font-weight:600}.auth-trust-row{display:flex;gap:14px;flex-wrap:wrap;font-family:var(--font-mono);font-size:11px;color:#9bafce;letter-spacing:.04em}.auth-trust-row span:before{content:"● ";opacity:.5}.auth-form-side{display:flex;flex-direction:column;background:var(--surface);border-left:1px solid var(--line)}.auth-form-side .topnav{padding:22px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);font-size:12.5px;color:var(--muted)}.auth-form-side .body{flex:1;display:flex;flex-direction:column;justify-content:center;padding:40px 56px}.auth-h1{font-size:28px;font-weight:600;letter-spacing:-.02em;margin:0 0 8px}.auth-sub{color:var(--muted);margin-bottom:32px}.auth-form{display:flex;flex-direction:column;gap:18px}.otp{display:flex;gap:10px;justify-content:center;margin:24px 0}.otp input{width:52px;height:60px;text-align:center;font-size:24px;font-family:var(--font-mono);font-weight:600;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);border-radius:8px;outline:none}.otp input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.otp input.filled{border-color:var(--ink)}[data-theme=dark] .otp input.filled{border-color:var(--accent)}.divider{height:1px;background:var(--line);margin:16px 0}.row{display:flex;align-items:center;gap:12px}.col{display:flex;flex-direction:column;gap:12px}.grow{flex:1}.muted{color:var(--muted)}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-5{margin-top:20px}.mt-6{margin-top:24px}.pkg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.pkg{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:24px;position:relative;display:flex;flex-direction:column;transition:border-color .15s,transform .15s}.pkg:hover{border-color:var(--line-strong)}.pkg.featured{border-color:var(--ink);box-shadow:var(--shadow-md)}[data-theme=dark] .pkg.featured{border-color:var(--accent)}.pkg-name{font-size:14px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.pkg-credits{font-size:38px;font-weight:600;letter-spacing:-.025em;margin-top:8px}.pkg-credits .u{font-size:13px;color:var(--muted);font-weight:400;letter-spacing:0;font-family:var(--font-mono)}.pkg-price{font-size:24px;font-weight:600;margin-top:18px;letter-spacing:-.015em}.pkg-price small{font-size:12px;color:var(--muted);font-weight:400;font-family:var(--font-mono)}.pkg-meta{font-size:12.5px;color:var(--muted);margin-top:4px}.pkg-feats{list-style:none;padding:0;margin:20px 0 24px;display:flex;flex-direction:column;gap:8px;font-size:13px}.pkg-feats li{display:flex;align-items:center;gap:8px}.pkg-feats li:before{content:"";width:14px;height:14px;border-radius:4px;background:var(--accent-soft);color:var(--accent-ink);display:inline-block;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%231a3ad9' stroke-width='2.5'><polyline points='3.5,8 6.5,11 12.5,5'/></svg>");background-repeat:no-repeat;background-position:center}.pkg-cta{margin-top:auto}.pkg-badge{position:absolute;top:16px;right:16px;font-size:10.5px;font-family:var(--font-mono);background:var(--ink);color:var(--bg);padding:2px 8px;border-radius:999px;letter-spacing:.06em;text-transform:uppercase}[data-theme=dark] .pkg-badge{background:var(--accent);color:#fff}.pkg-discount{font-size:12px;color:var(--success);font-family:var(--font-mono);margin-top:8px}.qr-pay{display:grid;grid-template-columns:220px 1fr;gap:28px;align-items:start}.qr-box{width:220px;height:220px;background:#fff;border:1px solid var(--line-strong);border-radius:12px;display:grid;place-items:center;padding:10px}.qr-detail-rows{display:flex;flex-direction:column;gap:12px;font-size:13.5px}.qr-detail-rows .r{display:flex;justify-content:space-between;gap:14px;align-items:baseline}.qr-detail-rows .r .k{color:var(--muted);font-size:12.5px}.qr-detail-rows .r .v{font-family:var(--font-mono);font-weight:500}.qr-detail-rows .total{padding-top:8px;border-top:1px solid var(--line)}.qr-detail-rows .total .v{font-size:18px}.code{background:var(--bg-sunken);border:1px solid var(--line);border-radius:8px;padding:14px 16px;font-family:var(--font-mono);font-size:12.5px;color:var(--ink-2);line-height:1.55;overflow-x:auto;white-space:pre}.code .k{color:var(--accent-ink)}.code .s{color:var(--success)}.code .c{color:var(--muted);font-style:italic}[data-theme=dark] .code .k{color:var(--accent-2)}.api-key-row{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--bg-sunken);border:1px solid var(--line);border-radius:8px;font-family:var(--font-mono);font-size:12.5px}.api-key-row .k{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role-chip{font-size:11px;padding:2px 8px;border-radius:4px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;font-weight:500}.role-chip.admin{background:color-mix(in oklab,var(--violet) 12%,transparent);color:var(--violet)}.role-chip.developer{background:var(--accent-soft);color:var(--accent-ink)}.role-chip.viewer{background:var(--bg-sunken);color:var(--muted)}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0e11164d;z-index:90;animation:fadeIn .15s}[data-theme=dark] .drawer-backdrop{background:#00000080}.drawer{position:fixed;top:0;right:0;bottom:0;width:560px;background:var(--surface);border-left:1px solid var(--line);box-shadow:var(--shadow-lg);z-index:91;overflow-y:auto;animation:slideIn .22s ease-out}@keyframes slideIn{0%{transform:translate(20px);opacity:0}to{transform:none;opacity:1}}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface);z-index:1}.drawer-body{padding:22px}.tx-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px;padding:6px 0}.tx-meta-grid .k{font-size:11.5px;color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px}.tx-meta-grid .v{font-size:13.5px;font-weight:500}.tx-meta-grid .v.mono{font-family:var(--font-mono);font-weight:500}.dots{display:flex;gap:3px}.dots .d{width:9px;height:4px;border-radius:2px;background:var(--line-strong)}.dots .d.ok{background:var(--success)}.dots .d.fail{background:var(--danger)}.dots .d.warn{background:var(--warning)}.spark{width:100%;height:36px}.section-rule{font-size:11px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:22px 0 12px;display:flex;align-items:center;gap:12px}.section-rule:after{content:"";flex:1;height:1px;background:var(--line)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);padding:0 22px}.tab{padding:12px 14px;font-size:13px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;font-weight:500;margin-bottom:-1px}.tab:hover{color:var(--ink-2)}.tab.on{color:var(--ink);border-bottom-color:var(--ink)}[data-theme=dark] .tab.on{color:var(--accent);border-bottom-color:var(--accent)}.check{width:14px;height:14px;border-radius:3px;border:1.5px solid var(--line-strong);display:inline-grid;place-items:center;cursor:pointer;background:var(--surface)}.check.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}[data-theme=dark] .check.on{background:var(--accent);border-color:var(--accent);color:#fff}.toggle{width:32px;height:18px;border-radius:999px;background:var(--line-strong);position:relative;cursor:pointer;transition:background .15s}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:var(--shadow-sm)}.toggle.on{background:var(--ink)}[data-theme=dark] .toggle.on{background:var(--accent)}.toggle.on:after{transform:translate(14px)}.pdf-doc{background:#fff;color:#111418;width:760px;max-width:100%;margin:0 auto;padding:44px 48px;border-radius:6px;box-shadow:var(--shadow-md);font-size:13px}.pdf-head{display:flex;justify-content:space-between;gap:30px;padding-bottom:22px;border-bottom:2px solid #111418}.pdf-logo{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:600;letter-spacing:-.01em}.pdf-issuer{font-size:11.5px;color:#555;line-height:1.6;margin-top:12px}.pdf-title-box{text-align:right;min-width:260px}.pdf-title{font-size:22px;font-weight:700;letter-spacing:.02em}.pdf-title-th{font-size:13px;color:#555;margin-bottom:12px}.pdf-meta{margin-left:auto;border-collapse:collapse;font-size:12px}.pdf-meta td{padding:2px 0 2px 14px;text-align:right}.pdf-meta td:first-child{color:#888}.pdf-billto{margin:22px 0}.pdf-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:#999;font-family:var(--font-mono);margin-bottom:6px}.pdf-billto-name{font-weight:600;font-size:15px}.pdf-billto-detail{font-size:12px;color:#555;line-height:1.6;margin-top:4px}.pdf-table{width:100%;border-collapse:collapse;margin-top:8px}.pdf-table thead th{background:#f3f3f1;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#555;padding:10px 12px;border-bottom:1px solid #ddd}.pdf-table thead th.r,.pdf-table td.r{text-align:right}.pdf-table tbody td{padding:11px 12px;border-bottom:1px solid #eee;font-size:12.5px}.pdf-totals{display:flex;justify-content:flex-end;margin-top:14px}.pdf-totals-inner{width:320px}.pdf-totals .r{display:flex;justify-content:space-between;padding:6px 12px;font-size:13px}.pdf-totals .grand{border-top:2px solid #111418;margin-top:6px;padding-top:12px;font-weight:700;font-size:16px}.pdf-paid-stamp{margin-top:26px;display:inline-block;border:2px solid var(--success);color:var(--success);font-weight:700;letter-spacing:.08em;padding:8px 18px;border-radius:6px;transform:rotate(-4deg);font-size:15px}.pdf-pay-info{margin-top:24px;font-size:12px;color:#555;line-height:1.7;border-top:1px dashed #ccc;padding-top:16px}.pdf-foot{display:flex;justify-content:space-between;align-items:flex-end;margin-top:40px;padding-top:20px}.pdf-sign-line{width:200px;border-bottom:1px solid #999;margin-bottom:8px;height:30px}.pdf-foot-note{font-size:10.5px;color:#aaa;font-family:var(--font-mono)}@media print{body *{visibility:hidden!important}#print-area,#print-area *{visibility:visible!important}#print-area{position:fixed;left:0;top:0;right:0;margin:0!important;box-shadow:none!important;border-radius:0!important;width:100%!important;padding:24px 32px!important}.modal,.modal-backdrop,.modal-body{position:static!important;background:#fff!important;box-shadow:none!important;border:none!important;max-width:none!important;padding:0!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}@page{margin:12mm}}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px;margin-right:6px}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--bg-sunken) 25%,var(--line) 37%,var(--bg-sunken) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.bu-select{display:inline-flex;align-items:center;gap:8px;padding:4px 6px 4px 12px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface)}.bu-select-label{font-size:10.5px;font-family:var(--font-mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.bu-select select{border:none;background:transparent;color:var(--ink);font-family:inherit;font-size:13px;font-weight:500;outline:none;cursor:pointer;max-width:220px}.tbl th.center,.tbl td.center{text-align:center}.toolbar input[type=date]{color:var(--ink)}body{caret-color:transparent}input,textarea,select,[contenteditable=true]{caret-color:auto}button,.btn,.btn-mini,.sidebar,.topbar-title,.nav-item,.role-switch{user-select:none;-webkit-user-select:none}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0f172a73;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:20px;animation:modalFade .15s ease}@keyframes modalFade{0%{opacity:0}to{opacity:1}}.modal-card{border:1px solid var(--line-strong);box-shadow:0 24px 60px #00000047;border-radius:14px;overflow:hidden;animation:modalPop .18s cubic-bezier(.22,1,.36,1)}@keyframes modalPop{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:none;opacity:1}}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px 12px}.modal-title{margin:0;font-size:16px;font-weight:600}.modal-sub{color:var(--muted);font-size:12.5px;margin-top:3px}.modal-body{padding:4px 20px 8px}.modal-foot{display:flex;gap:8px;justify-content:flex-end;padding:14px 20px 18px}.btn-mini{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 12px;font-size:12.5px;font-weight:500;border-radius:8px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink-2, var(--ink));cursor:pointer;transition:all .12s ease;white-space:nowrap}.btn-mini:hover{background:var(--bg-sunken);border-color:var(--muted)}.btn-mini:active{transform:translateY(1px)}.btn-mini.primary{background:var(--primary, var(--ink));color:#fff;border-color:transparent}.btn-mini.primary:hover{filter:brightness(1.08);background:var(--primary, var(--ink))}.btn-mini.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line))}.btn-mini.danger:hover{background:color-mix(in srgb,var(--danger) 8%,var(--surface))}.copy-field{display:flex;align-items:center;gap:8px;background:var(--bg-sunken);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-family:var(--font-mono);font-size:12px;margin-top:8px}.copy-field .k{color:var(--muted);min-width:96px}.copy-field .v{flex:1;overflow:auto;white-space:nowrap}.copy-field .copy-btn{border:1px solid var(--line-strong);background:var(--surface);border-radius:6px;padding:3px 8px;font-size:11px;cursor:pointer}.copy-field .copy-btn:hover{background:var(--bg-sunken)}
