:root{--ink:#111416;--paper:#f7f6f2;--card:#fff;--muted:#66706f;--line:#d9ddd9;--gold:#b9984c;--gold-soft:#efe5c9;--danger:#8c3131;--shadow:0 16px 45px rgba(17,20,22,.1);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--paper)}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-width:320px}body.modal-lock{overflow:hidden}.skip-link{position:fixed;left:8px;top:-60px;z-index:100;background:#fff;padding:12px;color:#111}.skip-link:focus{top:8px}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.app-shell{min-height:100dvh}.client-header{height:68px;padding:10px 16px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);background:rgba(247,246,242,.96);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;min-width:112px}.brand img{display:block;width:112px;height:auto}.header-copy{margin-left:auto;text-align:right;display:grid;gap:2px}.header-copy span{font-size:.8rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.header-copy small{font-size:.68rem;color:var(--muted)}.client-main{width:min(100%,980px);margin:0 auto;padding:20px 14px calc(92px + var(--safe-bottom))}.gate-card,.content-card,.project-card,.document-card,.payment-card,.summary-card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 28px rgba(17,20,22,.055)}.gate-card{max-width:540px;margin:8vh auto 0;padding:28px 20px}.gate-crest{width:58px;height:58px;object-fit:contain;margin-bottom:14px}.eyebrow{margin:0 0 5px;color:#806921;text-transform:uppercase;letter-spacing:.11em;font-size:.69rem;font-weight:800}.gate-card h1,.view-panel h1,.view-panel h2{margin:0 0 9px;line-height:1.08}.gate-card h1{font-size:clamp(1.65rem,8vw,2.5rem)}.gate-card p{color:#46504f;line-height:1.55}.gate-card form{display:grid;gap:14px;margin:22px 0 12px}.gate-card label:not(.accept-check){display:grid;gap:7px;font-weight:700;font-size:.88rem}.gate-card input[type=email]{width:100%;min-height:52px;border:1px solid #bfc6c3;border-radius:12px;padding:0 14px;font-size:1rem;background:#fff;color:#111}.gate-card input:focus,.quiet-button:focus,.primary-button:focus,.danger-outline:focus,.bottom-nav button:focus{outline:3px solid rgba(185,152,76,.3);outline-offset:2px}.primary-button,.quiet-button,.danger-outline{min-height:48px;border-radius:12px;padding:0 16px;font-weight:800;cursor:pointer}.primary-button{border:1px solid var(--ink);background:var(--ink);color:#fff}.primary-button:disabled{opacity:.45;cursor:not-allowed}.quiet-button{border:1px solid var(--line);background:#fff;color:var(--ink)}.danger-outline{border:1px solid #c99797;background:#fff;color:var(--danger)}.form-status{min-height:1.4em;font-weight:700}.terms-card{margin-top:24px}.terms-meta{font-size:.8rem}.terms-body{white-space:pre-wrap;max-height:42dvh;overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fbfbf9;padding:16px;font-size:.88rem;line-height:1.55}.accept-check{display:flex;gap:10px;align-items:flex-start;margin:18px 0;font-weight:700;line-height:1.45}.accept-check input{width:22px;height:22px;flex:0 0 auto}.welcome-row,.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:6px 2px 14px}.welcome-row h1{font-size:clamp(1.8rem,8vw,3rem)}.section-heading{margin-top:28px}.section-heading h1,.section-heading h2{font-size:1.5rem}.summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.summary-card{padding:15px}.summary-card small{display:block;color:var(--muted);font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.summary-card strong{display:block;margin-top:7px;font-size:1.3rem}.summary-card.balance{grid-column:1/-1;background:var(--ink);color:#fff;border-color:var(--ink)}.summary-card.balance small{color:#cbd0ce}.card-list{display:grid;gap:12px}.content-card,.project-card,.document-card,.payment-card{padding:17px}.project-card h3,.document-card h3,.payment-card h3{margin:0 0 4px;font-size:1.04rem}.card-topline{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.pill{display:inline-flex;align-items:center;min-height:28px;padding:4px 9px;border-radius:999px;background:var(--gold-soft);color:#66531d;font-weight:800;font-size:.7rem;text-transform:uppercase}.meta-line{font-size:.78rem;color:var(--muted);margin:4px 0}.card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}.card-actions button{min-height:44px}.project-finance{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}.project-finance div{background:#f4f4f1;padding:10px;border-radius:10px}.project-finance small{display:block;color:var(--muted);font-size:.67rem}.project-finance strong{font-size:.89rem}.progress-rail{display:grid;gap:0;margin-top:16px}.progress-event{display:grid;grid-template-columns:24px 1fr;gap:10px;min-height:48px}.progress-event:before{content:"";width:10px;height:10px;border:3px solid #aeb4b1;border-radius:50%;margin:4px auto 0;background:#fff;z-index:1}.progress-event:after{content:"";width:2px;background:#d8dcda;grid-column:1;grid-row:1;margin:18px auto -4px}.progress-event:last-child:after{display:none}.progress-event.is-done:before{background:var(--gold);border-color:var(--gold)}.progress-event strong{font-size:.84rem}.progress-event small{display:block;color:var(--muted);margin-top:2px}.snapshot-heading{margin-top:16px}.snapshot-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:15px}.snapshot-card{border:1px solid var(--line);border-radius:12px;background:#fafaf8;padding:11px;text-align:left;cursor:pointer;min-height:48px}.snapshot-card svg{display:block;width:100%;height:150px;background:#fff;border-radius:8px;margin-bottom:8px}.empty-card{padding:24px;border:1px dashed #bcc4c0;border-radius:14px;color:var(--muted);text-align:center}.payment-row{display:flex;justify-content:space-between;gap:16px;align-items:center}.payment-amount{font-size:1.1rem;font-weight:900}.account-card dl{margin:0 0 18px}.account-card dl div{border-bottom:1px solid var(--line);padding:10px 0}.account-card dt{color:var(--muted);font-size:.75rem}.account-card dd{margin:3px 0 0;font-weight:800;overflow-wrap:anywhere}.bottom-nav{position:fixed;z-index:30;left:0;right:0;bottom:0;height:calc(72px + var(--safe-bottom));padding:6px 6px var(--safe-bottom);background:rgba(255,255,255,.97);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);box-shadow:0 -8px 28px rgba(17,20,22,.08)}.bottom-nav button{border:0;background:transparent;color:#5a6260;min-width:0;min-height:58px;border-radius:12px;display:grid;place-items:center;align-content:center;gap:2px;cursor:pointer}.bottom-nav button span{font-size:1rem}.bottom-nav button small{font-size:.66rem;font-weight:800}.bottom-nav button.is-active{background:#f1ead8;color:#493e21}.modal[hidden]{display:none}.modal{position:fixed;inset:0;z-index:80;display:grid;align-items:end}.modal-backdrop{position:absolute;inset:0;background:rgba(9,11,12,.72)}.document-modal-panel,.snapshot-panel{position:relative;z-index:1;background:var(--paper);width:100%;max-height:94dvh;overflow:auto;border-radius:20px 20px 0 0;padding:10px 10px calc(20px + var(--safe-bottom));box-shadow:var(--shadow)}.modal-toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 2px 12px;background:var(--paper)}.document-sheet{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;min-height:70dvh}.document-sheet h1{margin:0}.doc-head{display:flex;justify-content:space-between;gap:16px;border-bottom:2px solid #111;padding-bottom:14px;margin-bottom:16px}.doc-meta{text-align:right;font-size:.8rem}.doc-lines{display:grid;gap:0}.doc-line{display:grid;grid-template-columns:1fr auto;gap:12px;border-bottom:1px solid var(--line);padding:11px 0}.doc-line small{color:var(--muted)}.doc-totals{margin-left:auto;width:min(100%,300px);padding-top:16px}.doc-totals div{display:flex;justify-content:space-between;padding:5px 0}.doc-totals .grand{font-size:1.15rem;border-top:2px solid #111;margin-top:5px;padding-top:10px}.doc-text{white-space:pre-wrap;line-height:1.5;font-size:.84rem}.snapshot-panel{height:94dvh;background:#111416;color:#fff}.snapshot-zoom{height:calc(94dvh - 72px);overflow:auto;touch-action:pinch-zoom;display:grid;place-items:center;padding:16px}.snapshot-zoom svg{width:min(900px,100%);height:auto;min-height:65dvh;background:#fff;border-radius:12px}.toast{position:fixed;z-index:120;left:50%;bottom:calc(88px + var(--safe-bottom));transform:translateX(-50%);background:#111;color:#fff;border-radius:999px;padding:10px 16px;font-weight:800;font-size:.8rem;box-shadow:var(--shadow);max-width:calc(100vw - 24px);text-align:center}
@media(min-width:700px){.client-header{padding-left:28px;padding-right:28px}.client-main{padding:30px 24px 110px}.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.summary-card.balance{grid-column:auto}.snapshot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.document-modal-panel{width:min(900px,94vw);max-height:92dvh;margin:0 auto;border-radius:20px 20px 0 0}.bottom-nav{left:50%;right:auto;transform:translateX(-50%);width:min(640px,90vw);border:1px solid var(--line);border-bottom:0;border-radius:18px 18px 0 0}}@media(min-width:1000px){.bottom-nav{position:sticky;bottom:18px;margin:0 auto;height:70px;border:1px solid var(--line);border-radius:18px;padding:6px;box-shadow:var(--shadow)}.client-main{padding-bottom:28px}.document-modal-panel{align-self:center;border-radius:20px;max-height:94dvh}.modal{align-items:center}}
@media(max-width:359px){.client-main{padding-left:10px;padding-right:10px}.client-header{padding-left:10px;padding-right:10px}.brand img{width:100px}.header-copy small{display:none}.content-card,.project-card,.document-card,.payment-card{padding:14px}.project-finance{grid-template-columns:1fr}.bottom-nav button small{font-size:.61rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{body{background:#fff}.app-shell,.modal-backdrop,.modal-toolbar,.toast,.snapshot-modal{display:none!important}.document-modal-panel{position:static!important;display:block!important;max-height:none!important;overflow:visible!important;width:100%!important;padding:0!important;background:#fff!important}.modal[data-document-modal]{position:static!important;display:block!important}.document-sheet{border:0!important;border-radius:0!important;min-height:0!important;padding:0!important}.document-sheet{font-size:11pt}@page{margin:.55in}}
.quote-approval-box{margin-top:24px;padding:18px;border:2px solid var(--gold);border-radius:14px;background:#fffaf0}.quote-approval-box h3{margin:0 0 8px}.quote-approval-box p{margin:7px 0;color:#39413f;line-height:1.5}.quote-approval-box.is-approved{border-color:#73a07c;background:#eef7f0}.quote-approval-consent{display:flex;align-items:flex-start;gap:10px;margin:15px 0;font-weight:700;line-height:1.45}.quote-approval-consent input{width:22px;height:22px;flex:0 0 auto;margin-top:1px}.quote-approval-box .primary-button{width:100%;margin-top:4px}.approval-pending-line{margin:10px 0 0;font-weight:800;color:#806921}.approval-state-copy{font-weight:700}
@media print{.quote-approval-box:not(.is-approved){display:none!important}.quote-approval-box.is-approved{break-inside:avoid}}

.document-snapshot-section{margin:18px 0 22px;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fbfaf6}.document-snapshot-section h3{margin:0 0 6px}.document-snapshot-grid{margin-top:12px}.document-snapshot-section .snapshot-card{background:#fff}
@media print{.document-snapshot-section{break-inside:avoid}.document-snapshot-section .snapshot-card{break-inside:avoid}}

/* v1.1.3 - full frozen Ceramic Tile quote snapshot */
.snapshot-card svg.tile-snapshot-svg{background-color:#fbf9f2;background-image:linear-gradient(#ece7dc 1px,transparent 1px),linear-gradient(90deg,#ece7dc 1px,transparent 1px);background-size:26px 26px}
.tile-snapshot-object-label{paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}
.snapshot-card.is-document-snapshot{width:100%;cursor:zoom-in;padding:14px}
.snapshot-card.is-document-snapshot svg.tile-snapshot-svg{width:100%;height:auto;max-height:none;border:1px solid #ddd5c4;border-radius:10px;margin-bottom:10px}
.document-snapshot-grid{grid-template-columns:1fr!important}
.tile-snapshot-legend{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:9px;color:var(--muted);font-size:.72rem;font-weight:800}
.tile-snapshot-legend span{display:inline-flex;align-items:center;gap:6px}.tile-snapshot-legend i{display:inline-block;width:16px;height:12px;border:1px solid #8e7a49;border-radius:3px}.tile-snapshot-legend i.full{background:#e7d7a9}.tile-snapshot-legend i.cut{background:#d7b35d}.tile-snapshot-legend i.object{background:#d6d4ce;border-style:dashed;border-color:#343839}
@media print{.snapshot-card.is-document-snapshot{border:0;padding:0}.snapshot-card.is-document-snapshot svg.tile-snapshot-svg{max-height:6.8in}.tile-snapshot-legend{break-inside:avoid}}

/* v1.1.5 - flooring / ceramic payment schedule + closeout reconciliation */
.payment-plan-card{margin:16px 0;padding:16px;border:1px solid var(--line);border-radius:14px;background:#fffdf7}.payment-plan-heading{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.payment-plan-heading h3{margin:2px 0 4px;font-size:1rem}.payment-plan-list{display:grid;gap:8px;margin-top:12px}.payment-milestone{padding:12px;border:1px solid #dedbd0;border-radius:11px;background:#fff}.payment-milestone-main{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.payment-milestone-main small{display:block;color:var(--muted);margin-top:3px}.payment-milestone-amount{text-align:right;display:grid;justify-items:end;gap:5px;flex:0 0 auto}.milestone-status{display:inline-flex;padding:3px 8px;border-radius:999px;font-size:.66rem;font-weight:900;text-transform:uppercase;letter-spacing:.03em;background:#eeeee9;color:#555}.milestone-status.paid{background:#e5f2e8;color:#376844}.milestone-status.reported{background:#fff1c7;color:#755d14}.milestone-status.waived{background:#e9eef8;color:#405c8d}.milestone-status.due{background:#f8e4df;color:#8a382d}.payment-plan-rule{margin:12px 0 0;padding-top:11px;border-top:1px solid #e4e0d5;color:#4a504e;font-size:.78rem;line-height:1.45}.payment-report-toggle{margin-top:10px;width:100%}.payment-report-form{display:grid;gap:10px;margin-top:12px;padding-top:12px;border-top:1px dashed #cbc5b5}.payment-report-field{display:grid;gap:5px;font-size:.75rem;font-weight:800}.payment-report-field select,.payment-report-field input{width:100%;min-height:44px;border:1px solid #bfc4c1;border-radius:10px;background:#fff;padding:9px 10px;font:inherit;color:var(--ink)}.payment-report-note,.payment-reported-copy{font-size:.74rem;color:var(--muted);line-height:1.45}.reported-payment-card{border-color:#d9c36f;background:#fffdf4}@media print{.payment-report-toggle,.payment-report-form{display:none!important}.payment-plan-card{break-inside:avoid}}


/* v1.1.7 - client communication preferences + release identity */
.release-version{display:block;margin-top:14px;color:var(--muted);font-weight:800;letter-spacing:.02em}.preference-card{margin-top:14px}.preference-heading h2{margin:2px 0 6px}.preference-intro{margin:0 0 14px;color:var(--muted);line-height:1.5}.preference-toggle{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 0;border-bottom:1px solid var(--line);cursor:pointer}.preference-toggle span{display:grid;gap:3px;min-width:0}.preference-toggle strong{font-size:.9rem}.preference-toggle small{color:var(--muted);line-height:1.4}.preference-toggle input{appearance:none;-webkit-appearance:none;width:48px;height:28px;flex:0 0 auto;border-radius:999px;border:1px solid #aeb5b2;background:#d7dcda;position:relative;cursor:pointer;transition:background .18s ease,border-color .18s ease}.preference-toggle input:before{content:"";position:absolute;width:22px;height:22px;left:2px;top:2px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.22);transition:transform .18s ease}.preference-toggle input:checked{background:var(--gold);border-color:#9a7a2c}.preference-toggle input:checked:before{transform:translateX(20px)}.preference-toggle input:focus-visible{outline:3px solid rgba(174,139,55,.28);outline-offset:3px}.preference-toggle input:disabled{opacity:.45;cursor:not-allowed}.preference-master{margin-top:8px;border:1px solid #dacb9a;border-radius:12px;padding:14px;background:#fffaf0}.preference-master-note{margin:10px 0 0;padding:10px 12px;border-radius:10px;background:#f5f1e6;color:#5c5134;font-size:.76rem;line-height:1.45}.preference-actions{display:grid;gap:8px;margin-top:16px}.preference-actions .primary-button{width:100%}.preference-actions .form-status{margin:0;min-height:1.2em}

/* v1.1.7 Client Dashboard Live Comms */
.bottom-nav{grid-template-columns:repeat(6,1fr)}
.message-card{display:grid;gap:16px}.message-intro p{margin:.35rem 0 0;color:var(--muted);line-height:1.5}.message-timeline{min-height:280px;max-height:min(54vh,560px);overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:14px;background:#f0efe9;border:1px solid var(--line);border-radius:16px;scroll-behavior:smooth}.message-bubble{max-width:88%;padding:12px 14px;border-radius:16px;border:1px solid var(--line);background:var(--card);box-shadow:0 4px 14px rgba(17,20,22,.04)}.message-bubble.from-client{align-self:flex-end;background:var(--gold-soft);border-color:#d9c68f}.message-bubble.from-southbound{align-self:flex-start}.message-meta{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:6px;font-size:.78rem;color:var(--muted)}.message-meta strong{color:var(--ink)}.message-body{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;line-height:1.5}.message-read{display:block;margin-top:7px;color:var(--muted)}.message-compose{display:grid;gap:9px}.message-compose label{font-weight:700}.message-compose textarea{width:100%;resize:vertical;min-height:104px;border:1px solid var(--line);border-radius:12px;padding:12px;font:inherit;background:#fff;color:var(--ink)}.message-compose textarea:focus{outline:2px solid var(--gold);outline-offset:1px}.message-compose-actions{display:flex;gap:12px;align-items:center;justify-content:flex-end}.message-compose-actions .form-status{margin-right:auto}.message-empty{margin:auto;width:100%}
@media(max-width:420px){.bottom-nav small{font-size:.64rem}.bottom-nav button{padding-inline:2px}.message-bubble{max-width:94%}.message-compose-actions{align-items:stretch;flex-direction:column}.message-compose-actions .primary-button{width:100%}}


/* v1.1.8 - non-disruptive unread activity badges */
.bottom-nav button{position:relative}
.bottom-nav .nav-icon{position:relative}
.nav-notification-badge{position:absolute;top:5px;left:calc(50% + 7px);z-index:2;min-width:19px;height:19px;padding:0 5px;border:2px solid #fff;border-radius:999px;background:#b3261e;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.62rem;font-weight:900;line-height:1;box-shadow:0 2px 7px rgba(82,13,13,.22);font-variant-numeric:tabular-nums}
.nav-notification-badge[hidden]{display:none!important}
.bottom-nav button.is-active .nav-notification-badge{border-color:#f1ead8}
@media(max-width:420px){.nav-notification-badge{top:4px;left:calc(50% + 5px);min-width:18px;height:18px;font-size:.58rem}}

/* v1.1.11 Client Comms hardening */
.message-heading-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.message-connection{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 9px;border:1px solid var(--line,#d7d7d7);border-radius:999px;font-size:.78rem;font-weight:700;white-space:nowrap}
.message-connection::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.65}
.message-connection.is-live{color:#28743e}
.message-connection.is-reconnecting{color:#9a5b00}
@media(max-width:520px){.message-heading-actions{width:100%;justify-content:space-between}.message-connection{min-height:30px}}
.message-history-note{align-self:center;width:min(100%,680px);padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--muted);font-size:.8rem;line-height:1.4;text-align:center}
