:root{--bg: #eceff4;--bg-2: #f4f6fa;--surface: #ffffff;--ink: #17203a;--ink-soft: #55607a;--ink-faint: #8892a6;--line: #e4e8f0;--line-soft: #eef1f7;--primary: #2f57e0;--primary-d: #2444bd;--primary-t: #eef2fe;--primary-r: rgba(47, 87, 224, .16);--navy: #141a2e;--navy-2: #1e263f;--good: #0e8a4c;--good-bg: #e6f6ed;--bad: #cc2f3b;--bad-bg: #fdecee;--warn: #916500;--warn-bg: #fff5db;--radius: 11px;--radius-sm: 7px;--radius-xs: 5px;--shadow-sm: 0 1px 2px rgba(20,28,48,.06);--shadow: 0 1px 2px rgba(20,28,48,.05), 0 4px 14px rgba(20,28,48,.05);--shadow-lg: 0 8px 30px rgba(20,28,48,.1);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 22px;--sp-6: 30px}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:14px;line-height:1.5;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}h1,h2,h3{color:var(--ink);letter-spacing:-.015em;line-height:1.25}::selection{background:var(--primary-r)}*{scrollbar-width:thin;scrollbar-color:#c6cde0 transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:#cbd2e4;border-radius:8px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:#b3bcd4;background-clip:content-box}.layout{display:flex;min-height:100vh}.sidebar{width:234px;flex-shrink:0;padding:16px 0 28px;background:linear-gradient(180deg,var(--navy),var(--navy-2));color:#c4cbdb;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar::-webkit-scrollbar-thumb{background:#333c58}.sidebar .brand{padding:6px 22px 18px;font-weight:800;font-size:18px;color:#fff;letter-spacing:-.02em;border-bottom:1px solid #2b3350;margin-bottom:12px}.sidebar .section{padding:15px 22px 6px;font-size:10.5px;text-transform:uppercase;color:#737e9a;letter-spacing:.9px;font-weight:700}.sidebar a{position:relative;display:block;padding:8px 22px;color:#c2c9da;font-size:13.5px;border-left:3px solid transparent;transition:background .13s,color .13s,border-color .13s}.sidebar a:hover{background:#262e47;color:#fff;text-decoration:none}.sidebar a.active{background:#232b45;color:#fff;border-left-color:var(--primary);font-weight:600}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{background:var(--surface);border-bottom:1px solid var(--line);padding:11px 26px;display:flex;align-items:center;gap:16px;position:sticky;top:0;z-index:20;box-shadow:var(--shadow-sm)}.topbar h1{margin:0;font-size:15px;font-weight:700}.topbar .spacer{flex:1}.topbar select,.topbar button{padding:6px 11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff}.content{padding:24px 28px;overflow:auto;flex:1;max-width:1400px;width:100%}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;margin-bottom:20px;box-shadow:var(--shadow)}.card h2{margin:-22px -24px 18px;padding:13px 24px;font-size:16px;font-weight:700;letter-spacing:-.015em;display:flex;align-items:center;gap:10px;border-radius:10px 10px 0 0;border-bottom:1px solid var(--line-soft);color:var(--head, #0d7a52);background:#eef6f1}.card h2:before{content:"";width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--head, #0d7a52)}@supports (color: color-mix(in srgb,red,blue)){.card h2{color:color-mix(in srgb,var(--head, #0d7a52) 82%,#0b1120);background:color-mix(in srgb,var(--head, #0d7a52) 8%,#ffffff);border-bottom-color:color-mix(in srgb,var(--head, #0d7a52) 22%,#ffffff)}}.card h3{font-size:13px;font-weight:700;color:var(--ink-soft);letter-spacing:0}.btn{padding:8px 16px;border:1px solid var(--primary);background:var(--primary);color:#fff;border-radius:var(--radius-sm);font-size:13.5px;font-weight:600;line-height:1.3;box-shadow:var(--shadow-sm);transition:background .13s,box-shadow .13s,border-color .13s,transform .04s}.btn:hover{background:var(--primary-d);border-color:var(--primary-d);box-shadow:var(--shadow)}.btn:active{transform:translateY(1px);box-shadow:var(--shadow-sm)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--primary-r)}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.btn.secondary{background:#fff;color:var(--primary);border-color:#cad2e8;box-shadow:none}.btn.secondary:hover{background:var(--primary-t);border-color:var(--primary)}.btn.danger{background:var(--bad);border-color:var(--bad)}.btn.danger:hover{background:#ac232e;border-color:#ac232e}.btn.small{padding:4px 11px;font-size:12px}table{width:100%;border-collapse:collapse;font-size:13.5px}th,td{padding:10px 13px;text-align:left;border-bottom:1px solid var(--line-soft)}th{background:#f6f8fc;font-weight:700;font-size:10.5px;text-transform:uppercase;color:var(--ink-faint);letter-spacing:.5px;position:sticky;top:0;z-index:1;border-bottom:1px solid var(--line);white-space:nowrap}th:first-child{border-top-left-radius:var(--radius-xs)}th:last-child{border-top-right-radius:var(--radius-xs)}tbody tr{transition:background .1s}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#f6f8ff}tr.row-link{cursor:pointer}tr.row-link:hover{background:var(--primary-t)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}tr.totals{font-weight:700;background:#f6f8fc}tr.totals td{border-top:2px solid var(--line);border-bottom:none}tr.group-row td{background:#f3f6fc;font-weight:600}tr.primary-row td{background:#eaeff8;font-weight:700;color:var(--ink)}.group-row-cell{background:#f3f6fc;font-weight:600}.primary-row-cell{background:#eaeff8;font-weight:700}tr.diff-row td{font-style:italic;border-top:1px dashed #cfd6e4;color:var(--ink-soft)}tr.subtotal-row td{font-weight:600;border-top:1px solid var(--line)}.bs-table{table-layout:fixed}.table-scroll{overflow-x:auto}input,select,textarea{padding:8px 11px;border:1px solid #ced6e6;border-radius:var(--radius-sm);font-family:inherit;font-size:13.5px;background:#fff;color:var(--ink);transition:border-color .13s,box-shadow .13s}input:hover,select:hover,textarea:hover{border-color:#b9c2d8}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-r)}input:disabled{background:#f2f4f9;color:#9aa3b4;cursor:not-allowed}input::placeholder{color:#a9b1c4}label{display:block;font-size:11.5px;color:var(--ink-soft);margin-bottom:5px;font-weight:600}.field{margin-bottom:14px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.row{display:flex;gap:10px;align-items:center}.report-header{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--line-soft)}.report-header .field{margin-bottom:0}.muted{color:var(--ink-faint);font-size:12px}.error{color:var(--bad);font-size:13px;margin:8px 0;background:var(--bad-bg);padding:9px 13px;border-radius:var(--radius-sm);border:1px solid #f6cfd3}.ok{color:var(--good);font-size:13px;margin:8px 0;background:var(--good-bg);padding:9px 13px;border-radius:var(--radius-sm);border:1px solid #c4e7d3}.gain{color:var(--good);font-weight:600}.loss{color:var(--bad);font-weight:600}.balanced{color:var(--good);font-weight:600}.unbalanced{color:var(--bad);font-weight:600}.pill{display:inline-block;padding:2px 10px;border-radius:20px;background:var(--primary-t);font-size:11px;color:var(--primary);font-weight:600;letter-spacing:.2px}.pill.admin{background:var(--warn-bg);color:var(--warn)}.login-wrap{display:flex;min-height:100vh;align-items:center;justify-content:center;background:linear-gradient(135deg,#141a2e,#263160 55%,#2f57e0)}.login-card{background:#fff;padding:36px;border-radius:16px;width:374px;box-shadow:var(--shadow-lg),0 30px 80px #00000052}.login-card h1{margin:0 0 22px;font-size:23px;font-weight:800;letter-spacing:-.02em}.voucher-table,.voucher-table input,.voucher-table select{width:100%}.voucher-table input.num{text-align:right;font-variant-numeric:tabular-nums}.voucher-table input:disabled{background:#f2f4f9;color:#aab2c0;cursor:not-allowed}.voucher-table td{padding:5px;vertical-align:top}.voucher-table th{position:static}@media (max-width: 720px){.grid-2,.grid-3{grid-template-columns:1fr}.sidebar{width:184px}.content{padding:16px}}
