body:has(#app-root),body:has(.app-boot){background:var(--bg)}.app-root{flex-direction:column;min-height:100dvh;display:flex}.app-main{outline:none;flex:1}.app-root.has-tabbar .app-main{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.small{font-size:var(--fs-small)}.app-page{width:100%;max-width:var(--content-max);padding:var(--sp-6) var(--gutter) var(--sp-12);margin:0 auto}.app-page.narrow{max-width:760px}.app-page h1{font-size:var(--fs-h2);letter-spacing:-.02em}.page-title-row{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5);display:flex}.section-label{font-size:var(--fs-small);color:var(--text-2);text-transform:uppercase;letter-spacing:.06em;margin:var(--sp-6) 0 var(--sp-3);font-weight:700}.app-header{z-index:40;background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(12px);border-bottom:1px solid color-mix(in srgb, var(--line) 70%, transparent);height:60px;position:sticky;top:0}.app-header-inner{height:100%;max-width:var(--content-max);padding:0 var(--gutter);align-items:center;gap:var(--sp-4);margin:0 auto;display:flex}.app-nav{margin-left:var(--sp-2);gap:2px;display:flex}.app-nav a{border-radius:var(--r-sm);color:var(--text-2);font-size:var(--fs-ui);padding:8px 12px;font-weight:550;text-decoration:none}.app-nav a:hover,.app-nav a[aria-current=page]{color:var(--text);background:var(--surface-2)}.app-header-actions{align-items:center;gap:var(--sp-1);margin-left:auto;display:flex}.app-avatar-btn{min-height:44px;padding:0 4px}.bell-btn{width:44px;min-height:44px;position:relative}.bell-badge,.tab-badge{border-radius:var(--r-pill);background:var(--danger);color:#fff;text-align:center;border:2px solid var(--bg);box-sizing:content-box;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;line-height:18px;position:absolute;top:3px;left:24px}.offline-banner{justify-content:center;align-items:center;gap:var(--sp-2);padding:8px var(--gutter);background:var(--warning-soft);color:var(--warning);font-size:var(--fs-small);border-bottom:1px solid var(--warning-line);font-weight:600;display:flex}.bottom-tabs{z-index:45;padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb, var(--surface-1) 92%, transparent);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-tab{min-height:60px;color:var(--text-3);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:11px;font-weight:650;text-decoration:none;display:flex}.bottom-tab[aria-current=page]{color:var(--accent-text)}.bottom-tab-icon{border-radius:var(--r-pill);place-items:center;width:44px;height:28px;display:grid;position:relative}.bottom-tab[aria-current=page] .bottom-tab-icon{background:var(--accent-soft)}.bottom-tab .tab-badge{top:-4px;left:26px}.menu-wrap{position:relative}.menu{z-index:60;background:var(--surface-1);border:1px solid var(--line);border-radius:var(--r-md);min-width:220px;box-shadow:var(--e3);animation:pop-in var(--dur-2) var(--ease);gap:2px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);right:0}.menu-head{border-bottom:1px solid var(--line);font-size:var(--fs-small);margin-bottom:4px;padding:8px 10px 10px;display:grid}.menu-item{border-radius:var(--r-sm);min-height:40px;color:var(--text);font:550 var(--fs-ui) / 1.2 var(--font-sans);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:0 10px;text-decoration:none;display:flex}.menu-item:hover{background:var(--surface-2);color:var(--text)}.menu-item.is-danger{color:var(--danger)}.notif-popover{width:min(380px,100vw - 24px);max-height:min(520px,70vh);padding:0;overflow:auto}.notif-head{background:var(--surface-1);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:10px 12px;display:flex;position:sticky;top:0}.notif-list{gap:2px;margin:0;padding:4px;list-style:none;display:grid}.notif-link{border-radius:var(--r-sm);color:var(--text);font-size:var(--fs-ui);align-items:flex-start;gap:12px;padding:10px;line-height:1.4;text-decoration:none;display:flex}.notif-link:hover{background:var(--surface-2);color:var(--text)}.notif.is-unread .notif-link{background:color-mix(in srgb, var(--accent-soft) 55%, transparent)}.notif-avatar{flex:none;position:relative}.notif-verb{background:var(--surface-1);border:1px solid var(--line);width:18px;height:18px;color:var(--text-2);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:-4px;right:-4px}.notif-text{flex:1;gap:2px;min-width:0;display:grid}.unread-dot{background:var(--accent);border-radius:50%;flex:none;width:9px;height:9px;margin-top:6px}.notif-empty{text-align:center;padding:24px 16px}.notif-skel{align-items:center;gap:12px;padding:10px;display:flex}.app-avatar{background:var(--av,var(--bp-500));color:#fff;letter-spacing:.02em;border-radius:50%;flex:none;place-items:center;font-weight:700;line-height:1;display:inline-grid;position:relative;overflow:hidden}.app-avatar img{object-fit:cover;width:100%;height:100%}.app-avatar-ring{box-shadow:0 0 0 2px var(--surface-1), 0 0 0 4px var(--av)}.app-avatar-more{background:var(--surface-3);color:var(--text-2);font-size:11px}.app-avatar-stack{align-items:center;display:inline-flex}.app-avatar-stack>*+*{margin-left:-8px}.app-avatar-stack .app-avatar{box-shadow:0 0 0 2px var(--surface-1)}.app-avatar-slot{display:inline-flex;position:relative}.presence-dot{background:var(--success);border:2px solid var(--surface-1);border-radius:50%;width:10px;height:10px;position:absolute;bottom:-1px;right:-1px}.skel{background:linear-gradient(90deg, var(--surface-2) 0%, var(--surface-3) 50%, var(--surface-2) 100%);background-size:200% 100%;border-radius:6px;animation:1.4s ease-in-out infinite skel;display:block}@keyframes skel{0%{background-position:100% 0}to{background-position:-100% 0}}.spinner{border:2px solid var(--line-strong);border-top-color:var(--accent);border-radius:50%;flex:none;width:16px;height:16px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.skel,.spinner{animation:none}}.app-empty{justify-items:center;gap:var(--sp-2);padding:var(--sp-10) var(--sp-4);text-align:center;display:grid}.app-empty h2{font-size:var(--fs-h3)}.app-empty>.muted{max-width:46ch}.empty-icon{background:var(--surface-2);width:56px;height:56px;color:var(--text-2);border-radius:16px;place-items:center;display:grid}.empty-actions{margin-top:var(--sp-3)}.empty-art{width:min(280px,80%);height:auto;margin-bottom:var(--sp-2)}.error-state{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4);border:1px solid color-mix(in srgb, var(--danger) 35%, var(--line));border-radius:var(--r-md);background:var(--danger-soft);color:var(--text);display:flex}.error-state>svg{color:var(--danger);flex:none;margin-top:2px}.error-state>div{flex:1}.btn-danger-solid{--btn-bg:var(--danger);--btn-fg:#fff;--btn-line:var(--danger)}:root[data-theme=dark] .btn-danger-solid{--btn-fg:#1a0503}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .btn-danger-solid{--btn-fg:#1a0503}}.app-dialog{color:var(--text);background:0 0;border:0;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);padding:0;overflow:visible}.app-dialog::backdrop{backdrop-filter:blur(2px);background:#0a0a0c73}.app-dialog-inner{background:var(--surface-1);border-radius:var(--r-lg);max-height:calc(100dvh - 32px);box-shadow:var(--e3);flex-direction:column;display:flex;overflow:hidden}.dialog-sm{width:440px}.dialog-md{width:560px}.dialog-lg{width:760px}.dialog-center[open] .app-dialog-inner{animation:pop-in var(--dur-3) var(--ease)}.app-dialog-head{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-4) var(--sp-2) var(--sp-6);display:flex}.app-dialog-head h2{font-size:var(--fs-h3)}.app-dialog-desc{padding:0 var(--sp-6);font-size:var(--fs-small)}.app-dialog-body{padding:var(--sp-3) var(--sp-6) var(--sp-6);gap:var(--sp-4);align-content:start;display:grid;overflow:auto}.app-dialog-foot{justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-6);border-top:1px solid var(--line);background:var(--surface-2);display:flex}.dialog-drawer{max-width:100vw;height:100dvh;max-height:100dvh;margin:0 0 0 auto}.dialog-drawer .app-dialog-inner{height:100dvh;max-height:100dvh;animation:slide-in-right var(--dur-3) var(--ease);border-radius:0}@keyframes slide-in-right{0%{opacity:0;transform:translate(24px)}}@keyframes slide-up{0%{opacity:0;transform:translateY(32px)}}@media (width<=767px){.app-dialog{max-width:100vw;max-height:100dvh}.dialog-sheet,.dialog-lg,.dialog-md{width:100vw;height:100dvh;margin:0}.dialog-sheet .app-dialog-inner,.dialog-lg .app-dialog-inner,.dialog-md .app-dialog-inner{height:100dvh;max-height:100dvh;animation:slide-up var(--dur-3) var(--ease);border-radius:0}.dialog-sm{width:calc(100vw - 32px)}.app-dialog-head{padding-left:var(--sp-4);padding-top:max(var(--sp-3), env(safe-area-inset-top))}.app-dialog-body,.app-dialog-desc{padding-left:var(--sp-4);padding-right:var(--sp-4)}.app-dialog-foot{padding:var(--sp-3) var(--sp-4) calc(var(--sp-3) + env(safe-area-inset-bottom))}.app-dialog-foot .btn{flex:1;min-height:44px}}@media (prefers-reduced-motion:reduce){.app-dialog-inner,.menu{animation:none!important}}.app-toasts{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:200;gap:8px;width:max-content;max-width:calc(100vw - 32px);display:grid;position:fixed;transform:translate(-50%)}.has-tabbar~.app-toasts,.app-root.has-tabbar+.app-toasts{bottom:calc(84px + env(safe-area-inset-bottom))}.app-toast{border-radius:var(--r-md);background:var(--text);color:var(--bg);font-size:var(--fs-ui);box-shadow:var(--e3);animation:slide-up var(--dur-2) var(--ease);align-items:center;gap:10px;padding:10px 14px;font-weight:550;display:flex}.app-toast.tone-error svg{color:var(--danger)}.app-toast .btn{--btn-fg:var(--bg)}.inline-edit{min-width:0}.inline-edit-btn{border-radius:var(--r-sm);max-width:100%;color:inherit;font:inherit;letter-spacing:inherit;text-align:left;cursor:text;background:0 0;border:1px dashed #0000;align-items:center;gap:8px;margin:-2px -6px;padding:2px 6px;display:inline-flex}.inline-edit-btn>span{text-overflow:ellipsis;overflow:hidden}.inline-edit-btn:hover{border-color:var(--line-strong)}.inline-edit-icon{color:var(--text-3);opacity:0;transition:opacity var(--dur-1);flex:none}.inline-edit-btn:hover .inline-edit-icon,.inline-edit-btn:focus-visible .inline-edit-icon{opacity:1}@media (pointer:coarse){.inline-edit-icon{opacity:.7}}.inline-edit-input{font:inherit;letter-spacing:inherit;width:100%;max-width:640px;height:auto;padding:2px 8px}.app-seg{border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line);gap:2px;max-width:100%;padding:3px;display:inline-flex}.seg-scroll{scrollbar-width:none;overflow-x:auto}.seg-scroll::-webkit-scrollbar{display:none}.seg-item{min-height:36px;color:var(--text-2);font:600 var(--fs-ui) / 1 var(--font-sans);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:9px;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.seg-item:hover{color:var(--text)}.seg-item[aria-selected=true]{background:var(--surface-1);color:var(--text);box-shadow:var(--e1), 0 0 0 1px var(--line)}.seg-count{border-radius:var(--r-pill);background:var(--surface-3);min-width:20px;padding:2px 6px;font-size:11px;font-weight:700}.seg-item[aria-selected=true] .seg-count{background:var(--accent-soft);color:var(--accent-text)}@media (width<=767px){.seg-item{min-height:40px}}.auth-wrap{padding:var(--sp-10) var(--gutter);background:radial-gradient(circle at 20% 10%, color-mix(in srgb, var(--accent-soft) 70%, transparent), transparent 40%), radial-gradient(circle at 85% 80%, color-mix(in srgb, var(--bp-100) 45%, transparent), transparent 45%);place-items:center;min-height:calc(100dvh - 60px);display:grid}.auth-card{width:min(440px,100%);padding:var(--sp-8);gap:var(--sp-4);box-shadow:var(--e2);display:grid}.auth-card h1{font-size:var(--fs-h2);letter-spacing:-.02em}.auth-form{gap:var(--sp-2);display:grid}.auth-form .btn{margin-top:var(--sp-2)}.google-btn{width:100%}.auth-or{align-items:center;gap:var(--sp-3);color:var(--text-3);font-size:var(--fs-small);display:flex}.auth-or:before,.auth-or:after{content:"";background:var(--line);flex:1;height:1px}.auth-fine{font-size:var(--fs-micro);line-height:1.5}.auth-sent{gap:var(--sp-3);justify-items:start;display:grid}.auth-icon{background:var(--accent-soft);width:56px;height:56px;color:var(--accent-text);border-radius:16px;place-items:center;display:grid}.dev-link{border-radius:var(--r-sm);border:1px dashed var(--bp-300);background:var(--bp-50);color:var(--bp-800);word-break:break-all;padding:10px 12px}.dev-link a{color:var(--bp-700);font-weight:650}.invite-card{justify-items:start}.invite-card .btn{width:100%}@media (width<=480px){.auth-card{padding:var(--sp-6) var(--sp-5)}.auth-wrap{padding-top:var(--sp-6);align-items:start}}.dash-controls{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.search-box{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-1);max-width:360px;min-height:42px;color:var(--text-3);flex:260px;align-items:center;gap:8px;padding:0 12px;display:flex}.search-box:focus-within{border-color:var(--focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--focus) 25%, transparent)}.search-box input{min-width:0;color:var(--text);font:inherit;font-size:var(--fs-ui);background:0 0;border:0;outline:none;flex:1;height:40px}.app-dialog .search-box{max-width:none}.project-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));margin:0;padding:0;list-style:none;display:grid}.project-grid>li{display:grid}.project-card{gap:var(--sp-2);padding:var(--sp-5);color:var(--text);align-content:start;text-decoration:none;display:grid;position:relative}.project-card.is-skeleton{gap:var(--sp-3)}.pc-head{align-items:flex-start;gap:var(--sp-3);display:flex}.pc-icon{background:color-mix(in srgb, var(--pc,var(--accent)) 14%, var(--surface-1));width:40px;height:40px;color:var(--pc,var(--accent));border-radius:12px;flex:none;place-items:center;display:grid}.pc-icon-lg{border-radius:14px;width:48px;height:48px}.pc-title{flex:1;gap:2px;min-width:0;display:grid}.pc-title h2,.pc-title h3{letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-size:1.0625rem;font-weight:700;overflow:hidden}.pc-estimates{margin-top:var(--sp-1);flex-wrap:wrap;gap:6px;display:flex}.pc-range{font-size:var(--fs-metric);letter-spacing:-.02em;font-weight:750;line-height:1.2}.pc-foot{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);display:flex}.pc-archived{position:absolute;top:12px;right:12px}.budget-meter{gap:6px;display:grid}.budget-track{border-radius:var(--r-pill);background:var(--surface-3);height:10px;position:relative;overflow:visible}.budget-meter.is-compact .budget-track{height:8px}.budget-fill,.budget-band{border-radius:var(--r-pill);position:absolute;top:0;bottom:0}.budget-fill{background:var(--zone);left:0}.budget-band{background:repeating-linear-gradient(135deg, var(--zone) 0 4px, color-mix(in srgb, var(--zone) 45%, transparent) 4px 8px);border-radius:0 var(--r-pill) var(--r-pill) 0}.budget-target{background:var(--text);border-radius:2px;width:3px;margin-left:-1.5px;position:absolute;top:-4px;bottom:-4px}.zone-comfortable{--zone:var(--success)}.zone-at-risk{--zone:var(--warning)}.zone-over{--zone:var(--danger)}.budget-label{color:var(--text-2);align-items:flex-start;gap:6px;display:flex}.budget-label svg{color:var(--zone);flex:none;margin-top:3px}.budget-label strong{color:var(--text)}.budget-none{margin:2px 0}.template-grid{gap:var(--sp-2);border:0;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));margin:0;padding:0;display:grid}.template-grid legend{margin-bottom:var(--sp-2)}.template-card{align-items:center;gap:var(--sp-3);min-height:64px;padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-1);cursor:pointer;display:flex;position:relative}.template-card:hover{border-color:var(--line-strong)}.template-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:var(--accent-soft)}.template-card:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.template-text{gap:2px;min-width:0;display:grid}.template-check{color:var(--accent-text);position:absolute;top:8px;right:8px}.form-row{gap:var(--sp-3);grid-template-columns:1.4fr 1fr;display:grid}@media (width<=560px){.form-row{grid-template-columns:1fr}}.empty-dash{gap:var(--sp-2);display:grid}.template-row{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));display:grid}.template-tile{justify-items:start;gap:var(--sp-2);padding:var(--sp-4);border:1px solid var(--line);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:transform var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease);display:grid}.template-tile:hover{box-shadow:var(--e2);border-color:var(--line-strong);transform:translateY(-2px)}.template-tile.is-blank{box-shadow:none;background:0 0;border-style:dashed}.template-tools{color:var(--text-3);gap:6px;display:flex}.import-banner{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-5);border:1px solid color-mix(in srgb, var(--bp-400) 40%, var(--line));border-radius:var(--r-md);background:var(--bp-50);flex-wrap:wrap;display:flex}:root[data-theme=dark] .import-banner{background:#142231}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .import-banner{background:#142231}}.import-banner.is-prominent{margin:var(--sp-2) 0}.import-icon{background:var(--surface-1);width:40px;height:40px;color:var(--bp-500);border-radius:12px;place-items:center;display:grid}.import-text{flex:260px;gap:2px;display:grid}.check-list{gap:4px;max-height:46vh;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.check-row{align-items:center;gap:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer;min-height:52px;padding:8px 10px;display:flex}.check-row input{width:18px;height:18px;accent-color:var(--accent)}.check-text{min-width:0;display:grid}.check-text .small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.project-head{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.back-btn{margin-left:-8px}.project-head-main{flex:280px;gap:6px;min-width:0;display:grid}.project-title{font-size:var(--fs-h2);letter-spacing:-.02em;margin:0;line-height:1.2}.project-meta{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.status-select{align-items:center;display:inline-flex;position:relative}.status-select select{appearance:none;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-1);height:30px;color:var(--text);font:650 var(--fs-small) / 1 var(--font-sans);cursor:pointer;padding:0 28px 0 12px}.status-select svg{pointer-events:none;color:var(--text-3);position:absolute;right:10px}.meta-chip{border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-1);height:30px;color:var(--text);font:650 var(--fs-small) / 1 var(--font-sans);cursor:pointer;align-items:center;gap:6px;padding:0 12px;display:inline-flex}.meta-chip:disabled{cursor:default;color:var(--text-2)}.budget-edit{align-items:center;gap:6px;display:flex}.budget-edit .num-input{width:150px;height:34px}.project-head-actions{align-items:center;gap:var(--sp-2);display:flex}.project-tabs{margin-bottom:var(--sp-5)}.project-body,.estimate-body{gap:var(--sp-6);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.with-panel .project-body{grid-template-columns:minmax(0,1fr) 340px}.side-panel{gap:var(--sp-3);max-height:calc(100dvh - 92px);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-1);align-content:start;display:grid;position:sticky;top:76px;overflow:auto}.side-panel.is-collapsed{right:var(--gutter);top:auto;bottom:var(--sp-6);z-index:30;box-shadow:var(--e2);padding:4px;position:fixed}.panel-toggle{justify-self:end}.overview,.budget-card{gap:var(--sp-4);display:grid}.budget-top{justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;display:flex}.budget-total{letter-spacing:-.03em;margin-top:4px;font-size:clamp(1.75rem,1.4rem + 1.4vw,2.4rem);font-weight:780;line-height:1.1}.budget-target-box{justify-items:end;gap:4px;display:grid}.budget-target-box strong{font-size:var(--fs-h3)}.budget-card .section-label{margin:var(--sp-2) 0 0}.contrib-list{gap:2px;margin:0;padding:0;list-style:none;display:grid}.contrib-row{align-items:center;gap:var(--sp-3);border-radius:var(--r-sm);min-height:44px;color:var(--text);font-size:var(--fs-ui);grid-template-columns:10px 18px minmax(0,1fr) minmax(60px,32%) 9.5em 3em;margin:0 -8px;padding:4px 8px;text-decoration:none;display:grid}.contrib-row:hover{background:var(--surface-2);color:var(--text)}.contrib-swatch{border-radius:3px;width:10px;height:10px}.contrib-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.contrib-bar{border-radius:var(--r-pill);background:var(--surface-3);height:6px;overflow:hidden}.contrib-bar span{border-radius:inherit;height:100%;display:block}.contrib-pct,.contrib-val{text-align:right;white-space:nowrap}@media (width<=560px){.contrib-row{grid-template-columns:10px minmax(0,1fr) auto;grid-template-areas:"sw name val"".bar bar";row-gap:6px;padding:8px}.contrib-row>svg,.contrib-pct{display:none}.contrib-swatch{grid-area:sw}.contrib-name{grid-area:name}.contrib-val{grid-area:val}.contrib-bar{grid-area:bar}}.notes-card{gap:var(--sp-3);display:grid}.notes-head{align-items:center;gap:var(--sp-3);display:flex}.notes-head h2{margin-right:auto}.notes-input{resize:vertical;height:auto;min-height:160px;padding:12px;line-height:1.55}.notes-foot{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.tab-toolbar{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);display:flex}.sort-select{align-items:center;gap:8px;display:inline-flex}.sort-select select{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-1);height:36px;color:var(--text);font:550 var(--fs-small) / 1 var(--font-sans);padding:0 10px}.estimate-list{gap:var(--sp-2);margin:0;padding:0;list-style:none;display:grid}.estimate-row{align-items:center;gap:var(--sp-4);min-height:72px;padding:var(--sp-3) var(--sp-4);color:var(--text);transition:border-color var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease);grid-template-columns:44px minmax(0,1fr) auto auto 20px;text-decoration:none;display:grid}.estimate-row:hover{border-color:var(--line-strong);box-shadow:var(--e2);color:var(--text)}.tool-icon{background:var(--accent-soft);width:44px;height:44px;color:var(--accent-text);border-radius:12px;place-items:center;display:grid}.er-main{gap:2px;min-width:0;display:grid}.er-main .small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.er-title{font-size:1rem}.er-result{text-align:right;justify-items:end;gap:2px;display:grid}.er-result strong{font-size:1.0625rem}.er-badges{align-items:center;gap:6px;display:flex}.er-chevron{color:var(--text-3)}@media (width<=640px){.estimate-row{gap:var(--sp-3);padding:var(--sp-3);grid-template-columns:40px minmax(0,1fr) 16px}.tool-icon{width:40px;height:40px}.er-result{text-align:left;grid-area:2/2;justify-items:start}.er-badges{grid-area:3/2}.er-badges:empty{display:none}.er-chevron{grid-area:1/3/span 2}}.dropzone{align-items:center;gap:var(--sp-4);padding:var(--sp-5);margin-bottom:var(--sp-4);border:2px dashed var(--line-strong);border-radius:var(--r-md);background:var(--surface-1);color:var(--text-2);transition:border-color var(--dur-1), background var(--dur-1);flex-wrap:wrap;display:flex}.dropzone p{color:var(--text);flex:220px;gap:2px;display:grid}.dropzone.is-drag{border-color:var(--accent);background:var(--accent-soft)}.upload-list{margin:0 0 var(--sp-4);font-size:var(--fs-small);gap:6px;padding:0;list-style:none;display:grid}.upload-list li{align-items:center;gap:8px;display:flex}.upload-list .is-error{color:var(--danger)}.file-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));margin:0;padding:0;list-style:none;display:grid}.file-card{grid-template-rows:120px auto;display:grid;overflow:hidden}.file-thumb{background:var(--surface-2);color:var(--text-3);place-items:center;display:grid}.file-thumb img{object-fit:cover;width:100%;height:120px}.file-meta{padding:var(--sp-3) var(--sp-3) 0;gap:2px;min-width:0;display:grid}.file-name{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-ui);overflow:hidden}.file-actions{padding:4px var(--sp-2) var(--sp-2);justify-content:flex-end;gap:2px;display:flex}.activity-feed{margin:0 0 var(--sp-4);padding:0;list-style:none;display:grid}.activity-item{gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--line);display:flex;position:relative}.activity-text{font-size:var(--fs-ui);gap:2px;display:grid}.activity-text a{color:var(--text);text-decoration:none}.activity-text a:hover{text-decoration:underline}.comments-panel{gap:var(--sp-3);align-content:start;display:grid}.comments-head{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.comments-title{font-size:1rem;font-weight:700}.mini-check{font-size:var(--fs-small);color:var(--text-2);cursor:pointer;align-items:center;gap:6px;min-height:32px;display:inline-flex}.mini-check input{accent-color:var(--accent)}.anchor-chip{border-radius:var(--r-sm);background:var(--accent-soft);color:var(--accent-text);font-size:var(--fs-small);align-items:center;gap:8px;padding:6px 6px 6px 10px;display:flex}.anchor-chip span{flex:1}.viewer-note{align-items:center;gap:6px;display:flex}.thread-list{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.thread{gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-1);display:grid}.side-panel .thread{background:var(--bg)}.thread.is-resolved{opacity:.7}.thread-anchor{border-radius:var(--r-pill);background:var(--surface-2);min-height:26px;color:var(--text-2);font:650 var(--fs-micro) / 1 var(--font-sans);cursor:pointer;border:0;justify-self:start;align-items:center;gap:6px;padding:0 8px;display:inline-flex}.thread-anchor:hover{color:var(--text)}.thread-actions{flex-wrap:wrap;align-items:center;gap:4px;margin-left:36px;display:flex}.comment{gap:10px;display:flex}.comment.is-reply{margin-left:36px}.comment-main{flex:1;min-width:0}.comment-meta{min-height:28px;font-size:var(--fs-small);align-items:center;gap:8px;display:flex}.comment-tools{opacity:0;transition:opacity var(--dur-1);margin-left:auto;display:flex}.comment:hover .comment-tools,.comment:focus-within .comment-tools{opacity:1}@media (pointer:coarse){.comment-tools{opacity:1}}.comment-body{font-size:var(--fs-ui);overflow-wrap:anywhere;line-height:1.5}.comment-body>*+*{margin-top:6px}.comment-body ul{margin:0;padding-left:1.2em}.mention{background:var(--bp-50);color:var(--bp-700);border-radius:4px;padding:0 4px;font-weight:650}.composer{gap:6px;display:grid;position:relative}.composer-input{resize:vertical;height:auto;min-height:64px;line-height:1.45;font-size:var(--fs-ui);padding:10px 12px}.composer-actions{justify-content:flex-end;align-items:center;gap:6px;display:flex}.composer-hint{margin-right:auto}@media (pointer:coarse){.composer-hint{display:none}.composer-actions .btn{min-height:44px}}.mention-list{z-index:20;background:var(--surface-1);border:1px solid var(--line);border-radius:var(--r-sm);min-width:200px;box-shadow:var(--e2);margin:-24px 0 0;padding:4px;list-style:none;position:absolute;top:100%;left:8px}.mention-list button{width:100%;min-height:36px;color:var(--text);font:inherit;font-size:var(--fs-ui);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:4px 8px;display:flex}.mention-list [aria-selected=true] button,.mention-list button:hover{background:var(--surface-2)}.comment-bubble{border-radius:var(--r-pill);min-width:28px;height:26px;color:var(--text-3);font:700 var(--fs-micro) / 1 var(--font-sans);cursor:pointer;opacity:0;transition:opacity var(--dur-1), background var(--dur-1);background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:0 7px;display:inline-flex}.field-wrap:hover .comment-bubble,.field-wrap:focus-within .comment-bubble,.comment-bubble:focus-visible,.comment-bubble.has-count{opacity:1}.comment-bubble:hover{background:var(--surface-2);color:var(--text)}.comment-bubble.has-count{background:var(--accent-soft);color:var(--accent-text);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}@media (pointer:coarse){.comment-bubble{opacity:.75;min-width:36px;height:32px}}.share-section{gap:var(--sp-3);padding-bottom:var(--sp-4);border-bottom:1px solid var(--line);display:grid}.share-section:last-of-type{border-bottom:0}.share-section h3{font-size:1rem}.invite-form{gap:var(--sp-2);flex-wrap:wrap;display:flex}.invite-form>.invite-grow{flex:220px;width:auto}.text-input.role-select{flex:none;width:auto;min-width:140px}.link-row{align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface-2);flex-wrap:wrap;display:flex}.link-row-text{flex:220px;display:grid}.copy-field{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.copy-field .text-input{font-family:var(--font-mono);font-size:var(--fs-small);flex:260px}.member-list{gap:2px;margin:0;padding:0;list-style:none;display:grid}.member-row{align-items:center;gap:var(--sp-3);flex-wrap:wrap;min-height:56px;padding:6px 0;display:flex}.member-text{flex:160px;min-width:0;display:grid}.member-text .small{text-overflow:ellipsis;overflow:hidden}.member-actions{gap:2px;display:flex}.member-row.is-pending .member-text strong{color:var(--text-2);font-weight:600}.public-link{gap:var(--sp-2);justify-items:start;display:grid}.public-link .copy-field{width:100%}.picker-group .section-label{margin-top:var(--sp-2)}.picker-grid{gap:var(--sp-2);grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));display:grid}.picker-item{align-items:center;gap:var(--sp-3);min-height:60px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-1);color:var(--text);font:inherit;text-align:left;cursor:pointer;display:flex}.picker-item:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.picker-item:disabled{cursor:progress;opacity:.7}.picker-icon{background:var(--surface-2);width:38px;height:38px;color:var(--accent-text);border-radius:10px;flex:none;place-items:center;display:grid}.picker-text{flex:1;min-width:0;display:grid}.estimate-page,.app-root:has(.estimate-page) .app-header-inner{max-width:1440px}.estimate-page.with-panel .estimate-body{grid-template-columns:minmax(0,1fr) 340px}.crumbs a{min-height:32px;color:var(--text-2);font-size:var(--fs-small);align-items:center;gap:4px;font-weight:600;text-decoration:none;display:inline-flex}.crumbs a:hover{color:var(--text)}.estimate-head{align-items:flex-start;gap:var(--sp-3);margin:var(--sp-1) 0 var(--sp-4);flex-wrap:wrap;display:flex}.estimate-head-main{flex:320px;gap:4px;min-width:0;display:grid}.estimate-title{font-size:var(--fs-h2);letter-spacing:-.02em;margin:0;line-height:1.2}.estimate-head-actions{align-items:center;gap:var(--sp-2);display:flex}.count-pill{border-radius:var(--r-pill);background:var(--accent);min-width:20px;color:var(--accent-contrast);padding:2px 6px;font-size:11px;font-weight:700;line-height:1.2}.save-indicator{font-size:var(--fs-small);color:var(--text-3);white-space:nowrap;align-items:center;gap:6px;font-weight:600;display:inline-flex}.save-indicator.is-saved svg{color:var(--success)}.save-indicator.is-offline,.save-indicator.is-error{color:var(--warning)}.role-note{margin-bottom:var(--sp-4);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text-2);align-items:center;gap:8px;padding:8px 12px;display:flex}.notice{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);border-radius:var(--r-md);border:1px solid var(--line);font-size:var(--fs-ui);flex-wrap:wrap;padding:10px 12px;display:flex}.notice>span{flex:260px}.notice-info{background:var(--bp-50);border-color:color-mix(in srgb, var(--bp-400) 40%, var(--line))}.notice-warn{background:var(--warning-soft);border-color:var(--warning-line)}:root[data-theme=dark] .notice-info{background:#142231}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .notice-info{background:#142231}}.estimate-main{min-width:0}.estimate-main.is-suggesting .workspace{border-radius:var(--r-lg);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent);padding:var(--sp-3)}.suggest-bar{z-index:20;align-items:center;gap:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-3);border-radius:var(--r-md);background:var(--surface-1);border:1px solid color-mix(in srgb, var(--accent) 45%, var(--line));box-shadow:var(--e2);font-size:var(--fs-ui);flex-wrap:wrap;padding:10px 12px;display:flex;position:sticky;top:68px}.suggest-bar>svg{color:var(--accent-text)}.suggest-summary{flex:240px}.suggest-note{flex:200px;max-width:320px;height:36px}.delta-chip{border-radius:var(--r-pill);background:var(--surface-2);font-variant-numeric:tabular-nums;padding:2px 8px;font-weight:700;display:inline-flex}.delta-chip.up{background:var(--danger-soft);color:var(--danger)}.delta-chip.down{background:var(--success-soft);color:var(--success)}.estimate-panel{gap:var(--sp-3)}.estimate-skel-grid{gap:var(--sp-6);grid-template-columns:5fr 7fr;display:grid}@media (width<=767px){.estimate-skel-grid{grid-template-columns:1fr}}.ws-collab{align-items:center;gap:var(--sp-3);margin-left:auto;display:flex}.presence-bar{align-items:center;gap:4px;display:inline-flex}.presence-avatar+.presence-avatar{margin-left:-4px}.presence-text{color:var(--text-2);white-space:nowrap;margin-left:8px}.suggestion-list{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.suggestion-card{gap:var(--sp-3);padding:var(--sp-3);border-left:3px solid var(--accent);display:grid}.suggestion-head{font-size:var(--fs-ui);gap:10px;display:flex}.diff-list{font-size:var(--fs-small);gap:6px;margin:0;padding:0;list-style:none;display:grid}.diff-list li{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.diff-label{margin-right:4px;font-weight:650}.diff-from{color:var(--text-3);text-decoration:line-through}.diff-to{background:var(--accent-soft);color:var(--accent-text);border-radius:4px;padding:1px 6px;font-weight:700}.suggestion-preview{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.suggestion-note{border-left:3px solid var(--line-strong);color:var(--text-2);font-size:var(--fs-small);margin:0;padding:6px 10px}.suggestion-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.suggestion-actions .text-input{flex:100%;height:36px}.version-save{gap:var(--sp-2);flex-wrap:wrap;display:flex}.version-save .text-input{flex:220px}.version-compare{gap:var(--sp-3);display:grid}.version-compare-head{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.version-list{gap:0;margin:0;padding:0;list-style:none;display:grid}.version-item{align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0 var(--sp-3) 24px;border-bottom:1px solid var(--line);flex-wrap:wrap;display:flex;position:relative}.version-item:before{content:"";background:var(--line);width:2px;position:absolute;top:0;bottom:0;left:5px}.version-dot{background:var(--surface-1);border:2px solid var(--line-strong);border-radius:50%;width:12px;height:12px;position:absolute;top:22px;left:0}.version-item:first-child .version-dot,.version-item.is-active .version-dot{border-color:var(--accent);background:var(--accent)}.version-main{flex:200px;gap:2px;display:grid}.version-main .muted{align-items:center;gap:6px;display:inline-flex}.version-actions{gap:4px;display:flex}.settings,.settings-section{gap:var(--sp-4);display:grid}.settings-section h2{font-size:var(--fs-h3)}.profile-row{align-items:center;gap:var(--sp-3);display:flex}.profile-row>div{display:grid}.settings-form{gap:6px;display:grid}.inline-form{gap:var(--sp-2);display:flex}.inline-form .text-input{flex:1}.radio-row{gap:var(--sp-2);border:0;flex-wrap:wrap;margin:0;padding:0;display:flex}.radio-row legend{margin-bottom:var(--sp-2)}.radio-pill{border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-1);min-height:44px;font-size:var(--fs-ui);cursor:pointer;align-items:center;gap:8px;padding:0 14px;font-weight:600;display:inline-flex}.radio-pill input{accent-color:var(--accent)}.radio-pill.is-selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-text)}.radio-pill:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.settings-action{justify-content:space-between;align-items:center;gap:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--line);flex-wrap:wrap;display:flex}.settings-action:first-of-type{border-top:0;padding-top:0}.danger-zone{border-color:color-mix(in srgb, var(--danger) 35%, var(--line))}.danger-zone .btn{justify-self:start}.shared-banner{margin-bottom:var(--sp-5);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text-2);align-items:center;gap:8px;padding:8px 12px;display:flex}.shared-page .budget-card{margin-bottom:var(--sp-2)}.shared-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));margin:0;padding:0;list-style:none;display:grid}.shared-card{gap:var(--sp-2);align-content:start;display:grid}.shared-card .btn{margin-top:var(--sp-2);justify-self:start}.shared-cta{margin-top:var(--sp-8);text-align:center}@media (width<=1023px){.with-panel .project-body,.estimate-page.with-panel .estimate-body{grid-template-columns:minmax(0,1fr)}}@media (width<=767px){.app-header{height:56px}.app-nav{display:none}.app-page{padding-top:var(--sp-4)}.hide-sm{display:none}.project-head{gap:var(--sp-2)}.project-head .pc-icon-lg{display:none}.project-head{align-items:flex-start}.back-btn{margin-top:2px}.project-head-main{flex-basis:calc(100% - 56px)}.project-head-actions{width:100%}.project-head-actions>.btn-primary{min-width:44px;min-height:44px;margin-left:auto}.project-tabs{z-index:30;width:calc(100% + 2 * var(--gutter));max-width:none;margin:0 calc(-1 * var(--gutter)) var(--sp-4);padding:4px var(--gutter);background:color-mix(in srgb, var(--surface-2) 92%, transparent);backdrop-filter:blur(10px);border-width:1px 0;border-radius:0;display:flex;position:sticky;top:56px}.project-tabs .seg-item{flex:1 0 auto;justify-content:center}.page-title-row .btn,.tab-toolbar .btn,.estimate-head-actions .btn,.meta-chip,.status-select select{min-height:44px}.ws-collab{width:100%;margin-left:0}.suggest-bar{top:60px}.suggest-note,.dash-controls .search-box{max-width:none}.side-panel.is-collapsed{display:none}.estimate-row,.picker-item,.check-row,.contrib-row,.menu-item{min-height:48px}}@media print{.app-header,.bottom-tabs,.side-panel,.crumbs,.estimate-head-actions,.suggest-bar,.notice,.offline-banner,.app-toasts{display:none!important}.estimate-page.with-panel .estimate-body,.with-panel .project-body{grid-template-columns:1fr}}.pc-tools{vertical-align:middle;gap:4px;margin-right:8px;display:inline-flex}.pc-tool{background:var(--surface-2);width:24px;height:24px;color:var(--text-2);border-radius:6px;place-items:center;display:grid}.turnstile{min-height:65px;margin:8px 0}
