@font-face{font-family:Public;src:url('fonts/public-sans-var.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{--ground:#f7f8f5;--paper:#fff;--ink:#25332c;--accent:#335b4c;--hover:#254637;--soft:#eff1ec;--rule:#d0d6cc;--muted:#62715f;--warn:#9b432e;--warnbg:#f8ede7;--goodbg:#e9f0ea;--radius:4px;--shadow:0 16px 48px #25332c26;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;--s12:48px;--s16:64px;--t1:12px;--t2:14px;--t3:16px;--t4:20px;--t5:24px;--t6:32px;--t7:40px}
*{box-sizing:border-box}body{margin:0;background:var(--ground);color:var(--ink);font:var(--t3)/1.5 Public,sans-serif}button,input,select,textarea{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--rule);border-radius:var(--radius);padding:10px 16px;background:var(--paper);color:var(--ink);min-height:44px;transition:background-color 160ms ease-out,color 160ms ease-out}button:hover{background:var(--soft)}button:active{background:var(--rule)}button.primary{background:var(--accent);border-color:var(--accent);color:white}button.primary:hover{background:var(--hover)}button:disabled{opacity:.5;cursor:not-allowed}:focus-visible{outline:3px solid #a67d42;outline-offset:3px}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;vertical-align:middle}button svg{margin-right:8px}a{color:var(--accent)}small{font-size:var(--t1)}h1,h2,h3,p{margin:0}h1{font:normal var(--t7)/1.1 Georgia,serif;letter-spacing:-1px}h2{font-size:var(--t5);line-height:1.3;font-weight:600}h3{font-size:var(--t4);font-weight:600}.muted{color:var(--muted)}.sidebar{position:fixed;inset:0 auto 0 0;width:216px;border-right:1px solid var(--rule);background:var(--soft);padding:32px 16px 16px;display:flex;flex-direction:column}.brand{display:flex;gap:12px;text-decoration:none;align-items:center;font-size:20px;font-weight:600;color:var(--ink);line-height:1.2;margin:0 8px 48px}.brand svg{width:29px;height:38px;flex-shrink:0}.brand small{display:block;font-size:12px;font-weight:400;margin-top:8px;color:var(--muted)}nav{display:grid;gap:4px}nav button{border:none;background:transparent;text-align:left;padding:12px;font-size:14px;display:flex;justify-content:space-between;gap:8px}nav button.active{background:#dfe7dd;color:var(--accent);font-weight:600}nav button span{font-variant-numeric:tabular-nums}hr{border:0;border-top:1px solid var(--rule);width:100%;margin:16px 0}.sidebottom{margin-top:auto;font-size:12px;color:var(--muted)}.sidebottom p{padding:24px 8px}.sidebottom button{background:none;font-size:12px;width:100%;margin-bottom:8px}.sidebottom small{display:block;text-align:center}.sidebottom #reset{border:0;text-decoration:underline;margin-top:8px}footer{font-size:10px;letter-spacing:.2px;border-top:1px solid var(--rule);padding-top:16px}footer span{padding:0 4px}.workspace{margin-left:216px}.topbar{height:88px;border-bottom:1px solid var(--rule);padding:0 40px;display:flex;justify-content:space-between;align-items:center;font-size:14px}.slash{padding:0 16px;color:var(--muted)}main{padding:40px;max-width:1600px;margin:auto}.title{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:32px}.title p{color:var(--muted);margin-top:12px;font-size:14px}.actions{display:flex;gap:8px;flex-wrap:wrap}.notice{background:var(--warnbg);padding:16px 24px;display:flex;gap:16px;justify-content:space-between;align-items:center;margin-bottom:24px}.notice p{font-size:14px}.notice strong{font-weight:600}.notice button{background:transparent;border-color:#d9b9a9;color:var(--warn);flex-shrink:0}.metrics{display:grid;grid-template-columns:repeat(4,1fr);padding:8px 0 32px}.metric{border-right:1px solid var(--rule);padding:0 24px}.metric:first-child{padding-left:0}.metric:last-child{border:0}.metric strong{font-size:32px;line-height:1.2;font-weight:500;font-variant-numeric:tabular-nums;display:block}.metric span{font-size:14px;color:var(--muted)}.metric.warn strong{color:var(--warn)}.toolbar{display:flex;gap:12px;padding:24px 0;border-top:1px solid var(--rule);align-items:center}.search{flex:1;min-width:120px;position:relative}.search input{width:100%;padding-left:40px}.search svg{position:absolute;left:12px;top:13px;color:var(--muted)}input,select,textarea{border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper);color:var(--ink);padding:10px 12px;min-height:44px;max-width:100%}textarea{width:100%;min-height:120px;resize:vertical}input[type=checkbox]{min-height:20px;width:20px;accent-color:var(--accent)}.resultsline{font-size:12px;color:var(--muted);display:flex;justify-content:space-between;margin-bottom:16px}.catalog{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:32px 24px}.sample{border:0;padding:0;text-align:left;background:none;min-width:0;border-radius:0}.sample:hover{background:transparent}.sample:hover .swatch{outline:2px solid var(--accent);outline-offset:3px}.swatch{height:190px;background-color:var(--wood);background-image:url('assets/grain.svg');background-size:cover;position:relative;overflow:hidden;border-radius:2px;display:flex;align-items:center;justify-content:center}.swatch.painted{background-image:none}.door{width:64%;height:82%;background-color:var(--wood);background-image:inherit;box-shadow:inset 0 0 0 1px #0002,3px 5px 8px #0002;padding:14px;position:relative}.door:after{content:'';display:block;width:100%;height:100%;box-shadow:inset 2px 3px 6px #0003,0 1px 0 #fff5;border:7px solid #ffffff0a}.slab .door:after{border:0;box-shadow:none}.status{display:inline-block;font-size:12px;padding:4px 8px;background:var(--goodbg);color:var(--accent)}.status.out{background:var(--soft);color:var(--ink)}.status.overdue{background:var(--warnbg);color:var(--warn)}.swatch .status{position:absolute;left:8px;bottom:8px;background:var(--paper)}.sample h3{font-size:16px;font-weight:600;margin-top:12px}.sample p{font-size:14px;color:var(--muted);margin-top:2px}.sample .idline{font-size:12px;margin-top:8px;color:var(--muted);display:flex;justify-content:space-between;gap:4px}.pagination{display:flex;align-items:center;justify-content:space-between;padding:32px 0;font-size:14px;gap:12px}.bottomnote{font-size:12px;color:var(--muted);padding:16px 40px;border-top:1px solid var(--rule)}dialog{border:1px solid var(--rule);padding:32px;max-width:760px;width:calc(100% - 32px);max-height:90vh;border-radius:4px;color:var(--ink);box-shadow:var(--shadow)}dialog::backdrop{background:#25332c66}.close{position:absolute;right:12px;top:12px;border:0;background:transparent;font-size:24px;z-index:2;padding:0;width:44px}.detailgrid{display:grid;grid-template-columns:240px 1fr;gap:24px;margin-top:16px}.detailgrid .swatch{height:300px}.detail h2{padding-right:32px}.detail p{margin:8px 0 16px}.detail label{display:block;font-size:14px;margin-bottom:12px}.detail input{width:100%;margin-top:4px}.history{margin-top:32px;border-top:1px solid var(--rule);padding-top:24px}.history li{padding:12px 0;border-bottom:1px solid var(--rule);font-size:14px}.history ul{padding:0;list-style:none}.history small{display:block;color:var(--muted)}.loanrow{display:grid;grid-template-columns:72px 1.4fr 1fr 1fr auto;align-items:center;gap:24px;border-bottom:1px solid var(--rule);padding:24px 0}.loanrow .swatch{height:88px}.loanrow .door{padding:5px}.loanrow .door:after{border-width:3px}.loanrow p{font-size:14px;color:var(--muted)}.loanrow h3{font-size:16px}.loanrow button{padding:8px 12px}.loanhead{background:var(--soft);font-size:12px;padding:12px 16px;color:var(--muted);margin-top:24px}.empty{padding:64px 24px;text-align:center;border:1px dashed var(--rule);grid-column:1/-1}.empty p{margin:12px 0 24px}.panel{max-width:820px;background:var(--paper);border:1px solid var(--rule);padding:32px;margin-bottom:24px}.panel p{margin:12px 0 24px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.fields label{font-size:14px}.fields input{width:100%;display:block;margin-top:8px}.error{color:var(--warn);margin:12px 0}.labelgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0}.qrlabel{border:1px dashed var(--rule);padding:16px;background:var(--paper);display:flex;gap:12px;align-items:center;break-inside:avoid}.qrlabel svg{width:80px;height:80px;stroke:none;flex-shrink:0}.qrlabel strong{font-size:14px;display:block}.qrlabel small{display:block;color:var(--muted)}.savingshero{font-size:40px;font-weight:500;color:var(--accent);margin:16px 0}.math{background:var(--soft);padding:24px;line-height:1.8;margin:24px 0}.importpreview{max-height:280px;overflow:auto;margin:24px 0}table{width:100%;border-collapse:collapse;font-size:14px;text-align:left}th,td{padding:12px;border-bottom:1px solid var(--rule)}video{width:100%;max-height:280px;background:var(--soft);margin:16px 0}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);padding:12px 24px;background:var(--ink);color:white;box-shadow:var(--shadow);z-index:10;display:none;max-width:90%;font-size:14px}#tourbox{position:fixed;right:24px;bottom:24px;background:var(--paper);border:2px solid var(--accent);box-shadow:var(--shadow);width:350px;padding:24px;z-index:5}#tourbox p{font-size:14px;margin:12px 0 24px}#tourbox small{color:var(--muted)}.tourfocus{outline:3px solid #a67d42;outline-offset:5px}.checkrow{display:flex;gap:12px;align-items:center;margin-top:16px}.printintro{margin-bottom:24px}.pagehint{font-size:14px;color:var(--muted);margin:16px 0}.sample:focus-visible{outline-offset:6px}
@media(min-width:1600px){.swatch{height:240px}}
@media(max-width:1100px){.sidebar{width:192px}.workspace{margin-left:192px}main{padding:32px 24px}.topbar{padding:0 24px}.catalog{grid-template-columns:repeat(3,minmax(0,1fr))}.swatch{height:180px}.labelgrid{grid-template-columns:repeat(2,1fr)}.loanrow{grid-template-columns:64px 1fr 1fr;gap:16px}.loanrow .due{grid-column:2}.loanrow .actions{grid-column:3;grid-row:2}.toolbar{flex-wrap:wrap}.toolbar .search{flex-basis:100%}}
@media(max-width:900px){.sidebar{position:static;width:100%;padding:16px 20px 0;border:0;background:var(--soft)}.brand{margin:0 0 16px;font-size:20px}.brand small{display:none}.brand svg{width:20px;height:28px}.sidebar nav{display:flex;overflow:auto;margin:0 -20px;padding:0 12px 8px;gap:4px}.sidebar nav button{white-space:nowrap;flex-shrink:0;padding:10px 12px}.sidebar nav hr{display:none}.sidebottom{display:none}.workspace{margin:0}.topbar{padding:12px 20px;height:68px}.topbar>span{font-size:12px}.topbar>span .slash,.topbar>span #crumb{display:none}.topbar button{padding:8px 12px;font-size:14px}main{padding:28px 20px}.title{display:block;margin-bottom:24px}.title .actions{margin-top:20px}h1{font-size:32px}.notice{padding:16px;align-items:flex-start;gap:12px}.notice p{font-size:12px}.notice button{font-size:12px;padding:8px}.metrics{grid-template-columns:1fr 1fr;gap:24px 0;padding:8px 0 24px}.metric{padding:0 16px}.metric:nth-child(3){padding-left:0}.metric:nth-child(2){border:0}.metric strong{font-size:28px}.toolbar{padding:20px 0;gap:8px}.toolbar select{flex:1;min-width:0;font-size:14px;padding:10px 8px}.catalog{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px}.swatch{height:164px}.door{padding:10px;width:72%}.door:after{border-width:5px}.sample h3{font-size:14px;line-height:1.4}.sample p{font-size:12px}.sample .idline{display:block;font-size:11px}.sample .idline span{display:block}.sample .status{font-size:11px;padding:3px 6px}.resultsline{font-size:11px}.pagination{font-size:12px}.pagination button{padding:8px 12px}.bottomnote{padding:16px 20px}.detailgrid{grid-template-columns:1fr}.detailgrid .swatch{height:220px}.detailgrid .door{width:140px}.detail h2{font-size:24px}dialog{padding:24px}.loanrow{grid-template-columns:56px 1fr;gap:12px}.loanrow .swatch{height:72px}.loanrow .borrower,.loanrow .due,.loanrow .actions{grid-column:2;grid-row:auto}.loanhead{margin-top:16px}.panel{padding:20px}.fields{grid-template-columns:1fr}.labelgrid{grid-template-columns:1fr}.savingshero{font-size:32px}#tourbox{right:16px;bottom:16px;width:calc(100% - 32px)}.math{padding:16px;font-size:14px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media print{body{background:white}.sidebar,.topbar,.title,.printintro,.bottomnote,.printcontrols,#toast,#tourbox{display:none!important}.workspace{margin:0}main{padding:0}.labelgrid{grid-template-columns:repeat(3,1fr);gap:8mm}.qrlabel{border:1px solid #aaa;padding:4mm;min-height:32mm}.qrlabel svg{width:22mm;height:22mm}dialog{position:static;box-shadow:none;max-height:none}.close{display:none}}

.mobiletools{display:none}@media(max-width:900px){.mobiletools{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.mobiletools button{font-size:12px}.mobiletools small{flex-basis:100%;margin-top:8px}}@media print{.mobiletools{display:none}}

@media(min-width:901px) and (max-width:900px){.catalog{grid-template-columns:repeat(2,minmax(0,1fr))}.brand{font-size:18px}.sample .idline{display:block}.sample .idline span{display:block}}

.arch .door:after{border-radius:40% 40% 0 0}.beadboard .door:after{background:repeating-linear-gradient(90deg,transparent 0,transparent 14px,#25332c22 15px,transparent 16px)}.raised .door:after{box-shadow:inset 0 0 0 4px #ffffff18,inset 4px 5px 8px #0003}
/* Review refinements: compact register, legible phone tasks. */
[hidden]{display:none!important}.sample .idline span:first-child{font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}.contact{display:flex;align-items:center;min-height:44px;color:var(--accent);text-decoration:underline;overflow-wrap:anywhere}.borrower{min-width:0}.loanrow .actions{max-width:210px}.history h3{margin-top:24px}.close{display:grid;place-items:center}.close svg{width:20px;height:20px}.workgrid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:32px;align-items:start}.workgrid .panel{max-width:none;min-width:0}.workaside{padding:24px 0;border-top:1px solid var(--rule);font-size:14px}.workaside h2{font-size:20px}.workaside dt{font-weight:600;margin-top:24px}.workaside dd{margin:4px 0 0;color:var(--muted)}.workaside p{margin-top:24px}.filedrop{padding:24px;border:1px dashed var(--rule);display:flex;gap:16px;align-items:center;flex-wrap:wrap}.filebutton{border:1px solid var(--rule);border-radius:var(--radius);padding:10px 12px;min-height:44px;cursor:pointer;background:var(--paper);font-size:14px}.filebutton:focus-visible{outline:2px solid var(--accent);outline-offset:3px}#filename{font-size:14px;overflow-wrap:anywhere;min-width:0}.visuallyhidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);padding:0;min-height:0;border:0}.importpreview td:first-child{white-space:nowrap;font-variant-numeric:tabular-nums}.printcontrols{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.labelselection>strong{display:block;margin-bottom:12px}.sidebottom footer{font-size:12px}.sidebottom>button{display:block;font-size:14px}.morelinks{display:flex;flex-direction:column}#moretools{margin-top:16px}#moretools summary{cursor:pointer;padding:12px;font-size:14px}#overcount.hasoverdue{color:var(--warn);background:var(--warnbg);padding:0 6px;border-radius:var(--radius)}
@media(min-width:901px){#moretools summary{display:none}#moretools>.morelinks{display:flex}#moretools::details-content{display:contents}}
@media(max-width:1100px){.workgrid{grid-template-columns:1fr}.workaside{max-width:none}.workaside dl{display:grid;grid-template-columns:1fr 2fr;gap:16px}.workaside dt{margin:0}.workaside dd{margin:0}}
@media(max-width:900px){.sidebar{padding-top:20px}.brand{margin:0 0 20px;width:calc(100% - 132px);height:44px;display:flex;align-items:center}.topbar{position:absolute;top:20px;right:20px;padding:0;height:44px}.topbar>span{display:none}.topbar #scan{font-size:12px;padding:8px}.sidebar nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;margin:0;padding:0;gap:4px}.sidebar nav>button{padding:10px 4px;font-size:14px;display:flex;justify-content:center;gap:6px}.sidebar nav #moretools{grid-column:1/-1;margin:0}.sidebar nav summary{text-align:right;padding:var(--s2) 0;min-height:44px}.morelinks{padding-bottom:12px;gap:4px}.morelinks button{text-align:left}main{padding-top:20px}.title{margin-bottom:20px}.title .actions{display:none}.title p{margin-top:8px}.notice{margin-bottom:16px;padding:12px}.notice p,.notice button{font-size:12px}.toolbar{padding:16px 0}.sample .idline,.sample .status,.resultsline{font-size:12px}.sample .idline span:first-child{font-size:14px}.resultsline span:last-child{display:none}.detailgrid{grid-template-columns:1fr;gap:12px;margin-top:8px}.detailgrid>div:first-child{display:flex;gap:16px;align-items:center;padding-right:24px}.detailgrid .swatch{height:96px;width:80px;flex-shrink:0}.detailgrid .door{width:64%;padding:6px}.detailgrid .pagehint{font-size:12px;margin:0}.detailgrid h2{margin-top:8px!important}.detail p{margin:4px 0 12px}.detail label{margin-bottom:8px}.detail label input{min-height:40px;padding:8px 12px}.detailgrid form>button{width:100%}.history{margin-top:24px;padding-top:16px}dialog{max-height:calc(100dvh - 24px);padding:20px}.workgrid{gap:16px}.workaside dl{display:block}.workaside dt{margin-top:16px}.workaside dd{margin-top:4px}.printcontrols{align-items:stretch;flex-direction:column;gap:16px}.labelselection .actions{gap:8px}.labelselection .checkrow{flex-basis:100%}#toast{bottom:calc(16px + env(safe-area-inset-bottom));width:calc(100% - 32px);padding:12px 16px}.mobiletools small{font-size:12px}}
.sidebottom #reset{border:1px solid var(--rule);text-decoration:none;margin-top:0}.sidebottom #tour,.sidebottom #reset{border:0;text-decoration:underline}.sidebar .sidebottom footer{margin-top:16px}
/* Round 2: consistent controls and a compact recovery register. */
:root{--btn:16px;--btn-sm:14px;--active:#dfe7dd}
.skiplink{position:fixed;top:8px;left:8px;transform:translateY(-160%);z-index:20;background:var(--paper);padding:12px 16px}.skiplink:focus{transform:none}
::selection{background:var(--active);color:var(--ink)}input,textarea{caret-color:var(--accent)}
button,.filebutton{font-size:var(--btn)}nav button,.sidebottom>button,.notice button,.loanrow button{font-size:var(--btn-sm)}
#moretools summary{list-style:none;display:flex;align-items:center;justify-content:flex-end;gap:8px}#moretools summary::-webkit-details-marker{display:none}#moretools[open] summary svg{transform:rotate(180deg)}#moretools.current summary{color:var(--accent);font-weight:600;background:var(--active)}
.loanrow{grid-template-columns:64px minmax(0,1fr) minmax(0,1.4fr) minmax(0,1fr);grid-template-areas:'swatch sample borrower due' 'swatch sample actions actions';gap:8px 24px;padding:16px 0;align-items:start}.loanrow>.swatch{grid-area:swatch}.loansample{grid-area:sample}.loanrow .borrower{grid-area:borrower}.loanrow .due{grid-area:due}.loanrow .actions{grid-area:actions;max-width:none;flex-direction:row;flex-wrap:wrap}.loanrow .samplelink{padding:0;border:0;background:none;min-height:44px;text-align:left;font-weight:600;text-decoration:underline;color:var(--accent);line-height:1.4}.loanrow .contact{display:inline-flex;align-items:center;min-height:44px;margin-block:-8px;margin-right:12px;max-width:100%;vertical-align:middle}.borrower p{line-height:28px}.loanrow h3,.loanrow p,.loansample{overflow-wrap:anywhere}
.labelselection button[aria-pressed=true]{background:var(--active);color:var(--accent);border-color:var(--accent);font-weight:600}.labeladd{display:flex;gap:8px;align-items:center;margin-top:12px}.labeladd .checkrow{flex:1;min-width:0}.labeladd input{flex:1;min-width:0}.labeladd button{flex-shrink:0}
dialog #toast{position:sticky;bottom:0;left:auto;transform:none;max-width:100%;margin-top:16px;width:100%}
@media(min-width:901px){#moretools summary{display:none}}
@media(max-width:900px){.topbar #scan,.mobiletools button,.notice button{font-size:var(--btn-sm)}.notice p{font-size:var(--t2)}.loanrow{grid-template-columns:56px minmax(0,1fr) minmax(0,1fr);grid-template-areas:'swatch sample sample' 'borrower borrower due' 'actions actions actions';gap:8px 12px}.loanrow .swatch{height:64px}.loanrow .samplelink{min-height:32px}.loanrow .contact{display:flex;margin:0;line-height:20px}.loanrow .borrower p{line-height:24px}.loanrow .actions button{flex:1;padding:8px}.loanrow .due{font-size:14px}.loanrow .due p{margin-top:8px}.loanrow .loansample p br{display:none}.loanrow .loansample p{display:flex;gap:8px}.loanrow .borrower h3{font-size:14px}.loanrow .contact{font-size:12px}.labelselection .checkrow{flex-basis:auto}#tourbox{max-height:40dvh;overflow:auto;padding:16px}#tourbox p{margin:8px 0 12px}.touring .workspace{padding-bottom:45dvh}.tourfocus{scroll-margin-top:12px}}
@media(min-width:600px) and (max-width:900px){.loanrow{grid-template-columns:64px minmax(0,1fr) minmax(0,1.4fr);grid-template-areas:'swatch sample borrower' 'swatch due actions';gap:8px 16px}.loanrow .loansample p{display:block}.loanrow .loansample p br{display:block}.loanrow .contact{display:inline-flex;font-size:14px;margin-block:-8px}.loanrow .actions button{flex:initial}.loanrow .due p{margin-top:4px}}
@media(min-width:600px) and (max-width:900px){.loanrow .contact{margin-right:12px}}

.contact{display:inline-flex;align-items:center;min-height:44px;padding:var(--s2) 0;}

.loanrow:has(.overdue) .borrower h3{color:var(--warn)}
