:root{--accent:#2563eb;--accent-soft:#eff6ff;--ok:#16a34a;--ok-soft:#f0fdf4;--snag:#dc2626;--snag-soft:#fef2f2;--ink:#1f2937;--ink-soft:#6b7280;--line:#e5e7eb;--bg:#fff;--bg-soft:#f9fafb;--shadow-sm:0 1px 2px #1018280d;--shadow-md:0 4px 12px #10182814}*{box-sizing:border-box}body{color:var(--ink);background:var(--bg-soft);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.55}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.button,.chip,.icon-button,.tri-state button,.filters button,.room-type-card,.room-type-add,.room-type-stepper button,.fix-toggle,.room-nav-row>button,a{transition:background-color .15s,color .15s,border-color .15s,box-shadow .15s,transform .15s}.button:active,.chip:active,.tri-state button:active,.fix-toggle:active{transform:scale(.97)}h1,h2,h3{font-weight:650;line-height:1.2}a{color:var(--accent)}.layout{flex-direction:column;min-height:100dvh;display:flex}.site-header{z-index:50;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffeb;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.5rem;display:flex;position:sticky;top:0}body.printable-mode .site-header{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--bg);position:relative;top:auto}.brand{color:var(--ink);letter-spacing:-.02em;align-items:baseline;gap:.45rem;font-size:1.15rem;font-weight:800;text-decoration:none;display:inline-flex}.brand-icon{color:var(--accent);align-self:center;font-size:1.5rem}.brand-sucks{color:var(--snag);font-style:italic;font-weight:700}.site-header nav{align-items:center;gap:1.25rem;display:flex}.site-header nav a{color:var(--ink-soft);text-decoration:none}.site-header nav a:hover{color:var(--ink)}.nav-cta{font-weight:600;color:var(--accent)!important}.icon-button.menu-toggle{color:var(--ink);font-size:1.5rem;display:none}.icon-button.menu-toggle:hover{background:var(--bg-soft);color:var(--ink)}.site-main{flex:1;width:100%}.site-footer{border-top:1px solid var(--line);color:var(--ink-soft);text-align:center;padding:1rem 1.5rem;font-size:.875rem}.site-footer a{color:var(--ink-soft)}.page{max-width:64rem;margin:0 auto;padding:2rem 1.5rem 4rem}.prose{max-width:42rem}.prose h2{margin-top:2rem}.hint{color:var(--ink-soft);font-size:.95rem}.error{color:var(--snag)}.center-note{text-align:center;color:var(--ink-soft);padding-top:5rem}.button{border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;border-radius:.5rem;padding:.45rem .9rem;font-size:.9rem;text-decoration:none;display:inline-block}.button:hover{background:var(--bg-soft)}.button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;box-shadow:0 1px 2px #2563eb59}.button.primary:hover{filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 4px 10px #2563eb66}.button.large{padding:.75rem 1.5rem;font-size:1.05rem}.button.subtle{color:var(--ink-soft);border-color:#0000}.button.subtle:hover{color:var(--ink);background:var(--bg-soft)}.button:disabled{opacity:.5;cursor:default}.button .button-icon{vertical-align:-.15em;margin-right:.4rem}.icon-button{color:var(--ink-soft);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.5rem;justify-content:center;align-items:center;padding:.35rem;font-size:1.1rem;display:inline-flex}.icon-button:hover{background:var(--snag-soft);color:var(--snag)}.inline-icon{vertical-align:-.15em}.chip{border:1px solid var(--line);background:var(--bg);color:var(--ink-soft);cursor:pointer;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .75rem;font-size:.85rem;display:inline-flex}.chip:hover{border-color:var(--accent);color:var(--accent)}.landing .hero{text-align:center;padding:4rem 0 3rem}.landing .hero h1{letter-spacing:-.02em;margin:0 0 1rem;font-size:clamp(2rem,5vw,3rem)}.landing .lede{max-width:38rem;color:var(--ink-soft);margin:0 auto 2rem;font-size:1.125rem}.hero-demo{text-align:left;pointer-events:none;width:100%;max-width:24rem;margin:2rem auto 0}.snag-ticket{background:var(--bg);border:1px solid var(--line);box-shadow:var(--shadow-md);border-radius:.9rem;padding:1.1rem 1.25rem;transform:rotate(-1.2deg)}.snag-ticket-top{color:var(--ink-soft);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.8rem;display:flex}.snag-ticket-room{color:var(--accent);align-items:center;gap:.35rem;font-weight:600;display:inline-flex}.snag-ticket-title{color:var(--ink);margin:0 0 .35rem;font-size:1.05rem;font-weight:650;line-height:1.3}.snag-ticket-note{color:var(--ink-soft);margin:0 0 .85rem;font-size:.9rem;font-style:italic}.snag-ticket-status{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.ticket-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:.4rem;align-items:center;padding:.2rem .6rem;font-size:.8rem;font-weight:700;display:inline-flex}.ticket-badge.snag{background:var(--snag-soft);color:var(--snag);border:1.5px solid}.ticket-badge.fixed{background:var(--ok-soft);color:var(--ok);border:1.5px solid;transform:rotate(-2deg)}.ticket-arrow{color:var(--ink-soft);flex-shrink:0;font-size:1.1rem}.features{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1.5rem;margin:3rem 0;display:grid}.feature{border:1px solid var(--line);background:var(--bg);box-shadow:var(--shadow-sm);border-radius:.75rem;padding:1.5rem}.feature-icon{background:var(--accent-soft);width:2.5rem;height:2.5rem;color:var(--accent);border-radius:.6rem;justify-content:center;align-items:center;margin-bottom:.75rem;font-size:1.4rem;display:inline-flex}.feature h2{margin:0 0 .5rem;font-size:1.05rem}.feature p{color:var(--ink-soft);margin:0;font-size:.95rem}.how{max-width:38rem;margin:0 auto}.how ol{color:var(--ink-soft);padding-left:1.25rem}.how li{margin-bottom:.5rem}.field{margin:1.5rem 0;display:block}.field span{margin-bottom:.35rem;font-weight:600;display:block}input[type=text],textarea{border:1px solid var(--line);width:100%;font:inherit;color:var(--ink);border-radius:.5rem;padding:.5rem .75rem}input[type=text]:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}.room-type-grid{grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:.75rem;margin:1.25rem 0 2rem;display:grid}.room-type-card{border:1px solid var(--line);background:var(--bg);font:inherit;text-align:left;box-shadow:var(--shadow-sm);border-radius:.75rem;flex-direction:column;align-items:flex-start;gap:.35rem;padding:1rem;display:flex}.room-type-card:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-1px)}.room-type-card.added{border-color:var(--accent);background:var(--accent-soft)}.room-type-icon{color:var(--accent)}.room-type-label{color:var(--ink);font-weight:600}.room-type-meta{color:var(--ink-soft);align-items:center;gap:.3rem;font-size:.8rem;display:inline-flex}.room-type-add{border:1px solid var(--accent);background:var(--bg);color:var(--accent);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:.2rem;margin-top:.25rem;padding:.2rem .8rem;font-size:.85rem;font-weight:600;display:inline-flex}.room-type-add:hover{background:var(--accent);color:#fff}.room-type-stepper{align-items:center;gap:.5rem;margin-top:.25rem;display:inline-flex}.room-type-stepper button{border:1px solid var(--accent);background:var(--bg);width:1.6rem;height:1.6rem;color:var(--accent);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;font-size:1rem;display:inline-flex}.room-type-stepper button:hover{background:var(--accent);color:#fff}.room-type-count{text-align:center;min-width:1.25rem;color:var(--accent);font-size:.9rem;font-weight:700}.empty-home{border:1px dashed var(--line);text-align:center;border-radius:.75rem;padding:1.25rem}.empty-state{border:1px dashed var(--line);text-align:center;color:var(--ink-soft);border-radius:.75rem;padding:1.75rem 1.25rem}.room-list{flex-direction:column;gap:.5rem;margin:1rem 0;padding:0;list-style:none;display:flex}.room-list-icon{color:var(--accent);display:inline-flex}.room-list li{align-items:center;gap:.75rem;display:flex}.room-list input{max-width:18rem}.room-list .count{color:var(--ink-soft);white-space:nowrap;font-size:.85rem}.add-room{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:.5rem;margin:1.5rem 0 2rem;font-size:.9rem;display:flex}.list-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.list-header h1{margin:0 0 .25rem;font-size:1.5rem}.list-header .hint{margin:0}.progress{background:var(--line);border-radius:999px;width:100%;max-width:28rem;height:.5rem;margin-top:.6rem;overflow:hidden}.progress-fill{background:var(--ok);border-radius:999px;height:100%;transition:width .3s;display:block}.list-actions{align-items:center;gap:.5rem;display:flex}.info-card{background:var(--accent-soft);border-radius:.75rem;align-items:flex-start;gap:.75rem;margin-bottom:1.5rem;padding:1rem 1.25rem;animation:.18s ease-out slide-fade-in;display:flex}.info-card-icon{color:var(--accent);flex-shrink:0;margin-top:.15rem;font-size:1.3rem}.info-card-body{flex:1;min-width:0}.info-card-body p{color:var(--ink);margin:0 0 .75rem}.info-card-actions{flex-wrap:wrap;gap:.5rem;display:flex}.save-state{color:var(--ink-soft);font-size:.85rem}.save-state.error{color:var(--snag)}.list-body{grid-template-columns:16rem 1fr;align-items:start;gap:2rem;display:grid}.room-nav ul{flex-direction:column;gap:.125rem;margin:0;padding:0;list-style:none;display:flex}.room-nav-row>button:first-child{min-width:0;font:inherit;color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:.5rem;flex-direction:column;flex:1;align-items:stretch;gap:.3rem;padding:.5rem .75rem;font-size:.95rem;display:flex}.room-nav-line{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.room-progress-mini{background:var(--line);border-radius:999px;height:3px;display:block;overflow:hidden}.room-progress-mini-fill{background:var(--ok);border-radius:999px;height:100%;transition:width .3s;display:block}.room-nav-row{align-items:center;gap:.125rem;display:flex}.room-nav .room-delete{opacity:0;flex-shrink:0;padding:.35rem;font-size:1rem}.room-nav-row:hover .room-delete,.room-delete:focus-visible{opacity:1}@media (hover:none){.room-delete{opacity:.55}}.room-nav-row>button:first-child:hover{background:var(--bg-soft)}.room-nav-row>button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.room-name{align-items:center;gap:.5rem;min-width:0;display:inline-flex}.room-name svg{color:var(--ink-soft);flex-shrink:0}.room-nav button.active .room-name svg{color:var(--accent)}.room-meta{color:var(--ink-soft);align-items:center;gap:.35rem;font-size:.8rem;display:flex}.badge.snag{background:var(--snag);color:#fff;border-radius:999px;padding:0 .4rem;font-size:.7rem;font-weight:700;line-height:1.4}.room-nav .add-room{margin-top:1.5rem}.room-panel{background:var(--bg);border-radius:.75rem;padding:1.25rem 1.5rem}.room-panel-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.room-panel-header h2{align-items:center;gap:.5rem;margin:0;font-size:1.25rem;display:inline-flex}.room-panel-header h2 svg{color:var(--accent)}.rename-toggle{color:var(--ink-soft);font-size:1rem}.rename-toggle:hover{background:var(--bg-soft);color:var(--accent)}input.room-rename{max-width:18rem;font-size:1.1rem;font-weight:650}.filters{border:1px solid var(--line);border-radius:.5rem;display:flex;overflow:hidden}.filters button{background:var(--bg);font:inherit;color:var(--ink-soft);cursor:pointer;border:none;padding:.35rem .8rem;font-size:.85rem}.filters button+button{border-left:1px solid var(--line)}.filters button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.checklist{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.check-item{border-bottom:1px solid var(--line);align-items:flex-start;gap:.75rem;padding:.9rem .25rem;animation:.18s ease-out slide-fade-in;display:flex}.check-item:last-child{border-bottom:none}.check-marker{border:2px solid var(--line);background:var(--bg);color:#fff;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;margin-top:.15rem;font-size:.95rem;transition:background-color .15s,border-color .15s;display:inline-flex}.check-item.ok .check-marker{border-color:var(--ok);background:var(--ok)}.check-item.snag .check-marker{border-color:var(--snag);background:var(--snag)}.check-body{flex:1;min-width:0}.check-main{justify-content:space-between;align-items:center;gap:1rem;display:flex}.check-text{flex-direction:column;align-items:flex-start;gap:.15rem;min-width:0;display:flex}.check-label{font-size:1rem}.check-item.ok .check-label{color:var(--ink-soft)}.tri-state{border:1px solid var(--line);border-radius:.5rem;flex-shrink:0;display:flex;overflow:hidden}.tri-state button{background:var(--bg);font:inherit;min-height:2.5rem;color:var(--ink-soft);cursor:pointer;white-space:nowrap;border:none;align-items:center;gap:.3rem;padding:.4rem .85rem;font-size:.8rem;display:inline-flex}.tri-state button+button{border-left:1px solid var(--line)}.tri-state button.active{animation:.18s status-pop}.tri-state button.active.unverified{background:var(--bg-soft);color:var(--ink);font-weight:600}.tri-state button.active.ok{background:var(--ok-soft);color:var(--ok);font-weight:600}.tri-state button.active.snag{background:var(--snag-soft);color:var(--snag);font-weight:600}.guidance-toggle{font:inherit;color:var(--accent);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:.2rem;padding:.15rem 0;font-size:.8rem;font-weight:500;display:inline-flex}.guidance-toggle:hover,.guidance-toggle.open{text-decoration:underline}.guidance-chevron{font-size:1.1em;transition:transform .15s}.guidance-toggle.open .guidance-chevron{transform:rotate(180deg)}.guidance{background:var(--accent-soft);color:var(--ink);border-radius:.5rem;margin-top:.6rem;padding:.75rem 1rem;font-size:.9rem;animation:.18s ease-out slide-fade-in}.guidance strong{color:var(--accent)}.snag-details{background:var(--snag-soft);border-radius:.5rem;flex-direction:column;gap:.5rem;margin-top:.6rem;padding:.75rem;animation:.18s ease-out slide-fade-in;display:flex}.snag-details textarea{resize:vertical;background:var(--bg)}.fix-toggle{border:1px solid var(--ok);background:var(--bg);font:inherit;color:var(--ok);cursor:pointer;border-radius:999px;align-self:flex-start;align-items:center;gap:.35rem;padding:.35rem .9rem;font-size:.85rem;font-weight:600;display:inline-flex}.fix-toggle:hover{background:var(--ok);color:#fff}.fixed-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.fixed-chip{background:var(--ok-soft);color:var(--ok);border-radius:999px;align-items:center;gap:.3rem;padding:.25rem .75rem;font-size:.85rem;font-weight:600;display:inline-flex}.fixed-row input[type=date]{border:1px solid var(--line);font:inherit;background:var(--bg);border-radius:.4rem;padding:.25rem .5rem;font-size:.85rem}.undo-fixed{font:inherit;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:.25rem;font-size:.8rem}.undo-fixed:hover{color:var(--snag);text-decoration:underline}.add-item{gap:.5rem;margin-top:1rem;display:flex}.modal-overlay{z-index:100;background:#1f293773;justify-content:center;align-items:center;padding:1.5rem;animation:.15s ease-out fade-in;display:flex;position:fixed;inset:0}.modal{background:var(--bg);border-radius:.75rem;max-width:26rem;padding:1.5rem;animation:.18s ease-out pop-in;box-shadow:0 10px 40px #0003}.modal h2{margin:0 0 .75rem;font-size:1.15rem}.modal p{color:var(--ink-soft);margin:0 0 1.25rem;font-size:.95rem}.modal-actions{justify-content:flex-end;gap:.5rem;display:flex}.button.danger{background:var(--snag);border-color:var(--snag);color:#fff;font-weight:600}.button.danger:hover{filter:brightness(1.08);background:var(--snag)}.printable h1{margin-bottom:.25rem;font-size:1.5rem}.report-meta{color:var(--ink-soft);margin-top:0}.printable .list-actions{justify-content:space-between;margin-bottom:1.5rem}.print-worklist h2,.print-record>h2{margin-top:2rem;font-size:1.1rem}.print-room{break-inside:avoid-page;margin-top:2rem}.print-room h3{margin-bottom:.5rem;font-size:1rem}.print-room-meta{color:var(--ink-soft);font-size:.9rem;font-weight:400}.printable table.worklist th:first-child{width:18%}.printable table.worklist th:nth-child(2){width:34%}.printable table.worklist th:nth-child(3){width:48%}.printable table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:.85rem}.printable th:first-child{width:32%}.printable th:nth-child(2){width:11%}.printable th:nth-child(3){width:45%}.printable th:nth-child(4){width:12%}.printable td{overflow-wrap:break-word}.printable th,.printable td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.4rem .6rem}.printable th{color:var(--ink-soft);font-weight:600}.printable tr.snag .status-cell{color:var(--snag);font-weight:700}.printable tr.ok .status-cell{color:var(--ok)}.printable tr.unverified .status-cell{color:var(--ink-soft)}.print-footer{display:none}@media screen and (width<=48rem){.site-header{gap:.75rem;padding:.75rem 1rem}.brand{white-space:nowrap;font-size:1rem}.brand-icon{font-size:1.25rem}.icon-button.menu-toggle{min-width:44px;min-height:44px;display:inline-flex}.icon-button{min-width:44px;min-height:44px}.room-nav-row>button:first-child,.filters button,.chip{min-height:44px}.room-type-stepper button{width:2.75rem;height:2.75rem}.button{min-height:44px}.site-header nav{display:none}.site-header nav.open{background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:0;padding:.25rem 0 .5rem;animation:.18s ease-out slide-fade-in;display:flex;position:absolute;top:100%;left:0;right:0;box-shadow:0 12px 24px #00000014}.site-header nav.open a{padding:.65rem 1rem}.site-header nav.open a:hover{background:var(--bg-soft)}.page{padding:1.25rem 1rem 3rem}.landing .hero{padding:2.5rem 0 2rem}.features{gap:1rem;margin:2rem 0}.list-header{flex-direction:column;align-items:stretch}.list-actions{flex-wrap:wrap}.info-card{flex-direction:column}.info-card-actions{flex-direction:column;align-items:stretch}.list-body{flex-direction:column;gap:1.25rem;display:flex}.room-nav{display:contents}.room-nav .add-room{border-top:1px solid var(--line);order:1;margin:0;padding-top:1.25rem}.room-nav ul{flex-flow:wrap;gap:.4rem}.room-nav-row{border:1px solid var(--line);border-radius:999px;padding-right:.15rem}.room-nav-row>button:first-child{border-radius:999px;padding:.35rem .4rem .35rem .75rem;font-size:.9rem}.room-nav-row:has(>button.active){border-color:var(--accent)}.room-nav .room-delete{opacity:.55}.room-progress-mini{display:none}.room-panel{padding:1rem .85rem}.check-item{gap:.6rem}.check-main{flex-direction:column;align-items:stretch;gap:.6rem}.guidance-toggle{padding:.3rem 0;font-size:.85rem}.fix-toggle{min-height:44px;padding:.5rem 1rem}.tri-state{width:100%}.tri-state button{flex:1;justify-content:center;min-height:44px;padding:.45rem .5rem}.add-item input{flex:1;min-width:0}.modal-overlay{padding:1rem}.modal{width:100%}.printable table,.printable tbody,.printable tr,.printable td{width:auto;display:block}.printable thead{display:none}.printable tr{border-bottom:1px solid var(--line);padding:.6rem 0}.printable td{border-bottom:none;padding:.1rem 0}.printable td:empty{display:none}.printable td:before{content:attr(data-label) ": ";color:var(--ink-soft);font-weight:600}.printable td:first-child{font-weight:650}.printable td:first-child:before{content:none}}@media print{@page{margin:1.6cm}.no-print{display:none!important}body{background:#fff}.page{max-width:none;padding:0}.printable table{font-size:.75rem}tr{break-inside:avoid}.print-footer{border-top:1px solid var(--line);color:var(--ink-soft);margin-top:2rem;padding-top:.5rem;font-size:.75rem;display:block}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:scale(.96)translateY(4px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes status-pop{0%{transform:scale(1)}50%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes slide-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
