:root{
  --bg:#fbf5ee;
  --paper:#fffdfa;
  --paper-2:#fff7f2;
  --ink:#2c2020;
  --muted:#7f6e69;
  --line:#ead8cb;
  --line-strong:#dfc1b2;
  --wine:#7f3035;
  --wine-dark:#4f1e21;
  --wine-deep:#351516;
  --wine-soft:#b95c67;
  --rose:#eaa8af;
  --blush:#f9e2dc;
  --peach:#f6cbbb;
  --cream:#f3e5d7;
  --green:#2f745d;
  --orange:#a66532;
  --red:#a13b43;
  --shadow:0 16px 44px rgba(87,44,35,.09);
  --shadow-soft:0 8px 24px rgba(87,44,35,.06);
  --radius:22px;
  --display:"Segoe Print","Bradley Hand","Comic Sans MS",cursive;
  --sans:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
}

*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:var(--sans);color:var(--ink);background:var(--bg)}
body{min-height:100vh;background:
  radial-gradient(circle at 88% 2%,rgba(234,168,175,.16),transparent 28rem),
  linear-gradient(180deg,#fffaf5 0,#fbf5ee 42%,#f8f0e8 100%)}
a{color:var(--wine);text-decoration:none}a:hover{text-decoration:none}
button,input,select,textarea{font:inherit}

.app-shell{display:grid;grid-template-columns:270px 1fr;min-height:100vh}
.sidebar{background:
  radial-gradient(circle at 20% 0%,rgba(185,92,103,.22),transparent 14rem),
  linear-gradient(180deg,#64292d 0,#4b1f22 58%,#351516 100%);
  color:#fff;padding:20px 15px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:30;overflow-y:auto;overflow-x:hidden;box-shadow:10px 0 35px rgba(53,21,22,.12)}
.brand{display:flex;gap:11px;align-items:center;padding:4px 8px 22px;position:relative}
.brand-mark{width:44px;height:44px;border-radius:15px 15px 18px 18px;background:linear-gradient(145deg,#c76a6e,#9d3f47);display:grid;place-items:center;font-size:21px;color:#fff;box-shadow:0 7px 18px rgba(0,0,0,.15);transform:rotate(-2deg)}
.brand-copy strong{display:block;font-family:var(--display);font-size:25px;line-height:1;color:#fff;font-weight:800;letter-spacing:-.03em}
.brand-copy small{display:block;color:#f0d9d2;margin-top:5px;font-size:12px;letter-spacing:.03em}
.brand-spark{position:absolute;right:11px;top:1px;color:#f0b5b7;font-size:21px;transform:rotate(12deg)}
.sidebar nav{display:grid;gap:6px}
.sidebar nav a,.sidebar-foot>a{color:#f3e8e3;text-decoration:none;padding:11px 12px;border-radius:14px;display:flex;gap:11px;align-items:center;transition:.18s ease;font-size:14px}
.sidebar nav a:hover{background:rgba(255,255,255,.08);color:#fff;transform:translateX(2px)}
.sidebar nav a.active{background:linear-gradient(135deg,#fde6df,#f6d4cb);color:#5a2427;font-weight:800;box-shadow:0 8px 22px rgba(38,12,14,.18)}
.nav-icon{width:24px;height:24px;display:grid;place-items:center;font-weight:800;font-size:17px;flex:0 0 24px}
.sidebar-art{margin-top:auto;padding:16px 4px 10px;display:flex;justify-content:center;opacity:.98}
.sidebar-art img{width:100%;max-width:220px;height:auto;display:block;border-radius:20px;box-shadow:0 12px 28px rgba(0,0,0,.18)}
.sidebar-foot{border-top:1px solid rgba(255,255,255,.14);padding-top:14px;margin-top:6px}
.user-chip{padding:5px 8px 8px;display:flex;align-items:center;gap:9px}
.user-chip b,.user-chip small{display:block}.user-chip b{font-size:13px}.user-chip small{color:#d8c2bd;margin-top:3px;font-size:11px;overflow:hidden;text-overflow:ellipsis;max-width:170px}
.avatar-heart{width:28px;height:28px;display:grid;place-items:center;border-radius:10px;background:rgba(255,255,255,.1);color:#f2b6ba}
.logout-link{font-size:13px!important;padding:9px 8px!important}.logout-link:hover{background:rgba(255,255,255,.08)}
.sidebar-backdrop{display:none}

.main{min-width:0;display:flex;flex-direction:column}
.topbar{min-height:94px;padding:16px 30px;background:rgba(255,250,245,.9);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:20;backdrop-filter:blur(15px)}
.page-heading{min-width:240px}.page-heading h1{font-family:var(--display);font-size:30px;line-height:1.05;margin:0;color:#2b1a1b;letter-spacing:-.04em}.page-heading p{margin:5px 0 0;color:#b16e6f;font-size:12px}.heading-heart{font-family:var(--sans);font-size:18px;color:#b3293e;margin-left:7px;vertical-align:4px}
.topbar-quote{margin-left:auto;min-width:190px;text-align:center;color:#a33f47;line-height:1.05;transform:rotate(-2deg)}.topbar-quote span,.topbar-quote b{display:block;font-family:var(--display)}.topbar-quote span{font-size:14px}.topbar-quote b{font-size:18px;font-weight:700}
.quick-add,.btn{background:linear-gradient(135deg,#8c343b,#72272e);color:#fff!important;text-decoration:none;border:0;border-radius:14px;padding:11px 16px;font-weight:800;cursor:pointer;box-shadow:0 8px 18px rgba(127,48,53,.17);transition:.16s ease;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.quick-add{margin-left:4px;white-space:nowrap}.quick-add span{font-size:19px;line-height:1}.quick-add:hover,.btn:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(127,48,53,.22)}
.btn{margin-left:0}.btn.secondary{background:#f5e4dc;color:#4c2a29!important;box-shadow:none}.btn.secondary:hover{background:#efd9cf}.btn.danger{background:#9a3434}.menu-btn{display:none;border:0;background:#f5e4dc;color:#5c2a2d;font-size:22px;width:42px;height:42px;border-radius:12px}

.content{padding:26px 28px 18px;max-width:1480px;width:100%;margin:0 auto;flex:1}
.app-footer{display:flex;gap:7px;align-items:center;justify-content:flex-end;padding:0 28px 18px;color:#9a6b65;font-size:11px}.app-footer span:nth-child(2){color:#b02f43}.app-footer small{color:#b49a92}

.flash{padding:13px 15px;border-radius:16px;margin-bottom:18px;border:1px solid transparent;box-shadow:var(--shadow-soft)}
.flash.success{background:#edf6f0;color:#28583f;border-color:#d1ead9}.flash.error{background:#fff0ef;color:#812d35;border-color:#f1cccc}

.welcome-strip{display:flex;align-items:center;gap:13px;background:linear-gradient(90deg,#fff1ec,#fff8f2);border:1px solid #efcfc3;border-radius:17px;padding:12px 16px;margin-bottom:18px;color:#6f5551;box-shadow:0 7px 20px rgba(104,54,43,.04)}
.welcome-icon{width:34px;height:34px;border-radius:12px;background:#f7d9d2;display:grid;place-items:center;color:#a8293e;font-size:18px;flex:0 0 34px}.welcome-strip b{color:#6d2d31}.welcome-strip small{display:block;color:#9c7a72;margin-top:2px}

.grid{display:grid;gap:18px}.cards{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px}
.card{background:linear-gradient(180deg,rgba(255,253,250,.98),rgba(255,250,246,.98));border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-soft);position:relative;overflow:hidden}
.card:after{content:"";position:absolute;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle,rgba(238,176,167,.11),transparent 68%);right:-35px;top:-35px;pointer-events:none}
.card h2,.card h3{font-family:var(--display);color:#2d1d1d;letter-spacing:-.03em;margin-top:0}.card h2{font-size:22px}.card h3{font-size:19px}.card h2:after,.card h3:after{content:" ♥";font-family:var(--sans);font-size:.66em;color:#b43145;vertical-align:.18em}
.metric{min-height:172px;padding:18px 18px 16px}.metric-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.metric-icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#f8d5cc,#fdeae4);color:#7f3035;font-weight:900;font-size:19px;box-shadow:inset 0 0 0 1px rgba(167,70,80,.08)}
.metric small{color:#5d4642;font-weight:700;font-size:13px}.metric strong{display:block;font-size:29px;margin-top:4px;letter-spacing:-.035em}.metric em{font-style:normal;font-size:11px;color:var(--muted)}.metric-accent{position:absolute;right:16px;bottom:14px;font-size:38px;color:#d36a75;opacity:.18;font-weight:900;transform:rotate(-6deg)}
.two-col{grid-template-columns:minmax(0,1.65fr) minmax(310px,.85fr)}.three-col{grid-template-columns:repeat(3,1fr)}
.muted{color:var(--muted)}

.panel-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:8px}.panel-title p{margin:2px 0 0}.panel-title .btn{flex:none}
.pill{display:inline-flex;padding:5px 10px;border-radius:999px;font-size:11px;background:#f0e2d8;font-weight:700}.pill.green{background:#e3f2e9;color:#315f49}.pill.orange{background:#f8eadb;color:#8a562a}.pill.red{background:#f9e3e3;color:#813232}
.actions{display:flex;gap:8px;flex-wrap:wrap}.table-wrap{overflow:auto;border-radius:14px}.table{width:100%;border-collapse:collapse;min-width:760px}.table th,.table td{padding:13px 10px;border-bottom:1px solid #eee0d7;text-align:left;font-size:13px}.table th{color:#8b7770;font-size:10px;text-transform:uppercase;letter-spacing:.055em;background:rgba(250,239,232,.43)}.table tbody tr:hover{background:#fff8f4}.table tr:last-child td{border-bottom:0}.amount.income{color:var(--green);font-weight:800}.amount.expense{color:#a33e45;font-weight:800}

.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-group{display:grid;gap:7px}.form-group.full{grid-column:1/-1}.form-group label{font-size:12px;font-weight:800;color:#523a37}.form-group input,.form-group select,.form-group textarea,.toolbar input,.toolbar select{width:100%;border:1px solid #dfcbc0;background:#fffefa;border-radius:12px;padding:11px 12px;color:var(--ink);transition:.14s ease}.form-group textarea{min-height:90px;resize:vertical}.form-group input:focus,.form-group select:focus,.form-group textarea:focus,.toolbar input:focus,.toolbar select:focus{outline:3px solid rgba(185,92,103,.14);border-color:#c9868b}.help{font-size:11px;color:var(--muted)}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.toolbar form{display:flex;gap:8px;flex-wrap:wrap}.toolbar input,.toolbar select{width:auto;min-width:110px;padding:9px 10px}.empty{padding:34px;text-align:center;color:var(--muted);background:#fff8f3;border:1px dashed #e9cfc2;border-radius:15px}.stat-list{display:grid;gap:0}.stat-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 2px;border-bottom:1px solid #eee1d9}.stat-row:last-child{border-bottom:0}.stat-left{display:flex;align-items:center;gap:9px}.stat-dot{width:10px;height:10px;border-radius:50%;background:#b43d4d;box-shadow:0 0 0 4px rgba(180,61,77,.08)}.stat-dot.rose{background:#dc8793}.stat-dot.tan{background:#bd8a70}.stat-link{color:inherit}.stat-link:hover{color:var(--wine)}

.source-list{display:grid;gap:15px;margin-top:8px}.source-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center}.source-badge{width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:#f7dfd7;color:#8b3139;font-weight:900}.source-info{min-width:0}.source-label{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;font-size:12px}.source-label b{white-space:nowrap}.progress{height:8px;border-radius:99px;background:#f2e6df;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,#b63c4f,#de8992);border-radius:99px}.source-amount{font-weight:800;font-size:12px;white-space:nowrap}.tip-box{margin-top:17px;padding:11px 12px;border-radius:14px;background:#fff0ea;border:1px solid #efcbbf;color:#705752;font-size:11px;display:flex;gap:9px;align-items:flex-start}.tip-box .bulb{font-size:17px}

.danger-note,.info-note{padding:13px 14px;border-radius:14px;font-size:12px}.danger-note{background:#fff0ef;color:#742e2e;border:1px solid #f0cccc}.info-note{background:#fff4eb;color:#66504a;border:1px solid #efd9c9}
.big-number{font-size:34px;font-weight:800}.kpi-label{font-size:11px;text-transform:uppercase;color:var(--muted);letter-spacing:.05em}
.invoice-line{display:grid;grid-template-columns:2fr .6fr 1fr .7fr auto;gap:8px;align-items:end;margin-bottom:8px}.invoice-total{text-align:right;font-weight:800;padding:15px 0;font-size:16px}.print-only{display:none}
code{background:#f3e7de;padding:2px 5px;border-radius:6px;color:#6e3437}

.login-page{min-height:100vh;display:grid;place-items:center;padding:28px;background:
  radial-gradient(circle at 18% 18%,rgba(182,75,88,.13),transparent 24rem),
  linear-gradient(135deg,#faeee6,#fffaf4 48%,#f4e4dc)}
.login-page:before{content:"";position:fixed;left:4vw;bottom:0;width:min(29vw,390px);height:min(68vh,650px);background:url('sidebar-cat.png') center bottom/contain no-repeat;filter:drop-shadow(0 16px 26px rgba(70,25,27,.12));opacity:.96;pointer-events:none}
.login-card{width:min(470px,100%);background:rgba(255,253,249,.96);border:1px solid #e8d1c4;border-radius:28px;padding:32px;box-shadow:0 26px 65px rgba(84,38,31,.14);position:relative;z-index:2}.login-card:before{content:"♡";position:absolute;right:22px;top:16px;color:#d1848b;font-size:28px;transform:rotate(13deg)}.login-logo{text-align:center;margin-bottom:24px}.login-logo .brand-mark{margin:0 auto 11px;color:#fff}.login-logo h1{font-family:var(--display);font-size:29px;margin:0;color:#552226}.login-logo p{margin:5px 0 0}.login-card .btn{width:100%;margin-top:8px}

@media(max-height:820px){.sidebar-art{display:none}.sidebar nav{margin-bottom:10px}}
@media(max-width:1120px){.topbar-quote{display:none}.two-col{grid-template-columns:1.35fr .8fr}.cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:1000px){
  .two-col,.three-col{grid-template-columns:1fr}.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-290px;width:270px;transition:.22s ease}.sidebar.open{left:0;box-shadow:12px 0 36px rgba(0,0,0,.24)}.sidebar.open~.sidebar-backdrop{display:block;position:fixed;inset:0;background:rgba(44,24,24,.34);border:0;z-index:25}.menu-btn{display:grid;place-items:center}.topbar{padding:14px 18px;min-height:82px}.content{padding:18px}.login-page:before{opacity:.18;width:60vw;left:-10vw}
}
@media(max-width:650px){
  .cards{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.form-group.full{grid-column:auto}.quick-add{font-size:0;padding:10px 13px}.quick-add span{font-size:22px}.invoice-line{grid-template-columns:1fr 1fr}.invoice-line>*:first-child{grid-column:1/-1}.content{padding:12px}.card{padding:16px;border-radius:18px}.topbar{gap:10px}.page-heading{min-width:0;flex:1}.page-heading h1{font-size:21px}.page-heading p{font-size:10px}.metric{min-height:146px}.metric strong{font-size:27px}.welcome-strip{align-items:flex-start}.app-footer{padding:2px 14px 14px;justify-content:center}.login-card{padding:24px;border-radius:22px}
}
@media print{.sidebar,.topbar,.sidebar-backdrop,.app-footer,.no-print{display:none!important}.app-shell{display:block}.content{padding:0}.card{border:0;box-shadow:none}.print-only{display:block}body{background:#fff}}


/* v3 - booking categories, private entries and visible corrections */
.filter-tabs,.settings-tabs{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.filter-tabs a,.settings-tabs a{display:inline-flex;align-items:center;gap:6px;padding:9px 12px;border-radius:12px;background:#f7e8e0;color:#68413e;font-size:12px;font-weight:800;border:1px solid transparent}
.filter-tabs a:hover,.settings-tabs a:hover{background:#f1dbd1}
.filter-tabs a.active,.settings-tabs a.active{background:linear-gradient(135deg,#8c343b,#72272e);color:#fff;box-shadow:0 7px 16px rgba(127,48,53,.14)}
.filter-tabs a span{min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:rgba(255,255,255,.22);display:grid;place-items:center;font-size:10px}
.settings-tabs{margin-bottom:18px}.settings-tabs a{padding:11px 16px}
.transaction-toolbar{align-items:flex-start}.year-filter{display:flex!important;gap:8px!important}.year-filter input{max-width:100px}.compact-note{margin-bottom:15px}.compact-note a{font-weight:800;text-decoration:underline}
.pill.gray{background:#ece7e3;color:#756b67}.row-void{background:#f8f4f1!important}.row-void td{color:#8e817c}.row-void .transaction-main{text-decoration:line-through;text-decoration-thickness:1px}.row-void .amount{color:#8e817c!important}.row-actions{white-space:nowrap}
.booking-card{overflow:visible}.booking-type-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.booking-type-card{position:relative;display:flex;align-items:center;gap:11px;padding:14px;border:1px solid #e4cfc4;border-radius:16px;background:#fffaf6;cursor:pointer;transition:.16s ease;min-height:84px}.booking-type-card:hover{transform:translateY(-1px);border-color:#c9898c;box-shadow:0 8px 20px rgba(87,44,35,.07)}.booking-type-card.selected{border-color:#9f4149;background:linear-gradient(135deg,#fff0ea,#fbe4df);box-shadow:0 0 0 3px rgba(185,92,103,.1)}.booking-type-card input{position:absolute;opacity:0;pointer-events:none}.booking-type-card b,.booking-type-card small{display:block}.booking-type-card b{font-size:13px;color:#4d2527}.booking-type-card small{font-size:10px;color:#90736d;margin-top:3px;line-height:1.25}.booking-type-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:13px;background:#f4d6cf;color:#862f38;font-size:20px;font-weight:900;flex:0 0 38px}.is-hidden{display:none!important}.check-label,.mini-check{display:flex!important;align-items:center;gap:8px}.check-label input,.mini-check input{width:auto!important}.private-explanation{margin-top:-4px}
.category-columns{align-items:start}.category-list{display:grid;gap:8px;margin:16px 0}.category-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:8px;border:1px solid #eeddd4;border-radius:14px;background:#fffaf6}.category-row input[type=text],.category-row>input:not([type=hidden]){border:1px solid #dfcbc0;background:#fffefa;border-radius:10px;padding:9px 10px;width:100%}.mini-check{font-size:11px;font-weight:700;color:#6a514c;white-space:nowrap}.category-row .btn{padding:9px 11px;font-size:11px}.category-add{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;border-top:1px dashed #e3cbc0;padding-top:15px}.category-add input{border:1px solid #dfcbc0;background:#fffefa;border-radius:12px;padding:11px 12px;width:100%}
.void-banner{display:flex;flex-direction:column;gap:3px;padding:13px 14px;border-radius:14px;background:#f1ece8;border:1px solid #ded4cf;color:#675b57;margin:0 0 18px}.void-banner span{font-size:11px}.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}.detail-grid>div{background:#fff7f2;border:1px solid #eeddd4;border-radius:14px;padding:12px}.detail-grid small,.detail-grid b{display:block}.detail-grid small{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#917d76;margin-bottom:5px}.detail-grid b{font-size:13px}.detail-grid .wide{grid-column:span 2}.correction-box{margin-top:18px;padding:16px;border-radius:17px;background:#f8f3ef;border:1px solid #e2d5cf}.correction-box h3{margin-bottom:8px}.detail-actions{margin-top:18px}
@media(max-width:900px){.booking-type-grid{grid-template-columns:repeat(2,1fr)}.detail-grid{grid-template-columns:repeat(2,1fr)}.category-row{grid-template-columns:1fr auto}.category-row .mini-check{grid-row:2}.category-row .btn{grid-row:2}}
@media(max-width:560px){.booking-type-grid{grid-template-columns:1fr}.filter-tabs,.settings-tabs{display:grid;grid-template-columns:repeat(2,1fr)}.filter-tabs a,.settings-tabs a{justify-content:center}.category-row,.category-add{grid-template-columns:1fr}.category-row .mini-check,.category-row .btn{grid-row:auto}.detail-grid{grid-template-columns:1fr}.detail-grid .wide{grid-column:auto}}

/* v4 factuurbeheer */
.invoice-tabs{margin-top:4px}.invoice-row-deleted{background:#f8f4f1!important}.invoice-row-deleted td{color:#8c807b}.invoice-row-deleted td:first-child b{text-decoration:line-through;text-decoration-thickness:1px}.invoice-view-actions{align-items:flex-start}.inline-status-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.inline-status-form select{min-width:130px}.invoice-management-grid{margin-top:18px}.invoice-history{margin-top:18px}.invoice-history .table{min-width:680px}.invoice-management-grid .danger-note{margin-top:8px}.invoice-management-grid form{margin-top:12px}
@media(max-width:760px){.invoice-view-actions{display:grid}.invoice-view-actions>.actions{width:100%}.inline-status-form{width:100%}.inline-status-form select{flex:1}.invoice-management-grid{grid-template-columns:1fr}.invoice-tabs{display:grid;grid-template-columns:repeat(2,1fr)}.invoice-tabs a{justify-content:center}}
