:root{--bg:#edeae0;--paper:#faf8f2;--ink:#23281f;--ink-soft:#5b6058;--ink-faint:#9a9686;--rule:#d9d4c4;--moss:#3f6b52;--moss-strong:#2e5a41;--moss-soft:#e4ece4;--stamp:#b23a2e;--amber:#9a6b1e;--amber-soft:#f1e6ce;--shadow:0 1px 2px #23281f0f, 0 8px 24px #23281f14}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#191b14;--paper:#22251b;--ink:#edeae1;--ink-soft:#a8ac9e;--ink-faint:#6c7264;--rule:#383b2e;--moss:#7fae8c;--moss-strong:#9ac4a6;--moss-soft:#263329;--stamp:#e2897c;--amber:#e0b25e;--amber-soft:#33291a;--shadow:0 1px 2px #0000004d, 0 8px 28px #00000059}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink)}body{-webkit-font-smoothing:antialiased;margin:0;font-family:IBM Plex Sans,ui-sans-serif,system-ui,-apple-system,sans-serif}h1,h2,h3{text-wrap:balance;margin:0}.mono{font-family:IBM Plex Mono,ui-monospace,SFMono-Regular,Menlo,monospace}.tnum{font-variant-numeric:tabular-nums}a{color:var(--moss-strong)}header.top{max-width:1100px;margin:0 auto;padding:2.25rem 1.5rem .5rem}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--moss);font-family:IBM Plex Mono,monospace;font-size:.72rem;font-weight:600}header.top h1{letter-spacing:-.01em;margin-top:.35rem;font-size:clamp(1.5rem,1.1rem + 1.4vw,2rem);font-weight:700}header.top p{color:var(--ink-soft);max-width:60ch;margin:.6rem 0 0;font-size:.95rem;line-height:1.55}.workbench{grid-template-columns:minmax(280px,360px) 1fr;align-items:start;gap:1.75rem;max-width:1100px;margin:0 auto;padding:1.75rem 1.5rem 4rem;display:grid}@media (max-width:860px){.workbench{grid-template-columns:1fr}}.panel{background:var(--paper);border:1px solid var(--rule);box-shadow:var(--shadow);border-radius:10px;padding:1.5rem}.panel h2{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin-bottom:1rem;font-family:IBM Plex Mono,monospace;font-size:.78rem}.panel h2 .hint{text-transform:none;letter-spacing:normal;color:var(--ink-faint)}.req{color:var(--stamp)}.field{flex-direction:column;gap:.3rem;margin-bottom:1rem;display:flex}.field label{color:var(--ink);font-size:.8rem;font-weight:600}.field .hint{color:var(--ink-faint);font-size:.74rem}input[type=text],input[type=date],input[type=number],input[type=url],input[type=password]{font:inherit;border:1px solid var(--rule);background:var(--bg);color:var(--ink);border-radius:6px;width:100%;padding:.55rem .65rem;font-size:.92rem}input:focus-visible{outline:2px solid var(--moss);outline-offset:1px}input.invalid{border-color:var(--stamp)}.field-error{color:var(--stamp);margin-top:.3rem;font-size:.74rem}.row2{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.divider{border:none;border-top:1px dashed var(--rule);margin:1.4rem 0}.items{flex-direction:column;gap:.9rem;display:flex}.item{border:1px solid var(--rule);background:var(--bg);border-radius:8px;padding:.75rem .75rem .5rem;position:relative}.item .item-top{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.item .item-index{color:var(--ink-faint);letter-spacing:.06em;font-family:IBM Plex Mono,monospace;font-size:.72rem}.item .field{margin-bottom:.55rem}.item .field:last-child{margin-bottom:0}.remove-btn{color:var(--stamp);cursor:pointer;background:0 0;border:none;padding:.1rem .3rem;font-family:IBM Plex Mono,monospace;font-size:.72rem}.remove-btn:hover{text-decoration:underline}.add-btn{border:1px dashed var(--moss);color:var(--moss-strong);font:inherit;cursor:pointer;background:0 0;border-radius:6px;align-self:flex-start;width:100%;margin-top:.9rem;padding:.5rem .9rem;font-size:.85rem;font-weight:600}.add-btn:hover{background:var(--moss-soft)}.clear-link{color:var(--ink-faint);cursor:pointer;background:0 0;border:none;margin-top:.75rem;padding:0;font-size:.76rem;text-decoration:underline}.preview-col{flex-direction:column;gap:.9rem;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.toolbar button{font:inherit;cursor:pointer;border:1px solid var(--rule);background:var(--paper);color:var(--ink);border-radius:6px;padding:.6rem 1rem;font-size:.85rem;font-weight:600}.toolbar button.primary{background:var(--moss);border-color:var(--moss);color:var(--paper)}.toolbar button:disabled{opacity:.55;cursor:not-allowed}.toolbar button:hover:not(:disabled){filter:brightness(.97)}.toolbar .toast{color:var(--moss-strong);opacity:0;align-self:center;font-family:IBM Plex Mono,monospace;font-size:.8rem;transition:opacity .2s}.toolbar .toast.show{opacity:1}.toolbar .toast.error{color:var(--stamp)}.invoice{background:var(--paper);border:1px solid var(--rule);box-shadow:var(--shadow);border-radius:10px;padding:2rem 2rem 1.6rem;position:relative;overflow:hidden}.invoice:before{content:"";background-image:radial-gradient(circle at 12px 0, var(--bg) 6px, transparent 6.5px);background-repeat:repeat-x;background-size:24px 12px;height:12px;position:absolute;top:0;left:0;right:0}.invoice-head{justify-content:space-between;align-items:flex-start;gap:1rem;padding-top:.4rem;display:flex}.invoice-head h3{letter-spacing:.06em;font-size:1.5rem;font-weight:700}.invoice-head .meta{text-align:right;color:var(--ink-soft);font-family:IBM Plex Mono,monospace;font-size:.8rem;line-height:1.6}.invoice-head .meta .num{color:var(--ink);font-weight:600}.parties{border-top:1px solid var(--rule);grid-template-columns:1fr 1fr;gap:1rem;margin-top:1.4rem;padding-top:1.1rem;display:grid}.party .label{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:.35rem;font-family:IBM Plex Mono,monospace;font-size:.68rem}.party .name{font-weight:600}.party .sub{color:var(--ink-soft);margin-top:.15rem;font-size:.82rem}.placeholder{color:var(--ink-faint);font-style:italic}table.lines{border-collapse:collapse;width:100%;margin-top:1.5rem;font-size:.88rem}table.lines thead th{text-align:left;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--rule);padding-bottom:.5rem;font-family:IBM Plex Mono,monospace;font-size:.68rem;font-weight:600}table.lines thead th.num{text-align:right}table.lines td{border-bottom:1px dashed var(--rule);vertical-align:top;padding:.55rem 0}table.lines td.num{text-align:right;white-space:nowrap}table.lines td .desc-date{color:var(--ink-faint);margin-top:.1rem;font-size:.78rem}.empty-row td{color:var(--ink-faint);padding:.9rem 0;font-style:italic}.total-row{justify-content:flex-end;align-items:center;gap:.9rem;margin-top:.9rem;display:flex}.total-box{background:var(--moss-soft);border-radius:8px;align-items:baseline;gap:.6rem;padding:.6rem 1.1rem;display:flex}.total-box .label{letter-spacing:.08em;text-transform:uppercase;color:var(--moss-strong);font-family:IBM Plex Mono,monospace;font-size:.72rem}.total-box .amount{color:var(--moss-strong);font-size:1.35rem;font-weight:700}.invoice-foot{border-top:1px solid var(--rule);color:var(--ink-soft);margin-top:1.6rem;padding-top:1rem;font-size:.82rem}.invoice-foot .label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:.2rem;font-family:IBM Plex Mono,monospace;font-size:.68rem}footer.note{max-width:1100px;color:var(--ink-faint);margin:0 auto;padding:0 1.5rem 3rem;font-size:.78rem;line-height:1.6}@media print{header.top,.panel,.toolbar,footer.note{display:none!important}body{background:#fff}.workbench{max-width:none;padding:0;display:block}.invoice{box-shadow:none;border:none;border-radius:0;padding:.5rem .25rem}.invoice:before{display:none}}.dash-wrap{max-width:1100px;margin:0 auto;padding:2.25rem 1.5rem 4rem}.dash-head{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:2rem;display:flex}.dash-head h1{font-size:1.5rem;font-weight:700}.logout-btn{border:1px solid var(--rule);color:var(--ink-soft);font:inherit;cursor:pointer;background:0 0;border-radius:6px;padding:.5rem .9rem;font-size:.82rem}.summary-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.9rem;margin-bottom:2.5rem;display:grid}.summary-card{background:var(--paper);border:1px solid var(--rule);box-shadow:var(--shadow);border-radius:10px;padding:1rem 1.1rem}.summary-card .name{margin-bottom:.15rem;font-weight:600}.summary-card .pan{color:var(--ink-faint);font-family:IBM Plex Mono,monospace;font-size:.74rem}.summary-card .total{margin-top:.6rem;font-size:1.2rem;font-weight:700}.summary-card .fy-label{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);font-family:IBM Plex Mono,monospace;font-size:.66rem}.tds-pill{background:var(--amber-soft);color:var(--amber);border-radius:999px;margin-top:.5rem;padding:.2rem .55rem;font-size:.7rem;font-weight:600;display:inline-block}.section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin:2rem 0 .9rem;font-family:IBM Plex Mono,monospace;font-size:.75rem}.invoice-row{background:var(--paper);border:1px solid var(--rule);box-shadow:var(--shadow);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.8rem;padding:1rem 1.2rem;display:flex}.invoice-row .who{font-weight:600}.invoice-row .num{color:var(--ink-soft);font-family:IBM Plex Mono,monospace;font-size:.78rem}.invoice-row .items-list{color:var(--ink-soft);margin-top:.4rem;font-size:.82rem}.invoice-row .amount{white-space:nowrap;font-size:1.1rem;font-weight:700}.invoice-row .actions{align-items:center;gap:.5rem;display:flex}.status-pill{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:.2rem .6rem;font-size:.7rem;font-weight:600}.status-pill.pending{background:var(--amber-soft);color:var(--amber)}.status-pill.approved{background:var(--moss-soft);color:var(--moss-strong)}.status-pill.declined{color:var(--stamp);background:#f3deda}.btn-approve,.btn-decline{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:6px;padding:.45rem .85rem;font-size:.82rem;font-weight:600}.btn-approve{background:var(--moss);color:var(--paper)}.btn-decline{border-color:var(--stamp);color:var(--stamp);background:0 0}.btn-approve:hover,.btn-decline:hover{filter:brightness(.95)}.empty-state{color:var(--ink-faint);padding:1rem 0;font-style:italic}.login-wrap{max-width:380px;margin:4rem auto;padding:0 1.5rem}.login-wrap .panel h2{text-transform:none;letter-spacing:normal;color:var(--ink);margin-bottom:1.2rem;font-family:IBM Plex Sans,sans-serif;font-size:1.1rem}.login-wrap button.primary{background:var(--moss);border:1px solid var(--moss);width:100%;color:var(--paper);font:inherit;cursor:pointer;border-radius:6px;padding:.65rem;font-weight:600}.login-error{color:var(--stamp);margin-top:.6rem;font-size:.82rem}
