:root{--tone-neutral-bg:#eef0ea;--tone-neutral:#4f5a49;--tone-scheduled-bg:#e3ecf7;--tone-scheduled:#285480;--tone-progress-bg:#e8f1c6;--tone-progress:#46601a;--tone-attention-bg:#fcefd4;--tone-attention:#7c5410;--tone-success-bg:#dcefdb;--tone-success:#2b6532;--tone-danger-bg:#fae2dc;--tone-danger:#982f20;--tone-muted:#6b7366;}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:25px}body{margin:0;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;line-height:1.6;background:var(--cream)}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:4px}button,input,select,textarea{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--lime);outline-offset:3px}h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--s-heading);letter-spacing:var(--s-heading-track);line-height:1.1;font-weight:var(--s-heading-weight)}h3{font-weight:600}h1{font-size:42px;margin-bottom:14px}h2{font-size:29px}h3{font-size:16px;margin-bottom:7px}em{font-style:var(--s-em-style);color:var(--s-em)}.brand{display:inline-flex;gap:8px;align-items:center;font-family:var(--s-heading);font-size:28px;font-weight:var(--s-heading-weight);letter-spacing:-.02em;line-height:1}.brand:hover{text-decoration:none}.brand-mark{font-size:inherit;color:var(--lime)}.brand-dot{margin-left:-8px}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:10px 17px;background:var(--ink);border:1px solid var(--ink);border-radius:var(--radius);color:white;font-size:13px;font-weight:600;line-height:1.4;text-align:center;white-space:normal;vertical-align:middle;transition:background-color .15s,border-color .15s,box-shadow .15s}.button:hover{background:color-mix(in srgb,var(--ink) 90%,var(--paper));text-decoration:none}.button.accent{background:var(--lime);border-color:var(--lime);color:var(--accent-ink)}.button.accent:hover{background:var(--s-accent-hover);border-color:var(--s-accent-hover)}.button.secondary{background:#fff;border-color:color-mix(in srgb,var(--ink) 19%,var(--paper));color:var(--ink)}.button.secondary:hover{background:color-mix(in srgb,var(--ink) 9%,var(--paper))}.button.small{min-height:36px;padding:8px 12px;font-size:12px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:600;line-height:1.7;margin-bottom:22px}.muted,.fineprint{color:var(--muted)}.fineprint{font-size:12px;line-height:1.6}.live-dot{display:inline-block;height:7px;width:7px;border-radius:50%;background:var(--lime);margin-right:9px}.field{margin-bottom:17px}.field label{display:block;font-size:12px;font-weight:600;margin-bottom:7px}input,select,textarea{border:1px solid color-mix(in srgb,var(--ink) 18%,var(--paper));border-radius:var(--radius);background:#fff;padding:11px 12px;width:100%;min-width:0;color:var(--ink)}textarea{resize:vertical;min-height:100px}input[type=checkbox]{width:17px;height:17px;vertical-align:middle;accent-color:var(--ink)}.checkbox-field{display:flex;align-items:center;gap:9px}.checkbox-field label{font-weight:400;font-size:12px;margin:0}.checkbox-field input{flex-shrink:0}.checkbox-field .errorlist{flex-basis:100%}.workspace{background:color-mix(in srgb,var(--ink) 5%,var(--paper))}.sidebar{overflow-y:auto;width:235px;background:color-mix(in srgb,var(--lime) 4%,var(--paper));position:fixed;inset:0 auto 0 0;border-right:1px solid var(--line);padding:35px 23px;display:flex;flex-direction:column;z-index:3}.sidebar .brand{padding-left:13px}.sidebar-label{font-size:9px;letter-spacing:1.5px;color:color-mix(in srgb,var(--ink) 54%,var(--paper));margin:52px 14px 16px}.sidebar nav{display:grid;gap:5px;margin-top:40px}.sidebar nav a{display:flex;align-items:center;gap:13px;padding:12px 15px;border-radius:var(--radius);color:color-mix(in srgb,var(--ink) 64%,var(--paper));font-size:12px}.sidebar nav a span{font-size:19px;line-height:1;width:19px;color:color-mix(in srgb,var(--ink) 65%,var(--paper))}.sidebar nav a[aria-current=page]{background:color-mix(in srgb,var(--lime) 23%,var(--paper));color:var(--ink);font-weight:600}.sidebar nav a:hover{background:color-mix(in srgb,var(--ink) 9%,var(--paper));text-decoration:none}.sidebar-bottom{margin-top:auto;padding:25px 12px 0;font-size:11px}.user{display:flex;gap:11px;align-items:center;margin:25px 0 12px;border-top:1px solid var(--line);padding-top:22px}.user strong{font-size:12px;display:block}.user small{font-size:10px;color:var(--muted)}.avatar{display:grid;place-items:center;width:34px;height:34px;background:color-mix(in srgb,var(--lime) 34%,var(--paper));border-radius:50%;font-weight:500}.text-button{background:none;border:0;padding:0;color:var(--muted);font-size:11px}.workspace-body{margin-left:235px;min-height:100vh;display:flex;flex-direction:column}.workspace-top{display:flex;justify-content:space-between;gap:20px;align-items:center;border-bottom:1px solid var(--line);padding:20px 42px;color:var(--muted);font-size:10px}.workspace-top>span:first-child{font-size:13px;font-weight:600;color:var(--ink)}.workspace-main{padding:37px 42px;max-width:1550px;width:100%;margin:0 auto;flex:1 0 auto}.workspace-footer{color:color-mix(in srgb,var(--ink) 48%,var(--paper));font-size:10px;padding:18px 42px;border-top:1px solid var(--line)}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin:8px 0 30px}.page-heading h1{font-size:37px}.page-heading .eyebrow{margin-bottom:13px;font-size:9px;color:color-mix(in srgb,var(--ink) 57%,var(--paper))}.page-heading p:last-child{margin-bottom:0}.page-heading>.button{font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:26px}.stats article{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:23px 24px}.stats article>span{font-size:11px;color:color-mix(in srgb,var(--ink) 67%,var(--paper))}.stats strong{display:block;font-size:32px;letter-spacing:-1.2px;font-weight:500;margin:12px 0 8px;line-height:1.1;overflow-wrap:anywhere}.stats small,.stats a{display:block;font-size:10px;color:color-mix(in srgb,var(--ink) 57%,var(--paper))}.stats article:first-child{background:color-mix(in srgb,var(--lime) 23%,var(--paper));border-color:color-mix(in srgb,var(--lime) 31%,var(--paper))}.panel{border:1px solid var(--line);background:#fff;border-radius:var(--radius-lg);margin-bottom:24px;overflow:hidden}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:22px 23px;border-bottom:1px solid color-mix(in srgb,var(--ink) 8%,var(--paper))}.panel-heading h2{font-size:17px;letter-spacing:-.01em;font-weight:600;margin:0}.panel-heading a{font-size:10px;color:color-mix(in srgb,var(--ink) 63%,var(--paper))}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.dashboard-grid>.panel{min-width:0}.empty{text-align:center;padding:38px 20px;min-height:232px}.empty>span{display:block;font-size:27px;color:color-mix(in srgb,var(--ink) 59%,var(--paper));margin-bottom:13px}.empty h3{font-size:14px;font-weight:500}.empty p{color:color-mix(in srgb,var(--ink) 54%,var(--paper));font-size:12px}.empty a{font-size:11px}.visit-row,.project-row{display:flex;align-items:center;gap:16px;padding:21px 23px;border-bottom:1px solid color-mix(in srgb,var(--ink) 8%,var(--paper))}.visit-row:hover,.project-row:hover{background:color-mix(in srgb,var(--ink) 3%,var(--paper));text-decoration:none}.visit-row h3,.project-row h3{font-size:12px;margin:0 0 4px;font-weight:600}.visit-row p,.project-row p{font-size:11px;color:var(--muted);margin:0}.visit-row small{font-size:10px;color:color-mix(in srgb,var(--ink) 51%,var(--paper))}.date-tile{text-align:center;min-width:45px;border:1px solid var(--line);border-radius:var(--radius);padding:5px}.date-tile strong{display:block;font-size:19px;font-weight:500;line-height:1.4}.date-tile span{display:block;font-size:9px;text-transform:uppercase}.arrow{margin-left:auto}.project-row{justify-content:space-between}.badge{display:inline-block;border-radius:4px;padding:4px 8px;background:color-mix(in srgb,var(--ink) 8%,var(--paper));font-size:10px;line-height:1.5;color:color-mix(in srgb,var(--ink) 63%,var(--paper));white-space:nowrap;letter-spacing:0}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}th{font-size:9px;color:color-mix(in srgb,var(--ink) 54%,var(--paper));font-weight:500;text-transform:uppercase;letter-spacing:.7px;background:color-mix(in srgb,var(--lime) 4%,var(--paper));padding:14px 23px;white-space:nowrap}td{padding:18px 23px;border-top:1px solid color-mix(in srgb,var(--ink) 8%,var(--paper))}td a{font-weight:500}td small{display:block;font-size:10px;color:color-mix(in srgb,var(--ink) 53%,var(--paper));margin-top:4px}.number{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.empty-cell{text-align:center;padding:40px 24px;color:color-mix(in srgb,var(--ink) 54%,var(--paper));font-size:12px}.empty-cell a{display:inline-block;margin-left:5px;color:var(--ink)}.search{display:flex;gap:10px;max-width:570px;margin-bottom:24px;align-items:center}.search input{background:white}.search .button{min-height:42px}.search>a{font-size:12px}.back-link{font-size:11px;color:color-mix(in srgb,var(--ink) 60%,var(--paper));display:inline-block;margin-bottom:17px}.form-panel{padding:26px}.form-panel>h2,.form-panel>div>h2{font-size:19px}.form-panel .panel-heading{padding:0 0 23px;margin-bottom:22px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.field.full{grid-column:1/-1}.field small{color:var(--muted);font-size:11px}.field textarea{min-height:90px;max-height:220px}.editor{max-width:1100px}.formset-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 17px;border-bottom:1px solid var(--line);padding:20px 0}.formset-row:first-child{padding-top:0}.formset-row .field:first-of-type{grid-column:1/-1}.actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.actions .button{font-size:12px}.status-actions{margin:-9px 0 24px}.message{padding:14px 18px;border-radius:var(--radius);background:color-mix(in srgb,var(--lime) 24%,var(--paper));border:1px solid color-mix(in srgb,var(--lime) 40%,var(--paper));font-size:12px}.message.error{background:#fff0e9;border-color:#ecd4c4;color:#9b492e}.errorlist{list-style:none;padding:0;color:#b14d31;font-size:12px;margin:6px 0}.errorlist.nonfield{padding:15px;border:1px solid #e4c6bb;background:#fff6f1;border-radius:var(--radius)}.pagination{display:flex;justify-content:center;gap:25px;padding:20px;font-size:12px}.enquiry-message{max-width:440px;min-width:230px;overflow-wrap:anywhere;white-space:normal}dl{display:grid;grid-template-columns:100px 1fr;gap:17px;margin:24px 0 0;font-size:12px}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}.paper{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:50px;max-width:1100px}.document-top{display:flex;justify-content:space-between;gap:25px;margin-bottom:45px}.document-top .brand{font-size:29px;margin-bottom:25px}.document-top p{font-size:12px;color:var(--muted);margin-top:12px}.align-right{text-align:right}.document-top h2{font-size:30px}.recipient{margin-bottom:35px;font-size:12px}.recipient .eyebrow{color:var(--muted);font-size:9px;margin-bottom:8px}.recipient p{margin-bottom:0}.paper table th,.paper table td{padding:15px 10px}.paper table th:first-child,.paper table td:first-child{padding-left:0}.paper table td{font-size:11px}.paper>h3{font-size:15px}.totals{width:290px;max-width:100%;margin:28px 0 40px auto;font-size:12px}.totals p{display:flex;justify-content:space-between;margin-bottom:10px}.grand-total{border-top:1px solid var(--line);padding-top:17px;font-size:18px}.document-notes{border-top:1px solid var(--line);padding:23px 0;font-size:12px}.document-notes h3{font-size:13px}.history{max-width:1100px;margin-top:25px;font-size:12px}.preserve{white-space:pre-line}.schema-drawing{padding:20px 0 45px;overflow-x:auto}.supply-node{text-align:center;border:1px solid var(--ink);border-radius:4px;padding:15px;max-width:280px;margin:0 auto 35px;position:relative;font-size:12px}.supply-node:after{content:'';position:absolute;top:100%;left:50%;height:36px;width:1px;background:var(--ink)}.circuit-branches{display:flex;border-top:2px solid var(--ink);min-width:fit-content}.circuit-branch{display:flex;align-items:center;flex:1;flex-direction:column;min-width:145px;max-width:200px;padding:35px 15px 15px;position:relative;gap:6px;font-size:11px;text-align:center}.circuit-branch:before{content:'';position:absolute;top:0;left:50%;height:30px;width:1px;background:var(--ink)}.circuit-id{border:1px solid var(--line);background:var(--cream);padding:3px 12px;font-weight:600}.breaker{font-size:25px;line-height:1}.circuit-branch svg{stroke:var(--ink);fill:none;stroke-width:2;margin-top:10px}.circuit-branch small{color:var(--muted)}.login-page{min-height:100vh;display:grid;place-items:center;padding:30px;background:linear-gradient(135deg,color-mix(in srgb,var(--lime) 18%,var(--paper)),color-mix(in srgb,var(--ink) 4%,var(--paper)))}.login-card{background:white;border:1px solid var(--line);border-radius:var(--radius-lg);padding:45px;max-width:460px;width:100%}.login-card .brand{margin-bottom:45px}.login-card .eyebrow{color:var(--muted)}.login-card h1{font-size:37px}.login-card form{margin-top:30px}.login-card label{display:block;font-size:12px;margin-bottom:7px}.login-card .button{width:100%;margin:10px 0 25px}.login-card .back-link{margin:0}.sr-only,.skip{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0)}.skip:focus{width:auto;height:auto;clip:auto;background:var(--lime);color:var(--accent-ink);padding:10px;z-index:20}
@media(min-width:1500px){.workspace-main{padding-top:50px}.page-heading h1{font-size:44px}.stats strong{font-size:39px}}@media(max-width:1150px){.workspace-main{padding:28px 25px}.workspace-top{padding:20px 25px}.sidebar{width:210px;padding-left:14px;padding-right:14px}.workspace-body{margin-left:210px}.stats{gap:10px}.stats article{padding:18px 16px}.stats strong{font-size:26px}.dashboard-grid{gap:16px}.paper{padding:30px}.page-heading h1{font-size:32px}.panel-heading{padding:18px}.visit-row,.project-row{padding:18px}td,th{padding-left:18px;padding-right:18px}}@media(max-width:850px){.sidebar{width:180px;padding:25px 9px}.sidebar .brand{font-size:26px}.sidebar nav a{padding:10px;font-size:11px;gap:9px}.sidebar-label{font-size:8px;margin-left:10px}.workspace-body{margin-left:180px}.stats{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr;gap:0}.workspace-top>span:last-child{font-size:9px}.page-heading{align-items:flex-start}.page-heading h1{font-size:29px}.page-heading>.button{padding:10px 14px;font-size:11px}.workspace-main{padding:25px 20px}.formset-row{grid-template-columns:1fr 1fr}.paper{padding:24px}.document-top{gap:15px}.document-top .brand{font-size:24px}.document-top h2{font-size:26px}}@media(max-width:620px){.brand{font-size:28px}.sidebar{position:static;width:auto;padding:20px 18px 12px;border-right:0;border-bottom:1px solid var(--line)}.sidebar .brand{padding:0;font-size:26px}.sidebar .brand-mark{font-size:28px}.sidebar-label,.sidebar-bottom{display:none}.sidebar nav{display:flex;overflow-x:auto;gap:5px;margin-top:20px;padding-bottom:4px}.sidebar nav a{white-space:nowrap;padding:9px 12px}.sidebar nav a span{display:none}.workspace-body{margin:0}.workspace-top{padding:15px 20px}.workspace-top>span:first-child{font-size:12px}.workspace-top>span:last-child{font-size:8px}.workspace-main{padding:25px 18px}.page-heading{gap:14px;flex-wrap:wrap;margin-bottom:24px}.page-heading h1{font-size:31px}.page-heading p{font-size:12px}.page-heading .eyebrow{font-size:8px}.stats{gap:10px;margin-bottom:20px}.stats article{padding:17px}.stats strong{font-size:27px}.stats article>span{font-size:10px}.stats small,.stats a{font-size:9px}.panel{margin-bottom:18px}.panel-heading a{font-size:9px}.panel-heading h2{font-size:16px}.empty{padding:32px 20px;min-height:210px}.workspace-footer{padding:18px;font-size:9px}.form-grid{grid-template-columns:1fr}.form-panel{padding:20px}.form-panel .panel-heading{align-items:flex-start;flex-wrap:wrap}.field{margin-bottom:16px}.formset-row{grid-template-columns:1fr 1fr;gap:0 12px}.formset-row label{font-size:11px}.formset-row input,.formset-row select{font-size:12px;padding:9px}.formset-row .checkbox-field{padding-top:25px}.actions .button{font-size:11px}.document-top{flex-direction:column;margin-bottom:30px}.document-top .align-right{text-align:left}.paper{padding:24px 18px}.document-top .brand{margin-bottom:10px}.paper table{min-width:480px}.paper .fineprint{font-size:10px}.schema-paper .document-top{gap:5px}.login-card{padding:30px}.login-card h1{font-size:33px}.search{flex-wrap:wrap}.search input{flex:1;min-width:130px}dl{grid-template-columns:80px 1fr;gap:16px}}
@media print{@page{size:A4;margin:15mm}body,.workspace{background:white!important;color:black!important}.sidebar,.workspace-top,.workspace-footer,.no-print,.messages,.skip{display:none!important}.workspace-body{margin:0}.workspace-main{padding:0;max-width:none;min-height:0}.workspace-body{display:block;min-height:0}.paper{border:0;padding:0;max-width:none;border-radius:0}.paper table{min-width:0!important;font-size:10px}.paper .table-scroll{overflow:visible}.paper table th,.paper table td{padding:10px 6px}.document-top{flex-direction:row}.document-top .align-right{text-align:right}.document-top h2{font-size:25px}.document-top .brand{font-size:25px}.document-top p{color:color-mix(in srgb,var(--ink) 94%,var(--paper))}.document-notes,.totals,.circuit-branch,tr{break-inside:avoid}.schema-drawing{overflow:visible}.circuit-branches{min-width:0;flex-wrap:wrap}.circuit-branch{min-width:100px;max-width:140px}.circuit-branch:before{height:26px}.schema-paper .document-top{flex-direction:row}.badge{border:1px solid color-mix(in srgb,var(--ink) 31%,var(--paper))}.fineprint{color:color-mix(in srgb,var(--ink) 79%,var(--paper))}a{text-decoration:none!important}.paper>h3{font-size:14px}}

.top-account{display:flex;align-items:center;gap:20px}.top-account .text-button{font-size:10px}@media(max-width:620px){.top-account{gap:12px}.top-account>span{display:none}}

.address-fields{border:0;border-top:1px solid var(--line);padding:20px 0 4px;margin:12px 0 15px;min-width:0}
.address-fields legend{padding:0 12px 0 0;font-size:15px;font-weight:600}
.address-street-row{display:grid;grid-template-columns:2fr 1fr 1fr;gap:18px}
.address-locality-row{display:grid;grid-template-columns:1fr 1.5fr 1.5fr;gap:18px}
@media(max-width:620px){.address-street-row,.address-locality-row{grid-template-columns:1fr 1fr;gap:0 12px}.address-street-row>.field:first-child{grid-column:1/-1}.address-locality-row>.field:last-child{grid-column:1/-1}}

.row-actions{text-align:right;width:1%;white-space:normal}
.row-actions .button{min-height:36px;padding:8px 12px}
.button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
.formset-row:target{background:color-mix(in srgb,var(--lime) 10%,var(--paper));outline:2px solid color-mix(in srgb,var(--lime) 40%,var(--paper));outline-offset:8px;scroll-margin-top:25px}

.copy-address-action{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:0 0 20px}
.copy-address-action .fineprint{margin:0;flex:1;min-width:180px}

.project-row small{display:block;color:var(--muted);font-size:10px}
.invoice-visit{font-size:12px;color:var(--muted);margin-bottom:22px}
@media(max-width:850px){.visit-row{flex-wrap:wrap}.visit-row .arrow{flex-basis:100%;margin-left:61px}.project-row:has(.actions){flex-wrap:wrap}}

.formset-row .field:has(input[name$="-description"]){grid-column:1/-1}
.sidebar{overflow-y:auto}

.category-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 23px}
.category-filters a{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);padding:7px 12px;border-radius:var(--radius);background:white;font-size:11px}
.category-filters a[aria-current=page]{background:color-mix(in srgb,var(--lime) 23%,var(--paper));border-color:color-mix(in srgb,var(--lime) 40%,var(--paper));font-weight:600}
.category-filters a:hover{background:color-mix(in srgb,var(--lime) 17%,var(--paper));text-decoration:none}
.category-filters span{color:color-mix(in srgb,var(--ink) 57%,var(--paper));font-size:9px}
.material-cell{display:flex;align-items:center;gap:16px;min-width:280px;max-width:460px}
.material-picture-button{padding:0;border:1px solid color-mix(in srgb,var(--ink) 13%,var(--paper));background:color-mix(in srgb,var(--ink) 8%,var(--paper));border-radius:var(--radius);flex-shrink:0;overflow:hidden;line-height:0}
.material-picture-button:hover{border-color:color-mix(in srgb,var(--ink) 75%,var(--paper))}
.material-thumbnail{display:block;object-fit:contain;background:color-mix(in srgb,var(--ink) 8%,var(--paper));width:88px;height:66px}
.material-picture-dialog{border:1px solid var(--line);border-radius:var(--radius-lg);width:min(740px,calc(100vw - 32px));padding:25px;color:var(--ink)}
.material-picture-dialog::backdrop{background:#162a20b0}
.picture-dialog-heading{display:flex;justify-content:space-between;gap:20px;align-items:start;margin-bottom:20px}
.picture-dialog-heading h2{font-size:23px;margin:0;line-height:1.3}
.material-picture-dialog>img{display:block;width:100%;height:auto;max-height:65vh;object-fit:contain;background:color-mix(in srgb,var(--ink) 8%,var(--paper));border-radius:var(--radius)}
.material-picture-dialog>p{margin:15px 0 0}
.material-editor-picture{display:flex;align-items:center;gap:25px;padding-bottom:25px;border-bottom:1px solid var(--line);margin-bottom:25px}
.material-editor-picture>img{object-fit:contain;border-radius:var(--radius-lg);background:color-mix(in srgb,var(--ink) 8%,var(--paper));max-width:40%;height:auto}
.material-editor-picture p:last-child{margin:0;font-size:12px;max-width:280px}
.selected-material-preview{display:flex;align-items:center;gap:13px;margin-top:10px;font-size:11px;color:var(--muted)}
.selected-material-preview[hidden]{display:none}
.selected-material-preview img{width:90px;height:68px;object-fit:contain;background:color-mix(in srgb,var(--ink) 8%,var(--paper));border-radius:var(--radius)}
@media(max-width:620px){.material-cell{gap:10px;min-width:240px}.material-thumbnail{width:70px;height:53px}.material-editor-picture{gap:15px}.material-editor-picture .eyebrow{margin-bottom:10px}.category-filters{gap:6px}.category-filters a{font-size:10px;padding:6px 9px}.material-picture-dialog{padding:18px}.picture-dialog-heading h2{font-size:18px}}

.shopping-add-form { margin: 0; }
.shopping-quantity-form { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0; }
.shopping-quantity-form input { width: 7rem; min-width: 5rem; min-height: 36px; padding: 7px 10px; font-variant-numeric: tabular-nums; }

.shopping-control { width: 100%; max-width: 240px; text-align: left; }
.shopping-control-label { display: block; margin-bottom: 8px; color: var(--ink); font-size: 11px; font-weight: 600; white-space: nowrap; }
.shopping-control-label span { color: var(--muted); font-weight: 400; }
.shopping-add-buttons { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; }
.shopping-add-buttons .button { min-height: 36px; padding: 7px 0; gap: 0; font-size: 12px; font-variant-numeric: tabular-nums; }
.shopping-add-buttons .shopping-add-primary { background: var(--lime); border-color: var(--lime); color: var(--accent-ink); }
.shopping-add-buttons .shopping-add-primary:hover { background: color-mix(in srgb,var(--lime) 35%,var(--paper)); border-color: color-mix(in srgb,var(--lime) 40%,var(--paper)); }
.material-supplier { min-width: 145px; }
.material-row-actions { width: 200px; min-width: 200px; text-align: left; white-space: normal; }
.material-action-stack { width: 184px; }
.material-manage-actions { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }
.material-manage-actions .button { min-height: 36px; padding: 8px 12px; font-size: 12px; }
.link-danger { display: inline-flex; align-items: center; justify-content: center; min-height: 34px; padding: 5px 3px; color: #8c352f; font-size: 12px; font-weight: 500; text-decoration: none; white-space: nowrap; }
.link-danger:hover { color: #69231f; text-decoration: underline; }
.material-editor-actions { margin-bottom: 24px; }
.material-editor-delete { margin-left: auto; }
.material-shopping-panel { margin-top: 0; }
.search.project-shopping-toolbar { max-width: none; align-items: end; flex-wrap: wrap; padding: 16px 18px; border: 1px solid var(--line); border-radius:var(--radius-lg); background: var(--paper, #fff); }
.project-shopping-field { flex: 1 1 240px; min-width: 0; }
.project-shopping-field label { display: block; margin-bottom: 7px; font-size: 11px; font-weight: 600; }
.project-shopping-field select { width: 100%; }
.project-shopping-toolbar > a { display: inline-flex; align-items: center; min-height: 42px; padding: 5px 8px; font-size: 12px; }
@media(max-width:620px) { .search.project-shopping-toolbar { padding: 14px; } .project-shopping-field { flex-basis: 100%; } .material-row-actions { min-width: 190px; } .material-editor-actions { gap: 8px; } }

.js [data-filter-submit] { display: none; }
[data-live-list][aria-busy="true"] > .panel { opacity: .65; }

/* Shared action hierarchy and predictable wrapping across the workspace. */
.button:not(:disabled):active { box-shadow: inset 0 2px 4px #14271f20; }
.button:disabled:hover { background: var(--ink); }
.button.secondary:disabled:hover { background: #fff; }
.button.danger { background: #fff; border-color: #e6c9c3; color: #963e32; }
.button.danger:hover { background: #fff1ed; border-color: #c98f82; }
.button.success { background: color-mix(in srgb,var(--lime) 19%,var(--paper)); border-color: color-mix(in srgb,var(--ink) 23%,var(--paper)); color: color-mix(in srgb,var(--ink) 75%,var(--paper)); }
.button.success:hover { background: color-mix(in srgb,var(--lime) 27%,var(--paper)); border-color: color-mix(in srgb,var(--ink) 40%,var(--paper)); }
.button span { flex-shrink: 0; }
.actions > form, .page-heading > form, .panel-heading > form { margin: 0; }
.actions > .button, .actions > form { flex: 0 1 auto; }
.actions > form:not(.visit-progress-actions) > .button { width: 100%; }
.page-heading { align-items: flex-start; }
.page-heading > div:first-child { min-width: 0; }
.page-heading h1 { overflow-wrap: anywhere; }
.page-heading > .actions { justify-content: flex-end; flex-shrink: 0; max-width: 55%; }
.page-heading > .button, .page-heading > form { flex-shrink: 0; max-width: 100%; }
.panel-heading { flex-wrap: wrap; }
.panel-heading .button { color: var(--ink); font-size: 12px; }
.panel-heading h2 { flex: 1 1 140px; }
.form-actions { padding: 18px 0 8px; border-top: 1px solid var(--line); margin-bottom: 24px; }
.form-actions .danger { margin-left: auto; }
.row-action-group { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.visit-row-actions { min-width: 242px; }
.visit-controls { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.visit-progress-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0; }
.visit-row-actions .visit-controls { margin-top: 8px; justify-content: flex-end; }
.visit-row-actions .visit-progress-actions { flex-basis: 100%; justify-content: flex-end; }
.visit-row { display: grid; grid-template-columns: 45px minmax(0,1fr); align-items: start; }
.visit-copy { min-width: 0; }
.visit-copy h3, .project-row h3 { overflow-wrap: anywhere; }
.visit-row > .visit-controls { grid-column: 2; padding-top: 12px; border-top: 1px solid var(--line); }
.project-visit { display: grid; grid-template-columns: minmax(0,1fr); align-items: start; gap: 14px; }
.project-visit > .visit-controls { padding-top: 12px; border-top: 1px solid var(--line); }
.visit-progress-panel > .visit-progress-actions { margin-top: 16px; }
.visit-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-top: 8px; }
.visit-meta small { flex-basis: 100%; }
.material-list-row { flex-wrap: wrap; align-items: flex-start; gap: 12px; }
.material-list-row .row-copy { flex: 1 1 140px; min-width: 0; }
.material-list-row .row-copy a { overflow-wrap: anywhere; }
.material-list-row form { margin: 0; }
.project-detail-actions { margin: 18px 0 24px; }
.status-actions { padding: 14px 16px; margin: 0 0 24px; border: 1px solid var(--line); border-radius:var(--radius-lg); background: #fff; }
.status-actions:empty { display: none; }
.search { flex-wrap: wrap; }
.search input:not([type=hidden]) { flex: 1 1 220px; }
.search > .button, .search > a { flex-shrink: 0; }
.category-filters a { min-height: 36px; }
.pagination { align-items: center; gap: 12px; flex-wrap: wrap; }
.pagination a { display: inline-flex; align-items: center; justify-content: center; min-height: 38px; padding: 8px 13px; border: 1px solid var(--line); border-radius:var(--radius); background: #fff; }
.pagination a:hover { background: color-mix(in srgb,var(--lime) 17%,var(--paper)); text-decoration: none; }
.list-name-form { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 16px; }
.list-name-form > p { flex: 1 1 260px; margin: 0; }
.list-name-form label { display: block; margin-bottom: 7px; font-size: 12px; font-weight: 600; }
.list-name-form > .button { flex: 0 0 auto; }
.list-name-form .errorlist { flex-basis: 100%; }
.list-selection { display: grid; gap: 8px; margin-bottom: 20px; }
.list-selection-row { display: flex; align-items: center; gap: 16px; border: 1px solid var(--line); border-radius:var(--radius); padding: 12px 14px; }
.list-selection-row label { flex: 1; display: flex; align-items: center; gap: 12px; min-width: 0; font-size: 12px; cursor: pointer; }
.list-selection-row input { flex: 0 0 17px; margin: 0; }
.list-selection-row .button { flex-shrink: 0; }
.list-selection-row:has(input:checked) { background: color-mix(in srgb,var(--lime) 11%,var(--paper)); border-color: color-mix(in srgb,var(--ink) 33%,var(--paper)); }
.combine-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 20px; }
.combine-actions .fineprint { flex: 1 1 250px; margin: 0; }
.shopping-allocation { padding: 14px 0; border-bottom: 1px solid var(--line); min-width: 240px; }
.shopping-allocation:first-child { padding-top: 0; }
.shopping-allocation:last-child { border-bottom: 0; padding-bottom: 0; }
.allocation-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.allocation-actions > form { margin: 0; }
.shopping-quantity-form select { max-width: 210px; padding: 7px 10px; min-height: 36px; }
.material-action-stack { width: 184px; max-width: 100%; }
.shopping-control-label { white-space: normal; }
.material-manage-actions { justify-content: flex-start; gap: 8px; }
.material-manage-actions > .button { flex: 1; }
.text-button { min-height: 34px; padding: 6px 10px; border-radius:var(--radius); }
.text-button:hover { background: color-mix(in srgb,var(--lime) 20%,var(--paper)); color: var(--ink); }
.top-account { display: flex; align-items: center; gap: 16px; }
.top-account form { margin: 0; }
.picture-dialog-heading .button { flex-shrink: 0; }
@media (max-width: 1000px) {
  .page-heading { flex-wrap: wrap; }
  .page-heading > .actions { max-width: 100%; justify-content: flex-start; }
}
@media (max-width: 620px) {
  .button, .actions .button, .page-heading > .button { min-height: 42px; font-size: 12px; padding: 10px 14px; }
  .button.small, .row-actions .button { min-height: 40px; padding: 9px 12px; }
  .page-heading > .actions { width: 100%; }
  .page-heading > .actions > .button, .page-heading > .actions > form { flex: 1 1 auto; }
  .panel-heading .button { font-size: 11px; }
  .visit-row > .visit-controls { grid-column: 1 / -1; }
  .visit-controls > .button { flex: 1 1 auto; }
  .visit-controls > .visit-progress-actions { flex: 1 1 100%; }
  .visit-progress-actions > .button { flex: 1; }
  .visit-row-actions .visit-controls > .button { flex: 0 1 auto; }
  .visit-row-actions .visit-controls > .visit-progress-actions { flex: 1 1 100%; }
  .visit-row-actions .visit-progress-actions > .button { flex: 0 1 auto; }
  .form-actions > .button { flex: 1 1 auto; }
  .form-actions .danger { margin-left: 0; }
  .shopping-add-buttons .button { min-height: 40px; padding: 8px 0; }
  .shopping-quantity-form input, .shopping-quantity-form select { min-height: 40px; }
  .list-name-form > .button { width: 100%; }
  .combine-actions > .button { width: 100%; }
  .list-selection-row { padding: 10px; gap: 8px; }
  .top-account { gap: 6px; }
}
@media (prefers-reduced-motion: reduce) { .button { transition: none; } }

/* On phones, keep row actions alongside their record instead of offscreen. */
@media (max-width: 620px) {
  .responsive-table, .responsive-table tbody { display: block; width: 100%; }
  .responsive-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .responsive-table tbody > tr { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 12px 16px; padding: 18px; border-bottom: 1px solid var(--line); }
  .responsive-table tbody > tr:last-child { border-bottom: 0; }
  .responsive-table td { display: block; width: auto; min-width: 0; padding: 0; border: 0; overflow-wrap: anywhere; }
  .responsive-table td:first-child { grid-column: 1 / -1; font-weight: 600; }
  .responsive-table td[data-label]::before { content: attr(data-label); display: block; margin-bottom: 5px; color: var(--muted); font-size: 10px; font-weight: 400; }
  .responsive-table td.number { text-align: left; white-space: normal; }
  .responsive-table .row-actions, .responsive-table td:last-child { grid-column: 1 / -1; text-align: left; width: auto; }
  .responsive-table .row-actions { padding-top: 12px; border-top: 1px solid var(--line); }
  .responsive-table .row-action-group, .responsive-table .visit-controls, .responsive-table .visit-progress-actions { justify-content: flex-start; }
  .responsive-table .visit-controls { margin-top: 0; }
  .responsive-table .visit-row-actions .visit-controls > .button { flex: 1 1 auto; }
  .responsive-table .visit-row-actions .visit-progress-actions > .button { flex: 1; }
  .responsive-table .empty-cell { grid-column: 1 / -1; padding: 12px 0; font-weight: 400; }
  .responsive-table .material-cell { min-width: 0; max-width: none; }
  .responsive-table .material-cell > div { min-width: 0; }
  .responsive-table .material-picture-button { flex-shrink: 0; }
  .responsive-table .material-thumbnail { flex-shrink: 0; }
  .responsive-table .material-action-stack { width: 100%; }
  .responsive-table .shopping-control { max-width: none; }
  .responsive-table .shopping-add-buttons { gap: 8px; }
  .responsive-table .material-manage-actions > .button { flex: 0 1 auto; }
  .materials-table td:nth-child(6) { grid-column: 1 / -1; }
  .selected-materials-table td:nth-child(2) { grid-column: 1 / -1; }
  .selected-materials-table td:last-child { grid-column: auto; }
  .selected-materials-table .shopping-quantity-form { flex-wrap: nowrap; }
  .shopping-table td:nth-child(3), .shopping-table td:nth-child(4) { grid-column: 1 / -1; }
  .shopping-table .shopping-allocation { min-width: 0; }
  .shopping-table .shopping-quantity-form { flex: 1 1 auto; }
  .shopping-table .shopping-quantity-form select { max-width: 100%; flex: 1 1 100%; order: -1; }
  .shopping-table .allocation-actions > form:last-child { flex: 0 0 auto; }
  .categories-table tbody > tr { grid-template-columns: minmax(0,1fr) auto; }
  .categories-table td:first-child { grid-column: 1; }
  .records-table .row-action-group { align-items: center; }
  .records-table .visit-controls { flex-basis: 100%; }
}

.visit-material-quantities { display:flex; align-items:flex-end; flex-wrap:wrap; gap:10px; min-width:230px; }
.visit-material-quantities > div { flex:0 1 120px; }
.visit-material-quantities label { display:block; font-size:11px; font-weight:600; margin-bottom:6px; }
.visit-material-quantities input { height:42px; }
.visit-material-summary { margin-top:24px; }
.usage-review { max-width:1000px; }
.usage-review-row { display:grid; grid-template-columns:1fr 1fr; gap:20px; align-items:center; padding:18px 0; border-bottom:1px solid var(--line); }
.usage-review-row small { display:block; color:var(--muted); font-size:12px; }
.usage-review-row .field { margin:0; }
.combined-visit-invoice #id_visits { display:grid; gap:10px; margin:20px 0; }
.combined-visit-invoice #id_visits label { display:flex; align-items:center; gap:12px; border:1px solid var(--line); border-radius:var(--radius); padding:14px; cursor:pointer; }
.combined-visit-invoice input[type=checkbox] { flex:0 0 17px; margin:0; }
.combined-visit-invoice label:has(input:checked) { background:color-mix(in srgb,var(--lime) 11%,var(--paper)); border-color:color-mix(in srgb,var(--ink) 33%,var(--paper)); }
select[multiple] { min-height:110px; }
.project-used-materials { grid-column:1 / -1; }
.invoice-visit { display:block; margin:8px 0; }
@media(max-width:620px) {
  .usage-review-row { grid-template-columns:1fr; gap:12px; }
  .visit-material-quantities { min-width:0; }
  .visit-material-quantities > div { flex:1 1 90px; }
  .visit-material-quantities > .button { flex:1 1 100%; }
}
@media(max-width:620px) {
  .usage-review .form-actions > .button,
  .combined-visit-invoice .form-actions > .button { flex-basis:100%; }
}

/* Status badges: one tone per meaning, set by office/status.py. */
.badge{background:var(--tone-neutral-bg);color:var(--tone-neutral);font-weight:600}
.badge.tone-scheduled{background:var(--tone-scheduled-bg);color:var(--tone-scheduled)}
.badge.tone-progress{background:var(--tone-progress-bg);color:var(--tone-progress)}
.badge.tone-attention{background:var(--tone-attention-bg);color:var(--tone-attention)}
.badge.tone-success{background:var(--tone-success-bg);color:var(--tone-success)}
.badge.tone-danger{background:var(--tone-danger-bg);color:var(--tone-danger)}
.badge.tone-muted{background:transparent;color:var(--tone-muted);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ink) 15%,var(--paper))}
h1 .badge{vertical-align:middle;font-size:12px;letter-spacing:0}
@media print{.badge[class*=tone-]{background:none!important;color:#000!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ink) 47%,var(--paper))}}
