:root{--red-50:#fdf0ef;--red-100:#f9dcda;--red-200:#f2b8b5;--red-300:#e68984;--red-400:#d6524e;--red-500:#c31e1c;--red-600:#a3181a;--red-700:#8a1416;--red-800:#6e1012;--red-900:#4f0b0d;--red-on-dark:#ff8a82;--n-0:#fff;--n-25:#fafafb;--n-50:#f6f6f7;--n-100:#eff0f2;--n-200:#e4e5e8;--n-300:#cdcfd4;--n-400:#a3a7b0;--n-500:#7a7f8a;--n-600:#5a5f6a;--n-700:#4a4f5a;--n-800:#333740;--n-850:#2a2d35;--n-900:#1f2228;--charcoal:#333740;--deep:#1f2228;--bg:#f6f6f7;--surface:#fff;--surface-sunken:#eff0f2;--surface-inverse:#1f2228;--border:#e4e5e8;--border-soft:#ecedf0;--border-strong:#cdcfd4;--text:#2b2e35;--text-heading:#333740;--text-muted:#5a5f6a;--text-subtle:#7a7f8a;--text-inverse:#fff;--primary:#c31e1c;--primary-hover:#a3181a;--primary-pressed:#8a1416;--primary-soft:#fdf0ef;--on-primary:#fff;--secondary:#333740;--secondary-hover:#1f2228;--on-secondary:#fff;--focus-ring:#c31e1c47;--success:#067647;--success-soft:#ecfdf3;--warning:#b54708;--warning-soft:#fffaeb;--danger:#b42318;--danger-soft:#fef3f2;--info:#175cd3;--info-soft:#eff8ff;--overdue:#dc6803;--st-request:#7a5af8;--st-request-bg:#f4f3ff;--st-request-fg:#5925dc;--st-to-book:#f79009;--st-to-book-bg:#fffaeb;--st-to-book-fg:#b54708;--st-booked:#2e90fa;--st-booked-bg:#eff8ff;--st-booked-fg:#175cd3;--st-in-progress:#0e9384;--st-in-progress-bg:#f0fdf9;--st-in-progress-fg:#107569;--st-completed:#17b26a;--st-completed-bg:#ecfdf3;--st-completed-fg:#067647;--st-certificate-sent:#085d3a;--st-certificate-sent-bg:#085d3a;--st-certificate-sent-fg:#fff;--st-invoiced:#333740;--st-invoiced-bg:#333740;--st-invoiced-fg:#fff;--st-cancelled:#a3a7b0;--st-cancelled-bg:#eff0f2;--st-cancelled-fg:#5a5f6a;--st-request-text:#5925dc;--st-to-book-text:#b54708;--st-booked-text:#175cd3;--st-in-progress-text:#107569;--st-completed-text:#067647;--st-certificate-sent-text:#085d3a;--st-invoiced-text:#4a4f5a;--st-cancelled-text:#7a7f8a;--inv-draft:#b54708;--inv-downloaded:#175cd3;--inv-paid:#067647;--route-stop:#333740;--route-stop-start-bg:#eff0f2;--route-map-frame-border:#e4e5e8;--sv-fire-alarm:#e2560c;--sv-fire-alarm-bg:#fff2ea;--sv-fire-alarm-fg:#a63a05;--sv-emergency-lighting:#ca8a04;--sv-emergency-lighting-bg:#fef9e7;--sv-emergency-lighting-fg:#854d0e;--sv-fra:#7c3aed;--sv-fra-bg:#f5f0ff;--sv-fra-fg:#5b21b6;--sv-fire-inspection:#2563eb;--sv-fire-inspection-bg:#eef4ff;--sv-fire-inspection-fg:#1e40af;--sv-epc:#16a34a;--sv-epc-bg:#edfcf2;--sv-epc-fg:#166534;--sv-floor-plan:#0891b2;--sv-floor-plan-bg:#ecfbff;--sv-floor-plan-fg:#155e75;--sv-pat:#db2777;--sv-pat-bg:#fdf0f7;--sv-pat-fg:#9d174d;--font-heading:"Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-display:800 28px/34px var(--font-heading);--text-display-size:28px;--text-display-tracking:-.02em;--text-screen:800 24px/30px var(--font-heading);--text-screen-size:24px;--text-screen-tracking:-.02em;--text-h1:700 22px/28px var(--font-heading);--text-h1-size:22px;--text-h1-tracking:-.01em;--text-h2:700 18px/24px var(--font-heading);--text-h2-size:18px;--text-h2-tracking:-.005em;--text-h3:700 16px/22px var(--font-heading);--text-h3-size:16px;--text-h3-tracking:0;--text-address:600 18px/24px var(--font-body);--text-address-size:18px;--text-address-tracking:-.005em;--text-title:600 16px/22px var(--font-body);--text-title-size:16px;--text-title-tracking:0;--text-body:400 16px/24px var(--font-body);--text-body-size:16px;--text-body-tracking:0;--text-body-sm:400 14px/20px var(--font-body);--text-body-sm-size:14px;--text-body-sm-tracking:0;--text-label:600 14px/20px var(--font-body);--text-label-size:14px;--text-label-tracking:0;--text-caption:500 12px/16px var(--font-body);--text-caption-size:12px;--text-caption-tracking:.01em;--text-overline:700 11px/14px var(--font-heading);--text-overline-size:11px;--text-overline-tracking:.12em;--sp-0:0;--sp-0-5:2px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--r-xs:4px;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px;--r-2xl:28px;--r-pill:999px;--sh-xs:0 1px 2px #1f22280f;--sh-sm:0 1px 2px #1f22280f, 0 1px 3px #1f222814;--sh-md:0 4px 12px #1f222814, 0 1px 3px #1f22280f;--sh-lg:0 10px 30px #1f22281a;--sh-xl:0 24px 60px #1f22282e;--sh-primary:0 6px 16px #c31e1c4d;--sh-nav:0 -1px 0 #e4e5e8, 0 -6px 20px #1f22280f;--size-tap-min:48px;--size-screen-pad:20px;--size-map-mobile:250px;--size-list-pane:400px;--size-appbar:56px;--size-appbar-desktop:64px;--size-bottom-nav:68px;--size-sidebar:248px;--size-btn-sm:36px;--size-btn-md:48px;--size-btn-lg:56px;--size-input:52px;--size-fab:56px;--size-avatar-sm:28px;--size-avatar-md:40px;--size-avatar-lg:56px;--size-icon-sm:16px;--size-icon-md:20px;--size-icon-lg:24px;--size-content-max:1200px;--motion-fast:.12s;--motion-base:.2s;--motion-slow:.32s;--motion-ease:cubic-bezier(.2,.8,.2,1);--z-base:0;--z-sticky:10;--z-appbar:20;--z-nav:30;--z-fab:40;--z-overlay:50;--z-sheet:60;--z-toast:70;--safe-bottom:env(safe-area-inset-bottom,0px);--warning-border:#f5c27a;--warning-title:#7a3e06;--warning-body:#5c3a10;--success-border:#abefc6;--info-border:#b2ddff;--border-hover:#c9ccd3;--badge-neutral-bg:#eef0f3;--track:#ecedef;--sidebar-text:#d5d7dc;--sidebar-active:#ffffff14;--scrim:#1f222880;--actionbar-h:76px;--doc-side-bg:#10272f;--doc-side-text:#fff;--doc-side-label:var(--n-400);--doc-rule:var(--red-500);--doc-ink:var(--n-800);--doc-muted:var(--n-500);--doc-line:var(--n-200);--doc-total-bg:var(--doc-side-bg);--red:var(--primary);--red-hover:var(--primary-hover);--red-soft:var(--primary-soft);--muted:var(--text-muted);--line:var(--border);--card:var(--surface);--green:var(--success);--green-soft:var(--success-soft);--amber:var(--warning);--amber-soft:var(--warning-soft);--shadow:var(--sh-sm);--radius:var(--r-lg);--nav:var(--size-bottom-nav);--sidebar:var(--size-sidebar);--font:var(--font-body);--display:var(--font-heading);--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font:var(--text-body);-webkit-font-smoothing:antialiased;margin:0}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--primary);text-decoration:none}h1,h2,h3{font-family:var(--font-heading);letter-spacing:-.02em;margin:0}img{max-width:100%}.app{min-height:100dvh}.sidebar{display:none}.topbar{background:var(--surface);color:var(--text);z-index:20;border-bottom:1px solid var(--border-soft);align-items:center;gap:12px;padding:14px 16px;display:flex;position:sticky;top:0}.topbar .brand{font-family:var(--display);color:var(--charcoal);font-weight:700}.topbar .sub{color:var(--text-muted);font-size:12px}.main{padding:16px 16px calc(var(--nav) + 28px);max-width:1180px;margin:0 auto}.bottomnav{height:var(--nav);background:var(--deep);z-index:30;padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.bottomnav button,.bottomnav a{color:#c9ccd3;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;text-decoration:none;display:flex}.bottomnav .on{color:#fff;box-shadow:inset 0 3px 0 var(--red-on-dark)}.fab{right:16px;bottom:calc(var(--nav) + 16px + var(--safe-bottom));z-index:var(--z-fab);width:var(--size-fab);height:var(--size-fab);background:var(--primary);color:var(--on-primary);box-shadow:var(--sh-primary);border:0;border-radius:50%;font-size:30px;position:fixed}.fab:hover{background:var(--red-hover)}.page-head{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:14px;display:flex}.page-head p{color:var(--muted);margin:4px 0 0}.grid{gap:12px;display:grid}.dash-sections{flex-direction:column;gap:16px;display:flex}.card{background:var(--card);border:1px solid var(--border-soft);box-shadow:none;border-radius:16px;padding:14px 16px}.card h3{font-size:15px}.stat .n{font-family:var(--display);font-size:30px;font-weight:700}.stat .l{color:var(--muted);font-size:13px}.stat{text-align:left;border:1px solid var(--line);justify-content:space-between;align-items:flex-start;width:100%;display:flex}.stat.warn .n{color:var(--red)}.links{grid-template-columns:1fr}.linkcard{text-align:left;background:var(--card);border:1px solid var(--border-soft);border-radius:16px;align-items:center;gap:12px;width:100%;padding:14px;display:flex}.linkcard .ic{background:var(--n-100);width:40px;height:40px;color:var(--charcoal);border-radius:12px;flex:none;place-items:center;display:grid}.linkcard b{display:block}.linkcard span{color:var(--muted);font-size:13px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn{border:1.5px solid var(--border-strong);background:var(--surface);border-radius:var(--r-pill);min-height:var(--size-btn-sm);color:var(--text-heading);transition:background var(--motion-fast);justify-content:center;align-items:center;gap:6px;padding:8px 16px;font-weight:600;display:inline-flex}.btn:hover{border-color:var(--border-hover)}.btn.primary{background:var(--primary);color:var(--on-primary);border-color:var(--primary);box-shadow:var(--sh-primary);min-height:48px}.btn.secondary{background:var(--secondary);color:var(--on-secondary);border-color:var(--secondary)}.btn.primary:hover{background:var(--red-hover)}.btn.ghost{background:0 0}.btn.danger{color:var(--danger);border-color:var(--danger)}.btn:disabled{opacity:.55;cursor:default}.badge{background:var(--badge-neutral-bg);color:var(--charcoal);white-space:nowrap;border-radius:999px;align-items:center;padding:2px 8px;font-size:12px;font-weight:600;display:inline-flex}.badge.request{background:var(--st-request-bg);color:var(--st-request-fg)}.badge.to_book{background:var(--st-to-book-bg);color:var(--st-to-book-fg)}.badge.booked{background:var(--st-booked-bg);color:var(--st-booked-fg)}.badge.in_progress{background:var(--st-in-progress-bg);color:var(--st-in-progress-fg)}.badge.completed{background:var(--st-completed-bg);color:var(--st-completed-fg)}.badge.certificate_sent{background:var(--st-certificate-sent-bg);color:var(--st-certificate-sent-fg)}.badge.invoiced{background:var(--st-invoiced-bg);color:var(--st-invoiced-fg)}.badge.on_hold{background:var(--warning-soft);color:var(--warning)}.badge.cancelled{background:var(--st-cancelled-bg);color:var(--st-cancelled-fg)}.badge.draft{background:var(--warning-soft);color:var(--warning)}.badge.unpaid{background:var(--danger-soft);color:var(--danger)}.badge.paid{background:var(--success-soft);color:var(--success)}.tag{border-radius:var(--r-pill);background:var(--n-100);padding:1px 8px;font-size:12px;font-weight:600;display:inline-flex}.tag.alarm{background:var(--sv-fire-alarm-bg);color:var(--sv-fire-alarm-fg)}.tag.fra{background:var(--sv-fra-bg);color:var(--sv-fra-fg)}.tag.lighting{background:var(--sv-emergency-lighting-bg);color:var(--sv-emergency-lighting-fg)}.tag.inspection{background:var(--sv-fire-inspection-bg);color:var(--sv-fire-inspection-fg)}.tag.epc{background:var(--sv-epc-bg);color:var(--sv-epc-fg)}.tag.floorplan{background:var(--sv-floor-plan-bg);color:var(--sv-floor-plan-fg)}.tag.pat{background:var(--sv-pat-bg);color:var(--sv-pat-fg)}.list{flex-direction:column;gap:8px;display:flex}.job{text-align:left;width:100%;color:inherit;cursor:pointer;border:1px solid var(--border-soft);background:#fff;border-radius:16px;padding:14px 16px;display:block}.job:hover{border-color:var(--border)}.job .top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.job .badge{background:0 0;padding:0;font-size:13px;font-weight:600}.job .badge.request{color:var(--st-request-text)}.job .badge.to_book{color:var(--st-to-book-text)}.job .badge.booked{color:var(--st-booked-text)}.job .badge.in_progress{color:var(--st-in-progress-text)}.job .badge.completed{color:var(--st-completed-text)}.job .badge.certificate_sent{color:var(--st-certificate-sent-text)}.job .badge.invoiced{color:var(--st-invoiced-text)}.job .badge.cancelled{color:var(--st-cancelled-text)}.muted{color:var(--muted)}.small{font-size:13px}.filters input{background:var(--n-100);border-radius:var(--r-md);border:0;width:100%;min-height:44px;padding:10px 12px;font-size:16px}.filters select{border:1.5px solid var(--border-strong);border-radius:var(--r-pill);background:var(--surface);padding:8px 12px}.filters{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.filters select,.field input,.field select,.field textarea{border:1.5px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);width:100%;min-height:var(--size-input);padding:12px;font-size:16px}.field input:focus,.field select:focus,.field textarea:focus,.filters input:focus,.filters select:focus{border-color:var(--primary);box-shadow:0 0 0 4px var(--focus-ring);outline:none}.field{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.field label,.label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:700}.field .hint{color:var(--muted);font-size:12px}.split{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tabs{background:var(--track);border-radius:12px;gap:6px;width:max-content;max-width:100%;padding:4px;display:flex}.tabs button{background:0 0;border:0;border-radius:9px;padding:7px 12px;font-weight:600}.tabs button.on{box-shadow:var(--shadow);background:#fff}.board{align-items:flex-start;gap:10px;padding-bottom:8px;display:flex;overflow-x:auto}.col{background:var(--surface-sunken);border-radius:var(--r-lg);flex:1 0 180px;min-width:180px;max-width:280px;padding:8px}.col .job{border-top:3px solid var(--stage-colour,var(--border))}.col .job .btn{width:100%}.col h3{border-bottom:3px solid var(--stage-colour);justify-content:space-between;margin-bottom:8px;padding:4px 6px 8px;font-size:13px;display:flex}.col .job{cursor:grab;margin-bottom:8px}.cal{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal .hd{text-align:center;color:var(--muted);font-size:12px;font-weight:700}.day{border:1px solid var(--border-soft);text-align:left;background:#fff;border-radius:10px;min-height:74px;padding:4px}.day.off{opacity:.45}.day.today b{background:var(--primary);color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;display:inline-grid}.day b{font-size:12px}.chip{background:color-mix(in srgb, var(--st-booked) 9%, white);color:var(--charcoal);border-left:3px solid var(--st-booked);white-space:nowrap;text-overflow:ellipsis;border-radius:4px;margin-top:2px;padding:1px 4px;font-size:11px;display:block;overflow:hidden}.agenda .when{font-family:var(--display);min-width:58px;font-weight:700}.modal-back{background:var(--scrim);z-index:50;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{width:min(640px,100%);max-height:92dvh;padding:16px 16px calc(16px + env(safe-area-inset-bottom));background:#fff;border-radius:28px 28px 0 0;overflow:auto}.modal h2{margin-bottom:12px}.toasts{left:50%;bottom:calc(var(--nav) + 76px);z-index:70;flex-direction:column;gap:8px;width:min(420px,100% - 24px);display:flex;position:fixed;transform:translate(-50%)}.toast{background:var(--deep);color:#fff;box-shadow:var(--sh-lg);border-radius:12px;padding:12px 14px}.toast.bad{background:var(--danger)}.empty{text-align:center;color:var(--muted);padding:28px 10px}.history{border-left:2px solid var(--line);margin-left:8px;padding-left:12px}.history div{margin-bottom:8px}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 6px}th{color:var(--muted);text-transform:uppercase;font-size:12px}.invoice-paper{border:1px solid var(--line);background:#fff;border-radius:12px;padding:24px}.warnbox{background:var(--warning-soft);border-radius:var(--r-md);color:var(--warning);padding:10px 12px}@media (width>=900px){.sidebar{width:var(--sidebar);background:var(--deep);color:#fff;z-index:30;flex-direction:column;padding:18px 12px;display:flex;position:fixed;inset:0 auto 0 0}.sidebar img{background:#fff;border-radius:10px;width:46px;height:46px}.sidebar nav{flex-direction:column;gap:4px;margin-top:22px;display:flex}.sidebar a,.sidebar button{color:var(--sidebar-text);text-align:left;background:0 0;border:0;border-radius:10px;padding:10px 12px;font-weight:600;text-decoration:none}.sidebar a.on,.sidebar button.on{background:var(--sidebar-active);color:#fff}.sidebar .grow{flex:1}.topbar,.bottomnav{display:none}.main{margin-left:var(--sidebar);padding:28px 32px 80px}.fab,.toasts{bottom:24px}.links{grid-template-columns:1fr 1fr 1fr}.modal-back{align-items:center}.modal{border-radius:18px;max-height:88dvh}.twocol{grid-template-columns:1.4fr 1fr;gap:12px;display:grid}}@media print{.sidebar,.topbar,.bottomnav,.fab,.toasts,.noprint{display:none!important}.main{max-width:none;margin:0;padding:0}body{background:#fff}.invoice-paper{border:0}}.login-screen{background:var(--surface);min-height:100dvh;color:var(--text);display:flex}.login-wrap{flex-direction:column;width:min(440px,100%);min-height:100dvh;margin:auto;display:flex}.login-hero{text-align:center;flex-direction:column;flex:1;justify-content:flex-end;align-items:center;padding:48px 24px 28px;display:flex;position:relative}.login-hero>*{position:relative}.login-hero img{background:0 0;width:72px;height:72px}.login-hero .word{font:800 32px/1 var(--font-heading);letter-spacing:-.03em;color:var(--charcoal);margin-top:12px}.login-hero .word span{color:var(--primary)}.login-hero .sub{color:var(--text-muted);margin-top:6px}.login-card{background:var(--surface);color:var(--text);padding:28px 22px calc(28px + var(--safe-bottom));border-radius:0}.login-card h1{margin-bottom:6px;font-size:26px}.login-error{color:var(--danger);background:var(--danger-soft);border-radius:var(--r-md);padding:10px 12px}.stat .ic{background:var(--n-100);width:40px;height:40px;color:var(--charcoal);border-radius:12px;flex:none;place-items:center;display:grid}.sidebar a.on{background:var(--n-800);color:#fff}@media (width>=900px){.login-wrap{min-height:0}.login-hero{padding-top:36px}.login-card{box-shadow:var(--sh-xl);border-radius:28px}}h1{font:var(--text-display);letter-spacing:var(--text-display-tracking)}.stack{flex-direction:column;gap:12px;display:flex}.stack>.field{margin-bottom:0}.row-between{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;display:flex}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.back{margin-bottom:6px;font-size:14px;font-weight:600;display:inline-block}.split3{grid-template-columns:1.3fr 1fr 1fr;gap:10px;display:grid}.split3 .field{margin-bottom:0}.meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:6px;font-size:13px;display:flex}.sub{color:var(--muted);font-size:13px;font-weight:400;display:block}.pre{white-space:pre-wrap}.danger-text{color:var(--danger)}.card-head{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.card-head a{font-size:14px;font-weight:600}fieldset.group{border:0;flex-direction:column;gap:10px;margin:0;padding:0;display:flex}fieldset.group>.field{margin-bottom:0}fieldset.group legend{font:var(--text-h3);color:var(--text-heading);margin-bottom:8px;padding:0}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips button{border:1.5px solid var(--border-strong);background:var(--surface);border-radius:var(--r-pill);color:var(--text-heading);padding:8px 14px;font-size:14px;font-weight:600}.notice{border-radius:var(--r-md);background:var(--n-100);color:var(--text);padding:10px 12px;font-size:14px;display:block}.notice.ok{background:var(--success-soft);color:var(--success)}.notice.info{background:var(--info-soft);color:var(--info)}.notice.warn{background:var(--danger-soft);color:var(--danger)}.notice.link{margin-bottom:12px;font-weight:600}.notice ul{margin:6px 0 8px;padding-left:18px}.notice p{margin:6px 0 0}.notice .btn{margin-top:2px}.calls{flex-wrap:wrap;gap:6px;display:flex}.calls:empty{display:none}.sheet-job{background:var(--n-50);border-radius:var(--r-md);flex-direction:column;padding:10px 12px;display:flex}.sheet-job span{color:var(--muted);font-size:14px}.twocol{gap:12px;display:grid}ol.agenda,ul.mini{margin:0;padding:0;list-style:none}ol.agenda li a{border-top:1px solid var(--line);color:inherit;gap:12px;padding:10px 0;display:flex}ol.agenda li:first-child a{border-top:0}ol.agenda .when{font-variant-numeric:tabular-nums;min-width:96px;font-weight:700}ul.mini li{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:9px 0;display:flex}ul.mini li:first-child{border-top:0}ul.mini li a{color:inherit;min-width:0}.next-job{margin-bottom:12px}.next-job .addr{font:700 22px/28px var(--font-heading);color:var(--charcoal);letter-spacing:-.01em}.next-job .meta{margin:4px 0 10px}.next-job .btn{width:100%}ol.actionlist{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.action{flex-direction:column;gap:10px;display:flex}.action-main{cursor:pointer}.action .top{justify-content:space-between;gap:8px;display:flex}.action .addr{color:var(--muted);font-size:14px}.action-side{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.action-side .btn.primary{min-width:96px}.age{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:700}.age.old{color:var(--warning)}.dayview{gap:14px;display:grid}.daymap{padding:8px}.daymap iframe{background:var(--n-100);border:0;border-radius:12px;width:100%;height:250px}.timeline{flex-direction:column;gap:0;display:flex}.stop{align-items:flex-start;gap:10px;padding:8px 0;display:flex}.stop .pin{background:var(--deep);color:#fff;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:13px;font-weight:700;display:grid}.stop.start .pin{background:var(--n-200);color:var(--charcoal)}.stop.clash{background:var(--warning-soft);border-radius:12px;margin:4px 0;padding:8px}.stop .top{justify-content:space-between;gap:8px;width:100%;display:flex}.stop .top b{font-weight:700}.leg{color:var(--muted);padding:4px 0 4px 38px;font-size:13px}.tdot{background:var(--c,var(--n-400));vertical-align:middle;border-radius:50%;flex:none;width:8px;height:8px;margin-right:6px;display:inline-block}.clash{border:1px solid var(--warning-border);background:var(--warning-soft);border-radius:14px;padding:14px 16px}.clash .ch{font:700 15px/20px var(--font-heading);color:var(--warning-title);align-items:center;gap:8px;display:flex}.clash p{font:500 14px/20px var(--font-body);color:var(--warning-body);margin:6px 0 0}.inv-list{min-width:0}.inv-list .tabs{margin:4px 0 10px}ul.inv-rows{background:var(--card);border:1px solid var(--border-soft);border-radius:var(--radius);margin:0;padding:0;list-style:none;overflow:hidden}.inv-row{color:inherit;border-top:1px solid var(--line);grid-template-columns:1fr auto;gap:2px 10px;padding:12px 14px;display:grid}ul.inv-rows li:first-child .inv-row{border-top:0}.inv-row .num{font-weight:700}.inv-row .amt{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.inv-row .who{color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.inv-row .badge{text-transform:capitalize;justify-self:end}.inv-row .when{color:var(--muted);font-size:13px}.inv-row:hover{background:var(--n-25)}.badge.overdue{background:var(--danger);color:#fff}.inv-view{flex-direction:column;gap:12px;display:flex}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.toolbar .back{margin:0}.stamp{border:2px solid var(--success);color:var(--success);text-transform:uppercase;letter-spacing:.06em;border-radius:6px;margin-top:6px;padding:2px 8px;font-size:12px;font-weight:800;display:inline-block}.line-edit{grid-template-columns:1fr 100px auto;align-items:center;gap:8px;display:grid}.line-edit input{border:1.5px solid var(--border-strong);border-radius:var(--r-md);width:100%;min-height:44px;padding:10px}@media (width<=520px){.split3{grid-template-columns:1fr 1fr}.split3 .field:first-child{grid-column:1/-1}}@media (width>=700px){.action{flex-direction:row;align-items:center}.action-main{flex:1;min-width:0}.action-side{flex:none;justify-content:flex-end}}@media (width>=900px){.twocol{grid-template-columns:1.4fr 1fr;align-items:start}.dayview{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.daymap{order:2;position:sticky;top:20px}.daymap iframe{height:520px}.main.wide{max-width:1400px}}@media (width>=1100px){.split-view{grid-template-columns:380px minmax(0,1fr);align-items:start;gap:20px;display:grid}.split-view .inv-list{max-height:calc(100dvh - 40px);padding-right:2px;position:sticky;top:20px;overflow:auto}.split-view .toolbar .back{visibility:hidden}}@media print{.inv-list,.toolbar,.notice{display:none!important}.split-view{display:block}}.stoptabs{flex-wrap:wrap;align-items:center;gap:6px;margin:2px 2px 8px;display:flex}.stoptabs button{border:1.5px solid var(--border-strong);background:var(--surface);border-radius:50%;width:32px;height:32px;font-weight:700}.stoptabs button.on{background:var(--deep);border-color:var(--deep);color:#fff}.stoptabs span{margin-left:4px}button.pin{cursor:pointer;border:0}body{background:var(--bg)}h1{font:var(--text-screen);letter-spacing:var(--text-screen-tracking);color:var(--charcoal)}h2{font:var(--text-h2);color:var(--charcoal)}h3{font:var(--text-h3);color:var(--charcoal)}.main{padding:8px 20px calc(var(--nav) + 104px)}.page-head{flex-wrap:wrap;align-items:center;margin:4px 0 16px}.page-head>div:first-child{min-width:0}.page-head p{font:500 14px/20px var(--font-body)}.topbar{background:var(--bg);border-bottom:0;gap:8px;height:56px;padding:0 8px 0 20px}.topbar img{background:0 0;border-radius:0;width:auto;height:28px}.topbar .brand{font:800 17px/1 var(--font-heading);letter-spacing:-.01em;color:var(--charcoal);flex:1}.topbar .brand b,.sidebar .word b{color:var(--red-500);font-weight:800}.icon-btn{width:48px;height:48px;color:var(--charcoal);background:0 0;border:0;border-radius:12px;place-items:center;display:grid}.icon-btn:hover{background:var(--n-100)}.btn{border-radius:var(--r-pill);min-height:44px;font:600 15px/1 var(--font-body);border:1.5px solid var(--border-strong);background:var(--surface);color:var(--charcoal);white-space:nowrap;padding:0 18px}.btn.primary{min-height:48px;box-shadow:var(--sh-primary)}.btn.primary.lg,.btn.lg{min-height:56px;font-size:16px}.btn.small{min-height:36px;padding:0 14px;font-size:13.5px}.btn.danger{background:var(--surface)}.btn.dark,.btn.secondary{background:var(--charcoal);border-color:var(--charcoal);color:#fff}.btn.text{color:var(--red-600);min-height:40px;box-shadow:none;background:0 0;border:0;padding:0 4px}.badge{font:600 13px/18px var(--font-body);border-radius:0;padding:0;background:0 0!important}.badge.request{color:var(--st-request-text)}.badge.to_book{color:var(--st-to-book-text)}.badge.booked{color:var(--st-booked-text)}.badge.in_progress{color:var(--st-in-progress-text)}.badge.completed{color:var(--st-completed-text)}.badge.certificate_sent{color:var(--st-certificate-sent-text)}.badge.invoiced{color:var(--st-invoiced-text)}.badge.cancelled{color:var(--st-cancelled-text)}.badge.on_hold{color:var(--warning)}.badge.draft{color:var(--inv-draft)}.badge.unpaid{color:var(--info)}.badge.paid{color:var(--inv-paid)}.badge.overdue{color:var(--overdue)}.tdot{margin-right:6px}.tag{font:500 13.5px/19px var(--font-body);align-items:center;gap:6px;padding:0;display:inline-flex;color:var(--text-muted)!important;background:0 0!important}.tag:before{content:"";background:var(--n-400);border-radius:50%;flex:none;width:8px;height:8px}.tag.alarm:before{background:var(--sv-fire-alarm)}.tag.fra:before{background:var(--sv-fra)}.tag.lighting:before{background:var(--sv-emergency-lighting)}.tag.inspection:before{background:var(--sv-fire-inspection)}.tag.epc:before{background:var(--sv-epc)}.tag.floorplan:before{background:var(--sv-floor-plan)}.tag.pat:before{background:var(--sv-pat)}.sec-h{align-items:baseline;gap:8px;padding:18px 2px 10px;display:flex}.sec-h h2{font:700 16px/22px var(--font-heading)}.sec-h .n{font:600 14px/1 var(--font-body);color:var(--n-500)}.sec-h .link{font:600 14px/1 var(--font-body);color:var(--red-600);margin-left:auto}.sec-h .link:after{content:" ›"}.lrows{background:var(--surface);border:1px solid var(--border-soft);border-radius:16px;overflow:hidden}.lrows.flush{border:0;border-top:1px solid var(--border-soft);border-radius:0}.lrow{border-bottom:1px solid var(--border-soft);min-height:64px;color:inherit;align-items:center;gap:12px;padding:12px 16px;display:flex}.lrow:last-child{border-bottom:0}a.lrow:hover,.lrow>a.grow:hover .t1{color:var(--red-600)}.lrow .grow{min-width:0;color:inherit;flex:1;display:block}.lrow .t1{font:600 16px/22px var(--font-body);color:var(--charcoal);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.lrow .t2{font:500 13.5px/19px var(--font-body);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;display:flex;overflow:hidden}.lrow .time{width:48px;font:700 15px/20px var(--font-body);color:var(--charcoal);flex:none;align-self:flex-start;padding-top:1px}.lrow .time.wide{width:64px}.lrow .time .sub{font-weight:500}.lrow .act{font:600 14px/1 var(--font-body);color:var(--red-600);cursor:pointer;background:0 0;border:0;flex:none;padding:10px 0 10px 8px}.lrow .chev{color:var(--n-400);flex:none;margin-left:auto}.lrow.foot{background:var(--n-25);min-height:44px}.lrow .due{font:600 13px/1 var(--font-body);color:var(--text-muted);white-space:nowrap}.lrow .due.unpaid{color:var(--danger)}.lrow .due.to_book{color:var(--warning)}.hello p{color:var(--text-muted);font:500 14px/20px var(--font-body);margin:0 0 2px}.hello h1{font:800 26px/32px var(--font-heading)}.dash-sections{gap:0}.card.next{padding:0;overflow:hidden}.card.next>.empty{padding:24px 16px}.next-job{margin:0;padding:16px}.next-job .addr{font:700 22px/28px var(--font-heading)}.next-job .meta{font:500 14px/20px var(--font-body);color:var(--text-muted);margin:6px 0 0}.next-job .btn{margin-top:14px}.card .empty{padding:18px 10px}@media (width>=900px){.sidebar{padding:20px 16px}.sidebar .brand{align-items:center;gap:10px;padding:4px 8px 20px;display:flex}.sidebar .brand img{background:0 0;border-radius:0;width:auto;height:34px}.sidebar .word{font:800 19px/1 var(--font-heading);color:#fff;letter-spacing:-.01em}.sidebar .word b{color:var(--red-on-dark)}.sidebar .word span{font:700 10.5px/1 var(--font-heading);letter-spacing:.14em;text-transform:uppercase;color:var(--n-500);margin-top:4px;display:block}.sidebar .newjob{border-radius:var(--r-pill);background:var(--primary);color:#fff;height:44px;font:600 14.5px/1 var(--font-body);box-shadow:var(--sh-primary);justify-content:center;align-items:center;gap:8px;margin:0 0 6px;padding:0 16px;display:flex}.sidebar .newjob:hover{background:var(--red-600)}.sidebar nav{gap:2px;margin-top:10px}.sidebar nav a{height:42px;color:var(--n-300);font:600 14.5px/1 var(--font-body);border-radius:12px;align-items:center;padding:0 12px;display:flex}.sidebar nav a .row{gap:12px}.sidebar nav a.on{background:var(--sidebar-active);color:#fff}.sidebar nav a.on svg{color:var(--red-on-dark)}.sidebar .navlabel{font:700 10.5px/1 var(--font-heading);letter-spacing:.14em;text-transform:uppercase;color:var(--n-500);padding:18px 12px 0}.sidebar .who{color:var(--n-300);font:600 13.5px/1.3 var(--font-body);padding:0 12px 6px}.sidebar .signout{color:var(--n-400);font-size:13.5px}.main{padding:28px 32px 80px}.dash-sections{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start;column-gap:24px;display:grid}.dash-sections>section:first-child{grid-row:span 2}}.tabs{background:var(--n-100);border-radius:999px;gap:0;padding:3px}.tabs button{min-height:36px;font:600 14px/1 var(--font-body);color:var(--n-600);border-radius:999px;padding:0 14px}.tabs button.on{background:var(--surface);color:var(--charcoal);box-shadow:var(--sh-xs)}.filters{flex-direction:column;gap:10px}.searchrow{align-items:center;gap:8px;display:flex}.searchrow input[type=search]{background:var(--surface);border:1px solid var(--border-soft);border-radius:12px;flex:1;min-width:0;height:48px;padding:0 14px}.filter-toggle{border:1px solid var(--border-soft)!important;border-radius:12px!important;min-height:48px!important}.filter-toggle.on{background:var(--n-100)}.filter-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.filter-grid select,.filter-grid input{border:1px solid var(--border-soft);background:var(--surface);border-radius:12px;width:100%;min-width:0;height:44px;padding:0 10px;font-size:15px}.filters>.btn.text{align-self:flex-start}.list{gap:10px}.job{border:1px solid var(--border-soft);background:var(--surface);border-radius:16px;padding:14px 16px}.job .top{align-items:baseline}.job .top b{font:600 13.5px/18px var(--font-body);color:var(--n-600);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.job .meta{font:500 14px/20px var(--font-body);gap:4px 12px;margin-top:2px}.job .meta .types{align-items:center;display:inline-flex}.job .meta.more{color:var(--n-500);font-size:13px}.job .btn.next{min-height:34px;color:var(--n-700);border-color:var(--border);margin-top:10px;padding:0 12px;font-size:13px}.sec-title{font:700 16px/22px var(--font-heading);margin:18px 0 10px}@media (width>=900px){.filters{flex-flow:wrap;align-items:center}.searchrow{flex:320px}.filter-toggle{display:none!important}.filter-grid{flex:3 600px;gap:8px;display:flex}.filter-grid>*{flex:1 1 0}.list .job .btn.next{display:none}.list{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;display:grid}}.board{gap:12px}.col{background:0 0;flex:1 0 200px;min-width:200px;padding:0}.col h3{font:700 13px/18px var(--font-heading);color:var(--charcoal);box-shadow:inset 0 3px 0 var(--stage-colour);border-bottom:0;margin:0 0 6px;padding:12px 4px 8px}.col h3 .badge{color:var(--n-500)}.col .job{border-top:1px solid var(--border-soft);padding:12px 14px}.col .job .meta.more{display:none}.col .job .btn.next{width:auto}ol.actionlist{gap:10px}.card.action{padding:14px 16px}.action .top b{font:var(--text-address);color:var(--charcoal)}.action .addr{font:500 14px/20px var(--font-body);color:var(--text-muted);margin-top:2px}.action .meta{margin-top:4px}.action-side{gap:8px}.action-side .calls .btn{min-height:36px;padding:0 12px;font-size:13.5px}.action-side .btn.primary{min-width:104px;min-height:44px}.age{font:600 13px/1 var(--font-body)}.back{color:var(--red-600);font:600 14px/20px var(--font-body)}.detail-head{align-items:flex-start;margin-top:4px}.detail-head .addr-big{font:700 24px/30px var(--font-heading);color:var(--charcoal);letter-spacing:-.01em;margin:4px 0 2px}.detail-head p{flex-wrap:wrap;align-items:center;display:flex}.detail-head .badge{margin-top:2px;font-size:14px}.actions-card{flex-direction:column;gap:12px;padding:16px;display:flex}.steps{font:600 13px/1 var(--font-body);color:var(--n-500);align-items:center;gap:6px;display:flex}.steps i{background:var(--n-200);border-radius:4px;width:22px;height:4px}.steps i.on{background:var(--red-500)}.steps span{margin-left:6px}.callout{background:var(--n-100);font:500 14px/20px var(--font-body);color:var(--n-700);border-radius:12px;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.callout.amber{background:var(--st-to-book-bg);color:var(--warning-title)}.primary-row:empty{display:none}.primary-row .btn{flex:200px}.secondary-row .btn{color:var(--n-700)}.detail-cols{margin-top:14px}.detail-cols .card h3{margin-bottom:8px}.prop-line{margin:4px 0 10px}.prop-line .sub{margin-top:2px;font-size:14px}dl.kv{border-top:1px solid var(--border-soft);flex-direction:column;margin:10px 0 0;display:flex}dl.kv>div{border-bottom:1px solid var(--border-soft);font:500 14.5px/20px var(--font-body);color:var(--charcoal);text-align:right;justify-content:space-between;gap:16px;padding:10px 0;display:flex}dl.kv>div:last-child{border-bottom:0}dl.kv .label{text-transform:none;letter-spacing:0;font:500 14px/20px var(--font-body);color:var(--text-muted);text-align:left;flex:none}.notes{margin-top:10px}.notes .pre{margin:4px 0}.history{border-left-color:var(--border)}.history b{font-weight:600}.daymap{flex-direction:column;gap:10px;padding:12px;display:flex}.daymap .stoptabs{margin:0}.gframe{border:1px solid var(--border-soft);background:var(--n-100);border-radius:16px;overflow:hidden}.daymap .gframe iframe{border:0;border-radius:0;width:100%;height:260px;display:block}.btn.block{width:100%}.daymap p{margin:0 2px}.daynav .btn{min-width:44px;padding:0 14px}.timeline{padding:4px 0}.stop{gap:12px;padding:10px 0}.stop .pin{background:var(--charcoal);width:28px;height:28px;font:700 13px/1 var(--font-body)}.stop .top{flex-wrap:wrap;justify-content:flex-start;align-items:baseline;gap:4px 10px}.stop .top b{font:700 15px/20px var(--font-body);color:var(--charcoal)}.stop .top a{font:600 16px/22px var(--font-body);color:var(--charcoal)}.stop .small{color:var(--text-muted)}.stop.clash{background:var(--warning-soft);border:1px solid var(--warning-border);border-radius:14px;margin:6px 0;padding:12px}.stop .notice.warn{margin-top:8px}.leg{border-left:2px dotted var(--border-strong);font:500 13px/20px var(--font-body);margin-left:13px;padding:2px 0 2px 40px}.timeline>.notice{margin-bottom:8px}@media (width>=900px){.daymap .gframe iframe{height:520px}.dayview{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:20px}}.notice{font:500 14px/20px var(--font-body);border-radius:12px;padding:12px 14px}.notice.warn{background:var(--warning-soft);color:var(--warning-body);border:1px solid var(--warning-border)}.notice.warn>b:first-child{font:700 15px/20px var(--font-heading);color:var(--warning-title);display:block}.notice.warn>b:first-child:before{content:"⚠ ";color:var(--warning)}.notice.warn .btn{background:var(--charcoal);border-color:var(--charcoal);color:#fff;min-height:40px;margin-top:8px}.notice.ok{border:1px solid var(--success-border)}.notice.info{border:1px solid var(--info-border)}.field{gap:6px;margin-bottom:14px}.field label,.label{font:600 14px/20px var(--font-body);color:var(--charcoal);text-transform:none;letter-spacing:0}.field .hint{font:500 13px/18px var(--font-body)}.field input,.field select,.field textarea{border-radius:12px;min-height:52px;padding:12px 14px}.field textarea{min-height:88px}.modal-back{background:var(--scrim)}.modal{padding:8px 20px calc(20px + env(safe-area-inset-bottom));box-shadow:var(--sh-xl)}.modal:before{content:"";background:var(--n-200);border-radius:4px;width:40px;height:4px;margin:4px auto 10px;display:block}.modal>.row:first-child{z-index:2;background:#fff;margin-bottom:4px;padding:6px 0 10px;position:sticky;top:-8px}.modal h2{font:700 20px/26px var(--font-heading);margin:0}.modal>.row:first-child .btn{background:var(--n-100);border:0}fieldset.group legend{font:700 16px/22px var(--font-heading)}.chips button{min-height:44px;font:600 14.5px/1 var(--font-body);color:var(--n-700);align-items:center;gap:8px;padding:0 16px;display:inline-flex}.chips button.on{background:var(--charcoal);border-color:var(--charcoal);color:#fff}.chips button .tdot{margin:0}.chips button.on .tdot{box-shadow:0 0 0 2px #fff}.sheet-job{background:var(--n-50);border:1px solid var(--border-soft);border-radius:12px;padding:12px 14px}.sheet-job b{font:600 16px/22px var(--font-body);color:var(--charcoal)}.modal .actions{border-top:1px solid var(--border-soft);background:#fff;margin-top:6px;padding:12px 0 4px;position:sticky;bottom:-20px}.modal .actions .btn.primary{flex:200px;min-height:52px}@media (width>=900px){.modal{padding:8px 28px 24px}.modal:before{display:none}}.prop-line a,.detail-cols .card a b{color:var(--charcoal)}@media (width>=900px){.primary-row .btn{flex:0 340px}}.next-job .meta{gap:0}.notice.ready{background:var(--primary-soft);color:var(--red-700);border:1px solid var(--red-100);justify-content:space-between;align-items:center;font-weight:600;display:flex}.inv-list .page-head{margin-bottom:10px}.inv-list .tabs{width:100%;margin:6px 0 12px;display:flex}.inv-list .tabs button{flex:1}ul.inv-rows li.month{font:700 11px/14px var(--font-heading);letter-spacing:.12em;text-transform:uppercase;color:var(--n-500);background:var(--n-25);border-top:1px solid var(--border-soft);padding:10px 14px 6px}ul.inv-rows li.month:first-child,ul.inv-rows li.month+li .inv-row{border-top:0}.inv-row{padding:12px 16px}.inv-row .num{font:600 15px/20px var(--font-body);color:var(--charcoal)}.inv-row .amt{font:700 15px/20px var(--font-body);color:var(--charcoal)}.inv-row.on{background:var(--n-50);box-shadow:inset 3px 0 0 var(--primary)}.toolbar{gap:10px 14px}.tb-title{flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-right:auto;display:flex}.tb-title b{font:700 18px/24px var(--font-heading);color:var(--charcoal)}.tb-title .badge{text-transform:capitalize}.tb-title .sub{width:100%}.toolbar .actions .btn.primary{min-height:40px}.pick-group{margin-bottom:12px}.pick-row{border-bottom:1px solid var(--border-soft);flex-wrap:nowrap;justify-content:space-between;padding:10px 0}.pick-row:last-child{border-bottom:0}.pick-row>.row{flex-wrap:nowrap;min-width:0}.pick-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--primary);flex:none}.amt-input{border:1.5px solid var(--border-strong);border-radius:10px;width:90px;height:40px;padding:0 8px}@media (width<=1099px){.split-view .toolbar .back{visibility:visible}}@media (width>=1100px){.split-view{grid-template-columns:360px minmax(0,1fr);gap:24px}.doc-canvas{padding:28px}.tb-title .sub{width:auto}}@media print{.doc-canvas{background:0 0;padding:0}}.cal-bar{justify-content:space-between;margin-bottom:12px}.cal-bar .btn.small{min-width:40px}.cal{gap:6px}.day{border-color:var(--border-soft);border-radius:12px;padding:6px}.day.today{border-color:var(--charcoal);box-shadow:none}.day.today b{background:var(--charcoal)}.chip{background:color-mix(in srgb, var(--c,var(--st-booked)) 9%, white);border-left:3px solid var(--c,var(--st-booked));font:500 11px/16px var(--font-body);border-radius:4px;padding:1px 5px}.hd.is-today,.agenda-day b.is-today{color:var(--red-600)}.week-scroll{overflow-x:auto}.cal.week{min-width:760px}.job.wk{border-left:4px solid var(--c);background:color-mix(in srgb, var(--c) 7%, white);border-top-color:#0000;border-bottom-color:#0000;border-right-color:#0000;border-radius:8px;padding:8px 10px;font-size:13px}.cal-day{padding:4px 16px}.cal-day .hour{border-bottom:1px solid var(--border-soft);flex-wrap:nowrap;align-items:flex-start;padding:8px 0}.cal-day .hour:last-child{border-bottom:0}.cal-day .hh{flex:none;width:48px;padding-top:8px}.cal-day .btn.ghost,.agenda-day .btn.ghost{color:var(--n-500);border:0;min-height:34px}.cal-day .grow{flex:1;min-width:0}.agenda-day{flex-wrap:nowrap;justify-content:space-between;margin:16px 0 8px}.agenda-day b{font:700 15px/20px var(--font-heading);color:var(--charcoal)}.agenda-day a.btn.ghost{color:var(--red-600)}.agenda-list .job,.cal-day .job,.list.inset .job{border-left:4px solid var(--c)}.slot-label{margin-top:14px}.searchrow .role-pick{border:1px solid var(--border-soft);background:var(--surface);border-radius:12px;max-width:46%;height:48px;padding:0 10px}.avatar{background:var(--n-100);width:40px;height:40px;color:var(--n-700);font:700 13px/1 var(--font-heading);border-radius:12px;flex:none;place-items:center;display:grid}.lrow .chev svg{width:18px;height:18px}.lrow .t2 .due{display:inline}.lrows .lrow .t2+.t2{margin-top:1px}.morelist .ic{background:var(--n-100);width:40px;height:40px;color:var(--charcoal);border-radius:12px;flex:none;place-items:center;display:grid}.morelist .t1{font-weight:600}.grid.top{align-content:start}.card h3 .n{font:600 14px/1 var(--font-body);color:var(--n-500);margin-left:6px}.person{border-top:1px solid var(--border-soft);padding:10px 0;font-size:14px}.person:first-of-type{border-top:0}.inv-mini{border-top:1px solid var(--border-soft);color:inherit;justify-content:space-between;padding:8px 0}.list.inset{margin-top:8px}.list.inset .job{box-shadow:none}.btn.maps{margin-top:6px}.cert-row{border-top:1px solid var(--border-soft);flex-wrap:nowrap;justify-content:space-between;padding:8px 0}.cert-row:first-of-type{border-top:0}.rem-filter{margin-bottom:12px}.rem .top b{font:600 15px/20px var(--font-body);color:var(--charcoal);align-items:center;display:inline-flex}.rem .addr{font:500 14px/20px var(--font-body);color:var(--text-muted)}.rem .addr a{color:var(--charcoal);font-weight:600}.rem .badge.unpaid{color:var(--danger)}.rem .badge.to_book{color:var(--warning)}.rem-actions{margin-top:10px}.settings-grid{flex-direction:column;gap:14px;max-width:820px;display:flex}.card.set{padding:18px}.card.set h3{margin-bottom:6px}.card.set>p.small{margin:0 0 12px}.type-row{border-top:1px solid var(--border-soft);align-items:flex-end;padding:10px 0}.type-row>.tdot{align-self:center;margin-top:22px}.card.set .row input:not([type=checkbox]){border:1.5px solid var(--border-strong);background:var(--surface);border-radius:12px;min-height:44px;padding:0 12px}.warnbox{border:1px solid var(--warning-border)}@media (width<=899px){.type-row>.field:first-of-type{flex-basis:calc(100% - 20px)!important}}.twocol{grid-template-columns:minmax(0,1fr)}.grid>*{min-width:0}.cal{grid-template-columns:repeat(7,minmax(0,1fr))}.day{min-width:0;overflow:hidden}.searchrow .role-pick{max-width:40%}@media (width>=900px){.twocol{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}}.rem-actions .btn.follow{color:var(--red-600);border-color:var(--red-200)}.rem-actions .btn.danger,.secondary-row .btn.danger{border-color:var(--border-strong);color:var(--danger)}:focus{outline:none}a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible,input[type=checkbox]:focus-visible,label.btn:focus-within{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:10px}.btn:focus-visible{box-shadow:0 0 0 4px var(--focus-ring);border-radius:var(--r-pill);outline:none}.job:focus-visible,.lrow:focus-visible,.inv-row:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-1px}.login-hero{flex:none;justify-content:flex-start;padding:56px 24px 8px}.login-card{flex-direction:column;flex:1;padding-top:20px;display:flex}.login-card .signin{margin-top:auto}@media (width>=900px){.login-screen{align-items:center}.login-wrap{min-height:0}.login-card{flex:none}.login-card .signin{margin-top:8px}}.main{padding-bottom:calc(var(--nav) + var(--size-fab) + 48px + var(--safe-bottom))}@media (width>=900px){.main{padding-bottom:80px}.fab{display:none}}.dayview>.timeline{order:1}.dayview>.daymap{order:2}.job .top b{font:var(--text-address);color:var(--charcoal);white-space:normal;overflow:visible}.job .addr{font:500 14px/20px var(--font-body);color:var(--text-muted);margin:2px 0 4px}.col .job .top b{font:600 15px/20px var(--font-body)}.col .job .addr{font:500 13px/18px var(--font-body)}.job.wk{text-align:left;flex-direction:column;gap:1px;display:flex}.job.wk .wk-time{font:700 12px/16px var(--font-body);color:var(--n-600)}.job.wk b{font:600 13px/17px var(--font-body);color:var(--charcoal)}.job.wk .sub{font-size:12px;line-height:16px}.wk-list{margin-top:6px}.inv-row .who{font:600 15px/20px var(--font-body);color:var(--charcoal)}.inv-row .num{font:500 13px/18px var(--font-body);color:var(--text-muted);white-space:nowrap}.inv-row .num .when{font-size:inherit;color:inherit}.job.rem .top b{font:600 15px/20px var(--font-body);align-items:center;display:inline-flex}.detail-head h1{font:700 24px/30px var(--font-heading);color:var(--charcoal);letter-spacing:-.01em}.detail-head .addr-sub{font:500 15px/22px var(--font-body);color:var(--text-muted);margin-top:2px}.secondary-row:empty{display:none}details.fold{padding:0}details.fold>summary{cursor:pointer;align-items:center;gap:10px;min-height:56px;padding:12px 16px;list-style:none;display:flex}details.fold>summary::-webkit-details-marker{display:none}details.fold>summary h3{flex:none;margin:0}details.fold>summary .peek{font:500 14px/20px var(--font-body);color:var(--text-muted);text-align:right;text-overflow:ellipsis;white-space:nowrap;min-width:0;margin-left:auto;overflow:hidden}details.fold>summary:after{content:"";border-right:2px solid var(--n-400);border-bottom:2px solid var(--n-400);width:8px;height:8px;transition:transform var(--motion-fast);flex:none;margin:-4px 4px 0 2px;transform:rotate(45deg)}details.fold[open]>summary:after{margin-top:4px;transform:rotate(-135deg)}details.fold[open]>summary{border-bottom:1px solid var(--border-soft)}details.fold>:not(summary){margin-left:16px;margin-right:16px}details.fold>:last-child:not(summary){margin-bottom:14px}details.fold>.kv:first-of-type,details.fold>.prop-line,details.fold>p:first-of-type{margin-top:10px}.detail-cols .grid{gap:10px}.spread{justify-content:space-between}.list.files{margin-top:8px}.row.attach{margin-top:10px}.file-hidden{display:none}.client-line{margin:10px 0 8px}.person.small{border-top:0;padding:4px 0 6px}.history{margin-top:10px}.actionbar{left:0;right:0;bottom:var(--nav);z-index:25;min-height:var(--actionbar-h);background:var(--surface);border-top:1px solid var(--border-soft);box-shadow:var(--sh-nav);align-items:center;gap:8px;padding:12px 16px;display:flex;position:fixed}.actionbar .btn{flex:none;min-height:48px;padding:0 14px}.actionbar select.btn{max-width:34%;padding-right:8px}.actionbar .btn.primary{white-space:normal;text-align:center;flex:1;min-width:0;padding:0 14px;line-height:1.15}.app:has(.actionbar) .fab{bottom:calc(var(--nav) + var(--actionbar-h) + 12px + var(--safe-bottom))}@media (width>=900px){.actionbar{border:1px solid var(--border-soft);box-shadow:var(--sh-md);border-radius:16px;justify-content:flex-end;margin-top:16px;position:sticky;bottom:16px;left:auto;right:auto}.actionbar .btn.primary{flex:0 320px}.actionbar select.btn{max-width:none}.main:has(.actionbar){padding-bottom:32px}}@media print{.actionbar{display:none!important}}.settings-layout{flex-direction:column;gap:12px;display:flex}.setnav{scrollbar-width:none;z-index:5;background:var(--bg);gap:8px;margin:0 -20px;padding:6px 20px 8px;display:flex;position:sticky;top:56px;overflow-x:auto}.setnav::-webkit-scrollbar{display:none}.setnav button{border:1.5px solid var(--border-strong);background:var(--surface);border-radius:var(--r-pill);min-height:36px;font:600 13.5px/1 var(--font-body);color:var(--n-700);white-space:nowrap;flex:none;padding:0 14px}.setnav button.on{background:var(--charcoal);border-color:var(--charcoal);color:#fff}.card.set{scroll-margin-top:112px}.num-sm{width:90px}.num-md{width:100px}.warnbox.spaced{margin-bottom:10px}.type-add{margin-top:10px}.type-add input:not(.num-md){flex:160px;min-width:0}.type-grid{grid-template-columns:8px minmax(0,1fr) 88px 96px 56px auto;align-items:center;gap:10px;display:grid}.type-head{font:600 12.5px/16px var(--font-body);color:var(--text-muted);padding:4px 0 6px}.type-head span:nth-child(5){text-align:center}.type-row{border-top:1px solid var(--border-soft);padding:8px 0}.type-row>.tdot{align-self:center;margin:0}.type-row .cell input:not([type=checkbox]){border:1.5px solid var(--border-strong);background:var(--surface);border-radius:12px;width:100%;min-height:44px;padding:0 12px;font-size:16px}.type-row .cell input:focus{border-color:var(--primary);box-shadow:0 0 0 4px var(--focus-ring);outline:none}.type-row .c-use{justify-content:center;display:flex}.type-row .c-use input{width:20px;height:20px;accent-color:var(--primary)}.use-label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=899px){.type-head{display:none}.type-grid{grid-template-columns:8px minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"dot name name use"".months price save";row-gap:8px}.type-row>.tdot{grid-area:dot}.c-name{grid-area:name}.c-months{grid-area:months}.c-price{grid-area:price}.c-use{grid-area:use}.c-save{grid-area:save}.type-row .cell[data-label]{flex-direction:column;gap:2px;display:flex}.type-row .cell[data-label]:before{content:attr(data-label);font:600 12px/16px var(--font-body);color:var(--text-muted)}.type-row .c-use .use-label{clip:auto;width:auto;height:auto;font:600 13px/1 var(--font-body);margin-left:6px;position:static}.type-row .c-use{align-items:center}.c-save{align-self:end}}@media (width>=900px){.settings-layout{grid-template-columns:210px minmax(0,820px);align-items:start;gap:24px;display:grid}.setnav{background:0 0;flex-direction:column;gap:2px;margin:0;padding:0;position:sticky;top:24px}.setnav button{text-align:left;min-height:40px;color:var(--n-600);background:0 0;border:0;border-radius:12px;padding:0 12px;font-size:14px}.setnav button.on{background:var(--surface);color:var(--charcoal);box-shadow:var(--sh-xs)}.card.set{scroll-margin-top:24px}}.prop-line a{color:var(--red-600);font-weight:600}.prop-line a:after{content:" ›"}.app:has(.actionbar) .fab{display:none}.main:has(.actionbar){padding-bottom:calc(var(--nav) + var(--actionbar-h) + 24px + var(--safe-bottom))}@media (width<=899px){.lrow:has(>.act){padding-right:calc(var(--size-fab) + 24px)}.action-side{justify-content:flex-start}.rem-actions .btn.danger{margin-right:calc(var(--size-fab) + 8px)}}@media (width>=900px){.main:has(.actionbar){padding-bottom:32px}}.btn.delete-job{place-self:start;padding:0 4px}.type-grid{grid-template-columns:8px minmax(0,1fr) 88px 96px 56px 64px}.type-grid .c-save{justify-self:end}@media (width<=899px){.type-grid{grid-template-columns:8px minmax(0,1fr) minmax(0,1fr) auto}}.empty.boot{padding-top:30vh}.person-card{margin-bottom:8px}.col.over{outline:2px dashed var(--primary)}.col-hint{padding:6px}.modal-head{justify-content:space-between}@media (width<=899px){.type-row{padding-right:calc(var(--size-fab) + 4px)}}.doc-canvas{background:var(--n-100);border-radius:16px;padding:12px}.doc{color:var(--doc-ink);font:400 13px/1.45 var(--font-body);box-shadow:var(--sh-sm);-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff;border-radius:4px;flex-direction:column;display:flex;overflow:hidden}.doc .pre{white-space:pre-line}.doc .email{overflow-wrap:normal;word-break:normal}.doc-label{font:700 10px/14px var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--doc-muted);margin-bottom:6px}.doc-side{background:var(--doc-side-bg);color:var(--doc-side-text);border-bottom:4px solid var(--doc-rule);grid-template-columns:1fr 1fr;gap:16px 18px;padding:18px 18px 20px;font-size:12.5px;line-height:1.5;display:grid}.doc-side .doc-label{color:var(--doc-side-label)}.doc-side .doc-logo{background:#fff;border-radius:2px;grid-column:1/-1;width:170px;padding:10px 14px}.doc-side .doc-logo img{width:100%;height:auto;display:block}.doc-side section:first-of-type{grid-column:1/-1}.doc-biz{margin-bottom:2px;font-size:14px;font-weight:700;display:block}.doc-page{flex-direction:column;min-width:0;padding:22px 18px 18px;display:flex}.doc-top{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:22px;display:flex}.doc-top h2{font:800 30px/1 var(--font-heading);letter-spacing:.01em;text-transform:uppercase;color:var(--doc-ink);margin:0}.doc-no{font:400 16px/1.2 var(--font-body);color:var(--doc-muted);flex-direction:column;align-items:flex-end;gap:6px;padding-top:4px;display:flex}.doc-no .stamp{margin-top:0}.doc-meta{border-bottom:1px solid var(--doc-line);grid-template-columns:1fr;gap:18px;padding-bottom:18px;display:grid}.doc-bill b{color:var(--doc-ink);margin-bottom:2px;font-size:15px;line-height:1.3;display:block}.doc-details dl{gap:4px;margin:0;display:grid}.doc-details dl div{justify-content:space-between;gap:16px;display:flex}.doc-details dt{color:var(--doc-muted)}.doc-details dd{white-space:nowrap;margin:0;font-weight:700}.doc-items{border-collapse:collapse;width:100%;margin-top:22px}.doc-items th{font:700 10px/14px var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:var(--doc-muted);text-align:left;border-bottom:1.5px solid var(--doc-ink);background:0 0;padding:0 6px 8px}.doc-items td{border-bottom:1px solid var(--doc-line);vertical-align:top;padding:12px 6px}.doc-items th:first-child,.doc-items td:first-child{padding-left:0}.doc-items th:last-child,.doc-items td:last-child{padding-right:0}.doc-items .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.doc-items .c-qty{text-align:center;width:36px}.doc-items .sub{color:var(--doc-muted);margin-top:2px;font-size:12px}.doc-totals{gap:6px;width:100%;max-width:300px;margin:14px 0 0 auto;display:grid}.doc-totals>div{justify-content:space-between;gap:16px;padding:0 14px;display:flex}.doc-totals dt{color:var(--doc-muted)}.doc-totals dd{text-align:right;margin:0}.doc-totals .novat{justify-content:flex-end}.doc-totals .novat dd{color:var(--doc-muted);font-size:12px}.doc-totals .grand{background:var(--doc-total-bg);color:#fff;align-items:center;margin-top:6px;padding:14px}.doc-totals .grand dt{color:#fff;font:700 15px/1.2 var(--font-body)}.doc-totals .grand dd{color:#fff;font:800 22px/1.2 var(--font-body);font-variant-numeric:tabular-nums}.doc-notes{margin-top:22px}.doc-end{border-top:1px solid var(--doc-line);color:var(--doc-muted);justify-content:space-between;align-items:flex-end;gap:16px;margin-top:32px;padding-top:12px;font-size:11px;display:flex}@media (width<=520px){.doc-items .c-unit{display:none}}@media (width>=900px){.doc-canvas{padding:24px}.doc{zoom:var(--doc-zoom,1);border-radius:2px;flex-direction:row;width:794px;min-height:1123px}.doc-side{border-bottom:0;border-right:4px solid var(--doc-rule);flex:none;width:236px;padding:28px 22px;display:block}.doc-side .doc-logo{width:auto;margin-bottom:30px;padding:14px 16px}.doc-side section{margin-bottom:22px}.doc-page{flex:1;padding:52px 40px 28px}.doc-top{margin-bottom:40px}.doc-top h2{font-size:40px}.doc-no{font-size:18px}.doc-meta{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:32px;padding-bottom:22px}.doc-items{margin-top:30px}.doc-items .c-qty{width:48px}.doc-items .c-unit{width:100px}.doc-totals{max-width:320px}.doc-end,.doc-notes+.doc-end,.doc-totals+.doc-end{margin-top:auto}}@page{size:A4 portrait;margin:0}@media print{html,body{background:#fff!important}.app,.main,.main.wide,.split-view,.inv-view,.inv-detail{gap:0!important;max-width:none!important;margin:0!important;padding:0!important;display:block!important}.doc-canvas{background:0 0;border-radius:0;padding:0}.doc{width:210mm;height:297mm;min-height:0;box-shadow:none;border-radius:0;flex-direction:row;overflow:hidden;zoom:1!important}.doc-side{border-bottom:0;border-right:4px solid var(--doc-rule);flex:none;width:62mm;padding:28px 22px;display:block}.doc-side .doc-logo{width:auto;margin-bottom:30px;padding:14px 16px}.doc-side section{margin-bottom:22px}.doc-page{flex:1;padding:52px 40px 28px}.doc-top{margin-bottom:40px}.doc-top h2{font-size:40px}.doc-no{font-size:18px}.doc-meta{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:32px}.doc-items .c-unit{width:100px;display:table-cell}.doc-items .c-qty{width:48px}.doc-totals{max-width:320px}.doc-end{margin-top:auto}}
