/* =====================================================================
   app-workspace.css — Projects list, Sandbox and saved-project workspace
   (Design · Estimate · Job details). Pairs with app-core.css.
   Visual rules only; every view-state rule (body[data-workspace-view=…],
   .focus, .staff-only, hidden controls) is preserved.
   ===================================================================== */
:root{--work-navy:var(--ucl-brand);--work-red:var(--ucl-accent);--work-bg:var(--ucl-bg);--work-ink:var(--ucl-ink);--work-muted:var(--ucl-muted);--work-line:var(--ucl-line);--work-line-2:var(--ucl-line-2);--work-paper:var(--ucl-surface);--work-soft:var(--ucl-surface-2)}

*{box-sizing:border-box}
body{margin:0;background:var(--work-bg);color:var(--work-ink);font:15px/1.5 var(--ucl-font);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button,a{touch-action:manipulation}
button{cursor:pointer}
button:disabled{opacity:.5;cursor:not-allowed}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--ucl-brand);outline-offset:2px}
[hidden]{display:none!important}
a{color:inherit}
h1,h2,h3,p{margin:0}
h1{font-size:22px;line-height:1.25;letter-spacing:-.01em;font-weight:700}
h2{font-size:16px;font-weight:650}
h3{font-size:15px;font-weight:650}
small,.muted{color:var(--work-muted);font-size:13px}

/* legacy in-page bar (kept for pages that still render one) */
.bar{min-height:56px;padding:8px 20px;background:var(--ucl-header-bg);color:#fff;display:flex;align-items:center;gap:16px}
.bar .brand{font-weight:800;letter-spacing:.3px;text-decoration:none}
.bar .brand small{display:block;color:#d2dfed;font-weight:500;font-size:12px}
.bar nav{display:flex;gap:8px;margin-left:auto}
.bar nav a,.bar button{min-height:38px;display:inline-flex;align-items:center;padding:8px 14px;border:1px solid transparent;border-radius:8px;color:#fff;background:transparent;text-decoration:none;font-weight:600}
.bar nav a[aria-current=page]{background:rgba(255,255,255,.12)}

/* ---------- page frame ---------- */
.wrap{max-width:1400px;margin:auto;padding:20px 24px 110px}
.title-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}
.title-row p{margin-top:3px}
.title-row h1{overflow-wrap:anywhere}
.workspace-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* ---------- buttons ---------- */
.btn{min-height:38px;padding:8px 14px;border-radius:8px;border:1px solid var(--work-line-2);background:var(--work-paper);color:var(--work-ink);font-size:13.5px;font-weight:600;line-height:1.2;display:inline-flex;justify-content:center;align-items:center;gap:8px;text-decoration:none;white-space:nowrap;transition:background var(--ucl-fast),border-color var(--ucl-fast),color var(--ucl-fast)}
.btn:hover{background:var(--work-soft)}
.btn.primary{background:var(--work-red);border-color:var(--work-red);color:#fff}
.btn.primary:hover{background:var(--ucl-accent-strong);border-color:var(--ucl-accent-strong)}
.btn.navy{background:var(--work-navy);color:#fff;border-color:var(--work-navy)}
.btn.navy:hover{background:var(--ucl-brand-strong);border-color:var(--ucl-brand-strong)}
.btn.small{min-height:34px;padding:6px 11px;font-size:13px}
.btn.full,.full{width:100%}
@media(pointer:coarse){.btn{min-height:44px}.btn.small{min-height:40px}}

/* legacy step nav (re-homed by UCL.projectNav as #projectFlow) */
.steps{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}
.steps button,.steps a{flex:1;min-width:130px;min-height:44px;padding:8px 14px;border:1px solid var(--work-line);border-radius:8px;background:var(--work-paper);color:var(--work-muted);font-weight:600;display:flex;align-items:center;gap:10px;text-decoration:none}
.steps b{background:var(--ucl-surface-3);border-radius:50%;width:22px;height:22px;display:grid;place-items:center;font-size:12px;flex:none}
.steps .active{background:var(--work-navy);border-color:var(--work-navy);color:#fff}
.steps .active b{background:#ffffff26}

/* ---------- workspace layout ---------- */
.bench{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(340px,1fr);gap:20px;align-items:start}
.panel{background:var(--work-paper);border:1px solid var(--work-line);border-radius:12px;overflow:hidden;box-shadow:var(--ucl-shadow-sm)}
.pad{padding:20px}
.panel+.panel{margin-top:16px}

/* photo stage */
.photo{position:relative;aspect-ratio:4/3;background:var(--ucl-canvas);display:grid;place-items:center;overflow:hidden}
.photo>img{position:absolute;width:100%;height:100%;object-fit:contain}
.photo .after{clip-path:inset(0 0 0 50%)}
.photo-empty{padding:32px;text-align:center;color:#fff;max-width:420px}
.photo-empty h2{font-size:22px;margin-bottom:8px;color:#fff}
.photo-empty p{color:#b9c8d8;margin-bottom:18px;font-size:14px}
.photo-empty label{display:inline-flex}
.photo-empty .btn{background:var(--ucl-surface);color:var(--ucl-ink);border-color:transparent}
.compare{padding:10px 18px;display:flex;align-items:center;gap:12px;font-size:12.5px;font-weight:600;color:var(--work-muted);border-top:1px solid var(--work-line)}
.compare input{flex:1;min-height:32px;accent-color:var(--work-red)}
.photo-actions{padding:10px 14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;border-top:1px solid var(--work-line)}
.photo-actions .muted{margin-right:auto;font-size:13px}
.photo-actions .btn{font-size:13px}
.photo-actions .badge{padding:6px 10px}
.photo-loading{position:absolute;inset:auto 12px 12px;margin:0;padding:8px 12px;border-radius:8px;background:rgba(15,29,46,.85);color:#fff;font-size:13px;pointer-events:none}
#renderStatus{padding:10px 16px;color:var(--ucl-info);background:var(--ucl-info-bg);font-size:13.5px;border-top:1px solid var(--ucl-info-line)}
.render-spin{display:inline-block;width:14px;height:14px;border:2px solid var(--ucl-info-line);border-top-color:var(--ucl-info);border-radius:50%;animation:spin .8s linear infinite;margin-right:8px;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}

/* style picker (look) */
.style-row{display:flex;gap:8px;overflow:auto;margin:12px 0 18px;padding:2px 2px 6px}
.style-btn{flex:0 0 105px;border:1.5px solid var(--work-line);border-radius:8px;background:var(--work-paper);color:var(--work-ink);padding:8px;font-size:12.5px;font-weight:600;min-height:74px;line-height:1.25}
.style-btn[aria-pressed=true]{border-color:var(--work-navy);background:var(--ucl-brand-tint)}
.bulbs{display:flex;justify-content:center;gap:5px;margin:2px 0 8px;background:var(--ucl-canvas);border-radius:5px;padding:8px 5px}
.bulbs i{height:8px;width:8px;border-radius:50%;background:var(--bulb);box-shadow:0 0 5px var(--bulb)}

/* coverage chips */
.area-grid{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.chip{min-height:40px;border:1px solid var(--work-line-2);border-radius:8px;display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--work-paper);font-size:13.5px;font-weight:500;cursor:pointer;transition:background var(--ucl-fast),border-color var(--ucl-fast)}
.chip:hover{border-color:var(--work-navy)}
.chip:has(input:checked){background:var(--ucl-brand-tint);border-color:var(--work-navy);color:var(--work-ink);font-weight:600}
.chip input{width:18px;height:18px;margin:0;accent-color:var(--work-navy);flex:none}

/* fields */
.field{display:block;margin:14px 0;color:var(--ucl-ink-2);font-size:13px;font-weight:600}
.field input,.field select,.field textarea{display:block;width:100%;border:1px solid var(--work-line-2);border-radius:8px;background:var(--work-paper);min-height:42px;margin-top:6px;padding:9px 11px;color:var(--work-ink);font-weight:400;font-size:15px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--work-navy);box-shadow:var(--ucl-focus)}
.field textarea{resize:vertical}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.form-grid .wide{grid-column:1/-1}

/* estimate summary header (retired surface, still mounted) */
.price-head{background:var(--work-navy);color:#fff;padding:20px}
.price-head .kicker{font-size:13px;color:#d7e4f0}
.price-head .amount{font-size:36px;line-height:1.15;font-weight:750;letter-spacing:-.02em;margin:4px 0}
.price-head .renewal{color:#d7e4f0;font-size:14px}
.price-head .tag{display:inline-block;background:#ffffff1a;border-radius:6px;padding:3px 8px;font-size:11px;font-weight:700;letter-spacing:.06em;margin-bottom:12px}
.summary-tax{font-size:13px;margin-top:12px;color:#d7e4f0}
.estimate-row{border-bottom:1px solid var(--work-line);padding:14px 0;display:grid;grid-template-columns:minmax(180px,1fr) minmax(230px,1fr);column-gap:16px;align-items:center}
.estimate-row:last-child{border-bottom:0}
.line-top{display:flex;gap:10px;align-items:center}
.line-top input[type=checkbox]{width:20px;height:20px;accent-color:var(--work-navy);flex:none}
.line-top .line-name{flex:1;min-width:0;border:0;font-weight:600;font-size:15px;min-height:40px;width:100%;padding:7px 3px;background:transparent;color:var(--work-ink)}
.line-inputs{display:flex;align-items:center;gap:12px;margin:0}
.line-inputs label{font-size:13px;color:var(--work-muted)}
.line-inputs input{background:var(--work-paper);width:88px;min-height:40px;padding:8px;border:1px solid var(--work-line-2);border-radius:8px;color:var(--work-ink);display:block;font-size:15px}
.line-sum{margin-left:auto;font-weight:700;white-space:nowrap;min-width:70px;text-align:right}
.line-source{grid-column:1/-1;margin:6px 0 0 34px;font-size:13px;color:var(--work-muted)}
.estimate-row>.edit-product{grid-column:1;justify-self:start;margin-left:34px;background:transparent;border:0;padding:0 4px;font-weight:500;color:var(--work-muted)}
.remove-line{border:0;background:none;color:var(--work-muted);min-width:40px;min-height:40px;font-size:20px}
.price-note{font-size:13px;color:var(--work-muted);margin-top:12px;line-height:1.5}
.price-note strong{color:var(--work-ink)}
.deferred-items{margin-top:12px;border-top:1px solid var(--work-line);padding-top:12px}
.deferred-items>summary{cursor:pointer;min-height:40px;font-size:13px;color:var(--work-muted)}
.quantity-controls{margin:16px 0;padding:12px;border:1px solid var(--work-line);border-radius:10px;background:var(--work-soft)}
.quantity-controls .price-note{margin:6px 0 10px}
.quantity-actions{display:flex;gap:8px;flex-wrap:wrap}
.quantity-controls select{max-width:100%;margin-bottom:10px;padding:9px}
.estimate-comparison{width:100%;border-collapse:collapse;margin-bottom:16px}
.estimate-comparison th,.estimate-comparison td{text-align:left;padding:12px 8px;border-bottom:1px solid var(--work-line)}
.estimate-comparison thead{font-size:12.5px;color:var(--work-muted)}
.measurement-review{border-top:1px solid var(--work-line);margin-top:20px;padding-top:12px}
.measurement-review>summary{min-height:40px;cursor:pointer}
.customer-scope{display:none}
.customer-scope ul{padding-left:22px;line-height:1.8}

/* notices */
.notice{border:1px solid var(--ucl-warn-line);background:var(--ucl-warn-bg);color:var(--work-ink);padding:11px 14px;border-radius:10px;font-size:13.5px;margin:0 0 16px;line-height:1.5}
.notice.error{background:var(--ucl-danger-bg);border-color:var(--ucl-danger-line);color:var(--ucl-danger)}

/* pinned action bar */
.footer-actions{position:fixed;bottom:0;left:0;right:0;z-index:30;background:var(--work-paper);border-top:1px solid var(--work-line);padding:10px max(24px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:10px;box-shadow:0 -4px 16px rgba(15,31,51,.05)}
.save-status{margin-right:auto;font-size:13px;color:var(--work-muted)}
.save-status strong{color:var(--work-ink)}
.save-status[data-state=error]{color:var(--work-red);font-weight:600}
.autosave-indicator{display:flex;align-items:center;gap:8px;font-size:13px}
.autosave-indicator .save-status{font-size:13px;max-width:250px}

/* job panel */
.job-panel{margin-top:20px}
.job-panel .job-actions{display:flex;flex-wrap:wrap;gap:10px}
.job-sections{display:grid;gap:10px;margin:18px 0}
.job-section{border:1px solid var(--work-line);border-radius:10px;padding:0 16px;min-width:0;margin:0;background:var(--work-paper)}
.job-section legend{font-size:16px;font-weight:650;padding:0 8px}
/* accordion: chevron on the left, "n of m done" on the right, one open at a time */
.job-section>summary{font-size:15px;font-weight:650;cursor:pointer;min-height:52px;display:flex;align-items:center;gap:10px;list-style:none;margin:0 -16px;padding:0 16px}
.job-section>summary::-webkit-details-marker{display:none}
.job-section>summary::before{content:"";width:8px;height:8px;border-right:2px solid var(--work-muted);border-bottom:2px solid var(--work-muted);transform:rotate(-45deg);transition:transform .15s;flex:none;margin-right:2px}
.job-section[open]>summary::before{transform:rotate(45deg)}
.job-section[open]>summary{border-bottom:1px solid var(--work-line);margin-bottom:14px}
.job-section__done{margin-left:auto;font-size:12.5px;font-weight:600;color:var(--work-muted)}
.job-section__done:empty{display:none}
.job-section[open]{padding-bottom:16px}
.job-section .job-fields{margin-bottom:14px}
/* what the customer picked on their quote, right under the install date */
.job-customer-choice{grid-column:1/-1;margin:-6px 0 4px;padding:9px 12px;border-radius:8px;background:var(--ucl-brand-tint,#eef3fb);color:var(--work-ink);font-size:13px;line-height:1.45}
/* the customer's chosen week as seven days: tap one to schedule */
.job-week{display:grid;gap:8px}
.job-week .hint{margin:0}
.job-week__days{display:flex;flex-wrap:wrap;gap:6px}
.job-week__day{min-height:38px;padding:6px 11px;border:1px solid var(--work-line-2);border-radius:8px;background:var(--work-paper);color:var(--work-ink);font:600 13px/1.2 inherit;font-family:inherit;cursor:pointer}
.job-week__day:hover{border-color:var(--ucl-brand);background:var(--work-soft)}
.job-week__day[aria-pressed=true]{background:var(--ucl-brand);border-color:var(--ucl-brand);color:var(--ucl-on-brand)}
.job-week__day:focus-visible{outline:2px solid var(--ucl-brand);outline-offset:2px}
/* payments on the job: paid from the quote link, due at installation */
.job-payments{margin:0 0 14px;padding:14px 16px;border:1px solid var(--work-line);border-radius:12px;background:var(--work-paper)}
.job-payments h3{margin:0 0 8px;font-size:15px}
.job-payments__rows{margin:0;display:grid;gap:6px}
.job-payments__rows>div{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.job-payments__rows dt{color:var(--work-muted);font-size:13.5px}
.job-payments__rows dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums}
.job-payments__due dt{color:var(--work-ink);font-weight:600}
.job-payments__due dd{color:var(--ucl-brand);font-size:17px}
.job-payments .hint{margin:8px 0 0}
.job-payments__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.job-payments__actions:empty{display:none}
.job-payments__buttons{display:flex;flex-wrap:wrap;gap:8px;width:100%}
.job-payments__paid dt{color:var(--ucl-ok);font-weight:600}
.job-payments__paid dd{color:var(--ucl-ok)}
.job-payments h3 .ucl-status{margin-left:8px;vertical-align:middle}
.job-payments .notice{margin:0 0 6px}
.linklike{border:0;background:none;padding:0;color:var(--ucl-brand);font:inherit;text-decoration:underline;cursor:pointer}
/* checklist reads as a checklist, not a row of buttons */
.job-section .chips{margin-top:6px;display:grid;gap:2px}
.job-section .chips .chip{border:0;background:transparent;padding:6px 2px;min-height:40px;border-radius:6px;font-weight:500}
.job-section .chips .chip:has(input:checked){background:transparent;color:var(--work-muted);text-decoration:line-through;font-weight:500}
.job-section .chips .chip:hover{background:var(--work-soft)}
.job-section input,.job-section textarea{color:var(--work-ink);background:var(--work-paper)}
.job-section #addJobPhoto{margin-top:14px}
.job-panel>h3{margin-top:22px}
.job-panel #jobPhotos{margin-top:10px}
.job-panel #jobPhotos:empty{display:none}
.job-more{margin-top:22px;border-top:1px solid var(--work-line);padding-top:6px}
.job-more>summary{cursor:pointer;min-height:40px;display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--work-muted);list-style:none}
.job-more>summary::-webkit-details-marker{display:none}
.job-more>summary::before{content:"···";letter-spacing:1px;font-weight:700}
.job-more__body{display:grid;gap:8px;padding:4px 0 8px}
.job-more__body>details{border:1px solid var(--work-line);border-radius:10px;padding:0 14px}
.job-more__body>details>summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-weight:600;font-size:14px}
.job-more__body>details[open]{padding-bottom:12px}
.job-more__body .measurement-review{border-top:0;margin-top:0;padding-top:0}
#activity p{margin:0 0 10px;font-size:13.5px}
#activity p strong{font-weight:600}
#activity small{color:var(--work-muted)}
.activity-routine{display:flex;gap:8px;align-items:baseline;color:var(--work-muted);font-size:13px!important}
.activity-routine span{font-weight:500}

/* ---------- projects list ---------- */
.filters{display:block;overflow:visible;padding:4px 0 18px}
.filters button{white-space:nowrap}
.filters .active{background:var(--work-navy);color:#fff}
.filter-group{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 12px}
.filter-group>span{min-width:44px;font-size:12.5px;font-weight:600;color:var(--work-muted)}
.search{color:var(--work-ink);width:min(100%,400px);min-height:40px;border:1px solid var(--work-line-2);border-radius:8px;padding:8px 14px;background:var(--work-paper);font-size:14px}
.search:focus{outline:none;border-color:var(--work-navy);box-shadow:var(--ucl-focus)}
.sort-field{margin:0 0 0 auto;min-width:0;align-self:center;display:flex;align-items:center;gap:8px;white-space:nowrap}
.sort-field select{min-height:40px;margin:0;width:auto;min-width:180px;font-size:14px}
.sort-field+#refreshBtn{align-self:end}
.title-row:has(#projectSearch){align-items:center;margin-bottom:16px}
.price-basis{display:block;margin-top:2px;color:var(--work-muted);font-size:12.5px}
.price-basis--paid{color:var(--ucl-ok);font-weight:600}

/* new deposits since this device last said "Got it" */
.deposit-news{margin:-4px 0 16px;padding:12px 14px;border:1px solid var(--ucl-ok-line);border-left-width:4px;border-radius:10px;background:var(--ucl-ok-bg);color:var(--work-ink)}
.deposit-news__head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.deposit-news__head strong{font-size:15px;color:var(--ucl-ok)}
.deposit-news__dismiss{min-height:34px;padding:4px 12px;font-size:13px}
.deposit-news ul{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:6px}
.deposit-news a{color:inherit;text-decoration:none;font-size:14px;line-height:1.45}
.deposit-news a:hover strong{text-decoration:underline}

/* pipeline chips: one per stage, counts from the loaded list */
.pipeline-chips{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 18px}
.pipeline-chips:empty{display:none}
.pipeline-chip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 12px 6px 14px;border:1px solid var(--work-line-2);border-radius:999px;background:var(--work-paper);color:var(--work-ink);font:600 13.5px/1.2 inherit;font-family:inherit;cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.pipeline-chip:hover{border-color:var(--ucl-brand);background:var(--work-soft)}
.pipeline-chip:focus-visible{outline:2px solid var(--ucl-brand);outline-offset:2px}
.pipeline-chip[aria-pressed=true]{background:var(--ucl-brand);border-color:var(--ucl-brand);color:var(--ucl-on-brand)}
.pipeline-chip__count{font-size:12px;font-weight:700;min-width:20px;padding:1px 6px;border-radius:999px;background:var(--work-soft);color:var(--work-muted);text-align:center}
.pipeline-chip[aria-pressed=true] .pipeline-chip__count{background:rgba(255,255,255,.18);color:inherit}

.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.project-card{position:relative;display:flex;flex-direction:column;border:1px solid var(--work-line);background:var(--work-paper);border-radius:12px;overflow:hidden;text-decoration:none;color:var(--work-ink);box-shadow:var(--ucl-shadow-sm);transition:box-shadow .15s,border-color .15s,transform .15s}
.project-card:hover{box-shadow:var(--ucl-shadow);border-color:var(--work-line-2);transform:translateY(-1px)}
.project-card>a.project-link{display:flex;flex-direction:column;flex:1;color:inherit;text-decoration:none}
.project-image{aspect-ratio:4/3;height:auto;background:var(--ucl-canvas);display:grid;place-items:center;overflow:hidden;color:#9fb0c3;font-size:13px;position:relative}
.project-image img{width:100%;height:100%;object-fit:contain;display:block}
.project-image[aria-busy=true]{background:var(--ucl-surface-3)}
.project-image[aria-busy=true]::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);transform:translateX(-100%);animation:shimmer 1.3s infinite}
.project-image__empty{font-size:12.5px;font-weight:600;color:#9fb0c3;letter-spacing:.02em}
.project-info{padding:14px 16px 16px;display:flex;flex-direction:column;gap:2px;flex:1}
.project-pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.project-pills:empty{display:none}
.project-info h2{font-size:16px;margin:0 0 2px;font-weight:650;overflow-wrap:anywhere;line-height:1.3}
.project-info p{font-size:13px;color:var(--work-muted);overflow-wrap:anywhere;margin:0}
.project-address:empty{display:none}
.project-phone{font-variant-numeric:tabular-nums;margin-top:2px!important}
.project-meta{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-top:auto;padding-top:12px;border-top:1px solid var(--work-line)}
.project-info>.project-meta{margin-top:14px}
.project-meta strong{font-size:16px;font-weight:700}
.project-meta__none{font-size:14px!important;font-weight:600!important;color:var(--work-muted)}
.project-meta>small{padding-top:3px;white-space:nowrap;color:var(--work-muted);font-size:12.5px}
.project-card-next{margin-top:8px!important;font-size:13px!important;font-weight:600;color:var(--ucl-brand)!important;display:flex;align-items:center;gap:6px}
.project-card-next::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.7}
.project-card--draft .project-card-next{color:var(--work-muted)!important}
.project-card-note{padding:8px 16px;font-size:12.5px;border-top:1px solid var(--work-line);background:var(--ucl-warn-bg);color:var(--ucl-warn)}
.project-card-note a{color:inherit;font-weight:600}
.project-card-actions{display:flex;justify-content:flex-end;padding:8px 12px;border-top:1px solid var(--work-line);background:var(--work-soft)}
.project-hot-lead{min-height:44px;padding:8px 12px;font-size:13px;color:#a43b0b;background:#fff0e4;border-color:#edb180}
.project-hot-lead:disabled{opacity:.6;cursor:wait}
.project-archive{min-height:32px;padding:5px 10px;font-size:12.5px;color:var(--work-muted);border-color:transparent;background:transparent}
.project-archive:hover{background:var(--work-paper);border-color:var(--work-line-2);color:var(--work-ink)}
.project-archive:disabled{opacity:.6;cursor:wait}
.project-draft-delete{min-height:44px;padding:8px 12px;font-size:13px;color:var(--ucl-danger);background:transparent;border-color:var(--ucl-danger-line)}
.project-draft-delete:hover{background:var(--ucl-danger-bg)}
.project-draft-delete:disabled{opacity:.6;cursor:wait}
.project-link:focus-visible{outline:2px solid var(--ucl-brand);outline-offset:-3px}
.empty{padding:48px 24px;text-align:center;background:var(--work-paper);border:1px dashed var(--work-line-2);border-radius:12px}
.empty p{margin:8px 0 20px}

/* customer-facing focus mode */
.focus .staff-only,.focus .job-panel{display:none!important}
.focus .wrap{padding-top:18px}
.focus .bench{grid-template-columns:minmax(0,1.8fr) minmax(320px,1fr)}
.focus .line-inputs{display:none}
.focus .remove-line{display:none}
.focus .line-name{pointer-events:none}
.focus .photo{aspect-ratio:4/3}
.focus .customer-scope{display:block}
.focus #estimateLines,.focus #accuracyNote{display:none!important}
.focus .estimate-summary{position:static}
.focus .estimate-summary .footer-actions{display:none!important}
.focus #estimatePanel>.pad{border:0}
.focus #estimatePanel{width:100%}
.estimate-summary #decisionBtn{grid-column:1/-1}
@media(max-width:699px){body[data-workspace-view=estimate]:not(.focus) .estimate-summary{order:-1}}
.focus .measurement-review,.focus .quantity-controls,.focus .autosave-indicator,.focus #appHeader .ucl-hd__right{display:none!important}
.focus .workspace-actions{display:flex}
.focus #focusBtn{display:inline-flex!important}
/* Show customer: app bar and tool tabs go away; the project header stays with the customer's own name and address only
   (no pipeline pills, price, phone or the way back into the tools). "Back to editing" floats bottom-right from app-core.css. */
.focus #appHeader{display:block!important}
.focus #appHeader .ucl-hd{display:none!important}
.focus .ucl-project-hd{border-bottom:0;background:transparent;padding-top:14px;padding-bottom:0}
.focus .ucl-project-hd__back,.focus .ucl-project-hd__pills,.focus .ucl-project-hd__meta a,.focus .ucl-project-hd__dot{display:none!important}
/* Project header hosts the page actions (save state, Show customer). */
.ucl-project-hd__actions .workspace-actions{margin:0}
.ucl-project-hd__actions .save-status{margin-right:0}
.ucl-project-hd__actions #retrySave{min-height:32px}
.last-opened{flex:none;max-width:min(100%,360px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;color:var(--ucl-brand)}

body[data-page=project] #workspaceHeading{max-width:950px}

/* ---------- responsive ---------- */
@media(max-width:1099px){
 .bench{gap:16px;grid-template-columns:minmax(0,1.2fr) minmax(320px,1fr)}
 .project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .wrap{padding:18px 18px 118px}
 .bar{padding:8px 16px}
 .pad{padding:16px}
 .photo{aspect-ratio:1/1}
}
@media(max-width:699px){
 .bench,.focus .bench{grid-template-columns:1fr}
 .bar{gap:8px}
 .bar nav a,.bar button{padding:8px 12px}
 .bar .brand small{display:none}
 .bar .brand{font-size:14px}
 .title-row{align-items:flex-start;flex-wrap:wrap}
 h1{font-size:20px}
 .photo{aspect-ratio:4/3}
 .steps{gap:6px}
 .steps a,.steps button{min-width:calc(50% - 6px);flex:none;width:calc(50% - 3px)}
 .footer-actions{padding:10px 12px max(10px,env(safe-area-inset-bottom));flex-wrap:wrap;gap:8px}
 .footer-actions .save-status{width:100%;font-size:12px}
 .footer-actions .btn{flex:1;font-size:14px;padding:8px}
 .project-grid{gap:12px}
 .project-info{padding:12px}
 .project-info h2{font-size:15px}
 .project-meta{flex-wrap:wrap}
 .wrap{padding-bottom:145px}
}
@media(max-width:600px){#projectSearch{width:100%}.sort-field{flex:1;min-width:0}}
@media(max-width:480px){
 .project-grid{grid-template-columns:1fr}
 .form-grid{grid-template-columns:1fr}
 .bar nav a{font-size:14px}
 .bar .brand{max-width:110px}
 .steps a,.steps button{font-size:14px;padding:9px}
}
@media print{
 .bar,.steps,.footer-actions,.staff-only,.photo-actions,.compare,.style-panel,.job-panel{display:none!important}
 .wrap{padding:0}
 .bench{display:block}
 .panel{break-inside:avoid;margin:15px 0;box-shadow:none}
 .photo{aspect-ratio:4/3}
 .line-inputs{display:none}
 .price-head{background:white;color:black}
 .price-head .kicker,.price-head .renewal{color:#333}
}

/* ---------- design view: photo beside its settings ---------- */
body[data-workspace-view] .photo{aspect-ratio:16/10;max-height:460px}
.style-panel{scroll-margin-top:90px;overflow:visible}
.style-panel h2{font-size:15px;margin-bottom:2px}
.style-panel .area-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:10px 0 14px}
.style-panel .chip{padding:7px 9px;min-height:40px}
.look-label{display:block;font-size:13px;font-weight:600;color:var(--ucl-ink-2);margin-bottom:6px}
.style-picker{position:relative}
.style-picker>summary{list-style:none;min-height:42px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border:1px solid var(--work-line-2);border-radius:8px;cursor:pointer;font-size:15px;background:var(--work-paper)}
.style-picker>summary::-webkit-details-marker{display:none}
.style-picker[open]>summary{border-color:var(--work-navy);box-shadow:var(--ucl-focus)}
.style-picker .style-row{position:absolute;z-index:25;top:calc(100% + 6px);left:0;right:0;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:0!important;padding:10px;background:var(--work-paper);border:1px solid var(--work-line);border-radius:12px;box-shadow:var(--ucl-shadow-lg);max-height:min(340px,var(--look-room,340px));overflow:auto!important}
.style-picker[data-side=above] .style-row{top:auto;bottom:calc(100% + 6px)}
.style-picker .style-btn{min-height:58px!important;min-width:0;padding:6px!important;font-size:13px!important}
.style-picker .bulbs{padding:5px;margin:0 0 5px}
.style-panel .field{margin:12px 0}
.style-panel .field textarea{min-height:64px;max-height:96px}
.style-panel>.price-note{display:none}
.design-notes{margin:12px 0}
.design-notes>summary{cursor:pointer;font-size:13.5px;min-height:40px;padding:8px 0;color:var(--ucl-ink-2);font-weight:600}
.design-notes .field{margin-top:0}
#designOptionCount{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:50%;background:var(--ucl-surface-3);font-size:12px;font-weight:700}

@media(min-width:1100px){
 body[data-workspace-view=design]:not(.focus) .bench{grid-template-columns:minmax(0,1fr) 380px;align-items:start}
 body[data-workspace-view=design]:not(.focus) .bench>section{display:contents}
 body[data-workspace-view=design]:not(.focus) .bench>section>.panel:first-child{grid-column:1;grid-row:1}
 body[data-workspace-view=design]:not(.focus) .style-panel{grid-column:2;grid-row:1;margin:0;padding:18px}
 body[data-workspace-view=design]:not(.focus) .style-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
 body[data-workspace-view=design]:not(.focus) .style-btn{min-width:0;min-height:66px;padding:8px;font-size:13px}
 body[data-workspace-view=design]:not(.focus) #estimatePanel{grid-column:1/-1;grid-row:2;position:static}
}

/* Each step gets its own working surface. */
body[data-workspace-view=design]:not(.focus) #estimatePanel,
body[data-workspace-view=design]:not(.focus) #focusBtn,
body[data-workspace-view=design]:not(.focus) #acceptedQuoteBtn,
body[data-workspace-view=design]:not(.focus) #decisionBtn,
body[data-workspace-view]:not([data-workspace-view=job]) #jobPanel{display:none!important}
body[data-workspace-view=estimate]:not(.focus) .bench>section{display:none!important}
body[data-workspace-view=estimate]:not(.focus) .bench{display:block;max-width:none;margin:0 auto}
body[data-workspace-view] .bench>section>.panel:first-child{order:-1}
body[data-workspace-view] .steps>a[hidden]{display:none!important}
body[data-workspace-view] #estimatePanel[hidden]{display:none!important}
@media(max-width:699px){
 body[data-workspace-view] .steps a,body[data-workspace-view] .steps button{flex:1;min-width:0;width:auto}
 body[data-workspace-view] .steps{flex-wrap:nowrap}
}

/* Keep placement, look, notes and generation together in the Design viewport. */
body[data-workspace-view] .wrap{padding-top:18px;padding-bottom:28px}
body[data-workspace-view] .title-row{margin-bottom:14px}
body[data-workspace-view] .steps{margin-bottom:14px}
body[data-workspace-view] .steps a,body[data-workspace-view] .steps button{min-height:44px;padding:8px 14px}
body[data-workspace-view]:not([data-workspace-view=estimate]) .footer-actions{display:none}
body[data-workspace-view=estimate]:not(.focus) .wrap{padding-bottom:28px}
/* Sandbox: the customer prompt at the top of Design covers what #detailsBtn did, so the header stays light on that tab. */
body[data-page=sandbox][data-workspace-view=design] #detailsBtn{display:none}
.customer-prompt{display:grid;gap:10px;padding:12px 14px;margin:0 0 16px;border:1px dashed var(--ucl-brand);border-radius:10px;background:var(--ucl-brand-tint)}
.customer-prompt.is-known{grid-template-columns:minmax(0,1fr) auto;align-items:center}
.customer-prompt.is-known{border-style:solid;border-color:var(--work-line);background:var(--work-soft)}
.customer-prompt__text{min-width:0}
.customer-prompt strong{display:block;font-size:14.5px;overflow-wrap:anywhere}
.customer-prompt .muted{font-size:12.5px;margin-top:2px}
.customer-prompt .btn{min-height:38px;justify-self:stretch}
.customer-prompt.is-known .btn{justify-self:end;min-height:34px;padding:6px 11px;font-size:13px}
body[data-workspace-view=estimate] .customer-prompt{display:none}
#generateBtn.is-quiet{background:var(--work-paper);color:var(--work-ink);border-color:var(--work-line-2)}
#generateBtn.is-quiet:hover{background:var(--work-soft)}
.design-next{margin-top:8px}
#renderStatus.is-progress{padding:14px 16px}
.render-progress{display:grid;gap:4px}
.render-progress strong{font-size:14px;color:var(--ucl-ink)}
.render-progress span{font-size:13px;color:var(--ucl-info)}
.render-bar{height:8px;margin:8px 0 4px;border-radius:999px;background:var(--ucl-info-line);overflow:hidden}
.render-bar i{display:block;height:100%;width:0;border-radius:999px;background:var(--ucl-info);transition:width .6s ease}
.render-progress small{font-size:12px;color:var(--ucl-info)}
body[data-workspace-view]:not([data-workspace-view=estimate]):not(.focus) #focusBtn{display:none}

@media(min-width:700px){
 body[data-workspace-view=design]:not(.focus) .bench{grid-template-columns:minmax(0,1fr) minmax(310px,360px);gap:16px;align-items:start}
 body[data-workspace-view=design]:not(.focus) .bench>section{display:contents}
 body[data-workspace-view=design]:not(.focus) .bench>section>.panel:first-child{grid-column:1;grid-row:1}
 body[data-workspace-view=design]:not(.focus) .style-panel{grid-column:2;grid-row:1;margin:0;padding:16px}
 body[data-workspace-view] .photo{height:clamp(240px,calc(100dvh - 310px),510px);max-height:none;aspect-ratio:auto}
}
@media(min-width:700px) and (max-width:1099px){
 body[data-workspace-view=design]:not(.focus) .bench{grid-template-columns:minmax(0,1fr) 300px}
 body[data-workspace-view=estimate]:not(.focus) #estimatePanel{grid-template-columns:minmax(0,1fr) 270px;gap:16px}
 .estimate-row{grid-template-columns:1fr}
}
@media(max-width:699px){
 body[data-workspace-view] .bench>section{display:flex;flex-direction:column;gap:12px}
 body[data-workspace-view] .style-panel{order:-1;margin:0;padding:14px}
 body[data-workspace-view] .title-row h1{font-size:19px}
 body[data-workspace-view] .title-row .muted{display:none}
 .workspace-actions{width:100%;justify-content:space-between}
 .style-panel .area-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
 .style-panel .chip{font-size:13px;display:flex;align-items:flex-start;flex-direction:column;gap:5px}
 .style-picker .style-row{max-height:min(280px,var(--look-room,280px))}
 .photo-actions{padding:10px}
 .photo-actions .btn{flex:1}
 .photo-actions .muted{flex:1 1 100%}
}

/* ---------- estimate view ---------- */
body[data-workspace-view=estimate]:not(.focus) #estimatePanel{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;background:transparent;border:0;overflow:visible;align-items:start;box-shadow:none}
#estimatePanel>.pad{grid-column:1;grid-row:1;background:var(--work-paper);border:1px solid var(--work-line);border-radius:12px;min-width:0}
.estimate-summary{grid-column:2;grid-row:1;position:sticky;top:16px;min-width:0;overflow:hidden;border-radius:12px;border:1px solid var(--work-line);background:var(--work-paper)}
.estimate-summary .footer-actions{display:flex!important;position:static;flex-direction:column;align-items:stretch;padding:16px;gap:8px;border:0;box-shadow:none}
.estimate-summary .footer-actions:empty{display:none!important}
.estimate-summary .footer-actions .btn{width:100%}
body #estimatePanel>.retired-estimate-controls{display:none!important}
/* Launcher shown behind the estimate editor: one clear primary action, secondary actions beside it. */
/* Estimate tab = the estimate. Toolbar (decision, history, save to projects) above the inline editor. */
.estimate-page{grid-column:1/-1;display:grid;gap:14px;min-width:0}
.estimate-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;min-height:40px}
.estimate-toolbar:not(:has(.btn:not([hidden]))){display:none}
.estimate-toolbar__actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.estimate-toolbar__actions .btn{min-height:40px}
.estimate-measurements{border:1px solid var(--work-line);border-radius:10px;background:var(--work-paper);min-width:0}
.estimate-measurements>summary{padding:12px 16px;cursor:pointer;font-size:14px;font-weight:600}
.estimate-measurements__body{padding:0 16px 14px}
.estimate-measurements .quantity-controls{margin:0;padding:0;border:0;background:transparent}
.estimate-editor{min-width:0;position:relative}
.estimate-editor[aria-busy=true]:has(.pamphlet-editor){opacity:.6;pointer-events:none;transition:opacity .2s}
.estimate-placeholder,.estimate-retry{display:flex;align-items:center;justify-content:center;gap:12px;min-height:220px;padding:24px;background:var(--work-paper);border:1px solid var(--work-line);border-radius:12px;color:var(--work-muted);font-size:14px}
.estimate-retry{flex-direction:column}
.estimate-retry p{margin:0;color:var(--work-ink)}
body #estimatePanel>.customer-card{display:none}
@media(max-width:699px){.estimate-toolbar,.estimate-toolbar__actions{justify-content:stretch}.estimate-toolbar__actions{width:100%}.estimate-toolbar__actions .btn{flex:1 1 auto}}
/* Show customer: the customer's card replaces the editor. */
.focus #estimatePanel>.estimate-page{display:none!important}
.focus #estimatePanel>.customer-card{display:block;padding:22px 24px;background:var(--work-paper);border:1px solid var(--work-line);border-radius:12px;box-shadow:var(--ucl-shadow-sm)}
.customer-card__kicker{margin:0 0 6px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--work-muted);font-weight:700}
.customer-card__look{margin:0 0 10px;font-size:22px;font-weight:650;line-height:1.2}
.customer-card__total{margin:0 0 14px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;color:var(--work-muted);font-size:14px}
.customer-card__total strong{font-size:28px;color:var(--work-ink);letter-spacing:-.01em}
.customer-card__included{margin:0 0 18px;padding-left:20px;line-height:1.8;font-size:14.5px}
.customer-card #customerEstimateBtn{width:100%;min-height:48px;font-size:15px}
.focus .photo-actions .btn,.focus #downloadBtn{display:none!important}
.customer-document iframe{display:block;width:100%;height:calc(100dvh - 120px);min-height:480px;border:0;background:#fff}
.customer-document-modal{width:calc(100vw - 32px)!important;max-width:1100px!important}
.customer-document-modal .ucl-modal__scroll{padding:0}

/* ---------- loading states ---------- */
.workspace-loading .bench,.workspace-loading .title-row,.workspace-loading .project-overview,.workspace-load-failed .bench,.workspace-load-failed .title-row,.workspace-load-failed .project-overview{visibility:hidden}
.workspace-loading main:before{content:'Loading house, design and estimate…';display:block;padding:48px 24px;background:var(--work-paper);border:1px solid var(--work-line);border-radius:12px;color:var(--work-muted);min-height:200px;font-size:14px}
.workspace-load-failed #pageError{visibility:visible}

/* ---------- schedule: the day picker (Job details and the Calendar) ---------- */
.job-pick{margin:-4px 0 10px;align-self:start}
.pick{display:grid;gap:14px;min-width:0}
.pick__who{margin:0;font-weight:650}
.pick__week .hint{margin:0 0 8px}
.pick .job-week__day{display:grid;justify-items:center;gap:2px;min-width:74px}
.pick .job-week__day small{font-size:11px;font-weight:600;opacity:.8}
.pick__nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.pick__nav strong{font-size:15px}
.pick__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.pick__dow{font-size:11px;font-weight:700;color:var(--work-muted);text-align:center;padding:2px 0 4px;letter-spacing:.03em}
.pick__day{position:relative;min-height:40px;padding:4px 2px;border:1px solid var(--work-line);border-radius:8px;background:var(--work-paper);color:var(--work-ink);font:600 13px/1.2 inherit;font-family:inherit;cursor:pointer;display:grid;place-items:center;gap:2px}
.pick__day:hover{border-color:var(--ucl-brand);background:var(--work-soft)}
.pick__day--out{color:var(--work-muted);opacity:.6}
.pick__day--week{background:var(--ucl-brand-tint);border-color:var(--ucl-brand-tint-2)}
.pick__day--today span{text-decoration:underline;text-underline-offset:3px}
.pick__day[aria-pressed=true]{background:var(--ucl-brand);border-color:var(--ucl-brand);color:var(--ucl-on-brand)}
.pick__dot{width:6px;height:6px;border-radius:50%;background:var(--ucl-accent);display:block}
.pick__day[aria-pressed=true] .pick__dot{background:#fff}
.pick__chosen{margin:0;font-size:13.5px;color:var(--work-muted);min-height:1.4em}
@media(pointer:coarse){.pick__day{min-height:44px}}

/* ---------- Calendar page ---------- */
.cal-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cal-views,.cal-nav{display:inline-flex;gap:4px}
.cal-views .btn[aria-pressed=true]{background:var(--ucl-brand);border-color:var(--ucl-brand);color:var(--ucl-on-brand)}
.cal-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,340px);gap:18px;align-items:start;margin-bottom:18px}
.cal-panel{padding:14px 16px 16px}
.cal-title{margin:0 0 12px;font-size:17px}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal-dow{font-size:11px;font-weight:700;color:var(--work-muted);text-align:center;padding:2px 0 4px;letter-spacing:.03em}
.cal-day{display:flex;flex-direction:column;min-height:96px;border:1px solid var(--work-line);border-radius:8px;background:var(--work-paper);overflow:hidden}
.cal-grid--week .cal-day{min-height:220px}
.cal-day--out{opacity:.55}
.cal-day--today{border-color:var(--ucl-brand)}
.cal-day--selected{box-shadow:0 0 0 2px var(--ucl-brand) inset}
.cal-day__head{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;padding:6px 8px 4px;border:0;background:transparent;color:inherit;font:inherit;font-family:inherit;text-align:left;cursor:pointer;width:100%}
.cal-day__head:hover{background:var(--work-soft)}
.cal-day__num{font-weight:700;font-size:14px}
.cal-day--today .cal-day__num{color:var(--ucl-brand)}
.cal-day__name{font-size:12px;color:var(--work-muted);font-weight:600}
.cal-day__count{font-size:11px;color:var(--work-muted);width:100%}
.cal-day__jobs{display:grid;gap:3px;padding:0 6px 6px}
.cal-day__more{border:0;background:transparent;color:var(--ucl-brand);font:600 12px/1.2 inherit;font-family:inherit;text-align:left;padding:2px 4px;cursor:pointer}
.cal-job{display:flex;align-items:stretch;gap:6px;border-radius:6px;overflow:hidden}
.cal-job__main{display:grid;gap:1px;flex:1;min-width:0;padding:4px 7px;border-left:3px solid var(--ucl-brand);background:var(--ucl-brand-tint);color:var(--work-ink);text-decoration:none;font-size:12.5px;line-height:1.3;border-radius:6px}
.cal-job--removal .cal-job__main{border-left-color:var(--work-muted);background:var(--work-soft)}
.cal-job__main:hover strong{text-decoration:underline}
.cal-job__main strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-job__kind{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ucl-brand)}
.cal-job--removal .cal-job__kind{color:var(--work-muted)}
.cal-job__addr,.cal-job__bits{color:var(--work-muted);font-size:12.5px;white-space:normal}
.cal-job__move{align-self:center;flex:none}
.cal-sheet{padding:14px 16px 16px;position:sticky;top:12px}
.cal-sheet h2{margin-bottom:2px}
.cal-sheet__list{display:grid;gap:8px;margin-top:12px}
.cal-sheet .cal-job__main{padding:8px 10px}
.cal-sheet .cal-job__main strong{white-space:normal}
.cal-needs,.cal-google{padding:14px 16px 16px;margin-bottom:18px}
.cal-needs h2,.cal-google h2{margin-bottom:2px}
.cal-needs__list{display:grid;gap:8px;margin-top:12px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.cal-needs .cal-job__main{padding:8px 10px}
.cal-google__actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
@media(max-width:899px){.cal-layout{grid-template-columns:1fr}.cal-sheet{position:static}.cal-day{min-height:72px}.cal-grid--month .cal-day__jobs{display:none}.cal-grid--month .cal-day__count{display:none}.cal-grid--month .cal-day__head::after{content:"";display:block;width:100%}.cal-grid--month .cal-day{min-height:56px}.cal-grid--month .cal-day__head{flex-direction:column;align-items:flex-start;gap:2px}}
@media(max-width:899px){.cal-grid--month .cal-day__num{font-size:15px}.cal-grid--week{grid-template-columns:1fr}.cal-grid--week .cal-dow{display:none}.cal-grid--week .cal-day{min-height:0}}
.cal-day__dot{display:none;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--ucl-brand);color:var(--ucl-on-brand);font:700 11px/18px inherit;font-family:inherit;font-style:normal;text-align:center}
@media(max-width:899px){.cal-grid--month .cal-day__dot{display:inline-block}}

/* consults, towns and the phone-call picker */
.project-consult{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--work-line)}
.project-consult p{margin:0;font-size:14px;color:var(--work-ink)}
.pick__town{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--work-soft);color:var(--work-muted);font-size:12px;font-weight:600}
.pick__nearby .hint{margin:0 0 8px}
.pick__nearby-days{display:grid;gap:6px}
.pick__nearby-day{display:grid;gap:2px;text-align:left;padding:8px 12px;border:1px solid var(--ucl-ok-line);border-radius:8px;background:var(--ucl-ok-bg);color:var(--work-ink);font:inherit;font-family:inherit;cursor:pointer}
.pick__nearby-day strong{font-size:14px}
.pick__nearby-day small{color:var(--work-muted);font-size:12.5px}
.pick__nearby-day:hover{border-color:var(--ucl-ok)}
.pick__nearby-day[aria-pressed=true]{background:var(--ucl-brand);border-color:var(--ucl-brand);color:var(--ucl-on-brand)}
.pick__nearby-day[aria-pressed=true] small{color:inherit;opacity:.85}
.pick__day--town{box-shadow:inset 0 0 0 2px var(--ucl-ok)}
.pick__time{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px;font-weight:600}
.pick__time input{min-height:38px;padding:6px 10px;border:1px solid var(--work-line-2);border-radius:8px;background:var(--work-paper);color:var(--work-ink);font:inherit}
.pick__time .hint{font-weight:400}
.cal-town{min-height:36px;padding:6px 10px;border:1px solid var(--work-line-2);border-radius:8px;background:var(--work-paper);color:var(--work-ink);font:600 13.5px/1.2 inherit;font-family:inherit}
.cal-job--consult .cal-job__main{border-left-color:var(--ucl-ok);background:var(--ucl-ok-bg)}
.cal-job--consult .cal-job__kind{color:var(--ucl-ok)}
.cal-job__kind{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cal-job__town{font-style:normal;font-weight:600;text-transform:none;letter-spacing:0;color:var(--work-muted);font-size:11px}
.cal-day__towns{width:100%;font-size:11px;color:var(--work-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.consult-pick{display:grid;gap:10px;min-width:0}
.consult-pick .search{width:100%}
.consult-pick__list{display:grid;gap:6px;max-height:50vh;overflow:auto}
.consult-pick__row{display:grid;gap:2px;text-align:left;padding:8px 12px;border:1px solid var(--work-line);border-radius:8px;background:var(--work-paper);color:var(--work-ink);font:inherit;font-family:inherit;cursor:pointer}
.consult-pick__row:hover{border-color:var(--ucl-brand);background:var(--work-soft)}
.consult-pick__row span{color:var(--work-muted);font-size:13px}
@media(max-width:899px){.cal-grid--month .cal-day__towns{display:none}}
.line-order{display:flex;gap:6px;margin-top:8px}
.line-order button{min-width:44px;min-height:44px;font-size:20px}

/* Manual photo placement has its own surface, between measurements and pricing. */
.manual-lighting-panel{min-width:0}
body:not([data-workspace-view=lighting]) .manual-lighting-panel,
body[data-workspace-view=lighting] .bench,
body[data-workspace-view=lighting] .project-overview,
body[data-workspace-view=lighting] #focusBtn,
body[data-workspace-view=lighting] #acceptedQuoteBtn,
body[data-workspace-view=lighting] #decisionBtn{display:none!important}
body[data-workspace-view=lighting] .manual-lighting-panel:not([hidden]){display:block}
@media print{.manual-lighting-panel{display:none!important}}

.manual-lighting-sides{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.manual-lighting-sides .btn.active{background:var(--work-navy);border-color:var(--work-navy);color:#fff}
@media(max-width:540px){.manual-lighting-sides{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.manual-lighting-sides .btn{padding:9px 6px}}

/* Photo studio: use the room below the project tabs for the working canvas. */
body[data-workspace-view=lighting] .wrap{max-width:none;width:100%;padding:10px 12px 12px;--ml-studio-height:calc(100dvh - 218px)}
body[data-workspace-view=lighting] .manual-lighting-panel{background:#101516;border:1px solid #2d393c;border-radius:10px;overflow:hidden;padding-top:10px}
body[data-workspace-view=lighting] .manual-lighting-sides{margin:0 12px 10px;gap:6px}
body[data-workspace-view=lighting] .manual-lighting-sides .btn{background:#1c272e;color:#dbe7eb;border-color:#34454e;min-height:36px;font-size:13px;padding:7px 15px}
body[data-workspace-view=lighting] .manual-lighting-sides .btn.active{background:#07846b;border-color:#1eaf8e;color:#fff}
body[data-workspace-view=lighting] #manualLightingStatus{margin:0 12px 10px}
@media(max-width:700px){body[data-workspace-view=lighting] .manual-lighting-panel{overflow:visible}}
@media(max-width:600px){body[data-workspace-view=lighting] .wrap{padding:6px 6px 12px}body[data-workspace-view=lighting] .manual-lighting-sides{margin-inline:8px}}

/* Give Lighting Design the same full-window workspace as the manual Map. */
@media(min-width:701px){
 body[data-workspace-view=lighting]{height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}
 body[data-workspace-view=lighting]>#appHeader{flex:none}
 body[data-workspace-view=lighting] .wrap{flex:1;min-height:0;display:flex;flex-direction:column;margin:0;padding:12px 24px 18px}
 body[data-workspace-view=lighting] .manual-lighting-panel:not([hidden]){flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto minmax(0,1fr);padding:0;border-radius:12px}
 body[data-workspace-view=lighting] .manual-lighting-sides{grid-column:1;grid-row:1;align-items:center;flex-wrap:nowrap;margin:8px 10px;gap:5px}
 body[data-workspace-view=lighting] .manual-lighting-sides .btn{min-height:32px;padding:5px 12px;font-size:12px}
 body[data-workspace-view=lighting] .lighting-render-view{display:contents}
 body[data-workspace-view=lighting] .lighting-mode-bar{grid-column:2;grid-row:1;margin:8px 10px 8px 0}
 body[data-workspace-view=lighting] .lighting-mode-bar>span{display:none}
 body[data-workspace-view=lighting] .lighting-mode-buttons{background:#171d20;border-color:#334048;padding:2px}
 body[data-workspace-view=lighting] .lighting-mode-buttons button{min-height:28px;padding:4px 14px;color:#dbe7eb;font-size:12px}
 body[data-workspace-view=lighting] .lighting-mode-buttons button[aria-pressed=true]{background:#07846b;color:white}
 body[data-workspace-view=lighting] #manualLightingStatus{grid-column:1/-1;grid-row:2;margin:0 10px 8px}
 body[data-workspace-view=lighting] .manual-lighting-panel>.ucl-manual-lighting:not([hidden]){grid-column:1/-1;grid-row:3;display:flex;flex-direction:column;min-width:0;min-height:0}
 body[data-workspace-view=lighting] .manual-lighting-panel>.ucl-manual-lighting>.ml-studio{flex:1;height:100%;min-height:0;border:0;border-top:1px solid #334048;border-radius:0}
 body[data-workspace-view=lighting] .lighting-render-panel{grid-column:1/-1;grid-row:3;min-height:0;overflow:auto;border:0;border-top:1px solid #334048;border-radius:0}
}

/* Estimate uses the same window-filling studio as Lighting Design and Map. */
body[data-workspace-view=estimate]:not(.focus) .wrap{max-width:none;width:100%;padding:12px 24px 18px}
body[data-workspace-view=estimate]:not(.focus) #estimatePanel{display:flex;flex-direction:column;min-height:0;gap:0;align-items:stretch}
body[data-workspace-view=estimate]:not(.focus) .estimate-page{display:flex;flex-direction:column;gap:0;min-height:0}
body[data-workspace-view=estimate]:not(.focus) .estimate-editor{min-height:0}
@media(min-width:701px){
 body[data-workspace-view=estimate]:not(.focus){height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}
 body[data-workspace-view=estimate]:not(.focus)>#appHeader{flex:none}
 body[data-workspace-view=estimate]:not(.focus) .wrap{flex:1;min-height:0;display:flex;flex-direction:column;margin:0}
 body[data-workspace-view=estimate]:not(.focus) .bench{display:flex;flex:1;min-height:0;width:100%;margin:0;align-items:stretch}
 body[data-workspace-view=estimate]:not(.focus) #estimatePanel,body[data-workspace-view=estimate]:not(.focus) .estimate-page,body[data-workspace-view=estimate]:not(.focus) .estimate-editor{flex:1}
}
@media(max-width:700px){body[data-workspace-view=estimate]:not(.focus) .wrap{padding:10px}}
