:root{--bg:#f5f3f0;--bg-2:#eeece8;--paper:#fff;--ink:#1f1f1f;--ink-soft:#666;--ink-mute:#999;--line:#dddad5;--line-soft:#e8e6e3;--orange:#f97015;--orange-2:#e05d06;--orange-soft:#fee7d7;--blue:#0da2e7;--blue-soft:#e7f6fe;--purple:#9234ea;--purple-soft:#f3e8fd;--green:#279b51;--green-soft:#def7e7;--amber:#f59f0a;--amber-soft:#fdf0d8;--red:#e31c1c;--red-soft:#fce8e8;--shadow-sm:0 1px 2px #0000000a;--shadow:0 4px 16px #0000000f;--shadow-lg:0 18px 50px #0000001a;--r-sm:4px;--r:8px;--r-lg:12px;--r-pill:999px;--font:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--safe-top:env(safe-area-inset-top,0px);--safe-bot:env(safe-area-inset-bottom,0px)}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--bg-2)}body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none;min-height:100dvh;font-size:16px;line-height:1.5}button{font:inherit;color:inherit;cursor:pointer}input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}.app-root{background:var(--bg);flex-direction:column;max-width:520px;min-height:100dvh;margin:0 auto;display:flex;position:relative}@media (width>=768px) and (width<=1023px){.app-root{box-shadow:var(--shadow-lg);max-width:600px}}@media (width>=1024px){.app-root{max-width:none;box-shadow:none;grid-template-rows:1fr;grid-template-columns:240px 1fr;min-height:100vh;display:grid}}.app-header{padding:calc(20px + var(--safe-top)) 20px 16px;background:var(--bg);z-index:30;justify-content:space-between;align-items:flex-end;display:flex;position:sticky;top:0}@media (width>=1024px){.app-header{width:100%;max-width:1100px;margin:0 auto;padding:32px 40px 20px;position:static}.greet-name{font-size:32px}}.app-header.with-rule{border-bottom:1px solid var(--line)}.brand-mark{align-items:center;gap:10px;display:flex}.brand-mark img{width:auto;height:28px}.greet-eyebrow{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);font-size:11px;font-weight:600}.greet-name{letter-spacing:-.025em;margin-top:2px;font-size:28px;font-weight:800;line-height:1.05}.avatar{border-radius:var(--r-pill);background:var(--orange);color:#fff;justify-content:center;align-items:center;width:40px;height:40px;font-size:16px;font-weight:700;display:flex}.avatar.button{border:0}.app-main{padding:0 20px calc(96px + var(--safe-bot));flex-direction:column;flex:1;gap:18px;display:flex}@media (width>=1024px){.app-main{gap:24px;width:100%;max-width:1100px;margin:0 auto;padding:0 40px 60px}}.section-h{justify-content:space-between;align-items:baseline;margin-top:4px;margin-bottom:6px;display:flex}.section-h h2{letter-spacing:-.01em;margin:0;font-size:16px;font-weight:700}.section-h .meta{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);font-size:11px;font-weight:600}.bottom-nav{z-index:40;padding:8px 12px calc(8px + var(--safe-bot));-webkit-backdrop-filter:saturate(180%)blur(20px);border-top:1px solid var(--line);background:#f5efe6eb;position:fixed;bottom:0;left:0;right:0}@media (width>=768px) and (width<=1023px){.bottom-nav{max-width:600px;margin:0 auto;left:50%;transform:translate(-50%)}}@media (width>=1024px){.bottom-nav{display:none}}.side-nav{display:none}@media (width>=1024px){.side-nav{background:var(--bg-2);border-right:1px solid var(--line);flex-direction:column;align-self:start;gap:4px;height:100vh;padding:28px 16px;display:flex;position:sticky;top:0}.side-nav .brand{border-bottom:1px solid var(--line);align-items:center;gap:10px;margin-bottom:12px;padding:0 8px 24px;display:flex}.side-nav .brand img{width:auto;height:24px}.side-nav .brand .name{letter-spacing:-.02em;font-size:16px;font-weight:800}.side-nav .brand .name small{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);margin-top:2px;font-size:10px;font-weight:600;display:block}.side-nav-btn{border-radius:var(--r-sm);color:var(--ink-soft);text-align:left;cursor:pointer;letter-spacing:-.005em;background:0 0;border:0;align-items:center;gap:10px;width:100%;padding:10px 12px;font-size:14px;font-weight:600;display:flex}.side-nav-btn:hover{background:var(--paper);color:var(--ink)}.side-nav-btn.is-active{background:var(--ink);color:#fff}.side-nav-btn .ic{text-align:center;width:18px;font-size:16px;line-height:1}.side-nav .foot{border-top:1px solid var(--line);margin-top:auto;padding-top:12px}}.bottom-nav-inner{background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow-sm);border:1px solid var(--line);grid-template-columns:repeat(3,1fr);gap:4px;padding:6px;display:grid}.nav-btn{border-radius:var(--r-sm);color:var(--ink-soft);letter-spacing:.04em;text-transform:uppercase;background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;padding:8px 0;font-size:11px;font-weight:600;transition:background .12s,color .12s;display:flex}.nav-btn .ic{font-size:18px;line-height:1}.nav-btn.is-active{background:var(--ink);color:#fff}.nav-btn.is-active .ic{color:#fff}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:16px}.card.dark{background:var(--ink);color:#fff;border-color:var(--ink)}.card.dark .label{color:var(--orange)}.alert{background:var(--orange-soft);border:1px solid #fdd1b4;border-left:4px solid var(--orange);border-radius:var(--r);padding:14px 16px}.alert .lab{letter-spacing:.14em;text-transform:uppercase;color:var(--orange-2);font-size:11px;font-weight:700}.alert .ttl{letter-spacing:-.01em;margin:4px 0;font-size:17px;font-weight:700;line-height:1.25}.alert .sub{color:var(--ink-soft);font-size:13px;line-height:1.4}.alert.muted{background:var(--bg-2);border-color:var(--line);border-left-color:var(--amber)}.alert.muted .lab{color:var(--amber)}.alert.success{background:var(--green-soft);border-color:#adebc4;border-left-color:var(--green)}.alert.success .lab{color:var(--green)}.kpis{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}@media (width>=768px){.kpis{grid-template-columns:repeat(4,1fr);gap:12px}.kpi{padding:18px 16px 14px}.kpi .v{font-size:30px}}.grid-2{flex-direction:column;gap:18px;display:flex}@media (width>=1024px){.grid-2{grid-template-columns:1fr 1fr;align-items:start;gap:24px;display:grid}.hero{border-radius:var(--r-lg);margin:0;padding:28px 32px 24px}.hero .nm{font-size:36px}.hero:after{width:220px;height:220px}}.kpi{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:14px 14px 12px}.kpi .v{letter-spacing:-.025em;font-size:26px;font-weight:800;line-height:1}.kpi .v.green{color:var(--green)}.kpi .v.red{color:var(--red)}.kpi .v.orange{color:var(--orange)}.kpi .l{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-top:6px;font-size:11px;font-weight:600}.row-list{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);flex-direction:column;display:flex;overflow:hidden}.row{border-bottom:1px solid var(--line-soft);text-align:left;width:100%;color:var(--ink);cursor:pointer;background:0 0;border-top:0;border-left:0;border-right:0;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:12px 16px;font-size:14px;display:grid}.row:last-child{border-bottom:0}.row:active{background:var(--bg-2)}.row .nm{font-weight:600}.row .meta{color:var(--ink-soft);margin-top:2px;font-size:12px}.row .right{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.pill{border-radius:var(--r-pill);letter-spacing:.03em;align-items:center;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.pill.orange{background:var(--orange);color:#fff}.pill.green{background:var(--green);color:#fff}.pill.amber{background:var(--amber);color:var(--ink)}.pill.red{background:var(--red);color:#fff}.pill.blue{background:var(--blue);color:#fff}.pill.outline{border:1px solid var(--line);color:var(--ink-soft);background:0 0}.pill.soft-orange{background:var(--orange-soft);color:var(--orange-2)}.pill.soft-green{background:var(--green-soft);color:var(--green)}.pill.soft-amber{background:var(--amber-soft);color:var(--amber)}.hero{background:linear-gradient(135deg, var(--orange) 0%, var(--orange-2) 100%);color:#fff;padding:calc(24px + var(--safe-top)) 20px 20px;border-radius:0 0 var(--r-lg) var(--r-lg);margin:0 -20px;position:relative;overflow:hidden}.hero:after{content:"";opacity:.35;background:#ff944c;border-radius:50%;width:180px;height:180px;position:absolute;top:-60px;right:-60px}.hero .back{color:#fff;border-radius:var(--r-sm);letter-spacing:.02em;background:#ffffff2e;border:0;align-items:center;gap:4px;margin-bottom:14px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.hero .nm{letter-spacing:-.03em;font-size:32px;font-weight:800;line-height:1}.hero .sb{opacity:.92;flex-wrap:wrap;gap:8px;margin-top:6px;font-size:13px;font-weight:500;display:flex}.hero .saldo-bar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--r);background:#ffffff29;justify-content:space-between;align-items:center;margin-top:16px;padding:12px 16px;display:flex}.hero .saldo-bar .l{text-transform:uppercase;letter-spacing:.14em;opacity:.85;font-size:11px;font-weight:700}.hero .saldo-bar .v{letter-spacing:-.025em;font-size:24px;font-weight:800}.hero .saldo-bar .v.warn{color:var(--amber-soft)}.quick-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:16px;display:grid}@media (width>=1024px){.quick-actions{grid-template-columns:repeat(4,1fr);gap:12px}.klanten-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;display:grid}.klanten-grid .row-list{display:contents}.klanten-grid .row{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}.factuur-layout{grid-template-columns:1fr 320px;align-items:start;gap:24px;display:grid}.factuur-layout .factuur-summary{position:sticky;top:24px}.check-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr))!important;display:grid!important}.detail-grid-2{grid-template-columns:1fr 1fr;align-items:start;gap:24px;display:grid}}.qa-btn{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);text-align:left;align-items:center;gap:8px;padding:12px 14px;font-size:14px;font-weight:600;display:flex}.qa-btn:active{background:var(--bg-2)}.qa-btn .ic{color:var(--orange);font-size:16px}.calendar{grid-template-columns:repeat(7,1fr);gap:4px;margin-top:4px;display:grid}.calendar .dow{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);text-align:center;padding-bottom:4px;font-size:10px;font-weight:700}.calendar .day{aspect-ratio:1;border-radius:var(--r-sm);background:var(--bg-2);color:var(--ink-soft);justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex}.calendar .day.empty{background:0 0}.calendar .day.has{background:var(--green);color:#fff}.calendar .day.future{background:var(--orange-soft);color:var(--orange-2)}.calendar .day.today{box-shadow:inset 0 0 0 2px var(--ink)}.invoice-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:1fr auto;align-items:center;gap:8px;padding:14px 16px;display:grid}.invoice-card.ready{border-left:4px solid var(--orange)}.invoice-card.flagged{border-left:4px solid var(--amber);background:#fef9f0}.invoice-card .nm{letter-spacing:-.01em;font-size:16px;font-weight:700;line-height:1.15}.invoice-card .det{color:var(--ink-soft);margin-top:4px;font-size:12px}.invoice-card .price{letter-spacing:-.025em;text-align:right;font-size:20px;font-weight:800}.invoice-card .price small{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);margin-top:2px;font-size:10px;font-weight:600;display:block}.cta-card{background:var(--ink);color:#fff;border-radius:var(--r);flex-direction:column;gap:6px;padding:18px;display:flex}.cta-card .label{letter-spacing:.14em;text-transform:uppercase;color:var(--orange);font-size:11px;font-weight:700}.cta-card .total{letter-spacing:-.03em;font-size:38px;font-weight:800;line-height:1}.cta-card .sub{color:#ffffffb3;font-size:13px}.cta-card .actions{flex-direction:column;gap:8px;margin-top:12px;display:flex}.btn-primary{background:var(--orange);color:#fff;border-radius:var(--r-sm);text-align:left;border:0;justify-content:space-between;align-items:center;padding:14px 16px;font-size:15px;font-weight:700;display:flex}.btn-secondary{color:var(--orange);border:1px solid var(--orange);border-radius:var(--r-sm);text-align:left;background:0 0;justify-content:space-between;align-items:center;padding:12px 16px;font-size:14px;font-weight:600;display:flex}.btn{background:var(--ink);color:#fff;border-radius:var(--r-sm);letter-spacing:-.01em;border:0;justify-content:center;align-items:center;gap:8px;width:100%;padding:14px 16px;font-size:15px;font-weight:700;display:flex}.btn.ghost{color:var(--ink);border:1px solid var(--line);background:0 0}.btn.orange{background:var(--orange)}.btn:disabled{opacity:.55;cursor:not-allowed}.spinner{border:2px solid var(--line);border-top-color:var(--orange);border-radius:50%;width:22px;height:22px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.skel{background:linear-gradient(100deg, var(--bg-2) 30%, #f6f5f3 50%, var(--bg-2) 70%);border-radius:var(--r-sm);background-size:200% 100%;animation:1.4s ease-in-out infinite skel}@keyframes skel{0%{background-position:200% 0}to{background-position:-200% 0}}.login-screen{background:var(--bg);flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}.login-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);width:100%;max-width:380px;box-shadow:var(--shadow);padding:28px 22px}.login-card .brand-mark{margin-bottom:14px}.login-card .brand-mark img{height:32px}.login-card h1{letter-spacing:-.025em;margin:0 0 4px;font-size:26px;font-weight:800}.login-card .sub{color:var(--ink-soft);margin-bottom:18px;font-size:14px}.login-card label{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin:12px 0 6px;font-size:11px;font-weight:700;display:block}.login-card input{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-sm);width:100%;color:var(--ink);outline:none;padding:12px 14px;font-size:16px}.login-card input:focus{border-color:var(--orange)}.login-card .err{color:var(--red);margin-top:8px;font-size:13px}.login-card .info{background:var(--bg-2);border-radius:var(--r-sm);color:var(--ink-soft);margin-top:12px;padding:10px 12px;font-size:12px;line-height:1.45}.muted{color:var(--ink-soft)}.center{justify-content:center;align-items:center;display:flex}.empty{text-align:center;color:var(--ink-soft);padding:40px 20px;font-size:14px}.error-banner{background:var(--red-soft);color:#9f1414;border-radius:var(--r-sm);border:1px solid #f7bbbb;padding:12px 14px;font-size:13px;line-height:1.45}.chips{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.chip{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-pill);color:var(--ink-soft);padding:6px 12px;font-size:13px;font-weight:600}.chip.is-active{background:var(--ink);color:#fff;border-color:var(--ink)}.search{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);width:100%;color:var(--ink);outline:none;padding:11px 14px;font-size:15px}.search:focus{border-color:var(--orange)}@media print{:root{--bg:#fff;--bg-2:#fff}body{background:#fff;font-size:10.5pt;line-height:1.45}.app-root{max-width:none;box-shadow:none}.bottom-nav,.no-print{display:none!important}.app-main{gap:12px!important;padding:0!important}.app-header{display:none!important}.hero{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:var(--orange)!important;color:#fff!important;border-radius:var(--r)!important;margin:0!important;padding:18px 22px!important}.hero:after{display:none}.pill,.alert,.invoice-card.ready,.invoice-card.flagged,.calendar .day.has,.calendar .day.future,.calendar .day.today,.kpi,.row-list,.card{-webkit-print-color-adjust:exact;print-color-adjust:exact}@page{margin:14mm;size:A4}.page-break{page-break-before:always}}.report-page{background:var(--paper);max-width:720px;min-height:100dvh;margin:0 auto;padding:24px 20px 80px}.report-actions{gap:8px;margin-bottom:20px;display:flex}.report-mast{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:center;margin-bottom:18px;padding-bottom:10px;display:flex}.report-mast img{width:auto;height:22px}.report-mast .meta{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);font-size:11px;font-weight:700}.report-h1{letter-spacing:-.025em;margin:12px 0 4px;font-size:28px;font-weight:800}.report-sub{color:var(--ink-soft);margin-bottom:18px;font-size:13px}.report-block{margin-top:20px}.report-block h3{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);margin:0 0 8px;font-size:13px;font-weight:700}.report-stats{grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0 16px;display:grid}.report-stat{border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px}.report-stat .v{letter-spacing:-.025em;font-size:22px;font-weight:800;line-height:1}.report-stat .v.orange{color:var(--orange)}.report-stat .v.green{color:var(--green)}.report-stat .v.red{color:var(--red)}.report-stat .l{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);margin-top:4px;font-size:10px;font-weight:700}.report-table{border-collapse:collapse;width:100%;font-size:12px}.report-table th{text-align:left;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);border-bottom:1.5px solid var(--ink);padding:8px 8px 6px;font-size:10px;font-weight:700}.report-table td{border-bottom:1px solid var(--line-soft);vertical-align:top;padding:6px 8px}.report-table tr:last-child td{border-bottom:0}.report-foot{border-top:1px solid var(--line);color:var(--ink-soft);text-align:center;letter-spacing:.04em;margin-top:28px;padding-top:12px;font-size:11px}
