:root{
  --green:#134C43;--green-2:#0f4038;--lime:#CCEB6A;--lime-2:#d9f385;--white:#fff;
  --bg:#f3f6f5;--surface:#fff;--surface-2:#f7faf9;--surface-3:#edf3f1;
  --ink:#18302d;--muted:#6f7d7a;--line:#dfe8e5;--line-strong:#c7d6d2;
  --danger:#a63c3c;--danger-bg:#fff0f0;--success:#23643a;--success-bg:#eaf7ed;
  --info:#15594f;--info-bg:#edf6f4;--shadow:0 12px 40px rgba(19,76,67,.09);
  --shadow-hover:0 15px 34px rgba(19,76,67,.16);--radius:16px;--sidebar:250px;
}
html[data-theme="dark"]{
  --bg:#0e1715;--surface:#16211f;--surface-2:#1a2825;--surface-3:#20302d;
  --ink:#eef5f3;--muted:#9eafab;--line:#2a3c38;--line-strong:#3a514c;
  --danger:#ff9a9a;--danger-bg:#351e1e;--success:#9de5ad;--success-bg:#173222;
  --info:#a1ddd3;--info-bg:#19302c;--shadow:0 14px 40px rgba(0,0,0,.23);--shadow-hover:0 18px 42px rgba(0,0,0,.34);
}
*{box-sizing:border-box}
html{min-height:100%;background:var(--bg)}
body{margin:0;min-height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{color:inherit}.muted{color:var(--muted)}
.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr)}
.sidebar{background:var(--green);color:#fff;padding:26px 18px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:50;box-shadow:8px 0 30px rgba(0,0,0,.06)}
.brand-block{padding:8px 10px 28px}.brand-block img{width:170px;max-width:100%;display:block}
.sidebar nav{display:flex;flex-direction:column;gap:2px;min-height:0;overflow:auto;scrollbar-width:thin}
.nav-link{display:flex;gap:12px;align-items:center;padding:11px 13px;border-radius:10px;color:rgba(255,255,255,.78);font-weight:680;position:relative;transition:background-color .18s ease,color .18s ease,transform .18s ease,box-shadow .18s ease}
.nav-link .nav-icon{width:20px;text-align:center;opacity:.9}.nav-link:hover{background:rgba(204,235,106,.12);color:#fff;transform:translateX(2px)}
.nav-link.active{background:rgba(204,235,106,.15);color:#fff;box-shadow:inset 3px 0 0 var(--lime)}
.sidebar-foot{margin-top:auto;padding:16px 12px;border-top:1px solid rgba(255,255,255,.13)}.sidebar-foot a{color:rgba(255,255,255,.8);font-weight:700}.sidebar-foot a:hover{color:var(--lime)}
.sidebar-overlay{display:none}
.main{min-width:0}.topbar{height:84px;background:color-mix(in srgb,var(--surface) 96%,transparent);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px;position:sticky;top:0;z-index:35;backdrop-filter:blur(14px)}
.topbar-left,.top-actions{display:flex;align-items:center;gap:12px}.topbar h1{font-size:26px;line-height:1.15;margin:0;letter-spacing:-.02em}
.mobile-menu-btn{display:none;width:42px;height:42px;border:1px solid var(--line);background:var(--surface);border-radius:11px;align-items:center;justify-content:center;flex-direction:column;gap:4px;cursor:pointer}
.mobile-menu-btn span{display:block;width:18px;height:2px;background:var(--ink);border-radius:2px}
.secure-pill{font-size:12px;background:var(--success-bg);color:var(--success);padding:7px 10px;border-radius:999px;font-weight:750;border:1px solid color-mix(in srgb,var(--success) 15%,transparent)}
.theme-toggle,.install-app-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;padding:8px 11px;font-weight:750;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:.18s ease}
.theme-toggle:hover,.install-app-btn:hover{border-color:var(--line-strong);background:var(--surface-2);transform:translateY(-1px)}
.theme-icon{font-size:17px;line-height:1}.content{padding:30px 34px 50px;max-width:1680px;width:100%;margin:0 auto}
.grid{display:grid;gap:18px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease,background-color .2s ease}
.card.interactive:hover{transform:translateY(-2px);border-color:var(--line-strong);box-shadow:var(--shadow-hover)}
.metric-label{color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.075em}.metric-value{font-size:30px;font-weight:850;margin-top:8px;letter-spacing:-.035em}
.hero-card{background:var(--green);color:#fff;position:relative;overflow:hidden;border-color:transparent;box-shadow:0 18px 40px rgba(19,76,67,.18)}
.hero-card:after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:36px 36px;mask-image:linear-gradient(to left,#000,transparent 72%);pointer-events:none}.hero-card:before{content:"";position:absolute;width:180px;height:180px;border-radius:36px;background:rgba(204,235,106,.08);right:7%;top:-100px;transform:rotate(18deg)}
.hero-card>*{position:relative;z-index:1}.hero-card .accent{color:var(--lime)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:9px;padding:10px 14px;font-weight:780;cursor:pointer;position:relative;overflow:hidden;isolation:isolate;transition:background-color .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.btn:after{content:"";position:absolute;z-index:-1;top:-45%;left:-55%;width:34%;height:190%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.27),transparent);transform:translateX(-200%) rotate(12deg);transition:transform .46s ease}
.btn:hover:not(:disabled):after{transform:translateX(540%) rotate(12deg)}.btn:hover:not(:disabled){transform:translateY(-2px)}.btn:active:not(:disabled){transform:translateY(0) scale(.985)}
.btn-primary{background:var(--green);color:#fff}.btn-primary:hover:not(:disabled){background:#0e443b;box-shadow:0 9px 22px rgba(19,76,67,.23)}
.btn-accent{background:var(--lime);color:var(--green)}.btn-accent:hover:not(:disabled){background:var(--lime-2);color:#103f38;box-shadow:0 9px 22px rgba(155,188,54,.22)}
.btn-light{background:var(--surface);color:var(--green);border:1px solid var(--line)}html[data-theme="dark"] .btn-light{color:var(--ink)}.btn-light:hover:not(:disabled){background:var(--surface-2);border-color:var(--line-strong);box-shadow:0 7px 18px rgba(19,76,67,.09)}
.btn-danger{background:var(--danger-bg);color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 28%,transparent)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger-bg) 70%,var(--danger) 8%);box-shadow:0 7px 18px rgba(166,60,60,.12)}
.btn-sm{padding:7px 10px;border-radius:8px;font-size:13px}.btn:disabled{opacity:.5;cursor:not-allowed}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}.toolbar-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.table-wrap{overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 6px 24px rgba(19,76,67,.04)}.table{width:100%;border-collapse:collapse;min-width:680px}.table th,.table td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.table th{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);background:var(--surface-2);position:sticky;top:0;z-index:1}.table tr:last-child td{border-bottom:0}.table tbody tr{transition:background-color .16s ease}.table tbody tr:hover{background:color-mix(in srgb,var(--lime) 5%,var(--surface))}.table a:not(.btn):hover{color:var(--green);text-decoration:underline;text-underline-offset:3px}
.badge{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:12px;font-weight:780;background:var(--surface-3);color:var(--muted);white-space:nowrap}.badge.success{background:var(--success-bg);color:var(--success)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.danger{background:var(--danger-bg);color:var(--danger)}
.action-menu{position:relative;display:inline-block}.action-menu>summary{list-style:none;width:38px;height:36px;border:1px solid var(--line);border-radius:9px;background:var(--surface);display:grid;place-items:center;cursor:pointer;font-weight:900;letter-spacing:2px;transition:.16s ease}.action-menu>summary::-webkit-details-marker{display:none}.action-menu>summary:hover{background:var(--surface-2);border-color:var(--line-strong);transform:translateY(-1px)}
.action-menu[open]>summary{background:var(--surface-3);border-color:var(--line-strong)}.action-menu-popover{position:absolute;right:0;top:43px;z-index:30;width:185px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:7px;box-shadow:0 18px 44px rgba(0,0,0,.16)}.action-menu-popover a,.action-menu-popover button{display:flex;width:100%;text-align:left;align-items:center;border:0;background:transparent;color:var(--ink);padding:9px 10px;border-radius:8px;cursor:pointer;font-weight:680;font-size:13px}.action-menu-popover a:hover,.action-menu-popover button:hover{background:var(--surface-2);color:var(--green)}.action-menu-popover .danger-action{color:var(--danger)}.action-menu-popover form{margin:0}
.form-card{max-width:1100px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.field{display:flex;flex-direction:column;gap:7px}.field.full{grid-column:1/-1}.field label{font-size:13px;font-weight:760;color:color-mix(in srgb,var(--ink) 83%,var(--muted))}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line-strong);border-radius:9px;padding:10px 11px;background:var(--surface);color:var(--ink);outline:none;transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(19,76,67,.11)}html[data-theme="dark"] .field input:focus,html[data-theme="dark"] .field select:focus,html[data-theme="dark"] .field textarea:focus{border-color:var(--lime);box-shadow:0 0 0 3px rgba(204,235,106,.10)}.field textarea{min-height:95px;resize:vertical}
.line-items{display:flex;flex-direction:column;gap:9px}.line-row{display:grid;grid-template-columns:minmax(0,1fr) 110px 140px 40px;gap:8px}.icon-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;cursor:pointer;transition:.16s ease}.icon-btn:hover{background:var(--surface-2);border-color:var(--line-strong);color:var(--green);transform:translateY(-1px)}
.calc-box{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:16px;display:grid;gap:8px;max-width:380px;margin-left:auto}.calc-line{display:flex;justify-content:space-between}.calc-line.total{font-weight:850;font-size:18px;padding-top:8px;border-top:1px solid var(--line)}
.flash{margin:18px 34px 0;padding:12px 14px;border-radius:10px;border:1px solid}.flash.success{background:var(--success-bg);border-color:color-mix(in srgb,var(--success) 23%,transparent);color:var(--success)}.flash.error{background:var(--danger-bg);border-color:color-mix(in srgb,var(--danger) 23%,transparent);color:var(--danger)}.auth-flash{margin:12px 0}
.auth-body{margin:0;min-height:100vh;background:var(--green)}.auth-bg{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden;background-color:var(--green);background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:38px 38px}.auth-bg:before,.auth-bg:after{content:"";position:absolute;width:36px;height:36px;background:rgba(255,255,255,.13);box-shadow:130px 76px rgba(255,255,255,.06),270px -24px rgba(255,255,255,.1),410px 160px rgba(255,255,255,.07),560px 20px rgba(255,255,255,.05)}.auth-bg:before{top:6%;right:26%}.auth-bg:after{bottom:12%;left:14%}.auth-card{width:min(430px,100%);background:var(--surface);color:var(--ink);border-radius:18px;padding:34px;box-shadow:0 30px 80px rgba(0,0,0,.22);position:relative;z-index:2;border:1px solid rgba(255,255,255,.08)}.auth-logo{background:var(--green);border-radius:10px;padding:12px;width:180px}.auth-card h1{margin:24px 0 8px}.auth-card .field{margin-top:14px}.auth-card .btn{width:100%;margin-top:18px}.auth-theme-toggle{position:fixed;right:18px;top:18px;z-index:10}.turnstile-wrap{margin-top:16px;min-height:65px;display:flex;align-items:center;overflow:hidden}
.invoice-paper{background:#fff;color:#18302d;max-width:900px;margin:0 auto;border:1px solid #dfe8e5;box-shadow:0 12px 40px rgba(19,76,67,.10);padding:56px;border-radius:2px}.invoice-paper .muted{color:#6f7d7a}.invoice-head{display:flex;justify-content:space-between;gap:30px}.invoice-logo{max-width:230px;max-height:100px;object-fit:contain}.invoice-title{text-align:right}.invoice-title h2{font-size:38px;letter-spacing:.12em;margin:0;color:var(--green)}.invoice-meta{margin-top:10px;display:grid;grid-template-columns:auto auto;gap:5px 16px}.invoice-parties{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin:40px 0}.invoice-parties h3{font-size:12px;text-transform:uppercase;letter-spacing:.09em;color:var(--green)}.invoice-table{width:100%;border-collapse:collapse}.invoice-table th,.invoice-table td{padding:12px 8px;border-bottom:1px solid #e5ecea}.invoice-table th{text-transform:uppercase;font-size:12px;letter-spacing:.07em;color:#526663}.text-right{text-align:right}.invoice-total{width:360px;margin:28px 0 0 auto}.invoice-total .row{display:flex;justify-content:space-between;padding:7px 0}.invoice-total .grand{border-top:2px solid var(--green);margin-top:8px;padding-top:13px;font-size:20px;font-weight:850}.invoice-notes{margin-top:42px;display:grid;grid-template-columns:1fr 1fr;gap:34px}.invoice-footer{margin-top:48px;padding-top:18px;border-top:1px solid #dfe8e5;font-size:12px;color:#6f7d7a}.signature{max-width:180px;max-height:75px}.section-title{font-weight:850;margin:10px 0 14px}.inline-form{display:flex;gap:8px;flex-wrap:wrap;align-items:end}.nowrap{white-space:nowrap}
.email-summary{margin-top:16px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:14px;display:grid;grid-template-columns:95px 1fr;gap:8px 12px;font-size:13px}.email-summary span{color:var(--muted);font-weight:700}.email-log-list{display:grid;gap:10px}.email-log-row{display:grid;grid-template-columns:1fr auto;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.email-log-row:last-child{border-bottom:0}.email-log-error{grid-column:1/-1;background:var(--surface-2);border-radius:8px;padding:8px}.email-config-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:18px}.email-config-grid>div{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:14px}.email-config-value{font-weight:800;margin-top:7px;word-break:break-word}
/* Dashboard v0.3 */
.dashboard-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px}.metric-card{padding:19px;min-height:126px;position:relative;overflow:hidden}.metric-card:after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;right:-48px;bottom:-52px;background:color-mix(in srgb,var(--lime) 15%,transparent)}.metric-card.paid{border-color:color-mix(in srgb,var(--success) 25%,var(--line));background:color-mix(in srgb,var(--success-bg) 52%,var(--surface))}.metric-card .metric-value{font-size:25px}.dashboard-main-grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(280px,.75fr);gap:18px;margin-top:18px}.chart-card{min-height:390px}.chart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:8px}.currency-switch{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);padding:4px;border-radius:10px}.currency-switch button{border:0;background:transparent;color:var(--muted);font-weight:800;padding:7px 11px;border-radius:7px;cursor:pointer}.currency-switch button.active{background:var(--surface);color:var(--green);box-shadow:0 3px 10px rgba(19,76,67,.09)}html[data-theme="dark"] .currency-switch button.active{color:var(--lime)}.chart-canvas-wrap{height:285px;position:relative;margin-top:14px}.chart-canvas-wrap canvas{width:100%;height:100%;display:block}.chart-tooltip{position:absolute;pointer-events:none;background:#102d28;color:#fff;padding:8px 10px;border-radius:8px;font-size:12px;font-weight:700;box-shadow:0 10px 24px rgba(0,0,0,.22);transform:translate(-50%,-110%);opacity:0;transition:opacity .1s ease;white-space:nowrap;z-index:3}.status-stack{display:grid;gap:12px}.status-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.status-bar{height:8px;background:var(--surface-3);border-radius:99px;overflow:hidden;grid-column:1/-1}.status-bar span{display:block;height:100%;background:var(--green);border-radius:99px}.status-bar.paid span{background:var(--lime)}.status-bar.overdue span{background:var(--danger)}.dashboard-secondary{margin-top:18px}
.security-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.security-tile{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:15px}.security-tile strong{display:block;margin-top:5px}
@media(max-width:1280px){.dashboard-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1050px){.dashboard-main-grid{grid-template-columns:1fr}.security-grid{grid-template-columns:1fr 1fr}.email-config-grid{grid-template-columns:1fr 1fr}}
@media(max-width:980px){
  .app-shell{display:block}.sidebar{position:fixed;left:0;top:0;width:min(82vw,285px);height:100dvh;transform:translateX(-105%);transition:transform .24s ease;box-shadow:18px 0 55px rgba(0,0,0,.25)}.sidebar-open .sidebar{transform:translateX(0)}.sidebar-overlay{display:block;position:fixed;inset:0;background:rgba(4,18,15,.48);backdrop-filter:blur(2px);z-index:45;opacity:0;pointer-events:none;transition:opacity .2s ease}.sidebar-open .sidebar-overlay{opacity:1;pointer-events:auto}.mobile-menu-btn{display:flex}.sidebar nav{display:flex;flex-direction:column;overflow:auto}.sidebar-foot{display:block}.topbar{padding:0 18px;height:72px}.content{padding:22px 18px calc(40px + env(safe-area-inset-bottom))}.grid-4,.grid-3,.grid-2,.form-grid{grid-template-columns:1fr}.dashboard-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.line-row{grid-template-columns:minmax(0,1fr) 80px 100px 40px}.flash{margin:14px 18px 0}.invoice-paper{padding:34px}.invoice-notes{grid-template-columns:1fr}.email-config-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:640px){
  .topbar{height:66px;padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}.topbar h1{font-size:20px;max-width:54vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.theme-label,.secure-pill{display:none}.top-actions{gap:7px}.theme-toggle{width:40px;height:40px;padding:0;justify-content:center}.content{padding:16px 12px calc(32px + env(safe-area-inset-bottom))}.card{padding:17px;border-radius:14px}.hero-card h2{font-size:27px!important}.dashboard-metrics{grid-template-columns:1fr 1fr;gap:10px}.metric-card{padding:15px;min-height:112px}.metric-card .metric-value{font-size:20px}.metric-label{font-size:10px}.dashboard-main-grid{gap:12px;margin-top:12px}.chart-card{min-height:350px}.chart-canvas-wrap{height:245px}.toolbar{align-items:stretch}.toolbar>.muted,.toolbar>.section-title{align-self:center}.toolbar-actions{width:100%}.toolbar-actions .btn{flex:1}.table th,.table td{padding:11px 12px}.form-grid{gap:12px}.line-row{grid-template-columns:1fr 68px 86px 36px;gap:6px}.invoice-paper{padding:22px 16px;width:100%;border-radius:10px}.invoice-head{flex-direction:column;gap:20px}.invoice-title{text-align:left}.invoice-title h2{font-size:30px}.invoice-meta{grid-template-columns:100px 1fr}.invoice-parties{grid-template-columns:1fr;gap:22px;margin:28px 0}.invoice-table{font-size:12px}.invoice-table th,.invoice-table td{padding:9px 5px}.invoice-total{width:100%}.invoice-notes{margin-top:28px}.invoice-footer{margin-top:32px}.email-config-grid,.security-grid{grid-template-columns:1fr}.email-summary{grid-template-columns:1fr}.email-log-row{grid-template-columns:1fr}.auth-bg{padding:15px}.auth-card{padding:25px 20px}.auth-logo{width:160px}.action-menu-popover{position:fixed;right:12px;left:auto;top:auto;min-width:200px}.chart-head{flex-direction:column}.currency-switch{align-self:flex-start}
}
@media(max-width:420px){.dashboard-metrics{grid-template-columns:1fr}.line-row{grid-template-columns:minmax(0,1fr) 64px 78px 34px}.btn{padding:9px 11px}.topbar h1{max-width:48vw}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.btn:after{display:none}}
@media print{
  :root,html[data-theme="dark"]{--bg:#fff;--surface:#fff;--ink:#18302d;--muted:#6f7d7a;--line:#dfe8e5}
  .sidebar,.sidebar-overlay,.topbar,.toolbar,.flash,.no-print,.action-menu{display:none!important}.app-shell{display:block}.content{padding:0;max-width:none}.main{background:#fff}.invoice-paper{box-shadow:none;border:0;max-width:none;padding:20mm;border-radius:0}.card{box-shadow:none}
}
/* Expense detail v0.3 */
.expense-view-grid{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(0,1.2fr);gap:18px;align-items:start}.expense-view-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:20px;border-bottom:1px solid var(--line)}.expense-view-head h2{margin:5px 0 3px;font-size:27px}.expense-amount{font-size:28px;font-weight:900;color:var(--green);white-space:nowrap}html[data-theme="dark"] .expense-amount{color:var(--lime)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:7px}.detail-grid>div{padding:15px 0;border-bottom:1px solid var(--line)}.detail-grid>div:nth-child(odd){padding-right:16px}.detail-grid>div:nth-child(even){padding-left:16px;border-left:1px solid var(--line)}.detail-grid span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:800;margin-bottom:6px}.detail-grid strong{display:block;overflow-wrap:anywhere}.expense-notes{margin-top:20px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:15px}.expense-notes p{margin:7px 0 0;line-height:1.6}.receipt-preview-card{min-height:480px}.receipt-preview-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.receipt-preview-image{display:block;max-width:100%;max-height:720px;width:auto;height:auto;margin:0 auto;border-radius:10px;box-shadow:0 10px 30px rgba(10,42,36,.12);border:1px solid var(--line);background:#fff}.receipt-image-link{display:block;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:14px;min-height:320px}.receipt-pdf-wrap{height:700px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.receipt-pdf-wrap iframe{border:0;width:100%;height:100%}.empty-receipt{min-height:320px;border:1px dashed var(--line);background:var(--surface-2);border-radius:12px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:9px;text-align:center;padding:30px}.empty-receipt-icon{font-size:36px;color:var(--muted)}.field-hint{margin-top:7px;font-size:12px}.field-hint a{font-weight:800}
@media(max-width:1050px){.expense-view-grid{grid-template-columns:1fr}.receipt-pdf-wrap{height:600px}}
@media(max-width:640px){.expense-view-head{flex-direction:column}.expense-amount{font-size:24px}.detail-grid{grid-template-columns:1fr}.detail-grid>div:nth-child(odd),.detail-grid>div:nth-child(even){padding:13px 0;border-left:0}.receipt-preview-head{align-items:flex-start;flex-direction:column}.receipt-pdf-wrap{height:65vh}.receipt-preview-card{min-height:0}.expense-page-grid{grid-template-columns:1fr}}
/* Dashboard polish */
.dashboard-hero{margin-bottom:18px;padding:27px 28px}.dashboard-hero h2{font-size:34px;margin:8px 0 7px;letter-spacing:-.035em}.dashboard-hero p{max-width:700px;color:rgba(255,255,255,.78);line-height:1.55;margin:0}.hero-eyebrow{color:rgba(255,255,255,.62)}.hero-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:20px}.btn-hero-ghost{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);color:#fff;backdrop-filter:blur(5px)}.btn-hero-ghost:hover:not(:disabled){background:rgba(255,255,255,.18);border-color:rgba(204,235,106,.45);box-shadow:0 9px 25px rgba(0,0,0,.12)}
.metric-value.compact{font-size:24px}.expense-metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.expense-metrics>div{padding:12px;border-radius:11px;background:var(--surface-2);border:1px solid var(--line)}.expense-metrics strong{display:block;margin-top:6px;font-size:18px}.quick-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}.recent-toolbar{margin-top:28px}.invoice-health-card{min-height:390px}.health-donut{width:154px;height:154px;border-radius:50%;margin:6px auto 25px;background:conic-gradient(var(--lime) 0 var(--paid-end),var(--green) var(--paid-end) var(--out-end),var(--danger) var(--out-end) var(--over-end),var(--surface-3) var(--over-end) 100%);display:grid;place-items:center;position:relative;box-shadow:inset 0 0 0 1px var(--line)}.health-donut:after{content:"";position:absolute;width:106px;height:106px;border-radius:50%;background:var(--surface);box-shadow:0 0 0 1px var(--line)}.health-donut>div{position:relative;z-index:2;text-align:center}.health-donut strong{display:block;font-size:31px;line-height:1}.health-donut span{display:block;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;margin-top:7px}
/* Stronger but still restrained interaction language */
.btn{will-change:transform}.btn:hover:not(:disabled){letter-spacing:.005em}.btn-primary:hover:not(:disabled),.btn-accent:hover:not(:disabled){filter:saturate(1.04)}.icon-btn{transition:transform .16s ease,background-color .16s ease,border-color .16s ease,color .16s ease}.icon-btn:hover{transform:translateY(-1px) scale(1.03);background:var(--surface-3);border-color:var(--line-strong)}
/* PWA / standalone */
@media(display-mode:standalone){body{min-height:100dvh}.topbar{padding-top:env(safe-area-inset-top);height:calc(76px + env(safe-area-inset-top))}.sidebar{padding-top:calc(26px + env(safe-area-inset-top))}}
@media(max-width:640px){.dashboard-hero{padding:23px 19px}.dashboard-hero h2{font-size:28px}.hero-actions .btn{flex:1;min-width:120px}.quick-action-grid{grid-template-columns:1fr 1fr}.expense-metrics{grid-template-columns:1fr}.invoice-health-card{min-height:0}.health-donut{width:138px;height:138px}.health-donut:after{width:94px;height:94px}.health-donut strong{font-size:27px}.action-menu-popover{position:absolute;right:0;top:43px;left:auto;min-width:190px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{min-width:720px}}
@media(max-width:420px){.quick-action-grid{grid-template-columns:1fr}.hero-actions{display:grid;grid-template-columns:1fr 1fr}.hero-actions .btn:first-child{grid-column:1/-1}}
.payment-confirm-card{border-color:color-mix(in srgb,var(--success) 28%,var(--line));background:var(--success-bg)}.payment-confirm-text,.payment-confirm-amount{color:var(--success)}.payment-confirm-amount{font-size:22px;font-weight:850}.service-period-strip{margin-top:20px;background:var(--surface-2);padding:10px 12px;border-radius:8px;border:1px solid var(--line)}
/* Menus escape horizontally scrollable tables without being clipped. */
.action-menu-popover{position:fixed;right:auto;top:auto;z-index:120}
@media(max-width:640px){.action-menu-popover{position:fixed;right:auto;top:auto;left:auto}}


/* v0.3.1 mobile usability hotfix */
/* Keep printable documents visually independent from the app theme. */
.invoice-paper,
html[data-theme="dark"] .invoice-paper{
  --doc-ink:#18302d;
  --doc-muted:#6f7d7a;
  --doc-line:#dfe8e5;
  --doc-soft:#f3f6f5;
  background:#fff;
  color:var(--doc-ink);
}
.invoice-paper .service-period-strip,
html[data-theme="dark"] .invoice-paper .service-period-strip{
  background:var(--doc-soft);
  color:var(--doc-ink);
  border-color:var(--doc-line);
}
.invoice-paper .service-period-strip strong{color:var(--green)}
.invoice-paper .invoice-meta,
.invoice-paper .invoice-parties,
.invoice-paper .invoice-table,
.invoice-paper .invoice-total{color:var(--doc-ink)}

/* Mobile action menu becomes a bottom sheet so Safari cannot clip it inside a table. */
@media(max-width:640px){
  .action-menu[open]::before{
    content:"";
    position:fixed;
    inset:0;
    z-index:118;
    background:rgba(4,18,15,.44);
    backdrop-filter:blur(2px);
  }
  .action-menu-popover{
    position:fixed!important;
    left:12px!important;
    right:12px!important;
    top:auto!important;
    bottom:max(12px,env(safe-area-inset-bottom))!important;
    width:auto!important;
    min-width:0!important;
    max-height:min(70dvh,520px);
    overflow:auto;
    z-index:120!important;
    border-radius:18px;
    padding:10px;
    box-shadow:0 24px 70px rgba(0,0,0,.38);
  }
  .action-menu-popover a,
  .action-menu-popover button{
    min-height:46px;
    font-size:15px;
    padding:12px 14px;
  }

  /* Stacked card tables for key management lists. */
  .table-wrap.mobile-card-table{overflow:visible;border:0;background:transparent;box-shadow:none}
  .mobile-card-table .table{min-width:0;border-collapse:separate;border-spacing:0 10px}
  .mobile-card-table .table thead{display:none}
  .mobile-card-table .table tbody{display:block}
  .mobile-card-table .table tbody tr{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:10px 14px;
    background:var(--surface);
    border:1px solid var(--line);
    border-radius:14px;
    padding:14px;
    box-shadow:0 6px 22px rgba(0,0,0,.06);
    margin-bottom:10px;
  }
  .mobile-card-table .table tbody td{
    display:block;
    padding:0;
    border:0;
    min-width:0;
  }
  .mobile-card-table .table tbody td[data-label]::before{
    content:attr(data-label);
    display:block;
    margin-bottom:3px;
    color:var(--muted);
    font-size:10px;
    line-height:1.2;
    font-weight:800;
    letter-spacing:.07em;
    text-transform:uppercase;
  }
  .mobile-card-table .table tbody td.mobile-primary{grid-column:1/2}
  .mobile-card-table .table tbody td.mobile-actions{grid-column:2/3;grid-row:1/2;align-self:start;justify-self:end}
  .mobile-card-table .table tbody td.mobile-actions::before{display:none}
  .mobile-card-table .table tbody td.mobile-wide{grid-column:1/-1}
  .mobile-card-table .table tbody td.mobile-half{grid-column:auto}
  .mobile-card-table .table tbody td .muted{font-size:12px;overflow-wrap:anywhere}
  .mobile-card-table .action-menu>summary{width:42px;height:42px}
}
