/* ByggVakta tokens (DESIGN.md). The only file that declares colours, font sizes, radii and shadows. Loaded first. */
@font-face{font-family:Archivo;src:url(/fonts/archivo.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-display:swap}
:root{
 --ink:#0f1b33;--ink-2:#39445c;--ink-3:#5b667c;--navy:#0b1a38;
 --canvas:#fffdfa;--surface:#fff;--surface-sunk:#f7f4ef;--line:#eadfd3;--line-input:#8a93a6;
 --accent:#b34700;--accent-hover:#9a3c00;--accent-mark:#ff6b0a;--accent-tint:#fff3e9;--accent-field:#8f3a00;
 --success:#14663a;--success-bg:#eaf7ee;--warning:#7d5300;--warning-bg:#fff2cc;
 --danger:#a9231a;--danger-bg:#ffe6e3;--info:#1b4aa8;--info-bg:#e6efff;--neutral-bg:#eef0f4;
 --night:#07122a;--night-2:#101f3f;--on-night:#ffffff;--on-night-2:#b4bdd0;--night-line:rgba(255,255,255,.12);
 --hivis:#ffc21a;--hivis-ink:#1a1400;--hivis-bg:#fff6d6;--paper:#f4efe6;--fire:#ff6b0a;--fire-edge:#a13f00;
 --press-edge:0 1px 2px rgba(7,18,42,.16),0 10px 22px -10px rgba(7,18,42,.45);--press-edge-light:0 1px 2px rgba(11,26,56,.08),0 6px 14px -8px rgba(11,26,56,.22);
 --focus-on-dark:#ffd9b8;--scrim:rgba(11,26,56,.48);
 --font:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
 --font-display:Archivo,var(--font);
 --fs-meta:14px;--fs-body:16px;--fs-title:18px;--fs-heading:22px;--fs-display:28px;--fs-hero:36px;
 --lh-body:1.5;--lh-heading:1.25;
 --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;
 --r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:24px;--r-pill:999px;
 --shadow-raised:0 1px 2px rgba(11,26,56,.06),0 2px 8px rgba(11,26,56,.06);
 --shadow-up:0 -1px 2px rgba(11,26,56,.06),0 -2px 8px rgba(11,26,56,.06);
 --shadow-overlay:0 12px 32px rgba(11,26,56,.18);
 --action-bar-h:80px;--target:48px;--target-primary:56px;--appbar-h:56px;--topbar-h:56px;--sidebar-w:248px;
 --focus-width:3px;--focus-offset:3px;
 --sidebar:var(--navy);--side-ink:var(--focus-on-dark);
 --chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E");
 /* 2027 system (Vakta-first). Colour is signal only: the page is paper and ink; marker = "Vakta filled this", fire = "needs you", go = done. */
 --v-paper:#f5f3ee;--v-sheet:#fffefc;--v-ink:#14171f;--v-ink-2:#555b68;--v-ink-3:#6f7480;--v-hair:rgba(20,23,31,.09);
 --v-marker:#ffe873;--v-marker-soft:#fff6c4;--v-fire:#e85d04;--v-fire-soft:#fff0e4;--v-go:#157347;--v-go-soft:#e6f4ec;
 --v-fs-note:14px;--v-fs-body:17px;--v-fs-lead:21px;--v-fs-title:28px;--v-fs-display:clamp(38px,5.2vw,68px);--v-fs-number:clamp(46px,4.8vw,64px);
 --v-depth-1:0 1px 1px rgba(20,23,31,.03),0 6px 18px -8px rgba(20,23,31,.12);--v-depth-2:0 1px 1px rgba(20,23,31,.03),0 18px 44px -18px rgba(20,23,31,.26);--v-depth-3:0 30px 80px -24px rgba(20,23,31,.4);
 --v-r-card:26px;--v-r-field:14px;
 --v-spring:linear(0,.06 3%,.29 10%,.72 22%,1.01 34%,1.07 42%,1.05 52%,1.01 64%,1 78%,1);--v-settle:cubic-bezier(.2,.8,.2,1);
}

*{box-sizing:border-box}
:root{font-family:var(--font);font-size:var(--fs-body);font-weight:400;line-height:var(--lh-body);color:var(--ink);background:var(--canvas);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
body{margin:0;background:var(--canvas)}
:root [hidden]{display:none}
button,input,textarea,select{font:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button{cursor:pointer;color:inherit}
button:disabled{cursor:not-allowed}
button svg{flex-shrink:0}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,p{overflow-wrap:anywhere}
h1,h2,h3,h4{margin:0;color:var(--ink);line-height:var(--lh-heading)}
h1{font-size:var(--fs-display);font-weight:800;letter-spacing:-.01em}
h2{font-size:var(--fs-title);font-weight:600}
h3{font-size:var(--fs-body);font-weight:600}
h4{font-size:var(--fs-body);font-weight:600}
p{margin:var(--sp-2) 0;color:var(--ink-2);line-height:var(--lh-body)}
small{font-size:var(--fs-meta);line-height:1.4;color:var(--ink-3)}
:where(.tnum,td,th,time,output){font-feature-settings:"tnum" 1}
input,textarea,select{color:var(--ink);border:1px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);padding:0 14px;min-height:var(--target);max-width:100%}
textarea{padding:var(--sp-3) 14px;min-height:96px;resize:vertical}
input::placeholder,textarea::placeholder{color:var(--ink-3);opacity:1}
input[type=checkbox],input[type=radio]{accent-color:var(--accent);min-height:0;width:24px;height:24px;padding:0;flex:none}
select{appearance:none;-webkit-appearance:none;padding-right:42px;background-color:var(--surface);background-image:var(--chevron);background-repeat:no-repeat;background-position:right 14px center;background-size:16px}
pre{white-space:pre-wrap;overflow-wrap:anywhere;border-radius:var(--r-md);background:var(--surface-sunk);padding:var(--sp-4);font-size:var(--fs-meta);line-height:1.6;max-height:400px;overflow:auto}
details{margin:var(--sp-6) 0}
summary{cursor:pointer;font-size:var(--fs-body);color:var(--ink-2)}
main{min-width:0;flex:1;width:100%;max-width:calc(1200px + 2*var(--sp-8));margin:0 auto;padding:var(--sp-4) var(--sp-4) var(--sp-6);animation:enter .18s ease-out}
table{border-collapse:collapse;width:100%;font-size:var(--fs-meta);text-align:left}
th{font-size:var(--fs-meta);font-weight:600;padding:var(--sp-3) var(--sp-4);background:var(--surface-sunk);border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:var(--sp-4);border-bottom:1px solid var(--line);font-size:var(--fs-meta);color:var(--ink-2);vertical-align:middle}
tr:last-child td{border-bottom:0}
td small{display:block;margin-top:var(--sp-1)}
:where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:var(--focus-width) solid var(--info);outline-offset:var(--focus-offset)}
dialog:focus,dialog:focus-visible,main:focus,main:focus-visible,[tabindex="-1"]:not(button,a,input,select,textarea):focus,[tabindex="-1"]:not(button,a,input,select,textarea):focus-visible{outline:none}
:where([aria-invalid=true]){border-color:var(--danger)}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media (min-width:1000px){
main{padding:var(--sp-8) var(--sp-8) var(--sp-8)}
}
@media (max-width:760px){
table{min-width:550px}
}
@media (prefers-reduced-motion:reduce){
*,*::before,*::after{animation-duration:.01ms;animation-iteration-count:1;transition-duration:.01ms;scroll-behavior:auto}
}
@media print{
main{padding:0}
}

.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--line);color:var(--ink-3);width:31px;height:31px;font-size:var(--fs-meta);letter-spacing:-.02em;font-weight:600;flex-shrink:0;border:2px solid color-mix(in srgb,var(--surface) 70%,transparent)}
.text-link{border:0;background:none;padding:0;font-size:var(--fs-meta)}
.metric{display:flex;flex-direction:column;gap:8px;padding:1px 28px;border-left:1px solid var(--line);min-width:0}
.metric:first-child{padding-left:4px;border-left:0}
.metric>strong{letter-spacing:-.055em;line-height:1.3;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.panel{background:var(--surface);border:1px solid var(--line);margin-bottom:22px}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:24px 24px 18px}
.section-title h2{display:flex;align-items:center;gap:9px}
.section-title p{margin:6px 0 0}
.count-pill{padding:3px 7px;border-radius:var(--r-sm);color:var(--ink-3);background:var(--line);font-weight:600}
.timeline-dot{width:6px;height:6px;flex-shrink:0;background:var(--line-input);border-radius:50%}
.timeline-dot.in_progress,.timeline-dot.completed,.timeline-dot.invoiced{background:var(--line-input)}
.toolbar{display:flex;justify-content:space-between;align-items:center;margin:20px 0}
.search{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);padding:0 12px;min-width:190px;max-width:360px;color:var(--ink-3)}
.search input{border:0;background:none;padding:11px 0;font-size:var(--fs-meta);width:100%;outline-offset:6px}
.muted{font-size:var(--fs-meta)}
.table-wrap{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-md);overflow:auto}
.numeric{font-variant-numeric:tabular-nums}
.inline-note{display:flex;align-items:flex-start;gap:7px;margin-top:22px;line-height:1.8}
.inline-note svg{flex-shrink:0;margin-top:2px}
.field small{font-size:var(--fs-meta)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding-top:22px;margin-top:19px;border-top:1px solid var(--line)}
.form-error{color:var(--ink-3);background:var(--accent-tint);border:1px solid var(--line);padding:12px 16px;border-radius:var(--r-sm);font-size:var(--fs-meta);line-height:1.8}
.form-context{padding:18px 20px;background:var(--surface-sunk);border:1px solid var(--line);border-radius:var(--r-sm);margin-bottom:24px;display:flex;justify-content:space-between;gap:15px;align-items:center;font-size:var(--fs-meta);color:var(--ink-3)}
.form-context>span{font-size:var(--fs-meta);color:var(--ink-3)}
.detail-facts{padding:16px 0}
.detail-facts>div{justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line);font-size:var(--fs-meta)}
.detail-facts strong,.detail-facts a{text-align:right;overflow-wrap:anywhere}
.detail-section{padding:21px 0;border-bottom:1px solid var(--line)}
.detail-section h3{font-size:var(--fs-body)}
.detail-section>p{font-size:var(--fs-meta)}
.detail-section .section-title{padding:0 0 15px}
.detail-section .button{font-size:var(--fs-meta);min-height:var(--target);padding:7px 10px}
.attachment-row{display:flex;gap:9px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line);font-size:var(--fs-meta);color:var(--ink-3)}
.attachment-row svg:last-child{margin-left:auto}
.loading-screen{flex-direction:column;justify-content:center;align-items:center}
.loading-screen p{font-size:var(--fs-meta)}
@media (max-width:760px){
.metric strong{font-size:var(--fs-display)}
.metric{padding:0 13px;gap:7px}
.metric>small{line-height:1.6}
.section-title{padding:21px 19px 17px}
.job-row .badge{font-size:var(--fs-meta)}
.toolbar{margin:17px 0}
.toolbar>.search{max-width:none;width:100%}
.table-wrap{border-radius:var(--r-sm)}
.form-grid{grid-template-columns:1fr;gap:0}
.field input,.field select,.field textarea{padding:12px}
.form-actions{padding-top:18px;margin-top:20px;gap:8px}
.form-actions .button{font-size:var(--fs-meta);padding:11px 13px}
.detail-facts>div{font-size:var(--fs-meta);line-height:1.7}
}
@media print{
.panel{break-inside:avoid}
}
.table-wrap{position:relative}
@media (max-width:760px){
.mobile-record-card{display:block;width:100%;border:1px solid var(--line);border-radius:var(--r-md);padding:18px;text-align:left;background:var(--surface);color:var(--ink);cursor:pointer}
}
.inline-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.inline-actions .button{min-height:var(--target)}
.tech-info{margin:10px 0 0;font-size:var(--fs-meta);color:var(--ink-3)}
.tech-info>summary{cursor:pointer;min-height:32px;display:inline-flex;align-items:center;font-size:var(--fs-meta);color:var(--ink-3)}
.tech-info pre,.tech-info p,.tech-info small{font-size:var(--fs-meta);overflow-wrap:anywhere;white-space:pre-wrap}
.panel{border-color:var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-raised)}
.section-title h2{font-size:var(--fs-title);font-weight:800;letter-spacing:-.02em}
.section-title p{font-size:var(--fs-meta)}
.count-pill{font-size:var(--fs-meta)}
.text-link{font-weight:600;color:var(--accent)}
.theme-stone .sidebar .avatar{background:var(--ink-2);color:var(--surface);border-color:color-mix(in srgb,var(--surface) 20%,transparent)}
.mascot{display:block;height:auto;max-width:100%;animation:mascot-in .5s ease both;user-select:none;-webkit-user-drag:none}
.kpi:hover{transform:translateY(-2px);border-color:var(--focus-on-dark);box-shadow:var(--shadow-overlay)}
.metric>strong{font-size:var(--fs-display);font-weight:800;color:var(--ink)}
.metric>span{font-size:var(--fs-body)}
.job-row:hover{background:var(--surface-sunk)}
@media (prefers-reduced-motion:reduce){
.kpi{transition:none}
.kpi:hover{transform:none}
}
@media (max-width:760px){
.job-row .badge{flex:none}
.app .text-link,.app .subtle-link{display:inline-flex;align-items:center}
}
.field:focus-within input,.field:focus-within textarea,.field:focus-within select{border-color:var(--info)}
.app .table-wrap td{font-size:var(--fs-body);padding:16px 22px}
.app .table-wrap th{font-size:var(--fs-meta);font-weight:600;color:var(--ink-2)}
.app .table-wrap td strong{color:var(--ink);font-weight:600}
@media (min-width:761px){
.app .price-book .table-wrap table{table-layout:fixed;width:100%;min-width:0}
.app .price-book .table-wrap th,.app .price-book .table-wrap td{padding:14px 12px;overflow-wrap:anywhere}
.app .price-book .table-wrap th{white-space:normal}
.app .price-book .table-wrap tr>:nth-child(1){width:auto}
.app .price-book .table-wrap tr>:nth-child(2){width:84px}
.app .price-book .table-wrap tr>:nth-child(3){width:140px;text-align:right}
.app .price-book .table-wrap tr>:nth-child(4){width:68px}
.app .price-book .table-wrap tr>:nth-child(5){width:132px}
.app .price-book .table-wrap tr>:nth-child(6){width:140px;text-align:right}
}
@media (max-width:760px){
.app .toolbar{align-items:stretch}
.app .toolbar .search{width:100%}
.app .toolbar>.tabs{width:calc(100% + var(--sp-8))}
}
.app .avatar{background:var(--neutral-bg);color:var(--ink);font-weight:600}
.app .tech-info{margin:var(--sp-2) 0 0}
.app .tech-info summary,.app .tech-info small{font-size:var(--fs-meta);color:var(--ink-3)}
@media (max-width:760px){
.app .mobile-record-card{display:grid;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--r-lg);box-shadow:var(--shadow-raised)}
}
.app .table-wrap:has(.empty) thead{display:none}
.modal .form-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
@media (max-width:760px){
.modal .form-grid{grid-template-columns:1fr}
}
.modal .modal-body>form>.form-actions{position:sticky;bottom:0;z-index:3;padding:var(--sp-3) 0 0;background:var(--surface);border-top:1px solid var(--line)}
.modal .field small,.modal .inline-note{font-size:var(--fs-meta);color:var(--ink-2)}
.modal-body .detail-facts>div>span{font-size:var(--fs-meta)}
.modal.drawer .drawer-actions .button{flex:1 1 150px;justify-content:center}
@media (max-width:760px){
.modal-body .detail-facts>div{padding:var(--sp-3) 0}
}
.modal-body .detail-facts{padding-bottom:0}
.modal-body .detail-facts>div:last-child{border-bottom:0}
.modal-body .detail-facts+.form-actions{margin:var(--sp-4) 0 var(--sp-6);padding-top:0;border-top:0}
:root .app .search input:focus,:root .app .search input:focus-visible{outline:none;box-shadow:none;border-color:transparent}
.app .search:focus-within{outline:var(--focus-width) solid var(--info);outline-offset:0;border-color:var(--info)}
@media (max-width:760px){
.modal .modal-body>form>.form-actions{padding-bottom:var(--sp-4)}
}
.app .count-pill{background:var(--accent-tint);color:var(--ink);font-size:var(--fs-meta);font-weight:600}
.app .avatar{font-size:var(--fs-meta)}
body .app .tech-info{margin:var(--sp-2) 0 0;border:0;background:none;padding:0}
body .app .tech-info summary{display:inline-flex;align-items:center;gap:var(--sp-2);width:auto;min-height:var(--target);padding:0 var(--sp-1);background:none;border:0;color:var(--accent);font-size:var(--fs-meta);font-weight:600;cursor:pointer;list-style:none}
body .app .tech-info summary::-webkit-details-marker{display:none}
body .app .tech-info summary::after{content:"";width:12px;height:12px;background:currentColor;mask:var(--chevron) center/contain no-repeat;-webkit-mask:var(--chevron) center/contain no-repeat;transform:none;border:0}
body .app .tech-info[open] summary::after{transform:rotate(180deg)}
body .app .tech-info[open] summary{margin-bottom:var(--sp-2)}
@media (max-width:760px){
body .app .toolbar>.tabs{margin:0;padding:0;width:100%;max-width:100%;scroll-padding:0;gap:var(--sp-1)}
}
body .app .table-wrap th{font-size:var(--fs-meta);font-weight:600;color:var(--ink-2)}
body .app .table-wrap .badge{font-size:var(--fs-meta)}
body .app .search:focus-within{outline:2px solid var(--navy);outline-offset:0;border-color:var(--navy);box-shadow:none}
body .app .detail-facts a{text-align:left;max-width:none;justify-self:start}
body .app .detail-facts>div .badge{justify-self:start;width:fit-content}
@media (max-width:480px){
body .app .detail-facts>div{grid-template-columns:132px minmax(0,1fr);gap:var(--sp-3);padding:var(--sp-3) 0;align-items:baseline}
}
body .app .modal.drawer .drawer-actions{position:static;margin-top:var(--sp-6);padding:var(--sp-4) 0 var(--sp-2)}
body .app .modal.drawer .drawer-actions:has(.button.primary){position:sticky;bottom:0;box-shadow:var(--shadow-up)}
@media (max-width:760px){
body .app .modal.drawer .drawer-actions .button{flex:1 1 calc(50% - var(--sp-2));min-height:var(--target)}
}
body .app .modal .inline-note{font-size:var(--fs-body)}
body .app .modal .modal-body>form>.form-actions{margin-top:var(--sp-5)}
.nowrap{white-space:nowrap}
.tech-info summary{min-height:var(--target);display:flex;align-items:center;font-size:var(--fs-meta);cursor:pointer}
.detail-facts strong,.detail-facts a{font-weight:600;max-width:68%}
.detail-facts a{text-decoration:underline;text-underline-offset:3px;font-weight:600}
.detail-section h3{color:var(--ink);font-weight:600}
.modal-body .form-actions{flex-wrap:wrap;justify-content:flex-start;position:static}
.modal-body .form-actions .button{flex:1 1 160px;justify-content:center}
.drawer-actions .button{flex:1 1 160px;justify-content:center;min-height:var(--target)}
.checkbox-label{color:var(--ink);font-size:var(--fs-body)}
.checkbox-label input{width:20px;height:20px;flex:none;accent-color:var(--accent)}
.inline-note{font-size:var(--fs-meta)}
.detail-facts>div:has(.event-target){align-items:center}
.modal-body .section-title{flex-wrap:wrap}
.modal-body .section-title .button{white-space:nowrap;flex:none}
.modal-body .form-actions .button,.drawer-actions .button{white-space:normal}
.modal-body .panel{box-shadow:none;margin-bottom:var(--sp-4)}
.app .modal-body .inline-note{color:var(--ink-2)}
.app .field small{margin-top:var(--sp-1);display:block;line-height:1.4}
.app .field label{font-size:var(--fs-meta);font-weight:600;color:var(--ink)}
.app .checkbox-label,.app label.checkbox-label{display:flex;align-items:flex-start;gap:var(--sp-3);min-height:var(--target);padding:var(--sp-2) 0;font-size:var(--fs-body);color:var(--ink)}
@media (max-width:760px){
.table-wrap table{display:block;min-width:0;width:100%}
.table-wrap thead{display:none}
.table-wrap tbody{display:grid;gap:var(--sp-3)}
.table-wrap tbody tr{display:grid;grid-template-columns:1fr auto;gap:var(--sp-2) var(--sp-3);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.table-wrap tbody td{display:block;padding:0;border:0}
.table-wrap.outbox tbody td:nth-child(3)::before{content:"Antall forsøk: "}
.table-wrap tbody td:nth-child(3){grid-column:1;color:var(--ink-2);font-size:var(--fs-meta)}
.table-wrap tbody td:nth-child(4){grid-column:1/-1}
}
/* Prisliste on a phone (L235): one compact row per price. Name first and never cut, Rediger beside it, the price with its label, unit and MVA under it. */
@media (max-width:760px){
.app .price-book .table-wrap{overflow:visible;border:0;background:none;border-radius:0}
.app .price-book .table-wrap tbody{gap:var(--sp-2)}
.app .price-book .table-wrap tbody tr{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--sp-1) var(--sp-3);padding:var(--sp-3) var(--sp-4);min-width:0}
.app .price-book .table-wrap tbody td{padding:0;min-width:0;grid-column:auto;color:var(--ink);font-size:var(--fs-body)}
.app .price-book .table-wrap tbody td:nth-child(1){grid-column:1;grid-row:1;overflow-wrap:anywhere}
.app .price-book .table-wrap tbody td:nth-child(1) strong{display:block;overflow-wrap:anywhere;line-height:1.3}
.app .price-book .table-wrap tbody td:nth-child(1) small{display:block;margin-top:2px;overflow-wrap:anywhere}
.app .price-book .table-wrap tbody td:nth-child(6){grid-column:2;grid-row:1;align-self:start}
.app .price-book .table-wrap tbody td:nth-child(3){grid-column:1;grid-row:2;font-weight:600}
.app .price-book .table-wrap tbody td:nth-child(3)::before{content:"Pris før MVA";display:block;font-size:var(--fs-meta);font-weight:400;color:var(--ink-2)}
.app .price-book .table-wrap tbody td:nth-child(5){grid-column:2;grid-row:2;align-self:end;justify-self:end}
.app .price-book .table-wrap tbody td:nth-child(2){grid-column:1;grid-row:3;font-size:var(--fs-meta);color:var(--ink-2)}
.app .price-book .table-wrap tbody td:nth-child(2)::before{content:"Enhet: "}
.app .price-book .table-wrap tbody td:nth-child(4){grid-column:2;grid-row:3;justify-self:end;font-size:var(--fs-meta);color:var(--ink-2)}
.app .price-book .table-wrap tbody td:nth-child(4)::before{content:"MVA "}
}
.tech-info{margin-top:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk);padding:0 var(--sp-4)}
.tech-info summary{font-weight:600;color:var(--ink)}
.detail-facts{display:grid;gap:var(--sp-3)}
.detail-facts>div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:var(--sp-3);align-items:baseline}
.detail-facts>div span{color:var(--ink-2);font-size:var(--fs-meta)}
.detail-facts>div strong{color:var(--ink);font-weight:600;overflow-wrap:anywhere}
@media (max-width:480px){
.detail-facts>div{grid-template-columns:minmax(0,1fr);gap:2px}
}
.toolbar{gap:var(--sp-4);flex-wrap:wrap}
.modal .form-actions{flex-wrap:wrap}
.modal .form-actions .button{min-height:var(--target);white-space:nowrap}
@media (max-width:480px){
.modal .form-actions .button{width:100%;white-space:normal}
}
.loading-screen{display:grid;place-content:center;justify-items:center;gap:var(--sp-4);min-height:100dvh;padding:var(--sp-6);text-align:center;background:var(--canvas)}
.loading-screen h1{color:var(--ink);font-weight:800}
.loading-screen p{color:var(--ink-2);max-width:42ch}
@media (max-width:480px){
.app .form-actions .button.primary{width:100%}
}
.modal .search{max-width:none;width:100%;margin-bottom:var(--sp-3)}
.mobile-record-card .button{min-height:var(--target)}
.modal .field{scroll-margin-top:96px}
@media (max-width:480px){
.modal .form-actions{flex-direction:column;flex-wrap:nowrap}
.modal .form-actions .button.primary{order:-1}
.modal .form-actions .button{flex:none;height:auto}
}
.app .form-error{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--danger-bg);color:var(--danger);font-size:var(--fs-meta);font-weight:600;margin:var(--sp-3) 0}
.app td .text-link,.app .table-wrap .text-link{font-size:var(--fs-body);font-weight:600;color:var(--accent)}
.app td,.app .table-wrap td{color:var(--ink)}
.app .modal .form-actions .button:not(.primary),.app .modal .inline-actions .button:not(.primary){background:var(--surface);border-color:var(--line-input);color:var(--ink)}
.modal .field>small{display:block;margin-top:var(--sp-1);font-size:var(--fs-meta);color:var(--ink-2);line-height:1.4}
.modal .modal-body>form>.form-actions,.modal .modal-body form .form-actions{margin-top:var(--sp-5)}
.modal .field:last-of-type{margin-bottom:var(--sp-2)}
.modal .form-error{margin:var(--sp-3) 0 0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--danger-bg);color:var(--danger);font-weight:600;font-size:var(--fs-body);line-height:1.4}
.modal .modal-body>form>.form-actions{box-shadow:var(--shadow-up)}
@media (max-width:760px){
.is-tech .topbar-right>.avatar{display:none}
}
:is(.field-sheet .fs-check,.fm-body .checkbox-label) input[type=checkbox]{-webkit-appearance:none;appearance:none;flex:none;width:24px;height:24px;margin:0;border:2px solid var(--navy);border-radius:var(--r-sm);background:var(--surface);display:inline-grid;place-content:center}
:is(.field-sheet .fs-check,.fm-body .checkbox-label) input[type=checkbox]:checked{background:var(--navy)}
:is(.field-sheet .fs-check,.fm-body .checkbox-label) input[type=checkbox]:checked::after{content:"";width:6px;height:12px;border:solid var(--surface);border-width:0 3px 3px 0;transform:translateY(-1px) rotate(45deg)}
.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:var(--target);min-width:var(--target);padding:0 var(--sp-4);border:1px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-size:var(--fs-title);font-weight:600;line-height:1.2;white-space:nowrap;text-decoration:none;box-shadow:none;transition:background-color .12s ease}
.button:hover{background:var(--surface-sunk)}
.button:active{background:color-mix(in srgb,var(--ink) 8%,var(--surface))}
.button.primary{background:var(--accent);border-color:var(--accent);color:var(--surface);padding:0 var(--sp-5)}
.button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.button.primary:active{background:color-mix(in srgb,var(--accent-hover) 92%,var(--ink))}
.button.tertiary{background:transparent;border-color:transparent;color:var(--ink-2);padding:0 var(--sp-3)}
.button.tertiary:hover,.button.tertiary:focus-visible{background:transparent;text-decoration:underline}
:is(.button.destructive,.button.danger){background:var(--surface);border-color:var(--danger);color:var(--danger)}
:is(.button.destructive,.button.danger):hover{background:var(--danger-bg)}
.button.destructive.filled{background:var(--danger);border-color:var(--danger);color:var(--surface)}
.button.selected{background:var(--accent-tint);border:2px solid var(--accent);padding:0 calc(var(--sp-4) - 1px);color:var(--ink)}
.button:disabled,.button[aria-disabled=true]{background:var(--neutral-bg);border:1.5px dashed var(--line-input);color:var(--ink-2);opacity:1;box-shadow:none}
.button.tertiary:disabled{background:transparent;border-color:transparent}
.button[aria-busy=true]{pointer-events:none}
.icon-button{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;border-radius:var(--r-sm);padding:0;color:inherit;flex-shrink:0;min-width:var(--target);min-height:var(--target)}
.icon-button:hover{background:var(--surface-sunk)}
.badge{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:0 10px;border-radius:var(--r-pill);background:var(--neutral-bg);color:var(--ink-2);font-size:var(--fs-meta);font-weight:600;line-height:1.2;white-space:nowrap;text-transform:none}
.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.badge:where(.completed,.paid,.active,.verified,.accepted,.approved,.invoiced,.closed,.reviewed,.ok){background:var(--success-bg);color:var(--success)}
.badge:where(.issued,.in_progress,.scheduled,.sent,.planned,.booked,.quoted,.processing){background:var(--info-bg);color:var(--info)}
.badge:where(.pending,.review,.proposed,.simulated,.demo,.waiting,.needs_review,.queued,.awaiting_ack,.expired,.high){background:var(--warning-bg);color:var(--warning)}
.badge:where(.overdue,.blocked,.failed,.urgent){background:var(--danger-bg);color:var(--danger)}
.badge:where(.cancelled,.paused,.declined,.draft,.normal,.new,.low,.open){background:var(--neutral-bg);color:var(--ink-2)}
.callout{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3);align-items:start;padding:var(--sp-3) var(--sp-4);border:1px solid color-mix(in srgb,var(--warning) 30%,transparent);border-radius:var(--r-md);background:var(--warning-bg);color:var(--ink);font-size:var(--fs-body)}
.callout>svg{margin-top:2px;color:var(--warning)}
.callout-title{display:block;font-size:var(--fs-title);font-weight:600;color:var(--ink);line-height:1.35}
.callout-body{display:block;margin-top:var(--sp-1);color:var(--ink-2)}
.callout.success{background:var(--success-bg);border-color:color-mix(in srgb,var(--success) 30%,transparent)}
.callout.success>svg{color:var(--success)}
.callout.danger{background:var(--danger-bg);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}
.callout.danger>svg{color:var(--danger)}
.callout.info{background:var(--info-bg);border-color:color-mix(in srgb,var(--info) 30%,transparent)}
.callout.info>svg{color:var(--info)}
.callout.neutral{background:var(--surface-sunk);border-color:transparent}
.callout.neutral>svg{color:var(--ink-2)}
.money{font-feature-settings:"tnum" 1;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;color:var(--ink);font-weight:600}
.money-total{font-size:var(--fs-display);font-weight:800;letter-spacing:-.01em;line-height:1.2}
.money.urgent{color:var(--danger)}
.money.positive{color:var(--success)}
.money.zero{color:var(--ink-3);font-size:var(--fs-body);font-weight:400}
.money.pending{color:var(--ink-2)}
.money-sub{display:block;font-size:var(--fs-meta);color:var(--ink-3);font-weight:400}
.money-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--danger);margin-right:var(--sp-2)}
.list-group{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;margin:0;padding:0;list-style:none}
.list-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:56px;padding:var(--sp-3) var(--sp-4);border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;font-size:var(--fs-body)}
.list-group>.list-row:first-child{border-top:0}
button.list-row{cursor:pointer}
button.list-row:hover,a.list-row:hover{background:var(--surface-sunk)}
.list-row-main{flex:1;min-width:0;display:block}
.list-row-title{display:block;font-size:var(--fs-title);font-weight:600;line-height:1.35;color:var(--ink)}
.list-row-sub{display:block;font-size:var(--fs-body);color:var(--ink-2);margin-top:2px}
.list-row-trail{margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:var(--sp-2)}
.list-row.link::after{content:"";width:20px;height:20px;flex:none;background:var(--ink-3);-webkit-mask:var(--chevron) center/20px no-repeat;mask:var(--chevron) center/20px no-repeat}
.empty{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);text-align:center;padding:var(--sp-8) var(--sp-4)}
.empty-symbol{display:inline-grid;place-items:center;color:var(--ink-2)}
.empty h3{font-size:var(--fs-title);font-weight:600;color:var(--ink)}
.empty p{margin:0;max-width:400px;font-size:var(--fs-body);color:var(--ink-2)}
.empty>:last-child:not(h3,p,.mascot,.empty-symbol){margin-top:var(--sp-2)}
.empty.has-mascot .mascot{width:64px;margin:0}
.field{display:flex;flex-direction:column;gap:var(--sp-2);margin:0 0 var(--sp-4);min-width:0}
.field>label{font-size:var(--fs-meta)}
.field input,.field select,.field textarea{width:100%;min-width:0;font-size:var(--fs-body)}
.field>small{font-size:var(--fs-body);color:var(--ink-2);line-height:1.4}
.field .field-error{display:flex;gap:var(--sp-2);align-items:center;color:var(--danger);font-size:var(--fs-body)}
.field [aria-invalid=true]{border-color:var(--danger)}
.field:focus-within input:not([aria-invalid=true]),.field:focus-within textarea:not([aria-invalid=true]),.field:focus-within select:not([aria-invalid=true]){border-color:var(--info)}
.checkbox-label{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target)}
.tabs{display:flex;gap:var(--sp-2);align-items:stretch;border-bottom:1px solid var(--line);max-width:100%;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--target);padding:0 var(--sp-3);border:0;border-bottom-width:3px;border-bottom-style:solid;border-bottom-color:transparent;background:transparent;color:var(--ink-2);font-size:var(--fs-title);font-weight:600;white-space:nowrap}
.tabs button:hover{color:var(--ink)}
.tabs button.active{color:var(--ink);border-bottom-color:var(--accent)}
.chip{position:relative;display:inline-flex;align-items:center;gap:var(--sp-2);min-height:36px;padding:0 var(--sp-3);border:1px solid var(--line-input);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);font-size:var(--fs-meta);font-weight:600}
.chip::after{content:"";position:absolute;inset:-6px 0}
.chip[aria-pressed=true],.chip.selected{background:var(--accent-tint);border-color:var(--accent)}
.accordion{margin:0;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.accordion>summary{display:flex;align-items:center;gap:var(--sp-3);min-height:56px;padding:0 var(--sp-4);list-style:none;font-size:var(--fs-title);font-weight:600;color:var(--ink)}
.accordion>summary::-webkit-details-marker{display:none}
.accordion>summary::after{content:"";margin-left:auto;width:20px;height:20px;background:var(--ink-3);-webkit-mask:var(--chevron) center/20px no-repeat;mask:var(--chevron) center/20px no-repeat;transform:rotate(90deg)}
.accordion[open]>summary::after{transform:rotate(-90deg)}
.accordion>summary .meta{margin-left:auto;font-size:var(--fs-meta);font-weight:600;color:var(--ink-3)}
.accordion>summary .meta+::after{margin-left:0}
.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-6);margin-bottom:var(--sp-6)}
.page-header h1{font-size:var(--fs-display);font-weight:800;letter-spacing:-.01em;line-height:1.2}
.page-header p{margin:var(--sp-2) 0 0;font-size:var(--fs-body);color:var(--ink-2);max-width:60ch}
.header-actions{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:760px){
.page-header{gap:var(--sp-3);margin-bottom:var(--sp-4)}
.page-header.dup-title h1{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.page-header.dup-title:not(:has(p,.header-actions)){margin:0}
.page-header h1{font-size:var(--fs-heading)}
}
@media (max-width:480px){
.page-header{flex-direction:column;align-items:stretch}
.header-actions{justify-content:flex-start}
}
.modal{position:fixed;padding:0;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--canvas);color:var(--ink);box-shadow:var(--shadow-overlay);width:min(560px,calc(100vw - 2*var(--sp-4)));max-height:90dvh;overflow:hidden}
.modal[open]{display:flex;flex-direction:column}
.modal::backdrop{background:var(--scrim)}
.modal.wide{width:min(800px,calc(100vw - 2*var(--sp-4)))}
.modal.drawer{margin:0 0 0 auto;inset:0 0 0 auto;max-height:100dvh;height:100dvh;width:min(560px,100vw);border-radius:var(--r-lg) 0 0 var(--r-lg);border-right:0}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:var(--appbar-h);padding:var(--sp-4) var(--sp-2) var(--sp-2) var(--sp-4);background:var(--canvas);border-bottom:1px solid var(--line);flex:none}
.modal-head h2{font-size:var(--fs-heading);font-weight:800;letter-spacing:-.01em;color:var(--ink)}
.modal-body{padding:var(--sp-4);overflow-y:auto;flex:1;min-height:0}
.modal-body>p{font-size:var(--fs-body);color:var(--ink-2)}
.modal-body small{color:var(--ink-3)}
.modal-foot,.modal .form-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);background:var(--canvas);border:0;box-shadow:var(--shadow-up)}
.modal .form-actions{position:sticky;bottom:calc(-1*var(--sp-4));margin:var(--sp-4) calc(-1*var(--sp-4)) calc(-1*var(--sp-4))}
.modal-foot{flex:none;padding-bottom:max(var(--sp-3),env(safe-area-inset-bottom,0px))}
@media (max-width:760px){
.modal,.modal.wide{position:fixed;inset:0;margin:auto 0 0;width:100%;max-width:100%;max-height:92dvh;border-radius:var(--r-lg) var(--r-lg) 0 0;border-bottom:0}
.modal.full{height:92dvh}
.modal.drawer{inset:0;margin:auto 0 0;width:100%;max-height:92dvh;height:auto;border-radius:var(--r-lg) var(--r-lg) 0 0}
.modal-foot,.modal .form-actions{flex-direction:column-reverse;align-items:stretch}
.modal-foot .button.primary,.modal .form-actions .button.primary{min-height:var(--target-primary);width:100%}
.modal-foot .button,.modal .form-actions .button{width:100%}
}
.toast{position:fixed;z-index:80;left:50%;bottom:calc(var(--sp-4) + var(--bar-clear,0px) + env(safe-area-inset-bottom,0px));transform:translateX(-50%);width:max-content;display:flex;align-items:center;gap:var(--sp-2);min-height:var(--target);max-width:min(560px,calc(100vw - 2*var(--sp-4)));margin:0;padding:var(--sp-1) 0 var(--sp-1) var(--sp-4);border:0;border-radius:var(--r-md);background:var(--navy);color:var(--surface);box-shadow:var(--shadow-overlay);font-size:var(--fs-body)}
.toast>span{flex:1;min-width:0}
.toast>svg{flex-shrink:0}
.toast .icon-button{color:var(--surface)}
.toast .icon-button:hover{background:color-mix(in srgb,var(--surface) 14%,transparent)}
.toast.error{background:var(--danger)}
/* Inside an open dialog: above its content, and a finger goes straight through to the dialog's own buttons. */
dialog .toast:not(.error){top:calc(var(--sp-3) + env(safe-area-inset-top,0px));bottom:auto;pointer-events:none}
dialog .toast:not(.error) .icon-button{pointer-events:auto}

/* Shared action bar (primary on top, secondary below). Fixed to the bottom on phones, in flow on wider screens. */
.action-bar{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-4)}
.action-bar .button{width:100%;justify-content:center}
.action-bar .button.primary{min-height:var(--target-primary)}
@media (max-width:760px){
body{--bar-clear:0px}
body:has(.action-bar){--bar-clear:var(--action-bar-h);padding-bottom:calc(var(--action-bar-h) + env(safe-area-inset-bottom,0px))}
body:has(.action-bar>:nth-child(2)){--bar-clear:calc(var(--action-bar-h) + var(--target) + var(--sp-2))}
html:has(.action-bar){scroll-padding-bottom:calc(var(--bar-clear,0px) + var(--sp-4) + env(safe-area-inset-bottom,0px))}
.action-bar{position:fixed;inset:auto 0 0 0;z-index:25;margin:0;padding:var(--sp-3) var(--sp-4) max(var(--sp-3),env(safe-area-inset-bottom,0px));background:var(--canvas);border-top:1px solid var(--line);box-shadow:var(--shadow-up)}
.action-bar .button.primary{order:-1}
.modal-foot,.modal .form-actions{flex-direction:column}
.modal-foot .button.primary,.modal .form-actions .button.primary,.modal-foot .fd-hint{order:-1}
}
@media (min-width:761px){
.action-bar{flex-direction:row;justify-content:flex-end}
.action-bar .button{width:auto}
}

/* Restored from 18c2cb1: rules dropped by the coverage-based prune for states the captures never showed. Guarded by design_gate_static (className coverage). */
.callout-action{margin-top:var(--sp-2)}
.link-button{background:none;border:0;padding:0;min-height:var(--target);color:var(--info);font:inherit;font-weight:600;text-decoration:underline;cursor:pointer}
.money-label{display:block;font-size:var(--fs-meta);color:var(--ink-2);font-weight:600}

/* Godkjenn dagen on phone: the page scrolls inside a body that stops above a reserved band, so a toast never covers an approval card. */
@media (max-width:760px){
html:has(.day-queue){overflow:hidden;height:100dvh}
body:has(.day-queue){height:calc(100dvh - var(--action-bar-h) - env(safe-area-inset-bottom,0px));overflow-y:auto;overscroll-behavior:contain}
}

.docs-review-list{display:grid;gap:0}
.docs-review-item{display:grid;gap:var(--sp-3);padding:var(--sp-4);border-top:1px solid var(--line)}
.docs-review-item:first-child{border-top:0}
.docs-review-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
.docs-review-photo{width:100%;max-height:320px;object-fit:contain;border-radius:var(--r-md);background:var(--surface-2,var(--canvas))}
.modal-body .form-actions.docs-review-actions{position:sticky;bottom:0;z-index:1;margin:0;padding:var(--sp-3) 0;background:var(--canvas);border-top:1px solid var(--line)}

/* Ferdig -> faktura: why the invoice waits, and field materials the quote lacks (InvoiceCheck.jsx) */
.ic-panel{border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4);background:var(--surface)}
.ic-panel h3{margin:0 0 var(--sp-2)}
.ic-panel>p{margin:0 0 var(--sp-3);color:var(--ink-2)}
.ic-panel.ready{border-color:var(--success);background:var(--success-bg)}
.ic-steps{list-style:none;margin:0 0 var(--sp-3);padding:0;display:grid;gap:var(--sp-2)}
.ic-step{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);background:var(--warning-bg);border-left:4px solid var(--warning)}
.ic-step-text{display:grid;gap:2px;min-width:0;flex:1 1 220px}
.ic-step-text span{color:var(--ink-2);font-size:var(--fs-meta)}
.ic-fix{flex:0 0 auto}
.ic-materials-note{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-3);border-radius:var(--r-md);background:var(--info-bg);margin-bottom:var(--sp-3)}
.ic-materials{border:0;margin:var(--sp-3) 0 0;padding:0;display:grid;gap:var(--sp-3)}
.ic-materials legend{font-weight:700;font-size:var(--fs-title);margin-bottom:var(--sp-1);padding:0}
.ic-hint{margin:0;color:var(--ink-2)}
.ic-material{border:1px solid var(--warning);border-radius:var(--r-md);padding:var(--sp-3);background:var(--warning-bg);display:grid;gap:var(--sp-2)}
.ic-material.decided{border-color:var(--line);background:var(--surface)}
.ic-material-text{margin:0;font-weight:600;overflow-wrap:anywhere}
.ic-choices{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}
.ic-choice{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--target);padding:0 var(--sp-3);border:1px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);cursor:pointer}
.ic-choice.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.ic-line{display:grid;gap:var(--sp-2)}
.ic-line-row{display:grid;grid-template-columns:1fr 1.6fr 1fr;gap:var(--sp-2)}
.ic-line .field{margin:0}
.ic-made p{margin:0 0 var(--sp-3)}
.fr-why{display:block;color:var(--ink-2);font-size:var(--fs-meta);overflow-wrap:anywhere}
@media (max-width:420px){.ic-choices{grid-template-columns:1fr}.ic-line-row{grid-template-columns:1fr 1fr}.ic-line-row .field:nth-child(2){grid-column:1/-1;order:-1}}
.ic-choice span{display:grid;line-height:1.25}
.ic-choice small{color:var(--ink-2);font-size:var(--fs-meta);font-weight:400}
.ic-choice{padding-top:var(--sp-2);padding-bottom:var(--sp-2)}
.ic-wait{margin:var(--sp-2) 0 0;color:var(--ink-2);font-size:var(--fs-meta)}
.ic-incl{margin:0;font-size:var(--fs-body,1rem);color:var(--ink-2)}
.ic-new-total{margin:var(--sp-3) 0 0;padding:var(--sp-3);background:var(--surface-sunk);border-radius:12px}
.ic-lines{margin-top:var(--sp-3)}
.ic-actions .ic-wait{flex:1 1 100%;order:-2;margin:0 0 var(--sp-1);color:var(--ink);font-weight:600}
.ic-next{margin:.4rem 0 0;color:var(--muted,#5b6470)}
.ic-list-price{display:block;font-size:.85rem;color:var(--muted,#5b6470);font-style:normal}
:root:root .app .modal .modal-body>form>.form-actions.ic-actions{padding-inline:var(--sp-4)}
@media (max-width:480px){
:root:root .app .modal .modal-body>form>.form-actions.ic-actions{flex-direction:row;flex-wrap:wrap}
:root:root .app .modal .modal-body>form>.form-actions.ic-actions .button{flex:1 1 40%;width:auto}
}

.inv-identity{display:grid;gap:var(--sp-3);margin-top:var(--sp-3)}
.inv-identity h4{margin:0}
.inv-identity p{margin:0}
.inv-identity-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
/* L235b: on a phone no paragraph, input or button of an invoice-drawer card may run past the card border (grid tracks were auto = as wide as the widest input). */
@media (max-width:760px){
.inv-issue,.inv-identity,.inv-confirm,.inv-share,.inv-send{grid-template-columns:minmax(0,1fr);min-width:0;max-width:100%;box-sizing:border-box}
.inv-issue>*,.inv-identity>*,.inv-confirm>*{min-width:0;max-width:100%}
.inv-issue :is(p,h3,h4,li,label,small,dd,dt,span),.inv-identity :is(p,h4,label,small,span){overflow-wrap:anywhere}
.inv-identity .field,.inv-identity input,.inv-identity select,.inv-issue input:not([type=checkbox]):not([type=radio]){width:100%;max-width:100%;min-width:0;box-sizing:border-box}
.inv-identity .checkbox-label{display:flex;align-items:flex-start;gap:var(--sp-2)}
.inv-identity-actions .button,.inv-confirm-actions .button,.inv-issue .button,.inv-identity .button{flex:1 1 auto;min-width:0;max-width:100%;box-sizing:border-box;height:auto;white-space:normal;text-align:center}
.inv-issue .button span,.inv-identity .button span,.inv-confirm .button span{white-space:normal;min-width:0;overflow-wrap:anywhere}
}
.finance-path{padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.finance-path ol{margin:var(--sp-2) 0;padding-left:var(--sp-4)}
.finance-path p{margin:0}

/* H1: hours and the invoice without a quote (HourlyInvoice.jsx) */
.hi-panel .hi-chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 12px}
.hi-chip{min-height:44px;min-width:64px}
.hi-chip.on{background:var(--ink,#1c2430);color:var(--paper,#fff)}
.hi-sum{margin:8px 0 12px;display:grid;gap:4px}
.hi-sum>div{display:flex;justify-content:space-between;gap:12px}
.hi-sum dt{color:var(--muted,#5a6472)}.hi-sum dd{margin:0;font-variant-numeric:tabular-nums}
.hi-sum .hi-total{font-weight:600;border-top:1px solid var(--line,#d9dee5);padding-top:6px}
.vk-card-hours .hi-chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.hi-unpriced{display:grid;gap:6px;margin:10px 0;padding:10px 12px;border:1px solid var(--line,#d6dbe2);border-radius:10px}
.hi-unpriced-label{font-weight:600;overflow-wrap:anywhere}
.hi-unpriced-row{display:flex;gap:8px;align-items:stretch}
.hi-unpriced-row input{flex:1 1 0;min-width:0;min-height:44px;font-size:16px}
.hi-unpriced .btn,.hi-unpriced button{min-height:44px}
.hi-skipped{margin:8px 0}.hi-skipped-row{display:flex;justify-content:space-between;align-items:center;gap:8px;overflow-wrap:anywhere}

.app{min-height:100vh}
.brand{display:flex;gap:11px;align-items:center;padding:0 9px 28px}
.brand strong{color:var(--ink)}
.theme-charcoal .brand strong{color:var(--surface-sunk)}
.brand small{display:block;margin-top:4px;color:var(--side-ink)}
.brand-mark{width:33px;height:35px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.nav-count{margin-left:auto;display:inline-grid;place-items:center;border-radius:var(--r-sm);background:var(--focus-on-dark);color:var(--warning);font-size:var(--fs-meta);min-width:18px;height:18px}
.unread-dot{width:6px;height:6px;background:var(--accent-mark);border-radius:50%;display:block;margin-left:auto}
.sidebar-bottom{margin-top:auto;padding-top:28px}
.operator-nav{display:flex;align-items:center;width:100%;border:1px solid color-mix(in srgb,var(--line-input) 25%,transparent);background:color-mix(in srgb,var(--surface) 30%,transparent);border-radius:var(--r-sm);padding:12px 10px;gap:8px;color:var(--side-ink);margin-bottom:12px}
.operator-nav svg{width:17px}
.operator-nav kbd{margin-left:auto;opacity:.6;font-size:var(--fs-meta);white-space:nowrap}
.theme-charcoal .operator-nav{background:color-mix(in srgb,var(--surface) 4%,transparent)}
.profile{display:flex;align-items:center;border-top:1px solid color-mix(in srgb,var(--line-input) 20%,transparent);margin-top:14px;padding:19px 0;gap:10px;color:var(--side-ink)}
.profile div{flex:1}
.profile small{display:block;color:var(--side-ink)}
.theme-charcoal .sidebar .profile small,.theme-charcoal .sidebar .profile strong{color:var(--ink-3)}
a.skip-link{z-index:1000;background:var(--surface);color:var(--ink);padding:10px 18px;border:2px solid var(--ink-3);border-radius:var(--r-sm)}
a.skip-link:focus{transform:translateY(0)}
.brand strong{letter-spacing:-.035em}
.operator-nav{min-height:44px}
.install-button{min-height:44px;margin:0 0 8px;width:100%;justify-content:center}
.more-nav{display:grid;padding:0 0 6px 10px}
.profile-wrap{position:relative}
.profile-menu{position:absolute;left:0;right:0;bottom:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:6px;display:grid;gap:2px;box-shadow:var(--shadow-overlay);z-index:5}
.profile-menu .nav-item{color:var(--ink);background:transparent}
.profile-menu .nav-item:hover{background:var(--surface-sunk)}
.profile-trigger{display:flex;align-items:center;gap:10px;flex:1;min-width:0;background:none;border:0;color:inherit;text-align:left;min-height:44px;cursor:pointer;border-radius:var(--r-sm);padding:2px 4px;font:inherit}
.profile-trigger>div{flex:1;min-width:0}
.profile-trigger strong,.profile-trigger small{display:block}
.action-banner .button{margin-left:auto;min-height:48px}
.profile-trigger strong,.profile-trigger small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.profile-trigger{padding-right:0}
.app:is(h1,h2,h3){color:var(--ink)}
.operator-nav{font-size:var(--fs-body)}
.brand strong{font-size:var(--fs-heading);font-weight:800}
.brand small{font-size:var(--fs-meta)}
.brand-mark{background:var(--accent-mark);color:var(--surface);border-radius:var(--r-md)}
.profile strong{font-size:var(--fs-body);font-weight:600}
.profile small{font-size:var(--fs-meta)}
.theme-stone .brand strong,.theme-stone .profile strong{color:var(--surface)}
.theme-stone .operator-nav{background:color-mix(in srgb,var(--surface) 6%,transparent);border-color:color-mix(in srgb,var(--surface) 16%,transparent)}
.theme-stone .profile{border-top-color:color-mix(in srgb,var(--surface) 16%,transparent)}
.theme-stone .sidebar .nav-count{background:var(--focus-on-dark);color:var(--accent-hover)}
.theme-stone .sidebar .unread-dot{background:var(--accent-mark)}
.theme-stone .profile-menu .nav-item{color:var(--navy)}
.theme-stone .profile-menu .nav-item.active{color:var(--navy);box-shadow:none}
@media (max-width:760px){
.app .operator-nav,.app .profile-trigger{display:flex;align-items:center}
}
body,.app{font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}
.theme-stone :is(button,a):focus-visible{outline-color:var(--focus-on-dark)}
.app .skip-link:focus-visible{width:auto;height:auto;min-height:var(--target);padding:var(--sp-3) var(--sp-5);clip-path:none;overflow:visible;background:var(--surface);color:var(--ink);border:2px solid var(--info);border-radius:var(--r-md);font-weight:600;display:inline-flex;align-items:center;box-shadow:var(--shadow-raised)}
@media (max-width:760px){
.app .app-footer{padding-bottom:96px}
}
.app select{background-color:var(--surface)}
@media (max-width:760px){
.app .app-footer span{font-size:var(--fs-meta)}
}
body .app :is(input,textarea)::placeholder{color:var(--ink-3);opacity:1}
@media (max-width:760px){
.sidebar-bottom{bottom:0;background:var(--sidebar);padding-bottom:max(var(--sp-3),env(safe-area-inset-bottom,0px));margin-top:auto}
.sidebar .profile{margin-top:var(--sp-2);padding:var(--sp-3) 0}
}
a.skip-link{position:fixed;left:8px;transition:none}
a.skip-link:focus,a.skip-link:focus-visible{top:8px}
.app .app-footer{color:var(--ink-2)}
.app ::placeholder{color:var(--ink-3);opacity:1}
.app textarea::placeholder{white-space:normal}
.app select{appearance:none;-webkit-appearance:none;padding-right:42px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2339445c' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:16px;text-overflow:ellipsis}
.app select:disabled{opacity:1;color:var(--ink-3);background-color:var(--surface-sunk)}
.app input[type=checkbox],.app input[type=radio]{accent-color:var(--accent);width:20px;height:20px;flex:none}
.app input:not([type=checkbox]):not([type=radio]):focus-visible,.app select:focus-visible,.app textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent);box-shadow:none}
.sidebar .profile{display:grid;grid-template-columns:minmax(0,1fr);gap:2px;align-items:stretch}
.sidebar .profile-trigger{width:100%;padding:var(--sp-2) var(--sp-2);flex:none}
.sidebar .profile-trigger>svg{margin-left:auto;flex:none}
.sidebar .profile>.icon-button{display:flex;align-items:center;justify-content:flex-start;gap:var(--sp-3);width:100%;height:auto;min-height:40px;padding:0 var(--sp-2);border-radius:var(--r-sm);color:var(--info-bg)}
.sidebar .profile>.icon-button .side-label{font-size:var(--fs-meta);font-weight:600}
.sidebar .profile>.icon-button:hover{background:color-mix(in srgb,var(--surface) 10%,transparent)}
.more-nav{gap:0}
.more-nav .nav-item.sub{min-height:44px;height:auto;padding-block:var(--sp-2)}
@media (max-width:760px){
.more-nav .nav-item.sub{min-height:var(--target)}
.more-nav{padding-bottom:var(--sp-2)}
}
.offline-banner{display:flex;align-items:flex-start;gap:var(--sp-3);margin:0 0 var(--sp-5);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--warning-bg);color:var(--warning);font-size:var(--fs-meta);line-height:1.45}
.offline-banner svg{flex:none;margin-top:2px}
.offline-banner strong{color:var(--warning);font-weight:600}
.app [aria-invalid=true]{box-shadow:none}
:root .app [aria-invalid=true]{border-color:var(--danger)}
@media (max-width:760px){
.sidebar-bottom{position:static}
}
.app td small{color:var(--ink-2)}
.main-shell>.offline-banner{margin:var(--sp-4) 44px 0}
@media (max-width:760px){
.main-shell>.offline-banner{margin:var(--sp-3) var(--sp-4) 0}
}
@media (min-width:761px){
.sidebar .profile{margin-top:0;padding:var(--sp-2) 0 var(--sp-1)}
.sidebar .profile>.icon-button{min-height:36px}
.sidebar .profile-trigger{min-height:48px;padding-block:0}
.sidebar-bottom{padding-top:var(--sp-2)}
}
a.skip-link{transform:none;top:-120px;opacity:0;pointer-events:none}
a.skip-link:focus-visible{top:8px;opacity:1;pointer-events:auto;color:var(--ink);outline:var(--focus-width) solid var(--info)}
.is-tech main:has(.file-empty) .page-header .header-actions{display:none}
:is(.push-modal,.passkey-modal) .modal-head .icon-button{border-radius:var(--r-pill);background:var(--surface-sunk);color:var(--ink)}
:is(.push-modal,.passkey-modal) .button.primary{background:var(--accent);color:var(--surface);border-color:var(--accent)}
@media print{
body:has(.pa-qr-modal[open]) :is(.sidebar,.topbar,.app-footer,main,.main-shell>*){display:none}
}
.app{display:flex;min-height:100vh;background:var(--canvas)}
.main-shell{flex:1;min-width:0;min-height:100vh;display:flex;flex-direction:column;background:var(--canvas)}
.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:var(--sp-1);height:var(--appbar-h);padding:0 var(--sp-2);background:var(--canvas);border-bottom:1px solid transparent;color:var(--ink)}
.topbar.scrolled{border-bottom-color:var(--line);box-shadow:var(--shadow-raised)}
.breadcrumb{display:flex;align-items:center;gap:var(--sp-2);flex:1;min-width:0;color:var(--ink-3);font-size:var(--fs-meta);white-space:nowrap}
.breadcrumb strong{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:var(--fs-title);font-weight:600;color:var(--ink)}
.crumb-root{display:none;align-items:center;gap:var(--sp-2)}
.topbar-right{display:flex;align-items:center;gap:0;flex:none}
.mobile-menu,.appbar-back{display:inline-flex}
.demo-label,.topbar-right>.avatar{display:none}
.demo-label{align-items:center;gap:6px;font-size:var(--fs-meta);color:var(--ink-3)}
.demo-label span{width:6px;height:6px;border-radius:50%;background:var(--warning)}
.sync-wrap{position:relative;display:inline-flex}
.sync-status{display:inline-flex;align-items:center;justify-content:center;width:var(--target);height:var(--target);padding:0;border:0;border-radius:var(--r-sm);background:transparent;color:var(--ink-2)}
.sync-status:hover{background:var(--surface-sunk)}
.sync-dot{width:12px;height:12px;border-radius:50%;background:var(--success);display:block;flex:none}
.sync-status.offline .sync-dot,.sync-status.warn .sync-dot{background:var(--warning)}
.sync-status.syncing .sync-dot{background:var(--info);animation:sync-pulse 1s ease-in-out infinite}
.sync-status.pending .sync-dot{background:var(--ink-3)}
.sync-note{display:none}
@keyframes sync-pulse{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){
.sync-status.syncing .sync-dot{animation:none}
}
.sidebar{position:fixed;inset:0 auto 0 0;z-index:70;width:min(288px,86vw);display:flex;flex-direction:column;padding:var(--sp-4) var(--sp-3) 0;background:var(--navy);color:var(--focus-on-dark);overflow:auto;transform:translateX(-100%);transition:transform .18s ease}
.sidebar.open{transform:none}
.nav-backdrop{position:fixed;inset:0;z-index:60;border:0;background:var(--scrim)}
.workspace-label{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-meta);font-weight:600;color:var(--focus-on-dark)}
.nav-item{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--target);padding:0 var(--sp-3);margin:2px 0;border:0;border-radius:var(--r-md);background:none;color:var(--focus-on-dark);font-size:var(--fs-body);font-weight:600;text-align:left}
.nav-item svg{width:20px;height:20px;color:var(--focus-on-dark)}
.nav-item:hover{background:color-mix(in srgb,var(--surface) 8%,transparent)}
.nav-item.active{background:color-mix(in srgb,var(--surface) 10%,transparent);color:var(--surface)}
.nav-item.sub{min-height:var(--target);padding-left:var(--sp-4)}
.sidebar :where(button,a):focus-visible{outline-color:var(--focus-on-dark)}
.sidebar .brand strong,.sidebar .profile strong{color:var(--surface)}
.side-count{margin:var(--sp-3) var(--sp-3) 0;font-size:var(--fs-meta);color:var(--focus-on-dark)}
.sidebar .icon-button:hover{background:color-mix(in srgb,var(--surface) 10%,transparent)}
.sidebar .avatar{background:var(--ink-2);color:var(--surface)}
@media (min-width:1000px){
.sidebar{width:var(--sidebar-w);transform:none;z-index:40;padding-top:var(--sp-6)}
.main-shell{margin-left:var(--sidebar-w)}
.mobile-menu,.nav-backdrop{display:none}
.topbar{padding:0 var(--sp-8)}
.crumb-root{display:inline-flex}
.breadcrumb strong{font-size:var(--fs-meta);font-weight:600}
.demo-label,.topbar-right>.avatar{display:inline-flex}
}
@media (max-width:760px){
.topbar-right>.avatar,.demo-label{display:none}
}
@media print{
.sidebar,.topbar,.header-actions,.toast,.mascot,.hh-mascot,.weather-chip{display:none}
.main-shell{margin:0}
}

/* Restored from 18c2cb1: rules dropped by the coverage-based prune for states the captures never showed. Guarded by design_gate_static (className coverage). */
.pause-banner{padding:12px 44px;background:var(--warning-bg);color:var(--line-input);font-size:var(--fs-meta);display:flex;align-items:center;gap:9px}
.pause-banner{background:var(--accent-tint);color:var(--line-input)}
@media (max-width: 760px){.pause-banner{padding:12px 20px;font-size:var(--fs-meta);line-height:1.8}}
.sync-pop{position:absolute;top:calc(100% - var(--sp-1));right:0;z-index:60;padding:var(--sp-3) var(--sp-4);width:max-content;max-width:min(320px,calc(100vw - 2*var(--sp-4)));border-radius:var(--r-md);background:var(--navy);color:var(--surface);box-shadow:var(--shadow-overlay);font-size:var(--fs-body);white-space:normal}
.weather-credit{font-size:var(--fs-meta);color:var(--ink-3)}
@media (min-width: 1000px){.weather-credit{display:none}}

.app .app-footer{padding-left:var(--sp-4);padding-right:var(--sp-4)}
/* Lane B19: pilot end / read-only notice above every screen (PilotNotice.jsx). */
.pilot-notice{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--sp-3);margin:0 0 var(--sp-5);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--warning-bg);color:var(--ink,inherit);font-size:var(--fs-meta);line-height:1.45}
.pilot-notice>svg{flex:none;margin-top:2px;color:var(--warning)}
.pilot-notice>span{flex:1 1 220px}
.pilot-notice strong{font-weight:600}
.pilot-notice .button{flex:none;min-height:44px;text-decoration:none}
@media (max-width: 760px){.pilot-notice .button{width:100%;justify-content:center}}

/* Logout asks once (round C p5: one stray tap ended the session). */
.logout-ask{margin-top:var(--sp-2);padding:var(--sp-3);border-radius:12px;background:color-mix(in srgb,var(--side-ink) 10%,transparent);color:var(--side-ink)}
.logout-ask p{margin:0 0 var(--sp-2);font-size:.95rem}
.logout-ask-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}

.avatar.large{width:53px;height:53px;font-size:var(--fs-body);background:var(--danger-bg)}
.home-status.warning{background:var(--accent-tint)}
.decision-row:hover{background:var(--canvas)}
.soft-icon{height:38px;width:38px;border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center;background:var(--surface-sunk);color:var(--ink-3);flex-shrink:0}
.soft-icon.apricot{background:var(--accent-tint);color:var(--line-input)}
.soft-icon.sky{background:var(--neutral-bg);color:var(--line-input)}
.worker-label{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-meta)}
.worker-label .avatar{width:24px;height:24px;font-size:var(--fs-meta)}
.quiet-note{padding:27px 27px 29px;margin-bottom:24px}
.quiet-note h3{line-height:1.4;margin:14px 0 11px}
.quiet-note .button{margin-top:12px}
.tiny-dot{height:5px;width:5px;display:inline-block;border-radius:50%;background:var(--line-input);vertical-align:middle;margin-right:6px}
.table-primary{background:none;border:0;padding:0;display:flex;flex-direction:column;gap:6px;text-align:left;font-size:var(--fs-meta)}
.table-primary strong{font-weight:500}
.table-primary>span{font-size:var(--fs-meta)}
.list-foot{padding:20px 5px;font-size:var(--fs-meta);display:flex;justify-content:space-between}
.customer-link{display:flex;align-items:center;background:none;border:0;padding:0;gap:12px;text-align:left}
.customer-link strong{font-size:var(--fs-meta);font-weight:500}
.customer-link small{font-size:var(--fs-meta)}
.people-filter button>span:not(.avatar){font-size:var(--fs-meta);background:var(--surface-sunk);padding:2px 6px;border-radius:var(--r-sm)}
.people-filter .avatar{height:26px;width:26px}
.small-panel .button{margin-top:13px}
.calendar-scroll{overflow:auto;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.calendar-board{display:grid;min-width:900px}
.calendar-corner{padding:23px 15px;border-bottom:1px solid var(--line)}
.calendar-worker{display:flex;align-items:center;gap:10px;border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:17px 20px}
.calendar-worker strong{font-size:var(--fs-meta);font-weight:500}
.calendar-worker small{display:block;font-size:var(--fs-meta)}
.time-rail>div{height:69px;padding:10px 13px}
.worker-lane{height:759px;position:relative;border-left:1px solid var(--line)}
.hour-line{height:69px;border-bottom:1px solid var(--line)}
.calendar-job{position:absolute;left:9px;right:9px;padding:11px 12px;background:var(--surface-sunk);border:1px solid var(--line);border-radius:var(--r-sm);display:flex;flex-direction:column;align-items:flex-start;gap:7px;text-align:left;overflow:hidden}
.calendar-job>span:first-child{font-size:var(--fs-meta)}
.calendar-job>strong{font-weight:500;color:var(--ink-3)}
.calendar-job .badge{padding:3px 5px;margin-top:3px}
.calendar-job.tone-1{background:var(--neutral-bg);border-color:var(--neutral-bg);border-left-color:var(--line-input)}
.calendar-job.tone-1>strong{color:var(--ink-3)}
.calendar-job.tone-2{background:var(--accent-tint);border-color:var(--line);border-left-color:var(--focus-on-dark)}
.calendar-job.tone-2>strong{color:var(--ink-3)}
.calendar-foot{font-size:var(--fs-meta);display:block;margin:20px 0}
.inbox-layout{display:grid;grid-template-columns:310px minmax(0,1fr);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);min-height:610px;overflow:hidden}
.thread-list{border-right:1px solid var(--line);background:var(--surface-sunk)}
.thread-list .tabs{gap:18px;margin:0 20px;height:62px}
.thread-item{background:none;border:0;border-bottom:1px solid var(--line);padding:20px 18px;width:100%;text-align:left}
.thread-item>span:not(.avatar){flex:1}
.thread-item strong{font-size:var(--fs-meta)}
.thread-item small{line-height:1.4}
.thread-channel{display:block;margin-top:8px}
.conversation{display:flex;flex-direction:column;min-width:0}
.conversation-head{display:flex;align-items:center;gap:12px;padding:23px 26px;border-bottom:1px solid var(--line)}
.conversation-head p{font-size:var(--fs-meta);margin:5px 0 0}
.conversation-head .icon-button{margin-left:auto}
.messages{padding:27px;display:flex;flex-direction:column;flex:1;gap:25px;min-height:260px;overflow:auto;max-height:55vh}
.conversation-date{text-align:center;margin:0 0 5px}
.message{max-width:83%;align-self:flex-start}
.message>div{padding:15px 18px;border-radius:0 var(--r-md) var(--r-md);background:var(--surface-sunk);font-size:var(--fs-meta);color:var(--ink-3);line-height:1.8}
.message>small{display:block;margin:7px 3px}
.composer{margin:0 24px 23px;border:1px solid var(--line);border-radius:var(--r-md);padding:13px}
.composer textarea{width:100%;border:0;min-height:75px;padding:5px;background:none;font-size:var(--fs-meta)}
.composer small{font-size:var(--fs-meta)}
.team-grid{display:grid;gap:20px}
.person-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:26px;overflow:hidden}
.person-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}
.person-card>p{font-size:var(--fs-meta);margin:8px 0 15px}
.skill-tags{display:flex;flex-wrap:wrap;gap:6px;min-height:23px}
.skill-tags span{font-size:var(--fs-meta);background:var(--surface-sunk);border:1px solid var(--line);padding:4px 7px;border-radius:var(--r-sm)}
.person-stats{display:flex;gap:25px;border-top:1px solid var(--line);margin-top:26px;padding-top:21px}
.person-stats strong{font-size:var(--fs-heading)}
.person-stats small{display:block;font-size:var(--fs-meta);margin-top:6px}
.person-actions{display:flex;align-items:center;gap:10px;margin-top:25px}
.person-actions .button{flex:1;font-size:var(--fs-meta)}
.slim-note{padding:22px 26px;display:flex;gap:16px;align-items:flex-start;margin:28px 0;color:var(--ink-3)}
.slim-note p{font-size:var(--fs-meta);line-height:1.8;margin:6px 0 0}
.slim-note>svg{flex-shrink:0}
.file-grid{display:grid}
.file-card{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-md);overflow:hidden;position:relative}
.file-card>svg{position:absolute;right:15px;bottom:21px;color:var(--ink-3)}
.file-cover{display:flex;align-items:center;justify-content:center}
.file-cover span{position:absolute;bottom:14px;right:15px;font-size:var(--fs-meta);color:var(--ink-3)}
.file-info strong{display:block}
.file-empty{border:1px dashed var(--line);background:var(--surface-sunk);border-radius:var(--r-md);padding:45px 20px}
.file-types{text-align:center;font-size:var(--fs-meta);margin-top:10px}
.autonomy-intro{display:flex;align-items:center;gap:17px;padding:23px 25px;margin-bottom:25px}
.autonomy-intro p{font-size:var(--fs-meta);margin:7px 0 0}
.automation-list{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);padding:0 26px}
.automation-row{border-bottom:1px solid var(--line)}
.automation-row:last-child{border:0}
.automation-text{flex:1;min-width:0}
.automation-text p{line-height:1.6}
.automation-row select{font-size:var(--fs-meta)}
.outbox-heading{padding-left:2px;padding-right:2px}
.history-list{padding:5px 0 0}
.history-row{width:100%;display:flex;align-items:center;text-align:left;background:var(--surface);border:0;border-bottom:1px solid var(--line)}
.history-row time small{display:block;margin-top:6px}
.history-marker{position:relative}
.history-row>div{flex:1}
.history-row p{line-height:1.6}
.history-row>svg{color:var(--ink-3)}
.inline-result.bad{background:var(--accent-tint);color:var(--line-input)}
.operator-page{margin:0 auto;min-height:calc(100vh - 220px);display:flex;flex-direction:column}
.operator-transcript{flex:1;min-height:430px;max-height:65vh;overflow:auto;padding-bottom:25px}
.operator-welcome{text-align:center}
.operator-welcome h2{font-weight:800}
.operator-welcome p{max-width:420px;margin:13px auto 23px}
.suggestions{display:flex;flex-direction:column;max-width:380px;margin:25px auto 0}
.suggestions button{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:15px 16px;display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-meta);color:var(--ink-3)}
.operator-composer{display:flex;align-items:center;gap:15px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:13px 14px 13px 20px;box-shadow:var(--shadow-raised)}
.operator-composer textarea{flex:1;border:0;min-height:25px;padding:5px 0;resize:none;font-size:var(--fs-meta)}
.operator-composer>button{border:0;color:var(--accent-tint);display:grid;place-items:center}
.operator-disclaimer{text-align:center}
.operator-message{display:flex;gap:12px;margin:20px 0;max-width:90%}
.operator-message>div{border-radius:var(--r-md);padding:14px 19px;background:var(--surface-sunk);flex:1}
.operator-message p{font-size:var(--fs-meta);line-height:1.8;margin:0;white-space:pre-line}
.operator-message small{font-size:var(--fs-meta);margin-top:11px;display:block}
.operator-message.user{margin-left:auto;max-width:75%}
.operator-message.user>div{background:var(--neutral-bg)}
.operator-message.user p{color:var(--line-input)}
.operator-message.error>div{background:var(--accent-tint)}
.thinking{font-size:var(--fs-meta);color:var(--ink-3);padding:20px}
.settings-layout{margin-top:28px}
.settings-form{padding:28px}
.theme-fieldset{border:0;margin:10px 0;padding:0}
.theme-fieldset legend{font-size:var(--fs-meta);margin-bottom:16px}
.theme-options label{justify-content:center;flex:1}
.theme-options input{position:absolute;opacity:0;width:1px}
.theme-swatch{display:inline-block}
.connections{border-radius:var(--r-md)}
.connection-row:last-child{border:0}
.connection-row>div{flex:1}
.capability-page>.panel{padding:25px}
.onboarding-steps{display:flex;border-bottom:1px solid var(--line);margin:5px 0 35px;gap:30px}
.onboarding-steps button{display:flex;align-items:center;gap:9px;background:none;border:0;border-bottom:2px solid transparent;padding:14px 0;font-size:var(--fs-meta)}
.onboarding-steps button span{width:22px;height:22px;border-radius:50%;background:var(--surface-sunk);display:grid;place-items:center;font-size:var(--fs-meta)}
.onboarding-steps button.active{border-color:var(--line-input);color:var(--ink-3)}
.onboarding-intro{max-width:660px;margin:40px auto;text-align:center;padding:40px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}
.onboarding-intro>.soft-icon{height:62px;width:62px;border-radius:var(--r-lg);margin:0 auto 25px}
.onboarding-intro h2{font-size:var(--fs-display);font-weight:800}
.onboarding-intro p{font-size:var(--fs-meta);line-height:1.9;max-width:460px;margin:16px auto}
.onboarding-intro .form-actions{justify-content:center}
.import-preview .button{margin-top:20px}
.completion-note{display:flex;gap:12px;background:var(--surface-sunk);border:1px solid var(--line);border-radius:var(--r-md);padding:21px;margin:17px 0;color:var(--ink-3)}
.completion-note h3{font-size:var(--fs-body);color:var(--ink-3)}
.completion-note p{font-size:var(--fs-meta);color:var(--ink-3)}
.completion-note small{display:block;font-size:var(--fs-meta);color:var(--ink-3)}
.completion-note svg{flex-shrink:0}
.receipt-link{background:var(--surface-sunk);border:1px solid var(--line);border-radius:var(--r-sm);display:flex;align-items:center;gap:12px;padding:13px;width:100%;font-size:var(--fs-meta);color:var(--ink-3);margin-top:14px}
.receipt-link svg{margin-left:auto}
.customer-hero{text-align:center;padding:12px 0 20px}
.customer-metrics{display:flex;padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.customer-metrics .metric{flex:1;padding:0 18px}
.customer-metrics .metric strong{font-size:var(--fs-heading)}
.customer-job{display:flex;justify-content:space-between;align-items:center;padding:18px 0;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;width:100%}
.customer-job strong{font-size:var(--fs-meta)}
.customer-job small{display:block;font-size:var(--fs-meta);margin-top:6px}
.mini-event{display:flex;gap:10px;padding:15px 0;font-size:var(--fs-meta)}
.mini-event svg{color:var(--ink-3)}
.mini-event small{display:block;font-size:var(--fs-meta);color:var(--ink-3);margin-top:5px}
.customer-note{padding:17px;background:var(--surface-sunk);border-radius:var(--r-sm);font-size:var(--fs-meta);color:var(--ink-3);margin-top:15px}
.invoice-preview{text-align:center;border-radius:var(--r-md);padding:28px;margin-bottom:22px}
.invoice-preview h3{font-size:var(--fs-body);margin:15px 0}
.invoice-preview>strong{font-size:var(--fs-hero);letter-spacing:-.05em;display:block;margin:16px 0}
.invoice-preview p{font-size:var(--fs-meta)}
.invoice-lines>div{display:flex;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line)}
.invoice-lines small{display:block;margin-top:5px}
.invoice-actions{margin-top:30px}
.decision-title{font-size:var(--fs-display);line-height:1.3;margin:22px 0 14px}
.reply-preview{padding:24px;background:var(--surface-sunk);border-radius:var(--r-md);margin:23px 0;font-size:var(--fs-body);color:var(--ink-3);line-height:1.9}
.hash-text{overflow-wrap:anywhere;font:var(--fs-meta) ui-monospace,monospace;line-height:1.9}
.quote-line-header,.quote-line-input{display:grid;grid-template-columns:minmax(0,3fr) .8fr 1fr .7fr 30px;gap:9px;align-items:center}
.quote-line-header{font-size:var(--fs-meta);color:var(--ink-3);margin-bottom:9px}
.quote-line-input{margin-bottom:14px}
.quote-line-input input{width:100%;padding:9px;font-size:var(--fs-meta);min-width:0}
.ql-field{display:flex;flex-direction:column;gap:4px;min-width:0;margin:0}
.ql-cap{display:none;font-size:var(--fs-meta);color:var(--ink-3);font-weight:600}
.login-page{min-height:100vh;display:flex;background:var(--surface-sunk);position:relative;overflow:hidden}
.login-brand{top:40px;left:45px;display:flex;gap:11px;align-items:center;font-size:var(--fs-heading);letter-spacing:-.055em}
.login-card{position:relative;z-index:2;text-align:center;padding:65px;max-width:600px}
.login-card h1{font-size:var(--fs-hero);font-weight:400;letter-spacing:-.055em;color:var(--ink-3);line-height:1.1;margin:24px 0}
.login-card>p{font-size:var(--fs-body);margin:0 auto;max-width:380px;line-height:1.9}
.demo-roles{display:flex;flex-direction:column;gap:10px;margin:34px auto 18px;max-width:330px}
.demo-roles>.button{min-height:var(--target);font-size:var(--fs-meta)}
.role-pair{display:flex;gap:10px}
.role-pair .button{flex:1}
.login-card form{text-align:left;max-width:360px;margin:30px auto}
.metric>span,.metric>small,.section-title p,.worker-label,.list-foot,.inline-note,.table-primary>span,td small,th,.muted,.file-types,.operator-disclaimer,.operator-message small,.thread-item small,.thread-channel,.conversation-date,.message>small,.composer small,.field small,.calendar-foot,.automation-text p,.autonomy-intro p,.quiet-note p,.connection-row p,.onboarding-intro p,.onboarding-steps button,.calendar-job>small,.calendar-job>span:first-child,.person-card>p,.skill-tags span,.person-stats small,.detail-facts>div>span,.detail-section>p,.file-info p,.file-info small,.operator-welcome p,.operator-disclaimer,.login-card>p{color:var(--ink-3)}
.field>label,.table-primary,.customer-link,.history-row strong,.automation-text h3,.detail-facts strong,.detail-facts a,.customer-job strong,.invoice-lines strong,.operator-message p{color:var(--ink-2)}
.operator-welcome h2,.onboarding-intro h2,.decision-title,.invoice-preview h3,.invoice-preview>strong,.quiet-note h3,.person-stats strong,.customer-hero h2{color:var(--ink-2)}
@media (max-width:760px){
.toolbar,.theme-options{flex-wrap:wrap}
.inbox-layout{grid-template-columns:225px 1fr}
.thread-item .avatar{width:26px;height:26px}
.quote-line-header{grid-template-columns:minmax(0,2fr) .7fr 1fr .7fr 25px}
.settings-layout .quiet-note{max-width:none}
.list-foot{font-size:var(--fs-meta);gap:15px}
.people-filter .avatar{width:24px;height:24px}
.calendar-worker{padding:15px}
.calendar-board{min-width:850px}
.calendar-foot{font-size:var(--fs-meta);line-height:1.8}
.inbox-layout{flex-direction:column;min-height:650px}
.thread-list .tabs{height:44px;margin:0 16px;gap:22px;top:0;background:var(--surface-sunk);z-index:2}
.thread-item{padding:13px 16px}
.thread-item strong{font-size:var(--fs-meta)}
.thread-channel{display:none}
.conversation{min-height:430px}
.conversation-head{padding:17px 20px}
.conversation-head .avatar{width:36px;height:36px;font-size:var(--fs-meta)}
.conversation-head p{font-size:var(--fs-meta)}
.messages{min-height:170px;padding:22px 18px;gap:20px;max-height:360px}
.message{max-width:88%}
.message>div{font-size:var(--fs-meta);padding:14px}
.composer{margin:0 15px 16px;padding:11px}
.composer textarea{font-size:var(--fs-meta);min-height:60px}
.composer small{font-size:var(--fs-meta);max-width:160px}
.team-grid{gap:17px}
.person-card{padding:23px}
.person-top{margin-bottom:17px}
.person-stats{gap:40px}
.person-actions .button{max-width:220px;flex:1}
.slim-note{padding:19px;gap:12px}
.slim-note p{font-size:var(--fs-meta)}
.file-card>svg{bottom:15px;right:12px;width:14px}
.file-info small{display:none}
.file-empty{padding:35px 10px}
.autonomy-intro{padding:19px;gap:13px}
.autonomy-intro p{font-size:var(--fs-meta);line-height:1.8}
.automation-list{padding:0 18px}
.automation-text p{max-width:230px}
.automation-row select{font-size:var(--fs-meta);padding:9px}
.outbox-heading h2{font-size:var(--fs-body)}
.outbox-heading .button{padding:9px 11px;font-size:var(--fs-meta)}
.operator-page{min-height:calc(100dvh - 180px)}
.operator-page .page-header{display:block}
.operator-transcript{min-height:380px;max-height:65vh}
.suggestions button{font-size:var(--fs-meta);padding:14px}
.operator-composer{padding:12px}
.operator-composer textarea{font-size:var(--fs-meta)}
.operator-message{max-width:100%;gap:9px}
.operator-message .soft-icon{height:28px;width:28px;border-radius:var(--r-sm)}
.operator-message>div{padding:12px 15px}
.operator-message p,.operator-message small{font-size:var(--fs-meta)}
.operator-message.user{max-width:86%}
.settings-form{padding:22px 18px}
.theme-options label{min-width:75px}
.connection-row{flex-wrap:wrap}
.connection-row>.soft-icon{height:30px;width:30px}
.connection-row>.badge{margin-left:42px}
.onboarding-steps{gap:14px;margin-bottom:25px}
.onboarding-steps button{font-size:var(--fs-meta);gap:6px;align-items:flex-start;line-height:1.6}
.onboarding-steps button span{width:20px;height:20px;flex-shrink:0}
.onboarding-intro{margin:20px 0;padding:30px 20px}
.onboarding-intro h2{font-size:var(--fs-display)}
.onboarding-intro p{font-size:var(--fs-meta)}
.onboarding-intro .form-actions{flex-direction:column}
.onboarding-intro .form-actions .button{width:100%}
.detail-section p{font-size:var(--fs-meta)}
.quote-line-header{display:none}
.quote-line-input{grid-template-columns:1fr 1fr 1fr 26px;gap:8px;padding-bottom:15px;border-bottom:1px solid var(--line)}
.quote-line-input>.ql-field:first-child{grid-column:1/5}
.ql-cap{display:block}
.quote-line-input input{font-size:var(--fs-body)}
.invoice-preview>strong{font-size:var(--fs-display)}
.invoice-actions .button{min-height:var(--target)}
.decision-title{font-size:var(--fs-heading)}
.login-brand{top:27px;left:25px;font-size:var(--fs-heading)}
.login-card{padding:50px 26px;max-width:480px}
.login-card h1{font-size:var(--fs-hero)}
.login-card>p{font-size:var(--fs-meta);max-width:290px}
.demo-roles{margin-top:30px}
.demo-roles>.button{min-height:48px}
.role-pair .button{min-height:var(--target)}
.login-page{min-height:100dvh}
}
@media print{
.app-footer,.command-invite{display:none}
}
.slot-finder>.button{margin-top:8px}
.followthrough{align-items:center}
.followthrough>.button{flex-shrink:0;margin-left:auto}
@media (max-width:760px){
.followthrough{flex-wrap:wrap}
.followthrough>.button{margin-left:0}
}
.calendar-corner,.time-rail>div,.calendar-job>span:first-child,.calendar-job>small,.calendar-job.tone-1>small,.calendar-job.tone-1>span:first-child,.calendar-job.tone-2>small,.calendar-job.tone-2>span:first-child{color:var(--ink-2)}
.calendar-job .badge,.time-rail>div,.calendar-corner,.calendar-job>strong,.calendar-job>small{font-size:var(--fs-meta)}
.mobile-job-cards{display:none}
@media (max-width:760px){
.jobs-desktop{display:none}
.mobile-job-cards{display:grid;gap:12px}
.mobile-record-facts .avatar{width:22px;height:22px;font-size:var(--fs-meta)}
}
.operator-v3{max-width:1120px;margin:auto}
.operator-mode{display:flex;justify-content:space-between;align-items:flex-start;color:var(--ink-3);font-size:var(--fs-meta)}
.operator-mode>span{display:flex;gap:8px;align-items:center}
.operator-mode details{max-width:410px}
.operator-controls{padding:18px;background:var(--surface,var(--surface));border:1px solid var(--line);border-radius:var(--r-md);margin-top:12px;line-height:1.6}
.operator-controls p{margin:10px 0 18px}
.operator-controls small{display:block}
.operator-mode summary,.available-tools summary{cursor:pointer}
.operator-v3 .operator-transcript{overflow-y:auto;overscroll-behavior:contain}
.operator-v3 .operator-message{margin:0 0 24px}
.operator-v3 .operator-message.user{margin-bottom:16px}
.operator-v3 .operator-message p{white-space:pre-wrap;overflow-wrap:anywhere}
.operator-answer{min-width:0;flex:1}
.operator-error{display:flex;justify-content:space-between;align-items:center;gap:16px}
.conversation-picker{padding:20px 24px;background:var(--surface,var(--surface));border:1px solid var(--line);border-radius:var(--r-lg);margin-bottom:20px}
.conversation-picker>p{font-size:var(--fs-body);color:var(--ink-3);margin-bottom:14px}
.conversation-choice{display:flex;align-items:center;width:100%;text-align:left;gap:12px;padding:12px;background:transparent;border:0;border-bottom:1px solid var(--line);cursor:pointer;color:inherit}
.conversation-choice span{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conversation-choice.active{background:var(--neutral-bg)}
.conversation-choice small{color:var(--ink-3)}
.conversation-picker>.button{margin-top:18px}
.available-tools{margin:30px auto 0;text-align:left;max-width:500px;font-size:var(--fs-body);color:var(--ink-3)}
.available-tools p{margin:12px 0}
.available-tools>div{display:flex;flex-wrap:wrap;gap:8px}
.available-tools>div>span{padding:5px 9px;border:1px solid var(--line);border-radius:var(--r-sm)}
.record-sources{display:flex;flex-wrap:wrap;gap:8px;margin-top:15px}
.record-sources button{display:flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface,var(--surface));border-radius:var(--r-sm);padding:9px 12px;font:inherit;cursor:pointer;color:inherit;max-width:100%}
.record-sources button span{overflow:hidden;text-overflow:ellipsis}
.record-sources button:hover{border-color:var(--line-input)}
.operator-plan{background:var(--surface,var(--surface));border:1px solid var(--line);border-radius:var(--r-lg);margin:20px 0;padding:20px 24px;max-width:760px}
.plan-heading{display:flex;gap:12px;align-items:center}
.plan-heading>div{flex:1}
.plan-heading small{font-size:var(--fs-meta);color:var(--ink-3)}
.plan-heading h3{font-size:var(--fs-title);margin:4px 0}
.plan-heading .badge{font-size:var(--fs-meta)}
.plan-step{margin-top:20px}
.plan-changes{margin:12px 0;font-size:var(--fs-body)}
.plan-changes>div{display:grid;grid-template-columns:minmax(110px,30%) minmax(0,1fr);gap:16px;padding:9px 0;border-bottom:1px solid var(--line)}
.plan-changes dt{color:var(--ink-3)}
.plan-changes dd{margin:0;overflow-wrap:anywhere}
.before-value{color:var(--ink-3)}
.change-arrow{display:inline-block;margin:0 9px;color:var(--ink-3)}
.plan-note{color:var(--ink-3)}
:root .plan-note{font-size:var(--fs-meta);margin:12px 0}
.plan-origin{display:flex;gap:8px;align-items:flex-start;margin:12px 4px;padding:10px 12px;border-radius:12px;background:var(--surface-2,#f3efe7);color:var(--ink-2,#3a3a36);font-size:var(--fs-meta);line-height:1.45}
.plan-origin svg{flex:none;margin-top:2px}
.plan-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:20px}
.plan-actions small{width:100%;font-size:var(--fs-meta);color:var(--ink-3)}
.applied-note{font-size:var(--fs-body);display:flex;align-items:flex-start;gap:8px;background:var(--surface-sunk);padding:12px;border-radius:var(--r-sm)}
.plan-applied{border-color:var(--line)}
.model-connection .field{max-width:430px}
.advanced-automations>summary{font-size:var(--fs-body)}
@media (max-width:760px){
.operator-v3 .header-actions{gap:8px}
.operator-plan{padding:16px}
.plan-changes>div{grid-template-columns:1fr;gap:4px}
.operator-mode{font-size:var(--fs-meta)}
.operator-controls{max-width:260px}
.plan-heading{flex-wrap:wrap}
.operator-v3 .operator-composer{z-index:4}
.operator-error{flex-direction:column;align-items:flex-start}
.conversation-choice small{display:none}
}
.operator-mode .tiny-dot.quiet{background:var(--line-input)}
.bv-avatar{position:relative;width:100%;aspect-ratio:1/1;isolation:isolate;border-radius:50%;overflow:hidden;contain:layout paint;outline:none;touch-action:manipulation;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
.bv-avatar[role=img]{cursor:default}
.bv-avatar:focus-visible{outline:3px solid var(--accent-mark);outline-offset:4px}
.bv-avatar-canvas,.bv-avatar-poster{position:absolute;inset:0;display:block;width:100%;height:100%;aspect-ratio:1/1;object-fit:contain;border-radius:50%;pointer-events:none}
.bv-avatar-poster{opacity:0}
.bv-avatar[data-loaded=true] .bv-avatar-poster{opacity:1}
.bv-avatar[data-loaded=true]:not([data-fallback=true]) .bv-avatar-poster{opacity:0}
.bv-avatar[data-fallback=true] .bv-avatar-canvas{display:none}
@media (prefers-reduced-motion:reduce){
.bv-avatar{scroll-behavior:auto}
}
.bvc-chat-layout{display:grid;align-items:start}
.bvc-chat-layout.bvc-no-panel{grid-template-columns:minmax(0,1fr)}
.bvc-chat-main{min-width:0}
.bvc-panel{border:1px solid var(--line,var(--line));text-align:center;position:sticky}
.bvc-kicker{display:flex;justify-content:space-between;align-items:center}
.bvc-kicker button{border:0;background:none;color:var(--ink-3);cursor:pointer;padding:4px}
.bvc-portrait-ring{border:1px solid var(--line);padding:5px;border-radius:50%;margin:22px auto;width:100%;max-width:240px;aspect-ratio:1}
.bvc-avatar-host{position:relative;isolation:isolate}
.bvc-render-host{width:100%;aspect-ratio:1}
.bvc-static-fallback{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;border-radius:50%;background:var(--surface-sunk)}
.bvc-load-error{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);white-space:nowrap;padding:5px 8px;border-radius:var(--r-sm);background:var(--surface)}
.bvc-panel h2{letter-spacing:-.4px;margin:0 0 8px}
.bvc-panel>p{line-height:1.5;margin:0}
.bvc-state{display:inline-flex;align-items:center;gap:6px;margin-top:15px;border:1px solid var(--line);border-radius:var(--r-sm);max-width:100%}
.bvc-state i{width:5px;height:5px;background:currentColor;border-radius:50%;flex:none}
.bvc-state.bvc-active{background:var(--neutral-bg);border-color:var(--neutral-bg)}
.bvc-state.bvc-attention,.bvc-state.bvc-error{background:var(--accent-tint);border-color:var(--line)}
.bvc-choices{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:var(--r-sm);padding:4px}
.bvc-choices button{display:flex;align-items:center;justify-content:center;border:0;border-radius:var(--r-sm);padding:7px 3px;font:inherit;background:none;cursor:pointer}
.bvc-choices img{border-radius:50%;object-fit:contain}
.bvc-choices [aria-pressed=true]{background:var(--surface);color:var(--ink-2);box-shadow:var(--shadow-raised)}
.bvc-shortcuts{display:flex;justify-content:space-around;margin-top:19px}
.bvc-shortcuts button{display:flex;align-items:center;gap:4px;border:0;background:transparent;cursor:pointer;font:inherit;padding:8px 0}
.bvc-panel>small{display:block;margin-top:9px}
.bvc-message-avatar{border-radius:50%;object-fit:contain;flex:none}
.bvc-welcome-portrait{width:73px;height:73px;border-radius:50%;margin-bottom:12px;border:3px solid var(--surface);box-shadow:none}
.bvc-save-error{margin:0 0 12px}
.bvc-studio{border:0;border-radius:var(--r-lg);color:var(--ink);width:1020px;max-width:calc(100vw - 40px);max-height:calc(100dvh - 40px);padding:0;overflow:hidden;box-shadow:var(--shadow-overlay)}
.bvc-studio::backdrop{background:color-mix(in srgb,var(--ink) 38%,transparent);backdrop-filter:blur(5px)}
.bvc-studio-shell{max-height:calc(100dvh - 40px);display:flex;flex-direction:column}
.bvc-studio header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:23px 30px;border-bottom:1px solid var(--line)}
.bvc-studio header h2{margin:7px 0;letter-spacing:-.6px}
.bvc-studio header p{margin:0}
.bvc-studio-body{overflow:auto;display:grid;grid-template-columns:330px minmax(0,1fr);gap:28px;padding:28px 30px}
.bvc-preview{text-align:center;padding:12px 5px}
.bvc-preview-circle{width:100%;max-width:300px;border-radius:50%;border:1px solid var(--line);padding:5px;margin:0 auto 21px;aspect-ratio:1}
.bvc-preview h3{margin:0 0 8px;letter-spacing:-.3px}
.bvc-preview>p{margin:0}
.bvc-preview>div:not(.bvc-preview-circle){display:flex;justify-content:center;gap:8px;margin-top:22px}
.bvc-preview>small{display:block;line-height:1.6;margin:17px auto 0;max-width:230px}
.bvc-export{display:block;margin:8px auto 0;background:none;border:0;padding:10px;cursor:pointer}
.bvc-options fieldset{border:0;padding:0;margin:0 0 24px;min-width:0}
.bvc-options legend{font-weight:600;margin-bottom:12px;display:flex;width:100%;justify-content:space-between}
.bvc-options legend span{font-weight:400}
.bvc-character-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.bvc-character-options button{background:var(--surface);display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:var(--r-sm);padding:10px;font:inherit;cursor:pointer;text-align:left}
.bvc-character-options button img{border-radius:50%}
.bvc-character-options button svg{margin-left:auto;opacity:0}
.bvc-character-options [aria-pressed=true] svg{opacity:1}
.bvc-expressions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.bvc-expressions button{display:flex;flex-direction:column;align-items:center;gap:7px;padding:9px 4px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface);font:inherit;cursor:pointer}
.bvc-expressions img{border-radius:50%;aspect-ratio:1}
.bvc-expressions [aria-pressed=true]{color:var(--ink-3)}
.bvc-preferences label,.bvc-color-setting{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:12px 0;border-top:1px solid var(--line)}
.bvc-preferences small{display:block;line-height:1.6;font-weight:400;margin-top:3px}
.bvc-preferences input[type=range]{width:150px}
.bvc-preferences input[type=checkbox]{accent-color:var(--line-input);width:17px;height:17px}
.bvc-color-setting>div{display:flex;gap:7px}
.bvc-color-setting button{border:3px solid var(--surface);box-shadow:none;border-radius:50%;cursor:pointer}
.bvc-color-setting [aria-pressed=true]{box-shadow:none}
.bvc-device-note{line-height:1.7;margin-top:-7px}
.bvc-studio footer{padding:17px 30px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px}
.bvc-studio footer>button{border:0;background:none;cursor:pointer}
.bvc-studio footer>div{display:flex;gap:8px}
.bvc-studio button:focus-visible,.bvc-panel button:focus-visible{outline:2px solid var(--line-input);outline-offset:3px}
@media (max-width:760px){
.bvc-studio-body{grid-template-columns:280px minmax(0,1fr);gap:20px}
:root .bvc-character-options img{width:27px;height:27px}
.bvc-character-options svg{display:none}
.bvc-studio{margin:0;border-radius:0;max-width:100vw;width:100vw;max-height:100dvh;height:100dvh}
.bvc-studio-shell{max-height:100dvh;height:100dvh}
.bvc-studio header{padding:18px 20px}
.bvc-studio header p{max-width:230px;line-height:1.6}
.bvc-studio-body{display:block;padding:8px 20px 20px}
.bvc-preview{padding:5px 0 25px}
.bvc-preview-circle{width:206px;margin-top:10px;margin-bottom:15px}
.bvc-preview>div:not(.bvc-preview-circle){margin-top:15px}
.bvc-options{border-top:1px solid var(--line);padding-top:20px}
.bvc-character-options button{padding:10px}
.bvc-studio footer{padding:13px 20px;flex-shrink:0}
.bvc-color-setting small{max-width:170px}
.bvc-preferences input[type=range]{width:140px}
}
.bvc-panel .bvc-portrait-ring,.bvc-studio .bvc-preview-circle{border-color:color-mix(in srgb,var(--bvc-accent,var(--accent-mark)) 45%,var(--line))}
.bvc-character-options [aria-pressed=true],.bvc-expressions [aria-pressed=true]{border-color:var(--bvc-accent,var(--accent-mark));background:color-mix(in srgb,var(--bvc-accent,var(--accent-mark)) 9%,var(--surface))}
.bvc-preferences input[type=range]{accent-color:var(--bvc-accent,var(--accent-mark))}
.bvc-character-options [aria-pressed=true] svg{color:var(--bvc-accent,var(--accent-mark))}
.service-owner-summary{margin:18px 0 28px}
.service-owner-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}
.service-owner-grid>div{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-sunk);padding:14px;display:grid;gap:5px}
.service-owner-grid strong{font-size:var(--fs-heading);font-variant-numeric:tabular-nums}
.service-owner-grid span{font-size:var(--fs-meta);color:var(--ink-3);line-height:1.45}
.onboarding-entry{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:18px 0;padding:18px 20px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.entry-mode-buttons{display:flex;gap:8px}
.entry-mode-buttons .button.selected{background:var(--surface-sunk);border-color:var(--line-input)}
.service-finance{margin-top:24px}
.service-finance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:18px}
.service-finance-grid>section{border:1px solid var(--line);border-radius:var(--r-md);padding:16px;min-width:0}
.service-finance-grid h3{margin-bottom:7px}
.service-finance-grid textarea{width:100%}
.field-evidence{margin-top:18px}
.field-evidence .section-title{align-items:flex-start}
.evidence-target{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 12px;border-radius:var(--r-sm);background:var(--surface-sunk);color:var(--ink-2)}
.field-evidence .tabs{margin:15px 0}
.manual-report{display:grid;gap:13px;padding:15px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk)}
.manual-report .button{justify-self:start}
.capture-row-actions{display:flex;flex-wrap:wrap;gap:8px}
.capture-queue{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.capture-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.capture-row>div:first-child{min-width:0;display:grid;gap:4px}
.capture-row small{overflow-wrap:anywhere}
.capture-row-actions{grid-column:1/-1}
.privacy-note{display:block;margin-top:14px}
.field-evidence button,.service-finance button,.onboarding-entry button{min-height:var(--target);min-width:44px}
@media (max-width:760px){
.service-owner-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.onboarding-entry{align-items:stretch;flex-direction:column}
.entry-mode-buttons{display:grid;grid-template-columns:1fr 1fr}
.service-finance-grid,.capture-row{grid-template-columns:1fr}
.capture-row-actions{display:grid;grid-template-columns:1fr 1fr}
.capture-row-actions .button{width:100%}
}
@media (max-width:480px){
.service-owner-grid,.capture-row-actions{grid-template-columns:1fr}
.field-evidence{padding:12px}
.capture-buttons .button{width:100%}
}
.review-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;padding:13px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface)}
.review-fields .field{margin:0}
.review-fields .field input,.review-fields .field textarea{width:100%;min-height:44px}
.field-evidence .checkbox-label,.field-evidence .field input{min-height:44px}
@media (max-width:760px){
.review-fields{grid-template-columns:1fr}
.field-evidence .section-title{min-width:0;flex-wrap:wrap}
.field-evidence .section-title>div,.field-evidence .tabs,.field-evidence .capture-row-actions,.field-evidence .capture-row-actions>*{min-width:0}
}
@media (prefers-contrast:more){
.service-owner-grid>div,.service-finance-grid>section,.field-evidence,.capture-action,.manual-report,.onboarding-entry{border:2px solid currentColor}
.service-owner-grid span,.privacy-note{color:var(--ink)}
}
@media (prefers-contrast:forced){
.service-owner-grid>div,.service-finance-grid>section,.field-evidence,.capture-action,.manual-report,.onboarding-entry{border-color:ButtonText;background:ButtonFace;color:ButtonText}
}
.connection-truth-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.connection-truth-grid>div{display:grid;gap:5px}
@media (max-width:760px){
.connection-truth-grid{grid-template-columns:1fr}
}
.finance-subpanel{display:grid;gap:14px;margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk)}
.finance-subpanel h3{margin-bottom:5px}
.finance-mappings{display:grid;gap:10px;border:1px solid var(--line);border-radius:var(--r-sm);padding:12px}
.finance-mappings legend{font-size:var(--fs-body);font-weight:600;padding:0 5px}
.finance-mappings .field{margin:0}
.completion-pack section+section{margin-top:22px}
.portal-photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.portal-photo-grid figure{padding:10px;border:1px solid var(--line)}
.portal-photo-grid img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-sm)}
@media (max-width:760px){
.bank-row .capture-row-actions .button{width:100%}
.portal-photo-grid{grid-template-columns:1fr}
}
.service-value-panel{padding-bottom:4px}
.service-value-panel .section-title{padding-bottom:16px}
.service-value-panel .section-title h3{display:flex;align-items:center;gap:8px}
.service-value-panel .section-title p{max-width:430px}
.service-panel-error{margin:0 24px 14px}
.service-loading{padding:0 24px 20px}
.service-value-add{margin:0 24px 18px;padding:17px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk)}
.service-value-add h4{margin:0 0 13px;font-size:var(--fs-meta);font-weight:600;color:var(--ink-2)}
.site-equipment{border-top:1px solid var(--line);padding:18px 24px 20px}
.site-equipment-head{margin-bottom:13px}
.site-equipment-head strong{font-size:var(--fs-meta);font-weight:600}
.site-equipment-head small{display:block;margin-top:4px}
.site-equipment-head svg{margin-top:1px;flex:none}
.equipment-card{border:1px solid var(--line);border-radius:var(--r-md);padding:15px 16px;margin-top:10px;background:var(--surface)}
.equipment-card-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start}
.equipment-card h4{font-size:var(--fs-body);font-weight:600;margin:0}
.equipment-card p{margin:5px 0 0;line-height:1.5}
.equipment-meta{display:flex;flex-wrap:wrap;gap:18px;padding:12px 0;border-bottom:1px solid var(--line);margin-bottom:12px}
.equipment-meta span{display:flex;flex-direction:column;gap:3px;font-size:var(--fs-meta);color:var(--ink-3)}
.equipment-meta strong{font-size:var(--fs-meta);color:var(--ink-3);font-weight:600}
.equipment-history>strong{font-size:var(--fs-meta);color:var(--ink-3)}
.equipment-event{display:flex;gap:8px;margin-top:10px;color:var(--ink-3)}
.equipment-event>svg{margin-top:2px;flex:none}
.equipment-event b{font-size:var(--fs-meta);font-weight:600;color:var(--ink-3)}
.equipment-event span{font-size:var(--fs-meta)}
.equipment-event small{display:block;color:var(--ink-3);margin-top:3px;line-height:1.5}
.equipment-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.service-value-form{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}
.service-value-form .form-actions{margin-top:12px}
.attention-panel{margin-top:24px}
.attention-card{border-top:1px solid var(--line);padding:18px 24px}
.attention-card-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start}
.attention-card h4{font-size:var(--fs-meta);font-weight:600;margin:0;color:var(--ink-2)}
.attention-card p{font-size:var(--fs-meta);line-height:1.55;margin:6px 0 0;max-width:690px}
.attention-evidence{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.attention-evidence strong{color:var(--ink-3);font-size:var(--fs-meta)}
.attention-controls{align-items:center;margin-top:14px}
.attention-controls .button{min-height:var(--target);padding:8px 11px;font-size:var(--fs-meta)}
@media (max-width:760px){
.service-value-panel .section-title,.site-equipment,.attention-card{padding-left:16px;padding-right:16px}
.service-value-add{margin-left:16px;margin-right:16px}
.equipment-card-head,.attention-card-head{display:block}
.equipment-card-head .badge,.attention-card-head .badge{margin-top:9px}
.equipment-meta{gap:12px}
.attention-controls{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.attention-controls .button{min-width:0;width:100%;flex:none;white-space:normal;overflow-wrap:anywhere;padding:8px 6px;line-height:1.3}
.attention-controls .button span{min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:center}
.service-value-form .form-grid{grid-template-columns:1fr}
}
.operator-page{max-width:1240px}
.operator-v3 .page-header{display:flex;align-items:flex-start;gap:24px;margin-bottom:24px}
.operator-v3 .page-header h1{font-size:var(--fs-display);max-width:720px;letter-spacing:-.04em;color:var(--ink)}
.operator-page .header-actions{justify-content:flex-end;flex-wrap:wrap;margin-top:0}
.operator-v3 .page-header p{font-size:var(--fs-body);color:var(--ink-3);max-width:650px}
.bvc-chat-layout{grid-template-columns:minmax(0,1fr) 270px;gap:24px}
.bvc-chat-main{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:0 24px 14px;box-shadow:var(--shadow-raised)}
.bvu-colleague-bar{display:flex;align-items:center;justify-content:space-between;padding:20px 0 16px;border-bottom:1px solid var(--line)}
.bvu-colleague-identity{display:flex;gap:12px;align-items:center}
.bvu-colleague-identity>img{width:46px;height:46px;border-radius:50%}
.bvu-colleague-identity strong{font-size:var(--fs-body);font-weight:800;color:var(--ink)}
.bvu-colleague-identity strong span{font-size:var(--fs-meta);color:var(--ink-3);font-weight:400}
.bvu-colleague-identity small{display:block;font-size:var(--fs-meta);color:var(--ink-3);margin-top:3px}
.bvu-colleague-bar>button{display:grid;place-items:center;width:40px;height:40px;border:0;background:transparent;border-radius:var(--r-sm);color:var(--ink-3)}
.operator-mode{margin:0;padding:12px 0;border-bottom:1px solid var(--line);gap:12px}
.operator-mode>span{font-size:var(--fs-meta);color:var(--ink-3)}
.operator-mode details{margin:0}
.operator-mode summary{font-size:var(--fs-meta);color:var(--ink-3)}
.operator-v3 .operator-transcript{min-height:340px;max-height:calc(100dvh - 430px);padding:22px 0 14px;scrollbar-width:thin}
.operator-welcome{padding:24px 12px 20px}
.operator-welcome h2{font-size:var(--fs-display);color:var(--ink);letter-spacing:-.035em}
.operator-welcome p{color:var(--ink-3);font-size:var(--fs-body)}
.operator-welcome .bvc-welcome-portrait{display:none}
.suggestions{gap:10px}
.suggestions>button{font-size:var(--fs-body);min-height:48px;color:var(--ink-2);background:var(--surface-sunk);border-color:var(--line)}
.operator-v3 .operator-message{gap:10px;margin-bottom:22px;max-width:100%}
.operator-v3 .operator-message>div{background:var(--surface-sunk);padding:14px 17px}
.operator-v3 .operator-message p{font-size:var(--fs-body);color:var(--ink-2);line-height:1.7}
.operator-v3 .operator-message.user{max-width:86%}
.operator-v3 .operator-message.user>div{background:var(--neutral-bg)}
.operator-message.user small,.operator-answer>small{font-size:var(--fs-meta);color:var(--ink-3)}
.bvc-message-avatar{width:34px;height:34px;margin-top:2px}
.operator-v3 .operator-message.assistant>div{max-width:calc(100% - 44px)}
.record-sources button{min-height:36px;font-size:var(--fs-meta)}
.operator-v3 .operator-composer{position:relative;margin-top:8px;padding:10px 12px 10px 16px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-raised)}
.operator-composer:focus-within{border-color:var(--line-input);box-shadow:none}
.operator-v3 .operator-composer textarea{font-size:var(--fs-body);line-height:1.5;min-height:48px;max-height:120px;resize:none;outline:none}
.operator-composer>button{width:42px;height:42px;background:var(--accent);border-radius:var(--r-sm);flex:none}
.operator-disclaimer{font-size:var(--fs-meta);line-height:1.5;margin-top:10px;display:block;color:var(--ink-3)}
.bvc-panel{background:var(--canvas);padding:24px 18px;border-radius:var(--r-lg);top:24px}
.bvc-kicker{font-size:var(--fs-meta);color:var(--ink-3)}
.bvc-panel h2{font-size:var(--fs-heading);color:var(--ink)}
.bvc-panel>p{font-size:var(--fs-meta);color:var(--ink-3)}
.bvc-state{font-size:var(--fs-meta);color:var(--ink-2);background:var(--surface-sunk);line-height:1.5;padding:7px 10px}
.bvc-state.bvc-active{color:var(--ink-3)}
.bvc-state.bvc-attention,.bvc-state.bvc-error{color:var(--warning)}
.bvc-choices{background:var(--surface-sunk);gap:5px;margin-top:22px}
.bvc-choices button{font-size:var(--fs-meta);min-height:44px;color:var(--ink-3);flex-direction:column;gap:6px}
.bvc-choices img{width:34px;height:34px}
.bvc-shortcuts button{font-size:var(--fs-meta);min-height:40px;color:var(--ink-3)}
.bvc-panel>small{font-size:var(--fs-meta);color:var(--ink-3);line-height:1.6}
.bvu-dock{position:fixed;bottom:26px;right:30px;z-index:42;display:flex;align-items:center;gap:10px;min-height:54px;border:1px solid var(--line);background:var(--canvas);border-radius:var(--r-lg);padding:5px 18px 5px 5px;box-shadow:var(--shadow-overlay);color:var(--ink-2);font-size:var(--fs-body);font-weight:800}
.bvu-dock img{width:42px;height:42px;border-radius:50%}
.bvu-dock:hover{border-color:var(--line);background:var(--canvas)}
.bvu-personal-settings{display:flex;align-items:center;gap:18px;padding:20px;border:1px solid var(--neutral-bg);background:var(--surface);border-radius:var(--r-md);margin:0 0 26px}
.bvu-personal-settings>img{width:64px;height:64px;border-radius:50%}
.bvu-personal-settings>div{flex:1}
.bvu-personal-settings p{font-size:var(--fs-body);margin:5px 0;color:var(--ink-3)}
.bvu-context-launch{width:100%;display:flex;align-items:center;gap:10px;border:1px solid var(--neutral-bg);background:var(--neutral-bg);border-radius:var(--r-sm);padding:12px 14px;font-size:var(--fs-body);margin-bottom:20px;color:var(--ink-3);min-height:44px}
.bvu-context-launch svg:last-child{margin-left:auto}
.bvu-context{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--neutral-bg);border:1px solid var(--neutral-bg);border-radius:var(--r-sm);font-size:var(--fs-meta);margin-top:8px;color:var(--ink-3)}
.bvu-context span{flex:1}
.bvu-context small{margin-left:10px;font-size:var(--fs-meta);color:var(--ink-3)}
.bvu-context button{border:0;background:none;display:grid;place-items:center;width:30px;height:30px;border-radius:var(--r-sm)}
.bvu-studio-error{flex:1 1 100%;font-size:var(--fs-body);color:var(--danger);background:var(--accent-tint);padding:10px 14px;border-radius:var(--r-sm);margin:0}
.bvc-studio{background:var(--canvas)}
.bvc-studio header small{font-size:var(--fs-meta);color:var(--ink-3)}
.bvc-studio header h2{font-size:var(--fs-display);color:var(--ink-2)}
.bvc-studio header p{font-size:var(--fs-body);color:var(--ink-3)}
.bvc-preview h3{font-size:var(--fs-heading);color:var(--ink-2)}
.bvc-preview>p{font-size:var(--fs-body);color:var(--ink-3)}
.bvc-preview>small,.bvc-device-note{font-size:var(--fs-meta);color:var(--ink-3)}
.bvc-options legend{font-size:var(--fs-body);color:var(--ink-2)}
.bvc-options legend span{font-size:var(--fs-meta);color:var(--ink-3)}
.bvc-character-options button{font-size:var(--fs-body);color:var(--ink-2);min-height:52px}
.bvc-character-options button img{width:38px;height:38px}
.bvc-expressions button{font-size:var(--fs-meta);color:var(--ink-3)}
.bvc-expressions img{width:62px;height:62px}
.bvc-preferences label,.bvc-color-setting{font-size:var(--fs-body);color:var(--ink-2)}
.bvc-preferences small{font-size:var(--fs-meta);color:var(--ink-3)}
.bvc-color-setting button{width:28px;height:28px}
.bvc-studio footer{flex-wrap:wrap;position:sticky;bottom:0;background:var(--canvas)}
.bvc-studio footer>button{font-size:var(--fs-meta);color:var(--ink-3)}
.bvc-studio footer>div{margin-left:auto}
.bvc-export{font-size:var(--fs-meta);color:var(--ink-3);min-height:40px}
.bvc-save-error,.bvc-load-error{font-size:var(--fs-meta);color:var(--warning)}
.bvc-studio button:focus-visible,.bvu-dock:focus-visible{outline:3px solid var(--line-input);outline-offset:3px}
@media (max-width:760px){
.operator-v3 .page-header{display:block}
.operator-page .header-actions{justify-content:flex-start;margin-top:16px}
.bvc-chat-layout{gap:18px}
.bvc-panel{padding:20px 14px}
.bvc-chat-layout{grid-template-columns:minmax(0,1fr)}
.bvc-panel{display:none}
.bvu-colleague-bar{padding:16px 0}
.bvu-personal-settings{flex-wrap:wrap}
.operator-v3 .page-header h1{font-size:var(--fs-display)}
.operator-v3 .page-header p{font-size:var(--fs-meta)}
.operator-v3 .header-actions .button{font-size:var(--fs-meta);min-height:var(--target)}
.bvc-chat-main{padding:0 14px 12px;border-radius:var(--r-md)}
.operator-mode{flex-wrap:wrap}
.operator-mode>span,.operator-mode summary{font-size:var(--fs-meta)}
.operator-v3 .operator-transcript{max-height:58dvh;min-height:290px;padding:16px 0 10px}
.operator-v3 .operator-message p{font-size:var(--fs-body)}
.operator-v3 .operator-message>div{padding:12px}
.operator-v3 .operator-message.assistant>div{max-width:calc(100% - 38px)}
.bvc-message-avatar{width:28px;height:28px}
.operator-v3 .operator-composer{bottom:auto}
.operator-v3 .operator-composer textarea{font-size:var(--fs-body)}
.operator-welcome{padding:18px 0}
.operator-welcome h2{font-size:var(--fs-heading)}
.suggestions>button{font-size:var(--fs-body)}
.bvu-dock{bottom:18px;right:16px;min-height:52px}
.bvu-dock>span:not(.bvu-dock-avatar),.bvu-dock>svg{display:none}
.bvu-dock{padding-right:12px}
.bvu-context small{display:block;margin-left:0}
.bvu-colleague-identity strong{font-size:var(--fs-body)}
.bvu-colleague-identity strong span,.bvu-colleague-identity small,.bvc-studio header p{font-size:var(--fs-meta)}
.bvc-options legend{font-size:var(--fs-body)}
.bvc-character-options button{font-size:var(--fs-meta)}
.bvc-expressions img{width:50px;height:50px}
.bvc-expressions button{font-size:var(--fs-meta)}
.bvc-preview>small{display:block;font-size:var(--fs-meta)}
.bvc-studio footer{padding-bottom:max(13px,env(safe-area-inset-bottom))}
.bvc-studio footer .button{min-height:var(--target);font-size:var(--fs-meta)}
.bvu-personal-settings{gap:12px}
.bvu-personal-settings>img{width:50px;height:50px}
.bvu-personal-settings .button{width:100%}
}
@media (prefers-reduced-motion:reduce){
.bvu-dock,.bvc-panel,.operator-transcript{scroll-behavior:auto;transition:none;animation:none}
}
.operator-composer .operator-stop:hover{background:var(--accent-tint)}
.bvu-dock-avatar{position:relative;display:inline-flex}
.bvu-unread-dot{position:absolute;right:-2px;top:-2px;width:9px;height:9px;border-radius:50%;background:var(--accent-mark);border:2px solid var(--surface);box-sizing:content-box}
.bvu-nav-unread{display:inline-block;width:7px;height:7px;margin-left:7px;border-radius:50%;background:var(--accent-mark);vertical-align:middle}
.capture-details{grid-column:1/-1;margin-top:2px}
.capture-details>summary{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-size:var(--fs-body);font-weight:600;color:var(--ink-2);list-style:none}
.capture-details>summary::-webkit-details-marker{display:none}
.capture-details>summary::before{content:"";transition:transform .15s;width:12px;height:12px;background:currentColor;mask:var(--chevron) center/contain no-repeat;-webkit-mask:var(--chevron) center/contain no-repeat;transform:none;border:0}
.capture-details[open]>summary::before{transform:rotate(45deg)}
.capture-details:not([open])>summary .when-open,.capture-details[open]>summary .when-closed{display:none}
.capture-details>.capture-row-actions{margin-top:8px}
@media (prefers-reduced-motion:reduce){
.capture-details>summary::before{transition:none}
}
@media (max-width:760px){
.app .operator-nav,.app .people-filter button,.app select,.app textarea,.app input:not([type=checkbox]):not([type=radio]):not([type=file]),.app summary,.app .skip-link{min-height:44px}
.app .bvu-dock{min-width:52px;min-height:52px;justify-content:center}
}
.capture-details>.capture-row-actions{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px}
.capture-details>.capture-row-actions>.review-fields,.capture-details>.capture-row-actions>.inline-note{flex:1 0 100%;min-width:0}
.capture-details>.capture-row-actions>.button{flex:1 1 140px;width:auto;margin:0;white-space:normal}
.access-panel{margin-top:24px}
.access-row{border-top:1px solid var(--line)}
.access-row>div{display:grid;gap:2px;min-width:0}
.access-row small{overflow-wrap:anywhere}
.access-row .button{min-height:var(--target);flex:none}
.access-user>.access-row:first-child{border-top:0}
.remember-device{display:flex;align-items:flex-start;gap:10px;min-height:48px;margin:6px 0;font-size:var(--fs-body)}
.remember-device input{width:24px;height:24px;margin-top:2px;flex:none}
.remember-device small{display:block;color:var(--ink-2);font-size:var(--fs-meta)}
.invite-login-email{font-size:var(--fs-title);overflow-wrap:anywhere}
@media (max-width:480px){
.access-row{flex-direction:column}
.access-row .button{width:100%}
}
.passkey-login{display:grid;gap:8px;margin:0 0 12px}
.passkey-login small{color:var(--ink-2);font-size:var(--fs-meta)}
.passkey-or{display:flex;align-items:center;gap:10px;color:var(--ink-2);font-size:var(--fs-meta);margin-top:4px}
.passkey-or::before,.passkey-or::after{content:"";flex:1;border-top:1px solid var(--line)}
.passkey-modal .button,.passkey-actions .button{min-height:48px}
.passkey-actions{flex-wrap:wrap}
.push-modal .button{min-height:48px}
.push-device-actions{display:flex;gap:8px;flex-wrap:wrap}
.push-device-actions .button{flex:none}
.push-ios{background:var(--accent-tint);border-radius:var(--r-sm);padding:10px 12px}
@media (max-width:480px){
.push-device-actions{width:100%}
}
.commercial-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin:8px 0 24px}
.commercial-heading h2{font-size:var(--fs-heading);letter-spacing:-.5px;margin:0 0 8px}
.commercial-heading p{color:var(--ink-3,var(--ink-3));line-height:1.6;margin:0;max-width:510px}
.price-book>.search{max-width:480px;margin-bottom:20px}
.price-book td strong{font-size:var(--fs-body)}
.price-book th{white-space:nowrap}
.price-book .table-wrap{margin-top:8px}
.quote-mode{flex-wrap:wrap}
.quote-mode input,.price-pick>input{accent-color:var(--accent-mark)}
.price-picker{border-top:1px solid var(--line)}
.price-pick strong,.price-pick small,.carried-line strong,.carried-line small{display:block}
.price-pick small{margin-top:5px;line-height:1.5}
.price-pick input[type=number]{min-height:40px}
.quote-lines-read{margin:18px 0}
.quote-lines-read>div{display:flex;justify-content:space-between;gap:22px;padding:15px 0;border-bottom:1px solid var(--line);font-size:var(--fs-body)}
.quote-lines-read strong{font-weight:600}
.quote-lines-read small{display:block;color:var(--ink-3);margin-top:6px;font-size:var(--fs-meta);line-height:1.5}
.quote-lines-read>div>strong{white-space:nowrap}
.quote-lines-read .quote-total{padding:22px 0;font-size:var(--fs-title);border-bottom:0}
.quote-lines-read .quote-total>strong{font-size:var(--fs-heading);letter-spacing:-.7px}
.quote-version{padding:20px 0;border-bottom:1px solid var(--line)}
.quote-version-head{display:flex;gap:16px;align-items:center;justify-content:space-between;margin-bottom:14px}
.quote-version-head>div>strong{font-size:var(--fs-heading)}
.quote-version-head small{display:block;color:var(--ink-3);font-size:var(--fs-meta);margin-top:6px}
.quote-version .inline-actions{margin-top:20px}
.quote-version>p{font-size:var(--fs-body);line-height:1.7;color:var(--ink-2)}
.quote-version details summary{font-size:var(--fs-body);cursor:pointer;color:var(--ink-2)}
.quote-version details>small{font-size:var(--fs-meta);color:var(--ink-3)}
.share-result{padding:20px 0 4px}
.share-result input{font-family:monospace;font-size:var(--fs-meta)}
.link-history{margin-top:20px;padding:18px 0;border-top:1px solid var(--line)}
.link-history summary{font-size:var(--fs-body);cursor:pointer}
.managed-link{display:flex;gap:8px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}
.managed-link>div{flex:1}
.managed-link strong,.managed-link small{display:block}
.managed-link strong{font-size:var(--fs-body)}
.managed-link small{font-size:var(--fs-meta);color:var(--ink-3);margin-top:5px}
.customer-request{padding:20px 0;border-bottom:1px solid var(--line)}
.customer-request p{font-size:var(--fs-body);line-height:1.7;white-space:pre-wrap}
.customer-request>small{display:block;line-height:1.6;color:var(--ink-3);margin:8px 0 13px}
.customer-request form{padding-top:16px}
.request-preference{background:var(--neutral-bg);padding:12px;border-radius:var(--r-sm)}
.search-group{margin:24px 0}
.search-group h3{display:flex;gap:10px}
.search-group h3 span{font-weight:400}
.workspace-result{display:flex;width:100%;align-items:center;text-align:left;gap:14px;border:0;background:transparent;border-bottom:1px solid var(--line);min-height:65px;padding:12px;cursor:pointer;border-radius:var(--r-sm)}
.workspace-result:hover,.workspace-result:focus-visible{background:var(--neutral-bg)}
.workspace-result>span{flex:1}
.workspace-result strong,.workspace-result small{display:block}
.workspace-result strong{font-size:var(--fs-body);font-weight:800}
.workspace-result small{margin-top:6px}
.file-card .file-info .indexed{color:var(--ink-3)}
.indexed{display:block;margin-top:7px;font-size:var(--fs-meta)}
.file-card{cursor:pointer;color:inherit}
.customer-portal{min-height:100vh;font-family:var(--font)}
.portal-top{max-width:1080px;margin:auto;padding:32px;display:flex;align-items:center;gap:13px}
.portal-top strong{font-size:var(--fs-title);letter-spacing:-.3px}
.portal-top small{display:block;font-size:var(--fs-meta);color:var(--ink-3);margin-top:5px}
.portal-private{margin-left:auto;display:flex;align-items:center;gap:7px;color:var(--ink-3);font-size:var(--fs-meta)}
.portal-main{max-width:740px;padding:22px 26px 64px;margin:auto}
.portal-heading{margin-bottom:32px}
.portal-heading h1{font-size:var(--fs-hero);line-height:1.18;letter-spacing:-1.4px;margin:15px 0 12px;font-weight:800}
.portal-heading p{font-size:var(--fs-body);line-height:1.6;color:var(--ink-3)}
.portal-card{padding:30px 32px;border:1px solid var(--line);border-radius:var(--r-lg);background:color-mix(in srgb,var(--surface) 92%,transparent);margin-bottom:20px;box-shadow:var(--shadow-raised)}
.portal-card h1{font-size:var(--fs-display);letter-spacing:-.7px}
.portal-card h2{font-size:var(--fs-heading);letter-spacing:-.5px;margin:0}
.portal-card>p{font-size:var(--fs-body);line-height:1.75}
.portal-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:12px}
.portal-section-title p{font-size:var(--fs-body);color:var(--ink-3);line-height:1.6;margin:8px 0}
.portal-appointment{display:flex;gap:18px;align-items:center;margin:24px 0}
.portal-appointment strong{font-size:var(--fs-title);font-weight:600}
.portal-appointment p{font-size:var(--fs-heading);letter-spacing:-.5px;margin:7px 0}
.portal-appointment small{font-size:var(--fs-meta);color:var(--ink-3);line-height:1.7}
.portal-note{border-radius:var(--r-sm);background:var(--surface-sunk);color:var(--ink-2);padding:16px 18px;font-size:var(--fs-body);line-height:1.75}
.portal-receipt{display:flex;gap:14px;align-items:flex-start;background:var(--surface-sunk);border:1px solid var(--line);padding:19px;border-radius:var(--r-md);color:var(--ink-2);margin-top:22px;line-height:1.65;font-size:var(--fs-body)}
.portal-card form{margin-top:24px}
.portal-card .form-actions{justify-content:flex-end}
.portal-card .checkbox-label{font-size:var(--fs-body);line-height:1.7;align-items:flex-start}
.portal-card .checkbox-label input{margin-top:4px}
.portal-requests{margin-top:25px;border-top:1px solid var(--line);padding-top:20px}
.portal-requests>h3{font-size:var(--fs-body)}
.portal-requests article{border-top:1px solid var(--line);padding:16px 0}
.portal-requests article:first-of-type{border-top:0}
.portal-requests p{font-size:var(--fs-body);line-height:1.7;white-space:pre-wrap}
.portal-requests small{display:block;font-size:var(--fs-meta);color:var(--ink-3);margin-top:8px}
.portal-footer{display:flex;gap:12px;justify-content:center;margin:32px 0 0;font-size:var(--fs-meta);line-height:1.9;color:var(--ink-3)}
.portal-footer svg{flex-shrink:0;margin-top:2px}
.portal-main input{max-width:100%}
.portal-card .field input:not([type=checkbox]){width:100%}
@media (max-width:760px){
.commercial-heading{flex-direction:column;gap:16px}
.commercial-heading h2{font-size:var(--fs-heading)}
.quote-version .inline-actions .button{font-size:var(--fs-meta)}
.portal-top{padding:20px}
.portal-main{padding:12px 16px 40px}
.portal-heading h1{font-size:var(--fs-display);letter-spacing:-1px}
.portal-card{padding:23px 20px;border-radius:var(--r-md)}
.portal-card h2{font-size:var(--fs-title)}
.portal-card .form-actions .button{width:100%;min-height:var(--target)}
.portal-appointment strong{font-size:var(--fs-body)}
.portal-appointment p{font-size:var(--fs-heading)}
.portal-section-title,.managed-link{flex-wrap:wrap}
.quote-lines-read{overflow-wrap:anywhere}
.quote-lines-read>div{gap:14px}
.quote-line-input input{min-width:0}
.link-history .managed-link .button{font-size:var(--fs-meta)}
.portal-card .quote-mode{gap:15px}
.portal-card .field input{font-size:var(--fs-body)}
.customer-portal .portal-top small,.portal-requests .badge{font-size:var(--fs-meta)}
}
.plan-result-actions{margin:10px 0 4px}
.plan-result-actions:empty{display:none}
.search-group h3,.plan-changes dt,.profile small{text-transform:none}
.finance-advanced>summary{cursor:pointer;list-style:none}
.finance-advanced>summary::-webkit-details-marker{display:none}
.finance-summary strong{display:block;font-size:var(--fs-body)}
.finance-summary small{display:block;color:var(--ink-3);font-size:var(--fs-meta);margin-top:3px}
.app .checkbox-label,.field-evidence .checkbox-label{min-height:46px}
.more-toggle{width:100%}
.field-mode{line-height:1.45;margin:0 auto;padding:4px 0 24px}
:root .field-mode:is(small,label,.badge,summary,.inline-note,.privacy-note,.muted,p,span,a,li,dt,dd,time,strong,em,button,input,select,textarea,legend,option,output,th,td,h3,h4,figcaption,div){font-size:var(--fs-body)}
.field-mode .button,.field-mode a.button,.field-mode button{min-height:48px}
.field-mode .icon-button{min-width:48px;min-height:48px}
.field-mode .button.primary{border:2px solid var(--ink-2)}
.field-mode .badge{background:var(--surface)}
.field-mode input:not([type=checkbox]):not([type=radio]):not(.sr-only),.field-mode select,.field-mode textarea{min-height:52px}
.field-mode input[type=checkbox]{width:28px;height:28px}
.field-mode .checkbox-label{min-height:56px}
.field-mode .form-actions{display:grid;gap:10px}
.fj-big{width:100%;font-weight:800;justify-content:center}
.fj-mid{font-weight:600;justify-content:center}
.field-home,.next-job-card{display:grid}
.nj-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.nj-time{font-weight:800;line-height:1}
.nj-customer{margin:0;line-height:1.15}
.nj-title{margin:0}
:root .nj-title{font-size:var(--fs-title)}
.nj-address{display:flex;gap:8px;align-items:flex-start;margin:0}
:root .nj-address{font-size:var(--fs-title)}
.nj-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fh-row{display:flex;align-items:center;gap:14px;width:100%;background:var(--surface);padding:8px 14px;margin-bottom:8px;text-align:left;cursor:pointer}
.fh-row time{font-weight:800;min-width:56px}
.fh-row span{flex:1;display:grid}
.field-job{display:flex;flex-direction:column;min-height:calc(100dvh - 96px)}
.fj-head{display:grid}
.fj-back{justify-self:start;display:inline-flex;align-items:center;gap:2px;background:var(--surface);border-radius:var(--r-md);padding:0 14px 0 8px;font-weight:600;cursor:pointer}
.fj-back svg{transform:rotate(180deg)}
.fj-head h1{margin:0;line-height:1.15}
.fj-title{margin:0}
:root .fj-title{font-size:var(--fs-title)}
.fj-meta{display:flex;gap:10px;align-items:center;margin:0}
.fj-address,.fj-call{display:inline-flex;gap:8px;align-items:center;min-height:48px;font-weight:600;color:var(--ink-2);text-decoration:underline}
.fj-picker{display:grid;gap:6px}
.fj-picker label{font-weight:800}
.fj-picker select{min-height:56px}
.fj-hint{margin:0;font-weight:600}
.fj-finished,.fj-notice{display:flex;gap:8px}
.fj-recording{display:grid}
.fj-rec-clock{font-weight:800;font-variant-numeric:tabular-nums}
:root .fj-rec-clock{font-size:var(--fs-hero)}
.fj-rec-dot{width:16px;height:16px;border-radius:50%;margin:0 auto}
.fj-captured>summary,.field-more>summary{padding:0 14px}
.fj-captured ul{list-style:none;margin:0;display:grid;gap:6px}
.fj-captured li>details>summary{font-weight:600;cursor:pointer}
.fj-item-body{display:grid;gap:8px}
.fj-empty{margin:0;padding:0 14px 14px}
.fm-body{padding:10px;display:grid;gap:16px}
.fm-section{display:grid;gap:8px}
.fm-section h2{font-size:var(--fs-heading);margin:0}
.field-mode .field-evidence{box-shadow:none}
.fj-bar{display:grid;z-index:6}
.fj-act{font-weight:800;border-radius:var(--r-lg);justify-content:center;gap:10px;padding:0 10px}
:root .fj-act{min-height:64px;font-size:var(--fs-heading)}
.fj-act.ferdig{grid-column:1/-1}
:root .fj-act.ferdig{background:var(--success);border-color:var(--success);color:var(--surface)}
:root .fj-act.tid{background:var(--surface);color:var(--ink);border:3px solid var(--ink)}
:root .fj-act.tid.running{background:var(--danger);color:var(--surface);border-color:var(--danger)}
:root .fj-act.materialer{background:var(--surface);color:var(--ink);border:3px solid var(--ink)}
dialog.modal.field-sheet{margin:auto 0 0;max-width:100%;width:100%;max-height:94dvh}
@media (min-width:761px){
dialog.modal.field-sheet{margin:auto;max-width:560px}
}
.field-sheet .modal-body{display:grid}
.fs-form{display:grid;gap:12px}
.fs-input{min-height:56px;padding:10px 14px;width:100%}
:root .fs-input{font-size:var(--fs-title)}
textarea.fs-input{min-height:110px}
.fs-recent h3{margin:0 0 8px}
.fs-chips{display:flex;flex-wrap:wrap;gap:10px}
.fs-chip{min-height:52px;padding:0 18px;border-radius:var(--r-pill);font-weight:600;cursor:pointer}
.fs-added,.fs-done{display:flex;gap:8px;align-items:center;font-weight:800;margin:0}
.fs-check{display:flex;gap:14px;align-items:center;min-height:60px;padding:8px 14px;font-weight:600}
@media (max-width:760px){
.app .field-mode .button,.app .field-mode button{min-height:48px}
.app .field-mode .fj-act{min-height:64px}
.app .field-mode .fj-big{min-height:60px}
}
.field-mode .fj-address,.field-mode .fj-call{color:var(--ink-2)}
.field-mode:is(.button.primary,.fj-act.ferdig,.fj-act.tid.running,.fj-act.foto,.fj-act.snakk) :is(span,svg){color:var(--surface)}
.field-mode .badge{color:var(--ink)}
.field-mode .badge .status-dot{display:none}
.fm-body{grid-template-columns:minmax(0,1fr)}
.field-mode .field-evidence,.field-mode .fm-section{min-width:0;max-width:100%}
.field-mode .tabs button,.field-mode [role=tab]{min-width:56px;min-height:48px}
.field-mode .capture-details>summary,.field-mode summary{min-height:48px}
.field-mode .review-fields{grid-template-columns:minmax(0,1fr)}
.field-mode .capture-row-actions>.button{flex:1 1 100%}
.field-mode svg{flex:none}
.field-mode .site-equipment-head,.field-mode .section-title,.field-mode .equipment-card-head{flex-wrap:wrap;gap:8px}
.field-mode .badge{white-space:normal}
.fj-picker select,.field-mode select{width:100%;max-width:100%}
.field-mode details{margin:0}
.fj-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.fj-call{padding:0 16px;font-weight:600}
:root .fj-call{text-decoration:none}
.finance-advanced>summary{min-height:48px}
.finance-advanced[open]>summary{border-bottom:1px solid var(--line,var(--line))}
.fj-top{flex-wrap:wrap}
.field-job,.field-home{min-width:0}
.field-job h1,.field-job .fj-title,.field-job .fj-address{overflow-wrap:anywhere}
.fj-access{margin:6px 0 0;padding:10px 12px;display:grid;gap:2px;font-size:var(--fs-title);overflow-wrap:anywhere}
.fj-access strong{font-size:var(--fs-meta)}
.fj-desc{margin:6px 0 0;font-size:var(--fs-body);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.fj-history>summary{padding:0 14px}
.fj-history-body{display:grid;gap:12px;padding:0 14px 14px}
.fj-history h3{margin:0 0 4px;font-size:var(--fs-body)}
.fj-hist-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.fj-hist-list p{margin:2px 0 0;font-size:var(--fs-body);overflow-wrap:anywhere}
.fj-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.fj-photo{min-height:96px;min-width:48px;padding:0;border:2px solid var(--ink);border-radius:var(--r-sm);background:var(--surface-sunk);overflow:hidden;cursor:pointer;font-size:var(--fs-meta)}
.fj-photo img{display:block;width:100%;height:96px;object-fit:cover}
.fj-photo-big{position:fixed;inset:0;z-index:200;background:color-mix(in srgb,var(--ink) 88%,transparent);display:grid;grid-template-rows:1fr auto;gap:12px;padding:16px;justify-items:center}
.fj-photo-big img{max-width:100%;max-height:100%;object-fit:contain;align-self:center}
.fj-photo-big .button{min-height:52px;min-width:160px}
.site-access textarea{width:100%}
.live-board{padding:6px 0}
.lb-list{list-style:none;margin:0;padding:0;display:grid}
.lb-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(0,1.6fr) auto;gap:14px;align-items:center;padding:12px 16px;min-height:64px;border-top:1px solid var(--line)}
.lb-row:first-child{border-top:0}
.lb-who{display:flex;align-items:center;gap:10px;min-width:0}
.lb-who small,.lb-job-link small{display:block;color:var(--ink-3);font-size:var(--fs-meta)}
.lb-job-link{min-height:48px;width:100%;padding:6px 8px;border:0;border-radius:var(--r-sm);background:transparent;text-align:left;cursor:pointer;color:inherit;font:inherit;overflow-wrap:anywhere}
.lb-job-link:hover,.lb-job-link:focus-visible{background:var(--surface-sunk)}
.lb-chip-in_progress{border-color:var(--info)}
.lb-chip-done{border-color:var(--success)}
.lb-chip-late{border-color:var(--accent)}
.lb-chip-waiting{border-color:var(--info)}
@media (max-width:760px){
.lb-row{grid-template-columns:1fr;gap:6px}
.lb-chip{justify-self:start}
}
.live-board-page .button{min-height:48px;min-width:48px}
.fj-extra{grid-column:1/-1;font-weight:800;border-radius:var(--r-md);justify-content:center;gap:8px}
:root .fj-extra{min-height:56px;font-size:var(--fs-title);background:var(--surface);color:var(--accent-hover);border:2px solid var(--accent)}
.fj-extra-status{display:grid;gap:10px}
.fj-extra-row{display:grid;color:var(--ink)}
.fj-extra-row strong{font-weight:800}
.fj-extra-row span{font-size:var(--fs-body)}
.fj-extra-row p{margin:0;font-size:var(--fs-body)}
.fj-extra-row.approved{border-color:var(--success)}
.fj-extra-row.declined{border-color:var(--danger)}
.fs-warn{margin:0;padding:12px 14px}
.change-order .co-line{display:grid;gap:8px;border:1px solid var(--line);border-radius:var(--r-md);padding:12px;margin:0 0 10px;background:var(--surface)}
.change-order .co-photo{border:1px solid var(--line)}
.change-order .co-totals{display:grid;gap:4px;margin:10px 0;padding:12px;border-radius:var(--r-md)}
.change-order .button,.change-order button.button,.change-order input:not([type=checkbox]),.change-order textarea{min-height:48px}
.change-order p,.change-order small{font-size:var(--fs-meta)}
.change-order .co-send-button,.change-order .co-share-button{min-height:56px;font-size:var(--fs-title);font-weight:800}
.fs-closeout{display:grid}
.fs-closeout ul{gap:8px}
.closeout-office{border:1px solid var(--accent-mark);background:var(--accent-tint);border-radius:var(--r-md);padding:12px 14px;margin:12px 0;display:grid;gap:8px}
.closeout-office ul{margin:0;padding-left:20px}
.onb-mascot{width:120px;margin:0 auto 8px}
.hh-mascot .mascot{width:auto;height:228px;max-width:none;margin-right:12px;filter:drop-shadow(0 14px 18px color-mix(in srgb,var(--ink) 16%,transparent))}
.tone-blue .kpi-tile,.job-thumb.tone-blue{background:var(--info-bg);color:var(--info)}
.tone-green .kpi-tile,.job-thumb.tone-green,.tone-teal .kpi-tile,.job-thumb.tone-teal{background:var(--success-bg);color:var(--success)}
.tone-apricot .kpi-tile,.job-thumb.tone-orange,.job-thumb.tone-apricot{background:var(--danger-bg);color:var(--accent-hover)}
.tone-red .kpi-tile{background:var(--danger-bg);color:var(--danger)}
.job-thumb.tone-amber{background:var(--warning-bg);color:var(--warning)}
.job-thumb.tone-slate{background:var(--neutral-bg);color:var(--ink-2)}
.quiet-note{border-radius:var(--r-lg)}
.quiet-note h3{font-size:var(--fs-heading)}
.job-thumb{width:56px;height:56px;border-radius:var(--r-md);display:grid;place-items:center;flex:none;overflow:hidden}
.job-thumb.thumb-sm{width:40px;height:40px;border-radius:var(--r-md)}
.job-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.job-cell{display:flex;align-items:center;gap:12px}
.job-cell .table-primary{flex:1;min-width:0}
.check-burst{display:inline-flex;flex:none}
.cb-ring,.cb-tick{fill:none;stroke:var(--success);stroke-linecap:round;stroke-linejoin:round}
.cb-ring{stroke-width:3;stroke-dasharray:145;stroke-dashoffset:145;animation:cb-draw .3s ease-out forwards}
.cb-tick{stroke-width:4.5;stroke-dasharray:36;stroke-dashoffset:36;animation:cb-draw .25s .3s ease-out forwards}
.check-burst .cb-ring{fill:var(--success-bg)}
.field-mode .button.primary{box-shadow:none}
.fh-hello{font-weight:800;letter-spacing:-.03em}
.fs-done{gap:14px}
@media (max-width:760px){
.hh-mascot .mascot{height:150px;margin-right:2px}
.job-thumb{width:48px;height:48px}
}
@media (prefers-reduced-motion:reduce){
.mascot,.wave{animation:none}
.cb-ring,.cb-tick{animation:none;stroke-dashoffset:0}
}
@media print{
.mascot,.hh-mascot,.weather-chip{display:none}
}
.approve-day-card:hover{border-color:var(--accent)}
.approve-day-card.late{background:var(--accent);border-color:var(--accent-hover);color:var(--surface);box-shadow:var(--shadow-overlay)}
.approve-day-card.late .adc-icon{background:color-mix(in srgb,var(--surface) 20%,transparent);color:var(--surface)}
.approve-day-card.late .adc-text small{color:var(--accent-tint)}
.day-count{font-size:var(--fs-body);font-weight:600;margin:0 0 10px}
.day-queue{display:grid}
.day-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-raised);display:grid}
.day-card-amount{text-align:right;display:grid}
.day-card-actions .button{min-width:48px;padding:0 20px;font-size:var(--fs-body)}
.day-done{max-width:520px;margin:0 auto}
.day-done p{margin:0;font-size:var(--fs-body);color:var(--ink-2)}
.day-done .mascot{max-height:240px;width:auto}
@media (max-width:760px){
.day-card-actions .button{flex:1 1 auto}
}
@media (prefers-reduced-motion:no-preference){
.day-done .mascot{animation:day-pop .5s ease-out both}
}
.login-card .button,.login-card input{min-height:48px}
.login-card .button.primary{min-height:52px;width:100%}
.day-done .button,.header-actions .button.day-back{min-height:48px;padding:0 22px;font-size:var(--fs-body)}
@media (max-width:760px){
.field-mode .icon-button{min-width:48px;min-height:48px}
.app .operator-nav,.app .profile-trigger,.app .people-filter button,.app .text-link,.app .subtle-link,.app .search,.app .search input,.app select,.app input:not([type=checkbox]):not([type=radio]):not([type=file]):not(.sr-only),.app .checkbox-label,.field-evidence .checkbox-label{min-height:48px}
.app .more-toggle{min-height:48px}
.customer-portal .icon-button{min-width:48px;min-height:48px}
:root .customer-portal .button,:root .customer-portal button:not(.icon-button){min-height:48px}
.customer-portal .text-link,.customer-portal a:not(.button):not(.brand-mark){display:inline-flex;align-items:center;min-height:48px}
.customer-portal .quote-mode{gap:8px 12px}
.customer-portal .quote-mode label,.customer-portal .checkbox-label{display:flex;align-items:center;gap:12px;min-height:48px;padding:6px 4px}
.customer-portal .quote-mode input[type=radio],.customer-portal .checkbox-label input[type=checkbox]{width:24px;height:24px;flex:none}
.customer-portal input:not([type=checkbox]):not([type=radio]):not([type=hidden]),.customer-portal summary{min-height:48px;box-sizing:border-box}
}
.login-page{flex-direction:column;justify-content:flex-start;align-items:center;padding:var(--sp-6) var(--sp-4) var(--sp-8)}
.login-brand{position:static;align-self:flex-start;margin:0 0 var(--sp-2);color:var(--ink);font-weight:800}
.login-card{margin:auto 0;width:100%}
@media (max-width:760px){
.login-page{padding:var(--sp-4)}
}
.customer-portal{color:var(--ink)}
.customer-portal .portal-top{border-bottom:0}
.customer-portal .portal-top strong{font-size:var(--fs-body);font-weight:800;color:var(--ink)}
.customer-portal .portal-top small{color:var(--ink-3)}
.customer-portal .portal-private{color:var(--ink-2)}
.customer-portal .portal-main{max-width:760px}
.customer-portal .portal-heading h1{font-weight:800;color:var(--ink)}
.customer-portal .portal-heading p{font-size:var(--fs-body);color:var(--ink-2);margin:0}
.customer-portal .portal-card{border-color:var(--line)}
.customer-portal .portal-card h1,.customer-portal .portal-card h2{font-weight:800;color:var(--ink)}
.customer-portal .portal-section-title p{color:var(--ink-2)}
.customer-portal .portal-appointment p{font-weight:600;color:var(--ink);letter-spacing:-.4px}
.customer-portal .portal-appointment small{color:var(--ink-2)}
.customer-portal .portal-note{background:var(--surface-sunk);color:var(--ink)}
.customer-portal .portal-footer{max-width:760px;margin:24px auto 0}
.customer-portal .decision-group{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0 20px;min-width:0}
.customer-portal .decision-group legend{font-weight:600;margin-bottom:10px;padding:0;color:var(--ink)}
.customer-portal .decision-group .decision-option{display:flex;align-items:center;gap:12px;min-height:var(--target-primary);padding:12px 16px;border:2px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);font-weight:600;font-size:var(--fs-body);color:var(--ink);cursor:pointer;box-sizing:border-box}
.customer-portal .decision-group .decision-option:hover{border-color:var(--ink-3)}
.customer-portal .decision-group .decision-option.selected{border-color:var(--accent);background:var(--accent-tint)}
.customer-portal .decision-group .decision-option input[type=radio]{width:24px;height:24px;flex:none;accent-color:var(--accent);margin:0}
.customer-portal .decision-group .decision-option:focus-within{outline:3px solid var(--info);outline-offset:2px}
.customer-portal .decision-group .decision-option input:focus-visible{outline:none}
@media (min-width:1000px){
.customer-portal .portal-main.has-quote,.customer-portal .portal-main.has-docs{max-width:1180px;display:grid;column-gap:28px;align-items:start;padding-left:32px;padding-right:32px}
.customer-portal .portal-main.has-docs{grid-template-columns:minmax(300px,380px) minmax(0,1fr);grid-template-rows:auto auto auto auto 1fr auto;grid-template-areas:"head head" "note note" "plan docs" "ask docs" ". docs" "foot foot"}
.customer-portal .has-docs>.portal-heading{grid-area:head}
.customer-portal .has-docs>.portal-plan{grid-area:plan}
.customer-portal .has-docs>.portal-ask{grid-area:ask}
.customer-portal .has-docs>.portal-docs{grid-area:docs}
.customer-portal .has-docs>.portal-footer{grid-area:foot;justify-self:center;max-width:none}
.customer-portal .has-quote>.portal-heading{grid-column:1/-1;grid-row:1}
.customer-portal .has-quote>.portal-notice{grid-column:1/-1;grid-row:2;margin:0 0 20px}
.customer-portal .has-quote>:is(.portal-plan,.portal-docs,.portal-ask){grid-row:4}
.customer-portal .has-quote>.portal-footer{grid-column:1/-1;justify-self:center;max-width:none}
.customer-portal :is(.has-quote,.has-docs)>.portal-card{margin-bottom:20px;position:static;align-self:start}
.customer-portal .has-quote>:is(.portal-plan,.portal-docs,.portal-ask){align-self:stretch}
.customer-portal .has-quote .portal-appointment,.customer-portal .has-docs .portal-appointment{flex-wrap:nowrap}
.customer-portal :is(.has-quote,.has-docs) .portal-ask .portal-section-title{flex-direction:column}
.customer-portal.no-quote .portal-top{max-width:1180px}
.customer-portal .has-docs .portal-docs .portal-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:760px){
.customer-portal .decision-group{grid-template-columns:1fr 1fr}
}
@media (max-width:480px){
.customer-portal .decision-group{grid-template-columns:1fr}
}
.customer-portal .portal-requests small{color:var(--ink-2);font-size:var(--fs-meta)}
.customer-portal .portal-receipt{background:var(--success-bg);border-color:var(--success);color:var(--ink)}
.customer-portal .portal-receipt>svg{color:var(--success);flex:none;margin-top:2px}
.customer-portal .badge{font-size:var(--fs-meta);font-weight:600;padding:5px 12px;border:0;white-space:nowrap}
.customer-portal .badge:not([class*=" "]){background:var(--neutral-bg);color:var(--ink-2)}
.customer-portal .badge:where(.completed,.paid,.active,.verified,.accepted,.approved,.invoiced,.closed){background:var(--success-bg);color:var(--success)}
.customer-portal .badge:where(.in_progress,.scheduled,.sent){background:var(--info-bg);color:var(--info)}
.customer-portal .badge:where(.pending,.draft,.review,.proposed,.waiting){background:var(--warning-bg);color:var(--warning)}
.customer-portal .badge:where(.cancelled,.declined,.paused){background:var(--neutral-bg);color:var(--ink-2)}
.customer-portal .badge .status-dot{background:currentColor}
.customer-portal .button.primary{background:var(--accent);border-color:var(--accent);color:var(--surface);box-shadow:none;font-size:var(--fs-body);transform:none}
:root .customer-portal .button.primary{min-height:var(--target-primary)}
.customer-portal .button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);transform:none;box-shadow:none}
.customer-portal .button.primary :is(span,svg){color:var(--surface)}
.customer-portal .button.primary:disabled{background:var(--neutral-bg);color:var(--ink-2);border:1.5px dashed var(--line-input)}
.customer-portal .portal-card .form-actions{justify-content:stretch;margin-top:var(--sp-4)}
.customer-portal .portal-card .form-actions .button{width:100%;justify-content:center}
.customer-portal .portal-card form{margin-top:var(--sp-4)}
.customer-portal .portal-card form .field{margin-bottom:var(--sp-3)}
.customer-portal .checkbox-label{color:var(--ink);font-size:var(--fs-body);line-height:1.5;margin:var(--sp-2) 0}
.customer-portal .checkbox-label input[type=checkbox]{accent-color:var(--accent);margin-top:2px}
.customer-portal .portal-card form .inline-note{color:var(--ink-2);margin:var(--sp-2) 0 var(--sp-3)}
.customer-portal .portal-decline-note{margin:0 0 var(--sp-3);font-size:var(--fs-meta)}
.customer-portal .portal-photo-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin:var(--sp-4) 0 0}
.customer-portal .portal-photo-grid figure{padding:6px}
.customer-portal .portal-photo-grid img{aspect-ratio:4/3;border-radius:var(--r-sm)}
.customer-portal .portal-docs section{margin-top:var(--sp-5)}
.customer-portal .portal-docs h3{font-size:var(--fs-body);font-weight:800;margin:0 0 var(--sp-2);color:var(--ink)}
.customer-portal .portal-docs .portal-section-title{margin-bottom:0}
.customer-portal .portal-scope{display:flex;align-items:center;gap:var(--sp-2);font-weight:600}
:root .customer-portal .portal-scope{color:var(--ink-2);margin:var(--sp-2) 0 0}
.customer-portal .portal-scope svg{flex:none;color:var(--ink-2)}
.customer-portal .portal-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.customer-portal .portal-list li{background:var(--surface-sunk);border-radius:var(--r-sm);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-body);line-height:1.5;color:var(--ink)}
.customer-portal .portal-docs .portal-photo-grid{margin-top:0}
.customer-portal .portal-footer{color:var(--ink-2);align-items:flex-start;text-align:left;padding:0 var(--sp-2)}
.customer-portal .nowrap{white-space:nowrap}
.customer-portal .portal-ask .portal-section-title p{color:var(--ink-2)}
.customer-portal.is-error .portal-main,.customer-portal.is-error .portal-top{max-width:600px}
.customer-portal .portal-error{padding:var(--sp-8)}
.customer-portal .portal-error-icon{display:inline-grid;place-items:center;border-radius:var(--r-md)}
.customer-portal .portal-error h1{margin:0 0 var(--sp-2)}
.customer-portal .portal-error>p{color:var(--ink-2)}
.customer-portal .portal-error h2{font-size:var(--fs-body);font-weight:800;margin:var(--sp-6) 0 var(--sp-3)}
.customer-portal .portal-steps{margin:0;padding:0;list-style:none;counter-reset:s;display:grid;gap:var(--sp-3)}
.customer-portal .portal-steps li{counter-increment:s;display:grid;grid-template-columns:32px 1fr;gap:var(--sp-3);align-items:start;font-size:var(--fs-body);color:var(--ink);line-height:1.5}
.customer-portal .portal-steps li::before{content:counter(s);display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--navy);color:var(--surface);font-weight:800;font-size:var(--fs-meta)}
.customer-portal .portal-error-note{padding-top:var(--sp-4);border-top:1px solid var(--line)}
:root .customer-portal .portal-error-note{margin-top:var(--sp-5)}
@media (max-width:760px){
.customer-portal .portal-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.customer-portal .portal-footer{padding:0}
}
.customer-portal .portal-appointment small:empty{display:none}
.customer-portal .portal-ask .portal-section-title,.customer-portal .portal-plan .portal-section-title{margin-bottom:var(--sp-3)}
.customer-portal .portal-ask>.portal-section-title:last-child{margin-bottom:0}
.customer-portal .portal-private{display:inline-flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-meta);font-weight:600;white-space:nowrap}
.customer-portal .portal-quote .portal-note{margin-bottom:var(--sp-4)}
@media (max-width:760px){
.customer-portal .portal-top small{display:none}
}
.customer-portal.is-error .portal-main{flex-direction:column;justify-content:center}
.customer-portal .text-link{color:var(--navy);font-weight:600;text-decoration:underline;text-underline-offset:3px;min-height:var(--target);display:inline-flex;align-items:center;padding:0}
.customer-portal .text-link:hover{color:var(--accent)}
.customer-portal .portal-quote-main>.button{margin-top:var(--sp-4)}
.customer-portal .portal-options-lead{color:var(--ink-2);font-size:var(--fs-body)}
.customer-portal .portal-option-grid{grid-template-columns:minmax(0,1fr)}
@media (min-width:1000px){
.customer-portal .portal-option-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
.customer-portal .portal-option{color:var(--ink);box-shadow:none}
.customer-portal .portal-option h3{margin:0;color:var(--ink)}
.customer-portal .portal-option-price strong{font-size:var(--fs-display);font-weight:800}
.customer-portal .portal-option-price small{font-size:var(--fs-meta);color:var(--ink-2)}
.customer-portal .portal-option-lines li{font-size:var(--fs-body);color:var(--ink);line-height:1.4}
.customer-portal .portal-option-lines small{font-size:var(--fs-meta);color:var(--ink-2);font-weight:400}
.customer-portal .portal-option.is-picked{border-color:var(--accent);box-shadow:none}
.customer-portal .portal-option.is-chosen{order:-1}
.customer-portal .portal-option-flag{font-size:var(--fs-meta);font-weight:600;padding:3px 12px}
.customer-portal .portal-option-flag.is-muted{background:var(--neutral-bg);color:var(--ink-2)}
.customer-portal .button.primary.is-picked-button,.customer-portal .button.primary.is-picked-button:hover{background:var(--navy);border-color:var(--navy)}
.customer-portal .portal-pick-summary{gap:var(--sp-1);justify-items:start}
.customer-portal .portal-pick-summary small{font-size:var(--fs-meta);color:var(--ink-2);line-height:1.45}
.customer-portal .portal-option-footer{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center}
.customer-portal .portal-option-footer .button{min-height:var(--target)}
.customer-portal .portal-decline-open{width:auto}
.customer-portal .portal-doc-list{display:grid;gap:var(--sp-3)}
.customer-portal .portal-doc-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--sp-3);align-items:center;border-radius:var(--r-md)}
.customer-portal .portal-doc-row strong{display:block;font-size:var(--fs-body)}
.customer-portal .portal-doc-row small{display:block;color:var(--ink-2);font-size:var(--fs-meta)}
.customer-portal .portal-doc-row .button{grid-column:1/-1;width:100%;justify-content:center;min-height:var(--target-primary)}
:root .customer-portal .portal-scope{font-size:var(--fs-meta)}
.customer-portal .portal-docs .portal-section-title p:not(.portal-scope){font-size:var(--fs-body);color:var(--ink-2)}
.customer-portal .portal-ask .portal-section-title p{font-size:var(--fs-body)}
.customer-portal .portal-footer{font-size:var(--fs-meta)}
.customer-portal.is-error .portal-main{min-height:0;display:block;padding-top:var(--sp-8);padding-bottom:var(--sp-8)}
.customer-portal .portal-error h1{line-height:1.2;font-size:var(--fs-heading);letter-spacing:-.4px}
.customer-portal .portal-error-icon{background:var(--warning-bg);color:var(--warning)}
.customer-portal .portal-error-retry{width:100%;justify-content:center;min-height:var(--target-primary);margin-top:var(--sp-5)}
.customer-portal .portal-error-note{line-height:1.5}
:root .customer-portal .portal-error-note{font-size:var(--fs-body);color:var(--ink-2)}
@media (max-width:760px){
.customer-portal .portal-option{grid-template-columns:minmax(0,1fr) auto}
.customer-portal .portal-option>header{grid-column:1;grid-row:1}
.customer-portal .portal-option>.portal-option-price{grid-column:2;grid-row:1;text-align:right;justify-items:end}
.customer-portal .portal-option>:is(.portal-option-lines,.button){grid-column:1/-1}
.customer-portal .portal-option-lines small.is-single{display:none}
.customer-portal .portal-options-lead{font-size:var(--fs-body)}
}
.field-mode{color:var(--ink);max-width:720px;font-size:var(--fs-title)}
.field-mode:is(h1,h2,h3,summary,.nj-title,.fj-title,.nj-address,p,li,label,span,small,strong,time){color:var(--ink)}
.field-mode h1,.field-mode h2{font-weight:800;letter-spacing:-.02em}
.field-mode .button.secondary,.field-mode .button:not(.primary){background:var(--surface);color:var(--ink);border:1.5px solid var(--line-input);box-shadow:var(--shadow-raised);font-weight:600}
.field-mode .button.primary{background:var(--accent-field);border-color:var(--accent-field);color:var(--surface)}
.field-mode .button.primary:not(:disabled):hover{background:color-mix(in srgb,var(--accent-field) 85%,var(--navy));border-color:color-mix(in srgb,var(--accent-field) 85%,var(--navy))}
.field-mode .button.primary :is(span,svg){color:var(--surface)}
.field-mode .button:disabled,.field-mode .button[aria-disabled=true]{opacity:1;background:var(--neutral-bg);border:1.5px dashed var(--line-input);color:var(--ink-2);box-shadow:none}
.field-mode .button.primary:disabled{background:var(--neutral-bg);color:var(--ink-2)}
.field-mode .button.primary:disabled :is(span,svg){color:var(--ink-3)}
.fj-big{border-radius:var(--r-md)}
:root .fj-big{min-height:var(--target-primary);font-size:var(--fs-title)}
.fj-mid{border-radius:var(--r-md)}
:root .fj-mid{min-height:var(--target);font-size:var(--fs-body)}
.field-mode .badge{border:0;padding:5px 12px;font-weight:600;border-radius:var(--r-pill)}
:root .field-mode .badge{font-size:var(--fs-meta)}
.field-mode .badge:not([class*=" "]){background:var(--neutral-bg);color:var(--ink-2)}
.field-mode .badge:where(.completed,.paid,.active,.verified,.accepted,.approved){background:var(--success-bg);color:var(--success)}
.field-mode .badge:where(.in_progress,.scheduled,.sent){background:var(--info-bg);color:var(--info)}
.field-mode .badge:where(.pending,.draft,.review,.proposed,.waiting,.planned){background:var(--warning-bg);color:var(--warning)}
.field-mode .badge:where(.overdue,.blocked,.failed,.urgent){background:var(--danger-bg);color:var(--danger)}
.field-mode input:not([type=checkbox]):not([type=radio]):not(.sr-only),.field-mode select,.field-mode textarea,.fs-input{border:1.5px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);color:var(--ink)}
.field-mode input::placeholder,.field-mode textarea::placeholder,.fs-input::placeholder{color:var(--ink-3)}
.fs-label{color:var(--ink);font-weight:600}
:root .fs-label{font-size:var(--fs-body)}
.field-home{gap:var(--sp-5)}
.fh-hello{font-size:var(--fs-display);margin:var(--sp-2) 0 0}
.next-job-card{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-raised);padding:var(--sp-5);gap:var(--sp-3)}
.next-job-card.empty{border-style:dashed;border-color:var(--line-input);box-shadow:none;background:var(--surface-sunk)}
.nj-time{color:var(--ink);letter-spacing:-.03em}
:root .nj-time{font-size:var(--fs-hero)}
.nj-customer{font-size:var(--fs-display)}
.nj-title{font-weight:500}
:root .nj-title{color:var(--ink-2)}
.nj-address{font-weight:600}
:root .nj-address{color:var(--ink)}
.nj-address svg{color:var(--accent)}
.fh-later h2{font-size:var(--fs-title);margin:var(--sp-2) 0}
.fh-row{border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-raised);color:var(--ink);min-height:64px}
:root .fh-row time{color:var(--accent);font-size:var(--fs-title)}
.fh-row small{color:var(--ink-2)}
.fj-head{border-bottom:1px solid var(--line);gap:var(--sp-2);padding-bottom:var(--sp-4)}
.fj-back{border:1.5px solid var(--line-input);box-shadow:var(--shadow-raised);color:var(--ink);min-height:48px}
.field-mode a.fj-call{border:1.5px solid var(--line-input);color:var(--ink)}
.fj-head h1{font-size:var(--fs-display)}
.fj-title{font-weight:500}
:root .fj-title,.fj-meta{color:var(--ink-2)}
.fj-meta time,.fj-meta span:not(.badge){font-weight:600;color:var(--ink)}
.field-mode .fj-address{color:var(--ink);text-decoration:none;font-weight:600;padding:0 14px;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-md);justify-self:start;max-width:100%;box-shadow:var(--shadow-raised)}
.field-mode .fj-address svg{color:var(--accent)}
.field-mode .fj-address:hover{border-color:var(--accent)}
.fj-access{border:1px solid var(--line);background:var(--accent-tint);border-radius:var(--r-md)}
.fj-access strong,.fj-desc{color:var(--ink-2)}
.fj-hint{color:var(--warning)}
.fj-finished,.fj-notice,.fs-added,.fs-done{color:var(--success)}
.fj-recording{border-radius:var(--r-lg)}
.fj-rec-dot{background:var(--danger)}
.fj-rec-clock,.field-mode summary,.field-mode summary *{color:var(--ink)}
.field-mode .fj-running{color:var(--accent)}
.fj-captured,.field-more,.fj-history{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.fj-captured>summary,.field-more>summary,.fj-history>summary{font-weight:600;min-height:var(--target-primary)}
.fj-captured>summary{padding-top:8px;padding-bottom:8px}
.fj-running{font-weight:800;font-variant-numeric:tabular-nums}
.field-mode .field-evidence{border:1px solid var(--line)}
.fj-extra-status{margin:0}
.fj-extra-row{border:1px solid var(--line);border-radius:var(--r-md);background:var(--warning-bg)}
.fj-extra-row strong{font-size:var(--fs-title);color:var(--ink)}
.fj-extra-row p{color:var(--ink)}
.fj-extra-row.approved{border-left-color:var(--success);background:var(--success-bg)}
.fj-extra-row.approved p{color:var(--success)}
.fj-extra-row.declined{border-left-color:var(--danger);background:var(--danger-bg)}
.fj-extra-row.declined p{color:var(--danger)}
.field-job{padding-bottom:0;gap:var(--sp-3)}
.field-job .fj-head h1{font-size:var(--fs-display)}
:root .fj-head .fj-title{font-size:var(--fs-title)}
.fj-bar{position:sticky;bottom:0;margin:var(--sp-2) calc(-1*var(--sp-1)) 0;padding:var(--sp-3) var(--sp-1) max(var(--sp-3),env(safe-area-inset-bottom));background:var(--canvas);border-top:1px solid var(--line);box-shadow:var(--shadow-up);grid-template-columns:repeat(10,minmax(0,1fr));gap:var(--sp-2)}
.fj-bar>*{grid-column:span 5}
.fj-bar>.fj-act.ferdig{grid-column:span 6}
.fj-bar>.fj-extra{grid-column:span 4}
.field-mode .fj-act{font-weight:800;border-radius:var(--r-md);gap:8px;padding:0 var(--sp-2);box-shadow:none}
:root .field-mode .fj-act{min-height:var(--target-primary);font-size:var(--fs-title)}
:root .field-mode .fj-act.foto,:root .field-mode .fj-act.snakk{background:var(--accent);border:1.5px solid var(--accent);color:var(--surface)}
:root .field-mode .fj-act.foto:disabled,:root .field-mode .fj-act.snakk:disabled{background:var(--neutral-bg);border:1.5px dashed var(--line-input);color:var(--ink-2)}
:root .field-mode .fj-act.tid,:root .field-mode .fj-act.materialer{background:var(--surface);color:var(--ink);border:1.5px solid var(--navy)}
:root .field-mode .fj-act.tid:disabled,:root .field-mode .fj-act.materialer:disabled{background:var(--neutral-bg);color:var(--ink-2);border:1.5px dashed var(--line-input)}
.field-mode .fj-act.tid.running{flex-direction:column;gap:0;line-height:1.15}
:root .field-mode .fj-act.tid.running{background:var(--navy);color:var(--surface);border-color:var(--navy)}
.field-mode .fj-act.tid.running svg{display:none}
.fj-stop{font-size:var(--fs-body);font-weight:600}
.field-mode .fj-act.tid.running :is(span,time,svg){color:var(--surface)}
.fj-timer{font-variant-numeric:tabular-nums;font-weight:800}
:root .fj-timer{font-size:var(--fs-title)}
:root .field-mode .fj-act.ferdig{background:var(--success);border:1.5px solid var(--success);color:var(--surface)}
:root .field-mode .fj-act.ferdig:disabled{background:var(--neutral-bg);color:var(--ink-2);border:1.5px dashed var(--line-input)}
.field-mode .fj-extra{padding:0 6px;font-weight:600;border-radius:var(--r-md);justify-content:center;gap:8px;box-shadow:none}
:root .field-mode .fj-extra{min-height:var(--target-primary);font-size:var(--fs-body);background:var(--surface);color:var(--ink);border:1.5px dashed var(--accent)}
.field-mode .fj-extra svg{display:none}
:root .field-mode .fj-extra:disabled{background:var(--neutral-bg);color:var(--ink-2);border:1.5px dashed var(--line-input)}
dialog.modal.field-sheet{border-radius:var(--r-lg) var(--r-lg) 0 0}
.field-sheet .modal-head h2{font-size:var(--fs-heading);font-weight:800}
.field-sheet .modal-body{gap:var(--sp-4);padding-bottom:max(var(--sp-5),env(safe-area-inset-bottom))}
.fs-chip{border:1.5px solid var(--line-input);color:var(--ink);background:var(--surface);box-shadow:var(--shadow-raised)}
.fs-recent h3{font-size:var(--fs-body);color:var(--ink-2)}
.fs-check{border:1.5px solid var(--line-input);background:var(--surface);color:var(--ink);border-radius:var(--r-md)}
.fs-warn{border:1px solid var(--line);background:var(--warning-bg);color:var(--ink);border-radius:var(--r-md);font-size:var(--fs-body)}
.fs-closeout{border:1px solid var(--line);background:var(--warning-bg);border-radius:var(--r-md)}
.fs-closeout h3{color:var(--ink)}
.fs-closeout li span{font-size:var(--fs-body);font-weight:600}
.fs-closeout.ok{background:var(--success-bg);border-color:var(--line);border-left-color:var(--success)}
.fs-done{font-size:var(--fs-heading);font-weight:800}
.field-mode .form-error,.field-sheet .form-error{color:var(--danger);font-weight:600}
@media (min-width:1000px){
.field-mode{max-width:1040px;margin-inline:0}
.field-home{grid-template-columns:minmax(0,1fr) minmax(0,380px);align-items:start;column-gap:var(--sp-8)}
.field-home>.fh-hello,.field-home>.fh-offline{grid-column:1/-1}
.field-home>.fh-later{grid-column:2;grid-row:3}
.field-home>.next-job-card{grid-column:1;grid-row:3}
.field-home:not(:has(.fh-later))>.next-job-card{grid-column:1/-1}
.field-job{display:grid;grid-template-columns:minmax(0,1fr) 340px;column-gap:var(--sp-8);align-items:start;min-height:0}
.field-job>*{grid-column:1}
.field-job{row-gap:0}
.field-job>*{margin-bottom:var(--sp-3)}
.field-job>.fj-bar{grid-column:2}
.field-job>.fj-bar{grid-row:1/span 12;position:sticky;top:96px;bottom:auto;margin:0 0 var(--sp-3);padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-raised)}
.fj-bar>*,.fj-bar>.fj-act.ferdig,.fj-bar>.fj-extra{grid-column:span 10}
.fj-bar>.fj-act.foto,.fj-bar>.fj-act.snakk,.fj-bar>.fj-act.tid,.fj-bar>.fj-act.materialer{grid-column:span 5}
.field-mode .fj-extra svg{display:inline}
}
@media (max-width:760px){
.field-job:has(.fj-captured[open],.field-more[open],.fj-recording) .fj-bar{position:static;box-shadow:none}
}
.field-sheet .modal-head h2,.field-sheet .modal-body :is(h3,label,p,span,strong,small){color:var(--ink)}
.field-sheet :is(.fs-done,.fs-added),.field-sheet :is(.fs-done,.fs-added) span{color:var(--success)}
.field-sheet .form-error{color:var(--danger)}
.fj-recording .fj-rec-clock{color:var(--ink)}
:root .fm-body :is(small,p,span,li,dd,dt,label,td,th,strong,a,legend,h4){font-size:var(--fs-body)}
.pa-screen{display:grid;gap:var(--sp-4);align-content:start;padding-bottom:var(--sp-8)}
.pa-head{display:grid;gap:var(--sp-2);justify-items:start}
.pa-head h1{margin:0;font-size:var(--fs-display);line-height:1.15;color:var(--ink)}
.pa-lead{margin:0;color:var(--ink-2);font-size:var(--fs-title);line-height:1.45}
.pa-loading{margin:0;color:var(--ink-2);font-size:var(--fs-title)}
.pa-fine{margin:0;color:var(--ink-3);font-size:var(--fs-body);line-height:1.45}
.pa-card{display:grid;gap:var(--sp-3);padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-raised)}
.pa-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}
.pa-card-head h2{margin:0;font-size:var(--fs-heading);font-weight:800;letter-spacing:-.01em;color:var(--ink)}
.pa-total{font-size:var(--fs-body);font-weight:600;color:var(--ink-2)}
.pa-empty{margin:0;color:var(--ink-2);font-size:var(--fs-body);line-height:1.45}
.pa-flash{display:flex;align-items:center;gap:var(--sp-2);margin:0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--success-bg);color:var(--success);font-weight:600;font-size:var(--fs-body)}
.pa-flash span{color:var(--success)}
.pa-needs-coverage{display:flex;align-items:flex-start;gap:var(--sp-3);margin:0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--warning-bg);color:var(--ink);font-size:var(--fs-body);line-height:1.4}
.pa-needs-coverage svg{flex:none;color:var(--warning);margin-top:2px}
.pa-needs-coverage :is(span,strong){color:var(--ink)}
.pa-list,.pa-crew,.pa-days,.pa-certs,.pa-warns,.pa-notes{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.pa-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk)}
.pa-entry{display:grid;gap:2px;min-width:0}
.pa-entry strong{font-size:var(--fs-title);font-weight:800;color:var(--ink)}
.pa-entry-main{font-size:var(--fs-body);color:var(--ink);font-variant-numeric:tabular-nums}
.pa-entry small{font-size:var(--fs-body);color:var(--ink-2)}
.pa-edit{flex:none;min-width:84px}
.pa-add{width:100%}
.pa-form{gap:var(--sp-4)}
.pa-field{display:grid;gap:var(--sp-2);min-width:0}
:root .pa-field .fs-label{margin-bottom:0}
.pa-row{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:var(--sp-3);align-items:start}
.pa-unit select{padding-inline:var(--sp-3)}
.pa-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.pa-chip{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:48px;padding:0 var(--sp-4);border:1.5px solid var(--line-input);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--fs-body);font-weight:600;cursor:pointer}
.pa-chip small{font-size:var(--fs-meta);font-weight:600;color:var(--ink-2)}
.pa-chip.on{background:var(--navy);border-color:var(--navy);color:var(--surface)}
.pa-stepper{display:grid;grid-template-columns:64px minmax(0,1fr) 64px;gap:var(--sp-3);align-items:center}
.pa-step{min-height:56px;border:1.5px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--fs-display);font-weight:800;line-height:1;cursor:pointer}
.pa-step:disabled{background:var(--neutral-bg);color:var(--ink-3);cursor:default}
.pa-crew-n{text-align:center;font-size:var(--fs-heading);font-weight:800;color:var(--ink)}
.pa-rate{display:flex;align-items:center;gap:var(--sp-2);margin:0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--info-bg);color:var(--info);font-size:var(--fs-body);font-weight:600}
.pa-rate svg{flex:none}
.pa-confirm{display:grid;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border:1.5px solid var(--danger);border-radius:var(--r-md);background:var(--danger-bg)}
.pa-confirm p{margin:0;color:var(--ink);font-size:var(--fs-body)}
.pa-danger,.field-sheet .button.pa-danger{background:var(--danger);border-color:var(--danger);color:var(--surface)}
.pa-danger span{color:var(--surface)}
.pa-missing{margin:0;text-align:center;color:var(--ink-2);font-size:var(--fs-body)}
.pa-pill{display:inline-flex;align-items:center;min-height:32px;padding:0 var(--sp-3);border-radius:var(--r-pill);font-size:var(--fs-meta);font-weight:800;background:var(--neutral-bg);color:var(--ink-2)}
.pa-pill.ok{background:var(--success-bg);color:var(--success)}
.pa-pill.soon{background:var(--warning-bg);color:var(--warning)}
.pa-pill.bad{background:var(--danger-bg);color:var(--danger)}
.pa-site{display:flex;align-items:center;gap:var(--sp-2);margin:0;font-size:var(--fs-title);color:var(--ink)}
.pa-site svg{color:var(--accent);flex:none}
.pa-since{margin:0;font-size:var(--fs-title);color:var(--ink-2)}
.pa-now .button{width:100%}
.pa-code{border-top:1px solid var(--line);padding-top:var(--sp-3)}
.pa-code summary{min-height:48px;display:flex;align-items:center;font-size:var(--fs-body);font-weight:600;color:var(--navy);cursor:pointer}
.pa-warns li,.pa-notes li{display:flex;gap:var(--sp-2);align-items:flex-start;padding:var(--sp-3);border-radius:var(--r-md);font-size:var(--fs-body);line-height:1.4;background:var(--warning-bg);color:var(--ink)}
.pa-warns li svg,.pa-notes li svg{flex:none;color:var(--warning);margin-top:1px}
.pa-warns li span,.pa-notes li span{color:var(--ink)}
.pa-warns li.expired,.pa-warns li.missing{background:var(--danger-bg)}
.pa-warns li.expired svg,.pa-warns li.missing svg{color:var(--danger)}
.pa-dl{display:grid;gap:var(--sp-2);margin:0}
.pa-dl>div{display:flex;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--line)}
.pa-dl>div:last-child{border-bottom:0}
.pa-dl dt{color:var(--ink-2);font-size:var(--fs-body)}
.pa-dl dd{margin:0;font-weight:800;color:var(--ink);text-align:right;font-size:var(--fs-body)}
.pa-sub{margin:var(--sp-2) 0 0;font-size:var(--fs-body);font-weight:800;color:var(--ink-2)}
.pa-certs li{display:flex;justify-content:space-between;gap:var(--sp-3);font-size:var(--fs-body);color:var(--ink)}
.pa-certs small{font-size:var(--fs-body);color:var(--ink-2)}
.pa-crew li{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--line)}
.pa-crew li:last-child{border-bottom:0}
.pa-who{display:grid;min-width:0}
.pa-who strong{font-size:var(--fs-title);color:var(--ink)}
.pa-who small{font-size:var(--fs-body);color:var(--ink-2)}
.pa-times{display:grid;justify-items:end;gap:4px;font-size:var(--fs-body);color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.pa-seg{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2)}
@media (min-width:761px){
.pa-seg{grid-template-columns:repeat(4,minmax(0,1fr))}
}
.pa-seg-btn{min-height:48px;padding:0 var(--sp-3);border:1.5px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--fs-body);font-weight:600;cursor:pointer}
.pa-seg-btn.on{background:var(--navy);border-color:var(--navy);color:var(--surface)}
.pa-range{margin:0;color:var(--ink-2);font-size:var(--fs-body)}
.pa-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}
.pa-tile{display:grid;gap:4px;padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-raised);text-align:center}
.pa-tile span{font-size:var(--fs-body);font-weight:600;color:var(--ink-2)}
.pa-tile strong{font-size:var(--fs-heading);font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.pa-day{padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);display:grid;gap:var(--sp-2);list-style:none}
.pa-day-head{display:flex;justify-content:space-between;gap:var(--sp-3);align-items:baseline}
.pa-day-head strong{font-size:var(--fs-title);color:var(--ink)}
.pa-day-head span{font-size:var(--fs-body);color:var(--ink-2)}
.pa-day-nums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2);margin:0}
.pa-day-nums dt{font-size:var(--fs-meta);color:var(--ink-2)}
.pa-day-nums dd{margin:0;overflow-wrap:anywhere;font-size:var(--fs-title);font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.pa-day-note{margin:0;font-size:var(--fs-body);color:var(--ink-2)}
.pa-links{margin-top:var(--sp-3)}
.pa-links:has(button:only-child){grid-template-columns:1fr}
@media (min-width:1000px){
.field-home>.pa-links{grid-column:1/-1;grid-row:auto}
.pa-screen{max-width:1120px}
.pa-pay-screen .pa-days{grid-template-columns:repeat(auto-fit,minmax(min(100%,480px),1fr))}
.pa-crew-screen{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;column-gap:var(--sp-6)}
.pa-crew-screen>*{grid-column:1}
.pa-crew-screen>.pa-head,.pa-crew-screen>.form-error,.pa-crew-screen>.pa-needs-coverage{grid-column:1/-1}
.pa-crew-screen>.pa-hms{grid-column:2;grid-row:2 / span 3}
}
@media (max-width:480px){
.pa-row{grid-template-columns:minmax(0,1fr) 104px}
.pa-tile strong{font-size:var(--fs-heading)}
}
.pa-chip.on small{color:var(--surface);opacity:1}
.app .table-wrap td small,.app .table-wrap td .table-primary>span,.app .table-wrap td .customer-link small{font-size:var(--fs-meta);color:var(--ink-3)}
.app .toolbar .muted,.app .list-foot{font-size:var(--fs-meta);color:var(--ink-2)}
.app .page-header+.toolbar,.app .money-metrics+.toolbar{margin-top:var(--sp-4)}
.day-picker{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;max-width:100%}
.day-step,.day-current{min-height:var(--target);border:1px solid var(--line-input);background:var(--surface);color:var(--ink);border-radius:var(--r-md);font:inherit;font-weight:600}
.day-step{width:var(--target);display:grid;place-items:center;cursor:pointer;padding:0}
.day-current{position:relative;display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-4);cursor:pointer;min-width:0;flex:1 1 220px;justify-content:center}
.day-current span{font-size:var(--fs-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.day-current input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;padding:0;min-height:0}
.day-current input::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;cursor:pointer}
.day-current:focus-within{outline:var(--focus-width) solid var(--info);outline-offset:var(--focus-offset)}
@media (max-width:480px){
.page-header .header-actions .day-picker{width:100%;flex-wrap:nowrap}
.day-current{flex:1 1 auto}
}
.lists-cards{display:grid;gap:var(--sp-3);margin:0 0 var(--sp-4)}
.lists-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4);box-shadow:var(--shadow-raised);display:grid;gap:var(--sp-3)}
.lists-card-main{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--target);background:none;border:0;padding:0;text-align:left;color:var(--ink);cursor:pointer;font:inherit}
.lists-card-main>svg:last-child{flex:none;color:var(--ink-3);margin-left:auto}
.lists-card-title{display:grid;gap:2px;min-width:0;flex:1}
.lists-card-title strong{font-size:var(--fs-body);font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.lists-card-title small{font-size:var(--fs-meta);color:var(--ink-3);margin:0;overflow-wrap:anywhere}
.lists-card-main .badge{flex:none}
.lists-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3) var(--sp-4);margin:0;padding-top:var(--sp-3);border-top:1px solid var(--line)}
.lists-facts>div{min-width:0}
.lists-facts dt{font-weight:600;color:var(--ink-3);margin:0 0 2px}
.lists-facts dd{margin:0;font-size:var(--fs-body);color:var(--ink);overflow-wrap:anywhere}
.lists-facts .wide{grid-column:1/-1}
.lists-card-actions .button{justify-content:center;min-height:var(--target)}
.cal-agenda{display:grid;gap:var(--sp-5)}
.cal-agenda-head{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3)}
.cal-agenda-head strong{font-size:var(--fs-body);color:var(--ink)}
.cal-agenda-head small{display:block;margin:0;font-size:var(--fs-meta)}
.cal-agenda-empty{margin:0;padding:var(--sp-4);border:1px dashed var(--line-input);border-radius:var(--r-lg);color:var(--ink-2);font-size:var(--fs-body)}
@media (max-width:760px){
.app .metrics.money-metrics{box-shadow:none;grid-template-columns:1fr;gap:var(--sp-3);margin:var(--sp-4) 0}
.app .money-metrics .metric{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:2px var(--sp-3);min-width:0}
.app .money-metrics .metric>span{font-weight:600;color:var(--ink-2)}
.app .money-metrics .metric>strong{color:var(--ink);text-align:right}
.app .money-metrics .metric>small{grid-column:1/-1;font-size:var(--fs-meta)}
.app .itinerary .job-row>:is(.job-thumb,.timeline-dot,svg,[class*=thumb]){display:none}
.app .itinerary .job-row time{min-width:0}
.app .itinerary .job-row .job-row-body strong{font-size:var(--fs-body);color:var(--ink)}
.app .itinerary .job-row .job-row-body>span{font-size:var(--fs-body);color:var(--ink-2)}
}
.finance-advanced>section>.section-title h2{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.finance-advanced :is(select,input,textarea){max-width:100%;min-width:0}
.finance-advanced .form-actions{flex-wrap:wrap}
@media (max-width:760px){
.finance-advanced{padding:var(--sp-4)}
.finance-advanced .finance-subpanel,.finance-advanced .service-finance-grid>section{margin-left:0;margin-right:0}
.finance-advanced .service-finance-grid{grid-template-columns:1fr}
.finance-advanced .section-title{flex-wrap:wrap;gap:var(--sp-2)}
.finance-advanced .form-actions .button{justify-content:center;min-height:var(--target)}
.finance-advanced .form-grid{grid-template-columns:1fr}
}
.app .inline-note,.app .calendar-note,.app .calendar-foot,.app .metric>small,.app .money-metrics .metric small,.app .calendar-worker small,.app .worker-label,.finance-advanced small,.finance-advanced summary,.finance-advanced .inline-note,.app :is(.table-wrap,.lists-card,.itinerary,.calendar-job,.cal-agenda) .badge,.app :is(.page-header,.toolbar,.lists-card,.calendar-scroll) .button span{font-size:var(--fs-meta)}
.app .calendar-job>span:first-child{font-size:var(--fs-meta);font-weight:600}
.app .calendar-job strong{font-size:var(--fs-body)}
.app .calendar-job>small{font-size:var(--fs-meta)}
.app .calendar-job.tone-1>small,.app .calendar-job.tone-1>span:first-child,.app .calendar-job.tone-2>small,.app .calendar-job.tone-2>span:first-child,.app .calendar-job.tone-0>small,.app .calendar-job.tone-0>span:first-child{color:var(--ink-2)}
.app .calendar-job strong{color:var(--ink)}
.app .time-rail>div{font-size:var(--fs-meta);color:var(--ink-2)}
.lists-facts dt{font-size:var(--fs-meta)}
.app .day-picker{flex-wrap:nowrap}
.app .day-current{flex:0 1 250px}
@media (max-width:480px){
.app .day-current{flex:1 1 auto}
}
@media (max-width:760px){
.finance-advanced .finance-summary{padding:0}
.finance-advanced>section>.section-title{padding:0;margin:var(--sp-3) 0}
.finance-advanced .finance-subpanel{margin:var(--sp-3) 0}
}
.finance-advanced .badge,.app .slim-note p{font-size:var(--fs-meta)}
.finance-advanced .section-title{padding:0;margin-left:0;margin-right:0}
.finance-advanced .section-title>div{padding:0;margin:0}
.finance-advanced .finance-subpanel>*{margin-left:0;margin-right:0}
@media (max-width:760px){
.finance-advanced[open]>summary{margin-bottom:var(--sp-2)}
}
.app .home-status .subtle-link{white-space:nowrap}
.app .service-owner-grid{margin:var(--sp-4) var(--sp-6)}
.app .service-owner-grid>div{background:var(--surface-sunk);border-color:var(--line)}
.app .service-owner-grid>div span{color:var(--ink-2);font-size:var(--fs-meta)}
.app .service-owner-summary>small{display:block;padding:0 var(--sp-6) var(--sp-5);color:var(--ink-2);font-size:var(--fs-meta)}
@media (max-width:760px){
.app .service-owner-grid{margin:var(--sp-4)}
.app .service-owner-summary>small{padding:0 var(--sp-4) var(--sp-4)}
}
.app .attention-card{padding:var(--sp-5) var(--sp-6);border-top:1px solid var(--line)}
.app .attention-card-head h4{margin:0;color:var(--ink)}
.app .attention-card-head p{margin:var(--sp-1) 0 0;color:var(--ink-2);font-size:var(--fs-body)}
.app .attention-evidence{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);margin:var(--sp-3) 0 0}
.app .attention-evidence strong{color:var(--ink-2);font-weight:600}
.app .attention-evidence span{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:var(--r-pill);background:var(--neutral-bg);color:var(--ink-2)}
.app .attention-controls input{color:var(--ink)}
@media (max-width:760px){
.app .attention-card{padding:var(--sp-4)}
.app .attention-controls input{grid-column:1/-1;order:-2}
.app .attention-controls .button{min-width:0;justify-content:center}
.app .attention-controls .button span{white-space:normal;text-align:center}
.app .attention-controls .button.primary{grid-column:1/-1;order:-1;min-height:var(--target-primary)}
.app .attention-controls .button:last-child:not(.primary){grid-column:1/-1;order:2}
.app .today-panel .job-row,.app .itinerary .job-row{display:grid;grid-template-columns:56px auto minmax(0,1fr);grid-template-areas:"time body body" ". badge worker";gap:var(--sp-2) var(--sp-3);align-items:start;padding:var(--sp-4);min-height:0;width:100%;text-align:left}
.app .today-panel .job-row>:is(.job-thumb,.timeline-dot,svg),.app .itinerary .job-row>:is(.job-thumb,.timeline-dot,svg){display:none}
.app .today-panel .job-row time,.app .itinerary .job-row time{grid-area:time;font-size:var(--fs-body);font-weight:600;color:var(--ink)}
.app .today-panel .job-row .job-row-body,.app .itinerary .job-row .job-row-body{grid-area:body;min-width:0}
.app .today-panel .job-row .badge,.app .itinerary .job-row .badge{grid-area:badge;justify-self:start;margin:0}
.app .today-panel .job-row .worker-label,.app .itinerary .job-row .worker-label{grid-area:worker;display:inline-flex;align-items:center;gap:var(--sp-2);align-self:center;min-width:0;font-size:var(--fs-meta);color:var(--ink-2)}
}
.app .home-grid .today-panel .job-row .worker-label,.app .home-grid .recent-row small{color:var(--ink-2)}
.app .quiet-note small,.app .recent-row small{font-size:var(--fs-meta);color:var(--ink-2)}
.app .quiet-note small{display:block;margin-top:var(--sp-2);line-height:1.5}
.app .recent-row{align-items:flex-start}
.app .recent-row .mini-check{color:var(--success);background:var(--success-bg)}
@media (min-width:1000px){
.app .home-grid{align-items:start}
}
.app .day-queue{align-items:stretch}
.app .day-card{display:flex;flex-direction:column}
.app .day-card-actions{margin-top:auto;padding-top:var(--sp-2)}
.app .day-done{align-content:center}
.app .day-done h2{font-size:var(--fs-heading);text-wrap:balance}
@media (max-width:760px){
.app .day-card{padding:var(--sp-4);gap:var(--sp-2)}
.app .day-card-summary{font-size:var(--fs-body)}
.app .day-card-actions{display:flex;flex-wrap:nowrap;gap:var(--sp-2)}
.app .day-card-actions .button{flex:1 1 0;min-width:0;padding-inline:var(--sp-2);justify-content:center}
.app .day-card-actions .button.day-approve{flex:1.7 1 0;order:0;min-height:var(--target-primary);min-width:0}
.app .day-card-actions .button span{white-space:normal;text-align:center}
}
.app .people-filter{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin:0 0 var(--sp-5)}
.app .people-filter button{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:0 var(--sp-4);border:1px solid var(--line-input);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);font-size:var(--fs-meta);font-weight:600}
.app .people-filter button.selected{background:var(--navy);border-color:var(--navy);color:var(--surface)}
.app .people-filter button.selected span{background:color-mix(in srgb,var(--surface) 20%,transparent);color:var(--surface)}
.app .people-filter button.selected .avatar{background:var(--surface);color:var(--navy)}
.app .people-filter button span:not(.avatar){display:inline-grid;place-items:center;min-width:24px;padding:0 6px;border-radius:var(--r-pill);background:var(--neutral-bg);color:var(--ink);font-size:var(--fs-meta)}
@media (max-width:760px){
.app .people-filter button{flex:1 1 28%}
}
.app .day-side{align-self:start}
.app .day-side .quiet-note{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-raised)}
.app .day-side .quiet-note svg{color:var(--accent)}
.app .day-side .quiet-note h3{font-size:var(--fs-title);font-weight:800;color:var(--ink)}
.app .day-side .quiet-note p,.app .day-side .small-panel p{color:var(--ink-2);font-size:var(--fs-body)}
@media (min-width:1000px){
.app .day-side{position:sticky;top:var(--sp-6)}
}
.app .calendar-worker{display:flex;align-items:center;gap:var(--sp-2)}
.cal-dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--ink-2)}
.cal-dot.tone-0{background:var(--accent)}
.cal-dot.tone-1{background:var(--info)}
.cal-dot.tone-2{background:var(--success)}
.cal-dot.tone-3{background:var(--ink-2)}
.app .worker-lane{position:relative}
.app .calendar-job{border:1px solid var(--line-input);background:var(--surface);color:var(--ink)}
.app .calendar-job.tone-0{background:var(--accent-tint);border-color:var(--focus-on-dark);border-left-color:var(--accent)}
.app .calendar-job.tone-1{background:var(--info-bg);border-color:var(--info-bg);border-left-color:var(--info)}
.app .calendar-job.tone-2{background:var(--success-bg);border-color:var(--line);border-left-color:var(--success)}
.app .calendar-job.tone-3{background:var(--neutral-bg);border-color:var(--line-input);border-left-color:var(--ink-2)}
.app .calendar-job .badge{font-size:var(--fs-meta);background:color-mix(in srgb,var(--surface) 75%,transparent)}
.lane-empty{position:absolute;inset:var(--sp-4) var(--sp-3) auto;margin:0;padding:var(--sp-3);border:1px dashed var(--line-input);border-radius:var(--r-md);text-align:center;color:var(--ink-2);font-size:var(--fs-meta);background:var(--surface)}
.app .calendar-foot{display:block;margin-top:var(--sp-4);color:var(--ink-2);font-size:var(--fs-meta)}
.app .calendar-note{color:var(--ink-2)}
.lists-meta{list-style:none;margin:0;padding:var(--sp-3) 0 0;border-top:1px solid var(--line);display:grid;gap:var(--sp-2) var(--sp-4)}
.lists-meta li{display:flex;align-items:center;gap:var(--sp-2);min-width:0;color:var(--ink-2);font-size:var(--fs-meta)}
.lists-meta li svg{flex:none;color:var(--ink-3)}
.lists-meta li span{min-width:0;overflow-wrap:anywhere}
.cal-agenda .lists-meta li{color:var(--ink);font-size:var(--fs-body);font-weight:600}
.cal-agenda .lists-meta li svg{color:var(--accent)}
.cal-agenda .lists-card{gap:var(--sp-2)}
.customer-card .lists-meta{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.customer-card .lists-meta li:first-child,.customer-card .lists-meta li:last-child{grid-column:1/-1}
.customer-card .lists-card-main .badge{align-self:flex-start}
.live-board .lb-row{grid-template-columns:minmax(210px,270px) 190px minmax(0,1fr);gap:var(--sp-4)}
.live-board .lb-who{order:1}
.live-board .lb-chip{order:2;justify-self:start}
.live-board .lb-job{order:3;min-width:0}
.lb-chip,.lb-key{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 var(--sp-4);border:0;border-radius:var(--r-pill);background:var(--neutral-bg);color:var(--ink-2);font-size:var(--fs-meta);font-weight:600;white-space:nowrap}
.lb-key{min-height:30px;padding:0 var(--sp-3)}
.lb-chip-in_progress,.lb-key-in_progress{background:var(--info-bg);color:var(--info)}
.lb-chip-done,.lb-key-done{background:var(--success-bg);color:var(--success)}
.lb-chip-late,.lb-key-late{background:var(--warning-bg);color:var(--warning)}
.lb-chip-waiting{background:var(--neutral-bg);color:var(--ink-2)}
.lb-chip-no_jobs{background:transparent;color:var(--ink-3);padding:0;font-weight:600}
.live-board .lb-who small,.live-board .lb-job-link small{color:var(--ink-2)}
.lb-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--sp-4) var(--sp-6);margin:var(--sp-5) 0 0;padding:var(--sp-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}
.lb-legend>div{display:grid;gap:var(--sp-2);justify-items:start}
.lb-legend dt,.lb-legend dd{margin:0}
.lb-legend dd{color:var(--ink-2);font-size:var(--fs-meta)}
@media (max-width:760px){
.live-board .lb-row{grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-2) var(--sp-3);align-items:center}
.live-board .lb-who{grid-column:1}
.live-board .lb-chip{grid-column:2;grid-row:1}
.live-board .lb-job{grid-column:1/-1;grid-row:2}
}
.app .live-board-page .page-header .header-actions>.button.lb-refresh{flex:0 0 auto;width:auto;background:var(--surface);color:var(--ink)}
.app .jobs-desktop table{table-layout:fixed;width:100%}
.app .jobs-desktop th:nth-child(1){width:36%}
.app .jobs-desktop th:nth-child(2){width:19%}
.app .jobs-desktop th:nth-child(3){width:23%}
.app .jobs-desktop th:nth-child(4){width:14%}
.app .jobs-desktop th:nth-child(5){width:8%}
.app .jobs-desktop td small{color:var(--ink-2);font-size:var(--fs-meta)}
.app .jobs-desktop td:last-child{text-align:right}
@media (max-width:760px){
.app .mobile-record-head{gap:var(--sp-3)}
.app .mobile-record-name{flex:1;min-width:0;display:grid;gap:2px}
.app .mobile-record-name strong{font-size:var(--fs-body);color:var(--ink)}
.app .mobile-record-title{color:var(--ink-2);font-size:var(--fs-body)}
.app .mobile-record-head>svg:last-child{flex:none;color:var(--ink-3)}
.app .mobile-record-facts{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-2) var(--sp-3);align-items:center;margin:0;padding-top:var(--sp-3);border-top:1px solid var(--line);font-size:var(--fs-meta);color:var(--ink-2)}
.app .mobile-record-facts>span{display:inline-flex;align-items:center;gap:var(--sp-2);min-width:0}
.app .mobile-record-facts .badge{grid-column:2;grid-row:1/span 2}
}
.app .table-wrap th.num,.app .table-wrap td.num{text-align:right;padding-right:var(--sp-10);font-variant-numeric:tabular-nums}
.app .table-wrap td.num strong{font-weight:600}
.app .table-wrap td.zero{color:var(--ink-3)}
.app .table-wrap td.owes{color:var(--ink);font-weight:600}
.site-access h3{margin:0 0 var(--sp-3);font-size:var(--fs-body);font-weight:800;color:var(--ink)}
.site-access .field>label{font-size:var(--fs-meta);font-weight:400;color:var(--ink-2)}
.modal-body .customer-hero .badge{margin-top:var(--sp-2)}
.site-equipment-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
.site-equipment-head>span{display:inline-flex;align-items:center;gap:var(--sp-2)}
.site-equipment-head .badge{align-self:center;flex:none}
.site-equipment-head .badge::before,.site-equipment-head .badge::after{content:none}
@media (max-width:760px){
.live-board .lb-chip{font-size:var(--fs-meta);padding:0 var(--sp-3);min-height:32px}
}
.app .decision-row p,.app .kpi small{font-size:var(--fs-meta);color:var(--ink-2)}
.app .decision-row strong{font-size:var(--fs-body);color:var(--ink)}
.app .review-link{font-size:var(--fs-meta);color:var(--accent);font-weight:600}
.app .recent-row>div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:0 var(--sp-3);flex:1;min-width:0}
.app .recent-row>div strong{font-size:var(--fs-meta);font-weight:600;color:var(--ink)}
.app .recent-row>div small{flex:none}
@media (max-width:760px){
.site-equipment-head>span{display:grid;grid-template-columns:auto 1fr;column-gap:var(--sp-2)}
.site-equipment-head>span>small{grid-column:2}
}
@media (max-width:480px){
.app .page-header .header-actions .day-back{width:auto;align-self:flex-start;min-height:var(--target)}
}
.app .day-done{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-raised);max-width:640px;min-height:0;margin:var(--sp-8) auto;padding:var(--sp-10) var(--sp-6)}
.app .day-done .mascot{max-height:220px}
@media (max-width:760px){
.app .day-done{margin:var(--sp-4) 0;padding:var(--sp-6) var(--sp-4)}
.app .day-done .mascot{height:150px;max-height:150px}
.app .day-done h2{font-size:var(--fs-title)}
}
.app .attention-panel>.button{margin:var(--sp-4) var(--sp-6)}
@media (max-width:760px){
.app .attention-panel>.button{margin:var(--sp-3) var(--sp-4);width:calc(100% - var(--sp-8));justify-content:center}
}
.ops-page{display:grid;gap:var(--sp-6);max-width:none}
.ops-wide{grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));align-items:start}
.ops-wide>.page-header,.ops-wide>.ops-sms-state,.ops-wide>.form-error{grid-column:1/-1}
.ops-page>*{min-width:0}
.ops-section{display:grid;gap:var(--sp-4)}
.ops-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:var(--sp-4);align-items:start}
.ops-card{display:grid;gap:var(--sp-4);padding:var(--sp-5) var(--sp-6)}
.ops-card h2,.ops-card h3{margin:0;color:var(--ink);font-weight:800;line-height:var(--lh-heading)}
.ops-card h2{font-size:var(--fs-title)}
.ops-card h3{font-size:var(--fs-body)}
.ops-card h4{margin:0;font-size:var(--fs-body);color:var(--ink)}
.ops-card-head{display:flex;align-items:flex-start;gap:var(--sp-3)}
.ops-card-head>div{flex:1 1 auto;min-width:0}
.ops-card-head p{margin:var(--sp-1) 0 0;color:var(--ink-2);font-size:var(--fs-body)}
.ops-card-head .badge,.ops-card-head .count-pill{flex:0 0 auto}
.ops-icon{flex:0 0 auto;display:grid;place-items:center;width:44px;height:44px;border-radius:var(--r-md);background:var(--accent-tint);color:var(--accent)}
.ops-icon.off{background:var(--neutral-bg);color:var(--ink-2)}
.ops-hint{margin:0;color:var(--ink-2);font-size:var(--fs-body);line-height:var(--lh-body)}
.ops-empty{margin:0;color:var(--ink-2);font-size:var(--fs-body)}
.app .ops-page .badge,.app .weather-card .badge,.app .weather-missing .badge,.app .attention-fix .badge{font-size:var(--fs-meta);font-weight:600}
.ops-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.ops-actions .button{min-height:var(--target)}
.ops-actions .button.primary{min-height:var(--target-primary);min-width:140px}
.ops-form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}
.ops-edit{display:grid;gap:var(--sp-4);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk)}
.ops-edit .field input,.ops-edit .field select,.ops-form-row .field input,.ops-form-row .field select{min-height:var(--target);font-size:var(--fs-body)}
.ops-edit .field small{font-size:var(--fs-body);color:var(--ink-2)}
.ops-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-3) var(--sp-4);margin:0}
.ops-facts>div{min-width:0}
.ops-facts dt{color:var(--ink-2);font-size:var(--fs-meta);font-weight:600}
.ops-facts dd{margin:2px 0 0;color:var(--ink);font-size:var(--fs-body);font-weight:600;overflow-wrap:anywhere}
.ops-note{display:flex;gap:var(--sp-3);align-items:flex-start;margin:0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--info-bg);color:var(--ink);font-size:var(--fs-body);line-height:var(--lh-body)}
.ops-note svg{flex:0 0 auto;margin-top:2px}
.ops-note.ok{background:var(--success-bg)}
.ops-note.warn{background:var(--warning-bg)}
.ops-note.neutral{background:var(--neutral-bg)}
.ops-confirm{display:grid;gap:var(--sp-3);padding:var(--sp-4);border:2px solid var(--info);border-radius:var(--r-md);background:var(--surface)}
.ops-confirm:focus{outline:none}
.app .ops-confirm>h4{margin:0;padding:0;font-size:var(--fs-title);line-height:var(--lh-heading)}
.ops-last-badge{display:block;margin-top:var(--sp-1)}
.ops-confirm>ul{margin:0;padding-left:var(--sp-5);display:grid;gap:var(--sp-2);color:var(--ink);font-size:var(--fs-body)}
.ops-confirm-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.ops-confirm-actions .button{min-height:var(--target)}
.ops-confirm-actions .button.primary{min-height:var(--target-primary);min-width:160px}
.ops-switch-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-3) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.ops-switch-row small{display:block;color:var(--ink-2);font-size:var(--fs-body)}
.ops-switch{flex:0 0 auto;position:relative;width:64px;height:48px;border-radius:var(--r-pill);border:2px solid var(--line-input);background:var(--neutral-bg);cursor:pointer;padding:0}
.ops-switch i{position:absolute;top:6px;left:6px;width:32px;height:32px;border-radius:50%;background:var(--ink-3);transition:transform .15s}
.ops-switch.on{background:var(--success);border-color:var(--success)}
.ops-switch.on i{transform:translateX(16px);background:var(--surface)}
.ops-switch:disabled{opacity:.55;cursor:not-allowed}
@media (prefers-reduced-motion:reduce){
.ops-switch i{transition:none}
}
.ops-preview{display:grid;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--r-md);background:var(--surface-sunk);border:1px dashed var(--line-input)}
.ops-preview-label{color:var(--ink-2);font-size:var(--fs-meta);font-weight:600}
.ops-phone-note{display:grid;gap:2px;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-raised);font-size:var(--fs-body);color:var(--ink)}
.ops-phone-app{display:flex;align-items:center;gap:6px;color:var(--ink-2);font-size:var(--fs-meta)}
.ops-phone-note strong{font-size:var(--fs-body)}
.ops-log{display:grid;gap:var(--sp-3)}
.ops-runs{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.ops-runs li{padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.ops-runs p{margin:var(--sp-1) 0 0;color:var(--ink-2);font-size:var(--fs-body)}
.ops-run-when{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-2)}
.ops-run-when strong{font-size:var(--fs-body);color:var(--ink)}
.ops-list{list-style:none;margin:0;padding:0;display:grid}
.ops-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) 0;border-top:1px solid var(--line);min-height:var(--target)}
.ops-list li:first-child{border-top:0}
.ops-list span{display:grid;min-width:0}
.ops-list small{color:var(--ink-2);font-size:var(--fs-body)}
.ops-meter{height:14px;border-radius:var(--r-pill);background:var(--neutral-bg);overflow:hidden}
.ops-meter i{display:block;height:100%;background:var(--info);border-radius:var(--r-pill)}
.weather-reasons{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.weather-reasons li{display:flex;gap:var(--sp-3);align-items:flex-start;color:var(--ink);font-size:var(--fs-body)}
.weather-reasons li svg{flex:0 0 auto;margin-top:2px;color:var(--info)}
.weather-reasons li span{display:grid}
.weather-reasons small{color:var(--ink-2);font-size:var(--fs-body)}
.weather-draft{display:block;margin:0;padding:var(--sp-3);border-radius:var(--r-sm);background:var(--surface-sunk);color:var(--ink);font-style:normal;line-height:var(--lh-body)}
.weather-draft::before,.weather-draft::after{content:none}
.app .day-card.weather-card .weather-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:0}
.app .day-card.weather-card .weather-actions .button{flex:0 1 auto;min-height:var(--target);white-space:normal}
.app .day-card.weather-card .weather-actions .button.day-approve{flex:0 0 auto;min-width:160px}
.app .day-queue .weather-card{grid-column:1/-1}
.weather-forecast{grid-template-columns:repeat(3,minmax(0,1fr))}
.weather-missing{display:grid;gap:var(--sp-3);margin-top:var(--sp-6)}
.weather-missing-card{background:var(--warning-bg);border-color:color-mix(in srgb,var(--warning) 30%,transparent)}
.attention-fix{display:grid;gap:var(--sp-2);margin-top:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--surface-sunk);border:1px solid var(--line)}
.attention-fix.urgency-overdue{background:var(--danger-bg);border-color:var(--danger)}
.attention-fix.urgency-today{background:var(--warning-bg)}
.attention-fix-row>span:not(.badge){flex:1 1 auto;min-width:0;display:grid}
.attention-fix-row .badge{flex:0 0 auto;white-space:nowrap}
.app .ops-page .badge,.app .attention-fix .badge,.app .weather-card .badge,.app .weather-missing .badge,.app .ops-page .count-pill{white-space:nowrap}
.attention-fix-row .button{min-height:var(--target);flex:0 0 auto}
@media (max-width:760px){
.ops-card{padding:var(--sp-4)}
.ops-form-row{grid-template-columns:1fr}
.ops-facts{grid-template-columns:1fr 1fr}
.weather-forecast{grid-template-columns:1fr;gap:var(--sp-2)}
.weather-forecast>div{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3)}
.weather-forecast dd{margin:0;text-align:right}
.app .day-card.weather-card .weather-actions .button,.app .day-card.weather-card .weather-actions .button.day-approve{flex:1 1 100%;min-width:0;justify-content:center}
.app .day-card.weather-card .weather-actions{flex-direction:column;flex-wrap:nowrap;align-items:stretch}
.app .day-card.weather-card .weather-actions .day-approve{order:-1;min-height:var(--target-primary)}
.ops-facts dt,.ops-preview-label,.ops-phone-app,.app .ops-page .badge,.app .weather-card .badge,.app .weather-missing .badge,.app .attention-fix .badge{font-size:var(--fs-body)}
.ops-actions .button,.weather-actions .button{flex:1 1 100%}
.ops-actions .button.primary,.weather-actions .button.primary{min-height:var(--target-primary)}
.ops-confirm-actions .button{flex:1 1 100%}
.ops-confirm-actions .button.primary{min-height:var(--target-primary)}
.attention-fix-row .button{flex:1 1 100%}
.ops-card-head{flex-wrap:wrap}
}
.app .ops-page .count-pill{font-size:var(--fs-meta)}
@media (max-width:760px){
.app .ops-page .count-pill{font-size:var(--fs-body)}
}
.app .hash-text,.app .tech-info pre,.app .tech-info p,.app .tech-info code{font-size:var(--fs-meta);color:var(--ink-2)}
.push-modal .modal-body>p:not(.inline-note):not(.form-error){padding-bottom:var(--sp-3)}
.push-modal .push-device{padding-top:var(--sp-3)}
body .app .attention-fix-row>.badge{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;align-self:center;white-space:nowrap}
body .app .attention-fix-row>.badge .status-dot{flex:none}
body .app .attention-fix-row .button{font-size:var(--fs-meta)}
@media (min-width:761px){
body .app .attention-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3);margin-top:var(--sp-4)}
body .app .attention-controls input{flex:1 1 100%;min-height:var(--target)}
body .app .attention-controls .button{flex:0 0 auto;min-height:var(--target);padding-inline:var(--sp-5)}
body .app .attention-controls .button span{font-size:var(--fs-body)}
body .app .attention-controls .button.primary{margin-left:auto}
}
body .app .service-owner-clear{display:flex;align-items:center;gap:var(--sp-3);margin:var(--sp-4) var(--sp-6);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--success-bg);color:var(--success);font-size:var(--fs-body);font-weight:600}
body .app .service-owner-clear svg{flex:none}
@media (max-width:760px){
body .app .service-owner-clear{margin:var(--sp-4)}
body .app .kpis .kpi:last-child{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"tile label value" "tile note value";align-items:center;column-gap:var(--sp-3);row-gap:0;padding:var(--sp-3) var(--sp-4);min-height:0}
body .app .kpis .kpi:last-child .kpi-tile{grid-area:tile;margin:0}
body .app .kpis .kpi:last-child .kpi-label{grid-area:label;padding:0}
body .app .kpis .kpi:last-child small{grid-area:note;padding:0}
body .app .kpis .kpi:last-child strong{grid-area:value;padding-right:var(--sp-6)}
body .app .kpis .kpi:last-child .kpi-chev{top:50%;bottom:auto;transform:translateY(-50%)}
}
body .app .recent-row>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-3);align-items:baseline}
body .app .recent-row>div strong{font-weight:500}
body .app .recent-row>div small{margin:0;white-space:nowrap}
@media (max-width:760px){
body .app .people-filter{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:var(--sp-1)}
body .app .people-filter button{flex:none}
}
body .app .day-techs ul{list-style:none;margin:var(--sp-3) 0 0;padding:0;display:grid;gap:var(--sp-3)}
body .app .day-techs li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);color:var(--ink)}
body .app .day-techs li span:not(.avatar){font-size:var(--fs-body);font-weight:600}
body .app .day-techs li strong{font-size:var(--fs-meta);color:var(--ink-2);font-weight:600}
body .app .worker-lane{height:auto}
body .app .calendar-job{left:12px;right:12px;margin-top:3px;border-radius:var(--r-sm)}
body .app .calendar-board{min-width:900px}
body .app .cal-agenda p.cal-agenda-empty,body .app .lane-empty{color:var(--ink);border-color:var(--line-input)}
.lb-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin:0 0 var(--sp-4)}
.lb-bar span{color:var(--ink-2);font-size:var(--fs-meta)}
.app .live-board-page .page-header{margin-bottom:var(--sp-4)}
@media (min-width:761px){
body .app .live-board .lb-row{grid-template-columns:minmax(200px,280px) minmax(0,1fr) auto;gap:var(--sp-5);align-items:center}
body .app .live-board .lb-who{order:1}
body .app .live-board .lb-job{order:2}
body .app .live-board .lb-chip{order:3;justify-self:end;min-width:150px}
}
body .app .lb-chip-no_jobs,body .app .live-board .lb-job .muted{color:var(--ink-2)}
body .app .lb-legend{align-items:start}
body .app .lb-legend>div{align-content:start}
body .app .jobs-desktop th:nth-child(1){width:34%}
body .app .jobs-desktop th:nth-child(2){width:23%}
body .app .jobs-desktop th:nth-child(3){width:21%}
body .app .jobs-desktop td small{display:inline;margin:0}
body .app .jobs-desktop td small::before{content:" · "}
body .app .table-wrap td.zero{color:var(--ink-2)}
body .app .table-wrap td .customer-link small,body .app .table-wrap td .table-primary>span{font-size:var(--fs-meta);color:var(--ink-2)}
body .app .list-foot{display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3);justify-content:space-between}
body .app .worker-label.unassigned,body .app .mobile-record-facts .unassigned{color:var(--ink-2)}
body .app .mobile-record-facts .unassigned svg{color:var(--ink-3)}
.lists-card{position:relative}
.lists-card-main::after{content:"";position:absolute;inset:0;border-radius:inherit}
.lists-card-actions{position:relative;z-index:1}
body .app .site-equipment-head{align-items:flex-start}
body .app .site-equipment-head .badge{align-self:flex-start}
.app .pa-page{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4);align-content:start;min-width:0}
.app .pa-page>.tabs{overflow-x:auto;max-width:100%}
.app .pa-page>.tabs{margin:0}
.app .pa-page :is(p,li,dd,dt,td,th,label,select,input,button){font-size:var(--fs-body)}
.app .pa-page small,.app .pa-fineprint{font-size:var(--fs-meta);color:var(--ink-2)}
.app .pa-fineprint{margin:0;line-height:var(--lh-body)}
.app .pa-lead{margin:0;color:var(--ink-2);max-width:62ch;line-height:var(--lh-body)}
.app .pa-loading{color:var(--ink-2);margin:var(--sp-4) 0}
.app .pa-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-3);align-items:end;padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}
.app .pa-filters.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.app .pa-filters .field{margin:0}
.app .pa-page :is(select,input:not([type=checkbox])){min-height:var(--target);width:100%}
.app .pa-alert{display:flex;gap:var(--sp-3);align-items:flex-start;margin:0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);border:1px solid var(--line);line-height:var(--lh-body)}
.app .pa-alert>div{display:grid;gap:2px;flex:1;min-width:0}
.app .pa-alert>svg{flex:none;margin-top:2px}
.app .pa-alert.warn{background:var(--warning-bg);color:var(--warning);border-color:var(--warning)}
.app .pa-alert.danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}
.app .pa-alert.warn strong{color:var(--warning)}
.app .pa-alert .button{flex:none;align-self:center}
.app .pa-status{display:flex;gap:var(--sp-3);align-items:flex-start;padding:var(--sp-4);border-radius:var(--r-lg);border:1px solid var(--line)}
.app .pa-status>div{display:grid;gap:2px;flex:1;min-width:0}
.app .pa-status>svg{flex:none;margin-top:2px}
.app .pa-status.ok{background:var(--success-bg);color:var(--success);border-color:var(--success)}
.app .pa-status.warn{background:var(--warning-bg);color:var(--warning);border-color:var(--warning)}
.app .pa-status span{color:inherit}
.app .pa-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--sp-3)}
.app .pa-metrics.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.app .pa-metric{display:grid;gap:2px;align-content:start;padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);min-width:0}
.app .pa-metric small{color:var(--ink-2);font-weight:600}
.app .pa-metric strong{font-size:var(--fs-heading);line-height:var(--lh-heading);font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.app .pa-metric em{font-style:normal;font-size:var(--fs-meta);color:var(--ink-2)}
.app .pa-metric.strong{background:var(--navy);border-color:var(--navy)}
.app .pa-metric.strong :is(small,strong){color:var(--surface)}
.app .pa-metric.alert{background:var(--warning-bg);border-color:var(--warning)}
.app .pa-metric.alert :is(small,strong){color:var(--warning)}
.app .pa-export{display:flex;flex-wrap:wrap;gap:var(--sp-3)}
.app .pa-export .button{min-height:var(--target)}
.app .pa-emp{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.app .pa-emp>header{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--line);background:var(--surface-sunk)}
.app .pa-emp h2{margin:0;font-size:var(--fs-title);font-weight:800}
.app .pa-emp header p{margin:2px 0 0;color:var(--ink-2);font-size:var(--fs-meta)}
.app .pa-emp-sum{font-size:var(--fs-heading);font-variant-numeric:tabular-nums;font-weight:800;white-space:nowrap}
.app .pa-table{border:0;border-radius:0;box-shadow:none;overflow-x:auto}
.app .pa-table table{width:100%}
.app .pa-table td,.app .pa-table th{vertical-align:top}
.app .pa-table td small{display:block;margin-top:2px}
.app .pa-route{display:block;color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.app .pa-km{display:grid;gap:var(--sp-1);justify-items:end}
.app .pa-page .pa-link{min-height:var(--target);padding:0 var(--sp-2);background:none;border:0;color:var(--accent);font-weight:600;text-decoration:underline;cursor:pointer}
.app .pa-pending{color:var(--warning);font-weight:600}
.app .pa-pending small{color:var(--warning)}
.app .pa-notes{margin:var(--sp-2) 0 0;padding-left:var(--sp-4);color:var(--ink-2);font-size:var(--fs-meta);display:grid;gap:2px;text-align:left}
.app .pa-notes li{font-size:var(--fs-meta)}
.app .pa-page .pa-days{display:grid;gap:var(--sp-3);padding:var(--sp-3)}
.app .pa-page .pa-day{display:grid;gap:var(--sp-2);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.app .pa-page .pa-day>header{display:flex;justify-content:space-between;gap:var(--sp-3);align-items:baseline;border:0;padding:0;background:none}
.app .pa-page .pa-day dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);margin:0}
.app .pa-page .pa-day dt{font-size:var(--fs-meta);color:var(--ink-2)}
.app .pa-page .pa-day dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.app .pa-page .pa-day dd small{display:block}
.app .pa-page .pa-day .pa-km{justify-items:start}
.app .pa-page .pa-day .button{min-height:var(--target);justify-content:center}
.app .pa-warns{display:flex;flex-wrap:wrap;gap:var(--sp-1)}
.app .pa-review{display:grid;gap:0;margin:0 0 var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.app .pa-review>div{display:grid;grid-template-columns:minmax(110px,32%) 1fr;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--line)}
.app .pa-review>div:first-child{border-top:0}
.app .pa-review dt{color:var(--ink-2)}
.app .pa-review dd{margin:0;color:var(--ink);overflow-wrap:anywhere}
.app .pa-review dd small{display:block;color:var(--ink-2)}
.app .pa-cert-line{display:block}
.app .pa-review-title{font-size:var(--fs-title);margin:var(--sp-4) 0 var(--sp-2)}
.app .pa-modal-lead{margin:0 0 var(--sp-2);font-weight:600}
.app .pa-rates{display:grid;gap:var(--sp-4);max-width:880px}
.app .pa-rates fieldset{border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);margin:0 0 var(--sp-4);background:var(--surface);min-width:0}
.app .pa-rates legend{font-weight:800;font-size:var(--fs-body);padding:0 var(--sp-2)}
.app .pa-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3)}
.app .pa-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.app .pa-check{display:flex;gap:var(--sp-3);align-items:center;min-height:var(--target);color:var(--ink)}
.app .pa-check input{width:24px;height:24px;min-height:0;flex:none}
.app .pa-tiers{display:grid;gap:var(--sp-3)}
.app .pa-tier,.app .pa-cert{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.4fr) auto;gap:var(--sp-3);align-items:end;padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk)}
.app .pa-cert{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) auto;margin-bottom:var(--sp-3)}
.app .pa-tier .field,.app .pa-cert .field{margin:0}
.app .pa-rates-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3)}
.app .pa-rates-actions .button{min-height:var(--target-primary)}
.app .pa-enable{padding:var(--sp-5) var(--sp-6);background:var(--accent-tint);border:1px solid var(--line);border-radius:var(--r-lg);display:grid;gap:var(--sp-3);justify-items:start}
.app .pa-enable h2{margin:0;font-size:var(--fs-title)}
.app .pa-enable p{margin:0;color:var(--ink-2)}
.app .pa-enable ol{margin:0;padding-left:var(--sp-6);display:grid;gap:var(--sp-2);line-height:var(--lh-body)}
.app .pa-enable .button{min-height:var(--target-primary)}
.app .pa-sites{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-3)}
.app .pa-sites li{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}
.app .pa-sites li>div{display:grid;gap:2px;min-width:0}
.app .pa-sites strong{overflow-wrap:anywhere}
.app .pa-qr{display:grid;gap:var(--sp-3);justify-items:center;text-align:center}
.app .pa-qr .invite-qr{width:min(100%,320px);height:auto;border:1px solid var(--line);border-radius:var(--r-md)}
.app .pa-qr-site{display:grid;gap:2px;margin:0}
.app .pa-qr .form-actions{justify-content:center}
@media (max-width:760px){
.app .pa-page :is(p,li,dd,dt,label,select,input,button,small),.app .pa-page :is(small,.badge,.field label,.field small,.tabs button,.page-header p,.inline-note,.form-error,.pa-fineprint,.pa-day dt,.pa-notes li,.pa-emp header p,.pa-metric small,.pa-metric em){font-size:var(--fs-body)}
.app .pa-page .tabs button{min-height:var(--target);padding-inline:var(--sp-2)}
.app .pa-page .tabs{gap:0}
.app .pa-filters,.app .pa-filters.two,.app .pa-grid,.app .pa-grid.two{grid-template-columns:1fr}
.app .pa-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
.app .pa-metrics.three{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}
.app .pa-metrics.three .pa-metric{padding:var(--sp-3)}
.app .pa-metrics.three .pa-metric strong{font-size:var(--fs-title)}
.app .pa-metric.strong{grid-column:1/-1}
.app .pa-export .button{flex:1 1 100%;justify-content:center;min-height:var(--target-primary)}
.app .pa-alert{flex-wrap:wrap}
.app .pa-alert .button{width:100%;justify-content:center}
.app .pa-emp>header{padding:var(--sp-4)}
.app .pa-tier,.app .pa-cert{grid-template-columns:1fr 1fr}
.app .pa-tier .field:nth-child(3),.app .pa-cert .field:first-child{grid-column:1/-1}
.app .pa-tier .button,.app .pa-cert .button{grid-column:1/-1;justify-content:center}
.app .pa-review>div{grid-template-columns:1fr;gap:2px}
.app .pa-sites li{flex-direction:column;align-items:stretch}
.app .pa-sites .button,.app .pa-rates-actions .button,.app .pa-enable .button{width:100%;justify-content:center}
.app .pa-rates fieldset{padding:var(--sp-4)}
}
@media print{
.pa-qr-modal{position:static;inset:auto;width:100%;max-width:none;box-shadow:none;border:0}
.pa-qr-modal .modal-head button,.pa-qr-modal .form-actions{display:none}
}
.login-page.pub{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:stretch;justify-items:stretch;padding:0;min-height:100dvh;background:var(--canvas);overflow:visible;position:static}
.pub-aside{display:flex;flex-direction:column;gap:var(--sp-8);padding:var(--sp-12);color:var(--surface);background:var(--navy)}
.pub-aside .login-brand{position:static;align-self:flex-start;margin:0;display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-heading);font-weight:800;letter-spacing:-.03em;color:var(--surface)}
.pub-aside .brand-mark{background:var(--accent-mark);color:var(--navy);width:40px;height:40px;border-radius:var(--r-md)}
.pub-aside-body{display:flex;flex-direction:column;justify-content:center;gap:var(--sp-6);flex:1}
.pub-mascot{width:auto;height:auto;object-fit:contain;align-self:flex-start}
.pub-tagline{margin:0;font-weight:800;letter-spacing:-.02em;color:var(--surface)}
.pub-points{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-3)}
.pub-points li{position:relative;padding-left:var(--sp-8);line-height:1.4}
.pub-points li::before{content:"";position:absolute;left:0;top:1px;width:20px;height:20px;border-radius:50%;background:var(--accent-mark) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='m5.5 10.5 3 3 6-6.5' fill='none' stroke='%230b1a38' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/20px no-repeat}
.pub-main{display:flex;align-items:center;justify-content:center;padding:var(--sp-10) var(--sp-8);min-width:0}
.login-page.pub .login-card{margin:0;width:100%;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-raised)}
.login-page.pub .login-card h1{margin:0 0 var(--sp-3);letter-spacing:-.035em;color:var(--ink)}
.login-page.pub .login-card>p{max-width:none;margin:0 0 var(--sp-4);font-size:var(--fs-body);line-height:1.5}
.login-page.pub .login-card form{max-width:none;margin:var(--sp-6) 0 0;text-align:left}
.login-page.pub .login-card .demo-roles{margin-top:var(--sp-6);width:100%;max-width:none}
.login-page.pub .login-card .button.primary{min-height:var(--target-primary);width:100%;justify-content:center}
.login-page.pub .login-card .role-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin-top:var(--sp-3)}
.login-page.pub .login-card .role-pair .button{width:100%;justify-content:center}
.login-page.pub .login-card .field small,.login-page.pub .login-card .remember-device small{font-size:var(--fs-body);line-height:1.45}
.login-page.pub .login-card .field label,.login-page.pub .remember-device{color:var(--ink)}
.login-page.pub .form-error{margin:var(--sp-4) 0 0;color:var(--danger);border-radius:var(--r-sm)}
.pub-credentials{margin:var(--sp-5) 0 var(--sp-4);background:var(--accent-tint);border:1px solid var(--line);border-radius:var(--r-md);display:grid}
.pub-credentials dl{margin:0;display:grid;gap:0}
.pub-credentials dl>div+div{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--line-input)}
.pub-credentials dt{font-weight:600}
.pub-credentials dd{margin:2px 0 0;font-size:var(--fs-body);color:var(--ink)}
.pub-credentials .invite-login-email{margin:0;font-size:var(--fs-body);line-height:1.4;color:var(--ink)}
.pub-credentials .invite-login-email span{display:inline-block;max-width:100%}
.pub-credentials .copy-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3) var(--sp-4);margin-top:var(--sp-2)}
.pub-credentials .copy-row .invite-login-email{flex:1 1 auto;min-width:0}
.pub-credentials .button{min-height:var(--target);padding:0 var(--sp-5);font-size:var(--fs-body);gap:var(--sp-2);background:var(--surface)}
.pub-note{margin:var(--sp-4) 0 var(--sp-5);padding:0 0 0 var(--sp-4);font-size:var(--fs-body);line-height:1.5;color:var(--ink-2);background:none;border-radius:0}
.login-page.pub .login-card a.button.primary{display:inline-flex;align-items:center;text-decoration:none;color:var(--surface);background:var(--accent);border-color:var(--accent)}
@media (max-width:760px){
.login-page.pub{display:flex;flex-direction:column;background:var(--canvas)}
.pub-aside{gap:0;flex-direction:row;align-items:center}
.pub-aside-body{display:none}
.pub-aside .login-brand{font-size:var(--fs-heading)}
.pub-aside .brand-mark{width:36px;height:36px}
.pub-main{flex:1}
}
@media (min-width:1000px){
.pub-main{padding:var(--sp-6) var(--sp-12)}
}
.login-page.pub .checkbox-label{display:flex;gap:var(--sp-3);align-items:center;min-height:var(--target);font-size:var(--fs-body);font-weight:400;color:var(--ink)}
.login-page.pub .checkbox-label input{flex:none;width:22px;height:22px;min-height:0;margin:0}
.login-page.pub .checkbox-label>span{display:grid;gap:2px}
.pub-mascot{animation:none}
.pub-state-icon{display:grid;place-items:center;width:52px;height:52px;margin:0 0 var(--sp-4);border-radius:var(--r-md)}
.login-page.pub .login-card .passkey-login small,.login-page.pub .login-card .passkey-or span{color:var(--ink-2)}
.login-page.pub .login-card .button.primary{font-size:var(--fs-title)}
.login-page.pub .login-card .role-pair .button{min-height:52px;font-weight:600}
.login-page.pub .remember-device{align-items:flex-start;padding:var(--sp-2) 0;font-size:var(--fs-body)}
.login-page.pub .remember-device input{margin-top:0}
.login-page.pub .login-card .form-actions{margin-top:var(--sp-6);padding-top:var(--sp-5)}
@media (min-width:1000px){
.login-page.pub .login-card:has(input[autocomplete=current-password])>p{display:none}
}
@media (max-width:760px){
.pub-main{display:flex;align-items:stretch}
.pub-credentials .copy-row .button{justify-content:center}
}
.login-page.pub .login-card form{display:flex;flex-direction:column}
.login-page.pub .form-error{font-size:var(--fs-body);font-weight:600;line-height:1.4;background:var(--danger-bg);border-color:color-mix(in srgb,var(--danger) 30%,transparent);padding:var(--sp-3) var(--sp-4)}
.login-page.pub .checkbox-label.remember-device{align-items:flex-start;gap:var(--sp-3)}
.login-page.pub .checkbox-label.remember-device input{margin-top:1px}
.login-page.pub .checkbox-label.remember-device>span{line-height:1.4}
.login-page.pub .checkbox-label.remember-device small{display:block;margin-top:var(--sp-1)}
.login-page.pub .login-card>.button,.login-page.pub .login-card>a.button{margin-top:var(--sp-6)}
.login-page.pub .login-card>.pub-note+.button{margin-top:var(--sp-5)}
.login-page.pub .pub-credentials .button{background:var(--surface);color:var(--navy);border:1.5px solid var(--navy)}
.pub-aside{justify-content:flex-start}
.pub-aside-body{max-width:480px;padding-bottom:var(--sp-8)}
.pub-mascot{max-height:380px;max-width:300px}
.pub-tagline{font-size:var(--fs-display);line-height:1.2;max-width:22ch}
.pub-points li{font-size:var(--fs-title);color:var(--neutral-bg)}
.pub-main{flex-direction:column;gap:var(--sp-4);background:var(--canvas)}
.login-page.pub .login-card{max-width:520px;padding:var(--sp-10) 44px}
.login-page.pub .login-card>p{color:var(--ink)}
.pub-help{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--sp-1) var(--sp-2);margin:0;width:100%;max-width:520px;color:var(--ink)}
.pub-help a{display:inline-flex;align-items:center;min-height:var(--target);font-weight:600;color:var(--accent);text-underline-offset:3px}
.login-page.pub .login-card .demo-note{display:grid;gap:2px;margin:var(--sp-5) 0 0;padding:var(--sp-3) var(--sp-4);background:var(--surface-sunk);border-radius:var(--r-sm);line-height:1.45;color:var(--ink)}
.demo-note strong{font-size:var(--fs-body);font-weight:800;color:var(--navy)}
.login-page.pub .login-card form{margin-top:var(--sp-5)}
.login-page.pub .login-card h1{margin-bottom:var(--sp-2)}
.login-page.pub .login-card .passkey-login{gap:var(--sp-2);margin:0 0 var(--sp-2)}
.login-page.pub .login-card .passkey-login .button.primary{background:var(--surface);color:var(--navy);border:1.5px solid var(--navy);box-shadow:none}
.login-page.pub .login-card .passkey-login .button.primary:hover{background:var(--surface-sunk)}
.login-page.pub .passkey-or{margin:var(--sp-3) 0 0}
.login-page.pub .field{margin-top:var(--sp-4);gap:6px}
.login-page.pub .field input{min-height:52px}
.field-error{display:block;font-weight:600;color:var(--danger)}
.login-page.pub .login-card form>.form-error{order:3;margin:var(--sp-3) 0 0}
.login-page.pub .login-card form>.checkbox-label{order:2}
.login-page.pub .login-card form>.form-actions{order:4;margin-top:var(--sp-4);padding-top:0;border-top:0}
.login-page.pub .login-card form>.form-actions .button{width:100%;min-height:var(--target-primary);justify-content:center}
.login-page.pub .checkbox-label.remember-device{padding:var(--sp-2) 0;margin-top:var(--sp-2);min-height:0}
.pub-state-icon{background:var(--accent-tint);color:var(--accent);border:1px solid var(--line)}
.pub-actions{display:grid;gap:var(--sp-3);margin-top:var(--sp-5)}
.login-page.pub .login-card .pub-actions .button{width:100%;min-height:var(--target-primary);justify-content:center;margin:0;font-size:var(--fs-body);font-weight:600;text-decoration:none}
.login-page.pub .login-card .pub-actions .button:not(.primary){background:var(--surface);color:var(--navy);border:1.5px solid var(--navy)}
.pub-credentials{padding:var(--sp-4) var(--sp-5)}
.pub-credentials dd.copy-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-3);align-items:center;margin-top:var(--sp-2)}
.pub-credentials .copy-row .invite-login-email{padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--line-input);border-radius:var(--r-sm);font-size:var(--fs-title);line-height:1.35;letter-spacing:-.01em}
.pub-credentials .pw-row{display:flex;margin-top:var(--sp-2);font-size:var(--fs-body)}
.pub-credentials dt{color:var(--ink)}
@media (max-width:760px){
.pub-aside{padding:var(--sp-3) var(--sp-4)}
.pub-main{gap:var(--sp-2)}
.login-page.pub .login-card .passkey-login small{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.login-page.pub .field{margin-top:var(--sp-3)}
.pub-help{max-width:520px}
.pub-credentials{padding:var(--sp-4)}
.pub-credentials dd.copy-row{grid-template-columns:minmax(0,1fr)}
.pub-credentials .copy-row .invite-login-email{font-size:var(--fs-body)}
.pub-credentials .copy-row .button{width:100%}
}
@media (min-width:1000px){
.login-page.pub .login-card:has(input[autocomplete=current-password])>h1{margin-bottom:0}
}
.login-page.pub .login-card .field{display:grid;gap:6px;margin:var(--sp-4) 0 0;padding:0}
.login-page.pub .login-card .field label{font-weight:600}
.login-page.pub .login-card .field input,.login-page.pub .checkbox-label.remember-device,.login-page.pub .checkbox-label.remember-device>span{font-size:var(--fs-body)}
@media (max-width:760px){
.pub-aside{background:var(--navy)}
.login-page.pub .login-card .field{margin-top:var(--sp-3)}
}
@media (min-width:1000px){
.login-page.pub{grid-template-columns:minmax(0,9fr) minmax(0,11fr)}
.login-page.pub .login-card{max-width:600px;padding:var(--sp-10) 52px}
.pub-help{max-width:600px}
.login-page.pub .login-card>p{font-size:var(--fs-title)}
.login-page.pub .login-card .field input{min-height:56px;font-size:var(--fs-title)}
.login-page.pub .login-card .button.primary{min-height:60px;font-size:var(--fs-title)}
.login-page.pub .login-card .role-pair .button{min-height:56px}
}
.pub-help,.pub-help a,.login-page.pub .login-card .field label,.login-page.pub .login-card .field small,.login-page.pub .login-card .passkey-login small,.login-page.pub .checkbox-label.remember-device small,.login-page.pub .passkey-or span,.login-page.pub .login-card .passkey-or span,.login-page.pub .login-card .demo-note,.login-page.pub .login-card .pub-note{font-size:var(--fs-body)}
.login-page.pub .login-card .field small,.login-page.pub .login-card .passkey-login small,.login-page.pub .checkbox-label.remember-device small,.login-page.pub .passkey-or span{color:var(--ink-2);line-height:1.45}
.login-page.pub .field input::placeholder,.login-page.pub .login-card .field input::placeholder{opacity:1}
.login-page.pub .login-card .button.primary svg{width:22px;height:22px;flex:none;stroke-width:2.2}
.login-page.pub .login-card .button{gap:var(--sp-3);align-items:center}
.login-page.pub .login-card .button svg{flex:none}
.role-caption{margin:var(--sp-5) 0 0;text-align:center;font-size:var(--fs-body)}
.login-page.pub .login-card .demo-roles .role-pair{margin-top:var(--sp-2)}
.login-page.pub .login-card .role-pair .button{gap:var(--sp-2);font-size:var(--fs-title);color:var(--navy)}
.login-page.pub .login-card .role-pair .button svg{width:22px;height:22px;stroke-width:1.9}
.login-page.pub .field input[aria-invalid=true]{background:var(--surface);border:2px solid var(--danger);box-shadow:none}
.field-error{font-size:var(--fs-body)}
.login-page.pub .pub-main:has(.pub-actions) .pub-help{display:none}
.pub-credentials .pw-row{align-items:flex-start;flex-wrap:nowrap;gap:var(--sp-3);font-weight:400;line-height:1.45;color:var(--ink)}
.pub-credentials .pw-row svg{flex:none;margin-top:2px;color:var(--navy)}
.pub-credentials dt{font-size:var(--fs-meta)}
.login-page.pub .login-card .pub-note{padding:var(--sp-3) var(--sp-4);line-height:1.5;color:var(--ink);background:var(--surface-sunk);border-left:0;border-radius:var(--r-sm)}
@media (max-width:760px){
.pub-main{padding:var(--sp-4) var(--sp-4) 0;justify-content:flex-start}
.login-page.pub .login-card{margin:0 auto;flex:none}
.pub-help{margin:var(--sp-2) auto 0}
}
.login-page.pub .login-card .remember-device small,.login-page.pub .login-card .field small,.login-page.pub .login-card .role-caption{color:var(--ink)}
.role-caption{color:var(--ink);font-weight:600}
.login-page.pub .field input::placeholder,.login-page.pub .login-card .field input::placeholder{color:var(--ink-3)}
.login-page.pub .login-card .role-pair .button{background:var(--accent-tint);border:1.5px solid var(--navy)}
.login-page.pub .login-card .role-pair .button:hover{background:var(--surface)}
.login-page.pub .login-card form>.subtle-link.forgot-link:hover{background:var(--surface);border-color:var(--navy)}
@media (hover:hover){
.login-page.pub .login-card form>.subtle-link.forgot-link:hover{background:var(--surface-sunk)}
}
.pub-main:has(.forgot-link) .pub-help{display:none}
.login-page.pub .field input[aria-invalid=true]:focus-visible{outline:0;border-color:var(--danger);box-shadow:none}
.login-page.pub .field input:focus-visible{outline:0;border-color:var(--navy);box-shadow:none}
.pub-credentials .invite-login-email strong{font-weight:600}
.pub-credentials .invite-login-email span{overflow-wrap:anywhere}
.pub-credentials .invite-login-email span+span{font-weight:600;font-size:var(--fs-body)}
.pub-credentials .invite-login-email span+span::before{content:"\A";white-space:pre;display:block;height:2px}
.pub-credentials .invite-login-email strong{white-space:normal}
@media (max-width:760px){
.pub-credentials .copy-row .invite-login-email{padding:var(--sp-3) var(--sp-4)}
}
.login-page.pub .login-card .pub-note{font-size:var(--fs-body)}
@media (min-width:1000px){
.login-page.pub .login-card .field small,.login-page.pub .login-card .remember-device small,.login-page.pub .login-card .field input::placeholder{font-size:var(--fs-body)}
.pub-main{padding-bottom:var(--sp-12)}
}
.pa-mode{display:flex;gap:var(--sp-2);margin:0 0 var(--sp-4);padding:var(--sp-1);background:var(--surface-sunk);border-radius:var(--r-md);border:1px solid var(--line)}
.pa-mode-btn{flex:1;min-width:0;text-align:center;min-height:var(--target);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:var(--sp-2) var(--sp-3);border:1px solid transparent;border-radius:var(--r-sm);background:transparent;font-weight:600;font-size:var(--fs-body);color:var(--ink-2)}
.pa-mode-btn small{font-weight:400;color:var(--ink-3);line-height:1.2}
.pa-mode-btn[aria-pressed=true]{background:var(--surface);color:var(--ink);border-color:var(--line-input);box-shadow:var(--shadow-raised)}
.pa-stepline,.pa-preview-step{margin:var(--sp-2) 0;font-size:var(--fs-body);font-weight:600;color:var(--ink-2);text-transform:none}
.pa-options-form{display:grid;gap:var(--sp-3)}
.pa-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2)}
.pa-tab{min-height:var(--target-primary);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;padding:var(--sp-2) var(--sp-3);border:2px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);text-align:left}
.pa-tab strong{font-size:var(--fs-body)}
.pa-tab span{font-size:var(--fs-body);color:var(--ink-2);font-variant-numeric:tabular-nums}
.pa-tab[aria-selected=true]{border-color:var(--accent);background:var(--accent-tint)}
.pa-tab.is-off:not([aria-selected=true]){background:var(--surface-sunk);border-style:dashed}
.pa-option-panel{display:grid;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.pa-option-on{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target);font-weight:600;font-size:var(--fs-body);flex-wrap:wrap}
.pa-option-on small{flex-basis:100%;margin-left:32px;font-weight:400}
.pa-option-on input{width:22px;height:22px}
.pa-line{position:relative;display:grid;gap:var(--sp-2);padding:var(--sp-3);padding-right:calc(var(--target) + var(--sp-2));border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-sunk)}
.pa-line label{display:grid;gap:var(--sp-1);font-size:var(--fs-body);font-weight:600;color:var(--ink-2)}
.pa-line input{width:100%;min-height:var(--target);font-size:var(--fs-body)}
.pa-line-nums{display:grid;grid-template-columns:minmax(70px,.7fr) minmax(110px,1.2fr) minmax(70px,.7fr) minmax(110px,1.1fr);gap:var(--sp-2);align-items:end}
.pa-line-sum{margin:0;display:grid;gap:var(--sp-1);font-size:var(--fs-body);color:var(--ink-2);font-weight:600}
.pa-line-sum strong{min-height:var(--target);display:flex;align-items:center;font-size:var(--fs-body);color:var(--ink);font-variant-numeric:tabular-nums}
.pa-line-remove{position:absolute;top:var(--sp-2);right:var(--sp-2);min-width:var(--target);min-height:var(--target)}
.pa-panel{display:grid;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.pa-panel h3{font-size:var(--fs-body)}
.pa-panel>p,.pa-preview>p,.pa-copy-done>p,.pa-options-form>p{margin:0}
.pa-warning{background:var(--warning-bg);border-color:var(--warning)}
.pa-warning h3{display:flex;align-items:flex-start;gap:var(--sp-2);color:var(--warning)}
.pa-warning h3 svg{flex:none;width:22px;height:22px;margin-top:2px}
.pa-warning p{color:var(--ink)}
.pa-check-summary{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin:0;padding:var(--sp-3);border-radius:var(--r-sm);font-weight:600;color:var(--ink)}
.pa-check-summary small{flex-basis:100%;font-weight:400;padding-left:26px}
.pa-check-summary.has-unclear{background:var(--warning-bg);color:var(--warning)}
.pa-check-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.pa-check-item{display:grid;grid-template-columns:1fr auto;gap:var(--sp-3);align-items:center;padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface)}
.pa-check-item.is-included{border-left-color:var(--success)}
.pa-check-item.is-excluded{border-left-color:var(--info)}
.pa-check-item.is-unclear{border-left-color:var(--warning);background:var(--warning-bg)}
.pa-check-text{display:grid;gap:2px;min-width:0}
.pa-check-text small{color:var(--ink-2)}
.pa-check-state{display:flex;align-items:flex-start;gap:var(--sp-1);font-size:var(--fs-meta);font-weight:600;color:var(--ink-2);margin-top:2px}
.pa-check-state svg{margin-top:2px}
.pa-check-item.is-included .pa-check-state{color:var(--success)}
.pa-check-item.is-excluded .pa-check-state{color:var(--info)}
.pa-check-item.is-unclear .pa-check-state{color:var(--warning)}
.pa-check-actions{display:flex;gap:var(--sp-2)}
.pa-toggle{min-height:var(--target);padding:0 var(--sp-4);border:2px solid var(--line-input);border-radius:var(--r-sm);background:var(--surface);font-weight:600;font-size:var(--fs-body);white-space:nowrap}
.pa-toggle[aria-pressed=true]{border-color:var(--navy);background:var(--navy);color:var(--surface)}
.pa-time-details{margin:0}
.pa-time-details summary{min-height:var(--target);display:flex;align-items:center;font-weight:600;color:var(--ink-2);font-size:var(--fs-body)}
.pa-time-fields{position:relative;display:grid;grid-template-columns:2fr 1fr 1fr 1.2fr auto;gap:var(--sp-3);align-items:end}
.pa-time-fields .field label{font-size:var(--fs-body);font-weight:600;color:var(--ink-2)}
.pa-time-fields .pa-line-remove{position:static}
.pa-time-fields .field input,.pa-time-fields .field select{min-height:var(--target);font-size:var(--fs-body)}
.pa-verdict{display:flex;gap:var(--sp-2);align-items:flex-start;margin:0;padding:var(--sp-3);border-radius:var(--r-sm);color:var(--ink)}
.pa-verdict span{display:grid;gap:2px}
.pa-verdict small{color:inherit}
.pa-verdict.is-warn{background:var(--warning-bg);color:var(--warning)}
.pa-verdict.is-info{background:var(--info-bg);color:var(--info)}
.pa-verdict.is-ok{background:var(--success-bg);color:var(--success)}
.pa-verdict.is-neutral{background:var(--neutral-bg);color:var(--ink-2)}
.pa-hint{font-variant-numeric:tabular-nums}
.pa-preview{display:grid;gap:var(--sp-3)}
.pa-preview h3{font-size:var(--fs-title)}
.pa-preview-changes{margin:0;display:grid;gap:var(--sp-2)}
.pa-preview-changes div{display:flex;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-sunk)}
.pa-preview-changes dt{font-weight:600}
.pa-preview-changes dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.pa-group{display:grid;margin:var(--sp-3) 0}
.pa-group-head{display:flex}
.pa-group-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:var(--sp-3)}
.pa-option-card{display:grid;gap:var(--sp-2);align-content:start;padding:var(--sp-4);border:2px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.pa-option-card.is-chosen{border-color:var(--success);background:var(--success-bg)}
.pa-option-card.is-out{background:var(--surface-sunk)}
.pa-option-card-head{justify-content:space-between}
.pa-option-price{font-size:var(--fs-heading);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.pa-option-card details{margin:0}
.pa-option-card summary{min-height:var(--target);display:flex;align-items:center;color:var(--ink-2);font-weight:600}
.pa-estimate{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-pill);font-size:var(--fs-body);font-weight:600}
.pa-estimate.is-measured{background:var(--success-bg);color:var(--success)}
.pa-estimate.is-unmeasured{background:var(--warning-bg);color:var(--warning)}
.pa-estimate.is-none{background:var(--neutral-bg);color:var(--ink-2)}
.pa-materials{margin:0;padding-left:var(--sp-5);color:var(--ink-2)}
.pa-copy-done{display:grid;gap:var(--sp-2)}
.portal-options{display:grid;gap:var(--sp-4)}
.portal-options-lead{margin:0}
.portal-option-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4);align-items:stretch}
.portal-option{display:grid;grid-template-rows:auto auto 1fr auto;gap:var(--sp-3);padding:var(--sp-5);border:2px solid var(--line-input);border-radius:var(--r-lg);background:var(--surface)}
.portal-option header{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.portal-option h3{font-size:var(--fs-heading)}
.portal-option.is-picked{border-color:var(--accent);background:var(--accent-tint);box-shadow:var(--shadow-raised)}
.portal-option.is-chosen{border-color:var(--success);background:var(--success-bg)}
.portal-option.is-out{background:var(--surface-sunk);border-style:dashed;color:var(--ink-2)}
.portal-option-flag{display:inline-flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-3);border-radius:var(--r-pill);background:var(--success);color:var(--surface);font-size:var(--fs-meta);font-weight:600}
.portal-option-flag.is-muted{background:var(--neutral-bg);color:var(--ink-2)}
.portal-option-price{display:grid;margin:0}
.portal-option-price strong{letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums}
.portal-option-lines{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2);align-content:start}
.portal-option-lines li{display:flex;justify-content:space-between;gap:var(--sp-3);padding-top:var(--sp-2);border-top:1px solid var(--line)}
.portal-option-lines li span{display:grid;min-width:0}
.portal-option-lines small{color:var(--ink-2)}
.portal-option-lines b{font-variant-numeric:tabular-nums;white-space:nowrap}
.portal-option .button{width:100%;min-height:var(--target-primary);justify-content:center}
.portal-pick-summary{display:grid;gap:2px;padding:var(--sp-3);border-radius:var(--r-sm);background:var(--accent-tint)}
.portal-decline-open{min-height:var(--target);justify-self:start}
@media (max-width:760px){
.pa-tabs{grid-template-columns:1fr}
.pa-tab{flex-direction:row;align-items:center;justify-content:space-between}
.pa-line{padding-right:var(--sp-3);padding-top:calc(var(--target) + var(--sp-2))}
.pa-line-nums{grid-template-columns:1fr 1fr}
.pa-line-sum{grid-column:1 / -1}
.pa-check-item{grid-template-columns:1fr}
.pa-check-actions .pa-toggle{flex:1}
.pa-time-fields{grid-template-columns:1fr 1fr}
.pa-time-fields .field:first-child,.pa-time-fields .field:nth-child(4){grid-column:1 / -1}
.pa-time-fields .pa-line-remove{grid-column:1 / -1;justify-self:end}
.pa-preview-changes div{flex-direction:column;gap:var(--sp-1)}
.pa-preview-changes dd{text-align:left}
.pa-group-cards,.portal-option-grid{grid-template-columns:1fr}
.portal-option{padding:var(--sp-4)}
}
.pa-share-opts{display:grid;gap:var(--sp-1);width:100%}
.pa-share-opts b{display:flex;justify-content:space-between;gap:var(--sp-3);font-weight:600}
.pa-share-opts em{font-style:normal;font-variant-numeric:tabular-nums}
.pa-warning{display:grid;gap:var(--sp-2)}
.pa-warning>*{margin:0}
.pa-warning summary{min-height:48px;display:flex;align-items:center}
.pa-hint{display:block;font-weight:600;color:var(--ink)}
.pa-share{display:grid;gap:var(--sp-4)}
.pa-share>*{margin:0}
.pa-share .form-context{align-items:flex-start;text-align:left}
.pa-share .pa-warning{margin:0}
.pa-share .inline-note{font-size:var(--fs-body)}
.pa-share>.button{justify-self:stretch;justify-content:center;min-height:var(--target-primary)}
.pa-share .share-result{display:grid;gap:var(--sp-3)}
.pa-share .share-result input{text-overflow:ellipsis}
.pa-share .share-result .inline-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.pa-share .share-result .inline-actions>*{min-height:var(--target)}
.pa-mode-btn:focus-visible{outline:3px solid var(--info);outline-offset:2px}
@media (max-width:760px){
.pa-share .share-result .inline-actions>*{flex:1 1 100%;justify-content:center}
.pa-mode-btn,.pa-tab span,.pa-estimate,.pa-stepline,.pa-preview-step{font-size:var(--fs-body)}
}
.portal-option{min-width:0}
.portal-option-price strong{font-size:var(--fs-heading);white-space:nowrap}
.portal-option-lines li{flex-wrap:wrap;align-items:baseline}
.portal-option-lines li span{flex:1 1 12rem}
.portal-option-lines li span small{font-size:var(--fs-body)}
@media (min-width:761px){
.portal-option .button{justify-self:start;min-width:14rem}
.portal-option-grid.is-pair{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.settings-form .field>label,.field>label{color:var(--ink);font-weight:600}
.theme-options label{color:var(--ink);font-size:var(--fs-meta);min-height:var(--target);display:flex;align-items:center;gap:var(--sp-2)}
.theme-fieldset legend{color:var(--ink);font-weight:600;padding:0 0 var(--sp-2)}
.theme-options label.selected{border-color:var(--accent);background:var(--accent-tint)}
.service-connection-truth{margin:0 0 var(--sp-5);max-width:none}
.service-connection-truth h2,.connection-row h3,.model-connection h2{color:var(--ink)}
.connection-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-3) var(--sp-4);align-items:start}
.connection-row p{margin:var(--sp-1) 0 0}
.connection-row .badge{white-space:nowrap}
.connections{display:grid;gap:var(--sp-4)}
@media (max-width:480px){
.connection-row{grid-template-columns:auto minmax(0,1fr)}
}
.inbox-layout{align-items:stretch}
.thread-item strong{color:var(--ink);font-weight:600}
.thread-item small,.thread-channel{color:var(--ink-2)}
.thread-item.selected{background:var(--accent-tint);box-shadow:none}
.conversation-head p,.conversation-date{color:var(--ink-2)}
.conversation-head h2{color:var(--ink)}
.message small{color:var(--ink-3)}
.composer small{color:var(--ink-2)}
@media (max-width:760px){
.thread-list{max-height:none}
.thread-list .tabs{position:static}
}
.autonomy-intro,.slim-note.followthrough,.autonomy-intro strong,.slim-note strong{color:var(--ink)}
.autonomy-intro p,.slim-note p{color:var(--ink-2)}
.autonomy-intro .soft-icon,.slim-note>svg{color:var(--info)}
.automation-text h3{color:var(--ink);font-weight:600}
.automation-text p{color:var(--ink-2)}
.automation-row select{color:var(--ink);background:var(--surface);border:1px solid var(--line-input);font-weight:600}
.advanced-automations>summary{color:var(--ink);min-height:var(--target);align-items:center}
.runtime-status{display:flex;gap:var(--sp-2)}
.outbox-heading .button{white-space:normal}
.history-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.history-row{padding:var(--sp-4) var(--sp-5);gap:var(--sp-4);min-height:var(--target)}
.history-row time{color:var(--ink-2);font-weight:600;font-size:var(--fs-meta);min-width:64px}
.history-row time small{font-weight:400}
.history-row strong{color:var(--ink);font-weight:600;font-size:var(--fs-body);line-height:1.35}
.history-row p{color:var(--ink-2);font-size:var(--fs-meta);margin:var(--sp-1) 0 0}
.history-marker{display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:50%;background:var(--success-bg);color:var(--success)}
.history-row:hover{background:var(--surface-sunk)}
.history-row:last-child{border-bottom:0}
@media (max-width:760px){
.history-row{padding:var(--sp-4) var(--sp-3);gap:var(--sp-3)}
.history-row>svg{display:block;flex:none}
.history-row time{min-width:48px}
}
.event-lead{font-size:var(--fs-body);color:var(--ink-2);margin:var(--sp-2) 0 var(--sp-4);line-height:1.5}
.event-target{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:var(--target);background:none;border:0;padding:0;color:var(--accent);font-weight:600;font-size:inherit;text-align:right;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.event-note{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-3) 0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-sm);background:var(--surface-sunk);color:var(--ink-2);font-size:var(--fs-meta)}
.file-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--sp-5)}
@media (max-width:480px){
.file-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}
}
.file-card{display:flex;flex-direction:column;text-align:left;padding:0;min-width:0;transition:box-shadow .15s,border-color .15s}
.file-card:hover{border-color:var(--line-input);box-shadow:var(--shadow-raised)}
.file-cover{height:auto;aspect-ratio:4/3;width:100%;overflow:hidden;background:var(--surface-sunk);color:var(--ink-2)}
.file-cover.photo{background:var(--info-bg);color:var(--info)}
.file-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.file-tile{display:grid;justify-items:center;gap:var(--sp-2)}
.file-tile b{font-size:var(--fs-meta);font-weight:600;color:var(--ink-2)}
.file-cover .file-ext{position:absolute;right:var(--sp-2);left:auto;padding:2px var(--sp-2);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);font-size:var(--fs-meta);font-weight:600;box-shadow:var(--shadow-raised)}
.file-info{padding:var(--sp-4);display:grid;gap:2px;min-width:0}
.file-info strong{color:var(--ink);font-size:var(--fs-body);overflow-wrap:anywhere;line-height:1.3}
.file-info p{margin:0;color:var(--ink-2);font-size:var(--fs-meta)}
.file-info small{color:var(--ink-3);font-size:var(--fs-meta)}
.file-info .indexed{color:var(--success);font-size:var(--fs-meta);font-weight:600}
.file-types{color:var(--ink-2)}
.decision-title,.customer-hero h2,.invoice-preview h3,.invoice-preview>strong{color:var(--ink);font-weight:800}
.customer-hero h2{font-size:var(--fs-heading);margin:var(--sp-3) 0 var(--sp-2)}
.customer-hero p{color:var(--ink-2);font-size:var(--fs-body)}
.invoice-lines>div{color:var(--ink-2);font-size:var(--fs-body)}
.invoice-lines strong{color:var(--ink);font-weight:600;font-size:var(--fs-body)}
.invoice-preview{background:var(--surface-sunk);color:var(--ink-2)}
.invoice-preview p{color:var(--ink-2)}
.customer-job strong{color:var(--ink);font-weight:600}
.customer-job small,.mini-event{color:var(--ink-2)}
.day-queue{max-width:none;grid-template-columns:repeat(auto-fill,minmax(min(100%,430px),1fr));gap:var(--sp-4);align-items:start}
.day-card{padding:var(--sp-4) var(--sp-5);gap:var(--sp-3)}
.day-card-detail.warn{color:var(--warning)}
.day-card-actions .button{min-height:var(--target)}
.day-count{color:var(--ink)}
@media (max-width:760px){
.day-card-actions .button:not(.day-approve){flex:1 1 0}
}
.change-order .co-line.needs-price{background:var(--warning-bg);border-color:var(--warning)}
.change-order .co-totals{background:var(--surface-sunk);color:var(--ink)}
.access-panel{padding:var(--sp-5) var(--sp-6)}
.access-panel .section-title{margin-bottom:var(--sp-2)}
.access-row small{color:var(--ink-2)}
.access-row strong{color:var(--ink)}
.device-row{padding-left:var(--sp-4)}
@media (max-width:480px){
.access-panel{padding:var(--sp-4)}
}
.person-card h2{color:var(--ink)}
.person-card p,.person-stats small,.skill-tags span{color:var(--ink-2)}
.app .badge.delivered{background:var(--success-bg);color:var(--success)}
.app .badge.normal,.app .badge.recorded{background:var(--neutral-bg);color:var(--ink-2)}
.customer-metrics strong,.customer-metrics .metric strong,.metric strong{color:var(--ink)}
.customer-metrics span,.customer-metrics .metric>span,.metric>span{color:var(--ink-2);font-weight:600}
.customer-metrics small,.metric>small{color:var(--ink-3);font-size:var(--fs-meta)}
.theme-swatch{flex:none}
.connections{border:0;background:none;padding:0;margin:0}
.model-connection{max-width:none;margin:0}
.model-connection>form{padding:0 var(--sp-6) var(--sp-6)}
.model-connection .form-actions{margin-top:var(--sp-4)}
.connection-truth-grid{padding:0 var(--sp-6) var(--sp-6);margin-top:0;gap:var(--sp-3)}
.connection-truth-grid>div{padding:var(--sp-4)}
.connection-truth-grid strong{color:var(--ink)}
.connection-truth-grid span{font-size:var(--fs-meta)}
.connection-truth-grid small{color:var(--ink-2);font-size:var(--fs-meta)}
.connection-row{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4) var(--sp-5);box-shadow:var(--shadow-raised)}
.connection-row .soft-icon{margin-top:2px}
@media (max-width:480px){
.connection-truth-grid,.model-connection>form{padding-left:var(--sp-4);padding-right:var(--sp-4)}
}
.thread-channel,.conversation-date,.message>small,.message small{font-size:var(--fs-meta)}
.message{font-size:var(--fs-body)}
@media (max-width:760px){
.thread-list{padding-bottom:var(--sp-2)}
}
.automation-row select{padding-right:var(--sp-8)}
.advanced-automations>p{margin-left:var(--sp-1)}
.file-types{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-1) var(--sp-3);align-items:center}
.modal-body .customer-hero{padding-top:0}
.connections>.connection-row:last-child{border-bottom:1px solid var(--line)}
.site-equipment-head{flex-wrap:wrap}
.site-equipment-head>span{flex:1 1 200px;min-width:0;flex-wrap:wrap;color:var(--ink-2)}
.site-equipment-head strong{color:var(--ink)}
.site-equipment-head small{color:var(--ink-2);font-size:var(--fs-meta)}
.equipment-card h4{color:var(--ink)}
.equipment-card p,.service-value-panel .section-title p{color:var(--ink-2);font-size:var(--fs-meta)}
.service-value-panel h3{color:var(--ink)}
.access-panel .section-title{flex-wrap:wrap;padding:0 0 var(--sp-3);gap:var(--sp-3)}
.access-panel .section-title h2{min-width:max-content}
.access-panel>p{margin-top:0}
@media (max-width:480px){
.person-card{padding:var(--sp-4)}
}
.file-cover .file-ext{top:var(--sp-2);bottom:auto}
.change-order .co-line+.button{margin:var(--sp-1) 0 var(--sp-4)}
.thread-list .tabs button{font-size:var(--fs-meta)}
.field-job :is(p,small,.badge,.inline-note,.muted){font-size:var(--fs-body)}
.app small,.app .field small,.app .field>small,.app .inline-note,.app .access-row small,.app .app-footer,.app td small,.app .thread-item small,.app .thread-channel,.app .conversation-date,.app .message small,.app .file-info small,.app .file-types,.app .skill-tags span{font-size:var(--fs-meta)}
.app .button.small{min-height:var(--target);padding:var(--sp-2) var(--sp-4);font-size:var(--fs-meta)}
.app .button.quiet-danger{color:var(--danger);border-color:var(--line-input);background:var(--surface);font-weight:600}
.app .button.quiet-danger:hover{background:var(--danger-bg)}
.team-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
@media (min-width:1000px){
.team-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.team-grid>.person-card:last-child:nth-child(3n+1){grid-column:span 3}
}
.person-card{display:flex;flex-direction:column}
.person-card .person-actions{margin-top:auto}
.person-card h2{font-size:var(--fs-title);font-weight:800;margin:var(--sp-3) 0 var(--sp-1)}
.person-card p{font-size:var(--fs-body);margin:0 0 var(--sp-3)}
.person-card .skill-tags span{background:var(--surface-sunk);color:var(--ink-2);border:1px solid var(--line)}
.person-stats strong{color:var(--ink);font-weight:800}
@media (max-width:480px){
.person-card{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:var(--sp-4);row-gap:var(--sp-2);align-items:center}
.person-card .person-top{display:contents}
.person-card .person-top .badge{grid-column:2;grid-row:3;justify-self:start}
.person-card .avatar{grid-row:1/3}
.person-card h2,.person-card p{grid-column:2;margin:0}
.person-card .skill-tags,.person-card .person-stats,.person-card .person-actions{grid-column:1/-1}
.person-card .person-stats{margin:0}
}
.access-user{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--line)}
.access-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-3) 0}
.access-row>div:first-child{min-width:0;flex:1}
.access-row small{display:block;margin-top:2px}
.access-user-head strong{font-size:var(--fs-body)}
.device-list{margin:var(--sp-1) 0 0 0;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk);padding:0 var(--sp-4)}
.device-list>summary{font-size:var(--fs-meta)}
.device-list[open]>summary{border-bottom:1px solid var(--line)}
.device-list .access-row{border-top:1px solid var(--line)}
.device-list .access-row:first-of-type{border-top:0}
.device-name{display:inline-flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.device-name svg{flex:none;color:var(--ink-2)}
.access-user>.device-row{padding-left:0}
.access-panel .section-title+p{margin:0 0 var(--sp-3)}
@media (max-width:480px){
.access-row{align-items:flex-start}
.access-row .button{flex:none}
.access-row.device-row{flex-direction:column;align-items:stretch;gap:var(--sp-2)}
.access-row.device-row .button{align-self:flex-start}
.access-user-head{flex-direction:column;align-items:stretch}
.access-user-head .button{align-self:flex-start}
}
.invite-link-details{margin:var(--sp-3) 0;border:1px solid var(--line);border-radius:var(--r-md);padding:0 var(--sp-4);background:var(--surface-sunk)}
.invite-link-details>summary{min-height:var(--target);display:flex;align-items:center;font-weight:600;cursor:pointer;color:var(--ink)}
.invite-qr{display:block;height:auto;background:var(--surface);border:1px solid var(--line)}
.app .pub-note,.app .modal-body .inline-note{line-height:1.5}
.automation-row{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(150px,200px);gap:var(--sp-4);align-items:center;padding:var(--sp-5) 0}
.automation-row>label{display:block}
.automation-row select{width:100%;min-width:150px}
.automation-text h3{margin:0;font-size:var(--fs-body)}
.automation-text p{margin:2px 0 0;font-size:var(--fs-meta)}
@media (max-width:760px){
.automation-row{grid-template-columns:minmax(0,1fr);gap:var(--sp-2)}
.automation-row .soft-icon{display:none}
.automation-row select{width:100%}
}
.runtime-status{margin:0 0 var(--sp-4);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--warning-bg);color:var(--warning);font-size:var(--fs-meta);align-items:center}
.runtime-status .unread-dot{background:var(--warning);flex:none}
.autonomy-intro,.slim-note{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}
.slim-note.followthrough{border-left-color:var(--accent)}
.slim-note.followthrough>svg{color:var(--accent)}
.slim-note strong,.autonomy-intro strong{font-size:var(--fs-body);font-weight:600;line-height:1.4}
.app .slim-note p,.app .autonomy-intro p{font-size:var(--fs-meta);line-height:1.5;margin:var(--sp-1) 0 0;color:var(--ink-2)}
.slim-note.followthrough{align-items:center}
@media (max-width:760px){
.slim-note.followthrough{flex-wrap:wrap}
.slim-note.followthrough .button{width:100%}
}
.advanced-automations{margin:var(--sp-4) 0 var(--sp-6)}
.advanced-automations>summary{display:inline-flex;gap:var(--sp-2);padding:0 var(--sp-5);border:1px solid var(--line-input);border-radius:var(--r-pill);background:var(--surface);cursor:pointer;list-style:none;font-weight:600}
.advanced-automations>summary::-webkit-details-marker{display:none}
.advanced-automations>summary::after{content:"";margin-left:var(--sp-2);width:12px;height:12px;background:currentColor;mask:var(--chevron) center/contain no-repeat;-webkit-mask:var(--chevron) center/contain no-repeat;transform:none;border:0}
.advanced-automations>p{color:var(--ink-2);font-size:var(--fs-meta)}
.outbox-heading{display:flex;justify-content:space-between;gap:var(--sp-4);align-items:flex-end;flex-wrap:wrap;margin-top:var(--sp-6)}
.outbox-heading .button{flex:none}
@media (max-width:760px){
.outbox-heading .button{width:100%}
}
.history-row time small,.toolbar>small{color:var(--ink-2);font-size:var(--fs-meta)}
.detail-facts .event-target{text-align:left}
.badge.recorded{font-size:var(--fs-meta)}
.badge.recorded{background:var(--info-bg);color:var(--info)}
.theme-swatch{height:20px;width:20px;border-radius:var(--r-sm);border:1px solid var(--line-input);background:var(--surface-sunk)}
.theme-swatch.stone{background:var(--line)}
.theme-swatch.charcoal{background:var(--ink-2)}
.theme-swatch.sky{background:var(--info-bg)}
.theme-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3)}
.theme-options label{border:1px solid var(--line-input);border-radius:var(--r-md);padding:0 var(--sp-3);background:var(--surface);cursor:pointer}
.theme-options input[type=radio]{position:absolute;opacity:0;width:1px;height:1px}
.theme-options label:has(input:focus-visible){outline:3px solid var(--info);outline-offset:2px}
.theme-options label.selected{border-width:2px;font-weight:600}
@media (max-width:480px){
.theme-options{grid-template-columns:minmax(0,1fr)}
}
.settings-form .form-actions{justify-content:flex-end}
@media (max-width:480px){
.settings-form .form-actions .button{width:100%}
}
.settings-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--sp-6);align-items:start}
@media (max-width:760px){
.settings-layout{grid-template-columns:minmax(0,1fr)}
}
.quiet-note{background:var(--accent-tint);border:1px solid var(--line)}
.quiet-note h3{color:var(--ink);font-weight:800}
.quiet-note p{color:var(--ink-2);font-size:var(--fs-body);line-height:1.55}
.capability-page{max-width:none;display:grid;gap:var(--sp-4)}
.capability-page textarea{min-height:140px}
.capability-page .panel{max-width:none}
.connections .connection-row{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);padding:var(--sp-4) var(--sp-5);margin:0}
.connection-row h3{font-size:var(--fs-body);font-weight:600;margin:0}
.connection-row p{font-size:var(--fs-meta);color:var(--ink-2);line-height:1.5}
.connection-row .badge{align-self:center}
.connections .panel,.model-connection{padding:var(--sp-5) var(--sp-6)}
@media (max-width:480px){
.connections .connection-row{grid-template-columns:auto minmax(0,1fr);padding:var(--sp-4)}
.connection-row .badge{grid-column:1/-1;justify-self:start}
}
.service-connection-truth{margin-top:0}
.thread-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--sp-3);align-items:start;min-height:var(--target)}
.thread-item .thread-channel,.thread-item small{display:block;margin-top:2px;font-size:var(--fs-meta);color:var(--ink-2)}
.thread-item .unread-dot{width:10px;height:10px;margin-top:var(--sp-2);background:var(--accent-mark);border-radius:50%}
.composer .button:disabled,.composer .button.primary:disabled{background:var(--neutral-bg);color:var(--ink-2);border:1.5px dashed var(--line-input)}
.composer>div{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap}
.composer .button{flex:none}
@media (max-width:760px){
.inbox-layout{display:grid;gap:var(--sp-5)}
.thread-list,.conversation{border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.composer>div{flex-direction:column;align-items:stretch}
.composer .button{width:100%}
}
.conversation .messages{min-height:200px}
.conversation-head h2{font-size:var(--fs-title);font-weight:800}
.file-card{align-items:stretch}
.file-card .file-info{padding:var(--sp-4);flex:1;display:flex;flex-direction:column;gap:2px}
.file-card .file-info strong{font-size:var(--fs-body);line-height:1.3;overflow-wrap:anywhere;word-break:normal;hyphens:auto}
.file-card .file-info p{margin:0;font-size:var(--fs-meta);color:var(--ink-2)}
.file-card .file-info small{font-size:var(--fs-meta);color:var(--ink-2);margin-top:auto;padding-top:var(--sp-2)}
.file-card>svg{display:none}
.file-cover .file-tile{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);color:var(--ink-2)}
.file-cover .file-tile b{font-size:var(--fs-meta);color:var(--ink-2);font-weight:600}
.file-cover{position:relative}
.file-empty .empty{border-radius:var(--r-lg)}
.file-empty .empty.has-mascot .mascot{margin-bottom:var(--sp-3)}
.push-modal .push-device-actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}
.push-device{border-top:1px solid var(--line)}
.push-device{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-3);align-items:center}
@media (max-width:480px){
.push-device{grid-template-columns:minmax(0,1fr)}
.push-device .push-device-actions{justify-content:flex-start;width:100%}
.push-device-actions .button{flex:1}
}
.change-order .co-send-button,.change-order .co-share-button{width:100%}
.change-order .co-close{margin-top:var(--sp-5);padding-top:var(--sp-4);border-top:1px solid var(--line)}
.change-order .co-close-open{width:100%}
.change-order .co-photo{max-width:100%;border-radius:var(--r-md)}
.app .device-row,.app .access-row.device-row{border-left:0;padding-left:0;margin-left:0}
.team-grid:has(>.person-card:nth-child(4):last-child){grid-template-columns:repeat(4,minmax(0,1fr))}
.team-grid:has(>.person-card:nth-child(4):last-child)>.person-card:last-child{grid-column:auto}
@media (max-width:760px){
.team-grid:has(>.person-card:nth-child(4):last-child){grid-template-columns:minmax(0,1fr)}
}
.person-stats{margin-bottom:var(--sp-5)}
.runtime-status{justify-content:flex-start;text-align:left}
.runtime-status .unread-dot{margin-top:7px}
@media (min-width:761px){
.runtime-status{align-items:center}
.runtime-status .unread-dot{margin-top:0}
}
.connection-truth-grid>div{align-content:start;box-shadow:none;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk)}
.connection-truth-grid strong{font-size:var(--fs-body);font-weight:600}
.connection-truth-grid span{display:inline-flex;font-weight:600;color:var(--ink-2)}
.service-connection-truth .section-title{flex-wrap:wrap;gap:var(--sp-3);padding:var(--sp-5) var(--sp-6) var(--sp-4)}
.connections .model-connection{padding:0}
.connections .model-connection .section-title{padding:var(--sp-5) var(--sp-6) var(--sp-3);flex-wrap:wrap;gap:var(--sp-3)}
.connections .model-connection>form{padding:0 var(--sp-6) var(--sp-6)}
@media (max-width:480px){
.service-connection-truth .section-title,.connections .model-connection .section-title{padding:var(--sp-4)}
.connections .model-connection>form{padding:0 var(--sp-4) var(--sp-4)}
}
@media (max-width:760px){
:root .inbox-layout{grid-template-columns:minmax(0,1fr)}
.thread-list{width:auto;max-width:none;border-right:1px solid var(--line)}
}
.file-empty .empty{border:0;background:transparent}
.thread-list .tabs{margin-bottom:0}
.modal.change-order{width:min(640px,calc(100vw - 32px))}
.change-order .co-photo{width:100%}
.invite-qr{width:min(190px,52vw);margin:var(--sp-3) auto}
.search-group h3{font-size:var(--fs-meta);color:var(--ink-2);text-transform:none}
.workspace-result small{color:var(--ink-2);font-size:var(--fs-meta)}
.passkey-modal .form-actions .button,.push-modal .form-actions .button{flex:0 0 auto}
.finance-advanced{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}
.finance-advanced .finance-summary strong{font-size:var(--fs-title);font-weight:800;color:var(--ink)}
.finance-advanced .finance-summary small{font-size:var(--fs-meta);color:var(--ink-2);margin-top:2px}
.finance-advanced>summary{padding:var(--sp-4) var(--sp-5);position:relative;padding-right:56px}
.finance-advanced>summary::after{content:"";position:absolute;right:var(--sp-5);top:50%;width:12px;height:12px;background:currentColor;mask:var(--chevron) center/contain no-repeat;-webkit-mask:var(--chevron) center/contain no-repeat;transform:none;border:0}
.finance-advanced[open]>summary::after{transform:rotate(180deg)}
.finance-advanced>section{padding:0 var(--sp-5) var(--sp-5)}
.finance-advanced>section>.section-title:first-child{display:none}
.finance-advanced .finance-subpanel,.finance-advanced .service-finance-grid>section{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-5);box-shadow:none}
.finance-advanced .finance-subpanel{gap:var(--sp-4)}
.finance-advanced h3{font-size:var(--fs-body);font-weight:600;color:var(--ink);margin:0 0 var(--sp-1)}
.finance-advanced .section-title p,.finance-advanced .service-finance-grid p{color:var(--ink-2);font-size:var(--fs-meta);margin:0}
.finance-advanced .finance-mappings{border:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3) var(--sp-4)}
.finance-advanced .finance-mappings legend{padding:0 0 var(--sp-2);font-size:var(--fs-meta);font-weight:600;color:var(--ink)}
.finance-advanced .form-actions{border-top:0;margin-top:0;padding-top:var(--sp-2);justify-content:flex-end}
.finance-advanced .form-grid{gap:var(--sp-4)}
.finance-advanced small,.finance-advanced .field small{font-size:var(--fs-meta);color:var(--ink-2)}
.finance-advanced textarea{min-height:140px}
.finance-advanced .tech-info{margin-top:var(--sp-2)}
.finance-advanced .button:disabled{border:1px solid var(--line-input)}
@media (max-width:760px){
.finance-advanced>section{padding:0 var(--sp-4) var(--sp-4)}
.finance-advanced>summary{padding:var(--sp-4);padding-right:48px}
.finance-advanced>summary::after{right:var(--sp-4)}
.finance-advanced .finance-subpanel,.finance-advanced .service-finance-grid>section{padding:var(--sp-4)}
.finance-advanced .finance-mappings{grid-template-columns:minmax(0,1fr)}
.finance-advanced .form-actions{flex-direction:column;align-items:stretch}
.finance-advanced .form-actions .button{width:100%;flex:none}
}
.finance-advanced .finance-mappings legend{float:none;width:auto;margin:0}
.finance-advanced .finance-mappings legend+*{clear:none}
.finance-advanced .finance-mappings{margin-top:var(--sp-2)}
.finance-advanced .field{margin:0}
.finance-advanced .service-finance-grid .field{margin-top:var(--sp-3)}
.invoice-lines small{font-size:var(--fs-meta);color:var(--ink-2)}
.invoice-preview strong{color:var(--ink)}
.invoice-lines>div{padding:var(--sp-3) 0}
.invoice-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.invoice-actions .button{flex:1 1 auto}
@media (max-width:760px){
.app .metrics.money-metrics{display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:0;overflow:hidden}
.app .money-metrics .metric{border:0;border-radius:0;border-top:1px solid var(--line);padding:var(--sp-3) var(--sp-4);background:transparent;box-shadow:none}
.app .money-metrics .metric:first-child{border-top:0;padding:var(--sp-3) var(--sp-4)}
.app .money-metrics .metric>span{font-size:var(--fs-meta)}
.app .money-metrics .metric>strong{font-size:var(--fs-title)}
.app .money-metrics .metric>small{color:var(--ink-2)}
}
.lists-card-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.lists-card-actions .button{width:auto;flex:0 0 auto;padding-inline:var(--sp-5)}
.error-screen{background:var(--canvas);gap:var(--sp-3)}
.error-screen .error-brand{display:inline-flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-6);color:var(--ink);font-size:var(--fs-title)}
.error-screen .brand-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:var(--r-md);background:var(--accent-mark);color:var(--surface)}
.error-screen h1{font-size:var(--fs-display);line-height:1.15;margin:0;max-width:18ch}
.error-screen p{color:var(--ink-2);font-size:var(--fs-body);margin:0}
.error-screen .error-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);justify-content:center;margin-top:var(--sp-4)}
.error-screen small{color:var(--ink-2);font-size:var(--fs-meta);max-width:40ch;margin-top:var(--sp-4)}
@media (max-width:480px){
.error-screen .error-actions{flex-direction:column;align-self:stretch}
}
.quote-mode{border:0;padding:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}
.quote-mode legend{font-weight:600;color:var(--ink);font-size:var(--fs-meta)}
.quote-mode legend+label{clear:left}
.quote-mode label,.price-pick,.carried-line{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);cursor:pointer;color:var(--ink);font-size:var(--fs-body)}
.quote-mode label:has(input:checked),.price-pick:has(input:checked){border-color:var(--accent);background:var(--accent-tint);border-color:var(--accent);box-shadow:none}
.price-picker{display:grid;gap:var(--sp-3)}
.quote-carried{display:grid;gap:var(--sp-3);margin:var(--sp-3) 0}
.quote-carried>strong{font-size:var(--fs-body)}
.quote-carried [data-removed=true]{opacity:.7}
.price-pick small,.carried-line small{display:block;color:var(--ink-2);font-size:var(--fs-meta)}
.price-pick>span,.carried-line>span{flex:1;min-width:0}
.price-pick input[type=number]{width:96px;flex:none}
@media (max-width:480px){
.quote-mode{grid-template-columns:minmax(0,1fr)}
}
.invite-qr{padding:0;border-radius:var(--r-md)}
.detail-facts>div strong,.detail-facts>div .event-target{text-align:left;justify-content:flex-start}
@media (max-width:760px){
.sidebar .profile>.icon-button,.sidebar .profile-trigger,.app .button.small{min-height:var(--target)}
}
.quote-mode legend{float:none;width:auto;padding:0;margin:0 0 var(--sp-2);grid-column:1/-1}
.quote-mode{display:block;margin:var(--sp-4) 0 var(--sp-3)}
.quote-mode label{display:flex;margin-bottom:var(--sp-2)}
@media (min-width:761px){
.quote-mode{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}
.quote-mode legend{grid-column:1/-1}
.quote-mode label{margin-bottom:0}
}
.change-order .co-desc{min-height:64px;resize:none;line-height:1.35}
.change-order .co-close-open,.change-order .co-close-confirm{background:var(--surface);border-color:var(--line-input);color:var(--ink-2);font-weight:600}
.change-order .co-line+.button,.change-order .co-line .button{background:var(--surface);border-color:var(--line-input)}
.change-order .co-line>.button{width:auto;min-height:var(--target);color:var(--ink-2);align-self:start}
.change-order .co-estimate{margin:var(--sp-2) 0 var(--sp-3);color:var(--ink-2);font-size:var(--fs-body)}
.change-order .co-request{display:grid;gap:var(--sp-2)}
.change-order .co-request p{margin:0}
.change-order .co-photo{margin:var(--sp-2) 0 var(--sp-4);max-height:200px;aspect-ratio:16/9;object-fit:cover}
.change-order .co-totals{margin-bottom:var(--sp-4)}
.change-order .co-send>p,.change-order .co-send .share-result{margin-top:var(--sp-3)}
.change-order .co-line{margin-bottom:var(--sp-3)}
.invite-link-details>summary{list-style:none;justify-content:space-between;gap:var(--sp-3)}
.invite-link-details>summary::-webkit-details-marker{display:none}
.invite-link-details>summary::after{content:"";flex:none;transition:transform .15s;width:12px;height:12px;background:currentColor;mask:var(--chevron) center/contain no-repeat;-webkit-mask:var(--chevron) center/contain no-repeat;transform:none;border:0}
.invite-lead{margin:0 0 var(--sp-3);line-height:1.5}
.access-row small,.device-row small{font-size:var(--fs-meta);line-height:1.5}
.access-row small .nowrap{white-space:nowrap}
.device-name{font-weight:600;color:var(--ink)}
.device-list>summary{min-height:var(--target);display:flex;align-items:center;font-weight:600;color:var(--ink);cursor:pointer}
.access-none{color:var(--ink-2);font-size:var(--fs-meta);margin:var(--sp-2) 0 0}
.device-list .access-row{align-items:center}
.access-user-head small{display:block}
.app .access-row .button.small,.app .device-row .button{min-height:var(--target)}
@media (max-width:480px){
.access-row{flex-wrap:wrap}
.access-row>div{flex:1 1 220px;min-width:0}
.device-row .button{margin-left:auto}
}
.app .team-grid{align-items:stretch}
.passkey-modal .modal-head .icon-button,.push-modal .modal-head .icon-button{background:transparent;width:var(--target);height:var(--target)}
.passkey-modal .modal-body>p,.push-modal .modal-body>p{margin-top:0}
.passkey-modal .modal-body p+div{margin-top:var(--sp-3)}
.passkey-modal .modal-body{display:grid}
.app .passkey-modal .form-actions .button.primary,.app .push-modal .form-actions .button.primary{font-size:var(--fs-body)}
.error-screen{align-content:start;padding-top:max(var(--sp-12),18vh)}
.error-screen .error-actions{width:100%;max-width:360px;justify-self:center}
.error-screen .error-actions .button{flex:0 0 auto;min-height:var(--target-primary);padding-inline:var(--sp-6)}
.error-screen .error-help{margin-top:var(--sp-2)}
.error-screen .error-help a{color:var(--accent,var(--accent-hover,var(--ink)));font-weight:600;text-decoration:underline}
@media (max-width:480px){
.error-screen .error-actions .button{width:100%}
.error-screen .error-actions{max-width:none}
.error-screen{padding-inline:var(--sp-5)}
}
.app .day-done .mascot{margin-bottom:var(--sp-4)}
.app .day-done h2{margin:var(--sp-2) 0}
.app .day-done p{color:var(--ink-2);font-size:var(--fs-body);margin:0}
@media (min-width:761px){
.app .day-done{max-width:760px;margin-top:var(--sp-10)}
}
.app .attention-controls{flex-wrap:wrap;align-items:center}
.app .attention-controls input{flex:1 1 220px;max-width:340px;min-height:var(--target)}
.app .attention-controls .button{flex:0 0 auto}
@media (max-width:760px){
.app .attention-controls input{max-width:none}
}
.app .attention-evidence strong,.app .attention-evidence span,.app .equipment-meta strong{font-size:var(--fs-meta)}
.file-card strong{overflow-wrap:break-word;word-break:normal;hyphens:manual}
@media (min-width:761px){
.file-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
}
.field-mode ::placeholder,.field-sheet ::placeholder,.push-modal ::placeholder{color:var(--ink-3);opacity:1}
.field-mode .field:focus-within :is(input,textarea,select),.field-sheet .field:focus-within :is(input,textarea,select){border-color:var(--navy)}
.field-home .fh-hello{font-size:var(--fs-display);font-weight:800}
.fh-flash{display:flex;align-items:flex-start;gap:var(--sp-3);margin:0;padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--success-bg);color:var(--ink);font-weight:600}
.fh-flash svg{color:var(--success);flex:none;margin-top:2px}
.fh-flash span{color:var(--ink)}
.fh-offline{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4);border-radius:var(--r-lg);background:var(--warning-bg);border:1px solid var(--line)}
.fh-offline strong{display:block;color:var(--ink);font-size:var(--fs-title);font-weight:800;margin-bottom:2px}
.fh-offline p{margin:0;color:var(--ink);font-weight:500}
.fh-offline .fh-mascot{width:64px;height:64px;border-radius:50%;object-fit:cover;object-position:50% 12%;background:var(--surface);flex:none;animation:none}
.next-job-card .badge{white-space:nowrap}
.fh-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
.fh-shortcuts button{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target-primary);padding:var(--sp-3) var(--sp-4);text-align:left;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-raised);color:var(--ink)}
.fh-shortcuts button svg{color:var(--accent);flex:none}
.fh-shortcuts strong{display:block;font-size:var(--fs-body);font-weight:800;color:var(--ink)}
.fh-shortcuts small{display:block;font-size:var(--fs-meta);color:var(--ink-3)}
@media (min-width:1000px){
.field-home>.fh-shortcuts{grid-column:1/-1;grid-row:auto;grid-template-columns:repeat(2,minmax(0,1fr))}
.field-home>.fh-flash{grid-column:1/-1}
.fh-shortcuts button{min-height:72px}
}
.is-tech .mobile-record-card .mobile-record-facts>span:last-child:not(:first-child){display:none}
.is-tech .mobile-record-card>p,.is-tech .mobile-record-card .mobile-record-facts{color:var(--ink-2)}
.is-tech .list-foot{color:var(--ink-2);font-size:var(--fs-meta)}
.is-tech .list-foot span,.is-tech .people-filter{display:none}
.is-tech .itinerary .section-title small{color:var(--ink-2);font-size:var(--fs-meta);font-weight:600}
.is-tech .file-empty{border:1px solid var(--line);border-style:solid;background:var(--surface);border-radius:var(--r-lg);padding:var(--sp-6) var(--sp-4)}
.is-tech .file-empty .empty{padding:0}
.is-tech .file-empty .mascot{width:104px;height:104px;border-radius:50%;object-fit:cover;object-position:50% 10%;background:var(--accent-tint);margin:0 auto var(--sp-3);animation:none}
.is-tech .file-empty h3{color:var(--ink);font-size:var(--fs-title);font-weight:800}
.is-tech .file-empty p{color:var(--ink-2)}
.is-tech .file-types i{color:var(--ink-2)}
@media (max-width:760px){
.field-job{gap:var(--sp-2)}
.field-job .fj-head{gap:6px;padding-bottom:var(--sp-3)}
.field-job .fj-top{margin-bottom:2px}
.field-job .fj-head h1{font-size:var(--fs-display);line-height:1.1;margin:0}
.fj-desc{margin:0;font-size:var(--fs-body);line-height:1.45}
}
.fj-captured,.field-more,.fj-history{border-color:var(--line-input);box-shadow:none}
.fj-captured>summary,.field-more>summary,.fj-history>summary{position:relative;display:flex;align-items:center;gap:var(--sp-2);list-style:none;padding-right:44px;cursor:pointer}
.fj-captured>summary::-webkit-details-marker,.field-more>summary::-webkit-details-marker,.fj-history>summary::-webkit-details-marker{display:none}
.fj-captured>summary::after,.field-more>summary::after,.fj-history>summary::after{content:"";position:absolute;right:18px;top:50%;width:9px;height:9px;margin-top:-6px;transform:rotate(45deg);transition:transform .15s;width:12px;height:12px;background:currentColor;mask:var(--chevron) center/contain no-repeat;-webkit-mask:var(--chevron) center/contain no-repeat;transform:none;border:0}
.fj-captured[open]>summary::after,.field-more[open]>summary::after,.fj-history[open]>summary::after{margin-top:-2px;transform:rotate(180deg)}
.field-more>summary::before,.fj-history>summary::before{order:2;margin-left:auto;font-weight:500;font-size:var(--fs-meta);color:var(--ink-3)}
.field-more>summary::before{content:"Om jobben, rapport og filer"}
.fj-history>summary::before{content:"Besøk og utstyr"}
.fj-captured>summary{flex-wrap:wrap}
.fj-running{white-space:nowrap}
.fj-captured ul{padding:0 var(--sp-3) var(--sp-3)}
.fj-captured li>details{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-sunk)}
.fj-captured li>details>summary{display:flex;align-items:center;gap:var(--sp-3);justify-content:space-between;min-height:48px;padding:0 var(--sp-3);list-style:none;position:relative}
.fj-captured li>details>summary::-webkit-details-marker{display:none}
.fj-item-label{font-weight:800;color:var(--ink)}
.fj-item-detail{margin-left:auto;font-size:var(--fs-meta);font-weight:600;color:var(--ink-2);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.fj-captured li>details:not(.fj-flat)>summary{padding-right:34px}
.fj-captured li>details:not(.fj-flat)>summary::after{content:"";position:absolute;right:14px;top:50%;margin-top:-6px;width:12px;height:12px;background:currentColor;mask:var(--chevron) center/contain no-repeat;-webkit-mask:var(--chevron) center/contain no-repeat;transform:none;border:0}
.fj-captured li>details[open]>summary::after{margin-top:-2px;transform:rotate(180deg)}
.fj-item-body{padding:var(--sp-2) var(--sp-3) var(--sp-3)}
.fj-notice,.fj-finished{margin:0;padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--success-bg);color:var(--ink);font-weight:600;align-items:flex-start}
.fj-notice svg,.fj-finished svg{color:var(--success);flex:none;margin-top:2px}
.fj-notice span,.fj-finished span{color:var(--ink)}
.glyph-check{display:none}
.fj-extra-row{padding:var(--sp-3) var(--sp-4);gap:2px}
.fj-extra-row p{font-weight:600}
.field-more>.fm-body{padding:var(--sp-2) var(--sp-4) var(--sp-4);gap:var(--sp-5)}
.fm-body .fm-section>h2,.fm-body .field-evidence .section-title h3,.fm-body .field-evidence .section-title h4{font-size:var(--fs-title);font-weight:800;margin:0;color:var(--ink)}
.fm-body .field-evidence{border-radius:0;background:transparent;padding:var(--sp-4) 0 0;margin:0;box-shadow:none}
:root .fm-body .field-evidence{border:0;border-top:1px solid var(--line)}
.fm-body .field-evidence .section-title p{margin:2px 0 0;color:var(--ink-2)}
.fm-body .evidence-target{padding:var(--sp-3);background:var(--surface-sunk);border:1px solid var(--line);color:var(--ink)}
.fm-body .tabs{margin:var(--sp-3) 0;border-bottom:1px solid var(--line)}
.fm-body .tabs button{font-weight:600;color:var(--ink-2);min-width:48px}
:root .fm-body .tabs button{font-size:var(--fs-body)}
.fm-body .tabs button[aria-selected=true]{color:var(--ink);box-shadow:none}
.fm-body .manual-report{background:transparent;border:0;padding:0}
.fm-body .capture-queue{border-top:1px solid var(--line);margin-top:var(--sp-4);padding-top:var(--sp-3)}
.fm-body .capture-row{padding:var(--sp-3) 0}
.fm-body .capture-details>summary{font-size:var(--fs-meta);font-weight:600;color:var(--ink-2);min-height:48px}
.fm-body .capture-row .badge{justify-self:start}
.fm-body .fm-section .button{width:100%}
.fj-recording{order:0;grid-template-columns:auto 1fr;grid-auto-flow:row;align-items:center;text-align:left;gap:var(--sp-2) var(--sp-3);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);background:var(--surface)}
.fj-recording .fj-rec-dot{margin:0;width:14px;height:14px;box-shadow:none}
.fj-recording .fj-rec-clock{line-height:1;text-align:left}
:root .fj-recording .fj-rec-clock{font-size:var(--fs-hero)}
.fj-recording>span:not(.fj-rec-dot){grid-column:1/-1;font-weight:600;color:var(--ink-2)}
.fj-recording>.button{grid-column:1/-1}
.fj-recording .fj-rec-dot{grid-row:1}
.fj-recording .fj-rec-clock{grid-row:1;grid-column:2}
.field-job:has(.fj-recording) .fj-head .fj-top{display:none}
@media (max-width:760px){
.field-job .fj-bar{margin:var(--sp-2) calc(-1*var(--sp-4)) 0;padding:var(--sp-3) var(--sp-4) max(var(--sp-3),env(safe-area-inset-bottom));background:var(--canvas);border-top:1px solid var(--line-input);box-shadow:var(--shadow-up)}
}
:root .field-mode .fj-bar .fj-act.snakk{background:var(--surface);color:var(--accent);border:2px solid var(--accent)}
.field-mode .fj-bar .fj-act.snakk :is(span,svg){color:var(--accent)}
:root .field-mode .fj-bar .fj-act.snakk:disabled{background:var(--neutral-bg);color:var(--ink-2);border:1.5px dashed var(--line-input)}
.field-mode .fj-bar .fj-act.snakk:disabled :is(span,svg){color:var(--ink-3)}
.field-mode .fj-bar .fj-extra{font-weight:800}
:root .field-mode .fj-bar .fj-extra{background:var(--accent-tint);color:var(--ink);border:1.5px solid var(--accent)}
:root .field-mode .fj-bar .fj-extra:disabled{background:var(--neutral-bg);color:var(--ink-2);border:1.5px dashed var(--line-input)}
.field-mode .fj-act.tid.running>span{display:flex;flex-direction:column;align-items:center;gap:0;line-height:1.1}
.field-mode .fj-act.tid.running .fj-stop{font-size:var(--fs-meta);font-weight:600}
.field-mode .fj-act.tid.running .fj-timer{font-weight:800}
:root .field-mode .fj-act.tid.running .fj-timer{font-size:var(--fs-heading)}
:root .field-mode .fj-act.tid.running svg{display:none}
dialog.modal.field-sheet::backdrop{background:color-mix(in srgb,var(--navy) 55%,transparent);backdrop-filter:none}
dialog.modal.field-sheet{border:0;box-shadow:var(--shadow-up);background:var(--canvas);overflow:auto;display:flex;flex-direction:column}
dialog.modal.field-sheet .modal-head{background:var(--canvas);border-bottom:1px solid var(--line);padding:var(--sp-4) var(--sp-5)}
dialog.modal.field-sheet .modal-head h2{color:var(--ink)}
dialog.modal.field-sheet .modal-head .icon-button{color:var(--ink);background:var(--surface-sunk);border-radius:var(--r-pill)}
dialog.modal.field-sheet .modal-body{flex:1;padding:var(--sp-4) var(--sp-5) 0;display:flex;flex-direction:column;gap:var(--sp-3)}
dialog.modal.field-sheet .modal-body>form{flex:1;display:flex;flex-direction:column;gap:var(--sp-3)}
dialog.modal.field-sheet.fs-tall{min-height:min(640px,94dvh)}
.fs-actions{position:sticky;bottom:0;display:grid;gap:var(--sp-2);margin:auto calc(-1*var(--sp-5)) 0;padding:var(--sp-3) var(--sp-5) max(var(--sp-3),env(safe-area-inset-bottom));background:var(--canvas);border-top:1px solid var(--line);z-index:2}
.fs-actions .fs-cancel{background:transparent;border-color:transparent;box-shadow:none;color:var(--ink-2);font-weight:600}
:root .fs-actions .fs-cancel{min-height:var(--target)}
.fs-actions .fs-cancel:hover{background:var(--surface-sunk)}
.field-sheet .fs-input{border-width:1.5px;min-height:52px}
:root .field-sheet .fs-input{font-size:var(--fs-title)}
.field-sheet textarea.fs-input{min-height:96px}
.field-sheet .fs-form{gap:var(--sp-3)}
.field-sheet .fs-label{margin-bottom:-6px}
:root .field-sheet .fs-label{font-size:var(--fs-body)}
.field-sheet .button:disabled,.field-sheet .button.primary:disabled{opacity:1;background:var(--neutral-bg);border:1.5px dashed var(--line-input);color:var(--ink-2);box-shadow:none}
.field-sheet .button.primary:disabled :is(span,svg){color:var(--ink-2)}
.field-sheet .fs-added{margin:0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--success-bg);border:1px solid var(--line);color:var(--ink);font-weight:600;gap:var(--sp-2)}
.field-sheet .fs-added svg{color:var(--success)}
.field-sheet .fs-check{min-height:52px;padding:var(--sp-2) var(--sp-4)}
.field-sheet .fs-check input{width:22px;height:22px;accent-color:var(--navy)}
.field-sheet .fs-warn{padding:var(--sp-3) var(--sp-4);margin:0}
.field-sheet .fs-chip{min-height:48px}
.field-sheet .fs-recent h3{color:var(--ink-2);font-size:var(--fs-meta);font-weight:800;margin:0 0 var(--sp-2)}
.fs-closeout{padding:var(--sp-3) var(--sp-4);gap:var(--sp-2)}
.fs-closeout h3{font-size:var(--fs-body);font-weight:800;margin:0 0 var(--sp-1)}
.fs-closeout ul{list-style:none;margin:0;padding:0;display:grid}
.fs-closeout li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-top:1px solid color-mix(in srgb,var(--warning) 22%,transparent)}
.fs-closeout li:first-child{border-top:0}
.fs-closeout li>span{font-size:var(--fs-body);font-weight:600;line-height:1.3;color:var(--ink)}
.fs-closeout li .closeout-fix{white-space:normal;line-height:1.15}
:root .fs-closeout li .closeout-fix{min-height:var(--target);font-size:var(--fs-meta);border:1.5px solid var(--navy)}
.fs-closeout.ok{display:flex;align-items:center;gap:var(--sp-2);margin:0;color:var(--ink);font-weight:600}
.fs-closeout.ok svg{color:var(--success)}
.fs-equipment{display:grid;gap:var(--sp-2);margin-top:var(--sp-3)}
.fs-success .modal-body{align-items:stretch;text-align:center}
.fs-success .fs-done{flex-direction:column;justify-content:center;gap:var(--sp-3);margin:var(--sp-4) 0 0;font-size:var(--fs-heading);line-height:1.2;color:var(--success)}
.fs-success .fs-done span{color:var(--success)}
.fs-success .fs-job{display:grid;gap:2px;margin:0;padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-sunk)}
.fs-success .fs-warn{text-align:left}
.push-modal .modal-body,.passkey-modal .modal-body{gap:var(--sp-3)}
.push-modal .modal-body>p:not(.inline-note):not(.form-error){color:var(--ink-2);margin:0}
.push-modal .inline-note,.passkey-modal .inline-note{margin:0;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--surface-sunk);border:1px solid var(--line);color:var(--ink);font-weight:500}
.push-modal .push-ios,.push-modal .push-blocked{display:flex;align-items:flex-start;gap:var(--sp-3);background:var(--warning-bg);color:var(--ink)}
.push-modal .push-ios svg,.push-modal .push-blocked svg{flex:none;color:var(--warning);margin-top:2px}
.push-modal .push-ios span,.push-modal .push-blocked span{color:var(--ink)}
.push-modal .nb{white-space:nowrap}
.push-modal .form-actions,.passkey-modal .form-actions{display:grid;gap:var(--sp-2);margin-top:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--line)}
.push-modal .form-actions .button,.passkey-modal .form-actions .button{width:100%;min-height:var(--target-primary)}
.passkey-modal .form-actions .button:not(.primary){background:var(--surface);color:var(--ink)}
.passkey-modal .form-actions .button:nth-child(3){min-height:var(--target);border-color:transparent;background:transparent;color:var(--ink-2);box-shadow:none;font-weight:600}
.passkey-modal .modal-head h2{font-size:var(--fs-heading);line-height:1.2}
dialog.modal.field-sheet .modal-body{padding-bottom:max(var(--sp-5),env(safe-area-inset-bottom))}
dialog.modal.field-sheet .modal-body:has(.fs-actions){padding-bottom:0}
:root .fj-captured li>details{min-height:0}
.fj-running{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--r-pill);background:var(--accent-tint);border:1px solid var(--line);color:var(--accent);font-size:var(--fs-meta)}
.fj-recording>span:not(.fj-rec-dot){font-size:var(--fs-body)}
.fs-hint{margin:0;color:var(--ink-2);font-size:var(--fs-meta)}
.fs-next{list-style:none;counter-reset:n;margin:0;padding:0;display:grid;gap:var(--sp-2);text-align:left}
@media (max-width:760px){
.field-job{min-height:calc(100dvh - 91px)}
.field-job:has(.fj-history[open]) .fj-bar{position:static;box-shadow:none}
}
.push-modal .form-actions,.passkey-modal .form-actions{justify-content:stretch;grid-template-columns:minmax(0,1fr)}
dialog.modal.field-sheet.fs-tall:not(.fs-success){min-height:94dvh}
.field-mode :is(input,textarea,select):focus-visible,.field-sheet :is(input,textarea,select):focus-visible{outline:2px solid var(--navy);outline-offset:0;border-color:transparent}
@media (max-width:760px){
.field-job.fj-long .fj-bar{position:static;box-shadow:none}
}
:root .fm-body .capture-row{grid-template-columns:minmax(0,1fr) auto}
.fm-body .capture-row .capture-details{grid-column:1/-1}
.fm-body .tabs{gap:var(--sp-2);justify-content:space-between}
.fm-body .tabs button{padding-inline:var(--sp-2)}
@media (max-width:760px){
.is-tech .day-picker{display:flex;gap:var(--sp-2);width:100%}
.is-tech .day-current{flex:1}
.field-job{display:flex;flex-direction:column}
.field-job>*{min-width:0}
.field-job>.fj-bar{margin-top:auto}
}
.fm-body .tabs button{min-height:48px}
:root .fm-body .tabs button{min-width:56px}
:root .fm-body .capture-details>summary{min-height:48px}
.is-tech .day-layout{align-items:start}
.fm-body .field-evidence .section-title{padding:0;gap:var(--sp-3);align-items:flex-start}
.fm-body .field-evidence .tabs{width:100%;max-width:100%;margin:var(--sp-3) 0;padding:0}
.fm-body .manual-report .button[type=submit]{width:100%}
.fm-body .capture-queue .section-title{padding:0;align-items:center;gap:var(--sp-3)}
.fm-body .capture-queue .section-title h4{margin:0}
.fs-actions{box-shadow:var(--shadow-up)}
@media (max-width:760px){
.field-mode .fj-bar{gap:var(--sp-2)}
.field-mode .fj-bar>*,.field-mode .fj-bar>.fj-act.ferdig,.field-mode .fj-bar>.fj-extra{grid-column:auto;min-width:0;min-height:56px;padding:var(--sp-2);font-size:var(--fs-body);white-space:normal;line-height:1.15;flex-direction:column;gap:2px;justify-content:center}
.field-mode .fj-bar>.fj-extra{grid-column:span 1}
dialog.modal.field-sheet{width:100%;max-width:100%;margin:0;margin-top:auto;max-height:100dvh}
dialog.modal.field-sheet.fs-tall{min-height:100dvh;border-radius:0}
.field-mode .fm-body>*,.field-mode :is(input,textarea,select):focus{box-shadow:none}
.field-mode .fh-shortcuts{width:100%}
.field-mode .fj-desc{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;font-size:var(--fs-body)}
.field-mode :is(.capture-row,.pa-row) :is(p,span,small){font-size:var(--fs-body)}
}
.is-tech .mobile-record-facts{flex-wrap:wrap;gap:var(--sp-2) var(--sp-3)}
.push-modal :is(p,li,label,span){font-size:var(--fs-body)}
.field-mode.pa-screen .pa-seg{display:grid;gap:var(--sp-2);flex:none;min-height:0;padding:0;border:0;background:none;box-shadow:none;align-items:stretch;justify-content:stretch}
.field-mode.pa-screen .pa-seg-btn{width:100%}
.field-mode.pa-screen .pa-days{padding:0}
.field-mode.pa-screen .pa-day{padding:var(--sp-3) var(--sp-4);margin:0}
.field-mode.pa-screen .pa-day dl.pa-day-nums{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:760px){
.field-mode .fj-bar>.fj-act.ferdig{grid-column:auto;order:3}
.field-mode .fj-bar>.fj-extra{order:2}
.field-mode .fj-bar>.fj-act.materialer{order:1}
}
.push-modal .modal-body{display:flex;flex-direction:column;gap:var(--sp-3)}
@media (max-width:760px){
.field-job:has(.fj-recording) .fj-bar{display:none}
.field-mode .fj-bar{grid-template-columns:1fr 1.2fr 1fr}
.field-mode .fj-bar>.fj-extra{font-size:var(--fs-body);hyphens:none;overflow-wrap:normal}
dialog.modal.field-sheet.fs-tall:not(.fs-success){min-height:100dvh;height:100dvh;border-radius:0}
dialog.modal.field-sheet::backdrop{background:var(--surface)}
.field-mode .fj-desc{-webkit-line-clamp:4}
}
.field-mode :is(input,textarea,select):focus-visible{outline:3px solid var(--navy);outline-offset:2px}
.fs-closeout li .closeout-fix{max-width:none;min-height:48px;display:inline-flex;align-items:center;padding:0 var(--sp-3);border-radius:var(--r-pill);background:var(--navy,var(--neutral-bg));color:var(--navy);font-weight:600;text-decoration:none}
.is-tech .worker-label{display:none}
.is-tech .file-types{margin:0;color:var(--ink-2,var(--ink-2));font-size:var(--fs-body)}
.push-modal .form-actions{display:flex;flex-direction:column;gap:var(--sp-2)}
.pa-time-row{display:inline-flex;gap:var(--sp-2);align-items:baseline}
@media (min-width:1000px){
.field-mode.pa-screen{max-width:1100px}
.field-mode.pa-screen .pa-days{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}
}
.pa-crew .pa-times{display:flex;flex-direction:column;align-items:flex-end;gap:var(--sp-1)}
.field-mode .nb{white-space:nowrap}
.field-mode .fj-count-part{display:inline-block}
.field-mode .fj-count-sep{white-space:pre}
.field-mode .fj-count{line-height:1.5}
.field-mode .fj-address,.field-mode .nj-address{text-wrap:balance;overflow-wrap:anywhere}
.fm-body .pa-card{border:0;box-shadow:none;background:transparent;padding:0;border-radius:0}
.field-mode :is(.button,.btn,button):disabled{color:var(--ink-2);opacity:1}
.field-mode .fj-recording{box-sizing:border-box;max-width:100%;min-height:96px;overflow:hidden}
.field-mode :is(input,textarea,select)::placeholder{color:var(--ink-2);opacity:1}
.push-modal{max-width:420px}
.push-modal h2{font-size:var(--fs-heading)}
.fh-shortcuts,.fh-shortcuts.pa-links{margin-inline:0}
.pa-days .pa-day{min-width:0}
.pa-days{align-items:stretch}
@media (min-width:1000px){
.field-mode{font-size:var(--fs-title)}
}
.loading-screen>*,.late-show{animation:bv-late .3s linear both}
.co-photo{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;background:var(--surface-sunk);border-radius:var(--r-sm)}
.portal-photo-grid figure{aspect-ratio:4/3;margin:0;background:var(--surface-sunk);border-radius:var(--r-sm);overflow:hidden}
.portal-photo-grid figure img{display:block;width:100%;height:100%;object-fit:cover}
@media (max-width:760px){
.app,.customer-portal,.app p,.app li,.customer-portal p,.customer-portal li,.app .inline-note,.customer-portal .inline-note{font-size:var(--fs-body)}
}
@keyframes enter{from{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@keyframes mascot-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes wave{0%,100%{transform:rotate(0)}20%{transform:rotate(16deg)}40%{transform:rotate(-8deg)}60%{transform:rotate(14deg)}80%{transform:rotate(-4deg)}}
@keyframes cb-draw{to{stroke-dashoffset:0}}
@keyframes day-pop{from{transform:scale(.92);opacity:0}to{transform:none;opacity:1}}
@keyframes bv-late{0%,99%{opacity:0}100%{opacity:1}}
:root .app .field-job{--fj:1}
:root .app .field-job .fj-head{display:flex;flex-direction:column;gap:var(--sp-2);padding:0;background:none;border:0;box-shadow:none}
:root .app .field-job .fj-who{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
:root .app .field-job .fj-who h1{margin:0;font-size:var(--fs-heading);line-height:var(--lh-heading);color:var(--ink)}
:root .app .field-job .fj-call{min-height:var(--target);flex:none;font-size:var(--fs-body)}
:root .app .field-job .fj-title{margin:0;font-size:var(--fs-title);color:var(--ink);font-weight:600}
:root .app .field-job .fj-meta{margin:0;display:flex;gap:var(--sp-3);align-items:center;font-size:var(--fs-body);color:var(--ink-2)}
:root .app .field-job .fj-address{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target);padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-size:var(--fs-body);text-decoration:none}
:root .app .field-job .fj-address span{flex:1;min-width:0}
:root .app .field-job .fj-access{margin:0;display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--fs-body);color:var(--ink);border:0;padding:0;background:none}
:root .app .field-job .fj-access strong{font-size:var(--fs-meta);color:var(--ink-2);font-weight:600}
:root .app .field-job .fj-desc{margin:0;font-size:var(--fs-body);color:var(--ink-2)}
:root .app .field-job .fj-extra-status{display:flex;flex-direction:column;gap:var(--sp-2)}
:root .app .field-job .fj-extra-row{border-left-width:1px;border-style:solid}
:root .app .field-job .fd-line{display:block;font-size:var(--fs-body);color:var(--ink)}
:root .app .field-job .fj-captured>summary,:root .app .field-job .field-more>summary,:root .app .field-job .fj-history>summary{min-height:var(--target);display:flex;align-items:center;font-size:var(--fs-body);font-weight:600;color:var(--ink);padding:0 var(--sp-3)}
:root .app .field-job .field-more>summary::before,:root .app .field-job .fj-history>summary::before{content:none;display:none}
:root .app .field-job .fj-count-part{font-weight:600}
:root .app .field-job .fj-bar{position:sticky;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface);border-top:1px solid var(--line);box-shadow:var(--shadow-up);z-index:5}
:root .app .field-job .fj-bar .button{margin:0;width:100%;min-width:0;border-radius:var(--r-md);border:1px solid var(--line-input);background:var(--surface);color:var(--ink);font-weight:600;box-shadow:none;display:flex;align-items:center;justify-content:center;gap:var(--sp-2);hyphens:manual;overflow-wrap:normal}
:root .app .field-job .fj-bar .button span,:root .app .field-job .fj-bar .button svg,:root .app .field-job .fj-bar .button time{color:inherit}
:root .app .field-job .fj-bar .button.fd-main{grid-column:span 2;min-height:var(--target-primary);font-size:var(--fs-title)}
:root .app .field-job .fj-bar .button.fd-tool{flex-direction:column;min-height:64px;padding:var(--sp-2) var(--sp-1);gap:var(--sp-1);font-size:var(--fs-meta);line-height:1.15}
:root .app .field-job .fj-bar .button.primary{background:var(--accent-field);border-color:var(--accent-field);color:var(--surface)}
:root .app .field-job .fj-bar .button.secondary{background:var(--surface);border-color:var(--line-input);color:var(--ink)}
:root .app .field-job .fj-bar .button.selected{background:var(--accent-tint);border:2px solid var(--accent);color:var(--ink)}
:root .app .field-job .fj-bar .button:disabled{background:var(--neutral-bg);border:1.5px dashed var(--line-input);color:var(--ink-2)}
:root .app .field-job .fj-bar .button.fj-extra{order:0}
:root .app .field-job dialog.field-sheet .modal-body{display:flex;flex-direction:column;gap:var(--sp-4)}
:root .app .field-job dialog.field-sheet .modal-foot{display:flex;flex-direction:column;gap:var(--sp-2)}
:root .app .field-job dialog.field-sheet .modal-foot .button{width:100%;min-height:var(--target)}
:root .app .field-job dialog.field-sheet .modal-foot .button.primary{min-height:var(--target-primary)}
:root .app .field-job .fd-form{display:flex;flex-direction:column;gap:var(--sp-4)}
:root .app .field-job .fd-inline{display:flex;gap:var(--sp-2);align-items:stretch}
:root .app .field-job .fd-inline input{flex:1;min-width:0;min-height:var(--target-primary)}
:root .app .field-job .fd-inline .button{min-height:var(--target-primary);flex:none}
:root .app .field-job .field small,:root .app .field-job .fd-meta,:root .app .field-job .fd-hint{font-size:var(--fs-meta);color:var(--ink-2);margin:0}
:root .app .field-job .fd-section h3,:root .app .field-job .fs-closeout h3{margin:0 0 var(--sp-2);font-size:var(--fs-title);color:var(--ink)}
:root .app .field-job .fs-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
:root .app .field-job .fs-chip{min-height:var(--target);padding:0 var(--sp-4);font-size:var(--fs-body)}
:root .app .field-job .fd-unit{display:flex;align-items:center;gap:var(--sp-2)}
:root .app .field-job .fd-unit input{flex:1;min-width:0}
:root .app .field-job .fd-unit span{font-size:var(--fs-body);color:var(--ink-2)}
:root .app .field-job .fd-pair{display:flex;flex-direction:column;gap:var(--sp-2)}
:root .app .field-job .fd-note{display:flex;align-items:center;gap:var(--sp-2);margin:0;font-size:var(--fs-body);color:var(--ink-2)}
:root .app .field-job .fs-check{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target);font-size:var(--fs-body);color:var(--ink);border:0;background:none;padding:0}
:root .app .field-job .fs-check input{width:24px;height:24px;flex:none}
:root .app .field-job .fd-photo-ok{display:flex;align-items:center;gap:var(--sp-3);margin:0;font-size:var(--fs-body);color:var(--ink)}
:root .app .field-job .fd-photo-ok img{object-fit:cover;border-radius:var(--r-sm)}
:root .app .field-job .fs-closeout{display:flex;flex-direction:column;gap:var(--sp-3);border:0;background:none;padding:0}
:root .app .field-job .fs-closeout.ok{padding:var(--sp-3)}
:root .app .field-job .fs-closeout .fs-added{display:flex;align-items:center;gap:var(--sp-2);margin:0;font-size:var(--fs-body);color:var(--success)}
:root .app .field-job .fd-checks .list-row{min-height:var(--target);gap:var(--sp-3)}
:root .app .field-job .fd-ring{border-radius:var(--r-pill);flex:none}
:root .app .field-job .fd-checks .closeout-fix{min-height:var(--target);background:var(--surface);color:var(--ink);border:1px solid var(--line-input);border-radius:var(--r-md);font-size:var(--fs-body);font-weight:600}
:root .app .field-job .fs-extra-info{font-size:var(--fs-body);color:var(--ink-2)}
:root .app .field-job .fs-center{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center}
:root .app .field-job .fs-done{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);margin:0;font-size:var(--fs-title);font-weight:600;color:var(--ink)}
:root .app .field-job .fs-job{margin:0;font-size:var(--fs-body);color:var(--ink-2)}
:root .app .field-job .fj-bar>.button{grid-column:span 1;grid-row:auto;order:0}
:root .app .field-job .fj-bar>.button.fd-main{grid-column:span 2}
:root .app .field-job .fj-bar>.button.fd-tool{grid-column:span 1}
:root .app .field-job .fj-bar .button.fd-main svg{display:none}
:root .app .field-job .fj-bar .button.tid.running{flex-direction:column;gap:0}
:root .app .field-job .fj-captured>summary .fj-count{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:root .app .field-job dialog.field-sheet .modal-body{justify-content:flex-start}
:root .app .field-job dialog.field-sheet .modal-body>*{margin-top:0;margin-bottom:0}
:root .app .field-job .fd-checks .list-row{display:flex;flex-direction:row;align-items:center;text-align:left;padding:var(--sp-2) var(--sp-3)}
:root .app .field-job .fd-checks .list-row-main{flex:1;min-width:0;display:block}
:root .app .field-job .fd-checks .list-row-title{font-size:var(--fs-body);color:var(--ink);font-weight:600}
:root .app .field-job .fd-checks .closeout-fix{flex:none}
:root .app .field-job .callout.fs-closeout.ok{display:grid;grid-template-columns:auto 1fr;align-items:start;justify-items:start;text-align:left;width:100%;gap:var(--sp-3)}
:root .app .field-job .callout.fs-closeout.ok .fs-added{background:none;border:0;padding:0;border-radius:0;display:block}
:root .app .field-job .fs-closeout>.fs-added{background:none;border:0;padding:0}
@media (min-width:1000px){
:root .app .field-job>.fj-bar{position:sticky;top:96px;bottom:auto;grid-column:2;margin:0 0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-raised)}
}
:root .app .field-job .fj-recording .button{min-height:var(--target-primary);font-size:var(--fs-title)}
:root .app .field-job .fj-recording .button.tertiary{min-height:var(--target);font-size:var(--fs-body)}
:root .app .field-job dialog.field-sheet .modal-body>form{flex:none}
:root .app .field-job dialog.field-sheet .modal-foot .button.tertiary,:root .app .field-job .fj-recording .button.tertiary{background:transparent;border-color:transparent;text-decoration:underline}
:root .app .field-job .fj-call{border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center}
:root .app .field-job .fj-bar .button.fj-extra span{display:block;line-height:1.15}
:root .app .field-job .fs-stamp{margin:0;font-size:var(--fs-meta);color:var(--ink-2)}
:root .app .field-job .fd-checks .closeout-fix[data-fix=no_materials]{white-space:normal;text-align:center}
:root .app .field-job .fj-item,:root .app .field-job .fj-captured li{border:0;box-shadow:none;background:none}
:root .app .field-job .fj-eq-row{display:flex;justify-content:space-between;gap:var(--sp-3);margin:0}
:root .app .field-job .fj-eq-row span:first-child{color:var(--ink-2)}
:root .app .field-job .fj-eq-row span:last-child{text-align:right;overflow-wrap:anywhere}
:root .app [data-testid="complete-job-form"]{display:flex;flex-direction:column;gap:var(--sp-4)}
:root .app .co-stack{display:flex;flex-direction:column;gap:var(--sp-4)}
:root .app .co-check{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target);font-size:var(--fs-body);color:var(--ink)}
:root .app .co-check input{width:24px;height:24px;flex:none}
:root .app .co-note{margin:0;font-size:var(--fs-meta);color:var(--ink-2)}
:root .app .co-missing{display:flex;flex-direction:column;gap:var(--sp-3)}
:root .app .field-job .fs-next{max-width:32ch;text-align:center}
:root .app .field-job .fs-scope-note{margin:0}
:root .app .field-job .fd-ring{display:inline-flex;align-items:center;justify-content:center;border:0;width:24px;height:24px;color:var(--warning-ink,var(--ink-2))}
:root .app .field-job .fd-ring svg{width:20px;height:20px}
:root .app .field-job .fd-checks .closeout-fix{min-width:9.5rem;max-width:9.5rem;width:9.5rem;white-space:normal;text-align:center;line-height:1.15;padding:var(--sp-2) var(--sp-2)}
:root .app .field-job .fd-checks .closeout-fix[data-fix=no_materials]{max-width:9.5rem}
:root .app .field-job .fd-hint{text-align:left;font-size:var(--fs-body);color:var(--ink)}
:root .app .field-job .fd-remove{color:var(--danger)}
:root .app .field-job .fd-instruction{margin-top:var(--sp-1);font-weight:600}
:root .app .field-job .fj-extra-row{margin:0}
:root .app .field-job .callout{align-items:flex-start;text-align:left}
:root .app .field-job .callout>div{text-align:left}
:root .app .field-job .fd-warn{order:0}
:root .app .field-job .fd-photo-ok img{width:72px;height:72px}
:root .app .field-job dialog.field-sheet .modal-body{padding-bottom:var(--sp-8,2rem)}
:root .app .field-job .fd-photo{align-self:flex-start}
:root .app .field-job .fj-captured>summary{padding-right:var(--sp-4);gap:var(--sp-3)}
:root .app .field-job .fm-section h2,:root .app .field-job .fm-body .fm-section>h2,:root .app .field-job .pa-card-head h2{font-size:var(--fs-body);font-weight:600}
:root .app .field-job .fj-call{width:auto;padding:0 var(--sp-4);gap:var(--sp-2)}
:root .app .field-job .fj-bar .button.fj-extra svg{display:block}
:root .app .field-job .fj-bar .button.fj-extra{gap:var(--sp-1)}
:root .app .field-job .fj-recording{gap:var(--sp-4)}
:root .app .field-job .fj-recording .fj-rec-clock{font-size:var(--fs-hero)}
:root .app .field-job .fj-recording .button.tertiary{margin-top:var(--sp-3)}
:root .app .field-job .fj-offline{background:var(--warning-bg)}
@media (max-width:760px){
:root .app .field-home .fh-hello{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);margin:-1px}
}
:root .app .field-job .fj-captured>summary .fj-count{padding-right:var(--sp-5,1.25rem)}
:root .app .closeout-office.co-missing{border:0;background:none;padding:0;margin:0;border-radius:0}
.app .od-queue,.app .od-found{display:grid;gap:var(--sp-3);background:none;border:0;box-shadow:none;padding:0;min-height:0}
.app .od-go{width:100%;min-height:var(--target-primary)}
.app .od-found-zero{margin:0;display:flex;align-items:baseline;gap:var(--sp-3);color:var(--ink-2)}
.app .day-queue.list-group{display:block;max-width:720px}
.app .day-queue .dq-item{display:grid;gap:var(--sp-2);padding:var(--sp-4);border:0;border-top:1px solid var(--line);border-radius:0;background:none;box-shadow:none;margin:0}
.app .day-queue .dq-item:first-child{border-top:0}
.dq-top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-3)}
.dq-text{display:grid;gap:var(--sp-1);min-width:0}
.dq-title{font-size:var(--fs-title);font-weight:600;overflow-wrap:anywhere}
.dq-summary,.dq-detail{margin:0;color:var(--ink-2)}
.dq-detail{font-size:var(--fs-meta)}
.dq-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.dq-resolved{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--line);color:var(--ink-2)}
.dq-resolved-text{display:grid;gap:var(--sp-1);min-width:0}
.dq-resolved .badge{margin-left:auto}
.dq-resolved small{color:var(--ink-3)}
.day-done{display:grid;gap:var(--sp-4);justify-items:center;text-align:center;padding:var(--sp-6) var(--sp-4)}
.dq-forecast{margin-top:var(--sp-2)}
.dq-forecast summary{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-1)}
.dq-credit{display:block;color:var(--ink-3);font-size:var(--fs-meta)}
.weather-evidence-body{display:grid;gap:var(--sp-2);padding:var(--sp-2) 0}
.weather-evidence-body ul{margin:0;padding-left:var(--sp-5)}
.app .change-order .co-line{display:grid;gap:var(--sp-3);padding:var(--sp-4);border:0;border-top:1px solid var(--line);border-radius:0;background:none;box-shadow:none;margin:0}
.app .change-order .co-line:first-child{border-top:0}
.app .change-order .co-line.needs-price{background:var(--warning-bg)}
.co-fields{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:var(--sp-3)}
.co-heading{margin:0;font-size:var(--fs-title);font-weight:600}
.co-meta{margin:0;color:var(--ink-3);font-size:var(--fs-meta)}
.co-said{margin:0;display:grid;gap:var(--sp-1)}
.co-quote{font-size:var(--fs-title);overflow-wrap:anywhere}
.app .change-order .co-photo{width:100%;height:auto;object-fit:cover;border-radius:var(--r-md)}
.app .change-order .co-quiet{justify-self:start;color:var(--danger);background:none;border:0;min-height:var(--target)}
.co-foot{display:grid;gap:var(--sp-2);width:100%}
.co-foot.inline{display:flex;flex-wrap:wrap}
.co-totals{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3)}
.co-totals-label{color:var(--ink-2)}
.co-link-details input{width:100%}
.af-deadline{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);margin:0;color:var(--ink-2)}
.af-how{margin:0;color:var(--ink-2)}
.app .attention-fix{display:grid;gap:var(--sp-2);border:0;background:none;padding:0}
.attention-controls{display:flex;flex-wrap:wrap;gap:var(--sp-1)}
.app .af-details{border:0;background:none;box-shadow:none;border-radius:0;padding:0}
.attention-panel .section-title p{font-size:var(--fs-body)}
.af-details summary{min-height:var(--target)}
.dq-progress{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3)}
.dq-progress p{margin:0;font-weight:600}
.dq-progress small{color:var(--ink-3);font-size:var(--fs-meta)}
.af-details input{width:100%;margin:var(--sp-2) 0}
.attention-evidence{margin:0;color:var(--ink-2);font-size:var(--fs-meta)}
@media (max-width:480px){
.co-fields{grid-template-columns:1fr 1fr}
.co-fields>:nth-child(2){grid-column:1/-1;order:3}
}
.app .dq-title{display:block}
.app .dq-title .dq-k{font-weight:400;color:var(--ink-2)}
.app .dq-title .dq-k::after{content:" · "}
.app .found-how svg{display:inline-block}
.app .dq-actions.stack{display:grid;grid-template-columns:1fr}
.app .dq-actions.stack .btn,.app .dq-actions.stack .button{width:100%;min-height:var(--target)}
.app .dq-actions.stack .day-approve{order:-1;min-height:var(--target-primary)}
.app .dq-actions .day-defer{color:var(--ink-2)}
.app .dq-forecast summary{padding:var(--sp-3) 0;min-height:var(--target)}
.app .od-sec-title{margin:var(--sp-5) 0 var(--sp-2);font-size:var(--fs-title);font-weight:600}
.app .found-how[aria-expanded] .icon{transition:transform .15s}
.app .found-how[aria-expanded=true] .icon{transform:rotate(180deg)}
.af-when{display:inline-flex;align-items:center;gap:var(--sp-2)}
.app .attention-fix .af-go{justify-self:stretch;width:100%;min-height:var(--target)}
.app .attention-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2);margin-top:var(--sp-2)}
.app .attention-controls .button{min-height:var(--target);padding:var(--sp-2) var(--sp-1);font-size:var(--fs-meta)}
.app .attention-controls .ac-open{grid-column:1/-1}
.app .attention-controls .ac-more{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}
.app .attention-card-head h4{font-size:var(--fs-title);font-weight:600}
.app .attention-card{display:grid;gap:var(--sp-3)}
.app .attention-card>*{margin:0}
.co-foot-row{display:flex;gap:var(--sp-2);align-items:center}
.co-foot-row .button{flex:1 1 0}
.co-foot-row .button.primary{flex:2 1 0;min-height:var(--target-primary)}
.app .change-order .co-foot>.button.primary,.app .change-order .co-foot>.btn.primary{width:100%;min-height:var(--target-primary)}
.app .change-order .co-small{font-size:var(--fs-meta);min-height:var(--target)}
.co-totals-label small{display:block;color:var(--ink-3);font-size:var(--fs-meta)}
.app .change-order .co-heading{margin:var(--sp-4) 0 var(--sp-2)}
.app .change-order .co-photo{max-height:140px}
.app .change-order .co-who{margin:0 0 var(--sp-2)}
.app .change-order .co-foot{padding:var(--sp-3) var(--sp-4);background:var(--surface);border-top:1px solid var(--line)}
@media (max-width:480px){
dialog.modal.change-order,dialog.modal.change-order.full{width:100%;max-width:100%;margin:auto 0 0;max-height:100dvh;border-radius:var(--r-lg) var(--r-lg) 0 0}
}
.customer-portal{background:var(--canvas)}
.customer-portal .portal-top{max-width:1180px;padding:var(--sp-3) var(--sp-4)}
.customer-portal .portal-main{padding:var(--sp-2) var(--sp-4) var(--sp-10)}
.customer-portal .portal-heading{margin:var(--sp-2) 0 var(--sp-4)}
.customer-portal .portal-heading h1{font-size:var(--fs-heading);letter-spacing:-.01em;margin:0 0 var(--sp-1)}
.customer-portal .portal-card{padding:var(--sp-4);margin-bottom:var(--sp-4);border-radius:var(--r-lg);box-shadow:none;background:var(--surface)}
.customer-portal .portal-card h2{font-size:var(--fs-title);font-weight:600;letter-spacing:0}
.customer-portal .portal-section-title{align-items:center;margin-bottom:var(--sp-3)}
.customer-portal .portal-sub{margin:var(--sp-4) 0 var(--sp-2);font-size:var(--fs-title);font-weight:600}
.customer-portal .portal-change{display:flex;justify-content:space-between;gap:var(--sp-3);align-items:flex-start;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--surface-sunk);color:var(--ink)}
.customer-portal .portal-change strong{display:block}
.customer-portal .portal-change p{margin:var(--sp-1) 0 0;white-space:pre-wrap}
.customer-portal .portal-thumbs{display:flex;flex-wrap:wrap;gap:var(--sp-2);flex:none}
.customer-portal .portal-thumb{width:88px;height:88px;min-height:88px;padding:0;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:var(--surface-sunk);cursor:zoom-in;flex:none}
.customer-portal .portal-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.customer-portal .portal-total{display:grid;gap:2px;margin:var(--sp-4) 0}
.customer-portal .portal-total-label{font-size:var(--fs-meta);font-weight:600;color:var(--ink-2)}
.customer-portal .portal-total strong{font-size:var(--fs-display);font-weight:800;line-height:1.2;font-variant-numeric:tabular-nums}
.customer-portal .portal-total small{font-size:var(--fs-meta);color:var(--ink-2);font-variant-numeric:tabular-nums}
.customer-portal .portal-jump{display:flex;width:100%;justify-content:center;margin:0 0 var(--sp-2)}
.customer-portal .portal-lines{border:0;border-radius:0;background:transparent;overflow:visible}
.customer-portal .portal-lines .list-row{padding:var(--sp-3) 0;min-height:0;align-items:flex-start;border-top:1px solid var(--line)}
.customer-portal .portal-lines .list-row:first-child{border-top:0}
.customer-portal .portal-lines .list-row-trail{font-size:var(--fs-title);font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}
.customer-portal .portal-pdf-link{justify-content:flex-start;padding-left:0;margin-top:var(--sp-1)}
.customer-portal .portal-quote form{margin-top:0}
.customer-portal .portal-quote .decision-group{margin:0 0 var(--sp-3)}
.customer-portal .callout.portal-receipt{display:grid;margin:var(--sp-4) 0 0;padding:var(--sp-3) var(--sp-4);border-color:color-mix(in srgb,var(--success) 30%,transparent);background:var(--success-bg)}
.customer-portal .portal-plan .portal-appointment{margin:var(--sp-2) 0;gap:var(--sp-3);align-items:flex-start}
.customer-portal .portal-plan .portal-appointment>svg{flex:none;margin-top:2px;color:var(--ink-2)}
.customer-portal .portal-plan .portal-appointment p{font-size:var(--fs-body);font-weight:400;letter-spacing:0;margin:2px 0}
.customer-portal .portal-plan .portal-appointment strong{font-size:var(--fs-body)}
.customer-portal .portal-plan .text-link{padding:0}
.customer-portal .portal-options{padding:0;border:0;background:transparent;box-shadow:none;margin-bottom:var(--sp-4);display:grid;gap:var(--sp-3)}
.customer-portal .portal-options .portal-section-title{margin:0}
.customer-portal .portal-options-lead{margin:0}
.customer-portal .portal-option-grid{display:flex;flex-direction:column;gap:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.customer-portal .portal-option{padding:var(--sp-3) var(--sp-4);border:0;border-top:1px solid var(--line);border-radius:0;background:var(--surface);column-gap:var(--sp-3);row-gap:var(--sp-1);align-items:center;align-content:start;grid-template-rows:auto auto auto}
.customer-portal .portal-option:first-child{border-top:0}
.customer-portal .portal-option h3{font-size:var(--fs-title);font-weight:600}
.customer-portal .portal-option>.portal-option-price strong{font-size:var(--fs-title);font-weight:800}
.customer-portal .portal-option-what{grid-column:1/-1;grid-row:2;margin:0;line-height:1.35;color:var(--ink-2)}
.customer-portal .portal-option>.portal-option-more{grid-column:1;grid-row:3}
.customer-portal .portal-option-more summary{min-height:var(--target);display:flex;align-items:center;font-weight:600;color:var(--ink-2);cursor:pointer;list-style:none;text-decoration:underline;text-underline-offset:3px}
.customer-portal .portal-option-more summary::-webkit-details-marker{display:none}
.customer-portal .portal-option-more summary::after{content:"›";margin-left:var(--sp-1)}
.customer-portal .portal-option>.portal-option-choose{grid-column:2;grid-row:3;width:auto;min-width:0;justify-self:end}
.customer-portal .portal-option.is-picked{background:var(--accent-tint);outline:2px solid var(--accent);outline-offset:-2px}
.customer-portal .portal-option.is-chosen{background:var(--success-bg)}
.customer-portal .portal-option.is-out{background:var(--surface);color:var(--ink-2)}
.customer-portal .portal-options>form{max-width:none}
.customer-portal .portal-option-footer{border-top:0;padding-top:0}
.customer-portal .portal-option-footer .button{width:auto;justify-content:flex-start}
.pa-group{gap:var(--sp-2)}
.pa-group-head{flex-direction:row;align-items:center;justify-content:space-between;gap:var(--sp-3)}
.pa-group-head h3{margin:0;font-size:var(--fs-title);font-weight:600}
.pa-group-sub{display:grid;gap:2px;margin:0}
.pa-group-sub span{color:var(--ink-2);font-size:var(--fs-meta)}
.pa-group-cards.list-group{display:block}
.pa-group-cards .pa-option-card{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-1);padding:var(--sp-3) var(--sp-4);border:0;border-top:1px solid var(--line);border-radius:0;background:var(--surface)}
.pa-group-cards .pa-option-card:first-child{border-top:0}
.pa-group-cards .pa-option-card.is-chosen{background:var(--success-bg)}
.pa-group-cards .pa-option-card.is-out{background:var(--surface-sunk)}
.pa-option-card-head{display:flex;align-items:center;gap:var(--sp-2)}
.pa-option-card-head h4{flex:1;margin:0;font-size:var(--fs-title);font-weight:600}
.pa-option-card .pa-option-price{font-size:var(--fs-title);font-weight:800;letter-spacing:0}
.pa-option-tax{color:var(--ink-2)}
.pa-option-card .button{width:100%;justify-content:center}
@media (min-width:1000px){
.customer-portal .portal-heading h1{font-size:var(--fs-display)}
.customer-portal .portal-total strong{font-size:var(--fs-hero)}
.customer-portal .portal-main.has-quote{grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-template-rows:auto auto auto auto auto 1fr auto;column-gap:var(--sp-8)}
.customer-portal .has-quote>.portal-quote{grid-column:2;grid-row:3/7;margin-bottom:0}
.customer-portal .has-quote>.portal-plan{grid-column:1;grid-row:3}
.customer-portal .has-quote>.portal-docs{grid-column:1;grid-row:4}
.customer-portal .has-quote>.portal-ask{grid-column:1;grid-row:5}
.customer-portal .has-quote>.portal-footer{grid-row:7}
}
.customer-portal .field>label{display:flex;align-items:flex-end;min-height:var(--target)}
.customer-portal .portal-card form .inline-note,.customer-portal .portal-options form .inline-note{line-height:1.5}
.customer-portal .form-actions .button{width:100%;justify-content:center;min-height:var(--target-primary)}
.customer-portal .portal-decline-open,.customer-portal .portal-pick-summary .button{padding-left:0;justify-content:flex-start}
.customer-portal .portal-change .portal-thumbs{flex-wrap:nowrap}
.customer-portal .portal-card.portal-quote{padding:0;border:0;border-radius:0;background:transparent}
.customer-portal .portal-doc-row{border:0;background:transparent;padding:var(--sp-2) 0}
.customer-portal .portal-option>.portal-option-choose{min-height:var(--target-primary)}
.customer-portal .portal-option.is-out,.customer-portal .portal-option.is-chosen{border:0;border-top:1px solid var(--line);box-shadow:none}
.customer-portal .portal-option.is-chosen:first-child,.customer-portal .portal-option.is-out:first-child{border-top:0}
.customer-portal .portal-option-more summary{min-width:var(--target)}
.customer-portal .portal-decline-open,.customer-portal .portal-pick-summary .button{text-decoration:underline;text-underline-offset:3px;font-weight:600;color:var(--ink)}
.customer-portal .portal-pick-summary{background:transparent;padding:0;border:0}
.customer-portal .portal-change+.callout,.customer-portal .portal-quote .callout{margin-top:var(--sp-3)}
.customer-portal .portal-pdf-link.secondary{width:100%;justify-content:center;padding-left:var(--sp-4);margin-top:var(--sp-3);min-height:var(--target-primary)}
.customer-portal .portal-pdf-link.tertiary{min-height:var(--target)}
.customer-portal .portal-option-footer .button.secondary{width:100%;justify-content:center}
.pa-option-card .pa-option-more summary{min-height:var(--target);display:flex;align-items:center;font-weight:600;color:var(--ink-2);cursor:pointer;list-style:none;text-decoration:underline;text-underline-offset:3px}
.pa-option-card .pa-option-more summary::-webkit-details-marker{display:none}
.pa-option-card .pa-option-more summary::after{content:"›";margin-left:var(--sp-1)}
.pa-option-card .pa-option-register{min-height:var(--target)}
@media (max-width:760px){
.customer-portal .portal-error{border:0;background:transparent;padding:var(--sp-2) 0;box-shadow:none}
}
.customer-portal .portal-pick-line{margin:0 0 var(--sp-3);font-weight:600}
.customer-portal .portal-change{margin-bottom:var(--sp-3)}
.customer-portal .callout.portal-receipt+*{margin-top:var(--sp-4)}
.customer-portal .portal-option-grid .portal-option{padding-block:var(--sp-3);row-gap:var(--sp-1)}
.customer-portal .portal-option.is-out .portal-option-what{display:none}
.customer-portal .portal-option.is-out{padding-block:var(--sp-2)}
.customer-portal .portal-option-flag{white-space:nowrap}
.customer-portal .portal-decline-open,.customer-portal .portal-pick-summary .button{min-height:48px;padding-block:var(--sp-2)}
.customer-portal .portal-error-icon{width:44px;height:44px;margin-bottom:var(--sp-3)}
.customer-portal .portal-error{padding-top:var(--sp-4)}
.customer-portal .portal-option.is-out .portal-option-more{display:none}
.customer-portal .portal-jump{min-height:var(--target-primary);border:2px solid var(--accent);color:var(--accent-ink,var(--accent));font-weight:800}
.hm{display:grid;gap:var(--sp-6);max-width:1200px}
.home-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4)}
.home-head h1{margin:0;font-size:var(--fs-heading);font-weight:800;letter-spacing:-.02em;line-height:1.2;color:var(--ink)}
.home-head p{margin:var(--sp-1) 0 0;font-size:var(--fs-body);color:var(--ink-2)}
.hm-cols{display:grid;gap:var(--sp-6);grid-template-columns:minmax(0,1fr)}
.hm-main,.hm-rail{display:grid;gap:var(--sp-6);align-content:start;min-width:0}
.hm-sec{display:grid;gap:var(--sp-3);min-width:0}
.hm-h{margin:0;font-size:var(--fs-title);font-weight:600;line-height:1.3;color:var(--ink)}
.hm-h-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}
.hm-count,.hm-meta{font-size:var(--fs-body);color:var(--ink-2);margin:0}
.hm-go{width:100%;min-height:var(--target-primary);justify-content:center}
.hm-ask{justify-self:start}
.hm-trail{display:flex;flex-direction:column;align-items:flex-end;gap:var(--sp-1)}
.hm-how{justify-self:start;min-height:var(--target)}
.hm-how-text{margin:0;padding-left:var(--sp-5);display:grid;gap:var(--sp-2);font-size:var(--fs-body);color:var(--ink-2)}
.hm .list-row-trail,.money-summary .list-row-trail{font-size:var(--fs-body);color:var(--ink);font-weight:600}
.hm-rows{margin-top:var(--sp-4);display:grid;gap:var(--sp-3)}
.hm-quote+.hm-quote{border-top:1px solid var(--line)}
.hm-row-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-3)}
.hm-row-actions:empty{display:none}
.money-summary{margin:0 0 var(--sp-5)}
.plan-day{margin:var(--sp-4) 0}
.hm-chips{display:flex;flex-wrap:nowrap;gap:var(--sp-2);overflow-x:auto;scrollbar-width:none;margin:0 0 var(--sp-4);padding-bottom:var(--sp-1)}
.hm-chips .chip{flex:none;min-height:var(--target)}
.plan-cols{display:grid;gap:var(--sp-6);grid-template-columns:minmax(0,1fr)}
.plan-main,.plan-rail{display:grid;gap:var(--sp-4);align-content:start;min-width:0}
.plan-rail section{display:grid;gap:var(--sp-3)}
.plan-time{display:inline-block;min-width:3.5em;margin-right:var(--sp-3);font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink-2)}
.plan-next{width:100%;min-height:var(--target-primary);justify-content:center}
body .app .live-board-page .lb-bar{display:block;margin:var(--sp-3) 0 var(--sp-4);font-size:var(--fs-body);color:var(--ink-2)}
body .app .live-board-page .live-board{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;padding:0}
body .app .live-board-page .lb-row{padding:var(--sp-3) var(--sp-4);min-height:64px}
body .app .live-board-page .lb-legend{background:transparent;border:0;border-radius:0;padding:0;margin-top:var(--sp-6)}
.app .list-foot,body .app .list-foot{padding:var(--sp-3) 0;color:var(--ink-2);font-size:var(--fs-body)}
.appbar-action{flex:none}
.jd-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);margin:0 0 var(--sp-2)}
.jd-customer{flex:1;min-width:0;padding:0;border:0;background:transparent;color:var(--ink);font:inherit;font-size:var(--fs-body);font-weight:600;text-align:left;cursor:pointer;min-height:var(--target)}
.jd-customer:disabled{cursor:default}
.jd-when{margin:0 0 var(--sp-5);font-size:var(--fs-body);color:var(--ink-2)}
.jd-facts{margin:var(--sp-5) 0;border:0;border-radius:0;background:transparent;box-shadow:none}
.jd-facts .list-row{padding-left:0;padding-right:0;align-items:flex-start}
.jd-facts .list-row-main{flex:0 0 auto;min-width:40%}
.jd-facts .list-row-trail{flex:1 1 0;min-width:0;justify-content:flex-end}
.jd-facts .list-row-trail{text-align:right;font-size:var(--fs-body);color:var(--ink);font-weight:400}
.detail-section>p{color:var(--ink);line-height:1.5}
.modal-foot .jd-primary:empty{display:none}
.modal-foot .jd-primary .button{width:100%;min-height:var(--target-primary);justify-content:center}
.jd-secondary{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.jd-secondary .button{min-height:var(--target)}
.modal-foot{display:grid;gap:var(--sp-3)}
.app .list-group .list-row.mobile-record-card,.app .mobile-job-cards .list-row.mobile-record-card{display:flex;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:none;background:transparent}
.app .list-group .list-row.mobile-record-card:first-child{border-top:0}
.site-access .field label{min-height:var(--target);display:flex;align-items:center}
.service-finance p{font-size:var(--fs-body)}
.service-finance label{display:grid;gap:var(--sp-1);min-height:var(--target);align-content:center}
.service-finance .finance-subpanel{border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;padding:var(--sp-4) 0}
.quote-version summary{min-height:var(--target);display:flex;align-items:center}
.login-page.pub .login-card h1{font-size:var(--fs-hero);font-weight:800;line-height:1.1}
.login-page.pub .login-card .callout{margin:var(--sp-5) 0 0}
.login-page.pub .login-card>.button.tertiary,.login-page.pub .login-card .forgot-link{width:100%;justify-content:center;min-height:var(--target);margin-top:var(--sp-3);color:var(--accent)}
.login-page.pub .login-card .forgot-link{display:flex;align-items:center;text-decoration:none}
@media (max-width:760px){
.desk-only{display:none}
.login-page.pub .login-card{background:transparent;border:0;box-shadow:none;padding:0;border-radius:0}
.login-page.pub .pub-main{padding:var(--sp-6) var(--sp-4)}
.jd-secondary .button{flex:1 1 45%;justify-content:center;white-space:normal;text-align:center;line-height:1.2}
.home-head .button{min-height:var(--target)}
}
@media (min-width:761px){
.appbar-action{display:none}
.login-page.pub .login-card{max-width:480px}
}
@media (min-width:1000px){
.hm-cols{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.plan-cols{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
}
.sync-note.persist{display:block;position:fixed;top:var(--appbar-h);left:0;right:0;z-index:55;padding:var(--sp-3) var(--sp-4);background:var(--warning-bg);color:var(--warning);border-bottom:1px solid var(--line);font-size:var(--fs-meta);line-height:1.45}
:root .login-page.pub .login-card .role-pair .button{background:var(--surface);border:1px solid var(--line-input);min-height:var(--target-primary)}
:root .login-page.pub .login-card .role-pair .button:hover{background:var(--surface-sunk)}
:root .login-page.pub .login-card form>.forgot-link{align-self:flex-end;width:auto;border:0;min-height:var(--target);padding:0 var(--sp-2);margin-top:var(--sp-2);background:none}
:root .login-page.pub .login-card>.button.tertiary{min-height:var(--target)}
:root .login-page.pub .login-card .remember-device{min-height:var(--target)}
:root .login-page.pub .login-card .passkey-login .button{min-height:var(--target)}
.field-mode.pa-screen .pa-seg{grid-template-columns:repeat(4,minmax(0,1fr))}
.field-mode.pa-screen .pa-seg-btn{padding:0 var(--sp-2)}
.file-empty .empty .mascot{width:64px;height:64px}
.pa-head h1{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hm-done{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0}
.hm-done .mascot{width:64px;max-width:64px;height:auto;flex:none;margin:0;animation:none}
.hm-done-title{margin:0;font-size:var(--fs-title);font-weight:800;color:var(--ink)}
.hm-done p{margin:var(--sp-1) 0 0;color:var(--ink-2);font-size:var(--fs-body)}
.money-summary .quiet .list-row-title,.money-summary .quiet .list-row-trail{color:var(--ink-2);font-weight:500}
:root .modal .service-value-panel.panel,:root .field-more .service-value-panel.panel{border:0;background:transparent;box-shadow:none;border-radius:0;padding:0}
@media (max-width:760px){
:root :is(p,li,td,dd,dt):not(#x),:root :is(p,li,td,dd) :is(strong,em,b,a):not(#x){font-size:var(--fs-body)}
:root p>span:not([class*=badge],[class*=pill],[class*=chip]):not(#x){font-size:var(--fs-body)}
:root :is(input,select,textarea):not(#x,[type=checkbox],[type=radio]){font-size:var(--fs-body)}
:root .field>label{position:relative}
:root .field>label::before{content:"";position:absolute;inset:-15px 0}
}
/* iOS zooms on focus below 16 px at any width: large phones in landscape and tablets are wider than 760 px */
@media (pointer:coarse){:root :is(input,select,textarea):not(#x,[type=checkbox],[type=radio]){font-size:var(--fs-body)}}
:root .modal :is(.completion-note,.equipment-card,.pa-group-cards){border-radius:var(--r-sm)}
:root .co-photo:not(#x),:root .app .change-order .co-photo:not(#x){border-radius:var(--r-sm)}
:root .modal .co-lines:not(#x){border-radius:var(--r-sm)}
/* Field mode: darker accent so white text on a primary reaches 7:1 */
.field-sheet .button.primary:not(:disabled){background:var(--accent-field);border-color:var(--accent-field);color:var(--surface)}
.field-sheet .button.primary:not(:disabled):hover{background:color-mix(in srgb,var(--accent-field) 85%,var(--navy));border-color:color-mix(in srgb,var(--accent-field) 85%,var(--navy))}
.field-sheet .fd-reason{margin:var(--sp-2) 0 0;font-size:var(--fs-body);color:var(--ink-2)}
.jd-secondary .button.primary,.jd-secondary a.button.primary{flex:1 1 100%;min-height:var(--target-primary);white-space:nowrap}

/* Restored from 18c2cb1: rules dropped by the coverage-based prune for states the captures never showed. Guarded by design_gate_static (className coverage). */
.all-clear{display:flex;align-items:center;gap:14px;margin:0 20px 20px;padding:16px;border-radius:var(--r-lg);background:var(--success-bg);border:1px solid var(--line)}
.all-clear strong{display:block;font-size:var(--fs-title);font-weight:800;color:var(--ink)}
.all-clear p{margin:2px 0 0;font-size:var(--fs-body);color:var(--ink-2)}
.pa-check-summary.all-clear{background:var(--success-bg);color:var(--success)}
.next-job-card.all-done{justify-items:center;text-align:center}
.next-job-card.all-done h2{font-size:var(--fs-heading)}
.next-job-card.all-done{border-style:solid;border-color:var(--success);background:var(--success-bg)}
.next-job-card.all-done .fh-mascot{width:64px;height:64px;border-radius:50%;object-fit:cover;object-position:50% 12%;background:var(--surface);flex:none;animation:none}
.next-job-card.all-done .fh-mascot{width:96px;height:96px}
.answer-navigation{margin-top:14px}
.bank-review{margin-top:18px;padding-top:15px;border-top:1px solid var(--line)}
.bvu-jump{display:flex;align-items:center;gap:8px;margin:0 auto 8px;border:1px solid var(--line);background:var(--surface);color:var(--ink-3);padding:8px 12px;border-radius:var(--r-lg);font-size:var(--fs-meta);box-shadow:var(--shadow-raised)}
.co-remove.btn{justify-self:start;color:var(--danger);background:none;border:0;min-height:var(--target)}
.code-input{font-family:ui-monospace,SFMono-Regular,monospace;line-height:1.8}
:root .code-input{font-size:var(--fs-meta)}
.code-input{overflow:auto}
.day-today{min-height:var(--target);border:1px solid var(--line-input);background:var(--surface);color:var(--ink);border-radius:var(--r-md);font:inherit;font-weight:600}
.day-today{padding:0 var(--sp-4);cursor:pointer;color:var(--accent)}
@media (max-width: 480px){.day-today{display:none}}
.document-excerpt{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.75;font-size:var(--fs-body);max-height:65vh;overflow:auto;background:var(--surface-sunk);padding:20px;border-radius:var(--r-sm)}
.evidence-confirmation{margin-top:16px;font-size:var(--fs-body)}
:root .evidence-confirmation{align-items:flex-start}
.evidence-confirmation input{margin-top:3px}
.fh-problem{padding:16px;display:grid;gap:10px}
.fh-problem h2{margin:0;font-size:var(--fs-heading)}
.fh-problem{border:1px solid var(--danger);border-radius:var(--r-lg);background:var(--danger-bg)}
.fh-problem h2{color:var(--danger)}
@media (min-width: 1000px){.field-home>.fh-problem{grid-column:1/-1}}
.fh-stuck-row{display:grid;gap:8px;border-top:1px solid var(--line-input);padding-top:10px}
.fh-stuck-row{border-top-color:var(--line-input)}
.found-amount{font-size:var(--fs-hero);font-weight:800;letter-spacing:-.03em;margin:10px 0 2px;color:var(--ink)}
@media (max-width: 760px){.found-amount{font-size:var(--fs-display)}}
.found-card .found-amount{min-height:1.2em;font-variant-numeric:tabular-nums}
@media (max-width: 760px){.found-card .found-amount{font-size:var(--fs-heading)}}
.found-card{margin:0 0 16px;padding:18px 20px}
.found-card{min-height:148px}
.found-how-text{margin:4px 0 0;padding-left:20px;display:grid;gap:6px;font-size:var(--fs-meta);color:var(--ink-2)}
.found-note{margin:0 0 8px;font-size:var(--fs-body);color:var(--ink-2)}
.found-note{font-size:var(--fs-body);color:var(--ink-2)}
.import-panel{padding:25px;max-width:900px}
.import-panel .section-title{padding:0 0 27px}
@media (max-width: 760px){.import-panel{padding:20px}}
.mapping-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 0}
.mapping-row select{min-height:44px;max-width:60%}
.import-panel [data-testid=import-skipped] p{margin:4px 0}
.money-go{width:100%;justify-content:center;min-height:var(--target-primary);margin:calc(-1*var(--sp-2)) 0 var(--sp-4)}
.od-clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;overflow:hidden}
.od-count{color:var(--ink-3);font-size:var(--fs-meta)}
.od-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3)}
.od-section-head h2{margin:0;font-size:var(--fs-title);font-weight:600}
.od-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.onboarding-checklist{text-align:left;display:flex;flex-direction:column;gap:18px;margin:30px 0;font-size:var(--fs-meta);color:var(--ink-3)}
.onboarding-checklist>div{display:flex;gap:9px;align-items:center}
.operation-result{display:grid;gap:5px;padding:11px;border-radius:var(--r-sm);background:var(--surface-sunk);border:1px solid var(--line)}
.operation-result small{overflow-wrap:anywhere}
.finance-advanced .operation-result{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--surface-sunk);display:grid;gap:var(--sp-2)}
.pa-chosen{display:flex;gap:var(--sp-1);align-items:center;margin:0;color:var(--success);font-weight:600}
:root .pa-remove, .pa-remove span{color:var(--danger)}
.customer-portal .portal-bigphoto{display:block;width:100%;height:auto;max-height:70vh;object-fit:contain}
.preview-line{display:block;margin-bottom:4px}
.preview-object{margin:0}
.preview-object>div{display:flex;gap:12px;margin:4px 0}
.preview-object dd{margin:0}
.record-facts{display:grid;gap:18px}
.record-facts dt{text-transform:capitalize;font-size:var(--fs-meta);color:var(--ink-3);margin-bottom:6px}
.record-facts dd{font-size:var(--fs-body);margin:0;line-height:1.6;overflow-wrap:anywhere}
.record-facts dt{text-transform:none}
.recording-clock{display:block;font-size:var(--fs-hero);font-variant-numeric:tabular-nums;color:var(--accent-hover)}
.request-row{border-bottom:1px solid var(--line);padding:24px;display:flex;gap:15px;flex-wrap:wrap}
.request-row strong{font-size:var(--fs-meta);font-weight:500;flex:1}
.request-row small{width:100%}
.capability-page .request-row{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap}
.capture-details>.capture-row-actions>.review-lineage{flex:1 0 100%;min-width:0}
.slot-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px}
.slot-options button{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);text-align:left;cursor:pointer}
.slot-options span{font-size:var(--fs-meta);color:var(--ink-3)}
.tool-evidence summary{cursor:pointer}
.tool-evidence{color:var(--ink-3);font-size:var(--fs-meta);margin-top:12px}
.tool-evidence>div{display:flex;justify-content:space-between;padding:5px 10px;max-width:400px}
.invoice-lines .total-line{border:0;font-weight:600;padding-top:22px}
.invoice-lines .total-line, .invoice-lines .total-line strong{color:var(--ink);font-weight:800;font-size:var(--fs-body)}
.usage-summary{background:var(--surface-sunk);border:1px solid var(--line);border-radius:var(--r-md);padding:20px}
.usage-summary summary{font-size:var(--fs-body);font-weight:800;cursor:pointer}
.usage-summary p, .usage-summary small{color:var(--ink-3);font-size:var(--fs-body);line-height:1.6}
.usage-summary .table-wrap{margin:16px 0}
.visit-picker{padding:0 15px}
.visit-picker select{width:100%}
.wc-credit{font-size:var(--fs-meta);line-height:1.2;color:var(--ink-3);max-width:128px;padding-left:8px;border-left:1px solid var(--line)}
@media (max-width: 760px){.wc-credit{display:none}}
.wc-text{display:grid;line-height:1.1}
.wc-text strong{font-size:var(--fs-title);font-weight:800;color:var(--ink)}
.wc-text small{font-size:var(--fs-meta);color:var(--ink-3)}
@media (max-width: 760px){.wc-text small{display:none}}
.weather-chip{display:flex;align-items:center;gap:var(--sp-2);padding:5px 12px;margin-right:6px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line)}
@media (max-width: 760px){.weather-chip{padding:4px 9px}}

.day-card-amount,.day-card-amount .money,.day-card-amount .money-sub{white-space:nowrap}
.day-card-amount{flex-shrink:0}

/* Phone pass 2026-10-13: shorter owner home, mascot moments, calmer sheet footers. */
.fs-success .fs-cheer{display:grid;justify-items:center;gap:var(--sp-2);margin:var(--sp-2) 0 0}
.fs-success .fs-cheer .mascot{width:132px;height:auto}
.fs-success .fs-cheer strong{font-size:var(--fs-heading);color:var(--ink)}
@media (prefers-reduced-motion:no-preference){
.fs-success .fs-cheer .mascot{animation:fs-cheer-in .5s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes fs-cheer-in{from{opacity:0;transform:translateY(18px) scale(.9)}to{opacity:1;transform:none}}
}
.empty.has-mascot .mascot{width:96px;height:auto}
@media (max-width:640px){
.app .service-owner-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2)}
.app .service-owner-grid>div{padding:var(--sp-3)}
.app .attention-card .attention-evidence strong{display:inline}
body .app .attention-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}
body .app .attention-controls .button{width:100%;padding-inline:var(--sp-2)}
body .app .attention-controls .button:not(.ac-open),body .app .attention-controls .button:last-child:not(.primary):not(.ac-open){grid-column:auto;order:0}
body .app .attention-controls .button.ac-open,body .app .attention-controls .ac-more{grid-column:1/-1}
.app .hm-cols,.app .hm-main,.app .hm-rail{display:contents}
.app .hm>*,.app .hm-main>*,.app .hm-rail>*{order:5}
.app .hm>.home-head{order:0}
.app .hm-main>.hm-sec{order:1}
.app .hm-rail>.hm-sec{order:2}
.app .hm-main>.hm-follow{order:6}
.app .hm-main>.hm-ask{order:7}
.app .service-owner-summary:has(.service-owner-clear) .section-title p,.app .service-owner-summary:has(.service-owner-clear)>small{display:none}
.app .attention-card .af-details>summary{min-height:var(--target);color:var(--ink-2);font-size:var(--fs-meta)}
.app .modal .modal-body>form>.form-actions{padding-inline:var(--sp-4);gap:var(--sp-1)}
.app .modal .modal-body>form>.form-actions .button:not(.primary){min-height:var(--target);border-color:transparent;background:transparent;box-shadow:none;color:var(--ink-2)}
.app .hm{padding-bottom:calc(var(--sp-6) + 52px)}
.bvu-dock .bvu-dock-avatar img{width:44px;height:44px}
.app .bvu-dock{padding:var(--sp-1);border-radius:50%}
}
.hm-follow{display:grid;gap:var(--sp-6);min-width:0}

/* Brand pass 2026-10-13: heading typeface, wordmark, Vakta in the top bar on phones. */
h1,.hm-h,.fs-cheer strong,.wordmark{font-family:var(--font-display)}
h1{font-stretch:108%}
.hm-h{font-weight:700;font-stretch:104%}
.wordmark{font-weight:800;font-stretch:112%;letter-spacing:-.01em}
.wordmark>span{color:var(--accent)}
.sidebar .wordmark>span{color:var(--accent-mark)}
.vakta-top-face{position:relative;display:inline-flex}
.vakta-top-face img{width:32px;height:32px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px var(--accent-tint)}
.vakta-top-face .bvu-unread-dot{position:absolute;top:-2px;right:-2px}
@media (max-width:640px){
.app .bvu-dock{display:none}
.app .hm-sec[aria-labelledby=hm-queue] .list-row-sub{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.app .topbar .weather-chip{padding-inline:var(--sp-1);border-color:transparent;background:transparent}
.app .topbar .breadcrumb strong{flex:none}
}
@media (max-width:640px){.app .hm-follow>.panel{margin-block:0}}

/* ===== Redesign C: owner (OwnerHome, OwnerDay). Edit only inside this block. ===== */
.hm-num,.hm-need-title,.hm-need-amt,.od-sum-num,.od-night h1,.app .day-queue .dq-title>span:last-child{font-family:var(--font-display);font-stretch:72%;font-weight:800;letter-spacing:.015em}
.hm-num,.od-sum-num,.hm-need-amt{font-variant-numeric:tabular-nums;letter-spacing:.01em;line-height:1}
.hm-cap,.od-eyebrow,.hm-need .hm-count{font-family:var(--font-display);font-stretch:100%;font-weight:700;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase}
.app .hm-need{position:relative;overflow:hidden;gap:var(--sp-3);padding:var(--sp-6) var(--sp-4) var(--sp-4);background:var(--night);color:var(--on-night);border-radius:var(--r-lg)}
.app .hm-main>.hm-need{order:0}
.hm-ruler{position:absolute;inset:0 0 auto 0;height:14px;background:repeating-linear-gradient(90deg,var(--on-night-2) 0 2px,transparent 2px 12px) 0 0/100% 8px no-repeat,repeating-linear-gradient(90deg,var(--on-night) 0 2px,transparent 2px 60px) 0 0/100% 14px no-repeat;opacity:.55}
.hm-need-top{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3)}
.app .hm-need .hm-h{font-family:var(--font-display);font-stretch:100%;font-weight:700;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--hivis)}
.app .hm-need .hm-count{color:var(--hivis)}
.hm-need-lead{display:grid;gap:var(--sp-2);text-align:left;width:100%;min-height:var(--target);padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer}
.hm-need-title{font-size:var(--fs-hero);line-height:1.02;overflow-wrap:anywhere;color:var(--on-night)}
.hm-need-sub{font-size:var(--fs-body);line-height:1.4;color:var(--on-night-2);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.hm-need-amt{font-size:var(--fs-display);color:var(--hivis)}
.app .hm-need .button.hm-need-cta{min-height:var(--target-primary);background:var(--fire);border-color:var(--fire);color:var(--hivis-ink);font-weight:700;font-size:var(--fs-title);box-shadow:var(--press-edge);transition:transform .08s,box-shadow .08s}
.app .hm-need .button.hm-need-cta:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(0,0,0,.28)}
.hm-need-more{list-style:none;margin:var(--sp-2) 0 0;padding:var(--sp-2) 0 0;border-top:1px dashed var(--night-line);display:grid}
.hm-need-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--target-primary);padding:var(--sp-2) 0;border:0;background:none;color:var(--on-night);font:inherit;text-align:left;cursor:pointer}
.hm-need-row-main{display:grid;gap:2px;min-width:0;flex:1}
.hm-need-row-title{font-weight:600;font-size:var(--fs-body);line-height:1.25}
.hm-need-row-sub{font-size:var(--fs-meta);color:var(--on-night-2);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden}
.hm-need-row-amt{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-display);white-space:nowrap;letter-spacing:.01em}
.app .hm-money,.app .hm-today{gap:var(--sp-3)}
.app .hm-money .hm-h,.app .hm-today .hm-h{font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;font-stretch:100%;color:var(--ink-2)}
.hm-fig{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-3);width:100%;min-height:var(--target-primary);padding:var(--sp-1) var(--sp-3) var(--sp-1) var(--sp-4);border:0;border-left:6px solid var(--ink);background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.hm-fig.late{border-left-color:var(--danger);color:var(--danger)}
.hm-fig-main{display:grid;gap:var(--sp-2)}
.hm-fig-num{font-size:var(--fs-hero);font-size:clamp(44px,13vw,60px)}
.hm-split{display:grid;gap:var(--sp-2);padding-left:var(--sp-4)}
.hm-split-bar{display:block;height:10px;border-radius:5px;background:var(--line);overflow:hidden}
.hm-split-bar i{display:block;height:100%;background:var(--danger)}
.hm-split-key{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--sp-1) var(--sp-3);font-size:var(--fs-meta);color:var(--ink-2)}
.hm-split-key .late{color:var(--danger);font-weight:600}
.hm-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--sp-3)}
.hm-tile{display:grid;align-content:start;gap:var(--sp-2);min-height:var(--target-primary);padding:var(--sp-3);border:0;border-radius:var(--r-lg);background:var(--paper);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.hm-tile{align-content:space-between}
.hm-tile .hm-cap{color:var(--ink-2);letter-spacing:.06em;line-height:1.2}
.hm-tile .hm-num{font-size:var(--fs-display);font-size:clamp(28px,8vw,34px)}
.hm-tile.paid .hm-num{color:var(--success)}
.hm-tile.jobs .hm-num{font-size:clamp(44px,13vw,56px)}
.hm-tile-sub{font-size:var(--fs-meta);color:var(--ink-2)}
.app .hm-queue .list-group{border-radius:var(--r-lg)}
.app .hm-queue .button.hm-go,.app .hm-follow~.hm-ask{font-weight:700}
.app .hm-queue .button.hm-go{box-shadow:var(--press-edge-light)}
.app .hm-follow>.panel{background:var(--paper);box-shadow:none}
.app .hm-ask{min-height:var(--target-primary);justify-content:center;justify-self:stretch;border:0;border-radius:var(--r-lg);background:var(--night);color:var(--on-night);font-weight:700}
.app .od-night{display:grid;gap:var(--sp-3);padding:var(--sp-5) var(--sp-4) var(--sp-4);background:var(--night);color:var(--on-night);border-radius:var(--r-lg);border-bottom:8px solid var(--hivis)}
.od-eyebrow{margin:0;color:var(--hivis)}
.app .od-night .page-header{margin:0;padding:0;display:block}
.app .od-night .page-header.dup-title h1{position:static;width:auto;height:auto;margin:0;overflow:visible;clip-path:none;white-space:normal}
.app .od-night h1{font-size:var(--fs-hero);line-height:1;color:var(--on-night)}
.app .od-night .page-header p{margin:var(--sp-2) 0 0;color:var(--on-night-2)}
.od-sum{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--sp-3)}
.od-sum-main{display:grid;gap:var(--sp-1);min-width:0}
.od-sum-label{font-size:var(--fs-meta);color:var(--on-night-2)}
.od-sum-num{font-size:clamp(44px,14vw,64px);color:var(--on-night)}
.od-sum-wait{font-size:var(--fs-body);font-weight:700;color:var(--hivis)}
.app .od-night .od-sum-wait .day-count{color:var(--on-night);text-align:left}
.app .od-night .day-count{margin:0;text-align:right;font-weight:700;font-size:var(--fs-body);color:var(--on-night)}
.od-prog{height:10px;border-radius:5px;background:var(--night-line);overflow:hidden}
.od-prog i{display:block;height:100%;background:var(--hivis);transition:width .25s}
.app .day-queue{margin-top:var(--sp-3);padding-bottom:var(--sp-12)}
.app .day-queue .dq-title{font-weight:700}
.app .day-queue .dq-title>span:last-child{font-size:var(--fs-display);line-height:1.1}
.app .day-queue .dq-title .dq-k{font-family:var(--font);font-stretch:100%;letter-spacing:0}
.app .day-queue .day-card-amount .money{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-display);letter-spacing:.01em;font-variant-numeric:tabular-nums;white-space:nowrap}
.app .day-queue .button.day-approve{background:var(--fire);border-color:var(--fire);color:var(--hivis-ink);font-weight:700;box-shadow:var(--press-edge);transition:transform .08s,box-shadow .08s}
.app .day-queue .button.day-approve:active{transform:translateY(3px);box-shadow:0 1px 0 rgba(0,0,0,.28)}
.app .day-queue .dq-item.needs-yes{background:var(--hivis-bg);border-left:8px solid var(--hivis)}
.dq-needs{justify-self:start;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-sm,6px);background:var(--hivis);color:var(--hivis-ink);font-weight:800;font-size:var(--fs-meta);letter-spacing:.04em;text-transform:uppercase}
.app .day-queue .needs-yes .dq-summary,.app .day-queue .needs-yes .dq-detail{color:var(--hivis-ink)}
/* ===== end owner ===== */



/* ===== Redesign C: field (FieldHome, JobScreen). Edit only inside this block. ===== */
/* Local sizes for the big numerals; everything else comes from tokens.css. */
.field-mode{--fx-num-xl:clamp(88px,30vw,120px);--fx-num-l:56px;--fx-hero-btn:84px;--fx-tile:96px;--fx-edge:var(--press-edge);--fx-edge-light:var(--press-edge-light)}
.field-mode .fx-display,:root .field-mode.field-home .nj-time,:root .field-mode.field-home .nj-customer,:root .app .field-mode.field-job .fj-head h1{font-family:var(--font-display);font-stretch:72%;font-weight:800;letter-spacing:.015em}

/* ---------- Neste jobb: night hero ---------- */
:root .field-mode.field-home{gap:var(--sp-4)}
:root .field-mode.field-home .fh-hello{font-family:var(--font-display);font-stretch:85%;font-size:var(--fs-heading);font-weight:700;letter-spacing:.01em;color:var(--ink-2);margin:var(--sp-1) 0 0}
:root .field-mode.field-home .next-job-card:not(.empty){background:var(--night);color:var(--on-night);border:0;border-radius:var(--r-lg);box-shadow:none;padding:var(--sp-5) var(--sp-4) var(--sp-4);gap:var(--sp-2)}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-label{display:flex;align-items:center;gap:var(--sp-3);margin:0;font-family:var(--font-display);font-stretch:100%;font-weight:800;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--hivis)}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-label::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--fire);box-shadow:0 0 0 5px color-mix(in srgb,var(--fire) 35%,transparent)}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-top{align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3)}
:root .field-mode.field-home .nj-time{font-size:var(--fx-num-xl);line-height:.95;letter-spacing:.005em;font-variant-numeric:tabular-nums;color:var(--on-night)}
:root .field-mode.field-home .next-job-card .badge{background:color-mix(in srgb,var(--on-night) 12%,transparent);color:var(--on-night);border:1px solid var(--night-line);font-weight:700}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-customer{font-size:44px;line-height:1.05;color:var(--on-night);overflow-wrap:anywhere}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-title{font-size:20px;font-weight:500;color:var(--on-night-2);line-height:1.3;margin:0}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-address{align-items:center;gap:var(--sp-3);margin:var(--sp-2) 0 var(--sp-2);padding:var(--sp-3) var(--sp-3);min-height:64px;border-radius:var(--r-md);background:var(--night-2);font-size:var(--fs-title);font-weight:700;line-height:1.3;color:var(--on-night)}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-address svg{color:var(--fire);width:28px;height:28px}
:root .field-mode.field-home .next-job-card:not(.empty) .fj-big{min-height:var(--fx-hero-btn);font-family:var(--font-display);font-stretch:90%;font-weight:800;font-size:30px;letter-spacing:.01em;border:0;border-radius:var(--r-lg);background:var(--fire);color:var(--night);box-shadow:var(--fx-edge);gap:var(--sp-3)}
:root .field-mode.field-home .next-job-card:not(.empty) .fj-big :is(span,svg){color:var(--night)}
:root .field-mode.field-home .next-job-card:not(.empty) .fj-big svg{width:32px;height:32px;stroke-width:2.6}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-row{gap:var(--sp-3);margin-top:var(--sp-2)}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-row .fj-mid{min-height:64px;padding:0 var(--sp-2);gap:var(--sp-2);white-space:nowrap;font-family:var(--font-display);font-stretch:90%;font-weight:700;font-size:var(--fs-title);letter-spacing:.01em;border:2px solid color-mix(in srgb,var(--on-night) 40%,transparent);border-radius:var(--r-md);background:color-mix(in srgb,var(--on-night) 6%,transparent);color:var(--on-night);text-decoration:none}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-row .fj-mid :is(span,svg){color:var(--on-night)}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-row .fj-mid[aria-disabled=true]{opacity:.5}
.field-mode.field-home .fj-big,.field-mode.field-home .fj-mid{transition:transform .08s,box-shadow .08s}
:root .field-mode.field-home .next-job-card:not(.empty) .fj-big:active{transform:translateY(3px);box-shadow:0 1px 0 var(--press-edge-light)}

/* ---------- Senere i dag: day spine ---------- */
:root .field-mode.field-home .fh-later h2{font-family:var(--font-display);font-stretch:100%;font-size:var(--fs-meta);font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin:var(--sp-2) 0 var(--sp-2)}
.fh-spine{position:relative;padding-left:34px}
.fh-spine::before{content:"";position:absolute;left:11px;top:34px;bottom:34px;width:4px;border-radius:2px;background:var(--navy)}
:root .field-mode.field-home .fh-spine .fh-row{position:relative;gap:var(--sp-3);min-height:68px;margin:0;padding:var(--sp-2) 0;border:0;border-radius:0;box-shadow:none;background:transparent}
:root .field-mode.field-home .fh-spine .fh-row::before{content:"";position:absolute;left:-31px;top:50%;box-sizing:border-box;width:18px;height:18px;margin-top:-9px;border-radius:50%;background:var(--canvas);border:4px solid var(--navy)}
:root .field-mode.field-home .fh-spine .fh-row time{min-width:84px;width:84px;font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:32px;line-height:1;letter-spacing:.015em;font-variant-numeric:tabular-nums;color:var(--ink)}
:root .field-mode.field-home .fh-spine .fh-row strong{font-size:var(--fs-title);font-weight:700;color:var(--ink)}
:root .field-mode.field-home .fh-spine .fh-row small{font-size:var(--fs-body);color:var(--ink-2)}
:root .field-mode.field-home .fh-spine .fh-row svg{color:var(--ink-2);flex:none}
:root .field-mode.field-home .fh-spine .fh-row:active{background:var(--paper)}

/* Quiet shortcuts */
:root .field-mode.field-home .fh-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}
:root .field-mode.field-home .fh-shortcuts button{display:flex;align-items:center;gap:var(--sp-3);min-height:72px;padding:var(--sp-3) var(--sp-4);border:0;border-radius:var(--r-lg);background:var(--paper);box-shadow:none;text-align:left;color:var(--ink)}
:root .field-mode.field-home .fh-shortcuts button span{display:grid;gap:2px}
:root .field-mode.field-home .fh-shortcuts strong{font-family:var(--font-display);font-stretch:90%;font-weight:700;font-size:var(--fs-title);letter-spacing:.01em}
:root .field-mode.field-home .fh-shortcuts small{font-size:var(--fs-body);color:var(--ink-2)}

/* ---------- Jobb: compact header ---------- */
:root .app .field-mode.field-job{gap:var(--sp-2);padding-top:0;padding-bottom:0}
:root .app .field-mode.field-job .fj-head{gap:var(--sp-1);border-bottom:0;padding-bottom:0}
:root .app .field-mode.field-job .fj-who{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-1)}
:root .app .field-mode.field-job .fj-head h1{font-size:38px;line-height:1.05;min-width:0;overflow-wrap:anywhere;margin:0;color:var(--ink)}
:root .app .field-mode.field-job a.fj-call{flex:none;gap:var(--sp-2);min-height:var(--target-primary);padding:0 var(--sp-4);border:0;border-radius:var(--r-md);background:var(--hivis);color:var(--hivis-ink);box-shadow:var(--fx-edge-light);font-family:var(--font-display);font-stretch:90%;font-weight:800;font-size:var(--fs-title);letter-spacing:.01em;text-decoration:none}
:root .app .field-mode.field-job a.fj-call :is(span,svg){color:var(--hivis-ink)}
:root .app .field-mode.field-job a.fj-call:active{transform:translateY(3px);box-shadow:none}
:root .app .field-mode.field-job .fj-head .fj-title{font-size:var(--fs-title);font-weight:600;line-height:1.3;color:var(--ink-2)}
:root .app .field-mode.field-job .field-mode .fj-address,:root .app .field-mode.field-job a.fj-address{display:flex;align-items:center;gap:var(--sp-3);justify-self:stretch;width:100%;min-height:var(--target);margin-top:var(--sp-1);padding:var(--sp-1) var(--sp-3);border:1.5px solid var(--line);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--fx-edge-light);color:var(--ink);font-size:var(--fs-title);font-weight:700;text-decoration:none}
:root .app .field-mode.field-job a.fj-address>span{flex:1;min-width:0;overflow-wrap:anywhere;line-height:1.25}
:root .app .field-mode.field-job a.fj-address svg{color:var(--accent)}
:root .app .field-mode.field-job .fj-access{display:block;margin:var(--sp-1) 0 0;padding:var(--sp-1) var(--sp-3);line-height:1.35;font-size:var(--fs-body);border-radius:var(--r-md);background:var(--hivis-bg);border:1px solid var(--hivis)}
:root .app .field-mode.field-job .fj-access strong{display:inline;margin-right:var(--sp-2);font-size:var(--fs-meta);color:var(--ink);text-transform:uppercase;letter-spacing:.08em}
:root .app .field-mode.field-job .fj-access span{display:inline}
:root .app .field-mode.field-job .fj-descwrap{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-1)}
:root .app .field-mode.field-job .fj-descwrap .fj-desc{flex:1;min-width:0;margin:0;font-size:var(--fs-body);line-height:1.4;color:var(--ink-2);-webkit-line-clamp:2}
:root .app .field-mode.field-job .fj-descwrap.open .fj-desc{display:block;-webkit-line-clamp:unset;overflow:visible}
:root .app .field-mode.field-job .fj-more{flex:none;min-height:var(--target);padding:0 var(--sp-2);border:0;background:transparent;color:var(--accent);font-weight:700;font-size:var(--fs-body);text-decoration:underline;cursor:pointer}

/* Folds: Tidligere her / Registrert / Mer sit in one compact row. */
:root .app .field-mode.field-job .fj-folds{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
:root .app .field-mode.field-job .fj-folds>details{flex:1 1 auto;min-width:0;border-radius:var(--r-md);border:1.5px solid var(--line);background:var(--paper)}
:root .app .field-mode.field-job .fj-folds>details[open]{flex-basis:100%;background:var(--surface)}
:root .app .field-mode.field-job .fj-folds>details>summary{min-height:var(--target);padding:var(--sp-1) var(--sp-3);display:flex;align-items:center;justify-content:center;font-size:var(--fs-body);font-weight:700;line-height:1.2;overflow:visible;text-overflow:clip;white-space:normal;text-align:center;list-style:none}
:root .app .field-mode.field-job .fj-folds>details:not([open])>summary::after,:root .app .field-mode.field-job .fj-folds>details:not([open])>summary::before{content:none;display:none}
:root .app .field-mode.field-job .fj-folds>details:not([open])>summary::marker{content:""}
:root .app .field-mode.field-job .fj-folds>details:not([open])>:not(summary){display:none}
:root .app .field-mode.field-job .fj-folds>details[open]>summary{justify-content:flex-start;text-align:left}

/* ---------- Jobb: timer, tool grid, Ferdig ---------- */
:root .app .field-mode.field-job .fj-bar{position:relative;bottom:auto;margin:auto 0 0;padding:var(--sp-1) 0 0;border-top:0;box-shadow:none;background:transparent;grid-template-columns:1fr 1fr;gap:var(--sp-2) var(--sp-3)}
:root .app .field-mode.field-job .fj-bar>*{grid-column:auto}
:root .app .field-mode.field-job .fj-bar>.fj-timecard,:root .app .field-mode.field-job .fj-bar>.fj-act.ferdig{grid-column:1/-1}
:root .app .field-mode.field-job .fj-timecard{display:grid;gap:var(--sp-2);padding:var(--sp-3);border-radius:var(--r-lg);background:var(--night);color:var(--on-night)}
:root .app .field-mode.field-job .fj-clock{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}
:root .app .field-mode.field-job .fj-clock-text{display:grid;gap:var(--sp-1);min-width:0}
:root .app .field-mode.field-job .fj-clock-state{font-family:var(--font-display);font-stretch:100%;font-weight:800;font-size:var(--fs-body);letter-spacing:.1em;text-transform:uppercase;color:var(--hivis)}
:root .app .field-mode.field-job .fj-timecard.running .fj-clock-state{color:var(--on-night)}
:root .app .field-mode.field-job .fj-clock-plan{font-size:var(--fs-body);font-weight:600;color:var(--on-night-2)}
:root .app .field-mode.field-job .fj-clock-num{font-family:var(--font-display);font-stretch:68%;font-weight:800;font-size:var(--fx-num-l);line-height:.95;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--on-night);white-space:nowrap}
:root .app .field-mode.field-job .fj-timecard.running .fj-clock-num{color:var(--hivis)}

:root .app .field-mode.field-job .fj-bar .fj-act,:root .app .field-mode.field-job .fj-bar .fj-extra{position:relative;border-radius:var(--r-lg);transition:transform .08s,box-shadow .08s}
:root .app .field-mode.field-job .fj-bar .fj-act.tid{min-height:68px;width:100%;flex-direction:row;justify-content:center;gap:var(--sp-3);border:0;background:var(--fire);color:var(--night);box-shadow:var(--fx-edge);font-family:var(--font-display);font-stretch:90%;font-weight:800;font-size:30px;letter-spacing:.01em}
:root .app .field-mode.field-job .fj-bar .fj-act.tid :is(span,svg){color:var(--night)}
:root .app .field-mode.field-job .fj-bar .fj-act.tid svg{display:block;width:32px;height:32px;fill:currentColor;stroke:currentColor}
:root .app .field-mode.field-job .fj-bar .fj-act.tid.running{flex-direction:row;background:var(--on-night);color:var(--night);box-shadow:var(--fx-edge)}
:root .app .field-mode.field-job .fj-bar .fj-act.tid .fj-stop{font-size:30px;font-weight:800}
:root .app .field-mode.field-job .fj-bar .fj-act.tid .fj-timer{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:root .app .field-mode.field-job .fj-bar .fj-act.tid:disabled{background:var(--night-2);color:var(--on-night-2);box-shadow:none}
:root .app .field-mode.field-job .fj-bar .fj-act.tid:disabled :is(span,svg){color:var(--on-night-2)}

/* Tool tiles */
:root .app .field-mode.field-job .fj-bar .fj-act.foto,:root .app .field-mode.field-job .fj-bar .fj-act.snakk,:root .app .field-mode.field-job .fj-bar .fj-act.materialer,:root .app .field-mode.field-job .fj-bar .fj-extra{min-height:var(--fx-tile);display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:var(--sp-2);padding:var(--sp-3) var(--sp-3) var(--sp-3);background:var(--surface);color:var(--ink);border:1.5px solid var(--line);box-shadow:var(--fx-edge-light);text-align:left;font-family:var(--font-display);font-stretch:88%;font-weight:800;font-size:24px;letter-spacing:.01em;line-height:1.1}
:root .app .field-mode.field-job .fj-bar .fj-act.foto :is(span),:root .app .field-mode.field-job .fj-bar .fj-act.snakk :is(span),:root .app .field-mode.field-job .fj-bar .fj-act.materialer :is(span),:root .app .field-mode.field-job .fj-bar .fj-extra span{color:var(--ink)}
:root .app .field-mode.field-job .fj-bar .fj-act.foto svg,:root .app .field-mode.field-job .fj-bar .fj-act.snakk svg,:root .app .field-mode.field-job .fj-bar .fj-act.materialer svg,:root .app .field-mode.field-job .fj-bar .fj-extra svg{width:34px;height:34px;color:var(--accent);stroke-width:1.9}
:root .app .field-mode.field-job .fj-bar .fj-extra>span,:root .app .field-mode.field-job .fj-bar .fj-extra span span{font:inherit;color:var(--ink)}
:root .app .field-mode.field-job .fj-bar .fj-badge{position:absolute;top:var(--sp-3);right:var(--sp-3);min-width:32px;height:32px;padding:0 var(--sp-2);border-radius:var(--r-pill);background:var(--night);color:var(--on-night);font-family:var(--font-display);font-stretch:100%;font-weight:800;font-size:var(--fs-title);line-height:32px;text-align:center}
:root .app .field-mode.field-job .fj-bar .fj-act:disabled,:root .app .field-mode.field-job .fj-bar .fj-extra:disabled{background:var(--neutral-bg);border:1.5px dashed var(--line-input);box-shadow:none}
:root .app .field-mode.field-job .fj-bar .fj-act:disabled :is(span,svg),:root .app .field-mode.field-job .fj-bar .fj-extra:disabled :is(span,svg){color:var(--ink-2)}

/* Ferdig: outlined until the visit has started, then the full green bar. */
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig{min-height:var(--target-primary);flex-direction:row;justify-content:center;gap:var(--sp-3);background:var(--surface);color:var(--ink);border:2px solid var(--ink);box-shadow:var(--fx-edge-light);font-family:var(--font-display);font-stretch:90%;font-weight:800;font-size:26px;letter-spacing:.01em}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig :is(span,svg){color:var(--ink)}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig.primary{background:var(--success);border-color:var(--success);box-shadow:var(--fx-edge)}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig.primary :is(span,svg){color:var(--on-night)}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig svg{display:block;width:30px;height:30px;stroke-width:2.8}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig:disabled{background:var(--neutral-bg);border:1.5px dashed var(--line-input);box-shadow:none}

/* Hard bottom edge: press it down. */
:root .app .field-mode.field-job .fj-bar .fj-act:not(:disabled):active,:root .app .field-mode.field-job .fj-bar .fj-extra:not(:disabled):active{transform:translateY(3px);box-shadow:0 1px 0 var(--press-edge-light)}

@media (prefers-reduced-motion:reduce){
  .field-mode.field-home .fj-big,.field-mode.field-home .fj-mid,:root .app .field-mode.field-job .fj-bar .fj-act,:root .app .field-mode.field-job .fj-bar .fj-extra{transition:none}
  :root .field-mode.field-home .next-job-card:not(.empty) .fj-big:active,:root .app .field-mode.field-job a.fj-call:active,:root .app .field-mode.field-job .fj-bar .fj-act:not(:disabled):active,:root .app .field-mode.field-job .fj-bar .fj-extra:not(:disabled):active{transform:none}
}
/* Fold-outs sit below the tools so opening one never moves Start tid or Ferdig. */
/* ===== end field ===== */



/* ===== Redesign C phase 2: owner lists (Jobber, Økonomi, Betalinger, home follow-ups). Edit only inside this block. ===== */
/* shared list language: white rows, uppercase eyebrows, condensed numerals */
.app .mobile-job-cards .list-group,.app .hm-rows .list-group,.app .money-summary{border-radius:var(--r-lg);box-shadow:none}
.app .mobile-job-cards .list-row.mobile-record-card,.app .hm-rows .list-row.mobile-record-card{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target-primary);padding:var(--sp-3) var(--sp-4);border:0;border-top:1px solid var(--line);border-left:6px solid var(--line);border-radius:0;box-shadow:none;background:var(--surface)}
.app .mobile-job-cards .list-group>.list-row:first-child,.app .hm-rows .list-group>.list-row:first-child{border-top:0}
.app .mobile-job-cards .list-row-main,.app .hm-rows .list-row-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.app .mobile-job-cards .list-row-title,.app .hm-rows .list-row-title{font-weight:700;font-size:var(--fs-title);line-height:1.25;overflow-wrap:anywhere}
.app .mobile-job-cards .list-row-main>.list-row-sub:last-child{font-family:var(--font-display);font-stretch:90%;font-weight:700;font-size:var(--fs-body);white-space:nowrap;letter-spacing:.01em;line-height:1.1;font-variant-numeric:tabular-nums;color:var(--ink);margin:0}
.app .mobile-job-cards .list-row-main>.list-row-sub:not(:last-child){font-size:var(--fs-body);color:var(--ink-2);margin:0}
.app .mobile-job-cards .list-row .badge,.app .hm-rows .list-row .badge{min-height:28px;font-family:var(--font-display);font-stretch:100%;font-weight:700;font-size:var(--fs-meta);letter-spacing:.08em;text-transform:uppercase}
.app .mobile-job-cards .list-row .badge:where(.scheduled,.planned,.booked){display:none}
.app .mobile-job-cards .list-row .badge:where(.quoted,.accepted,.new,.sent){background:none;color:var(--ink-2);padding:0}
.app .mobile-job-cards .list-row .badge:where(.scheduled,.planned,.booked,.quoted,.accepted,.new,.sent) .status-dot{display:none}
.app .mobile-job-cards .list-row .badge.in_progress{background:var(--hivis);color:var(--hivis-ink)}
.app .mobile-job-cards .list-row .badge.in_progress .status-dot{background:var(--hivis-ink)}
.app .mobile-job-cards .list-row:has(.badge.in_progress){border-left-color:var(--hivis)}
.app .mobile-job-cards .list-row:has(.badge.waiting){border-left-color:var(--fire)}
.app .mobile-job-cards .list-row:has(.badge:where(.completed,.invoiced,.closed)){border-left-color:var(--success)}
.app .hm-rows .list-row:has(.badge:where(.overdue,.urgent,.failed)){border-left-color:var(--danger)}
.app .hm-rows .list-row:has(.badge:where(.paid,.completed)){border-left-color:var(--success)}
.app .hm-rows .list-row:has(.badge:where(.draft,.sent)){border-left-color:var(--ink-3)}
.app .hm-rows .list-row:has(.badge:where(.simulated,.pending,.review,.expired)){border-left-color:var(--hivis)}
.app .hm-rows .hm-trail{display:grid;justify-items:end;gap:var(--sp-1)}
.app .hm-rows .hm-trail .money-wrap{display:block}
.app .hm-rows .hm-trail .money{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-display);letter-spacing:.01em;line-height:1;text-align:right}
.app .hm-rows .list-row-sub{color:var(--ink-2);font-size:var(--fs-body)}
.app .list-foot{font-family:var(--font-display);font-stretch:100%;font-weight:700;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
/* Okonomi: one hero figure + small tiles */
.app .money-summary{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);border:0;background:none;overflow:visible}
.app .money-summary>.list-row{display:grid;align-content:space-between;gap:var(--sp-2);min-height:var(--target-primary);padding:var(--sp-3);border:0;border-radius:var(--r-lg);background:var(--paper);color:var(--ink)}
.app .money-summary>.list-row:first-child{grid-column:1/-1;position:relative;padding:var(--sp-4) var(--sp-4) var(--sp-4) calc(var(--sp-4) + 6px);border-radius:0;background:none;box-shadow:inset 6px 0 0 var(--ink)}
.app .money-summary>.list-row[data-testid="money-overdue"]{box-shadow:inset 6px 0 0 var(--danger)}
.app .money-summary>.list-row.link::after{position:absolute;right:var(--sp-2);bottom:var(--sp-3)}
.app .money-summary .list-row-main{display:grid;gap:var(--sp-2)}
.app .money-summary .list-row-title{font-family:var(--font-display);font-stretch:100%;font-weight:700;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.app .money-summary>.list-row:first-child .list-row-title{color:inherit}
.app .money-summary>.list-row[data-testid="money-overdue"] .list-row-title{color:var(--danger)}
.app .money-summary .list-row-sub{font-size:var(--fs-body);color:var(--ink-2)}
.app .money-summary .list-row-trail{margin:0;justify-content:flex-start}
.app .money-summary .money-wrap,.app .money-summary .money{text-align:left}
.app .money-summary .money{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-display);font-size:clamp(28px,8vw,34px);letter-spacing:.01em;line-height:1;font-variant-numeric:tabular-nums}
.app .money-summary>.list-row:first-child .money{font-size:clamp(44px,13vw,60px)}
.app .money-summary>.list-row:first-child{flex-direction:column;align-items:stretch}
.app .money-summary>.list-row:first-child .list-row-trail{order:2}
.app .money-summary .money-dot{display:none}
/* home lower half: quieter, on-system */
.app .hm-found .list-group{border:0;background:var(--paper);border-radius:var(--r-lg)}
.app .hm-found .list-row,.app .od-found .list-row{background:none}
.app .hm-found .hm-h{font-family:var(--font-display);font-stretch:100%;font-weight:700;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.app .hm-found .list-row-title{font-size:var(--fs-body);font-weight:700}
.app .hm-found .money{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-display);letter-spacing:.01em;line-height:1}
.app .hm-found .money.positive,.app .hm-found .money-total{color:var(--success)}
.app .hm-found .money.zero{color:var(--ink-2);font-size:var(--fs-title);font-weight:700}
.app .hm-found .hm-how,.app .hm-found .button.hm-how{min-height:var(--target);justify-self:start;padding:0 var(--sp-2);font-size:var(--fs-meta);color:var(--ink-2);text-decoration:underline;background:none;border:0}
.app .service-owner-summary.panel,.app .attention-panel.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:none;margin:var(--sp-3) 0}
.app .service-owner-summary .section-title,.app .attention-panel .section-title{padding:var(--sp-4) var(--sp-4) var(--sp-3)}
.app .service-owner-summary .section-title h2,.app .attention-panel .section-title h3{font-family:var(--font-display);font-stretch:100%;font-weight:700;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.app .service-owner-summary .section-title p,.app .attention-panel .section-title p{font-size:var(--fs-body);color:var(--ink-2)}
.app .service-owner-summary>.service-owner-clear,.app .service-owner-summary>small{margin:0 var(--sp-4) var(--sp-3);font-size:var(--fs-meta);color:var(--ink-2)}
.app .service-owner-clear{display:flex;align-items:center;gap:var(--sp-2);padding:0;background:none;color:var(--success)}
.app .service-owner-grid{margin:0 var(--sp-4) var(--sp-3);gap:var(--sp-3)}
.app .service-owner-grid>div{border:0;border-radius:var(--r-lg);background:var(--paper)}
.app .service-owner-grid strong{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-display);line-height:1}
.app .service-owner-summary:has(.service-owner-clear){margin:var(--sp-2) 0}
.app .service-owner-summary:has(.service-owner-clear) .section-title{padding:var(--sp-3) var(--sp-4);min-height:var(--target)}
.app .service-owner-summary:has(.service-owner-clear) .section-title p,.app .service-owner-summary:has(.service-owner-clear)>.service-owner-clear,.app .service-owner-summary:has(.service-owner-clear)>small{display:none}
.app .attention-card{padding:var(--sp-4);border-top:1px solid var(--line)}
.app .attention-card h4{font-size:var(--fs-title);font-weight:700;color:var(--ink)}
.app .attention-card p{font-size:var(--fs-body);color:var(--ink-2)}
.app .attention-controls{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--sp-2);align-items:stretch}
.app .attention-controls .button{min-height:var(--target-primary);width:100%;min-width:0;padding:var(--sp-2);font-size:var(--fs-body);font-weight:700;line-height:1.2;white-space:normal;justify-content:center}
.app .attention-controls .button{border:1px solid var(--line-input);border-radius:var(--r-md);background:var(--surface)}
.app .attention-controls .button.ac-open{grid-column:1/-1}
.app .attention-controls .ac-more{grid-column:1/-1}
.app .attention-panel .af-details summary{min-height:var(--target-primary);color:var(--ink-2)}
@media (min-width:641px){
.app .money-summary{grid-template-columns:2fr 1fr 1fr}
.app .money-summary>.list-row:first-child{grid-column:auto}
}
/* ===== end owner2 ===== */



/* ===== Redesign C phase 2: field finish + global buttons. Edit only inside this block. ===== */
/* ---------- Global buttons: one primary (fire on night text, hard bottom edge) ---------- */
/* Exclusions: danger buttons, the picked option in the customer portal, and the passkey button that is meant to look secondary. */
:root:root:root .button.primary:not(:where(.pa-danger,.destructive,.danger,.is-picked-button,.passkey-login *,.ferdig,.customer-portal *)){background:var(--fire);border:1px solid var(--fire);color:var(--night);font-weight:700;box-shadow:var(--press-edge);transition:transform .08s,box-shadow .08s,background-color .12s}
:root:root:root .button.primary:not(:where(.pa-danger,.destructive,.danger,.is-picked-button,.passkey-login *,.ferdig,.customer-portal *)) :is(span,svg){color:var(--night)}
:root:root:root .button.primary:not(:where(.pa-danger,.destructive,.danger,.is-picked-button,.passkey-login *,.ferdig,.customer-portal *)):not(:disabled):not([aria-disabled=true]):hover{background:color-mix(in srgb,var(--fire) 88%,var(--on-night));border-color:color-mix(in srgb,var(--fire) 88%,var(--on-night))}
:root:root:root .button.primary:not(:where(.pa-danger,.destructive,.danger,.is-picked-button,.passkey-login *,.ferdig,.customer-portal *)):not(:disabled):not([aria-disabled=true]):active{background:var(--fire);transform:translateY(3px);box-shadow:0 1px 0 var(--press-edge-light)}
:root:root:root .button.primary:not(:where(.pa-danger,.destructive,.danger,.is-picked-button,.passkey-login *,.ferdig,.customer-portal *)):is(:disabled,[aria-disabled=true]){background:var(--neutral-bg);border:1.5px dashed var(--line-input);color:var(--ink-2);box-shadow:none;transform:none}
:root:root:root .button.primary:not(:where(.pa-danger,.destructive,.danger,.is-picked-button,.passkey-login *,.ferdig,.customer-portal *)):is(:disabled,[aria-disabled=true]) :is(span,svg){color:var(--ink-2)}
/* A field-job bar rule used to paint primary rust; the Ferdig bar keeps its own green state. */
:root:root:root .app .field-job .fj-bar .button.primary:not(.ferdig,.tid,:disabled){background:var(--fire);border-color:var(--fire);color:var(--night)}
/* Focus stays visible: blue ring on light, light ring on night surfaces. */
:root :is(.next-job-card,.fj-timecard,.fs-success .modal-head) :where(button,a):focus-visible{outline-color:var(--focus-on-dark)}

/* Secondary and tertiary follow the restyled screens: clear 1.5 px edge, bold label, light bottom edge. */
:root .button:not(.primary,.tertiary,.destructive,.danger,.selected,:disabled,[aria-disabled=true]){border:1.5px solid var(--line-input);font-weight:700;box-shadow:var(--press-edge-light);transition:transform .08s,box-shadow .08s,background-color .12s}
:root .button:not(.primary,.tertiary,.destructive,.danger,.selected,:disabled,[aria-disabled=true]):active{transform:translateY(2px);box-shadow:0 1px 0 var(--press-edge-light)}
:root .button.tertiary{font-weight:700}

@media (prefers-reduced-motion:reduce){
  :root:root:root .button.primary:not(:where(.pa-danger,.destructive,.danger,.is-picked-button,.passkey-login *,.ferdig,.customer-portal *)),:root .button:not(.primary,.tertiary,.destructive,.danger,.selected,:disabled,[aria-disabled=true]){transition:none}
  :root:root:root .button.primary:not(:where(.pa-danger,.destructive,.danger,.is-picked-button,.passkey-login *,.ferdig,.customer-portal *)):not(:disabled):not([aria-disabled=true]):active,:root .button:not(.primary,.tertiary,.destructive,.danger,.selected,:disabled,[aria-disabled=true]):active{transform:none}
}

/* ---------- Finish sheet: a checklist, not a warning wall ---------- */
:root:root .field-sheet .fs-summary{display:grid;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border:1.5px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--press-edge-light)}
:root:root .field-sheet .fs-sum-job{display:grid;gap:2px;margin:0}
:root:root .field-sheet .fs-sum-job strong{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:30px;line-height:1.05;letter-spacing:.015em;color:var(--ink);overflow-wrap:anywhere}
:root:root .field-sheet .fs-sum-job span{font-size:var(--fs-body);font-weight:600;color:var(--ink-2)}
:root:root:root:root .field-sheet .fs-summary .fd-minutes{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:var(--sp-3);margin:0;padding-top:var(--sp-2);border-top:1px solid var(--line)}
:root:root:root:root .field-sheet .fs-summary .fd-minutes label{margin:0;text-align:left;flex:1;font-size:var(--fs-body);font-weight:700;color:var(--ink)}
:root:root:root:root .field-sheet .fs-summary .fd-unit{display:flex;align-items:center;gap:var(--sp-2);flex:none}
:root:root:root:root .field-sheet .fs-summary .fd-unit input{flex:none;width:6.5rem;min-height:var(--target);text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
:root:root .field-sheet .fs-summary .fd-unit span{font-size:var(--fs-body);font-weight:600;color:var(--ink-2)}
:root:root .field-sheet .fs-summary .list-group{margin:0;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none}
:root:root .field-sheet .fs-summary .list-row{padding-left:0;padding-right:0;background:transparent}

:root:root .field-sheet .fs-closeout:not(.ok){display:grid;gap:var(--sp-2);padding:0;border:0;background:transparent}
:root:root .field-sheet .fs-closeout h3{margin:0;font-family:var(--font-display);font-stretch:100%;font-weight:800;font-size:var(--fs-body);letter-spacing:.01em;text-transform:none;color:var(--ink-2)}
:root:root .field-sheet .fs-closeout .fd-checks{display:grid;gap:var(--sp-2);margin:0;padding:0;list-style:none;border:0;background:transparent;box-shadow:none}
:root:root .field-sheet .fs-closeout .fd-checks>li{display:flex;align-items:center;gap:var(--sp-3);min-height:60px;padding:var(--sp-2) var(--sp-3);border:1.5px solid var(--hivis);border-radius:var(--r-md);background:var(--hivis-bg)}
:root:root .field-sheet .fs-closeout .fd-ring{display:inline-grid;place-items:center;flex:none;width:28px;height:28px;color:var(--hivis-ink)}
:root:root .field-sheet .fs-closeout .fd-ring svg{display:none}
:root:root .field-sheet .fs-closeout .fd-ring::before{content:"";box-sizing:border-box;width:24px;height:24px;border:3px solid var(--warning);border-radius:50%;background:var(--surface)}
:root:root .field-sheet .fs-closeout .fd-checks .list-row-title{font-size:var(--fs-body);font-weight:700;line-height:1.3;color:var(--ink)}
:root:root:root .field-sheet .fs-closeout .fd-checks .closeout-fix{flex:none;width:auto;min-width:7.5rem;max-width:11rem;min-height:var(--target);padding:0 var(--sp-3);border:2px solid var(--night);border-radius:var(--r-md);background:var(--surface);color:var(--night);font-size:var(--fs-body);font-weight:700;line-height:1.15;white-space:normal;text-align:center;box-shadow:var(--press-edge-light)}
:root:root:root .field-sheet .fs-closeout .fd-checks .closeout-fix :is(span,svg){color:var(--night)}
:root:root:root .field-sheet .fs-closeout .fd-checks .closeout-fix:active{transform:translateY(2px);box-shadow:0 1px 0 var(--press-edge-light)}
:root:root .field-sheet .fs-closeout.ok{padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md)}

:root:root .field-sheet .fs-tick-list{display:grid;margin:0;padding:0;list-style:none}
:root:root .field-sheet .fs-tick-list li{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target);padding:var(--sp-1) var(--sp-3);border-top:1px solid var(--line)}
:root:root .field-sheet .fs-tick-list li:first-child{border-top:0}
:root:root .field-sheet .fs-tick-list li>span:last-child{font-size:var(--fs-body);font-weight:600;color:var(--ink)}
:root:root .field-sheet .fs-tick{display:inline-grid;place-items:center;flex:none;width:28px;height:28px;border-radius:50%;background:var(--success)}
:root:root .field-sheet .fs-tick svg{width:18px;height:18px;stroke-width:3;color:var(--on-night)}
:root:root .field-sheet .fs-closeout+.fs-tick-list{padding-top:var(--sp-1)}

/* Footer: Bekreft og fullfør is the one loud thing; Avbryt is a quiet text button. */
:root:root:root dialog.field-sheet .modal-foot .finish-confirm.button.primary{width:100%;min-height:64px;border-radius:var(--r-lg);font-family:var(--font-display);font-stretch:90%;font-weight:800;font-size:26px;letter-spacing:.01em}
:root:root:root dialog.field-sheet .modal-foot .button.tertiary[data-testid=finish-cancel]{min-height:var(--target);background:transparent;border-color:transparent;box-shadow:none;color:var(--ink-2);font-weight:700;text-decoration:none}
:root:root:root dialog.field-sheet .modal-foot .button.tertiary[data-testid=finish-cancel]:hover{background:var(--surface-sunk);color:var(--ink);text-decoration:none}
:root:root dialog.field-sheet .modal-foot .fd-hint{text-align:center;font-size:var(--fs-body);font-weight:600;color:var(--ink)}

/* ---------- Success: Jobben er ferdig ---------- */
:root:root dialog.modal.field-sheet.fs-success .modal-head{background:var(--night);border-bottom:0}
:root:root dialog.modal.field-sheet.fs-success .modal-head h2{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:32px;letter-spacing:.015em;color:var(--on-night)}
:root:root dialog.modal.field-sheet.fs-success .modal-head .icon-button{background:var(--night-2);color:var(--on-night)}
:root:root .fs-success .fs-cheer strong{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:48px;line-height:1;letter-spacing:.015em;color:var(--night)}
:root:root .fs-success .fs-done{margin-top:var(--sp-3);font-size:var(--fs-title);font-weight:700;color:var(--success)}
:root:root .fs-success .fs-job{display:block;margin:0;padding:var(--sp-3) var(--sp-4);border:1.5px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--press-edge-light);text-align:left;color:var(--ink-2);font-weight:600}
:root:root .fs-success .fs-job strong{display:block;font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:30px;line-height:1.05;letter-spacing:.015em;color:var(--ink)}
:root:root .fs-success .fs-job span:not(.fs-sep){display:block;font-size:var(--fs-body)}
:root:root .fs-success .fs-job .fs-sep{display:none}
:root:root .fs-success .fs-job .fs-job-time{font-size:var(--fs-title);margin-top:var(--sp-1);font-family:var(--font-display);font-stretch:90%;font-weight:800;color:var(--ink)}
:root:root:root dialog.field-sheet.fs-success .modal-foot .button.primary{width:100%;min-height:64px;border-radius:var(--r-lg);font-family:var(--font-display);font-stretch:90%;font-weight:800;font-size:26px;letter-spacing:.01em}
/* ===== end field2 ===== */

/* ===== Polish v2 (2026-10-15): soft depth, white cards, calm checklist, a real celebration. Edit only inside this block. ===== */
/* Presses sink instead of losing a hard edge. */
:root .app .button:not(:disabled):active,:root .app .fj-act:not(:disabled):active,:root .app .fj-extra:not(:disabled):active,:root .app .fj-big:active{box-shadow:0 1px 2px rgba(7,18,42,.18)}
:root:root:root .button.primary:not(:where(.pa-danger,.destructive,.danger,.is-picked-button,.passkey-login *,.ferdig,.customer-portal *)){box-shadow:0 1px 2px rgba(7,18,42,.14),0 10px 22px -10px color-mix(in srgb,var(--fire) 70%,transparent)}
/* Tiles and quiet cards: white surfaces with a soft lift, not beige blocks. */
.app .hm-tile{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-raised)}
.app .hm-tile:active{transform:translateY(1px);box-shadow:none}
:root .app .field-mode.field-job .fj-bar :is(.fj-act.foto,.fj-act.snakk,.fj-act.materialer,.fj-extra){border:1px solid var(--line);box-shadow:var(--shadow-raised)}
:root .app .field-mode.field-job .fj-folds>details{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-raised)}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig:not(.primary){border:1.5px solid var(--line-input);box-shadow:var(--shadow-raised)}
/* Jobs list: technician face on the right. */
.app .mobile-job-cards .jr-trail{display:inline-flex;align-items:center;gap:var(--sp-2)}
.app .mobile-job-cards .jr-trail .avatar{width:36px;height:36px;font-size:var(--fs-meta)}
/* Finish checklist: calm rows with an amber ring, not a wall of warnings. */
:root:root .field-sheet .fs-closeout .fd-checks>li{border:1px solid var(--line);border-left:4px solid var(--hivis);background:var(--surface);box-shadow:var(--shadow-raised)}
:root:root:root .field-sheet .fs-closeout .fd-checks .closeout-fix{border:1.5px solid var(--line-input);box-shadow:var(--press-edge-light)}
/* Job finished: confetti behind Vakta's thumbs-up. */
.fs-success .fs-cheer{position:relative;isolation:isolate}
@media (prefers-reduced-motion:no-preference){
.fs-success .fs-cheer::before{content:"";position:absolute;inset:-24px -8px auto;height:180px;z-index:-1;pointer-events:none;
background:radial-gradient(circle,var(--fire) 0 4px,transparent 5px) 8% 20%/22px 22px no-repeat,radial-gradient(circle,var(--hivis) 0 5px,transparent 6px) 22% 6%/24px 24px no-repeat,radial-gradient(circle,var(--success) 0 4px,transparent 5px) 36% 28%/22px 22px no-repeat,radial-gradient(circle,var(--night) 0 3px,transparent 4px) 64% 4%/20px 20px no-repeat,radial-gradient(circle,var(--fire) 0 5px,transparent 6px) 78% 24%/24px 24px no-repeat,radial-gradient(circle,var(--hivis) 0 4px,transparent 5px) 92% 10%/22px 22px no-repeat,radial-gradient(circle,var(--success) 0 3px,transparent 4px) 50% 36%/20px 20px no-repeat;
animation:fs-confetti 1.4s cubic-bezier(.2,.7,.3,1) both}
@keyframes fs-confetti{from{opacity:0;transform:translateY(-40px) scale(.6)}35%{opacity:1}to{opacity:.9;transform:translateY(0) scale(1)}}
}
/* ===== end polish v2 ===== */

/* ===== Redesign F (2026-10-15) ===== */
/* Blind panel 5: cards for the owner (home, jobs, payments), glove-size light surfaces for the technician. Presentation only. */

/* -- Owner home: Vakta line, one hero, three numbers, today's list -- */
.hm-vakta{display:flex;align-items:center;gap:var(--sp-3);margin:0;padding:var(--sp-2) var(--sp-4) var(--sp-2) var(--sp-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl) var(--r-xl) var(--r-xl) var(--r-sm);box-shadow:var(--shadow-raised);font-size:var(--fs-body);line-height:1.3;color:var(--ink)}
.hm-vakta-mark{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:var(--hivis);color:var(--hivis-ink)}
.hm-vakta strong{font-weight:700}
.hm-nums{display:grid;gap:var(--sp-2)}
.hm-nums .hm-tile{align-content:space-between;min-height:104px}
.hm-money.late{background:var(--danger-bg);border-color:var(--danger);box-shadow:inset 4px 0 0 var(--danger)}
.hm-money.late .hm-cap,.hm-money.late .hm-num,.hm-money.late .hm-tile-sub{color:var(--danger)}
.hm-jobs{list-style:none;margin:0;padding:var(--sp-1) 0;display:grid;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-raised);overflow:hidden}
.hm-jobs>li+li{border-top:1px solid var(--line)}
.hm-job{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--target-primary);padding:var(--sp-3) var(--sp-4);border:0;background:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.hm-job-time{flex:none;width:3.4rem;font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-heading);font-variant-numeric:tabular-nums;line-height:1}
.hm-jobs>li:first-child .hm-job-time{color:var(--accent)}
.hm-job.done{color:var(--ink-3)}
.hm-job-main{display:grid;gap:2px;min-width:0;flex:1}
.hm-job-name{font-weight:700;font-size:var(--fs-body);line-height:1.25}
.hm-job-title{font-size:var(--fs-meta);color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hm-job-who .avatar{width:36px;height:36px;font-size:var(--fs-meta)}
.hm-empty{margin:0;padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);color:var(--ink-2)}
.hm-seeall{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:var(--target);padding:0 var(--sp-1);border:0;background:none;color:var(--accent);font:inherit;font-weight:700;cursor:pointer}
.hm-need .hm-h{display:inline-flex;align-items:center;gap:var(--sp-2)}
.hm-inbox{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--target-primary);padding:0 var(--sp-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.hm-inbox .hm-cap{flex:1;color:var(--ink-2)}
.hm-inbox .hm-num{font-size:var(--fs-heading)}

/* -- Jobs (owner and technician list, phone) -- */
.jb-next{display:grid;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-raised);overflow:hidden}
.jb-next-cap{justify-self:start;display:inline-flex;align-items:center;gap:var(--sp-2);margin:var(--sp-4) 0 0 var(--sp-4);padding:6px var(--sp-3);border-radius:var(--r-pill);background:var(--accent-tint);color:var(--accent);font-family:var(--font-display);font-stretch:100%;font-weight:800;font-size:var(--fs-meta);letter-spacing:.1em;text-transform:uppercase}
.jb-next-cap::before{content:"";width:10px;height:10px;border-radius:50%;background:var(--fire)}
.app .jb-next .jb-next-main{display:grid;gap:var(--sp-1);width:100%;padding:var(--sp-3) var(--sp-4) var(--sp-2);border:0;border-radius:0;background:none;box-shadow:none;text-align:left;color:var(--ink);font:inherit;cursor:pointer}
.jb-next-name{font-family:var(--font-display);font-stretch:76%;font-weight:800;font-size:var(--fs-display);line-height:1.05;overflow-wrap:anywhere}
.jb-next-title{font-size:var(--fs-body);color:var(--ink-2)}
.jb-next-addr{display:flex;align-items:flex-start;gap:var(--sp-2);margin-top:var(--sp-1);font-size:var(--fs-meta);color:var(--ink-2)}
.jb-next-addr svg{flex:none;color:var(--accent)}
.jb-next-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-top:var(--sp-2)}
.jb-next-act{display:flex;gap:var(--sp-3);padding:var(--sp-1) var(--sp-4) var(--sp-4)}
.app .jb-next-act .jb-call{flex:none;width:var(--target-primary);min-height:var(--target-primary);padding:0;justify-content:center;border:2px solid var(--ink);border-radius:var(--r-lg);background:var(--surface);color:var(--ink)}
:root:root .app .jb-next-act .jb-open{flex:1;min-height:var(--target-primary);justify-content:center;border-radius:var(--r-lg);background:var(--night);border-color:var(--night);color:var(--on-night);font-family:var(--font-display);font-stretch:90%;font-weight:800;font-size:var(--fs-title);box-shadow:var(--press-edge)}
:root:root .app .jb-next-act .jb-open :is(span,svg){color:var(--on-night)}
.jb-who{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-meta);font-weight:600;color:var(--ink)}
.jb-who .avatar{width:32px;height:32px;font-size:12px}
.jb-who.none{color:var(--ink-3);font-weight:500}
.jb-day{display:grid;gap:var(--sp-2);margin-top:var(--sp-4)}
.jb-day-h{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3);margin:0 var(--sp-1);font-family:var(--font-display);font-stretch:100%;font-weight:700;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.app .jb-row .list-row-main{gap:var(--sp-1)}
.app .jb-row .jr-trail{display:grid;justify-items:end;gap:var(--sp-1)}
.jb-time{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-heading);font-variant-numeric:tabular-nums;line-height:1;color:var(--ink)}

/* -- Økonomi: overdue hero, labelled money bar, grouped rows -- */
.mny-hero{margin-bottom:var(--sp-3);position:relative;display:grid;gap:var(--sp-3);padding:var(--sp-4) var(--sp-4) var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-raised),inset 6px 0 0 var(--danger)}
.mny-cap{display:inline-flex;align-items:center;gap:var(--sp-2);margin:0;font-family:var(--font-display);font-stretch:100%;font-weight:800;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.mny-hero .mny-cap{color:var(--danger)}
.mny-big .money{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:clamp(52px,16vw,68px);line-height:.95;letter-spacing:.01em;font-variant-numeric:tabular-nums;color:var(--danger)}
.mny-big .money-dot{display:none}
.mny-who{display:flex;align-items:center;gap:var(--sp-3)}
.mny-who .avatar{width:44px;height:44px;flex:none}
.mny-who-text{display:grid;gap:2px;min-width:0;color:var(--ink-2);font-size:var(--fs-meta)}
.mny-who-text strong{color:var(--ink);font-size:var(--fs-body);overflow-wrap:anywhere}
.app .mny-hero .button.money-go{margin:0;min-height:var(--target-primary);justify-content:center;border-radius:var(--r-lg);background:var(--fire);border-color:var(--fire);color:var(--hivis-ink);font-family:var(--font-display);font-stretch:90%;font-weight:800;font-size:var(--fs-title);box-shadow:0 4px 0 var(--fire-edge)}
.mny-bar{margin-bottom:var(--sp-4);display:grid;gap:var(--sp-3);padding:var(--sp-4);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-raised)}
.mny-bar-top{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3)}
.mny-total{font-size:var(--fs-meta);color:var(--ink-2)}
.mny-track{display:flex;gap:4px;height:16px}
.mny-track .seg{display:block;min-width:10px;border-radius:var(--r-pill);background:var(--ink-3)}
.mny-track .seg.ready,.mny-key .k.ready dt::before{background:var(--hivis)}
.mny-track .seg.late,.mny-key .k.late dt::before{background:var(--danger)}
.mny-track .seg.open,.mny-key .k.open dt::before{background:var(--ink-3)}
.mny-track .seg.paid,.mny-key .k.paid dt::before{background:var(--success)}
.mny-key{display:grid;grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr));gap:var(--sp-3) var(--sp-2);margin:0}
.mny-key .k{display:flex;flex-direction:column;justify-content:space-between}
.mny-key dt{display:flex;align-items:flex-start;gap:6px;font-size:var(--fs-meta);color:var(--ink-2);line-height:1.2}
.mny-key dt::before{content:"";flex:none;margin-top:4px;width:10px;height:10px;border-radius:50%}
.mny-key dd{margin:var(--sp-1) 0 0;font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-heading);font-variant-numeric:tabular-nums;line-height:1;color:var(--ink)}
.mny-empty{margin:0;color:var(--ink-2)}
.mny-group{display:grid;gap:var(--sp-2);margin-top:var(--sp-4)}
.mny-group-h{display:flex;justify-content:space-between;align-items:baseline;margin:0 var(--sp-1);font-family:var(--font-display);font-stretch:100%;font-weight:700;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.app .mny-group .list-group{border-radius:var(--r-xl)}

/* Confirm stays a real, handled button; while items are missing it only looks locked. */
:root:root:root:root dialog.field-sheet .modal-foot .finish-confirm.button.primary:disabled{background:var(--neutral-bg);border:2px dashed var(--line-input);color:var(--ink-2);box-shadow:none}
:root:root:root:root dialog.field-sheet .modal-foot .finish-confirm.button.primary:not(:disabled){background:var(--fire);border-color:var(--fire);color:var(--hivis-ink);box-shadow:0 5px 0 var(--fire-edge)}
:root:root:root:root dialog.field-sheet .modal-foot .fd-hint{color:var(--ink-2);font-size:var(--fs-meta)}

/* -- Technician: job page (timer, 2x2 tools, one huge Ferdig) -- */
:root .app .field-mode.field-job .fj-timecard{grid-template-columns:minmax(0,1fr);justify-content:stretch;padding:var(--sp-3) var(--sp-4);border:1.5px solid var(--line);border-radius:var(--r-xl);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-raised)}
:root .app .field-mode.field-job .fj-clock{flex-direction:column;align-items:flex-start;gap:var(--sp-1)}
:root .app .field-mode.field-job .fj-clock-text{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-1) var(--sp-3)}
:root .app .field-mode.field-job .fj-clock-state{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--ink-2)}
:root .app .field-mode.field-job .fj-clock-state::before{content:"";width:14px;height:14px;border-radius:50%;background:var(--ink-3)}
:root .app .field-mode.field-job .fj-timecard.running .fj-clock-state{color:var(--success)}
:root .app .field-mode.field-job .fj-timecard.running .fj-clock-state::before{background:var(--success)}
:root .app .field-mode.field-job .fj-clock-plan{color:var(--ink-2)}
:root .app .field-mode.field-job .fj-clock-num,:root .app .field-mode.field-job .fj-timecard.running .fj-clock-num{font-size:clamp(40px,11.5vw,46px);color:var(--ink)}
:root .app .field-mode.field-job .fj-bar .fj-act.tid.running{background:var(--surface);color:var(--ink);border:2px solid var(--ink);box-shadow:0 4px 0 var(--ink)}
:root .app .field-mode.field-job .fj-bar>.fj-timecard{order:0}
:root .app .field-mode.field-job .fj-bar .fj-act.foto{order:1}
:root .app .field-mode.field-job .fj-bar .fj-act.materialer{order:2}
:root .app .field-mode.field-job .fj-bar .fj-act.snakk{order:3}
:root .app .field-mode.field-job .fj-bar .fj-extra{order:4}
:root .app .field-mode.field-job .fj-bar>.fj-act.ferdig{order:5}
:root .app .field-mode.field-job .fj-bar .fj-act.foto,:root .app .field-mode.field-job .fj-bar .fj-act.snakk,:root .app .field-mode.field-job .fj-bar .fj-act.materialer,:root .app .field-mode.field-job .fj-bar .fj-extra{min-height:68px;align-items:center;justify-content:center;gap:var(--sp-2);border:2px solid var(--line-input);border-radius:var(--r-xl);text-align:center;background:var(--surface);box-shadow:0 3px 0 var(--line-input)}
:root .app .field-mode.field-job .fj-bar .fj-act.foto svg,:root .app .field-mode.field-job .fj-bar .fj-act.snakk svg,:root .app .field-mode.field-job .fj-bar .fj-act.materialer svg,:root .app .field-mode.field-job .fj-bar .fj-extra svg{width:32px;height:32px}
:root .app .field-mode.field-job .fj-bar .fj-extra.fd-tool{min-height:68px;align-items:center;justify-content:center;gap:var(--sp-2);border:2px solid var(--line-input);border-radius:var(--r-xl);text-align:center;background:var(--surface);box-shadow:0 3px 0 var(--line-input)}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig{min-height:64px;border-radius:var(--r-xl);font-size:34px;border:2.5px solid var(--ink);box-shadow:0 6px 0 var(--ink)}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig.primary{background:var(--fire);border-color:var(--fire);box-shadow:0 6px 0 var(--fire-edge)}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig.primary :is(span,svg){color:var(--hivis-ink)}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig:not(.primary):not(:disabled){border:2.5px solid var(--ink);box-shadow:0 6px 0 var(--ink)}
:root .app .field-mode.field-job .fj-bar .fj-act.ferdig:disabled{box-shadow:none}
:root .app .field-mode.field-job .fj-bar{padding:0;row-gap:6px}

@media (max-width:760px){
 .app .hm{gap:var(--sp-4)}
 .app .hm>.hm-vakta{order:0}
 .app .hm-rail>.hm-nums,.app .hm-rail>.hm-today{order:1}
 .app .hm-main>.hm-queue{order:2}
 .app .hm-main>.hm-found,.app .hm-rail>.hm-found{order:4}
 .app .hm-main>.hm-follow{order:6}
 .app .hm-rail>.hm-more{order:7}
 .app .hm-main>.hm-ask{order:8}
 .hm-nums{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,.9fr)}
 .app .hm-nums .hm-tile{padding:var(--sp-3) var(--sp-2) var(--sp-3) var(--sp-3);gap:var(--sp-2)}
 .app .hm-nums .hm-tile .hm-num{font-size:clamp(20px,6.4vw,26px);white-space:nowrap}
 .app .hm-nums .hm-tile.jobs .hm-num{font-size:clamp(34px,10vw,44px)}
 .app .hm-nums .hm-tile .hm-cap{font-size:11px;letter-spacing:.08em}
 .app .home-head h1{font-family:var(--font-display);font-stretch:82%;font-weight:800;font-size:32px;line-height:1.05}
 .app .home-head .button{position:relative;flex:none;min-height:var(--target-primary);padding:0 var(--sp-4);gap:var(--sp-2);justify-content:center;border:0;border-radius:var(--r-pill);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-raised);font-weight:700;white-space:nowrap}
 .app .home-head .button.primary{background:var(--fire);color:var(--hivis-ink);box-shadow:0 3px 0 var(--fire-edge)}
 .app .hm-need{border-radius:var(--r-xl);padding-top:var(--sp-5)}
 .app .hm-need .hm-ruler{display:none}
 .app .hm-need .hm-need-title{font-size:clamp(28px,8.6vw,34px)}
 :root .app .hm-need .button.hm-need-cta{min-height:58px;border-radius:var(--r-lg);font-family:var(--font-display);font-stretch:92%;font-weight:800;box-shadow:0 4px 0 var(--fire-edge)}
 :root .app .hm-need .button.hm-need-cta:active{transform:translateY(3px);box-shadow:0 1px 0 var(--fire-edge)}
}
@media (prefers-reduced-motion:reduce){
 :root .app .hm-need .button.hm-need-cta:active{transform:none}
}
/* -- Panel 6 fixes: no duplicate count on home, dark timer card, flat tools -- */
@media (max-width:760px){
 .app .hm:has(.hm-need) .hm-vakta{display:none}
}
:root:root .app .field-mode.field-job .fj-timecard{background:var(--night);border-color:var(--night);color:var(--on-night)}
:root:root .app .field-mode.field-job .fj-clock-num,:root:root .app .field-mode.field-job .fj-timecard.running .fj-clock-num{color:var(--on-night)}
:root:root .app .field-mode.field-job .fj-clock-state,:root:root .app .field-mode.field-job .fj-clock-plan{color:var(--on-night-2)}
:root:root .app .field-mode.field-job .fj-clock-state::before{background:var(--on-night-2)}
:root:root .app .field-mode.field-job .fj-bar :is(.fj-act.foto,.fj-act.snakk,.fj-act.materialer,.fj-extra,.fj-extra.fd-tool){box-shadow:var(--press-edge-light)}
:root:root .app .field-mode.field-job .fj-bar .fj-act.ferdig:not(.primary):not(:disabled){border-width:2px;box-shadow:var(--press-edge-light)}
/* ===== end redesign F ===== */
/* -- RELF r3: what is waiting (with its amount) sits in the Trenger deg card as on live; its line wraps instead of being cut -- */
.hm-need .hm-need-row-sub{display:block;-webkit-line-clamp:unset;overflow:visible;overflow-wrap:anywhere}

/* Growth: «Anbefal ByggVakta» card and the «Sendt med ByggVakta» portal line */
.referral-card textarea,.referral-card input{width:100%;font:inherit;font-size:var(--fs-meta);color:var(--ink);background:var(--surface);border:1px solid var(--line-input);border-radius:10px;padding:10px 12px;min-height:44px;box-sizing:border-box}
.referral-card textarea{resize:none;line-height:1.5}
.referral-label{display:block;margin:14px 0 6px;font-weight:600;color:var(--ink)}
.referral-reward{margin:8px 0 0;font-weight:600}
.referral-copy{margin-top:10px}
.referral-copy .referral-btn{width:100%;min-height:48px;justify-content:center;margin-top:0}
.referral-link-wrap{overflow-wrap:anywhere}
.referral-card textarea{overflow:hidden;overflow-wrap:anywhere;word-break:break-all}
.referral-card textarea#referral-text{word-break:normal}
/* -- First-job gaps: Start jobb, teknikerens notat, done state, 44 px contact targets -- */
.field-job .fj-startrow{display:flex;gap:var(--sp-2);align-items:stretch}
:root:root .app .field-mode.field-job .fj-timecard .fj-notime{flex:0 0 auto;min-height:var(--target-primary);padding:0 var(--sp-3);border-radius:var(--r-md);border:1.5px solid var(--on-night-2);background:transparent;color:var(--on-night);font:inherit;font-size:var(--fs-body);font-weight:700;cursor:pointer}
:root:root .app .field-mode.field-job .fj-timecard .fj-notime:disabled{opacity:.5;cursor:default}
:root .app .field-mode.field-job .fj-folds>.fj-note{flex:1 1 100%;min-width:0;box-sizing:border-box}
.field-job .fj-note.collapsed{padding:0;border:0;background:none;gap:var(--sp-1)}
.field-job .fj-note-open{width:100%;min-height:var(--target)}
.field-job .fj-note-first{padding:0 var(--sp-3);color:var(--ink-2);white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis}
.field-job a.fj-mail{display:inline-flex;align-items:center;min-height:48px;overflow-wrap:anywhere}
:root .app .field-job .fj-timecard .fj-startjob{flex:1 1 auto;width:auto;min-height:var(--target-primary);justify-content:center}
:root .app .field-job .fj-start-error{margin:var(--sp-2) 0 0}
.field-job .fj-note{display:grid;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.field-job .fj-note label,.field-job .fj-note h2{font-size:var(--fs-body);font-weight:700;margin:0}
.field-job .fj-note textarea{width:100%;min-height:88px;font:inherit;font-size:16px;padding:var(--sp-2) var(--sp-3);border:1.5px solid var(--line-input);border-radius:var(--r-md);background:var(--canvas);color:var(--ink);box-sizing:border-box;resize:vertical}
.field-job .fj-note p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.field-job .fj-note-row{display:flex;align-items:center;gap:var(--sp-3)}
.field-job .fj-note-msg{color:var(--success);font-weight:600}
.field-job .fj-doneview{display:grid;justify-items:center;text-align:center;gap:var(--sp-3);padding:var(--sp-5) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--success-bg);color:var(--ink)}
.field-job .fj-doneview h2{margin:0;font-size:var(--fs-title,1.5rem)}
.field-job .fj-doneview p{margin:var(--sp-1) 0 0;color:var(--ink-2)}
.field-job .fj-doneview .fj-big{width:100%;min-height:var(--target-primary)}
:root .app .field-job :is(.fj-call,.fj-address,.fj-mail,.pa-edit,.fj-doneview .button){min-height:48px;min-width:48px}
/* Sticky form footer sits flush with the bottom edge of the scrolling modal (no text peeking out below it) */
:root:root .app .modal:not(.field-sheet) .modal-body>form>.form-actions{bottom:calc(-1*var(--modal-body-pad,var(--sp-4)))}
/* «Levert av ByggVakta»: the word is an ordinary inline text link (WCAG 2.5.8 inline exception), not a 48 px block */
/* An underlined word in the footer sentence, with a 48px tap area: the padding is cancelled by an equal negative
   margin so the footer's line spacing is unchanged. */
.customer-portal .portal-footer a.portal-sent-with{display:inline-block;min-height:0;padding:16px 0;margin:-16px 0;color:inherit;text-decoration:underline;text-underline-offset:2px}
/* Started without the timer: a live state (green dot, light text), never mistaken for «Ikke startet» */
:root .app .field-mode.field-job .fj-timecard.inprogress .fj-clock-state{color:var(--on-night)}
:root .app .field-mode.field-job .fj-timecard.inprogress .fj-clock-state::before{background:var(--success)}
:root:root:root .app .field-mode.field-job .fj-timecard.inprogress .fj-act.tid{background:transparent;border:1.5px solid var(--on-night-2);color:var(--on-night);box-shadow:none}
:root:root:root .app .field-mode.field-job .fj-timecard.inprogress .fj-act.tid :is(*,svg){color:var(--on-night);-webkit-text-fill-color:var(--on-night)}

/* Funnet-rapporten (#found): one hero number, calm rows, nothing green when nothing was found. */
.app .fr{display:grid;gap:var(--sp-4);max-width:640px;margin:0 auto;padding-bottom:var(--sp-6);min-width:0}
.app .fr-title{margin:0;font-family:var(--font-display);font-size:var(--fs-title);font-weight:700}
.app .fr-head{display:grid;gap:var(--sp-1)}
.app .fr-months{display:flex;justify-content:space-between;gap:var(--sp-3)}
.app .fr-months:empty{display:none}
.app .fr .fr-month-btn{min-height:var(--target);padding:0 var(--sp-2);margin-left:calc(-1 * var(--sp-2));color:var(--ink-2)}
.app .fr .fr-month-btn.next{margin-left:auto;margin-right:calc(-1 * var(--sp-2))}
.app .fr-hero{display:grid;gap:var(--sp-1);justify-items:start;padding:var(--sp-4);background:var(--paper);border-radius:var(--r-lg)}
.app .fr-hero-label{font-size:var(--fs-meta);color:var(--ink-2)}
.app .fr-hero .money{font-family:var(--font-display);font-stretch:72%;font-weight:800;font-size:var(--fs-display);letter-spacing:.01em;line-height:1}
.app .fr-hero .money.money-total{color:var(--success)}
.app .fr-hero.zero .money{color:var(--ink-2)}
.app .fr-hero-sub,.app .fr-note{font-size:var(--fs-body);color:var(--ink-2)}
.app .fr .fr-toggle,.app .fr .fr-how{min-height:var(--target);justify-self:start;padding:0 var(--sp-2);margin-left:calc(-1 * var(--sp-2));font-size:var(--fs-body);color:var(--ink-2)}
.app .fr .fr-toggle[aria-expanded=true] svg,.app .fr .fr-how[aria-expanded=true] svg{transform:rotate(180deg)}
.app .fr .fr-expand::after{transform:rotate(90deg);transition:transform .15s}
.app .fr .fr-expand.open::after{transform:rotate(-90deg)}
.app .fr-hero .fr-price{display:block;margin:var(--sp-2) 0 0;padding:0;background:none;font-size:var(--fs-body);color:var(--ink-2)}
.app .fr-hero .fr-multiple{color:var(--ink);font-size:var(--fs-body)}
.app .fr-list .list-row{min-height:var(--target)}
.app .fr-list .fr-sub{padding-left:var(--sp-6);background:var(--surface-sunk)}
.app .fr-unknown,.app .fr-none{font-size:var(--fs-body);color:var(--ink-2)}
.app .fr-hours{font-variant-numeric:tabular-nums;font-weight:700}
.app .fr-sec{display:grid;gap:var(--sp-2)}
.app .fr-h{margin:0;font-family:var(--font-display);font-weight:700;font-size:var(--fs-meta);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.app .fr-make{min-height:var(--target);margin-top:var(--sp-2);justify-self:start}
.app .fr-inline{display:inline}
.app .fr-price{display:grid;gap:var(--sp-1);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-lg);background:var(--surface-sunk)}
.app .fr-multiple{font-size:var(--fs-title);font-weight:700}
.app .fr-how-text{margin:0;padding-left:var(--sp-5);display:grid;gap:var(--sp-2);font-size:var(--fs-body);color:var(--ink-2)}
.app .hm-report,.app .found-report-open{min-height:var(--target);justify-self:start}
.app .hm-found .hm-times{display:block;margin-top:var(--sp-1);color:var(--ink);font-weight:700}
.app .fr-hero .fr-multiple{display:block}

.app .fr .fr-month-btn,.app .fr .fr-month-btn:is(:hover,:focus,:focus-visible){text-decoration:none}
.app .hm-found .hm-found-line{display:block}
.app .fr .fr-nowrap,.app .fr .fr-hours,.app .fr .money{white-space:nowrap}
/* Faktura: utstedelse, betalingsinformasjon og firmaidentitet (b3) */
.form-grid>.form-section,.form-grid>.form-wide{grid-column:1/-1}
.form-section{font-size:var(--fs-title);font-weight:600;color:var(--ink-2);margin:var(--sp-5,24px) 0 var(--sp-2,8px);padding-top:var(--sp-4,16px);border-top:1px solid var(--line)}
.settings-form>.callout{margin-bottom:var(--sp-4,16px)}
.inv-gap-list{margin:6px 0 0;padding-left:20px}
.inv-gap-list li{margin:2px 0}
.inv-issue{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4,16px);margin:0 0 22px;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-3,12px)}
.inv-issue h3{margin:0;font-size:var(--fs-title);color:var(--ink-2)}
.inv-issue p{margin:0}
.inv-issue>.button{justify-self:start}
.inv-confirm{display:grid;gap:var(--sp-3,12px);padding:var(--sp-3,12px);border-radius:var(--r-md);background:var(--warning-bg)}
.inv-confirm-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2,8px)}
.inv-pay{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0 0 22px;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--line)}
.inv-pay>div{background:var(--surface,#fff);padding:12px 14px;min-width:0}
.inv-pay dt{font-size:var(--fs-meta);color:var(--ink-3,var(--ink));margin:0}
.inv-pay dd{margin:4px 0 0;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-2);overflow-wrap:anywhere}
.invoice-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2,8px)}
.invoice-actions>.inline-note{flex-basis:100%;margin-top:4px}
.portal-invoice{display:grid;gap:10px}
.portal-pay{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin:0}
/* :not(#x): telefonens minstestørrelse for dd bruker samme triks og ville ellers gjort beløpet like lite som kontonummeret. */
.customer-portal .portal-pay>div:first-child dd:not(#x){font-size:1.5rem;line-height:1.2}
.portal-pay .copy-value{display:flex;justify-content:space-between;flex-wrap:nowrap}
.portal-pay dt{font-size:var(--fs-meta);margin:0}
.portal-pay dd{margin:2px 0 0;font-weight:700;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.portal-invoice>.button{justify-self:start}
.portal-pay-to{margin:.25rem 0 0;color:var(--ink-2,#334);font-size:.95rem}
.copy-value{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.copy-btn{font:inherit;font-size:var(--fs-meta,.8rem);font-weight:600;min-height:32px;padding:2px 10px;border-radius:var(--r-pill,999px);border:1px solid var(--line,#d7d2c8);background:var(--surface,#fff);color:var(--ink-2,#334);cursor:pointer}
.copy-btn:focus-visible{outline:2px solid var(--focus,#c2410c);outline-offset:2px}

/* ---- b1 2026-11-01: one Hjem list, first-run steps, quote lines with labels and a live sum ---- */
.badge:where(.field_done){background:var(--success-bg);color:var(--success)}
.timeline-dot.field_done{background:var(--success)}
.hm-need-done{display:flex;gap:6px;align-items:flex-start;font-size:var(--fs-meta);font-weight:600;line-height:1.35;color:var(--on-night)}
.hm-need-done svg{flex:none;margin-top:1px}
.hm-need-row-cta{font-size:var(--fs-meta);font-weight:700;color:var(--hivis);margin-top:2px}
.hm-need-leadrow{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-3);min-width:0}
.hm-need-leadrow .hm-need-lead{flex:1;min-width:0}
.hm-need-lead .badge{justify-self:start}
.hm-need-row .badge{flex:none}
.hm-need-day{cursor:default}
.app .hm-need .button.hm-day-go{flex:none;min-height:var(--target);background:transparent;color:var(--on-night);border:1px solid var(--night-line)}
.hm-need-foot{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);padding-top:var(--sp-2);border-top:1px dashed var(--night-line)}
.hm-need-all{min-height:var(--target);padding:0;border:0;background:none;color:var(--hivis);font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.hm-setup{gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper)}
.hm-setup-top{display:flex;gap:var(--sp-3);align-items:flex-start}
.hm-setup-top>div{flex:1;min-width:0}
.hm-setup-top .mascot{width:56px;max-width:56px;height:auto;flex:none;margin:0;animation:none}
.hm-setup-lead{margin:var(--sp-1) 0 0;color:var(--ink-2);font-size:var(--fs-body)}
.hm-steps{list-style:none;margin:0;padding:0;display:grid}
.hm-step{display:flex;align-items:center;gap:var(--sp-3);min-height:var(--target-primary);padding:var(--sp-2) 0;border-top:1px solid var(--line)}
.hm-step-mark{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:2px solid var(--line-strong,var(--line));font-weight:700;font-size:var(--fs-meta);color:var(--ink-2)}
.hm-step.done .hm-step-mark{background:var(--success);border-color:var(--success);color:#fff}
.hm-step-text{flex:1;min-width:0;display:grid;gap:2px}
.hm-step-text strong{font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.hm-step.done .hm-step-text strong{color:var(--ink-2);text-decoration:line-through;text-decoration-color:var(--ink-3)}
.hm-step-text small{color:var(--ink-2);font-size:var(--fs-meta)}
.hm-step .button.hm-step-go{flex:none;min-height:var(--target)}
.hm-setup.compact{padding:var(--sp-3) var(--sp-4)}
.hm-setup-line{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin:0;color:var(--ink-2)}
.hm-setup-line strong{color:var(--ink)}
.hm-job .badge{flex:none}
.newjob-customer{display:grid;gap:var(--sp-3);margin:0 0 var(--sp-3);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md,10px)}
.newjob-customer legend{padding:0 var(--sp-1);font-weight:700}
/* quote lines */
.quote-lines-edit{display:grid;gap:var(--sp-2)}
.quote-line-input{grid-template-columns:minmax(0,3fr) .8fr 1fr .7fr 30px;align-items:end}
.ql-field{display:grid;gap:4px;min-width:0;margin:0}
.ql-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ql-line-sum{grid-column:1/-1;font-size:var(--fs-meta);color:var(--ink-2);font-variant-numeric:tabular-nums}
.quote-live-total{display:grid;gap:var(--sp-1);margin-top:var(--sp-2);padding:var(--sp-3);border-radius:var(--r-md,10px);background:var(--neutral-bg);font-variant-numeric:tabular-nums}
.quote-live-total>span{display:flex;justify-content:space-between;gap:var(--sp-3)}
.quote-live-total .qlt-total{padding-top:var(--sp-1);border-top:1px solid var(--line);font-size:var(--fs-title)}
.quote-live-total .qlt-total strong{font-weight:800}
@media (max-width:760px){
 .quote-line-input{grid-template-columns:1fr 1fr 1fr 44px;align-items:end}
 .quote-line-input>.ql-desc{grid-column:1/5}
 .ql-label{position:static;width:auto;height:auto;clip:auto;font-size:var(--fs-meta);font-weight:600;color:var(--ink-2)}
 .quote-line-input .ql-remove{width:44px;height:44px}
 .hm-setup-line{flex-wrap:wrap}
}
.hm-need-day{flex-wrap:wrap}
.hm-need-day .hm-need-row-main{flex:1 1 200px}
@media (max-width:760px){.app .hm-need .button.hm-day-go{flex:1 1 100%}}
.quote-live-total{position:sticky;bottom:0;z-index:2;box-shadow:0 -6px 12px -8px rgba(0,0,0,.25)}
.app .hm-need .button.hm-day-go{width:auto;margin:0}
@media (max-width:760px){.app .hm-need .button.hm-day-go{width:100%}}

/* b1 round 2: the day row looks like every other row; the sum lives in the sheet footer. */
.quote-live-total{position:static;box-shadow:none;flex:1 1 100%;display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-4);margin:0;padding:var(--sp-2) var(--sp-3)}
.quote-live-total>.qlt-part{flex:1 1 0;min-width:max-content;display:flex;flex-direction:column;gap:0;justify-content:flex-start;font-size:var(--fs-meta)}
.quote-live-total .qlt-part>span{color:var(--ink-2)}
.quote-live-total .qlt-part strong{white-space:nowrap}
.quote-live-total .qlt-total{padding-top:0;border-top:0;text-align:right;font-size:var(--fs-meta)}
.quote-live-total .qlt-total strong{font-size:var(--fs-title);line-height:1.15}
.quote-line-input .ql-remove{border:1px solid var(--line);border-radius:var(--r-md,10px)}
.hm-cols-setup{display:block}
.hm-cols-setup .hm-main{max-width:760px}
@media (max-width:760px){
 .hm-setup-line{flex-wrap:nowrap}
 .hm-setup-line .hm-step-go{flex:none}
 .hm-found-more{display:none}
}
@media (min-width:761px){.calendar-job>.badge{position:absolute;top:8px;right:8px}}
.app select[multiple]{background-image:none;padding:var(--sp-2);height:auto;overflow-x:hidden}
.app select[multiple] option{white-space:normal;padding:6px var(--sp-2);border-radius:6px}
.modal .form-actions>.quote-live-total{order:-5}
/* b1 round 3 */
.hm-cols-setup .hm-main{max-width:none}
.app .hm-nums .hm-tile{align-content:start}
.app .hm-nums .hm-tile.jobs .hm-num{font-size:clamp(28px,8vw,34px)}
.hm-job-name,.hm-job-title{white-space:normal;overflow:visible;text-overflow:clip;-webkit-line-clamp:unset}
.mobile-menu{position:relative}
.menu-badge{position:absolute;top:2px;right:0;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--hivis);color:var(--hivis-ink);font-size:12px;font-weight:800;line-height:18px;text-align:center}
.quote-line-input input{scroll-margin-bottom:64px}
@media (max-width:760px){.app .hm-nums .hm-tile .hm-cap{min-height:2.4em}}
.hm-job-main>.badge{justify-self:start;margin-top:2px}
.app select[multiple] option:checked{background:linear-gradient(var(--accent-tint),var(--accent-tint));color:var(--ink);font-weight:700}
.hm-rail,.hm-rail>*,.hm-jobs,.hm-jobs>li{min-width:0}
.hm-jobs{grid-template-columns:minmax(0,1fr)}

/* OWNER-1: the attention fix leads, the rest sits in one row on a desk; the job says why it was opened. */
@media (min-width:768px){
body .app .attention-card .attention-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}
body .app .attention-card .attention-controls .button{width:100%;grid-column:auto}
.app .attention-fix .af-go{justify-self:start;width:auto;min-width:220px}
}
.app .job-attention-reason{margin:0 0 var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);background:var(--warning-bg);color:var(--ink)}
.app .job-attention-reason strong{display:block;font-weight:700}
.app .job-attention-reason p{margin:var(--sp-1) 0 0;color:var(--ink-2)}
/* OWNER-6: a line from the technician shows its whole text, and a price only the owner can set is visibly open. */
.quote-line-input textarea{width:100%;padding:9px;min-width:0;font:inherit;resize:vertical}
.ql-need .ql-cap,.ql-need .ql-label{color:var(--warning,var(--ink));font-weight:700}
.ql-need input{border-color:var(--warning,var(--ink));background:var(--warning-bg)}
.app .attention-panel .attention-more{padding:var(--sp-3) var(--sp-4)}
/* Hjem keeps one primary button: the fix leads by weight, and the card's other controls step back. */
body .app .attention-card .af-go{border-color:var(--ink);font-weight:700;color:var(--ink)}
body .app .attention-card .attention-controls .button:not(.ac-open){border-color:var(--line);background:transparent;box-shadow:none;color:var(--ink-2);font-weight:500;font-size:var(--fs-meta);white-space:nowrap;padding-inline:var(--sp-1);min-height:var(--target)}
/* A deadline that has passed is visible at a glance, not only in its chip. */
.app .attention-card:has(.urgency-overdue){border-left:4px solid var(--danger)}
@media (max-width:767px){
.quote-line-input{align-items:end}
.quote-line-input .icon-button{min-width:44px;min-height:44px}
.quote-line-input{grid-template-columns:1fr 1fr 1fr 44px}
}

/* Older history outside the snapshot, and the owner's data controls */
.history-more{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);align-items:center;margin-top:var(--sp-4);color:var(--ink-3)}
.history-more p{margin:0;flex:1 1 220px}
.history-more-error{color:var(--danger)}
.customer-finder{margin-bottom:var(--sp-3)}
.customer-finder .history-more{margin-top:var(--sp-2)}
.data-panel{display:grid;gap:var(--sp-4);max-width:720px}
.data-card{padding:var(--sp-5);display:grid;gap:var(--sp-3)}
.data-card h2,.data-card p{margin:0}
.data-actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:center}
.data-blockers ul{margin:var(--sp-1) 0 0;padding-left:var(--sp-5)}
.erasure-lists{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--sp-4);margin-bottom:var(--sp-4)}
.erasure-lists h3{margin:0 0 var(--sp-2)}
.erasure-lists ul{margin:0;padding-left:var(--sp-5)}
.data-panel{margin-top:var(--sp-5)}
.data-card{margin:0}
:root:root:root .search input:focus,:root:root:root .search input:focus-visible{outline:none;box-shadow:none;border-color:transparent}
.customer-finder-list{list-style:none;margin:var(--sp-2) 0 0;padding:0;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.customer-finder-list li+li{border-top:1px solid var(--line)}
.customer-finder-list button{display:grid;width:100%;min-height:48px;padding:var(--sp-2) var(--sp-3);background:var(--surface);border:0;text-align:left;cursor:pointer}
.customer-finder-list button:hover{background:var(--neutral-bg)}
.customer-finder-list small{color:var(--ink-3)}
:root:root:root dialog .button.destructive.filled:not(:disabled){background:var(--danger);border-color:var(--danger);color:var(--surface)}
:root:root:root dialog .button.destructive.filled:not(:disabled) :is(span,svg){color:var(--surface)}
:root:root:root .data-card .button.destructive.filled:not(:disabled){background:var(--danger);border-color:var(--danger);color:var(--surface)}
:root:root:root .data-card .button.destructive.filled:not(:disabled) :is(span,svg){color:var(--surface)}
:root:root:root .button.destructive.filled:disabled{background:var(--neutral-bg);border-color:var(--line);color:var(--ink-3)}
:root:root:root .button.destructive.filled:disabled :is(span,svg){color:var(--ink-3)}
:root:root:root .modal .modal-body>form>.form-actions{padding:var(--sp-3) var(--sp-4) var(--sp-4)}
.history-count{margin:var(--sp-2) 0 var(--sp-3);color:var(--ink-3);font-size:var(--fs-meta)}
.data-blockers{margin-bottom:var(--sp-4)}
.erasure-final{margin:0 0 var(--sp-3);color:var(--danger)}
.day-current{white-space:nowrap}
.customer-erased-actions:not(:has(button)){display:none}
.customer-finder-hint{margin:var(--sp-2) 0 0;color:var(--ink-3);font-size:var(--fs-meta)}

/* Public demo only: the notice with side switch, the guide sheet and the marked row (PublicDemo.jsx). */
.demo-note{color:var(--ink-2,var(--ink));flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);justify-content:space-between}
.demo-note .dn-text{display:inline-flex;align-items:center;gap:6px;min-width:0}
.dn-tools{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3)}
.dn-side{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:var(--surface);padding:2px}
.dn-side button{min-height:40px;padding:0 14px;border:0;border-radius:999px;background:transparent;color:var(--ink);font:inherit;font-weight:600;cursor:pointer}
.dn-side button[aria-pressed="true"]{background:var(--ink);color:var(--surface)}
.dn-link{min-height:40px;display:inline-flex;align-items:center;border:0;background:none;padding:0 2px;color:var(--ink);font:inherit;text-decoration:underline;cursor:pointer}
.dn-link.strong{font-weight:700}
.demo-guide{position:fixed;z-index:50;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:var(--sp-2);max-height:62vh;max-height:62dvh;overflow-y:auto;padding:var(--sp-3) var(--sp-4) calc(var(--sp-3) + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line);border-radius:18px 18px 0 0;box-shadow:0 -10px 34px rgba(16,24,40,.2);color:var(--ink)}
.demo-guide h2{margin:0;font-size:1.3rem;line-height:1.2;outline:none}
.demo-guide p{margin:0;line-height:1.45}
.dg-report{margin:0;display:flex;gap:var(--sp-3);align-items:center;padding:var(--sp-2);background:var(--accent-tint);border-radius:10px;font-weight:600;line-height:1.35}
.dg-report img{flex:none;width:72px;height:72px;object-fit:cover;border-radius:8px}
.dg-top{display:flex;align-items:center;gap:var(--sp-2)}
.dg-progress{font-size:var(--fs-meta);font-weight:700;color:var(--ink-3)}
.dg-dots{display:inline-flex;gap:4px}
.dg-dots i{width:22px;height:4px;border-radius:2px;background:var(--line)}
.dg-dots i.on{background:var(--accent)}
.dg-skip{margin-left:auto;min-height:44px;border:0;background:none;padding:0 2px;color:var(--ink-3);font:inherit;font-size:var(--fs-meta);text-decoration:underline;cursor:pointer}
.dg-actions{display:flex;gap:var(--sp-2)}
.dg-actions .button{flex:1;min-height:52px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.dg-actions .button.secondary{flex:0 0 auto}
.dg-link{align-self:center;min-height:44px;border:0;background:none;color:var(--ink);font:inherit;text-decoration:underline;cursor:pointer}
.dg-sum{margin:0;display:grid;gap:4px}
.dg-sum div{display:flex;justify-content:space-between;gap:var(--sp-3)}
.dg-sum dt{font-weight:400}
.dg-sum dd{margin:0;font-variant-numeric:tabular-nums;white-space:nowrap}
.dg-sum .dg-extra{font-weight:700}
.dg-sum .dg-extra dt{font-weight:700}
.dg-sum .dg-total{border-top:1px solid var(--line);padding-top:4px;font-weight:700}
.dg-sum .dg-total dt{font-weight:700}
.dg-sum .dg-gross{font-size:var(--fs-meta);color:var(--ink-3)}
body.demo-guide-on main{padding-bottom:calc(62vh + var(--sp-4))}
/* What each step is about, and nothing that belongs to a later or another part of the day. */
body.demo-step-1 .fj-doneview,body.demo-step-3 .money-summary,body.demo-step-3 .mny-bar,body.demo-step-3 .finance-advanced,body.demo-step-3 main>.inline-note{display:none}
/* Step 1 is the moment he reports it: the answer comes in step 2, so the row does not say «Godkjent» yet. */
body.demo-step-1 .fj-extra-row .callout-title{font-size:0}
body.demo-step-1 .fj-extra-row .callout-title::before{content:'Meldt til kontoret';font-size:var(--fs-body)}
body.demo-step-2 main{display:none}
.demo-replay{padding:var(--sp-4);max-width:720px}
.dr-amount{display:grid;justify-items:end;gap:2px;flex:none}
.dr-amount strong{font-family:var(--font-figure,inherit);font-size:1.6rem;line-height:1.1;white-space:nowrap}
.dr-amount small{color:var(--hivis-ink,var(--ink-3))}
.demo-spot{outline:3px solid var(--accent);outline-offset:3px;border-radius:12px}
/* A table row draws no outline of its own, only a stray line along its top. */
tr.demo-spot{outline:none}
tr.demo-spot td{background:var(--hivis-bg)}
.demo-replay .dq-actions{margin-top:var(--sp-3)}
.demo-replay .dq-actions .button{width:100%}
@media (max-width:760px){.demo-note{gap:var(--sp-1) var(--sp-2);padding-block:var(--sp-2)}.dn-side button{min-height:36px;padding:0 10px}.dn-tools{gap:var(--sp-2);flex-wrap:nowrap}.dn-link{min-height:36px;white-space:nowrap}}
.demo-blocked h1{text-wrap:balance}
@media (min-width:761px){
 .demo-guide{left:auto;right:24px;bottom:24px;width:400px;max-height:calc(100vh - 48px);border:1px solid var(--line);border-radius:16px}
 body.demo-guide-on main{padding-bottom:var(--sp-6)}
}
@media (min-width:1200px){
 body.demo-guide-on main{padding-right:440px}
}
.fh-offline .fh-saved-at{margin-top:var(--sp-1,4px)}
.fh-stuck-why{display:block;font-size:var(--fs-body,16px);color:var(--ink);margin-top:2px}
.login-unsent{margin-bottom:var(--sp-4,16px)}
.jd-offline .fd-line{display:block}
/* Offline truth, round 2 */
:root .app .field-home .fh-flash.sending{background:var(--hivis-bg);color:var(--ink)}
:root .field-mode.field-home .next-job-card:not(.empty) .nj-date{margin:0;color:var(--hivis);font-weight:800;font-size:var(--fs-body)}
.nj-date::first-letter{text-transform:uppercase}
.fh-stuck-job{display:block;font-weight:600;color:var(--ink)}
.fs-saved-icon{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;background:var(--hivis-bg);color:var(--ink);border:2px solid var(--hivis)}
.field-sheet .fs-done[data-state=queued],.field-sheet .fs-done[data-state=queued] span:not(.fs-saved-icon){color:var(--ink)}
.login-page.pub .login-card .login-unsent{margin:0 0 var(--sp-6,24px)}
.fh-problem .fh-stuck-delete{justify-self:start;min-height:48px;margin-top:var(--sp-3,12px);padding-inline:var(--sp-2,8px);background:transparent;border:0;box-shadow:none;text-decoration:underline;font-weight:600;color:var(--ink-2)}
:root:root:root .app .field-mode.field-job .fj-bar .button .fj-badge{color:var(--on-night);-webkit-text-fill-color:var(--on-night)}
:root:root .app .field-mode.field-job .fj-timecard.running .fj-clock-state{color:var(--on-night)}
@media (min-width:1000px){
.field-home:has(.fh-problem)>.next-job-card{grid-row:auto}
:root .field-mode.field-home>.next-job-card{max-width:720px}
:root .app .field-mode.field-job>.fj-bar{margin:0 0 var(--sp-3);padding:var(--sp-4);background:var(--surface)}
}
/* Fakturaen på vei til kunden */
.inv-share,.inv-send{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-3,12px)}
.inv-share-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2,8px)}
/* 360 px: a nowrap label made the grid column as wide as the longest button (341 px) and pushed the block out of the dialog. The column may shrink and a long label may wrap. */
.inv-share-actions .button{flex:1 1 auto;min-height:var(--target);min-width:0;max-width:100%;white-space:normal;text-align:center;line-height:1.25;padding-block:8px}
.inv-share-note{display:flex;gap:var(--sp-2,8px);align-items:flex-start;color:var(--ink-2);font-weight:600}
.inv-share-note svg{flex-shrink:0;margin-top:3px}
.inv-share-answer{display:grid;gap:var(--sp-3,12px)}
.inv-share-answer:empty{display:none}
.inv-share-answer textarea{width:100%;resize:none;overflow-wrap:anywhere;font-size:var(--fs-meta)}
/* Quote link by e-mail and new customer inside the job form */
.qm{display:grid;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--line);border-radius:12px}
.qm>*{margin:0}
.qm h3{font-size:var(--fs-body);font-weight:700}
.qm-head{display:grid;gap:var(--sp-1);margin:0}
.qm-head div{display:grid;grid-template-columns:6.5rem minmax(0,1fr);gap:var(--sp-2)}
.qm-head dt{color:var(--ink-2);font-weight:400}
.qm-head dd{margin:0;overflow-wrap:anywhere}
.qm-body{max-height:none;overflow:visible;margin:0;padding:var(--sp-3);background:var(--surface-sunk);border-radius:8px;font:inherit;font-size:var(--fs-meta);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.qm>.button{justify-content:center;min-height:var(--target-primary)}
.qm-send{position:sticky;bottom:var(--sp-2);z-index:1;box-shadow:0 0 0 8px var(--surface),0 -16px 14px 6px var(--surface)}
.qm-state{display:flex;gap:var(--sp-2);align-items:flex-start;font-weight:600}
.qm-state svg{flex:none;margin-top:2px;color:var(--success)}
.pa-warning-line{padding:var(--sp-2) var(--sp-3);gap:var(--sp-1)}
.pa-warning-line summary{gap:var(--sp-2);font-weight:600;cursor:pointer;list-style:none}
.pa-warning-line summary::-webkit-details-marker{display:none}
.pa-warning-line summary span{flex:1}
.pa-warning-line summary em{font-style:normal;font-weight:500;text-decoration:underline;white-space:nowrap}
.pa-warning-line[open] summary>svg:last-child{transform:rotate(90deg)}
.jc-more{display:grid;gap:var(--sp-3)}
.jc-more summary{min-height:48px;display:flex;align-items:center;justify-content:space-between;font-weight:600;cursor:pointer;list-style:none;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.jc-more summary::-webkit-details-marker{display:none}
.jc-more summary::after{content:'';width:9px;height:9px;margin-right:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg)}
.jc-more[open] summary::after{transform:rotate(-135deg)}
.jc-more>.field{margin-top:var(--sp-3)}
.qm-state[data-state=uncertain],.qm-state[data-state=failed]{color:var(--danger)}
@media (min-width:721px){:root:root .app .modal:not(.field-sheet) .modal-body>form>.form-actions{padding-inline:var(--modal-body-pad,var(--sp-4))}}

/* Own hours (BACKLOG 35): choose, never type. Every target at least 56 px for gloves. */
.dur{display:grid;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.dur-value{margin:0;display:flex;align-items:baseline;justify-content:center;gap:var(--sp-2);flex-wrap:wrap;min-height:48px}
.dur-value strong{font-size:2rem;line-height:1.2;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.dur-value small{font-size:var(--fs-title);color:var(--ink-2)}
.dur-value.empty strong{color:var(--ink-2);font-weight:700}
.dur-steppers{display:grid;gap:var(--sp-4);grid-template-columns:1fr}
.dur-step{display:grid;grid-template-columns:72px 1fr 72px;align-items:center;gap:var(--sp-2);text-align:center;font-weight:700;color:var(--ink);font-size:var(--fs-title)}
.dur-btn{min-height:60px;border:1.5px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font:inherit;font-size:1.75rem;font-weight:700;line-height:1;cursor:pointer;touch-action:manipulation}
.dur-btn:disabled{opacity:.4;cursor:default}
.dur-quick{display:flex;flex-wrap:wrap;gap:var(--sp-3)}
.dur-chip{min-height:56px;padding:0 var(--sp-4);font-weight:600;font-size:var(--fs-title);border-radius:var(--r-md);touch-action:manipulation}
.fs-note-chips{margin-top:var(--sp-1)}
.fs-time-why{margin:0}
.wh-context{margin:0;display:grid;gap:2px;color:var(--ink-2);font-size:var(--fs-title)}
.wh-context strong{color:var(--ink)}
.wh-context span:first-letter,.wh-cap:first-letter{text-transform:uppercase}
.wh-cap{display:inline-block}
.wh-now{margin:0;font-size:var(--fs-title);color:var(--ink-2)}
.wh-now strong{color:var(--ink)}
.wh-reasons{border:0;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.wh-reasons legend{padding:0;margin-bottom:var(--sp-2);font-weight:700;font-size:var(--fs-title);color:var(--ink)}
.wh-day-top{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}
.wh-day-top h3{margin:0;font-size:var(--fs-heading);color:var(--ink)}
.wh-day-top h3:first-letter{text-transform:uppercase}
.wh-day-top strong{font-size:var(--fs-heading);font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.wh-lines,.wh-jobs{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-3)}
.wh-line{display:grid;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
.wh-line-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-3)}
.wh-line-who{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}
.wh-line-who strong{font-size:var(--fs-title);color:var(--ink)}
.wh-line-who small{font-size:var(--fs-body);color:var(--ink-2)}
.wh-line-time{flex:none;font-size:var(--fs-heading);font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.wh-line-meta{margin:0;display:flex;flex-wrap:wrap;gap:var(--sp-1) var(--sp-2);font-size:var(--fs-body);color:var(--ink-2)}
.wh-state{display:inline-flex;align-items:center;gap:var(--sp-1);font-weight:600}
.wh-state.approved{color:var(--success)}
.wh-pending{margin:0;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);background:var(--warning-bg);color:var(--ink);font-size:var(--fs-body)}
.wh-pending.declined{background:var(--surface-sunk)}
.wh-question{display:grid;gap:var(--sp-2);padding:var(--sp-3);border-left:4px solid var(--warning);border-radius:var(--r-sm);background:var(--warning-bg);color:var(--ink);font-size:var(--fs-title)}
.wh-question p{margin:0}
.wh-answers{display:grid;gap:var(--sp-2);grid-template-columns:1fr}
.wh-answers .button{white-space:normal;width:100%}
:root:root dialog.field-sheet .modal-foot{display:flex;flex-direction:column;gap:var(--sp-2)}
:root:root dialog.field-sheet .modal-foot>.button{width:100%}
.wh-foot-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:var(--sp-2);align-items:stretch}
.wh-foot-row>.button{width:100%;min-height:64px;white-space:normal}
.wh-foot-row>.button:only-child{grid-column:1/-1}
@media (max-width:480px){:root:root .pa-pay-screen .pa-seg{grid-template-columns:repeat(2,minmax(0,1fr))}.pa-pay-screen .pa-seg-btn{min-height:48px}}
[data-testid=home-pay]{grid-column:1/-1}
:root:root .wh-foot-row>.button.tertiary{order:0}
:root:root .wh-foot-row>.button.primary{order:1}
:root:root .pa-pay-screen .pa-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
.pa-pay-screen .pa-tiles .pa-tile:first-child{grid-column:1/-1}
.pa-tile small{display:block;font-size:var(--fs-small,.875rem);color:var(--ink-2);font-weight:500;margin-top:2px}
.wh-answers .button,.wh-edit,.wh-add,.pa-day-open{min-height:56px}
.wh-trail{font-size:var(--fs-body);color:var(--ink-2)}
.wh-trail summary{min-height:44px;display:flex;align-items:center;font-weight:600;cursor:pointer}
.wh-trail ol{list-style:none;margin:0;padding:0 0 0 var(--sp-3);border-left:2px solid var(--line);display:grid;gap:var(--sp-2)}
.wh-trail li{display:grid;gap:2px}
.wh-trail time{font-size:var(--fs-meta);color:var(--ink-2)}
.wh-job{width:100%;min-height:64px;display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border:1.5px solid var(--line-input);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--fs-title);text-align:left;cursor:pointer}
.wh-job strong{grid-column:1;overflow-wrap:anywhere}
.wh-job small{grid-column:1;color:var(--ink-2);font-size:var(--fs-body)}
.wh-job svg{grid-column:2;grid-row:1 / span 2}
.wh-card{display:grid;gap:var(--sp-3);padding:var(--sp-4);border:1.5px solid var(--navy);border-radius:var(--r-lg);background:var(--surface)}
.wh-card h2{margin:0;font-size:var(--fs-heading);font-weight:800;color:var(--ink)}
.wh-card p{margin:0;font-size:var(--fs-title);color:var(--ink)}
.wh-confirmed{margin:0;display:flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:56px;font-weight:700;font-size:var(--fs-title);color:var(--success)}
.day-decline{min-height:var(--target,48px)}
@media (min-width:720px){.dur-steppers{grid-template-columns:1fr 1fr}}
/* Signed-out root (lane B14): the pilot signup leads, the login follows as the second action. */
.login-page.pub .login-pilot{display:flex;flex-direction:column;gap:var(--sp-2);text-align:left;max-width:360px;margin:0 auto}
.login-page.pub .login-pilot h1{margin:0}
.login-page.pub .login-pilot-line{margin:0;color:var(--ink-2);line-height:1.5;font-size:var(--fs-body)}
.login-page.pub .login-pilot-line a{display:inline-flex;align-items:center;min-height:var(--target,48px);color:var(--accent);font-weight:600;text-underline-offset:3px}
.login-page.pub .login-pilot .button.primary{width:100%;justify-content:center;text-decoration:none}
.login-page.pub .login-pilot-or{margin:var(--sp-3) 0 0;padding-top:var(--sp-3);border-top:1px solid var(--line,#d8dde3);font-size:var(--fs-body);font-weight:600;color:var(--ink)}
.login-page.pub .login-card form .button.secondary[data-testid=login-submit]{width:100%;justify-content:center}
/* Design review #43: light text on the orange fill (dark navy on #b34700 measured 3.38:1), and «Logg inn» at the same size as the other buttons. */
.login-page.pub .login-pilot a.button.primary,.login-page.pub .login-pilot a.button.primary :is(span,svg){color:var(--surface);background-color:var(--accent);border-color:var(--accent)}
.login-page.pub .login-card form .button.secondary[data-testid=login-submit]{font-size:var(--fs-title)}
.login-page.pub .login-card form .button.secondary[data-testid=login-submit] span{font-size:inherit}
/* B17: what remains on the job, at its top (book so the technician sees it; the quote one tap away). */
.jd-next{display:flex;flex-direction:column;gap:var(--sp-3);margin:0 0 var(--sp-5)}
.jd-next-book{padding:var(--sp-4);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:var(--r-md);background:var(--surface)}
.jd-next-book strong{display:block;font-size:var(--fs-body);color:var(--ink)}
.jd-next-book p{margin:var(--sp-1) 0 var(--sp-3);font-size:var(--fs-body);color:var(--ink-2)}
.jd-next-quote{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--target);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--fs-body);text-align:left;cursor:pointer}
.jd-next-quote span{flex:1;color:var(--ink-2)}
.jd-next-quote strong{font-weight:600}
/* Round C p1: each closeout check says if it blocks and why; optional ones are quieter. */
.fs-why{display:block;margin-top:2px;color:var(--ink-3);font-size:.9rem;line-height:1.35}
.fs-why b{color:var(--ink);font-weight:700}
.fs-optional-head{margin:var(--sp-3) 0 var(--sp-1);font-size:1rem}
.fd-checks .list-row.is-optional{border-left-color:var(--line)}
/* Round C p2: the share dialog says whether the customer has opened the quote link. */
.pa-share-opened{display:flex;align-items:center;gap:8px;margin:var(--sp-2) 0 0;font-weight:600;color:var(--ink-2)}
.pa-share-opened.is-opened{color:var(--success,#1d6b3a)}

/* ===== Vakta-first (lane V3). Paper and ink; marker = Vakta filled it, fire = needs you, go = done. ===== */
.vk{min-height:100dvh;background:var(--v-paper);color:var(--v-ink);font-family:var(--font-display);font-size:var(--v-fs-body);line-height:1.45;display:flex;flex-direction:column;font-feature-settings:"tnum" 1}
.vk button{font-family:inherit;cursor:pointer}
.vk :focus-visible{outline:3px solid var(--v-ink);outline-offset:3px}
.vk-top{display:flex;align-items:center;gap:14px;padding:18px 28px;flex:none}
.vk-top .wordmark{font-size:19px;letter-spacing:-.01em;color:var(--v-ink)}.vk-top .wordmark span{color:var(--v-ink)}
.vk-proto{font-size:12.5px;color:var(--v-ink-3);border:1px solid var(--v-hair);border-radius:999px;padding:3px 10px}
.vk-top nav{margin-left:auto;display:flex;gap:6px}
.vk-top nav a{color:var(--v-ink-2);text-decoration:none;font-size:15px;padding:10px 14px;border-radius:999px;font-weight:500}
.vk-top nav a:hover{background:rgba(20,23,31,.05);color:var(--v-ink)}
/* Mascot: docked, calm, tone from CompanionCore. */
.vk-mascot{display:flex;flex-direction:column;align-items:center;gap:10px}
.vk-mascot-face{display:block;border-radius:50%;padding:4px;background:var(--v-sheet);box-shadow:var(--v-depth-1),0 0 0 2px var(--v-hair);transition:box-shadow .3s var(--v-settle)}
.vk-mascot-face img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover}
.vk-lg .vk-mascot-face{width:112px;height:112px}.vk-sm .vk-mascot-face{width:52px;height:52px;padding:2px}
.vk-mascot small{font-size:var(--v-fs-note);color:var(--v-ink-3);font-weight:500}
.vk-sm{flex-direction:row}
.vk-mascot.tone-active .vk-mascot-face{box-shadow:var(--v-depth-1),0 0 0 3px var(--v-marker);animation:vk-breathe 2.2s ease-in-out infinite}
.vk-mascot.tone-attention .vk-mascot-face{box-shadow:var(--v-depth-1),0 0 0 3px var(--v-fire)}
.vk-mascot.tone-positive .vk-mascot-face{box-shadow:var(--v-depth-1),0 0 0 3px var(--v-go)}
@keyframes vk-breathe{50%{transform:scale(1.035)}}
/* Home */
.vk-home{flex:1;width:100%;margin:0;max-width:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:0 24px 72px;text-align:center}
.vk-home h1{font-size:var(--v-fs-display);font-weight:640;font-stretch:108%;letter-spacing:-.035em;line-height:1.02;margin:22px 0 0;color:var(--v-ink)}
.vk-lead{font-size:var(--v-fs-lead);color:var(--v-ink-2);margin:14px 0 34px;max-width:32em}
.vk-composer{display:flex;align-items:center;gap:10px;width:min(720px,100%);background:var(--v-sheet);border-radius:999px;padding:9px 9px 9px 28px;box-shadow:var(--v-depth-2);text-align:left;transition:box-shadow .25s var(--v-settle)}
.vk-composer.is-listening{box-shadow:var(--v-depth-2),0 0 0 3px var(--v-marker)}
.vk-composer input{flex:1;min-width:0;border:0;background:none;font:inherit;font-size:19px;color:var(--v-ink);padding:10px 0;outline:0;box-shadow:none;min-height:0}
.vk-composer input::placeholder{color:var(--v-ink-3)}
.vk-talk{flex:none;width:68px;height:68px;border-radius:50%;border:0;background:var(--v-ink);color:#fff;display:grid;place-items:center;transition:transform .35s var(--v-spring)}
.vk-talk:active{transform:scale(.92)}
.vk-wave{display:flex;gap:3px;align-items:center;height:26px}.vk-wave i{width:4px;height:26px;border-radius:3px;background:var(--v-marker);animation:vk-wave .9s ease-in-out infinite}.vk-wave i:nth-child(2){animation-delay:-.65s}.vk-wave i:nth-child(3){animation-delay:-.35s}.vk-wave i:nth-child(4){animation-delay:-.15s}
@keyframes vk-wave{0%,100%{transform:scaleY(.3)}50%{transform:scaleY(1)}}
.vk-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:24px;max-width:960px}
.vk-chip{display:inline-flex;align-items:center;gap:8px;min-height:48px;padding:0 14px 0 20px;border-radius:999px;border:1px solid var(--v-hair);background:transparent;color:var(--v-ink);font-size:16px;font-weight:520;transition:background .2s,transform .35s var(--v-spring)}
.vk-chip:hover{background:var(--v-sheet)}.vk-chip:active{transform:scale(.97)}.vk-chip svg{color:var(--v-ink-3)}
.vk-chip.is-urgent{background:var(--v-sheet);box-shadow:var(--v-depth-1);border-color:transparent}
.vk-chip.is-urgent::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--v-fire);margin-right:2px}
/* Working layout: chat left, the real screen right. */
.vk-work{flex:1;min-height:0;width:100%;max-width:1400px;margin:0 auto;display:grid;grid-template-columns:minmax(380px,450px) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:0;height:calc(100dvh - 74px)}
.vk-chat{display:flex;flex-direction:column;min-height:0;padding:0 16px 20px 28px}
.vk-chat-top{padding:2px 0 14px}.vk-chat .vk-mascot small{font-size:15px;color:var(--v-ink-2)}
.vk-log{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:16px;padding:4px 12px 20px 2px;margin-right:-12px;scrollbar-width:thin}
.vk-you{align-self:flex-end;max-width:86%;margin:0;background:var(--v-ink);color:#fff;padding:12px 18px;border-radius:22px 22px 6px 22px;font-size:16.5px;animation:vk-rise .5s var(--v-spring) both}
.vk-says{margin:0;font-size:17.5px;color:var(--v-ink);animation:vk-rise .5s var(--v-spring) both}
@keyframes vk-rise{from{opacity:0;transform:translateY(12px)}}
.vk-chat .vk-composer{width:100%;padding:6px 6px 6px 22px;margin-top:6px}.vk-chat .vk-talk{width:56px;height:56px}.vk-chat .vk-composer input{font-size:17px}
.vk-activity{display:flex;align-items:center;gap:12px;background:var(--v-sheet);border-radius:999px;box-shadow:var(--v-depth-2);padding:8px 8px 8px 22px;min-height:68px;font-size:18px;font-weight:560;margin-top:6px}
.vk-activity span{flex:1;animation:vk-rise .4s var(--v-spring) both}
.vk-activity button{min-height:52px;padding:0 22px;border-radius:999px;border:1.5px solid var(--v-ink);background:transparent;color:var(--v-ink);font-weight:600;font-size:16px}
.vk-pulse{width:11px;height:11px;border-radius:50%;background:var(--v-marker);box-shadow:0 0 0 2px var(--v-ink);animation:vk-breathe 1.2s ease-in-out infinite}
.vk-inline-build{display:none}
.vk-canvas{min-height:0;overflow:auto;padding:0 28px 28px 12px}
.vk-screen{background:var(--v-sheet);border-radius:32px;box-shadow:var(--v-depth-2);padding:36px 40px 30px;max-width:860px;margin:0 auto;animation:vk-canvas-in .7s var(--v-spring) both}
@keyframes vk-canvas-in{from{opacity:0;transform:translateX(26px) scale(.985)}}
.vk-screen.is-taken{box-shadow:var(--v-depth-2),0 0 0 3px var(--v-ink)}
.vk-screen-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.vk-screen-head small{font-size:15px;color:var(--v-ink-3);font-weight:500}.vk-screen-head h2{margin:2px 0 0;font-size:var(--v-fs-title);font-weight:620;letter-spacing:-.02em;font-stretch:104%;color:var(--v-ink)}
.vk-quiet{display:inline-flex;gap:8px;align-items:center;min-height:48px;padding:0 20px;border-radius:999px;border:1.5px solid var(--v-ink);background:transparent;color:var(--v-ink);font-weight:600;font-size:16px}
.vk-number{font-size:var(--v-fs-number);font-weight:640;font-stretch:112%;letter-spacing:-.04em;line-height:1.02;color:var(--v-ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.vk-number small{display:block;font-size:15px;font-weight:500;font-stretch:100%;letter-spacing:0;color:var(--v-ink-2);margin-top:8px;white-space:normal}
.vk-sum{margin:22px 0 22px}.vk-sum-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 0;color:var(--v-ink-2);font-size:16px}.vk-sum-line strong{color:var(--v-ink);font-weight:620}.vk-sum .vk-number small{display:inline;margin:0 0 0 12px}
.vk-fields{border:0;margin:0;padding:0;min-width:0}
.vk-fields .list-group,.vk-fields .co-lines{border:0;background:transparent;box-shadow:none;border-radius:0;padding:0;margin:0}
.vk-fields .co-line{padding:18px 0;border-top:1px solid var(--v-hair);border-bottom:0;background:transparent;animation:vk-rise .55s var(--v-spring) both}
.vk-fields .field{margin:0}.vk-fields .field label{font-size:14px;font-weight:540;color:var(--v-ink-2);margin-bottom:6px;display:block}
.vk-fields .field small{font-size:14px;color:var(--v-ink-2)}
.vk-fields input,.vk-fields textarea{width:100%;border:1.5px solid var(--v-hair);border-radius:var(--v-r-field);background:var(--v-sheet);font:inherit;font-size:17px;color:var(--v-ink);padding:12px 14px;min-height:50px;transition:background .5s var(--v-settle),border-color .2s;-webkit-text-fill-color:var(--v-ink);opacity:1}
.vk-fields textarea.co-desc{min-height:50px;height:50px;resize:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vk-card-yield{margin:2px 0 8px;color:var(--v-ink-2);font-size:15.5px;font-weight:540}
.vk-fields input:focus,.vk-fields textarea:focus{border-color:var(--v-ink);outline:0;background:var(--v-sheet)}
.vk-fields .co-fields{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:12px;margin-top:12px}
.vk-fields .agent-filled{background:var(--v-marker-soft);border-color:transparent}
.vk-fields .co-remove{display:none}.vk-fields .co-remove.button{min-height:36px;padding:0;margin-top:6px;border:0;background:none;box-shadow:none;color:var(--v-ink-2);font-weight:500;font-size:14.5px;text-decoration:underline;text-underline-offset:3px}.is-taken .vk-fields .co-remove{display:inline-flex}
.vk-fields>.field textarea{resize:none}
.vk-fields>.field{padding-top:14px;border-top:1px solid var(--v-hair)}
.vk-skeleton{margin:0;padding:18px 0;border-top:1px solid var(--v-hair)}.vk-skeleton i{display:block;height:50px;border-radius:var(--v-r-field);background:linear-gradient(90deg,rgba(20,23,31,.04),rgba(20,23,31,.09),rgba(20,23,31,.04));background-size:200% 100%;animation:vk-shimmer 1.3s linear infinite}.vk-skeleton i+i{margin-top:12px;width:62%}
@keyframes vk-shimmer{to{background-position:-200% 0}}
.vk-screen-foot{display:flex;align-items:center;gap:18px;margin-top:22px}.vk-screen-foot .vk-primary{flex:0 1 340px;margin:0}
.vk-note{margin:0;font-size:14px;color:var(--v-ink-2)}
.vk-mark{background:linear-gradient(transparent 8%,var(--v-marker) 8%,var(--v-marker) 92%,transparent 92%);color:inherit;padding:0 4px;margin:0 -2px;border-radius:3px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
/* Cards */
.vk-card{background:var(--v-sheet);border-radius:var(--v-r-card);box-shadow:var(--v-depth-2);padding:22px 22px 14px;display:flex;flex-direction:column;gap:14px;animation:vk-card-in .65s var(--v-spring) both;flex:none;transition:transform .35s var(--v-spring),box-shadow .25s}
.vk-card.is-open{cursor:pointer}.vk-card.is-open:hover{transform:translateY(-2px)}
@keyframes vk-card-in{from{opacity:0;transform:translateY(18px) scale(.97)}}
.vk-card-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.vk-card-kicker{display:inline-flex;gap:7px;align-items:center;font-size:15px;font-weight:600;color:var(--v-ink-2)}
.vk-card-state{font-size:14px;font-weight:600;padding:4px 11px;border-radius:999px;background:rgba(20,23,31,.05);color:var(--v-ink-2);white-space:nowrap}
.vk-card-state.fire{background:var(--v-fire-soft);color:#a33d00}.vk-card-state.go{background:var(--v-go-soft);color:var(--v-go)}.vk-card-state.marker{background:var(--v-marker-soft);color:#5c4a00}
.vk-card .vk-number{font-size:clamp(44px,4vw,54px)}
.vk-facts{margin:0;display:grid;gap:7px}.vk-facts div{display:grid;grid-template-columns:76px 1fr;gap:10px;font-size:16px}.vk-facts dt{color:var(--v-ink-3)}.vk-facts dd{margin:0;color:var(--v-ink)}
.vk-primary{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:60px;border:0;border-radius:999px;background:var(--v-ink);color:#fff;font-size:18px;font-weight:620;margin-top:4px;transition:transform .35s var(--v-spring)}
.vk-primary:active{transform:scale(.97)}
.vk-action{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:60px;border:2px solid var(--v-ink);border-radius:999px;background:transparent;color:var(--v-ink);font-size:18px;font-weight:620;margin-top:4px;transition:transform .35s var(--v-spring)}
.vk-action:active{transform:scale(.97)}
.vk-takeover{display:flex;align-items:center;justify-content:center;gap:7px;min-height:var(--target);border:0;background:none;color:var(--v-ink-2);font-size:15px;font-weight:540;border-radius:12px}
.vk-takeover:hover{color:var(--v-ink)}
.vk-card-done{display:flex;align-items:center;gap:9px;margin:2px 0 6px;color:var(--v-go);font-weight:600;font-size:16px;animation:vk-rise .5s var(--v-spring) both}
.vk-day{list-style:none;margin:0;padding:0;display:grid;gap:8px}.vk-day li{display:grid;grid-template-columns:54px 1fr auto;gap:8px;font-size:16px}.vk-day time{color:var(--v-ink-2);font-weight:600}.vk-day small{color:var(--v-ink-3);font-size:14px}
.vk-lines{list-style:none;margin:0;padding:0}.vk-lines li{display:flex;justify-content:space-between;gap:16px;padding:15px 0;border-top:1px solid var(--v-hair);font-size:17px}.vk-lines small{display:block;color:var(--v-ink-3);font-size:14px;margin-top:2px}.vk-lines strong{font-weight:600;white-space:nowrap}
.vk-catalog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:22px;padding:8px 28px 40px;align-items:start}
.vk-sheet-close,.vk-scrim{display:none}
/* Phone: no canvas; the card builds in the chat and grows into a full sheet. */
@media (min-width:861px){
 .vk-fields .co-line{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:12px;padding:14px 0}
 .vk-fields .co-fields{margin:0;grid-template-columns:76px 1fr 66px;gap:8px}
 .vk-fields .co-remove{grid-column:1/-1;justify-self:start}
 .vk-screen{padding:30px 36px 26px}.vk-sum{margin:14px 0 16px}
 .vk-screen .vk-number{font-size:clamp(46px,4.2vw,58px)}
}
@media (max-width:860px){
 .vk-top{padding:12px 16px;gap:10px}.vk-top nav{display:none}.vk-proto{margin-left:auto;font-size:12px}
 .vk-home{justify-content:flex-start;padding:18px 16px 0;align-items:stretch}.vk-home .vk-mascot{align-self:center}
 .vk-home h1{font-size:40px;margin-top:16px}.vk-lead{font-size:19px;margin:10px auto 24px}
 .vk-home .vk-chips{order:3;flex-direction:column;align-items:stretch;margin:0 0 150px;gap:8px;flex-wrap:nowrap;max-width:none}
 .vk-chip{justify-content:space-between;min-height:56px;font-size:17px;padding:0 16px 0 18px;background:var(--v-sheet);border-color:transparent;box-shadow:var(--v-depth-1)}
 .vk-chip.is-urgent::before{margin-right:-2px}.vk-chip svg{margin-left:auto}
 .vk-home .vk-composer{position:fixed;left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));width:auto;z-index:5}
 .vk-composer{padding-left:22px}
 .vk-work{display:block;height:calc(100dvh - 62px)}
 .vk-activity{font-size:16.5px;padding-left:18px;white-space:nowrap}.vk-activity button{padding:0 18px}.vk-facts div{grid-template-columns:62px 1fr;font-size:15.5px}
 .vk-chat{height:100%;padding:0 12px 12px}.vk-chat-top{padding:0 4px 8px}
 .vk-log{margin-right:0;padding:4px 2px 14px}
 .vk-inline-build{display:block}.vk-inline-build .vk-card{padding-bottom:18px}
 .vk-canvas{display:none;padding:0}
 .vk-canvas.is-sheet{display:block;position:fixed;inset:18px 0 0 0;z-index:30;background:var(--v-sheet);border-radius:28px 28px 0 0;box-shadow:var(--v-depth-3);overflow:auto;animation:vk-sheet .6s var(--v-spring) both}
 @keyframes vk-sheet{from{transform:translateY(38%) scale(.96);opacity:.4;border-radius:44px}}
 .vk-scrim{display:block;position:fixed;inset:0;z-index:20;background:rgba(20,23,31,.34)}
 .vk-sheet-close{display:grid;place-items:center;position:absolute;right:14px;top:14px;width:48px;height:48px;border-radius:50%;border:0;background:rgba(20,23,31,.06);color:var(--v-ink);z-index:2}
 .vk-screen{box-shadow:none;background:transparent;border-radius:0;padding:24px 18px 20px;animation:none;max-width:none}.vk-screen.is-taken{box-shadow:none}
 .vk-screen-head{padding-right:56px}.vk-screen-head h2{font-size:25px}.vk-screen-head .vk-card-state,.vk-screen-head .vk-quiet{display:none}
 .vk-sum .vk-number small{display:block;margin:8px 0 0}
 .vk-fields .co-fields{display:grid!important;grid-template-columns:1fr 1.3fr .8fr!important;gap:8px}.vk-fields .co-fields>.field{grid-column:auto!important;grid-row:auto!important;order:0!important;width:auto;min-width:0}.vk-fields .field label{font-size:13px;white-space:nowrap}.vk-fields input{padding:10px;font-size:16px}
 .vk-fields input,.vk-fields textarea{font-size:16px}
 .vk-screen-foot{position:sticky;bottom:0;flex-direction:column;align-items:stretch;gap:8px;background:linear-gradient(transparent,var(--v-sheet) 22%);padding:22px 0 max(8px,env(safe-area-inset-bottom));margin-top:4px}.vk-screen-foot .vk-primary{flex:none}.vk-note{text-align:center}
 .vk-catalog-grid{grid-template-columns:1fr;padding:6px 12px 30px}
}
@media (prefers-reduced-motion:reduce){.vk *{animation:none!important;transition:none!important}}

/* Customer portal: one decision, one button. The other choice is a quiet link; the difference is the biggest thing on the page. */
.customer-portal{background:var(--v-paper);color:var(--v-ink);font-family:var(--font-display)}
.customer-portal .portal-card{background:var(--v-sheet);border:0;border-radius:32px;box-shadow:var(--v-depth-2)}
.customer-portal .portal-heading h1{font-size:var(--v-fs-title);font-weight:620;letter-spacing:-.02em;color:var(--v-ink);margin:0}
.customer-portal .portal-heading p{color:var(--v-ink-2);margin:4px 0 0}
/* Phone: amount, account, KID and the invoice PDF must fit the first screen also with a long title (test_invoice_reaches_customer_browser). */
@media (max-width:860px){.customer-portal .portal-heading:not(#x){margin-bottom:6px}}
.customer-portal .portal-top .brand-mark{background:var(--v-ink);color:#fff}
.decision-quiet{display:block;border:0;padding:0;margin:0;order:9}
.decision-quiet .decision-option{display:inline-flex;min-height:48px;align-items:center;background:none;border:0;box-shadow:none;padding:0;color:var(--v-ink-2);font-weight:520;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.decision-quiet .decision-option input{position:absolute;width:1px;height:1px;opacity:0;margin:0}
.decision-quiet .decision-option.selected:not(:focus-within){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.portal-quote.is-change-order>.portal-section-title,.portal-quote.is-change-order .portal-sub:not(summary){display:none}
.portal-delta{display:flex;flex-direction:column;gap:6px;margin:0 0 22px}
.portal-delta-label{font-size:17px;font-weight:600;color:var(--v-ink-2)}
.portal-delta-number{font-size:clamp(52px,10vw,76px);font-weight:640;font-stretch:112%;letter-spacing:-.045em;line-height:1.02;font-variant-numeric:tabular-nums;color:var(--v-ink);white-space:nowrap}
.portal-delta-sum{font-size:17px;color:var(--v-ink-2)}
.portal-still{margin:14px 0 0;color:var(--v-ink-2);font-size:15.5px}
.is-change-order .portal-total{background:none;border:0;border-top:1px solid var(--v-hair);border-radius:0;padding:14px 0 0;margin-top:16px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.is-change-order .portal-total strong{font-size:20px;font-weight:620}.is-change-order .portal-total small{color:var(--v-ink-3)}
.is-change-order .portal-change{background:var(--v-paper);border:0;border-radius:18px;padding:16px 18px}
.is-change-order .portal-change strong{font-weight:620}
.portal-lines-wrap{margin-top:16px}
.portal-lines-wrap>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:560;color:var(--v-ink-2);margin:0}
.is-change-order .portal-lines-wrap{border-top:1px solid var(--v-hair);margin-top:18px;padding-top:6px}
.is-change-order form .button.primary{min-height:60px;border-radius:999px;background:var(--v-ink);border-color:var(--v-ink);font-size:18px;font-weight:620;box-shadow:none}
.vk-note-idle{margin-top:16px}

/* Deciding: one column, the decision first; plan and questions wait underneath. */
.portal-main.is-deciding{display:flex;flex-direction:column;max-width:640px;gap:16px}
.portal-main.is-deciding>*{width:100%;max-width:none;grid-column:auto;order:5}
.portal-main.is-deciding>.portal-heading{order:1}.portal-main.is-deciding>.portal-quote{order:2}
.customer-portal .portal-card.portal-quote{background:var(--v-sheet);padding:28px;border:0;box-shadow:var(--v-depth-2)}
.is-change-order .portal-change{background:var(--v-paper);margin:0}
.is-change-order form{display:flex;flex-direction:column;gap:14px;margin-top:10px}
.quote-mode.decision-quiet{display:block;background:none;border:0;padding:0;order:9;margin:0;box-shadow:none}
.quote-mode.decision-quiet .decision-option{background:none;border:0;box-shadow:none;width:auto;justify-content:flex-start}
@media (max-width:860px){.customer-portal .portal-card.portal-quote{padding:22px 18px;border-radius:26px}.portal-delta-number{font-size:52px}.is-change-order form{padding-bottom:8px}}
.vk main.vk-work{padding:0;margin:0 auto}
.vk main.vk-home{padding-top:0}
.customer-portal .portal-main.is-deciding{display:flex!important;flex-direction:column;max-width:640px;margin:0 auto;gap:16px}
.customer-portal .portal-main.is-deciding .portal-card.portal-quote{border-radius:32px}
.is-change-order .portal-lines-wrap>summary.portal-sub{font-size:16px;margin:0;padding:0}
.is-change-order .portal-lines-wrap{margin-bottom:0}
@media (max-width:860px){.vk main.vk-home{padding:18px 16px 0}.customer-portal .portal-main.is-deciding .portal-card.portal-quote{border-radius:26px}}
/* Round-1 panel fixes: one font and a fitting size for every big number, no clipped shadows, read-only looks read-only until take-over. */
.vk-card{container-type:inline-size}
.vk-card .vk-number{font-size:clamp(34px,14.4cqw,54px)}
.vk-number>:not(small){font:inherit;letter-spacing:inherit;color:inherit}
.vk-card>.vk-facts{margin:2px 0 6px}.vk-takeover{align-self:center}
.vk-card-img{width:100%;border-radius:16px;display:block}
.vk-mascot-face{overflow:hidden}.vk-mascot-face img{transform:scale(1.45);transform-origin:50% 24%}
.vk-log{margin:0 -16px 0 -26px;padding:4px 18px 30px 28px}
.vk-canvas{padding-top:4px;padding-left:20px}
.vk-screen:not(.is-taken) .vk-fields input,.vk-screen:not(.is-taken) .vk-fields textarea{background:none;border:0;box-shadow:none;padding:2px 0;min-height:0;height:auto;opacity:1;color:var(--v-ink);-webkit-text-fill-color:var(--v-ink);border-radius:6px;resize:none}
.vk-screen:not(.is-taken) .vk-fields .agent-filled{background:var(--v-marker-soft);padding:3px 9px;width:auto;max-width:100%;field-sizing:content}
.vk-screen:not(.is-taken) .vk-fields textarea.agent-filled{width:100%;white-space:normal}
@media (min-width:861px){
 .vk-chat .vk-card{padding:18px 20px 18px}
 .vk-chat .vk-card .vk-facts,.vk-chat .vk-card .vk-takeover,.vk-chat .vk-card .vk-tapchips{display:none}
 .vk-chat .vk-card .vk-number{font-size:clamp(30px,12cqw,38px)}
}
@media (max-width:860px){
 .vk.is-talking{height:100dvh;overflow:hidden}
 .vk.is-talking .vk-work{flex:1;min-height:0;display:flex;padding:0}
 .vk-chat{flex:1;height:auto;min-width:0}
 .vk-log{margin:0 -12px;padding:4px 14px 30px}
}
@media (min-width:861px){.vk.is-talking{height:100dvh;overflow:hidden}.vk.is-talking .vk-work{flex:1;min-height:0;height:auto;grid-template-rows:minmax(0,1fr)}.vk-chat{height:100%;box-sizing:border-box}}
/* Round-2 panel fixes: the decision button is always in view, and content sliding under a sticky bar fades instead of being cut. */
.vk-screen-foot::before{content:"";position:absolute;left:0;right:0;top:-26px;height:26px;background:linear-gradient(to top,var(--v-sheet),transparent);pointer-events:none}
.is-change-order .action-bar button[type=submit]{width:100%;min-height:58px}
.vk-add-line{align-self:flex-start;display:inline-flex;align-items:center;gap:7px;background:none;border:0;padding:8px 0;font-size:15.5px;font-weight:600;color:var(--v-ink)}
.vk-sm .vk-mascot-face img{transform:scale(1.8);transform-origin:38% 22%}
.vk-mascot.tone-positive .vk-mascot-face{animation:vk-pop .7s var(--v-spring) both}
@keyframes vk-pop{0%{transform:scale(.86)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.vk-mascot.tone-positive .vk-mascot-face{animation:none}}
.is-change-order .portal-lines-wrap>summary{min-height:48px;display:flex;align-items:center}
/* V3b. The answer button sits after the fields it depends on and never floats over them; it looks off until they are done. */
[data-testid=portal-decision-form] .action-bar{position:static;background:none;border:0;box-shadow:none;padding:0;margin:6px 0 0}
body:has([data-testid=portal-decision-form] .action-bar){padding-bottom:0}
[data-testid=portal-decision-form] button[type=submit]:disabled,.is-change-order form .button.primary:disabled{background:rgba(20,23,31,.08);border-color:transparent;color:var(--v-ink-2);box-shadow:none;opacity:1;cursor:not-allowed}
.portal-answer-todo{margin:0;font-size:15.5px;color:var(--v-ink-2)}
/* The primary action stays in view while the editor's fields scroll. */
.vk-screen-foot{position:sticky;bottom:0;z-index:2;background:var(--v-sheet);padding-top:14px;padding-bottom:max(10px,env(safe-area-inset-bottom));margin-top:26px}/* 26px = the fade above it, which must not lie over the last field once scrolled to the end */
/* The canvas holds the item on desktop, so the chat only points at it. */
.vk-chat-line{display:none;align-items:center;gap:9px;margin:0;font-size:16px;font-weight:540;color:var(--v-ink-2);animation:vk-rise .5s var(--v-spring) both}
.vk-chat-line svg{color:var(--v-ink-3);flex:none}
@media (min-width:861px){.vk-chat-line{display:flex}.vk-chat .vk-card{display:none}}
/* The customer's sum behind one quiet line. */
.vk-customer-sees{font-size:15px;color:var(--v-ink-2)}
.vk-customer-sees>summary{cursor:pointer;min-height:44px;display:inline-flex;align-items:center;font-weight:540;text-decoration:underline;text-decoration-color:var(--v-hair);text-underline-offset:4px}
.vk-customer-sees>div{padding:0 0 6px}
.vk-card-lead{margin:0;font-size:clamp(26px,9cqw,32px);font-weight:620;letter-spacing:-.02em;line-height:1.12;color:var(--v-ink)}
/* Scrolled chat fades out under the header instead of being cut. */
/* B86: the top strip is fully clear, so the last edge of a dark bubble cannot sit there as a grey sliver. */
.vk-log{padding-top:44px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,transparent 16px,#000 44px);mask-image:linear-gradient(to bottom,transparent 0,transparent 16px,#000 44px)}

/* B86: the signed-in home. Cards from real data above the page that was already here. */
.vh{display:grid;gap:18px;min-width:0}
.field-home .vh{margin-bottom:6px}
.vh-head{display:flex;align-items:center;gap:14px}.vh-head h2{margin:0;font-size:clamp(23px,5.6vw,30px);font-weight:620;letter-spacing:-.02em;line-height:1.15;color:var(--v-ink)}
.vh-head .vk-mascot{flex:none}
.vh-off{margin:4px 0 0;font-size:15px;color:var(--v-ink-2);max-width:44em}
.vh-sug{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.vh-sug li{display:contents}
.vh-chip{padding:0 18px;text-align:left;line-height:1.2;max-width:100%;font-size:15.5px;cursor:pointer}
.vh-chip:hover{background:var(--v-sheet)}
.vh-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,350px),1fr));gap:16px;align-items:start}
.vh-slot{display:grid;min-width:0}
.vh-cards .vk-card{min-width:0;container-type:inline-size}
.vh-cards .vk-number{white-space:normal}
.vk-primary[disabled]{opacity:.55;cursor:default}
.vk-bridge{margin:-4px 0 0;font-size:15.5px;color:var(--v-ink-2);font-variant-numeric:tabular-nums}.vk-bridge strong{color:var(--v-ink);font-weight:620}
.vk-bridge span[aria-hidden]{padding:0 2px}
.vk-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.vk-card-why{margin:0;font-size:15.5px;color:var(--v-ink-2)}
.vk-card-error{margin:0;font-size:15.5px;font-weight:540;color:#a3200e}
.vk-send-sum{margin:0 0 4px;font-size:20px}.vk-send-sum strong{font-size:28px;font-weight:640;letter-spacing:-.02em;display:block}.vk-send-to{margin:0 0 12px;font-weight:540;overflow-wrap:anywhere}
.plan-step-card .vk-card{box-shadow:none;border:1px solid var(--v-hair);margin-bottom:8px}
/* Backlog 94. A waiting state is not a finished one: it is quiet, not green. */
.vk-card-done:has(svg[data-icon=clock]){color:var(--v-ink-2)}
@media (max-width:860px){
 /* The sticky foot no longer fades over the line above it: a clean edge says there is more, and Linje 2 stays readable. */
 .vk-screen-foot::before{display:none}
 .vk-screen-foot{border-top:1px solid var(--v-hair);margin-top:14px}
 /* Take-over on the phone: fewer fields to a row and room between them. */
 .vk-fields .co-line{padding:20px 0}
 .vk-fields .co-fields{gap:12px!important}
 .vk-fields .field label{font-size:15px}
 .vk-canvas.is-sheet .vk-fields{padding-bottom:14px}
}
/* B86: the cards come first on the phone too. The older page's phone order would otherwise put them last. */
.app .hm>.vh{order:0}
/* B86: on the phone the cards are a row you swipe, one at a time, so the page below stays near.
   L257 (B4): one whole card per screen width, so the next one starts past the right edge and is never cut by it. */
@media (max-width:640px){
 .vh-sug{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:2px 16px;scroll-padding-inline:16px}
 .vh-sug::-webkit-scrollbar{display:none}
 .vh-chip{white-space:nowrap;flex:none;max-width:none}
 .vh-cards{display:flex;align-items:stretch;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;margin:0 -16px;padding:4px 16px 18px;scroll-padding-inline:16px}
 .vh-cards::-webkit-scrollbar{display:none}
 .vh-cards>*{flex:0 0 100%;min-width:0;scroll-snap-align:start}
}

/* P125. A phone tap on Godta approves, never declines: Godta is the one big target, Avslå a separate full-width target below it. */
[data-testid=portal-decision-form]{display:flex;flex-direction:column;gap:16px}
[data-testid=portal-decision-form] .action-bar{order:8;margin:0}
[data-testid=portal-decision-form] button[type=submit]{width:100%;min-height:58px}
[data-testid=portal-decision-form] button[type=submit][data-soft-disabled=true]{background:rgba(20,23,31,.08);border-color:transparent;color:var(--v-ink-2);box-shadow:none;opacity:1;cursor:not-allowed}
/* Scroll anchoring would scroll the page by the error's height to keep the content below it still, which moves Godta away from the finger (seen with a wider font set: Godta 386 -> 258 px). The portal turns it off. */
.customer-portal,.customer-portal *{overflow-anchor:none}
/* The error sits directly under Godta (order 9), so it never pushes Godta away from the finger; Avslå moves down instead. */
[data-testid=portal-decision-form] .form-error{order:9;margin:0}
.customer-portal .decision-quiet{order:10;margin:0}
.customer-portal .decision-quiet .decision-option{display:flex;width:100%;justify-content:center;min-height:48px;box-sizing:border-box}
.customer-portal .decision-quiet .decision-option.selected:not(:focus-within){display:block}
/* The amount wraps; it never runs past the card (a wide line makes a phone zoom the page out, which moves every tap). */
.portal-delta-number{white-space:normal;overflow-wrap:anywhere;max-width:100%;min-width:0}
.portal-delta-number.is-long{font-size:clamp(30px,9vw,44px)}
/* C116c D6: the fullmakt row is one tap target: the whole label (box + text) is at least 44 x 44 px at 360-430 px. */
.customer-portal .portal-card .checkbox-label{display:flex;align-items:flex-start;gap:12px;min-height:44px;box-sizing:border-box;padding:10px 4px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.customer-portal .portal-card .checkbox-label input[type=checkbox]{margin:0;flex:none}
.customer-portal .portal-newer .button{margin-top:var(--sp-3);width:100%}
/* C137: chat plan cards. A one-card plan is the card itself: no beige bubble, no nested pane, full width on a phone, the
   confirm button in view; the model/privacy header is one line; a card skeleton shows the moment a message is sent. */
.operator-v3 .operator-message.assistant.has-card>div{background:transparent;padding:0}
.operator-plan.plan-flat{background:transparent;border:0;padding:0;margin:8px 0 4px;max-width:520px}
.operator-plan.plan-flat .plan-step-card{margin:0;padding:0;border:0;background:transparent}
.operator-plan.plan-flat .plan-note{margin:10px 4px 0;font-size:var(--fs-meta);color:var(--ink-3);line-height:1.5}
.operator-plan.plan-flat .plan-actions{margin-top:6px;justify-content:center}
.operator-plan.plan-flat .plan-actions .button{background:transparent;border:0;box-shadow:none;color:var(--ink-3);min-height:44px;font-weight:500}
.operator-plan.plan-flat .plan-flat-state{margin:0 0 8px;font-size:var(--fs-meta);color:var(--ink-3);font-weight:600}
.operator-plan.plan-flat .evidence-confirmation{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:var(--v-marker-soft,#fff6cc);font-size:15px;line-height:1.4;min-height:44px;align-items:center}
.operator-plan.plan-flat.plan-applied .vk-card{box-shadow:var(--v-depth-1,0 1px 3px rgba(20,23,31,.08));opacity:.92}
.operator-transcript .vk-card .vk-card-lead{font-size:22px;line-height:1.2;margin:0;overflow-wrap:anywhere}
.vk-card.vk-number-small .vk-number{font-size:clamp(26px,8cqw,34px);white-space:normal}
.vk-card .vk-facts dd{overflow-wrap:anywhere}
.vk-card-more{margin:-6px 0 0;font-size:14px;color:var(--v-ink-2,var(--ink-3))}
.operator-mode.operator-mode-line{display:block;padding:6px 0;border-bottom:1px solid var(--line)}
.operator-mode-line summary{display:flex;align-items:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:32px;list-style:none}
.operator-mode-line summary::-webkit-details-marker{display:none}
.operator-mode-line .operator-mode-short{display:none}
.operator-mode-line .operator-mode-more{color:var(--ink-3);overflow:hidden;text-overflow:ellipsis}
.operator-mode-line details{max-width:none}
.vk-card-skeleton{gap:12px;animation:vk-card-in .35s var(--v-spring,ease-out) both}
.vk-card-skeleton .vk-card-kicker{color:var(--v-ink-2,var(--ink-3))}
.vk-sk{display:block;border-radius:10px;background:linear-gradient(90deg,rgba(20,23,31,.06) 25%,rgba(20,23,31,.11) 50%,rgba(20,23,31,.06) 75%);background-size:200% 100%;animation:vk-sk 1.3s linear infinite}
.vk-sk-title{height:24px;width:70%}.vk-sk-number{height:48px;width:48%}.vk-sk-row{height:16px;width:88%}.vk-sk-row.short{width:60%}.vk-sk-button{height:52px;width:100%;border-radius:14px;margin-top:4px}
@keyframes vk-sk{from{background-position:200% 0}to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.vk-sk{animation:none}}
@media (max-width:640px){
 .operator-v3 .operator-message.assistant.has-card .bvc-message-avatar{display:none}
 .operator-v3 .operator-message.assistant.has-card>div{max-width:100%}
 .operator-plan.plan-flat{max-width:100%;margin:4px 0}
 .operator-plan.plan-flat .vk-card{padding:18px 18px 10px;gap:10px}
 .operator-transcript .vk-card .vk-card-lead{font-size:20px}
 .operator-v3 .operator-mode-line .operator-mode-more{display:none}
 .operator-v3 .operator-mode-line .operator-mode-short{display:inline;color:var(--ink-3)}/* RC137 M5: the privacy controls stay visible on phone */
 .operator-v3 .operator-disclaimer{display:none}
}

/* C137: chat card facts share one label column sized to the longest label, so no label is cut */
.operator-thread .vk-card .vk-facts,.operator-transcript .vk-card .vk-facts{grid-template-columns:max-content minmax(0,1fr);column-gap:14px}
.operator-transcript .vk-card .vk-facts div{display:contents}
.operator-transcript .vk-card .vk-facts dt{max-width:9.5em}
/* C137 polish: emphasis by weight and size, not a marker fill. The hero stays plain ink; fields Vakta filled get a quiet accent underline. */
.operator-transcript .vk-card .vk-number .vk-mark,.operator-transcript .vk-card .vk-number mark{background:none;color:var(--v-ink);padding:0}
.operator-transcript .vk-card .vk-number{font-weight:700;letter-spacing:-.045em;font-variant-numeric:tabular-nums lining-nums}
.operator-transcript .vk-card .vk-facts .vk-mark{background:none;color:var(--v-ink);padding:0;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--v-accent,#e8590c) 45%,transparent);text-decoration-thickness:2px;text-underline-offset:4px;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.operator-transcript .vk-card .vk-facts dt{font-size:14.5px;letter-spacing:.01em}
@media (min-width:900px){.operator-v3 .operator-transcript{max-height:calc(100dvh - 330px)}.operator-transcript .vk-card .vk-number{font-size:clamp(38px,3.4vw,46px)}}
/* C137 round 3: fields Vakta filled carry a small accent dot (not an underline that reads as a link); a one-card plan keeps
   «Avvis» on the note line right under the card, so the whole decision is read in one place and is not clipped by the composer. */
.operator-transcript .vk-card .vk-facts .vk-mark{text-decoration:none}
.operator-transcript .vk-card .vk-facts .vk-mark::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--v-accent,#e8590c);margin:0 8px 2px 0;vertical-align:middle}
.operator-plan.plan-flat .plan-step-card .plan-note{padding-right:92px;margin-bottom:0}
.operator-plan.plan-flat:has(.plan-note) .plan-actions{margin-top:-34px}
.operator-plan.plan-flat .plan-actions{justify-content:flex-end;padding:0;gap:0}
.operator-plan.plan-flat .plan-actions button{min-height:36px;padding:4px 12px;background:none;border:0;box-shadow:none;color:var(--v-ink-2);font-size:15px;text-decoration:underline;text-underline-offset:3px}

/* VOICE (218): hold-to-talk, gloves >= 56 px; the transcript is always an editable card first. */
.operator-v3 .operator-composer>button.voice-mic{width:56px;height:56px;min-width:56px;min-height:56px;border-radius:50%;background:var(--surface-2,#eef1f4);color:var(--accent);border:2px solid var(--accent);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;transition:transform .15s,background .15s}
.operator-v3 .operator-composer>button.voice-mic.phase-recording{background:var(--accent);color:#fff;transform:scale(1.08)}
.operator-v3 .operator-composer>button.voice-mic.phase-off{opacity:.6;border-style:dashed}
.operator-v3 .operator-composer>button.voice-mic[aria-disabled=true]{opacity:.5}
.voice-panel{margin-top:8px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-raised)}
.voice-recording{display:flex;flex-direction:column;gap:8px}
.voice-meter{height:14px;border-radius:7px;background:var(--line);overflow:hidden}
.voice-meter>i{display:block;height:100%;width:100%;background:var(--accent);transform-origin:left;transition:transform .08s linear}
.voice-card{display:flex;flex-direction:column;gap:8px}
.voice-card label{font-weight:600}
.voice-card textarea{width:100%;min-height:72px;font-size:var(--fs-body);border:1px solid var(--line-input);border-radius:var(--r-sm);padding:10px}
.voice-actions{display:flex;gap:10px;flex-wrap:wrap}
.voice-actions button{min-height:56px;padding:0 20px;border-radius:var(--r-sm);border:1px solid var(--line-input);background:var(--surface);font-size:var(--fs-body)}
.voice-actions button.voice-send{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.voice-actions button:disabled{opacity:.5}
.voice-panel p{margin:0}
.voice-error p{margin-bottom:8px;color:var(--danger,#a32020)}
@media (prefers-reduced-motion:reduce){.operator-v3 .operator-composer>button.voice-mic,.voice-meter>i{transition:none}}
/* L199: «Angre» on the plan card, 10 s after a commit-class apply */
.vk-angre-row{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:8px}
.vk-angre{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:var(--target);min-width:var(--target);padding:0 18px;border:1px solid var(--v-ink-2,currentColor);background:none;color:var(--v-ink,inherit);font-size:15px;font-weight:600;border-radius:12px}
.vk-angre:disabled{opacity:.6}
.vk-angre-count{font-variant-numeric:tabular-nums;font-weight:500;opacity:.75}

/* L198 B2: tap chips under every agent card. 44 px targets (48 here), wrap at 390 px, visible keyboard focus. */
.vk-tapchips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:6px}
.vk-tapchip{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:var(--target);min-height:var(--target);padding:0 18px;border:1.5px solid rgba(20,23,31,.16);border-radius:999px;background:transparent;color:var(--v-ink);font-size:15px;font-weight:580;transition:transform .35s var(--v-spring),background .2s}
.vk-tapchip:hover{background:rgba(20,23,31,.05)}
.vk-tapchip:active{transform:scale(.96)}
.vk-tapchip:focus-visible{outline:3px solid var(--v-ink);outline-offset:2px}
.vk-tapchip:disabled,.vk-tapchip.is-busy{opacity:.45;cursor:default;transform:none}

/* L194 (390 px walk): the mobile quote-line label stays inside its column and wraps instead of being clipped to «Pris uten mv»;
   the Kom i gang rows put the button under the text on a phone so the text keeps the full width (no «Godkjen / n timer»). */
@media (max-width:760px){
 .quote-line-input .ql-label{overflow:visible;white-space:normal;overflow-wrap:anywhere;line-height:1.2}
}
@media (max-width:480px){
 .hm-step{flex-wrap:wrap;align-items:flex-start}
 .hm-step-text{flex:1 1 calc(100% - 44px)}
 .hm-step .button.hm-step-go{margin-left:40px}
}

.import-skipped-list{max-height:16rem;overflow-y:auto}
/* L203: one row per item waiting on the phone, each with its own state chip. Colour is a signal only. */
.queue-rows{list-style:none;margin:0;padding:0;display:grid;gap:var(--sp-2)}
.queue-row{display:flex;align-items:center;gap:var(--sp-3);min-height:56px;padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface,#fff);color:var(--ink)}
.queue-row>span{flex:1;min-width:0;display:grid;gap:2px}.queue-row small{color:var(--muted,#5b6470);overflow-wrap:anywhere}
.queue-row svg{flex:none}.queue-row.sent svg{color:var(--success)}.queue-row.failed{border-color:var(--danger,#b42318)}.queue-row.failed svg{color:var(--danger,#b42318)}
.queue-chip{font-style:normal;font-weight:600;font-size:.875rem;white-space:nowrap}

/* L218b: one primary action. While the voice card is open its «Send til Vakta» is the only send; the composer send steps aside. */
.operator-composer>button.composer-send[hidden]{display:none}
/* L117: the rows after the cards share one «Trenger deg» look without its heading */
/* L117: with overdue money first, the cards sit between the lead row and the other rows (all three keep order 0, so the markup order decides) */
.app .hm-main>.vh{order:0}

/* L223b: the sum lines behind the invoice total, and the proposed extra hours with their one-tap add. */
.ic-sum{display:grid;gap:.4rem;margin:.5rem 0;padding:.5rem 0;border-top:1px solid currentColor;border-top-color:rgba(127,127,127,.3)}
.ic-sum>div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.25rem .75rem}
.ic-sum small{display:block;opacity:.75}
.ic-sum-add{flex-basis:100%;display:grid;gap:.5rem}

/* L201 «ja-lenke»: the customer's one-tap page. 360 px first; one number, one big button, no chrome. */
.tap-page{min-height:100vh;min-height:100dvh;background:var(--v-paper,#f5f3ee);color:var(--v-ink,#14171f);font-family:var(--font);padding:var(--sp-4) var(--sp-4) var(--sp-8);display:flex;flex-direction:column;gap:var(--sp-4);align-items:stretch;max-width:560px;margin:0 auto;box-sizing:border-box}
.tap-brand{font-family:var(--font-display);font-weight:700;font-size:var(--fs-title);padding:var(--sp-2) 0;overflow-wrap:anywhere}
.tap-card{background:var(--v-sheet,#fffefc);border-radius:var(--r-xl);padding:var(--sp-6) var(--sp-5);box-shadow:var(--shadow-raised),0 18px 40px -26px rgba(11,26,56,.35);display:flex;flex-direction:column;gap:var(--sp-3);border:1px solid var(--v-hair)}
.tap-card h1{margin:0}
.tap-kicker{margin:0;font-size:var(--fs-meta);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--v-ink-2,#555b68)}
.tap-lead{font-family:var(--font-display);font-size:var(--fs-heading);line-height:var(--lh-heading);overflow-wrap:anywhere}
.tap-card .tap-number{margin:var(--sp-2) 0 0;font-family:var(--font-display);font-weight:800;font-size:44px;line-height:1.05;letter-spacing:-.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.tap-sub{margin:0;font-size:var(--fs-meta);color:var(--v-ink-2,#555b68);line-height:var(--lh-body)}
.tap-note-change{margin:var(--sp-2) 0 0;padding:var(--sp-3);background:var(--v-marker-soft,#fff6c4);border-radius:var(--r-md);font-size:var(--fs-body);overflow-wrap:anywhere}
.tap-primary{display:flex;align-items:center;justify-content:center;width:100%;min-height:64px;margin-top:var(--sp-3);padding:var(--sp-3) var(--sp-4);border:0;border-radius:var(--r-lg);background:var(--accent);color:#fff;font:700 20px/1.2 var(--font);text-decoration:none;box-shadow:var(--press-edge);cursor:pointer;box-sizing:border-box}
.tap-primary:hover{background:var(--accent-hover)}
.tap-primary:active{transform:scale(.985)}
.tap-primary:disabled{opacity:.6;cursor:progress}
.tap-primary:focus-visible,.tap-more:focus-visible{outline:var(--focus-width) solid var(--ink);outline-offset:var(--focus-offset)}
.tap-more{align-self:center;padding:var(--sp-3);min-height:var(--target);display:inline-flex;align-items:center;color:var(--ink-2);font-size:var(--fs-meta);text-decoration:underline}
.tap-check{margin:var(--sp-2) 0 0;padding:var(--sp-4);border-radius:var(--r-lg);background:var(--v-go-soft,#e6f4ec);color:var(--v-go,#157347);font-weight:600;font-size:var(--fs-body);line-height:var(--lh-body)}
.tap-error{margin:0;padding:var(--sp-3);border-radius:var(--r-md);background:var(--danger-bg);color:var(--danger);font-size:var(--fs-body)}
@media (prefers-reduced-motion:reduce){.tap-primary:active{transform:none}}
/* L202 Fredag på 30 sek: the week card and the list filter chip */
.wk-card{display:grid;gap:12px;padding:16px}.wk-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.wk-head h3{margin:0;font-size:1rem}.wk-week{color:var(--muted,#667);font-size:.85rem}
.wk-calm{margin:0;color:var(--muted,#667)}.wk-rows{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.wk-row{display:grid;gap:2px;width:100%;text-align:left;padding:10px 12px;border-radius:12px;border:1px solid var(--line,#dde);background:var(--surface,#fff);font:inherit;color:inherit;min-height:44px}
button.wk-row{cursor:pointer}.wk-cap{font-size:.78rem;color:var(--muted,#667)}.wk-num{font-size:1.35rem;font-weight:650;font-variant-numeric:tabular-nums}.wk-sub{font-size:.78rem;color:var(--muted,#667)}.wk-est{font-weight:600}
.wk-filter{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px;font-size:.9rem}
@media (max-width:420px){.wk-rows{grid-template-columns:1fr}}
/* L102: the passkey offer is a calm bottom card, never a modal. It floats above the page without taking focus, locking
   scroll or covering the job button; the page gets room underneath it so the last row can still be reached. */
.passkey-card{position:fixed;z-index:45;left:var(--sp-3);right:var(--sp-3);bottom:max(var(--sp-3),env(safe-area-inset-bottom,0px));max-width:420px;margin-inline:auto;display:grid;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-overlay)}
.passkey-card{grid-template-columns:minmax(0,1fr);box-sizing:border-box;overflow:hidden}
.passkey-card>*{min-width:0}
.passkey-card .passkey-actions .button{min-width:0;white-space:normal;padding-inline:var(--sp-2);text-align:center}
.passkey-card h2{margin:0;font-size:var(--fs-body);line-height:1.25}
.passkey-card p{margin:0;color:var(--ink-2);font-size:var(--fs-meta)}
.passkey-card .passkey-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.passkey-card .passkey-actions .button{flex:1 1 auto;min-height:var(--target)}
.passkey-card .passkey-actions .button:nth-child(3){flex-basis:100%;border-color:transparent;background:transparent;color:var(--ink-2);min-height:var(--target)}
@media (max-width:600px){.passkey-card{gap:var(--sp-1,4px);padding:var(--sp-2) var(--sp-3)}.passkey-card h2{font-size:var(--fs-meta);font-weight:600}.passkey-card .pk-why{display:none}.passkey-card .passkey-actions{gap:var(--sp-1,4px)}}
body:has(.passkey-card){padding-bottom:calc(var(--passkey-card-room,200px) + env(safe-area-inset-bottom,0px))}
@media (min-width:900px){body:has(.passkey-card){padding-bottom:0}.passkey-card{left:auto;right:var(--sp-4);margin-inline:0;width:380px}}
.wka-day{display:grid;gap:6px}.wka-dayname{margin:0;font-size:.85rem;color:var(--muted,#667)}.wka-items{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.wka-item{grid-template-columns:auto 1fr;column-gap:10px;align-items:baseline}.wka-time{font-variant-numeric:tabular-nums;font-weight:600}.wka-item .wk-sub{grid-column:2}
.tdy-card .wka-items{list-style:none;margin:0;padding:0;display:grid;gap:6px}.tdy-more{justify-self:start;min-height:44px;background:none;border:0;padding:0 4px;font:inherit;color:var(--accent,#2457c5);text-decoration:underline;cursor:pointer}
.apv-facts{list-style:none;margin:0;padding:0;display:grid;gap:2px}.apv-ask{margin:0;font-weight:600}.apv-ways{display:grid;gap:8px}.apv-way{text-align:center;font-weight:600}

/* D8 row 266: on a phone the newest ready plan card's ONE primary stays inside the scrolling transcript, pinned at its bottom edge, so a tall card never pushes
   «Før timene» / «Utfør endringen» under the fold; «Ta over» and «Neste» are links. The jump pill, voice note and composer sit outside the transcript.
   Phone layout only (the breakpoint the chat already uses); desktop keeps the card as it was. */
@media (max-width:860px){
.operator-transcript .operator-plan.plan-newest .vk-card>.vk-primary{position:sticky;bottom:max(8px,env(safe-area-inset-bottom));z-index:3;box-shadow:0 8px 22px rgba(20,23,31,.30)}
.operator-transcript .operator-plan.plan-newest:not(.plan-flat) .plan-actions{position:sticky;bottom:0;z-index:3;background:var(--surface);padding:8px 0 max(8px,env(safe-area-inset-bottom))}
.operator-transcript .vk-tapchips{gap:2px 14px}
.operator-transcript .vk-tapchip{border:0;background:none;padding:0 6px;min-height:44px;text-decoration:underline;text-underline-offset:3px;font-weight:520}
.operator-v3 .voice-panel[data-phase=idle]{margin-top:4px;padding:6px 12px;font-size:14px;line-height:1.3}
}

/* ---- L257c 2026-11-12: every «Trenger deg» row has its own decision button; the text opens the record ---- */
.hm-need-item.is-lead{display:grid;gap:var(--sp-2)}
.hm-need-more>.hm-need-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:var(--sp-3);padding:2px 0}
.hm-need-more>.hm-need-item+.hm-need-item{border-top:1px dashed var(--night-line)}
.hm-need-more>.hm-need-item>.hm-need-done,.hm-need-more>.hm-need-item>.hm-need-note{grid-column:1/-1;margin:0 0 var(--sp-2)}
.hm-need-more .hm-need-row-amt{font-size:var(--fs-title)}
.hm-need-decide{min-height:48px;white-space:nowrap}
.app .hm-need .button.hm-need-decide:not(.hm-need-cta){min-height:48px;padding-inline:var(--sp-3)}
.hm-need-note{margin:0;font-size:var(--fs-meta);font-weight:600;line-height:1.35;color:var(--on-night)}
.hm-need-note.is-error{color:var(--hivis)}
.hm-need-item.is-done .hm-need-lead,.hm-need-item.is-done .hm-need-row{opacity:.72}

/* L266b row 266: on a phone the operator chat IS the screen. Measured before (390x844): page title 72-259, colleague bar 284-365, mode line 365-410 pushed the
   transcript to 410-900 and the composer to 990-1070, so a tall card's pinned confirm ended at 881.7 > 844. Now the page is exactly the viewport under the app bar:
   the title stays for screen readers only, «Kollega / Samtaler / Ny» is one compact row, the transcript takes all the room that is left (so the sticky confirm is
   on screen) and the composer sits at the bottom, above the home indicator. Colleague bar, mode line and the «voice is off» note are trimmed so a
   375x667 phone also keeps a tall card's confirm inside the chat. Phone layout only; desktop is unchanged. */
@media (max-width:760px){
main:has(>.bvu-operator-container:not([hidden])){padding-top:8px;padding-bottom:0}
.operator-page.operator-v3{height:calc(100dvh - var(--appbar-h) - 8px);min-height:0;display:flex;flex-direction:column}
.operator-v3 .page-header{display:block;flex:none;margin:0 0 8px}
.operator-v3 .page-header>div:first-child{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.operator-page.operator-v3 .header-actions{margin-top:0;flex-wrap:nowrap;gap:8px}
.operator-v3 .header-actions .button{min-height:44px;padding:0 12px}
.operator-v3 .conversation-picker{flex:none;max-height:40dvh;overflow:auto}
.operator-v3 .bvc-chat-layout{flex:1 1 0;min-height:0;grid-template-rows:minmax(0,1fr);align-items:stretch}
.operator-v3 .bvc-chat-main{display:flex;flex-direction:column;min-height:0;padding-bottom:max(10px,env(safe-area-inset-bottom))}
.operator-v3 .bvu-colleague-bar{padding:6px 0}
.operator-v3 .bvu-colleague-identity>img{width:38px;height:38px}
.operator-v3 .operator-mode.operator-mode-line{padding:2px 0}
.operator-v3 .voice-panel[data-phase=off]{margin-top:4px;padding:6px 12px;font-size:var(--fs-meta);line-height:1.3}
.operator-v3 .operator-transcript{flex:1 1 0;min-height:min(280px,40dvh);max-height:none}/* an alert or the jump pill never squeezes the chat to a slit; the page scrolls instead */
.operator-v3 .operator-composer{flex:none}
}
/*DEMO-SHELL-START*/
/* /demo's first screen (row 273): the same markup sits in demo-shell.html (painted before any script) and in PublicDemo.jsx DemoEntryShell.
   build.cjs inlines this region into dist/demo.html, so it holds literal colours (the tokens load later). */
.dse{min-height:100vh;min-height:100dvh;background:#fffdfa;color:#0f1b33;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.dse-top{display:flex;align-items:center;gap:10px;min-height:56px;padding:10px 16px;background:#fff;border-bottom:1px solid #eadfd3}
.dse-mark{display:inline-flex;align-items:center;justify-content:center;width:33px;height:35px;border-radius:12px;background:#ff6b0a;color:#fff}
.dse-word{font-family:Archivo,Inter,system-ui,sans-serif;font-weight:800;font-size:19px;letter-spacing:-.01em}
.dse-word span{color:#b34700}
.dse-badge{margin-left:auto;padding:2px 10px;border-radius:999px;background:#fff3e9;color:#8f3a00;font-size:14px;font-weight:700}
.dse-note{margin:0;padding:8px 16px;background:#f7f4ef;font-size:14px;line-height:1.45;color:#39445c}
.dse-card{display:grid;gap:12px;margin:16px;padding:16px;background:#fff;border:1px solid #eadfd3;border-radius:16px}
.dse-lead{margin:0 0 4px;font-size:18px;font-weight:700;line-height:1.3}
.dse-sk{display:block;height:14px;border-radius:7px;background:#eee7dd;animation:dse-pulse 1s ease-in-out infinite alternate}
.dse-sk.m{width:88%}.dse-sk.s{width:62%}.dse-sk.l{width:100%;height:72px;border-radius:10px}
.dse-sheet{position:fixed;z-index:50;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:8px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid #eadfd3;border-radius:18px 18px 0 0;box-shadow:0 -10px 34px rgba(16,24,40,.2)}
.dse-sheet[hidden]{display:none}
.dse-sheet h2{margin:0;font-size:1.3rem;line-height:1.2}
.dse-sheet p{margin:0;font-size:16px;line-height:1.45}
.dse-prog{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:700;color:#5b667c}
.dse-prog span{margin-right:auto}
.dse-prog i{width:22px;height:4px;border-radius:2px;background:#eadfd3}.dse-prog i.on{background:#b34700}
.dse-report{display:flex;align-items:center;gap:12px;padding:8px;background:#fff3e9;border-radius:10px}
.dse-sk.ph{flex:none;width:72px;height:72px;border-radius:8px}.dse-report .dse-sk.m{flex:1;width:auto}
.dse-next{display:flex;align-items:center;justify-content:center;min-height:52px;border-radius:12px;background:#eadfd3;color:#5b667c;font-weight:700;font-size:16px}
@keyframes dse-pulse{from{opacity:.5}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.dse-sk{animation:none}}
/*DEMO-SHELL-END*/
