
:root{
  --bg:#eef4fb;
  --bg-2:#f7fbff;
  --surface:#ffffff;
  --surface-soft:#f8fbff;
  --ink:#10233f;
  --muted:#5f7290;
  --brand:#0b5cab;
  --brand-dark:#0a3d73;
  --brand2:#2d8cff;
  --brand3:#51b0ff;
  --soft:#eaf3ff;
  --line:#c9d9ee;
  --ok:#0d8b6f;
  --warn:#b86a08;
  --danger:#c94141;
  --shadow:0 18px 48px rgba(11,32,68,.10);
}
*{box-sizing:border-box}
html,body{min-height:100%}
body{
  margin:0;
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  color:var(--ink);
  background:
    radial-gradient(circle at 14% 8%, rgba(45,140,255,.10) 0 11rem, transparent 11rem),
    radial-gradient(circle at 86% 10%, rgba(81,176,255,.12) 0 14rem, transparent 14rem),
    radial-gradient(circle at 78% 92%, rgba(11,92,171,.08) 0 10rem, transparent 10rem),
    linear-gradient(180deg,#f7fbff 0%, #eef4fb 100%);
  position:relative;
  overflow-x:hidden;
}
body::after{
  content:"";
  position:fixed;
  left:0; right:0; bottom:-24px;
  height:230px;
  pointer-events:none;
  opacity:.75;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 240' preserveAspectRatio='none'%3E%3Cpath d='M0 170 C170 135 260 215 420 180 C620 135 740 215 900 180 C1100 136 1240 224 1600 165' fill='none' stroke='%2397c2f5' stroke-width='4'/%3E%3Cpath d='M0 205 C180 166 312 250 500 210 C728 160 820 248 1020 210 C1210 175 1370 245 1600 200' fill='none' stroke='%23c3dcfb' stroke-width='4'/%3E%3Cpath d='M0 230 C160 200 310 260 520 225 C744 186 858 266 1080 228 C1300 192 1402 258 1600 228' fill='none' stroke='%238ab5ef' stroke-width='4'/%3E%3C/svg%3E") center bottom / 100% 100% no-repeat;
}
.shell{min-height:100vh}
.main{width:min(1320px, calc(100% - 32px)); margin:0 auto; padding:24px 0 40px; position:relative; z-index:1}

/* Login */
.login-stage{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:32px 12px;}
.login-card,.card{
  background:rgba(255,255,255,.95);
  border:1px solid rgba(201,217,238,.9);
  border-radius:28px;
  box-shadow:var(--shadow);
}
.login-card{
  width:min(460px,100%);
  margin:0 auto;
  padding:30px 28px 24px;
  position:relative;
  backdrop-filter:blur(10px);
}
.login-badge{
  width:62px;height:62px;border-radius:20px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--brand),var(--brand2));
  color:#fff;font-size:28px;font-weight:900;
  box-shadow:0 18px 38px rgba(11,92,171,.24);
  margin:0 auto 18px;
}
.login-card h2{margin:0 0 6px;text-align:center;font-size:32px;letter-spacing:-.5px}
.login-card .subtitle{margin:0 0 22px;text-align:center;color:var(--muted);font-size:14px;line-height:1.6}
.login-card .small{margin-top:16px;text-align:center}
.login-card input{height:48px;border-radius:14px;background:#fbfdff}
.login-card .primary{width:100%;margin-top:8px;height:48px}
.login-card label{margin-top:12px}

/* App shell */
.app-header{
  position:sticky; top:10px; z-index:10;
  display:flex; align-items:center; gap:18px;
  background:linear-gradient(135deg,var(--brand-dark), var(--brand));
  color:#fff; border:1px solid rgba(255,255,255,.10);
  border-radius:24px; box-shadow:0 20px 44px rgba(10,61,115,.22);
  padding:16px 18px; margin-bottom:22px;
}
.brand{display:flex;align-items:center;gap:12px;min-width:210px}
.mark{width:48px;height:48px;border-radius:16px;background:rgba(255,255,255,.95);color:var(--brand-dark);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:26px;box-shadow:0 10px 24px rgba(4,18,42,.18)}
.brand h1{margin:0;font-size:20px;line-height:1.05;color:#fff}
.brand span{display:block;color:rgba(233,243,255,.92);font-size:12px;margin-top:4px}
.topnav{display:flex;align-items:center;gap:8px;flex:1 1 auto;flex-wrap:wrap}
.topnav button{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.10);color:#fff;border-radius:14px;padding:10px 14px;font-weight:800;cursor:pointer;backdrop-filter:blur(6px);white-space:nowrap}
.topnav button:hover{background:rgba(255,255,255,.18)}
.app-user{display:flex;align-items:center;gap:10px;justify-content:flex-end;flex:0 0 auto;min-width:160px;color:#fff;font-size:12px}
#who{max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ghost,.searchbar button,.pager button{border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-weight:800;cursor:pointer}
.ghost{background:#fff;color:var(--brand-dark)}
.app-user .ghost{border:0;padding:10px 14px;border-radius:14px}
.primary{
  background:linear-gradient(135deg,var(--brand),var(--brand2));
  color:#fff;border:0;border-radius:14px;padding:12px 16px;font-weight:900;cursor:pointer;
  box-shadow:0 10px 24px rgba(11,92,171,.22)
}
.primary:hover,.ghost:hover,.mini:hover,.topnav button:hover{filter:brightness(1.04)}
.card{padding:24px}
.page{display:none}
h2{margin:0 0 18px;font-size:28px;letter-spacing:-.35px}
h3{margin:0 0 12px;font-size:18px}.muted{color:var(--muted)}.small{font-size:12px}.faded{opacity:.62}
label{display:block;margin:11px 0 6px;font-weight:800;color:#314766;font-size:13px}
input,select,textarea{display:block;width:100%;border:1px solid var(--line);background:#fbfdff;color:var(--ink);border-radius:14px;padding:11px 13px;outline:none;font:inherit}
textarea{min-height:82px;resize:vertical}
input:focus,select:focus,textarea:focus{border-color:#8dbaff;box-shadow:0 0 0 4px rgba(45,140,255,.12)}
button{font:inherit}.check{display:flex;gap:8px;align-items:center}.check input{width:auto;margin:0}
.mini{border:0;border-radius:11px;background:var(--soft);color:var(--brand-dark);padding:8px 11px;font-weight:900;cursor:pointer}.danger{background:#fff0f0;color:var(--danger)}.warn{background:#fff3e7;color:var(--warn)}
.button-link{display:inline-flex;align-items:center;border-radius:11px;background:var(--soft);color:var(--brand-dark);padding:8px 11px;font-weight:900;text-decoration:none}
.form-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:12px}.wide{grid-column:1/-1}
.add-toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:0 0 14px;padding:14px 16px;border:1px dashed #b7d0ee;border-radius:20px;background:linear-gradient(135deg,#fbfdff,#f2f8ff)}
.panelbox,.add-panel,.list-panel,.taxbox,.client-picker,.quick-add{background:var(--surface-soft);border:1px solid var(--line);border-radius:20px;padding:18px}
.add-panel{margin-bottom:16px;animation:fadeIn .18s ease}.add-panel-title{display:flex;justify-content:space-between;align-items:center;gap:12px}
.formgrid,.add-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.grid2.compact{grid-template-columns:minmax(0,1.1fr) minmax(310px,.9fr)}
.list-panel{margin-top:14px}.list-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.searchbar{display:flex;align-items:center;gap:8px;min-width:360px}.searchbar input{margin:0}.searchbar button{background:var(--brand);border-color:var(--brand);color:#fff}
.item-block{border:1px solid var(--line);border-radius:18px;background:#fff;margin:8px 0;overflow:hidden;box-shadow:0 8px 18px rgba(19,32,51,.035)}.item-block.open{border-color:#a9c8ef;box-shadow:0 14px 30px rgba(11,92,171,.10)}
.row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px}.compact-row{min-height:56px;cursor:pointer}.compact-row:hover{background:#f5f9ff}
.row-main{display:grid;grid-template-columns:minmax(170px,1.3fr) minmax(150px,1fr) minmax(120px,.9fr) minmax(90px,.6fr) minmax(95px,.7fr);gap:10px;align-items:center;width:100%;min-width:0}
.client-item .row-main{grid-template-columns:minmax(180px,1.3fr) minmax(180px,1.1fr) minmax(130px,.8fr)}
.product-item .row-main{grid-template-columns:minmax(180px,1.2fr) minmax(90px,.55fr) minmax(120px,.8fr) minmax(95px,.6fr) auto}
.row-main b,.row-main span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-main span{color:var(--muted)}.row-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex:0 0 auto}.row-detail{border-top:1px solid var(--line);background:linear-gradient(135deg,#fbfdff,#f4f8ff);padding:15px}
.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.detail-grid p{margin:5px 0 0;color:var(--ink);white-space:pre-wrap}.label-lite{display:block;font-size:11px;color:var(--muted);font-weight:900;text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}.inline-edit{margin-top:14px;border:1px solid #bad0ef;background:#fff;border-radius:16px;padding:15px}.inline-edit h4{margin:0 0 10px}
.pager{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px;margin-top:14px}.pager div{display:flex;gap:8px;align-items:center}.pager button{background:#fff;color:var(--brand-dark)}.pager button:disabled{opacity:.45;cursor:not-allowed}
.pill{display:inline-flex;align-items:center;justify-content:center;background:var(--soft);color:var(--brand-dark);border-radius:999px;padding:3px 9px;font-size:11px;font-weight:900}.pill.paid{background:#e8f8ef;color:var(--ok)}.pill.unpaid{background:#fff3e7;color:var(--warn)}.pill.cancelled{background:#f3f4f6;color:#6b7280}.pill.returned{background:#eef2ff;color:#3949ab}.muted-pill{background:#f1f3f5;color:var(--muted)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:14px}.stat{background:linear-gradient(135deg,#edf5ff,#fbfdff);border:1px solid #c8daf0;border-radius:20px;padding:20px}.stat span{display:block;color:var(--muted);font-size:13px}.stat b{font-size:28px}
.taxgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.calc-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,.85fr);gap:10px;align-items:center;margin:0 0 10px}.calc-row.wide{grid-column:1/-1}.calc-row .taxgrid{margin:0}.option-check{height:100%;min-height:45px;border:1px solid var(--line);border-radius:12px;background:#f8fbff;padding:0 12px;font-weight:700}.option-check input{flex:0 0 auto}
.selected-box{background:#fff;border:1px dashed var(--line);border-radius:12px;padding:10px;margin-top:8px}.inline-create{background:#f7fbff;border:1px solid #c0d6f1;border-radius:14px;padding:14px;margin-top:12px}
.quick-add{margin:12px 0 16px}.quick-add-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center}.quick-add-row select,.quick-add-row button{margin:0}
.line-head,.line,.recurring-line{display:grid;grid-template-columns:1.1fr 2fr .55fr .75fr 38px;gap:8px;align-items:center}.line-head{color:var(--muted);font-size:12px;font-weight:900;margin:12px 0 6px}.line,.recurring-line{border:1px solid var(--line);border-radius:14px;padding:10px;margin:9px 0;background:#fff}.line input,.line select,.recurring-line input,.recurring-line select{margin:0}
pre{white-space:pre-wrap;background:#0a2b54;color:#eaf5ff;padding:14px;border-radius:14px}.logo-preview{display:flex;align-items:center;gap:10px;background:#fbfdff;border:1px dashed var(--line);border-radius:14px;padding:12px;margin:8px 0}.logo-preview img{max-width:120px;max-height:70px;object-fit:contain}

.payment-panel{border:1px solid var(--line);border-radius:18px;padding:16px;margin:16px 0;background:#f7fbff}
.payment-panel h3{margin:0 0 12px}
.payment-panel.paid{border-color:#b9d7ff;background:linear-gradient(135deg,#f7fbff,#eef6ff)}
.payment-panel.unpaid{border-color:#ffd7aa;background:#fffaf4}.payment-panel.cancelled{border-color:#d1d5db;background:#f9fafb;color:#374151}
.payment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.payment-grid span{display:block;font-size:11px;color:var(--muted);font-weight:900;text-transform:uppercase;letter-spacing:.4px}
.payment-grid b{display:block;margin-top:4px;overflow-wrap:anywhere}


/* V21 dashboard analytics */
.dashboard-hero{display:flex;align-items:stretch;justify-content:space-between;gap:18px;margin-bottom:18px}
.dashboard-hero h2{margin-bottom:4px}.dashboard-hero p{margin:0}.dashboard-clock{min-width:270px;background:linear-gradient(135deg,var(--brand-dark),var(--brand2));color:#fff;border-radius:22px;padding:18px 20px;box-shadow:0 16px 32px rgba(11,92,171,.18);text-align:right}.dashboard-clock span{display:block;color:rgba(255,255,255,.84);font-size:13px}.dashboard-clock b{display:block;font-size:30px;margin:6px 0;letter-spacing:.5px}.dashboard-clock small{color:rgba(255,255,255,.78)}
.dashboard-stats{grid-template-columns:repeat(4,minmax(150px,1fr));margin-bottom:16px}.stat small{display:block;color:var(--muted);font-size:12px;margin-top:8px}.stat-time{font-size:23px!important;white-space:nowrap}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.dashboard-panel{background:rgba(248,251,255,.96)}.dashboard-wide{margin-top:16px}.panel-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.panel-title-row h3{margin:0}.donut-wrap{display:grid;grid-template-columns:210px 1fr;gap:20px;align-items:center}.donut{--paid:50;width:210px;height:210px;border-radius:50%;background:conic-gradient(var(--brand2) 0 calc(var(--paid)*1%), #ffb454 calc(var(--paid)*1%) 100%);display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 1px rgba(10,61,115,.06)}.donut::after{content:"";position:absolute}.donut>div{width:124px;height:124px;background:#fff;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:inset 0 0 0 1px var(--line)}.donut b{font-size:32px}.donut span{color:var(--muted);font-size:13px}.chart-legend{display:grid;gap:12px}.chart-legend div{display:grid;grid-template-columns:auto 1fr;gap:4px 8px;align-items:center}.chart-legend em{grid-column:2;font-style:normal;color:var(--muted);font-size:13px}.legend-dot{width:12px;height:12px;border-radius:50%;display:inline-block}.paid-dot{background:var(--brand2)}.unpaid-dot{background:#ffb454}
.cancelled-dot{background:#9ca3af}.returned-dot{background:#8b5cf6}.invoice-status-legend{gap:10px}.dashboard-mini-metric{grid-template-columns:1fr!important;border-top:1px solid var(--line);padding-top:10px;margin-top:2px}.dashboard-mini-metric span{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.dashboard-mini-metric b{font-size:18px}.dashboard-mini-metric em{grid-column:1!important;font-size:12px;color:var(--muted)}
.bar-chart{display:grid;gap:16px}.bar-row{display:grid;gap:8px}.bar-label{display:flex;justify-content:space-between;gap:12px}.bar-label span{color:var(--muted);font-size:13px}.bar-track{height:16px;background:#e9f2ff;border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,var(--brand),var(--brand3));border-radius:999px;min-width:4px}.monthly-chart{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;align-items:end;min-height:230px}.month-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:7px;min-width:0}.month-value{font-size:12px;color:var(--muted);white-space:nowrap}.month-bar{width:100%;max-width:58px;border-radius:14px 14px 6px 6px;background:linear-gradient(180deg,var(--brand3),var(--brand));box-shadow:0 10px 20px rgba(11,92,171,.18);transition:.2s}.month-col b{font-size:12px;text-align:center;white-space:nowrap}.month-col span{font-size:11px;color:var(--muted);text-align:center}
@media(max-width:980px){.dashboard-hero,.dashboard-grid{grid-template-columns:1fr;display:grid}.dashboard-clock{text-align:left}.dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.donut-wrap{grid-template-columns:1fr}.donut{margin:auto}.monthly-chart{grid-template-columns:repeat(3,1fr);row-gap:20px}}
@media(max-width:560px){.dashboard-stats,.monthly-chart{grid-template-columns:1fr}.dashboard-clock b{font-size:26px}.donut{width:180px;height:180px}.donut>div{width:106px;height:106px}.donut b{font-size:27px}}

/* Public invoice */
table{width:100%;border-collapse:collapse;margin:18px 0}td,th{border-bottom:1px solid #d8e4f1;text-align:left;padding:10px}.invoice-paper{background:#fff;max-width:900px;margin:30px auto;padding:36px;box-shadow:0 8px 30px rgba(0,0,0,.12);border-radius:20px}.invoice-top-status{text-align:right;margin-bottom:10px}.invoice-status{display:inline-block;border-radius:999px;padding:8px 16px;font-weight:900;letter-spacing:.8px}.invoice-status.unpaid{background:#fff3e7;color:var(--warn);border:1px solid #ffd7aa}.invoice-status.paid{background:#e8f8ef;color:var(--ok);border:1px solid #abefc6}.invoice-status.cancelled{background:#f3f4f6;color:#6b7280;border:1px solid #d1d5db}.invoice-status.returned{background:#eef2ff;color:#3949ab;border:1px solid #c7d2fe}.invoice-header{display:flex;justify-content:space-between;gap:22px;align-items:flex-start}.company-block{text-align:right}.logo{max-width:170px;max-height:95px;object-fit:contain}.invoice-title-row{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.amount-due{background:#f6f9ff;border:1px solid var(--line);border-radius:16px;padding:14px 18px;text-align:right;min-width:190px}.amount-due span{color:var(--muted);display:block;font-size:13px}.amount-due b{font-size:26px}.billbox{background:#fbfdff;border:1px solid var(--line);border-radius:16px;padding:15px;margin:18px 0}.totals{text-align:right}.notes{background:#fbfdff;border:1px solid var(--line);border-radius:16px;padding:14px;margin:16px 0}.invoice-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:22px}.invoice-actions button{background:var(--brand);color:#fff;border:0;border-radius:12px;padding:11px 15px;font-weight:900}.invoice-actions .pay-btn{background:linear-gradient(135deg,#006aff,#1c9dff)}.invoice-actions .paid-btn{background:#e8f8ef;color:var(--ok);border:1px solid #abefc6;cursor:not-allowed}.invoice-actions .cancelled-btn{background:#f3f4f6;color:#6b7280;border:1px solid #d1d5db;cursor:not-allowed}
.invoice-lines th:nth-child(2),.invoice-lines td:nth-child(2){width:70px;text-align:center}.invoice-lines th:nth-child(3),.invoice-lines td:nth-child(3),.invoice-lines th:nth-child(4),.invoice-lines td:nth-child(4){width:110px;text-align:right}.invoice-footer-note{margin-top:22px;padding:16px 18px;border-top:2px solid var(--line);background:linear-gradient(135deg,#f8fbff,#ffffff);border-radius:14px;color:var(--ink);line-height:1.6;white-space:normal}.invoice-footer-note b{display:block;margin-bottom:6px;color:var(--brand-dark)}
@keyframes fadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media(max-width:1180px){
  .app-header{align-items:flex-start;flex-wrap:wrap}
  .brand{flex:0 0 auto;min-width:180px}
  .app-user{min-width:auto;margin-left:auto}
  .topnav{order:3;width:100%;justify-content:center;flex-wrap:wrap;gap:7px}
  .row-main{grid-template-columns:minmax(130px,1.2fr) minmax(120px,1fr) minmax(100px,.8fr) minmax(85px,.6fr) minmax(85px,.6fr)}
}
@media(max-width:760px){
  body::after{height:160px}
  .main{width:calc(100% - 18px);padding-top:10px}
  .app-header{top:0;border-radius:0 0 18px 18px;margin-left:-9px;width:calc(100% + 18px);gap:10px;padding:14px}
  .brand{min-width:0;flex:1 1 auto}.brand span{font-size:10px}.app-user{width:auto;margin-left:auto;justify-content:flex-end}
  .topnav{justify-content:flex-start}.topnav button{font-size:12px;padding:8px 10px}
  .card,.login-card{padding:18px;border-radius:20px}.grid2,.grid2.compact,.stats,.formgrid,.add-form-grid,.detail-grid{grid-template-columns:1fr}
  .list-head{display:block}.searchbar{min-width:0;margin-top:10px}
  .row{align-items:flex-start}.row-main,.client-item .row-main,.product-item .row-main{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
  .row-actions{align-self:flex-start}.quick-add-row,.line,.recurring-line{grid-template-columns:1fr}.line-head{display:none}.taxgrid{grid-template-columns:1fr}
  .invoice-header,.invoice-title-row{display:block}.payment-grid{grid-template-columns:1fr}.company-block,.amount-due{text-align:left}.amount-due{margin-top:12px}.add-toolbar{align-items:flex-start;flex-direction:column}
  .login-card h2{font-size:28px}
}
@page{size:Letter;margin:.38in}
@media print{
  html,body{width:8.5in;min-height:11in;background:#fff!important;color:#111!important;font-size:10.5pt;line-height:1.25;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body::after{display:none!important}
  .invoice-paper{box-shadow:none!important;margin:0!important;border:0!important;border-radius:0!important;max-width:none!important;width:100%!important;padding:0!important}
  .invoice-actions,.no-print{display:none!important}
  .invoice-top-status{margin:0 0 4px;text-align:right}
  .invoice-status{padding:4px 9px;font-size:9pt;letter-spacing:.4px}
  .invoice-header{display:grid;grid-template-columns:1fr 2fr;gap:14px;align-items:start;margin-bottom:6px}
  .company-block{text-align:right;font-size:9.5pt;line-height:1.28}
  .company-block h1{font-size:19pt;margin:0 0 4px;line-height:1.05}
  .company-block p{margin:0}
  .logo{max-width:118px;max-height:58px}
  .invoice-paper hr{margin:8px 0 10px;border:0;border-top:1px solid #c9d9ee}
  .invoice-title-row{display:grid!important;grid-template-columns:1.4fr .8fr;gap:12px;align-items:start;margin-bottom:8px}
  .invoice-title-row h2{font-size:18pt;margin:0 0 2px;line-height:1.1}
  .invoice-title-row p{margin:0}
  .amount-due{min-width:0;padding:8px 10px;border-radius:10px;text-align:right}
  .amount-due span{font-size:8.5pt}.amount-due b{font-size:17pt}
  .billbox{padding:8px 10px;margin:8px 0 10px;border-radius:10px;font-size:9.5pt;line-height:1.25}
  .invoice-paper table{margin:8px 0 8px;font-size:9.4pt;page-break-inside:auto}
  .invoice-paper th,.invoice-paper td{padding:5px 7px;border-bottom:1px solid #d8e4f1;vertical-align:top}
  .invoice-paper th{background:#f3f7fc;font-size:8.8pt;text-transform:uppercase;letter-spacing:.2px}
  .invoice-lines th:nth-child(2),.invoice-lines td:nth-child(2){width:.55in;text-align:center}
  .invoice-lines th:nth-child(3),.invoice-lines td:nth-child(3),.invoice-lines th:nth-child(4),.invoice-lines td:nth-child(4){width:.95in;text-align:right}
  .totals{margin-top:4px;text-align:right;font-size:10pt;page-break-inside:avoid}
  .totals p{margin:2px 0}.totals h2{font-size:16pt;margin:5px 0 0}
  .notes{padding:8px 10px;margin:8px 0;border-radius:10px;font-size:9.2pt;line-height:1.25;page-break-inside:avoid}
  .invoice-footer-note{margin-top:8px;padding:8px 10px;border-top:1px solid #c9d9ee;border-radius:10px;font-size:8.8pt;line-height:1.22;page-break-inside:avoid}
  .payment-panel{padding:8px 10px;margin:8px 0;border-radius:10px;font-size:8.8pt;page-break-inside:avoid}
  .payment-panel.unpaid{display:none!important}
  .payment-panel.cancelled{display:block!important}
  .payment-panel h3{margin:0 0 5px;font-size:11pt}.payment-grid{grid-template-columns:repeat(3,1fr);gap:5px}
  a{color:#111;text-decoration:none}
}


.template-box{min-height:170px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5}.small-template{min-height:90px}.recurring-item .row-main{grid-template-columns:minmax(180px,1.2fr) 90px minmax(150px,1fr) 110px minmax(140px,.9fr)}

/* V16 recurring invoice report and edit refinements */
.recurring-report-box{margin-top:16px;background:#fff;border-style:solid}
.recurring-report-box h4{margin:0 0 10px;font-size:15px}
.recurring-history{display:grid;gap:8px}
.history-row{display:grid;grid-template-columns:minmax(150px,1.3fr) 90px 90px minmax(120px,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:14px;background:var(--surface-soft);padding:10px 12px}
.history-row small{display:block;color:var(--muted);font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.recurring-item .inline-edit{background:#fbfdff}
@media(max-width:760px){.history-row{grid-template-columns:1fr;align-items:flex-start}.history-row .button-link{width:max-content}}
.full-ghost{width:100%;margin-top:10px;justify-content:center}.user-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}.user-password-box{margin-top:14px;border-top:1px solid var(--line);padding-top:14px}.login-card .inline-create{text-align:left;margin-top:14px}.login-card .inline-create h4{margin:0 0 8px}.login-card .inline-create input{margin:8px 0}
@media(max-width:760px){.user-edit-grid{grid-template-columns:1fr}}

.danger-primary{background:linear-gradient(135deg,#b42318,#e5484d)!important;box-shadow:0 10px 24px rgba(180,35,24,.18)!important}


/* V29 report export filters */
.report-export-box{margin:0 0 16px;background:linear-gradient(135deg,#f8fbff,#ffffff)}
.report-filter-grid{display:grid;grid-template-columns:180px 180px 180px 1fr;gap:12px 14px;align-items:end}
.report-filter-grid label{margin:0}
.export-help{align-self:center;line-height:1.45}
@media(max-width:900px){.report-filter-grid{grid-template-columns:1fr}.report-export-box .panel-title-row{display:block}.report-export-box .primary{margin-top:10px;width:100%}}

/* V30 unpaid invoice edit */
.invoice-edit{margin-top:14px}
.invoice-edit .line-head,.invoice-edit .ieditline{grid-template-columns:minmax(180px,1.1fr) minmax(220px,2fr) 90px 120px 42px}
.invoice-edit .ieditline{display:grid;gap:8px;align-items:center;margin-bottom:8px}
@media(max-width:860px){.invoice-edit .line-head{display:none}.invoice-edit .ieditline{grid-template-columns:1fr}.invoice-edit .ieditline button{width:100%}.calc-row{grid-template-columns:1fr}.option-check{min-height:42px}}
