:root{--canvas:#f3f5f8;--surface:#fff;--surface-2:#f8fafc;--ink:#18202e;--ink-soft:#26303f;--muted:#5a6473;--muted-strong:#4a5566;--line:#e7ecf2;--line-2:#dde3eb;--line-strong:#cdd6e2;--brand:#1d4ed8;--brand-600:#2563eb;--brand-700:#1e40af;--brand-tint:#eaf0fd;--success:#15803d;--success-tint:#e8f5ec;--amber:#b45309;--amber-tint:#fdf3e3;--danger:#c2261d;--danger-tint:#fdecea;--footer:#0f1722;--grid:#18202e0a;--font-sans:"Geist", ui-sans-serif, system-ui, sans-serif;--font-mono:"Geist Mono", ui-monospace, "SF Mono", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.5rem;--text-2xl:2.25rem;--text-3xl:clamp(2.5rem, 5vw + 1rem, 4.25rem);--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:72px;--s9:112px;--r-sm:6px;--r-md:10px;--r-lg:16px;--container:1200px;--gutter:16px;--ease:cubic-bezier(.2, 0, 0, 1)}@media (width>=760px){:root{--gutter:32px}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background-color:var(--canvas);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;background-size:32px 32px;margin:0;line-height:1.55}h1,h2,h3,h4{letter-spacing:-.02em;margin:0;font-weight:700;line-height:1.12}p{margin:0}a{color:var(--brand);text-underline-offset:3px;text-decoration-thickness:1px}img{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--brand-600);outline-offset:2px}.container{width:100%;max-width:calc(var(--container) + 2 * var(--gutter));padding:0 var(--gutter);margin:0 auto}.num{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.label{margin-bottom:var(--s3);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;font-weight:500;display:block}.section{padding:var(--s8) 0}.section+.section{border-top:1px solid var(--line)}.section-head{justify-content:space-between;align-items:flex-end;gap:var(--s4);margin-bottom:var(--s6);flex-wrap:wrap;display:flex}.section-head h2{font-size:var(--text-2xl);max-width:22ch}.section-head p{max-width:56ch;color:var(--muted)}.panel{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-lg)}.btn{justify-content:center;align-items:center;gap:var(--s2);min-height:44px;padding:0 var(--s5);border-radius:var(--r-md);background:var(--ink);color:#fff;font-size:var(--text-sm);cursor:pointer;transition:background-color .15s var(--ease), border-color .15s var(--ease), color .15s var(--ease);border:1px solid #0000;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--ink-soft)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--brand)}.btn-primary:hover{background:var(--brand-700)}.btn-ghost{border-color:var(--line-strong);color:var(--ink);background:0 0}.btn-ghost:hover{background:var(--surface);border-color:var(--muted)}.btn-sm{min-height:32px;padding:0 var(--s3);border-radius:var(--r-sm);font-size:var(--text-xs)}.link-btn{color:var(--brand);font-size:var(--text-sm);cursor:pointer;background:0 0;border:0;padding:0;font-weight:500}.link-btn:hover{text-decoration:underline}.link-btn.danger{color:var(--danger)}.field{gap:var(--s1);font-size:var(--text-sm);flex-direction:column;display:flex}.field>span{color:var(--muted-strong);font-weight:500}.input{width:100%;min-height:40px;padding:0 var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);transition:border-color .15s var(--ease)}.input:hover{border-color:var(--muted)}.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint);outline:none}textarea.input{min-height:96px;padding:var(--s2) var(--s3);resize:vertical}.status{font-size:var(--text-xs);white-space:nowrap;align-items:center;gap:6px;font-weight:600;display:inline-flex}.status:before{content:"";border:1.5px solid;border-radius:50%;width:8px;height:8px}.status-planned{color:var(--muted)}.status-in_progress{color:var(--brand)}.status-in_progress:before{box-shadow:0 0 0 3px var(--brand-tint);background:currentColor}.status-done{color:var(--success)}.status-done:before{background:currentColor}.progress{background:var(--line);border-radius:2px;height:4px;position:relative;overflow:hidden}.progress>span{background:var(--ink);transition:width .2s var(--ease);border-radius:2px;position:absolute;inset:0 auto 0 0}.empty{padding:var(--s6);color:var(--muted);text-align:center}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}.shell{flex-direction:column;min-height:100vh;display:flex}.header{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line-2);background:#f3f5f8e0;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:var(--s4);min-height:64px;display:flex}.brand{align-items:center;gap:var(--s3);color:var(--ink);font-size:var(--text-base);white-space:nowrap;text-decoration:none;display:inline-flex}.brand strong{font-weight:700}.nav{gap:var(--s1);scrollbar-width:none;display:flex;overflow-x:auto}.nav-link{padding:var(--s2) var(--s3);border-radius:var(--r-sm);color:var(--muted-strong);font-size:var(--text-sm);white-space:nowrap;transition:color .15s var(--ease), background-color .15s var(--ease);font-weight:500;text-decoration:none}.nav-link:hover{color:var(--ink);background:var(--surface)}.nav-link.active{color:var(--ink);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-2)}.nav{flex:1;justify-content:flex-end}.user-menu{align-items:center;gap:var(--s3);padding-left:var(--s3);border-left:1px solid var(--line-2);white-space:nowrap;display:flex}.user-chip{align-items:center;gap:var(--s2);color:var(--ink);font-size:var(--text-sm);transition:background-color .15s var(--ease);border-radius:999px;padding:4px 8px 4px 4px;font-weight:500;text-decoration:none;display:inline-flex}.user-chip:hover,.user-chip.active{background:var(--surface)}.user-avatar{background:var(--ink);color:#fff;width:28px;height:28px;font-size:var(--text-xs);border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.user-menu .link-btn{font-size:var(--text-xs)}@media (width<=900px){.user-name{display:none}}.main{flex:1}.footer{margin-top:var(--s8);background:var(--footer);color:#c6cdd8}.footer-inner{gap:var(--s6);padding-top:var(--s7);padding-bottom:var(--s7);display:grid}.footer-about strong{margin-bottom:var(--s2);color:#fff;font-size:var(--text-lg);display:block}.footer-about p{max-width:42ch;font-size:var(--text-sm)}.footer-phases{gap:var(--s2) var(--s5);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.footer-phases a{color:#c6cdd8;font-size:var(--text-sm);text-decoration:none}.footer-phases a:hover{color:#fff}.footer-phases .mono{color:#7d8796}@media (width<=640px){.brand span{display:none}}@media (width>=900px){.footer-inner{grid-template-columns:1fr 2fr}}.switcher{position:relative}.switcher summary{align-items:center;gap:var(--s2);max-width:220px;height:34px;padding:0 var(--s3);border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font-size:var(--text-sm);cursor:pointer;font-weight:500;list-style:none;display:inline-flex}.switcher summary::-webkit-details-marker{display:none}.switcher-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.switcher-menu{z-index:30;min-width:260px;padding:var(--s2);border:1px solid var(--line-2);border-radius:var(--r-md);background:var(--surface);display:grid;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 12px 32px #18202e1f}.switcher-menu a{padding:var(--s2) var(--s3);border-radius:var(--r-sm);color:var(--ink);gap:1px;text-decoration:none;display:grid}.switcher-menu a:hover,.switcher-menu a.is-current{background:var(--surface-2)}.switcher-name{font-size:var(--text-sm);font-weight:600}.switcher-meta{color:var(--muted);font-size:var(--text-xs)}.switcher-menu .switcher-all{margin-top:var(--s1);border-top:1px solid var(--line);border-radius:0 0 var(--r-sm) var(--r-sm);color:var(--brand);font-size:var(--text-sm);font-weight:500}@media (width<=640px){.switcher summary{max-width:140px}}.auth{min-height:100vh;padding:var(--s5) var(--gutter);justify-content:center;align-items:center;display:flex}.auth-card{width:100%;max-width:420px;padding:var(--s6)}.auth-brand{align-items:center;gap:var(--s3);margin-bottom:var(--s6);color:var(--ink);display:flex}.auth-card h1{font-size:var(--text-xl);font-weight:700}.auth-card>p{margin-top:var(--s2);font-size:var(--text-sm)}.auth-form{gap:var(--s4);margin-top:var(--s5);display:grid}.auth-form .btn{min-height:48px;margin-top:var(--s2)}.auth-error{padding:var(--s3);border-radius:var(--r-sm);background:var(--danger-tint);color:var(--danger);font-size:var(--text-sm)}.fp-head{justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s4);flex-wrap:wrap;display:flex}.fp-tabs{border:1px solid var(--line-2);border-radius:var(--r-md);background:var(--surface);padding:3px;display:inline-flex}.fp-tabs button{height:36px;padding:0 var(--s4);color:var(--muted-strong);font-size:var(--text-sm);cursor:pointer;transition:background-color .15s var(--ease), color .15s var(--ease);background:0 0;border:0;border-radius:7px;font-weight:600}.fp-tabs button span{opacity:.75;font-weight:400}.fp-tabs button.is-on{background:var(--ink);color:#fff}.fp-meta{color:var(--muted);font-size:var(--text-sm)}.fp-body{gap:var(--s4);display:grid}@media (width>=980px){.fp-body{grid-template-columns:minmax(0,3fr) minmax(280px,2fr);align-items:start}}.fp-canvas{padding:var(--s4);background:radial-gradient(circle at 1px 1px, #18202e12 1px, transparent 0) 0 0 / 22px 22px, var(--surface)}.fp-canvas svg{width:100%;height:auto;max-height:78vh;font-family:var(--font-sans);color:var(--ink);display:block}.fp-walls{fill:#2b3442}.fp-room{cursor:pointer;outline:none}.fp-highlight{fill:#2563eb1f;stroke:var(--brand-600);stroke-width:4px;stroke-linejoin:round;pointer-events:none}.fp-opening{fill:#d8e9f7;stroke:#5b8fd6;stroke-width:2px;pointer-events:visibleFill}.fp-opening.is-door{fill:#f6f2ea;stroke:#a08a68;stroke-dasharray:none}.fp-stairs{pointer-events:none}.fp-stairs rect{fill:#ffffffb8;stroke:#a9b2bd;stroke-width:1.5px}.fp-stairs line{stroke:#c9d0d8;stroke-width:1.5px}.fp-stairs-arrow{fill:none;stroke:var(--muted-strong);stroke-width:2px;color:var(--muted-strong)}.fp-covered{stroke:#d2c3a8;stroke-width:1.5px}.fp-covered-label{fill:#8a7656;letter-spacing:.04em;text-transform:uppercase;pointer-events:none;font-size:17px;font-weight:600}.fp-below path{fill:#cbd5e138;stroke:#c3cbd6;stroke-width:2px;stroke-dasharray:10 8}.fp-below text{fill:var(--muted);font-size:17px}.fp-label{pointer-events:none}.fp-label rect{fill:#ffffffe6;stroke:#18202e14;stroke-width:1px}.fp-label-id{fill:var(--muted);font-family:var(--font-mono);font-size:13px}.fp-label-name{fill:var(--ink);font-size:17px;font-weight:600}.fp-label-area{fill:var(--brand-700);font-variant-numeric:tabular-nums;font-size:16px;font-weight:600}.fp-dim path{fill:none;stroke:#8d97a5;stroke-width:1.5px}.fp-dim rect{fill:var(--surface);stroke:#c3cbd6;stroke-width:1px}.fp-dim text{fill:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:15px;font-weight:600}.fp-mark{color:var(--muted-strong)}.fp-mark text{fill:var(--muted-strong);font-size:15px;font-weight:600}.fp-mark path{stroke:currentColor;stroke-width:2.5px}.fp-scale rect{fill:#2b3442}.fp-scale rect.odd{fill:#fff;stroke:#2b3442;stroke-width:1.5px}.fp-scale text{fill:var(--muted);font-size:14px}.fp-legend{gap:var(--s2) var(--s4);margin:var(--s3) 0 0;padding:var(--s3) var(--s2) 0;border-top:1px solid var(--line);color:var(--muted-strong);font-size:var(--text-xs);flex-wrap:wrap;list-style:none;display:flex}.fp-legend li{align-items:center;gap:6px;display:inline-flex}.fp-side{gap:var(--s3);display:grid}.fp-detail{min-height:236px;padding:var(--s5)}.fp-detail.is-empty{color:var(--muted);font-size:var(--text-sm);text-align:center;justify-content:center;align-items:center;display:flex}.fp-detail .label{margin-bottom:var(--s1)}.fp-detail h3{font-size:var(--text-lg);letter-spacing:-.01em;font-weight:600}.fp-detail-area{font-size:var(--text-xl);margin-top:2px;font-weight:600}.fp-detail dl{margin:var(--s4) 0 0;font-size:var(--text-sm);gap:6px;display:grid}.fp-detail dl div{gap:var(--s3);grid-template-columns:120px 1fr;display:grid}.fp-detail dt{color:var(--muted)}.fp-detail dd{margin:0}.fp-detail-note{margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--line);color:var(--muted-strong);font-size:var(--text-sm)}.fp-rooms{margin:0;padding:0;list-style:none}.fp-rooms button{align-items:center;gap:var(--s2);width:100%;padding:7px var(--s2);border-radius:var(--r-sm);font-size:var(--text-sm);text-align:left;cursor:pointer;transition:background-color .15s var(--ease);background:0 0;border:0;grid-template-columns:12px 36px 1fr auto;display:grid}.fp-rooms button:hover,.fp-rooms button.is-active{background:var(--surface)}.fp-room-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fp-swatch{border:1px solid #18202e1f;border-radius:4px;flex:none;width:14px;height:14px}.finish-wood{background:repeating-linear-gradient(0deg,#f3e9d8 0 4px,#e7d6ba 4px 5px)}.finish-tile{background:linear-gradient(90deg,#e1e3df 1px,#0000 1px) 0 0/7px 7px,linear-gradient(#e1e3df 1px,#0000 1px) 0 0/7px 7px,#f3f4f2}.finish-wet{background:linear-gradient(90deg,#d3e1eb 1px,#0000 1px) 0 0/4px 4px,linear-gradient(#d3e1eb 1px,#0000 1px) 0 0/4px 4px,#e7f0f6}.finish-concrete{background:#eceef0}.finish-glass{background:#d8e9f7;border-color:#5b8fd6}.fp-note{color:var(--muted);font-size:var(--text-xs)}.hero{gap:var(--s6);padding-top:var(--s7);padding-bottom:var(--s6);align-items:center;display:grid}.hero h1{font-size:var(--text-3xl);letter-spacing:-.035em;max-width:14ch;font-weight:800;line-height:1.02}.hero-lead{max-width:52ch;margin-top:var(--s5);color:var(--muted-strong);font-size:var(--text-lg)}.hero-actions{gap:var(--s3);margin-top:var(--s6);flex-wrap:wrap;display:flex}.hero-actions .btn{min-height:52px;font-size:var(--text-base)}.hero-figure{margin:0}.hero-figure img{aspect-ratio:16/10;object-fit:cover;border-radius:var(--r-lg);border:1px solid var(--line-2);width:100%;height:auto}figcaption{margin-top:var(--s2);color:var(--muted);font-size:var(--text-xs)}@media (width>=980px){.hero.is-text{grid-template-columns:1fr}.hero:not(.is-text){gap:var(--s7);padding-top:var(--s8);grid-template-columns:5fr 6fr}}.summary{gap:var(--s5);padding:var(--s5);display:grid}.summary-total{letter-spacing:-.03em;font-size:clamp(2rem,4vw,3rem);font-weight:600;line-height:1.1;display:block}.summary-bar{height:6px;margin:var(--s3) 0 var(--s2);background:var(--line);border-radius:3px;position:relative;overflow:hidden}.summary-bar span{background:var(--brand);position:absolute;inset:0 auto 0 0}.summary-main p{font-size:var(--text-sm)}.summary-grid{gap:var(--s4);grid-template-columns:repeat(2,1fr);margin:0;display:grid}.summary-grid dt{color:var(--muted);font-size:var(--text-xs)}.summary-grid dd{font-size:var(--text-lg);margin:2px 0 0;font-weight:600}.summary-grid dd.is-optional{color:var(--muted-strong)}.summary-grid dd.is-over{color:var(--danger)}.summary-grid dd.summary-sub{color:var(--muted);font-size:var(--text-xs);margin-top:0;font-weight:400}.summary-grid dd.is-good{color:var(--success)}@media (width>=900px){.summary{gap:var(--s7);padding:var(--s6);grid-template-columns:1fr 1.4fr}.summary-grid{border-left:1px solid var(--line);padding-left:var(--s7);align-content:center;gap:var(--s5) var(--s6);grid-template-columns:repeat(3,1fr)}}.phase-list{border-top:1px solid var(--line-strong);margin:0;padding:0;list-style:none}.phase-list li{border-bottom:1px solid var(--line-2)}.phase-row{gap:var(--s2) var(--s4);padding:var(--s5) var(--s2);color:inherit;transition:background-color .15s var(--ease);grid-template-columns:56px 1fr;text-decoration:none;display:grid}.phase-row:hover{background:#ffffffb3}.phase-row.is-current{background:var(--surface)}.phase-no{color:var(--muted);font-size:var(--text-xl);font-weight:500;line-height:1.1}.phase-row.is-current .phase-no{color:var(--brand)}.phase-body{gap:var(--s1);flex-direction:column;min-width:0;display:flex}.phase-title{align-items:baseline;gap:var(--s2) var(--s3);flex-wrap:wrap;display:flex}.phase-name{font-size:var(--text-lg);letter-spacing:-.01em;font-weight:600}.phase-summary{max-width:70ch;color:var(--muted-strong);font-size:var(--text-sm)}.phase-meta{gap:var(--s4);color:var(--muted);font-size:var(--text-xs);display:flex}.phase-money{gap:var(--s2);flex-direction:column;grid-column:2;display:flex}.phase-money>.num{font-weight:600}.phase-optional{color:var(--muted);font-size:var(--text-xs)}.side-tag{border:1px dashed var(--muted);color:var(--muted-strong);border-radius:999px;padding:0 8px;font-size:11px;font-weight:600}.phase-share{background:var(--line);border-radius:2px;width:100%;max-width:200px;height:4px;display:block;position:relative}.phase-share span{background:var(--ink);border-radius:2px;position:absolute;inset:0 auto 0 0}@media (width>=900px){.phase-row{padding:var(--s5) var(--s4);grid-template-columns:72px 1fr 220px}.phase-no{font-size:var(--text-2xl)}.phase-money{text-align:right;grid-column:3;align-items:flex-end}.phase-optional{color:var(--muted);font-size:var(--text-xs)}.side-tag{border:1px dashed var(--muted);color:var(--muted-strong);border-radius:999px;padding:0 8px;font-size:11px;font-weight:600}.phase-share{margin-left:auto}}.side-quests{margin-top:var(--s7)}.side-quests-head{align-items:baseline;gap:var(--s2) var(--s4);margin-bottom:var(--s3);flex-wrap:wrap;display:flex}.side-quests-head .label{margin:0}.side-quests-head p{color:var(--muted);font-size:var(--text-sm)}.phase-list.is-side{border:1px dashed var(--line-strong);border-radius:var(--r-lg);background:#ffffff8c;overflow:hidden}.phase-list.is-side li:last-child{border-bottom:0}.phase-list.is-side .phase-no{color:var(--amber)}.facts{grid-template-columns:1fr;margin:0;display:grid;overflow:hidden}.facts>div{justify-content:space-between;gap:var(--s4);padding:var(--s3) var(--s5);border-bottom:1px solid var(--line);display:flex}.facts dt{color:var(--muted);font-size:var(--text-sm)}.facts dd{font-size:var(--text-sm);text-align:right;margin:0;font-weight:600}@media (width>=760px){.facts{grid-template-columns:repeat(2,1fr)}.facts>div:nth-child(odd){border-right:1px solid var(--line)}}@media (width>=1100px){.facts{grid-template-columns:repeat(3,1fr)}.facts>div:nth-child(odd){border-right:0}.facts>div:not(:nth-child(3n)){border-right:1px solid var(--line)}}.gallery{gap:var(--s3);display:grid}.gallery img{aspect-ratio:16/10;object-fit:cover;border-radius:var(--r-lg);border:1px solid var(--line-2);width:100%}@media (width>=760px){.gallery{grid-template-columns:repeat(3,1fr)}}.budget-scroll{border:1px solid var(--line-2);border-radius:var(--r-lg);background:var(--surface);overflow:hidden}.budget-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.budget-table th,.budget-table td{padding:var(--s3);text-align:left;vertical-align:top}.budget-table thead th{padding-top:var(--s3);padding-bottom:var(--s3);border-bottom:1px solid var(--line-2);background:var(--surface-2);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;font-weight:500}.budget-table tbody tr+tr td{border-top:1px solid var(--line)}.budget-table tbody tr{transition:opacity .15s var(--ease)}.budget-table tbody tr.is-saving{opacity:.6}.budget-table .sum-row>*{border-top:1px solid var(--line-strong);background:var(--surface-2);font-weight:500}.budget-table .sum-row th{color:var(--muted-strong)}.budget-table .sum-row td .num{font-size:var(--text-base);font-weight:600}.budget-table .sum-row.is-optional td .num{color:var(--muted-strong)}.budget-table .group-row th{padding-top:var(--s5);border-top:1px solid var(--line-strong);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;font-weight:500}.budget-table tr.is-optional .item-name,.budget-table tr.is-optional .col-total .num{color:var(--muted-strong)}.opt-toggle{height:22px;padding:0 var(--s2);border:1px solid var(--line-2);background:var(--surface);color:var(--muted-strong);cursor:pointer;transition:background-color .15s var(--ease), color .15s var(--ease), border-color .15s var(--ease);border-radius:999px;font-size:11px;font-weight:600}.opt-toggle:hover{border-color:var(--muted);color:var(--ink)}.opt-toggle.is-on{border-style:dashed;border-color:var(--muted);color:var(--muted);background:0 0}.col-name{min-width:240px}.editable{width:100%;color:inherit;font:inherit;text-align:left;cursor:text;transition:border-color .15s var(--ease), background-color .15s var(--ease);background:0 0;border:1px solid #0000;border-radius:4px;margin:0 -4px;padding:1px 4px;display:block}.editable:hover{border-color:var(--line-strong);background:var(--surface)}.editable.is-empty{color:var(--muted);opacity:0}tr:hover .editable.is-empty,.editable.is-empty:focus-visible{opacity:1}@media (hover:none){.editable.is-empty{opacity:1}}.editable-input{border:1px solid var(--brand);background:var(--surface);width:100%;box-shadow:0 0 0 3px var(--brand-tint);font:inherit;resize:vertical;border-radius:4px;outline:none;margin:0 -4px;padding:1px 4px;display:block}.item-name{font-weight:500;line-height:1.35}.item-basis{color:var(--muted);font-size:var(--text-xs);margin-top:2px;line-height:1.4}.qty-cell{align-items:center;gap:var(--s1);display:inline-flex}.item-unit{width:auto;min-width:2.6em;color:var(--muted);font-size:var(--text-xs);margin:0}.removed{margin-top:var(--s3);border:1px dashed var(--line-strong);border-radius:var(--r-lg);font-size:var(--text-sm);background:#ffffff8c}.removed summary{padding:var(--s3) var(--s4);color:var(--muted-strong);cursor:pointer;font-weight:500}.removed ul{padding:0 var(--s4) var(--s3);margin:0;list-style:none}.removed li{justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s2) 0;border-top:1px solid var(--line);display:flex}.add-item-basis{grid-column:1/-1}.add-item-checks{gap:var(--s2) var(--s5);font-size:var(--text-sm);flex-wrap:wrap;grid-column:1/-1;display:flex}.add-item-checks label{align-items:center;gap:var(--s2);cursor:pointer;display:inline-flex}.add-item-checks input{accent-color:var(--ink)}.item-meta{align-items:center;gap:var(--s3);margin-top:var(--s2);flex-wrap:wrap;display:flex}.item-meta .link-btn{font-size:var(--text-xs)}.source{height:22px;padding:0 var(--s2);border:1px solid var(--line-2);background:var(--surface-2);color:var(--muted-strong);cursor:pointer;border-radius:999px;font-size:11px;font-weight:600}.source-quote{background:var(--brand-tint);color:var(--brand-700);border-color:#c7d6fb}.source-actual{background:var(--success-tint);color:var(--success);border-color:#bfe0c9}.col-qty,.col-price{white-space:nowrap;width:1%}.col-price.is-off .num-input input{color:var(--muted);text-decoration:line-through}.col-total{white-space:nowrap;width:1%;text-align:right!important}.col-total .num{font-weight:600}.col-actual{white-space:nowrap;width:1%}.col-actual .num-input input{border-style:dashed;border-color:var(--line-strong);background:var(--surface);width:108px}.col-actual .num-input input:not(:placeholder-shown){background:var(--success-tint);border-style:solid;border-color:#bfe0c9}.col-actual .num-input-suffix{min-width:0}.estimate{color:var(--muted);font-size:var(--text-xs);margin-top:2px;text-decoration:line-through;display:block;font-weight:400!important}.saving.is-over{color:var(--danger)}.saving{color:var(--success);font-size:var(--text-xs);margin-top:2px;display:block;font-weight:500!important}.num-input{align-items:center;gap:var(--s1);display:inline-flex}.num-input input{width:96px;height:32px;padding:0 var(--s2);border-radius:var(--r-sm);background:var(--surface-2);text-align:right;transition:border-color .15s var(--ease), background-color .15s var(--ease);border:1px solid #0000}.num-input input:hover{border-color:var(--line-strong)}.num-input input:focus{border-color:var(--brand);background:var(--surface);box-shadow:0 0 0 3px var(--brand-tint);outline:none}.num-input.is-error input{border-color:var(--danger);background:var(--danger-tint)}.num-input-suffix{min-width:2.5em;color:var(--muted);font-size:var(--text-xs)}.exec-toggle{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface-2);padding:2px;display:inline-flex}.exec-toggle button{min-width:52px;height:28px;padding:0 var(--s2);color:var(--muted);font-size:var(--text-xs);cursor:pointer;transition:background-color .15s var(--ease), color .15s var(--ease);background:0 0;border:0;border-radius:4px;font-weight:600}.exec-toggle button.is-on{background:var(--ink);color:#fff}.exec-toggle button:not(.is-on):hover{color:var(--ink)}.exec-fixed{color:var(--muted);font-size:var(--text-xs);padding-top:6px;display:inline-block}.budget-actions{justify-content:space-between;align-items:flex-start;gap:var(--s4);margin-top:var(--s4);flex-wrap:wrap;display:flex}.budget-actions>p{max-width:60ch;font-size:var(--text-xs)}.add-item{gap:var(--s3);width:100%;padding:var(--s4);border:1px solid var(--line-2);border-radius:var(--r-lg);background:var(--surface);grid-template-columns:repeat(2,1fr);display:grid}.add-item-name{grid-column:1/-1}.add-item-actions{gap:var(--s2);grid-column:1/-1;display:flex}@media (width>=900px){.add-item{grid-template-columns:3fr repeat(4,1fr);align-items:end}.add-item-name{grid-column:auto}}@media (width<=860px){.budget-table thead{display:none}.budget-table,.budget-table tbody,.budget-table tr,.budget-table td,.budget-table th{width:100%;display:block}.budget-table tbody tr{gap:var(--s2) var(--s3);padding:var(--s4);grid-template-columns:1fr 1fr;display:grid}.budget-table tbody tr+tr{border-top:1px solid var(--line)}.budget-table tbody tr+tr td{border-top:0}.budget-table tbody td{padding:0}.budget-table .col-name{grid-column:1/-1;min-width:0}.budget-table td[data-label]:before{content:attr(data-label);color:var(--muted);margin-bottom:2px;font-size:11px;display:block}.budget-table .col-total{text-align:left!important}.budget-table tbody tr.sum-row,.budget-table tbody tr.group-row{justify-content:space-between;gap:var(--s3);padding:var(--s3) var(--s4);border-top:1px solid var(--line-strong);background:var(--surface-2);display:flex}.budget-table tbody tr.group-row{background:0 0}.budget-table .sum-row>*,.budget-table .group-row>*{background:0 0;border:0;width:auto;padding:0}}.replaces-tag{background:var(--success-tint);color:var(--success);border-radius:999px;margin:2px 0;padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.budget-table tr.is-replacing td{background:var(--surface-2)}.budget-table tr.replace-row td{background:var(--surface-2);padding-top:0;border-top:0!important}.replace-form{gap:var(--s3);padding:var(--s4);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--surface);grid-template-columns:repeat(2,1fr);display:grid}.replace-title,.replace-name{grid-column:1/-1}.replace-title{font-size:var(--text-sm)}@media (width>=1000px){.replace-form{grid-template-columns:3fr repeat(5,1fr);align-items:end}.replace-name{grid-column:auto}}.removed li{justify-content:flex-start}.removed-name{flex:1}.removed-tag{background:var(--surface-2);min-width:92px;color:var(--muted-strong);text-align:center;border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:600}.removed-tag.not_needed,.removed-tag.replaced{background:var(--success-tint);color:var(--success)}.saving-inline{color:var(--success);font-weight:500}.tasks-head{align-items:center;gap:var(--s3);margin-bottom:var(--s3);font-size:var(--text-sm);display:flex}.tasks-head .progress{flex:1}.task-list{margin:0;padding:0;list-style:none}.task-list li{align-items:flex-start;gap:var(--s2);padding:var(--s2) 0;display:flex}.task-list li+li{border-top:1px solid var(--line)}.task-list label{gap:var(--s3);cursor:pointer;flex:1;display:flex}.task-list input[type=checkbox]{width:18px;height:18px;accent-color:var(--ink);cursor:pointer;flex:none;margin:2px 0 0}.task-title{font-size:var(--text-sm);line-height:1.45;display:block}.task-desc{color:var(--muted);font-size:var(--text-xs);margin-top:2px;line-height:1.45;display:block}.task-list li.is-done .task-title{color:var(--muted);text-decoration:line-through}.task-remove{border-radius:var(--r-sm);width:28px;height:28px;color:var(--muted);cursor:pointer;opacity:0;transition:opacity .15s var(--ease), background-color .15s var(--ease);background:0 0;border:0;flex:none;font-size:18px;line-height:1}.task-list li:hover .task-remove,.task-remove:focus-visible{opacity:1}.task-remove:hover{background:var(--danger-tint);color:var(--danger)}@media (hover:none){.task-remove{opacity:1}}.task-add{gap:var(--s2);margin-top:var(--s3);display:flex}.tips{gap:var(--s3);display:grid}@media (width>=760px){.tips{grid-template-columns:repeat(2,1fr)}}.tip{padding:var(--s5);border:1px solid var(--line-2);border-radius:var(--r-lg);background:var(--surface)}.tip-warning{background:var(--amber-tint);border-color:#f0d3ae}.tip-type{margin-bottom:var(--s2);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;font-weight:600;display:inline-block}.tip-warning .tip-type{color:var(--amber)}.tip-tip .tip-type{color:var(--brand)}.tip-check .tip-type{color:var(--ink)}.tip-diy .tip-type{color:var(--success)}.tip h3{margin-bottom:var(--s2);font-size:var(--text-base);letter-spacing:-.01em;font-weight:600}.tip p{color:var(--ink-soft);font-size:var(--text-sm);white-space:pre-line}.doc-thumb{aspect-ratio:4/3;background:var(--surface-2);justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.doc-thumb img{object-fit:contain;background:#fff;width:100%;height:100%;padding:10px}.doc-thumb.kind-image img{object-fit:cover;padding:0}.doc-thumb-file{aspect-ratio:3/4;border:1px solid var(--line-strong);background:#fff;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:46%;display:flex;box-shadow:0 1px 2px #18202e0f}.doc-thumb-ext{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:600}.doc-thumb-kind{color:var(--muted);font-size:11px}.kind-word .doc-thumb-ext{color:var(--brand-700)}.kind-sheet .doc-thumb-ext{color:var(--success)}.doc-thumb-sm .doc-thumb-ext{font-size:var(--text-sm)}.doc-thumb-sm .doc-thumb-kind{display:none}.doc-thumb-sm img{padding:4px}.viewer{border:1px solid var(--line-2);border-radius:var(--r-lg);background:var(--surface);width:min(1280px,100vw - 24px);max-width:none;height:calc(100dvh - 24px);max-height:none;color:var(--ink);margin:auto;padding:0}.viewer::backdrop{background:#0f17229e}.viewer-inner{flex-direction:column;height:100%;display:flex}.viewer-head{justify-content:space-between;align-items:flex-start;gap:var(--s3) var(--s5);padding:var(--s4) var(--s5);border-bottom:1px solid var(--line-2);flex-wrap:wrap;display:flex}.viewer-title{flex:320px;min-width:0}.viewer-code{color:var(--muted);font-size:var(--text-xs);display:block}.viewer-title h2{font-size:var(--text-lg);letter-spacing:-.01em;font-weight:600}.viewer-title p{font-size:var(--text-xs);margin-top:2px}.viewer-actions{gap:var(--s2);flex-wrap:wrap;display:flex}.viewer-body{background:var(--canvas);flex:1;min-height:0}.viewer-body iframe{border:0;width:100%;height:100%;display:block}.viewer-body>img{object-fit:contain;width:100%;height:100%}.viewer-file{justify-content:center;align-items:center;gap:var(--s5);height:100%;padding:var(--s6);text-align:center;flex-direction:column;display:flex}.viewer-file-thumb{border-radius:var(--r-md);border:1px solid var(--line-2);width:220px;overflow:hidden}.viewer-file p{max-width:44ch;color:var(--muted-strong)}.privacy-toggle{border:1px solid var(--line-strong);background:var(--surface);color:var(--muted-strong)}.privacy-toggle:hover{background:var(--surface-2)}.privacy-toggle.is-private{background:var(--amber-tint);color:var(--amber);border-color:#f0d3ae}.phase{padding-top:var(--s7)}.phase-header{gap:var(--s5);padding-bottom:var(--s6);display:grid}.phase-header h1{letter-spacing:-.035em;font-size:clamp(2.25rem,4vw + .5rem,3.5rem);font-weight:800}.phase-lead{max-width:62ch;margin-top:var(--s3);color:var(--muted-strong);font-size:var(--text-lg)}.phase-controls{gap:var(--s3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-content:start;display:grid}@media (width>=1000px){.phase-header{grid-template-columns:1fr 360px;align-items:end}.phase-controls{grid-template-columns:1fr 1fr}.phase-controls .field:first-child{grid-column:1/-1}}.phase-totals{grid-template-columns:repeat(2,1fr);margin:0;display:grid;overflow:hidden}.phase-totals>div{padding:var(--s4) var(--s5);border-bottom:1px solid var(--line)}.phase-totals>div:first-child{grid-column:1/-1}.phase-totals dt{color:var(--muted);font-size:var(--text-xs)}.phase-totals dd{font-size:var(--text-lg);margin:2px 0 0;font-weight:600}.phase-totals>div:first-child dd{font-size:var(--text-xl)}.phase-totals dd.is-good{color:var(--success)}.phase-totals dd.is-over{color:var(--danger)}.phase-totals dd.is-optional{color:var(--muted-strong)}.side-note{margin-top:var(--s3);border:1px dashed var(--muted);color:var(--muted-strong);font-size:var(--text-xs);border-radius:999px;padding:2px 10px;font-weight:600;display:inline-block}@media (width>=900px){.phase-totals{grid-template-columns:1.3fr repeat(6,1fr)}.phase-totals>div{border-bottom:0}.phase-totals>div:first-child{grid-column:auto}.phase-totals>div+div{border-left:1px solid var(--line)}}.phase-grid{gap:var(--s6);margin-top:var(--s7);display:grid}@media (width>=1000px){.phase-grid{gap:var(--s7);grid-template-columns:1fr 360px;align-items:start}.phase-aside{position:sticky;top:88px}}.phase-section+.phase-section{margin-top:var(--s7)}.phase-budget,.phase-grid+.phase-section{margin-top:var(--s8)}.prose{gap:var(--s4);max-width:68ch;font-size:var(--text-lg);line-height:1.6;display:grid}.phase-aside{gap:var(--s3);display:grid}.aside-block{padding:var(--s5)}.aside-block h2{margin-bottom:var(--s4);font-size:var(--text-base);letter-spacing:-.01em;font-weight:600}.phase-docs{gap:var(--s2);grid-template-columns:repeat(2,1fr);margin:0;padding:0;list-style:none;display:grid}.phase-doc{border:1px solid var(--line-2);border-radius:var(--r-md);background:var(--surface);width:100%;height:100%;color:var(--ink);font-size:var(--text-xs);text-align:left;cursor:pointer;transition:border-color .15s var(--ease);flex-direction:column;padding:0;font-weight:500;line-height:1.35;text-decoration:none;display:flex;overflow:hidden}.phase-doc:hover{border-color:var(--muted)}.phase-doc .doc-thumb{border-bottom:1px solid var(--line)}.phase-doc>span:last-child{padding:var(--s2)}.expense-mini{font-size:var(--text-sm);margin:0;padding:0;list-style:none}.expense-mini li{gap:var(--s3);padding:var(--s3) var(--s5);grid-template-columns:100px 1fr auto;display:grid}.expense-mini li+li{border-top:1px solid var(--line)}.phase-nav{gap:var(--s3);margin-top:var(--s8);padding-top:var(--s5);border-top:1px solid var(--line-strong);grid-template-columns:1fr 1fr;display:grid}.phase-nav a{padding:var(--s4);border-radius:var(--r-md);color:var(--ink);transition:background-color .15s var(--ease);font-weight:600;text-decoration:none;display:block}.phase-nav a:hover{background:var(--surface)}.phase-nav a.is-next{text-align:right}.phase-nav .label{margin-bottom:var(--s1)}.phase-nav .mono{color:var(--muted)}.form-error{color:var(--danger);font-size:var(--text-sm);grid-column:1/-1}.budget-page,.expenses-page{padding-top:var(--s7)}.page-header{margin-bottom:var(--s6)}.page-header h1{letter-spacing:-.035em;font-size:clamp(2.25rem,4vw + .5rem,3.5rem);font-weight:800}.page-header p{max-width:62ch;margin-top:var(--s3);color:var(--muted-strong);font-size:var(--text-lg)}.budget-settings{align-items:flex-end;gap:var(--s5);margin-bottom:var(--s4);padding:var(--s5);flex-wrap:wrap;display:flex}.budget-settings .num-input input{width:80px;height:40px}.budget-settings .num-input.is-wide input{width:160px}.budget-remaining{text-align:right;flex-direction:column;margin-left:auto;display:flex}.budget-remaining span{color:var(--muted);font-size:var(--text-xs)}.budget-remaining strong{font-size:var(--text-xl);font-weight:600}.budget-remaining.is-ok strong{color:var(--success)}.budget-remaining.is-over strong{color:var(--danger)}.phase-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.phase-table th,.phase-table td{padding:var(--s3) var(--s4);text-align:left;white-space:nowrap}.phase-table .r{text-align:right}.phase-table thead th{border-bottom:1px solid var(--line-2);background:var(--surface-2);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;font-weight:500}.phase-table tbody tr+tr>*{border-top:1px solid var(--line)}.phase-table tbody th{white-space:normal;font-weight:500}.phase-table tbody th a{color:var(--ink);text-decoration:none}.phase-table tbody th a:hover{color:var(--brand)}.phase-table .strong{font-weight:600}.share{align-items:center;gap:var(--s2);display:inline-flex}.share-bar{background:var(--line);border-radius:2px;width:72px;height:4px;position:relative}.share-bar span{background:var(--ink);border-radius:2px;position:absolute;inset:0 auto 0 0}.phase-table tfoot>tr>*{border-top:1px solid var(--line-2);background:var(--surface-2)}.phase-table tfoot tr:first-child>*{border-top-color:var(--line-strong)}.phase-table tfoot th{color:var(--muted-strong);font-weight:500}.phase-table tfoot .grand>*{background:var(--ink);color:#fff;font-size:var(--text-base);border-top:0;font-weight:600}.phase-table td.is-good{color:var(--success)}.phase-table td.is-over{color:var(--danger)}.phase-table .with-optional>*{background:var(--surface);color:var(--muted-strong);font-weight:600}.phase-table .side-tag{margin-left:var(--s2);border:1px dashed var(--muted);color:var(--muted-strong);border-radius:999px;padding:0 8px;font-size:11px;font-weight:600}.budget-note{max-width:72ch;margin-top:var(--s4);font-size:var(--text-sm)}@media (width<=760px){.phase-table thead{display:none}.phase-table,.phase-table tbody,.phase-table tfoot,.phase-table tr{display:block}.phase-table tr{padding:var(--s3) 0;grid-template-columns:1fr 1fr;display:grid}.phase-table tbody tr+tr{border-top:1px solid var(--line)}.phase-table tbody tr+tr>*{border-top:0}.phase-table th,.phase-table td{padding:var(--s1) var(--s4);text-align:left!important}.phase-table th[scope=row]{grid-column:1/-1}.phase-table td:empty{display:none}.phase-table td[data-label]:before{content:attr(data-label);color:var(--muted);font-family:var(--font-sans);font-size:11px;display:block}.phase-table tfoot>tr>*{border-top:0}.phase-table tfoot tr{background:var(--surface-2)}.phase-table tfoot .grand{background:var(--ink)}.budget-remaining{text-align:left;margin-left:0}}.expense-form{gap:var(--s3);margin-bottom:var(--s4);padding:var(--s5);display:grid}@media (width>=900px){.expense-form{grid-template-columns:150px 2fr 130px 130px 1fr auto;align-items:end}}.expense-table tbody th{min-width:220px}.phase-select{max-width:220px;height:30px;padding:0 var(--s2);border-radius:var(--r-sm);background:var(--surface-2);font-size:var(--text-xs);cursor:pointer;border:1px solid #0000}.phase-select:hover{border-color:var(--line-strong)}.expense-summary{margin:0 0 var(--s4);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid;overflow:hidden}.expense-summary>div{padding:var(--s4) var(--s5)}.expense-summary>div+div{border-left:1px solid var(--line)}.expense-summary dt{color:var(--muted);font-size:var(--text-xs)}.expense-summary dd{font-size:var(--text-lg);margin:2px 0 0;font-weight:600}.expense-summary dd.is-good,.expense-table td.is-good{color:var(--success)}.expense-summary dd.is-over,.expense-table td.is-over{color:var(--danger)}.expense-table .num-input input{width:110px;height:30px}.expense-table .num-input.is-expected input{border-style:dashed;border-color:var(--line-strong);background:var(--surface)}.expense-table .num-input.is-expected input:not(:placeholder-shown){border-style:solid}@media (width<=760px){.expense-summary>div+div{border-left:0;border-top:1px solid var(--line)}}.documents-page{padding-top:var(--s7)}.doc-toolbar{z-index:10;gap:var(--s3);margin:0 calc(-1 * var(--s2)) var(--s6);padding:var(--s3) var(--s2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f3f5f8eb;display:grid;position:sticky;top:64px}.doc-search{max-width:480px}.doc-filters{gap:var(--s2);scrollbar-width:none;display:flex;overflow-x:auto}.doc-filters button{height:32px;padding:0 var(--s3);border:1px solid var(--line-strong);background:var(--surface);color:var(--muted-strong);font-size:var(--text-xs);white-space:nowrap;cursor:pointer;transition:background-color .15s var(--ease), color .15s var(--ease), border-color .15s var(--ease);border-radius:999px;flex:none;font-weight:500}.doc-filters button:hover{border-color:var(--muted);color:var(--ink)}.doc-filters button.is-on{border-color:var(--ink);background:var(--ink);color:#fff}.doc-filters .mono{opacity:.6;margin-left:2px}.doc-group+.doc-group{margin-top:var(--s7)}.doc-group h2{margin-bottom:var(--s4);font-size:var(--text-xl);font-weight:700}.doc-group h2 .mono{font-size:var(--text-sm);font-weight:500}.doc-grid{gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));margin:0;padding:0;list-style:none;display:grid}.doc-card{border:1px solid var(--line-2);border-radius:var(--r-lg);background:var(--surface);text-align:left;cursor:pointer;width:100%;height:100%;transition:border-color .15s var(--ease), transform .15s var(--ease);flex-direction:column;padding:0;display:flex;position:relative;overflow:hidden}.doc-card:hover{border-color:var(--muted);transform:translateY(-2px)}.doc-card .doc-thumb{border-bottom:1px solid var(--line)}.doc-card-body{padding:var(--s3) var(--s4) var(--s4);flex-direction:column;gap:2px;display:flex}.doc-card-code{color:var(--muted);font-size:var(--text-xs)}.doc-card-title{font-size:var(--text-sm);font-weight:600;line-height:1.35}.doc-card-meta{color:var(--muted);font-size:var(--text-xs);margin-top:2px}.doc-card-phases{margin-top:var(--s2);flex-wrap:wrap;gap:4px;display:flex}.doc-card-phases span{background:var(--brand-tint);max-width:100%;color:var(--brand-700);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500;overflow:hidden}.doc-private{top:var(--s2);right:var(--s2);background:var(--amber-tint);color:var(--amber);border:1px solid #f0d3ae;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex;position:absolute}.history-page,.users-page{padding-top:var(--s7)}.hist-filters{gap:var(--s3);margin-bottom:var(--s4);flex-wrap:wrap;display:flex}.hist-filters .field{min-width:200px}.hist-list{margin:0;padding:0;list-style:none}.hist-item{gap:var(--s1) var(--s5);padding:var(--s4) var(--s5);display:grid}.hist-item+.hist-item{border-top:1px solid var(--line)}@media (width>=760px){.hist-item{grid-template-columns:150px 1fr}}.hist-time{color:var(--muted);font-size:var(--text-sm)}.hist-head{align-items:center;gap:var(--s2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.hist-action{border-radius:999px;padding:0 8px;font-size:11px;font-weight:600}.hist-action.action-create{background:var(--success-tint);color:var(--success)}.hist-action.action-update{background:var(--brand-tint);color:var(--brand-700)}.hist-action.action-delete{background:var(--danger-tint);color:var(--danger)}.hist-label{margin-top:2px;font-weight:500}.hist-label a{font-weight:400}.hist-changes{margin:var(--s2) 0 0;font-size:var(--text-sm);gap:2px;padding:0;list-style:none;display:grid}.hist-changes li{gap:var(--s2);flex-wrap:wrap;display:flex}.hist-field{min-width:130px;color:var(--muted)}.hist-from{color:var(--muted-strong);-webkit-text-decoration:line-through #5a647380;text-decoration:line-through #5a647380}.hist-to{font-weight:600}.hist-more{margin-top:var(--s3);font-size:var(--text-sm);justify-content:space-between;align-items:center;display:flex}.user-list{margin:0 0 var(--s5);padding:0;list-style:none}.user-list li{align-items:center;gap:var(--s3);padding:var(--s3) var(--s5);flex-wrap:wrap;display:flex}.user-list li+li{border-top:1px solid var(--line)}.user-list .user-avatar{width:36px;height:36px;font-size:var(--text-sm)}.user-list-name{align-items:baseline;gap:var(--s2);flex-wrap:wrap;flex:1;display:flex}.user-list-name .mono,.user-list-meta{font-size:var(--text-xs)}.user-forms{gap:var(--s4);display:grid}@media (width>=900px){.user-forms{grid-template-columns:1fr 1fr;align-items:start}}.user-form{gap:var(--s3);padding:var(--s5);display:grid}.user-form h2{font-size:var(--text-lg);font-weight:600}.user-form .btn{justify-self:start}.form-ok{color:var(--success);font-size:var(--text-sm)}.users-page .form-error{color:var(--danger);font-size:var(--text-sm)}.role-select{height:30px;padding:0 var(--s2);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);font-size:var(--text-xs);cursor:pointer}.role-badge{border-radius:999px;padding:2px 10px;font-size:11px;font-weight:600}.role-badge.role-admin{background:var(--brand-tint);color:var(--brand-700)}.role-badge.role-member{background:var(--surface-2);color:var(--muted-strong)}.user-form small{font-size:var(--text-xs)}.memberships{gap:var(--s2);margin:var(--s1) 0 var(--s2) 48px;padding:var(--s3);border-radius:var(--r-md);background:var(--surface-2);flex-basis:100%;display:grid}.membership{justify-content:space-between;align-items:center;gap:var(--s2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.user-form-row{gap:var(--s3);grid-template-columns:1fr 1fr;display:grid}@media (width<=640px){.memberships{margin-left:0}.user-form-row{grid-template-columns:1fr}}.projects-page{padding-top:var(--s7)}.project-grid{gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));margin:0;padding:0;list-style:none;display:grid}.project-card{border:1px solid var(--line-2);border-radius:var(--r-lg);background:var(--surface);height:100%;color:var(--ink);transition:border-color .15s var(--ease), transform .15s var(--ease);flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.project-card:hover{border-color:var(--muted);transform:translateY(-2px)}.project-card img,.project-card-ph{aspect-ratio:16/9;object-fit:cover;border-bottom:1px solid var(--line);width:100%}.project-card-ph{background:linear-gradient(var(--grid) 1px, transparent 1px) 0 0 / 24px 24px, linear-gradient(90deg, var(--grid) 1px, transparent 1px) 0 0 / 24px 24px, var(--surface-2);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xl);justify-content:center;align-items:center;font-weight:600;display:flex}.project-card-body{gap:var(--s1);padding:var(--s4) var(--s5) var(--s5);display:grid}.project-card-body>strong{font-size:var(--text-lg)}.project-card-tags{gap:var(--s1);flex-wrap:wrap;display:flex}.tag{background:var(--surface-2);color:var(--muted-strong);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600}.tag-core{background:var(--brand-tint);color:var(--brand-700)}.project-card-money{gap:var(--s4);margin-top:var(--s2);font-size:var(--text-sm);color:var(--muted-strong);flex-wrap:wrap;display:flex}.project-card-url{margin-top:var(--s2);color:var(--muted);font-size:var(--text-xs)}.projects-note{max-width:70ch;margin-top:var(--s5);font-size:var(--text-sm)}
