.ent-header h1{font-size:24px;margin:0 0 6px}.ent-header p{color:var(--muted);margin:0 0 20px;max-width:720px;font-size:13px}.ent-body{display:grid;grid-template-columns:minmax(420px,1fr) minmax(420px,1.1fr);gap:22px;align-items:start}@media (max-width: 1100px){.ent-body{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.card h3{margin:0 0 12px;font-size:15px}.entry-head{display:flex;align-items:center;justify-content:space-between}.radio-inline{display:flex;gap:22px}.radio-inline label{display:flex;align-items:center;gap:7px;font-size:13px}.radio-inline input{width:auto}.lbl{display:block;font-size:12px;color:var(--muted);margin:10px 0 5px}.upload-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}.upload-row.single{grid-template-columns:1fr}.upload-box{border:1px dashed var(--border);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:6px;background:var(--surface-2)}.upload-label{font-size:13px;font-weight:600;cursor:pointer;color:var(--primary-2)}.upload-label input{display:none}.file-name{font-size:11px;color:var(--muted);word-break:break-all}.ocr-progress{font-size:11px;color:var(--accent)}.ocr-done{font-size:11px;color:var(--accent);font-weight:600}.thumb{margin-top:4px;max-width:100%;max-height:120px;object-fit:contain;border-radius:8px;border:1px solid var(--border);align-self:flex-start}.field-group{margin-top:14px}.group-title{font-size:12px;font-weight:700;color:var(--text);margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--border)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:4px}.field .lbl{margin-top:0}.total-bar{display:flex;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px 18px;font-size:15px}.total-bar strong{font-size:18px;color:var(--accent)}.ent-preview{position:sticky;top:90px}.preview-title{font-size:13px;color:var(--muted);margin-bottom:8px}.preview-wrap{background:#525659;border-radius:12px;padding:8px;overflow:hidden;height:calc(100vh - 160px);min-height:480px}.pdf-frame{width:100%;height:100%;border:none;border-radius:8px;background:#fff}.preview-loading{height:100%;display:grid;place-items:center;color:#e8eaf2;font-size:13px}.sign-pair{margin-bottom:12px}.sign-pair-label{font-size:12px;font-weight:600;color:var(--text);margin-bottom:5px}.edit-hint{margin-top:12px;font-size:12px;line-height:1.5;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:9px 12px}.save-note{margin-top:8px;font-size:12px;font-weight:700;color:var(--accent);text-align:center}.q-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:20px;align-items:start}@media (max-width: 1100px){.q-wrap{grid-template-columns:1fr}}.q-title{font-size:26px;margin:0 0 4px}.q-sub{color:var(--muted);margin:0 0 18px;font-size:13px}.q-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.q-card-title{font-weight:700;font-size:14px;margin-bottom:12px}.q-label{display:block;font-size:11px;color:var(--muted);margin-bottom:5px;font-weight:600;letter-spacing:.02em}.q-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.q-col-span{grid-column:1 / -1}.q-row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.q-hint{font-size:12px;color:var(--muted);margin:12px 0 0}.q-hint strong{color:var(--accent)}.q-seg{display:flex;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:4px}.q-seg-btn{flex:1;border:none;background:transparent;color:var(--muted);padding:8px 10px;border-radius:7px;font-size:13px;font-weight:600;transition:.15s}.q-seg-btn.active{background:var(--primary);color:#fff}.q-csv-info{margin:8px 0 0;font-size:12px;color:var(--accent)}.q-table-scroll{overflow-x:auto;margin-top:6px}.q-table{width:100%;border-collapse:collapse;font-size:12px}.q-table th{text-align:left;color:var(--muted);font-size:11px;font-weight:600;padding:6px;border-bottom:1px solid var(--border);white-space:nowrap}.q-table td{padding:4px;vertical-align:middle}.q-table input{padding:6px 8px;font-size:12px}.q-table .q-num{text-align:right}.q-td-no{text-align:center;color:var(--muted)}.q-td-center{text-align:center}.q-empty{text-align:center;color:var(--muted);font-size:12px;padding:12px 6px}.q-td-idr{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.q-x{border:none;background:transparent;color:var(--danger);font-size:18px;line-height:1;padding:4px 8px;border-radius:6px}.q-x:hover{background:var(--danger-weak)}.q-extras{margin-top:16px;grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width: 620px){.q-extras{grid-template-columns:1fr}}.q-summary{margin-top:16px;border-top:1px solid var(--border);padding-top:12px}.q-sum-row{display:grid;grid-template-columns:minmax(0,1fr) 130px 150px;gap:10px;padding:4px 0;font-size:13px;font-variant-numeric:tabular-nums}.q-sum-label{color:var(--muted)}.q-sum-usd,.q-sum-idr{text-align:right}.q-sum-row.strong{font-weight:700}.q-sum-row.strong .q-sum-label{color:var(--text)}.q-actions{display:flex;gap:10px;margin-top:4px}.q-preview{position:sticky;top:90px;height:calc(100vh - 130px);min-height:520px;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:#525659}@media (max-width: 1100px){.q-preview{position:relative;top:0;height:620px}}.q-iframe{width:100%;height:100%;border:none}.q-preview-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#cdd2de;gap:8px;text-align:center;padding:24px}.q-preview-emoji{font-size:44px}.q-lic-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:10px}.q-lic-toggles{display:flex;gap:14px;flex-wrap:wrap}.q-toggle-group{display:flex;flex-direction:column;gap:4px}.q-toggle-label{font-size:10px;color:var(--muted);font-weight:600;letter-spacing:.03em;text-transform:uppercase}.q-seg.q-seg-sm{padding:3px;gap:4px}.q-seg.q-seg-sm .q-seg-btn{flex:0 0 auto;padding:5px 12px;font-size:12px}.q-lic-options{display:flex;flex-wrap:wrap;gap:8px 20px;margin:2px 0 12px}.q-check{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}.q-check input{width:15px;height:15px;accent-color:var(--primary);cursor:pointer}.q-check-reveal{margin-top:14px;padding-top:13px;border-top:1px solid var(--border)}.q-lic-discount{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px;margin:0 0 12px;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:10px}.q-discount-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.q-seg.q-discount-mode{flex:0 0 auto}.q-discount-field{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:0 10px}.q-discount-field input{width:120px;border:none;background:transparent;padding:7px 0;font-size:13px;text-align:right}.q-discount-field input:focus{outline:none}.q-discount-affix{color:var(--muted);font-size:13px;font-weight:600}.q-lic-summary{margin-top:16px;border-top:1px solid var(--border);padding-top:12px}.q-lic-sum-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:4px 0;font-size:13px}.q-lic-sum-row.strong{font-weight:700}.q-lic-sum-label{color:var(--muted)}.q-lic-sum-row.strong .q-lic-sum-label{color:var(--text)}.q-lic-sum-nums{display:flex;gap:18px;font-variant-numeric:tabular-nums}.q-lic-sum-alt{color:var(--muted)}.q-lic-sum-discount .q-lic-sum-label,.q-lic-sum-discount .q-lic-sum-base,.q-lic-sum-discount .q-lic-sum-alt{color:var(--danger)}.td-wrap{max-width:780px;margin:0 auto}.td-title{font-size:26px;margin:0 0 4px}.td-sub{color:var(--muted);margin:0 0 18px;font-size:13px;line-height:1.5}.td-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;margin-bottom:20px;box-shadow:var(--shadow-sm)}.td-add-grid{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:12px;margin-bottom:12px}@media (max-width: 560px){.td-add-grid{grid-template-columns:1fr}}.td-field{display:flex;flex-direction:column}.td-label{font-size:11px;color:var(--muted);margin-bottom:5px;font-weight:600;letter-spacing:.02em}.td-add textarea{resize:vertical;margin-bottom:12px}.td-add-btn{width:100%}.td-section{margin-bottom:22px}.td-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.td-section-title{display:flex;align-items:center;gap:8px;font-size:16px;margin:0;color:var(--text-strong)}.td-section-icon{font-size:17px}.td-section-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 7px;border-radius:20px;background:var(--accent-weak);color:var(--accent);font-size:12px;font-weight:700}.td-tone-overdue .td-section-count{background:var(--danger-weak);color:var(--danger)}.td-tone-today .td-section-count{background:var(--peach-weak);color:var(--peach)}.td-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.td-item{display:flex;align-items:flex-start;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:13px 14px;box-shadow:var(--shadow-sm);transition:.15s}.td-item:hover{border-color:#c7cbf6;box-shadow:var(--shadow-md)}.td-tone-overdue .td-item{border-left:4px solid var(--danger)}.td-tone-today .td-item{border-left:4px solid var(--peach)}.td-tone-soon .td-item{border-left:4px solid var(--sky)}.td-item.done{opacity:.72}.td-check{flex-shrink:0;width:26px;height:26px;margin-top:1px;border-radius:50%;border:2px solid var(--border);background:var(--surface);color:#fff;font-size:14px;line-height:1;display:grid;place-items:center;transition:.15s}.td-check:hover{border-color:var(--mint)}.td-item.done .td-check{background:var(--mint);border-color:var(--mint)}.td-main{flex:1;min-width:0}.td-item-title{font-weight:700;font-size:14px;color:var(--text-strong);word-break:break-word}.td-item.done .td-item-title{text-decoration:line-through;color:var(--muted)}.td-item-notes{font-size:12px;color:var(--muted);margin-top:2px;word-break:break-word}.td-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:7px}.td-due{font-size:11px;font-weight:700;border-radius:20px;padding:2px 9px}.td-due-overdue{background:var(--danger-weak);color:var(--danger)}.td-due-today{background:var(--peach-weak);color:var(--peach)}.td-due-soon{background:var(--sky-weak);color:var(--sky)}.td-due-later{background:var(--surface-3);color:var(--muted)}.td-added{font-size:11px;color:var(--muted)}.td-actions{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.td-finish{white-space:nowrap}.td-del{width:26px;height:26px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);color:var(--muted);font-size:16px;line-height:1;display:grid;place-items:center;transition:.15s}.td-del:hover{border-color:var(--danger);color:var(--danger);background:#fff0f3}.td-empty-all{text-align:center;color:var(--muted);font-size:13px;border:1px dashed var(--border);border-radius:16px;padding:34px 20px;background:#ffffff80}.td-empty-emoji{font-size:40px;margin-bottom:8px}.so-header h1{font-size:24px;margin:0 0 6px}.so-header p{color:var(--muted);margin:0 0 20px;max-width:720px;font-size:13px}.so-body{display:grid;grid-template-columns:minmax(420px,1fr) minmax(420px,1.05fr);gap:22px;align-items:start}@media (max-width: 1100px){.so-body{grid-template-columns:1fr}}.so-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.so-card h3{margin:0 0 4px;font-size:15px}.so-card-note{font-size:12px;color:var(--muted);margin:0 0 12px}.so-section-tag{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);background:var(--accent-weak);border:1px solid transparent;border-radius:20px;padding:2px 9px;margin-bottom:10px}.so-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.so-col-span{grid-column:1 / -1}.so-check{display:flex;align-items:flex-start;gap:9px;font-size:13px;line-height:1.45;cursor:pointer;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:11px 13px}.so-check input{width:17px;height:17px;margin-top:1px;flex-shrink:0;accent-color:var(--primary, #b06ab3);cursor:pointer}.so-check em{font-style:normal;font-weight:700;color:var(--primary-2, var(--accent))}.so-lbl{display:block;font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.02em;margin:0 0 5px}.so-field{display:flex;flex-direction:column}.so-field textarea{resize:vertical;min-height:64px;line-height:1.45}.so-sign-upload{border:1px dashed var(--border);border-radius:10px;padding:12px;background:var(--surface-2);display:flex;flex-direction:column;gap:6px;margin-top:4px}.so-upload-caption{font-size:13px;font-weight:600;color:var(--primary-2)}.so-sign-actions{display:flex;flex-wrap:wrap;gap:10px}.so-upload-btn{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--primary-2);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 14px;cursor:pointer;white-space:nowrap;transition:border-color .15s}.so-upload-btn:hover{border-color:var(--accent)}.so-upload-btn input{display:none}.so-paste-zone{flex:1 1 200px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--muted);background:var(--surface);border:1px dashed var(--border);border-radius:8px;padding:8px 12px;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.so-paste-zone:hover{border-color:var(--accent)}.so-paste-zone:focus,.so-paste-zone:focus-visible{outline:none;border-style:solid;border-color:var(--accent);background:var(--accent-weak);color:var(--primary-2)}.so-paste-icon{font-size:14px}.so-paste-zone kbd{font-family:inherit;font-size:11px;font-weight:700;background:var(--surface-2);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:1px 6px;color:inherit}.so-paste-warn{font-size:11px;color:#c0392b}.so-file-name{font-size:11px;color:var(--muted);word-break:break-all}.so-sign-row{display:flex;align-items:center;gap:10px}.so-thumb{margin-top:4px;max-width:220px;max-height:90px;object-fit:contain;align-self:flex-start}.so-sign-clear{align-self:flex-start}.so-preview{position:sticky;top:90px}.so-preview-title{font-size:13px;color:var(--muted);margin-bottom:8px}.so-preview-wrap{background:#525659;border-radius:12px;padding:8px;overflow:hidden;height:calc(100vh - 160px);min-height:520px}.so-frame{width:100%;height:100%;border:none;border-radius:8px;background:#fff}.so-preview-loading{height:100%;display:grid;place-items:center;color:#e8eaf2;font-size:13px}:root{--bg: #f3f5f9;--surface: #ffffff;--surface-2: #f8fafc;--surface-3: #f1f5f9;--border: #e5e9f0;--border-soft: #eef1f6;--text: #1f2a37;--text-strong: #0f172a;--muted: #64748b;--muted-2: #94a3b8;--primary: #4f46e5;--primary-2: #6366f1;--primary-strong: #4338ca;--primary-weak: #eef0fe;--danger: #e11d48;--danger-weak: #ffe4ea;--accent: #7c3aed;--accent-weak: #f2ecfe;--mint: #059669;--mint-weak: #d7f5e9;--peach: #d97706;--peach-weak: #fdeccf;--sky: #0284c7;--sky-weak: #dcf0fb;--nav-bg: #0f172a;--nav-bg-2: #131f38;--nav-text: #cbd5e1;--nav-muted: #7f8da5;--nav-active-bg: rgba(99, 102, 241, .16);--nav-active-text: #ffffff;--nav-border: rgba(148, 163, 184, .14);--ring: rgba(79, 70, 229, .18);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow: 0 1px 3px rgba(15, 23, 42, .08), 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 6px 16px rgba(15, 23, 42, .08);--shadow-lg: 0 16px 38px rgba(15, 23, 42, .12);--radius: 12px;--radius-lg: 16px;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color-scheme:light}*{box-sizing:border-box}body{margin:0;color:var(--text);min-height:100vh;background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:#dcd9fb;color:#26216b}h1,h2,h3{color:var(--text-strong)}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:9px;padding:9px 11px;font-size:13px;width:100%;outline:none;transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:var(--muted-2)}input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}.app{min-height:100vh;display:flex}.sidebar{width:250px;flex-shrink:0;background:var(--nav-bg);background-image:linear-gradient(180deg,var(--nav-bg-2) 0%,var(--nav-bg) 42%);color:var(--nav-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:40}.sidebar-brand{display:flex;align-items:center;gap:11px;padding:20px 20px 18px;cursor:pointer;border-bottom:1px solid var(--nav-border)}.brand-mark{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,#6366f1,#7c3aed);display:grid;place-items:center;font-weight:800;font-size:18px;color:#fff;box-shadow:0 6px 16px #4f46e573;flex-shrink:0}.brand-name{font-weight:700;font-size:15px;color:#fff;letter-spacing:.01em}.brand-sub{font-size:11px;color:var(--nav-muted);margin-top:1px}.sidebar-section{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--nav-muted);padding:18px 22px 8px}.sidebar-nav{flex:1;overflow-y:auto;padding:6px 12px 12px;display:flex;flex-direction:column;gap:3px}.nav-item{display:flex;align-items:center;gap:12px;width:100%;border:none;background:transparent;color:var(--nav-text);padding:10px 12px;border-radius:10px;font-size:13.5px;font-weight:600;text-align:left;transition:background .14s,color .14s}.nav-item svg{color:var(--nav-muted);flex-shrink:0;transition:color .14s}.nav-item:hover{background:#94a3b81a;color:#fff}.nav-item:hover svg{color:#cbd5e1}.nav-item.active{background:var(--nav-active-bg);color:var(--nav-active-text);box-shadow:inset 3px 0 0 var(--primary-2)}.nav-item.active svg{color:#a5b4fc}.nav-item .nav-chevron{margin-left:auto;opacity:0;transition:opacity .14s;color:#a5b4fc}.nav-item.active .nav-chevron{opacity:1}.sidebar-foot{border-top:1px solid var(--nav-border);padding:14px 16px;display:flex;align-items:center;gap:11px}.sidebar-foot .vi-avatar{flex-shrink:0}.foot-name{font-size:13px;font-weight:700;color:#fff}.foot-role{font-size:11px;color:var(--nav-muted)}.app-body{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:16px;height:62px;padding:0 26px;background:#ffffffd1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}.topbar-menu{display:none;width:38px;height:38px;border:1px solid var(--border);background:var(--surface);border-radius:10px;color:var(--muted);align-items:center;justify-content:center}.crumbs{display:flex;align-items:center;gap:7px;font-size:13px;min-width:0}.crumb{color:var(--muted);white-space:nowrap}.crumb-sep{color:var(--muted-2);display:inline-flex}.crumb-current{color:var(--text-strong);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-right{display:flex;align-items:center;gap:12px}.topbar-date{font-size:12.5px;color:var(--muted);background:var(--surface-3);border:1px solid var(--border);border-radius:20px;padding:5px 13px;white-space:nowrap}.app-main{flex:1;padding:26px;max-width:1560px;width:100%;margin:0 auto}.app-footer{text-align:center;padding:18px;color:var(--muted-2);font-size:12px;border-top:1px solid var(--border)}.nav-overlay{display:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:9px;padding:9px 15px;font-size:13px;font-weight:600;transition:.14s;box-shadow:var(--shadow-sm)}.btn:hover{border-color:var(--muted-2);background:var(--surface-2)}.btn.primary{background:linear-gradient(135deg,#6366f1,#4f46e5);border-color:transparent;color:#fff;box-shadow:0 6px 16px #4f46e547}.btn.primary:hover{filter:brightness(1.05);box-shadow:0 8px 20px #4f46e55c}.btn.primary:disabled{opacity:.5;cursor:default;box-shadow:none;filter:none}.btn.ghost{background:transparent;box-shadow:none;border-color:transparent;color:var(--muted)}.btn.ghost:hover{background:var(--surface-3);color:var(--text);border-color:transparent}.btn.danger{background:transparent;border-color:var(--danger);color:var(--danger);box-shadow:none}.btn.danger:hover{background:var(--danger-weak)}.btn.sm{padding:6px 12px;font-size:12px}.btn.big{width:100%;padding:13px;font-size:14px;margin-top:10px}.btn.add{width:100%;border-style:dashed;background:transparent;color:var(--primary);padding:12px;border-color:#c7cbf6;box-shadow:none}.btn.add:hover{background:var(--primary-weak);border-color:var(--primary)}.dashboard{display:flex;flex-direction:column;gap:22px}.dash-welcome{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap}.dash-title{font-size:24px;font-weight:800;margin:0;letter-spacing:-.01em}.dash-subtitle{color:var(--muted);font-size:13.5px;margin:5px 0 0}.stat-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.stat-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;box-shadow:var(--shadow);display:flex;align-items:flex-start;gap:14px;transition:.16s}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex-shrink:0}.stat-ico.indigo{background:var(--primary-weak);color:var(--primary)}.stat-ico.amber{background:var(--peach-weak);color:var(--peach)}.stat-ico.rose{background:var(--danger-weak);color:var(--danger)}.stat-ico.violet{background:var(--accent-weak);color:var(--accent)}.stat-ico.sky{background:var(--sky-weak);color:var(--sky)}.stat-body{min-width:0}.stat-value{font-size:26px;font-weight:800;line-height:1.05;color:var(--text-strong)}.stat-label{font-size:12.5px;color:var(--muted);margin-top:3px;font-weight:600}.stat-hint{font-size:11.5px;color:var(--muted-2);margin-top:4px}.dash-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px;align-items:start}.dash-main{display:flex;flex-direction:column;gap:22px;min-width:0}.dash-side{display:flex;flex-direction:column;gap:20px}@media (max-width: 1040px){.dash-grid{grid-template-columns:1fr}}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-title{font-size:15px;font-weight:700;margin:0}.panel-sub{color:var(--muted);font-size:12.5px;margin:4px 0 16px}.module-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));margin-top:4px}.module-card{position:relative;overflow:hidden;text-align:left;display:flex;flex-direction:column;gap:6px;padding:18px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);min-height:132px;transition:.16s;box-shadow:var(--shadow-sm)}.module-card:not(.disabled):hover{transform:translateY(-3px);border-color:#c7cbf6;box-shadow:var(--shadow-md)}.module-card.disabled{opacity:.6;cursor:default}.module-icon{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;color:var(--primary);background:var(--primary-weak);margin-bottom:6px}.module-card:nth-child(5n+1) .module-icon{background:var(--primary-weak);color:var(--primary)}.module-card:nth-child(5n+2) .module-icon{background:var(--accent-weak);color:var(--accent)}.module-card:nth-child(5n+3) .module-icon{background:var(--mint-weak);color:var(--mint)}.module-card:nth-child(5n+4) .module-icon{background:var(--peach-weak);color:var(--peach)}.module-card:nth-child(5n+5) .module-icon{background:var(--sky-weak);color:var(--sky)}.module-title{font-weight:700;font-size:14.5px;color:var(--text-strong)}.module-sub{font-size:12px;color:var(--muted);line-height:1.5}.module-arrow{position:absolute;right:16px;top:18px;color:var(--muted-2);opacity:0;transform:translate(-4px);transition:.16s}.module-card:not(.disabled):hover .module-arrow{opacity:1;transform:translate(0);color:var(--primary)}.badge{position:absolute;top:14px;right:14px;font-size:10px;padding:3px 9px;border-radius:20px;background:var(--surface-3);color:var(--muted);border:1px solid var(--border);font-weight:700}.hist-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.hist-item{display:flex;align-items:flex-start;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;transition:.14s}.hist-item:hover{border-color:var(--muted-2);box-shadow:var(--shadow-sm)}.hist-icon{font-size:15px;line-height:1;flex-shrink:0;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--surface-3)}.hist-main{flex:1;min-width:0}.hist-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.hist-title{font-weight:700;font-size:13.5px;word-break:break-word;color:var(--text-strong)}.hist-time{font-size:11px;color:var(--muted-2);flex-shrink:0;white-space:nowrap}.hist-sub{font-size:12px;color:var(--muted);margin-top:2px;word-break:break-word}.hist-tag{display:inline-block;margin-top:7px;font-size:10px;color:var(--accent);font-weight:700;border:1px solid var(--accent-weak);border-radius:20px;padding:2px 9px;background:var(--accent-weak)}.hist-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.hist-open{border:1px solid var(--border);background:var(--surface);color:var(--primary);border-radius:8px;padding:6px 11px;font-size:11px;font-weight:700;white-space:nowrap;transition:.14s}.hist-open:hover{border-color:var(--primary);background:var(--primary-weak)}.hist-del{flex-shrink:0;width:28px;height:28px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--muted-2);font-size:16px;line-height:1;display:grid;place-items:center;transition:.14s}.hist-del:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-weak)}.hist-empty{color:var(--muted);font-size:12.5px;border:1px dashed var(--border);border-radius:12px;padding:22px;text-align:center;background:var(--surface-2)}.hist-panel{border:1px solid var(--border);border-radius:12px;background:var(--surface);margin-bottom:16px;overflow:hidden;box-shadow:var(--shadow-sm)}.hist-panel-head{width:100%;display:flex;align-items:center;justify-content:space-between;background:transparent;border:none;color:var(--text);padding:13px 16px;font-size:13px;font-weight:700}.hist-count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;margin-left:8px;border-radius:20px;background:var(--primary);color:#fff;font-size:11px}.hist-chevron{color:var(--muted-2);font-size:11px}.hist-panel-body{padding:0 14px 14px}.hist-panel-actions{display:flex;justify-content:flex-end;margin-bottom:8px}.rb{border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;background:var(--surface);box-shadow:var(--shadow);position:relative}.rb-alert{border-color:#f6c9d3}.rb-alert:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:var(--radius-lg) 0 0 var(--radius-lg);background:var(--danger)}.rb-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.rb-bubble{display:flex;align-items:flex-start;gap:10px;flex:1;min-width:0}.rb-bubble-icon{flex-shrink:0;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--primary-weak);color:var(--primary);font-size:14px}.rb-alert .rb-bubble-icon{background:var(--danger-weak);color:var(--danger)}.rb-message{margin:4px 0 0;font-size:13px;font-weight:600;color:var(--text);line-height:1.5}.rb-badge{flex-shrink:0;font-size:11px;font-weight:700;color:var(--primary);background:var(--primary-weak);border:1px solid transparent;border-radius:20px;padding:4px 11px;white-space:nowrap}.rb-alert .rb-badge{color:var(--danger);background:var(--danger-weak)}.rb-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.rb-item{display:flex;align-items:center;gap:11px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:9px 12px}.rb-check{flex-shrink:0;width:20px;height:20px;border-radius:6px;border:2px solid var(--muted-2);background:var(--surface);transition:.14s}.rb-check:hover{border-color:var(--mint);background:var(--mint-weak)}.rb-item-main{flex:1;min-width:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rb-item-title{font-weight:600;font-size:13px;color:var(--text);word-break:break-word}.rb-due{font-size:10px;font-weight:700;border-radius:20px;padding:2px 8px;white-space:nowrap}.rb-due-overdue{background:var(--danger-weak);color:var(--danger)}.rb-due-today{background:var(--peach-weak);color:var(--peach)}.rb-due-soon{background:var(--sky-weak);color:var(--sky)}.rb-due-later{background:var(--surface-3);color:var(--muted)}.rb-finish{flex-shrink:0}.rb-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:12px;flex-wrap:wrap}.rb-more{font-size:12px;color:var(--muted);margin-right:auto}.rb-clear{display:flex;align-items:center;gap:14px}.rb-clear-emoji{font-size:20px;flex-shrink:0;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--mint-weak);color:var(--mint)}.rb-clear-title{font-weight:700;font-size:14px;color:var(--text-strong)}.rb-clear-sub{font-size:12.5px;color:var(--muted);margin-top:2px}.water-widget{position:relative;border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.ww-head{text-align:center;margin-bottom:8px}.ww-title{display:block;font-weight:700;font-size:14px;color:var(--text-strong)}.ww-sub{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}.ww-bottle-wrap{display:flex;justify-content:center;margin:6px 0 10px}.ww-bottle{position:relative;width:74px;height:146px;border:0;padding:0;background:transparent;filter:drop-shadow(0 8px 14px rgba(2,132,199,.22));transition:transform .15s}.ww-bottle:not(:disabled):hover{transform:translateY(-2px) scale(1.03)}.ww-bottle:not(:disabled):active{transform:scale(.97)}.ww-bottle:disabled{cursor:default}.ww-cap{position:absolute;top:0;left:50%;transform:translate(-50%);width:28px;height:15px;border-radius:6px 6px 3px 3px;background:linear-gradient(#7cc0ef,#2f93df);z-index:3}.ww-neck{position:absolute;top:13px;left:50%;transform:translate(-50%);width:22px;height:12px;background:#eaf4fc;border:2px solid #cbe4f7;border-bottom:0;z-index:1}.ww-body{position:absolute;top:23px;left:4px;right:4px;bottom:0;border:2px solid #cbe4f7;border-radius:16px 16px 22px 22px;background:linear-gradient(100deg,#fff9,#d6ecfa66);overflow:hidden}.ww-body:before{content:"";position:absolute;top:8px;left:9px;width:8px;height:62%;border-radius:8px;background:#fff9;z-index:3;pointer-events:none}.ww-water{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,#56b0ee,#2f93df 55%,#1f7fce);transition:height .75s cubic-bezier(.22,1,.36,1);will-change:height}.ww-water.has-water:before,.ww-water.has-water:after{content:"";position:absolute;left:50%;bottom:100%;width:128px;height:128px;border-radius:43% 47% 44% 46%;z-index:1}.ww-water.has-water:before{background:#4aa3e8;animation:wwWaveA 6s linear infinite}.ww-water.has-water:after{background:#ffffff52;animation:wwWaveB 4.5s linear infinite}@keyframes wwWaveA{0%{transform:translate(-50%,88%) rotate(0)}to{transform:translate(-50%,88%) rotate(360deg)}}@keyframes wwWaveB{0%{transform:translate(-50%,91%) rotate(0)}to{transform:translate(-50%,91%) rotate(-360deg)}}.ww-bubble{position:absolute;bottom:4px;width:6px;height:6px;border-radius:50%;background:#ffffffb3;animation:wwBubble 3.2s ease-in infinite}@keyframes wwBubble{0%{transform:translateY(0) scale(.5);opacity:0}15%{opacity:.85}to{transform:translateY(-84px) scale(1);opacity:0}}.ww-amount{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);text-align:center;font-weight:800;font-size:17px;color:#1e5f95;text-shadow:0 1px 3px rgba(255,255,255,.9);z-index:2;pointer-events:none}.ww-amount small{display:block;font-size:8.5px;font-weight:700;color:#3f78a6;letter-spacing:.02em}.ww-dots{display:flex;justify-content:center;gap:6px;margin:4px 0 8px}.ww-dot{width:21px;height:21px;border-radius:50%;display:grid;place-items:center;font-size:10.5px;font-weight:800;background:var(--surface-3);border:1px solid var(--border);color:var(--muted-2);transition:.2s}.ww-dot.filled{background:linear-gradient(135deg,#56b0ee,#2f93df);border-color:transparent;color:#fff;box-shadow:0 3px 8px #2f93df66;animation:wwPop .4s ease}@keyframes wwPop{0%{transform:scale(.3)}60%{transform:scale(1.25)}to{transform:scale(1)}}.ww-remaining{text-align:center;font-size:11.5px;font-weight:600;color:var(--muted);margin:0 0 10px;min-height:15px}.ww-drink{width:100%;border:0;border-radius:10px;padding:10px;font-weight:700;font-size:12.5px;color:#fff;background:linear-gradient(135deg,#3f9de6,#2f93df);box-shadow:0 6px 14px #2f93df52;transition:.15s}.ww-drink:not(:disabled):hover{filter:brightness(1.06);box-shadow:0 8px 18px #2f93df6b}.ww-drink:disabled{opacity:.5;cursor:default;box-shadow:none}.ww-undo{display:block;margin:8px auto 0;background:none;border:0;color:var(--muted);font-size:11px;text-decoration:underline}.ww-undo:hover{color:var(--primary)}.ww-congrats{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:5px;padding:16px;background:#fffffff5;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:wwFade .4s ease;z-index:5}@keyframes wwFade{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ww-congrats-emoji{font-size:44px;animation:wwCheer 1.3s ease-in-out infinite}@keyframes wwCheer{0%,to{transform:translateY(0) rotate(-6deg) scale(1)}50%{transform:translateY(-8px) rotate(6deg) scale(1.1)}}.ww-congrats-title{font-weight:800;font-size:18px;background:linear-gradient(120deg,#4f46e5,#7c3aed);-webkit-background-clip:text;background-clip:text;color:transparent}.ww-congrats-sub{font-size:11.5px;color:var(--muted);line-height:1.45}.ww-congrats-actions{margin-top:8px;width:100%}.ww-congrats-btn{background:linear-gradient(135deg,#6366f1,#4f46e5);box-shadow:0 6px 14px #4f46e552}.ww-done-pill{display:block;width:100%;margin-top:4px;border:1px dashed #cbe4f7;border-radius:10px;padding:9px;background:var(--sky-weak);color:var(--sky);font-size:12px;font-weight:700}.ww-done-pill:hover{border-color:var(--sky)}.ww-confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:6}.ww-confetti span{position:absolute;top:-12px;width:8px;height:13px;border-radius:2px;opacity:0;animation-name:wwConfetti;animation-timing-function:ease-in;animation-iteration-count:1;animation-fill-mode:forwards}@keyframes wwConfetti{0%{transform:translateY(-12px) rotate(0);opacity:0}12%{opacity:1}to{transform:translateY(220px) rotate(600deg);opacity:0}}.vi-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0;display:grid;place-items:center;background:linear-gradient(135deg,#6366f1,#7c3aed);box-shadow:0 0 0 2px #ffffff1f}.vi-photo{width:100%;height:100%;object-fit:cover}.vi-monogram{font-weight:800;color:#fff;font-size:16px}@media (max-width: 900px){.sidebar{position:fixed;left:0;top:0;bottom:0;height:100vh;transform:translate(-100%);transition:transform .24s ease;box-shadow:var(--shadow-lg)}.sidebar.open{transform:translate(0)}.topbar-menu{display:inline-flex}.nav-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:39;opacity:0;pointer-events:none;transition:opacity .2s}.nav-overlay.show{opacity:1;pointer-events:auto}.app-main{padding:18px}.topbar{padding:0 16px}}@media (max-width: 560px){.topbar-date{display:none}.dash-title{font-size:20px}}@media (prefers-reduced-motion: reduce){.ww-water.has-water:before,.ww-water.has-water:after,.ww-bubble,.ww-congrats-emoji,.ww-confetti span,.stat-card,.module-card{animation:none;transition:none}}
