:root[data-theme=dark]{--bg-0: #0a0b14;--bg-1: #11121d;--bg-2: #181a26;--bg-3: #21232f;--bg-4: #2b2d39;--bg-hover: rgba(255,255,255,.045);--bg-active: rgba(255,255,255,.07);--line-1: rgba(255,255,255,.06);--line-2: rgba(255,255,255,.11);--line-3: rgba(255,255,255,.2);--text-1: #f5f5f8;--text-2: #c5c5d0;--text-3: #8a8a98;--text-4: #5a5a68;--text-inv: #0a0b14;--primary: #8b7cff;--primary-strong: #6750e8;--primary-soft: rgba(139, 124, 255, .14);--primary-glow: rgba(139, 124, 255, .45);--primary-fg: #ffffff;--lime: #d6f55b;--lime-strong: #c7f284;--lime-soft: rgba(214, 245, 91, .12);--lime-fg: #0a0b14;--accent: var(--primary);--accent-fg: var(--primary-fg);--accent-soft: var(--primary-soft);--sem-success: #5fd99c;--sem-success-bg: rgba(95, 217, 156, .12);--sem-success-ring: rgba(95, 217, 156, .3);--sem-warning: #ffc857;--sem-warning-bg: rgba(255, 200, 87, .12);--sem-warning-ring: rgba(255, 200, 87, .3);--sem-danger: #ff7a7a;--sem-danger-bg: rgba(255, 122, 122, .12);--sem-danger-ring: rgba(255, 122, 122, .3);--sem-info: #7eb8ff;--sem-info-bg: rgba(126, 184, 255, .12);--sem-info-ring: rgba(126, 184, 255, .3);--sem-violet: var(--primary);--sem-violet-bg: var(--primary-soft);--shadow-1: 0 1px 0 rgba(255,255,255,.04) inset, 0 1px 2px rgba(0,0,0,.6);--shadow-2: 0 1px 0 rgba(255,255,255,.04) inset, 0 12px 32px -10px rgba(0,0,0,.65);--shadow-3: 0 24px 64px -20px rgba(0,0,0,.85);--shadow-glow: 0 0 0 1px var(--primary-soft), 0 20px 60px -16px var(--primary-glow)}:root[data-theme=light]{--bg-0: #faf9f6;--bg-1: #ffffff;--bg-2: #f4f2ed;--bg-3: #ebe9e2;--bg-4: #ddd9d0;--bg-hover: rgba(0,0,0,.035);--bg-active: rgba(0,0,0,.055);--line-1: rgba(11,11,20,.07);--line-2: rgba(11,11,20,.12);--line-3: rgba(11,11,20,.2);--text-1: #0b0b14;--text-2: #3a3a48;--text-3: #6b6b78;--text-4: #9a9aa6;--text-inv: #ffffff;--primary: #6750e8;--primary-strong: #4f3bc6;--primary-soft: rgba(103, 80, 232, .1);--primary-glow: rgba(103, 80, 232, .3);--primary-fg: #ffffff;--lime: #b9e842;--lime-strong: #a6d233;--lime-soft: rgba(185, 232, 66, .2);--lime-fg: #0b0b14;--accent: var(--primary);--accent-fg: var(--primary-fg);--accent-soft: var(--primary-soft);--sem-success: #16a673;--sem-success-bg: rgba(22, 166, 115, .1);--sem-success-ring: rgba(22, 166, 115, .3);--sem-warning: #b97a06;--sem-warning-bg: rgba(185, 122, 6, .1);--sem-warning-ring: rgba(185, 122, 6, .3);--sem-danger: #c8362f;--sem-danger-bg: rgba(200, 54, 47, .1);--sem-danger-ring: rgba(200, 54, 47, .3);--sem-info: #1e5edd;--sem-info-bg: rgba(30, 94, 221, .08);--sem-info-ring: rgba(30, 94, 221, .25);--sem-violet: var(--primary);--sem-violet-bg: var(--primary-soft);--shadow-1: 0 1px 2px rgba(15,15,30,.05);--shadow-2: 0 12px 28px -10px rgba(15,15,30,.12);--shadow-3: 0 28px 70px -16px rgba(15,15,30,.2);--shadow-glow: 0 0 0 1px var(--primary-soft), 0 20px 56px -18px var(--primary-glow)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-feature-settings:"cv11","ss01","ss03";font-variant-numeric:tabular-nums;background:var(--bg-0);color:var(--text-1);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.005em;overflow:hidden}.font-display{font-family:Bricolage Grotesque,Inter,sans-serif;font-weight:600;letter-spacing:-.03em;font-optical-sizing:auto}.font-display-heavy{font-family:Bricolage Grotesque,sans-serif;font-weight:700;letter-spacing:-.035em}.font-mono{font-family:JetBrains Mono,ui-monospace,monospace;font-feature-settings:"zero","ss02"}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:999px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--line-3);background-clip:padding-box;border:2px solid transparent}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}input,textarea,select{font:inherit;color:inherit}input:focus,textarea:focus,button:focus,select:focus{outline:none}a{color:inherit;text-decoration:none}.btn{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:10px;font-size:13px;font-weight:500;border:1px solid transparent;transition:all .16s cubic-bezier(.16,1,.3,1);white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.97)}.btn-primary{background:var(--primary);color:var(--primary-fg)}.btn-primary:hover{background:var(--primary-strong)}.btn-lime{background:var(--lime);color:var(--lime-fg)}.btn-lime:hover{background:var(--lime-strong)}.btn-ghost{color:var(--text-2)}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-1)}.btn-outline{border-color:var(--line-2);color:var(--text-1);background:transparent}.btn-outline:hover{border-color:var(--line-3);background:var(--bg-2)}.btn-icon{padding:8px}.kbd{font-family:JetBrains Mono,monospace;font-size:10.5px;padding:1px 5px;border:1px solid var(--line-2);border-radius:4px;color:var(--text-3);background:var(--bg-2)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:11.5px;font-weight:500;border:1px solid var(--line-1);color:var(--text-2);background:var(--bg-2);white-space:nowrap}.chip-dot{width:6px;height:6px;border-radius:999px}.card{background:var(--bg-1);border:1px solid var(--line-1);border-radius:16px}.card-pad{padding:24px}.card-tight{padding:18px}.card-feature{background:linear-gradient(160deg,var(--bg-1),var(--bg-2));border:1px solid var(--line-1);border-radius:18px;position:relative;overflow:hidden}.card-feature:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--primary-soft),transparent)}.card-accent{background:linear-gradient(160deg,var(--primary),var(--primary-strong));border:1px solid var(--primary-strong);border-radius:18px;color:var(--primary-fg);position:relative;overflow:hidden}.divider{height:1px;background:var(--line-1)}.muted{color:var(--text-3)}.muted-2{color:var(--text-4)}.section-title{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}@keyframes fadeIn{0%{transform:translateY(8px)}to{transform:none}}@keyframes scaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes confirmPop{0%{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}@keyframes blink{50%{opacity:0}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes glow-pulse{0%,to{box-shadow:0 0 0 0 var(--primary-glow)}50%{box-shadow:0 0 28px 0 var(--primary-glow)}}.fade-in{animation:fadeIn .26s cubic-bezier(.16,1,.3,1)}.scale-in{animation:scaleIn .2s cubic-bezier(.16,1,.3,1)}@keyframes rowEnter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.row-enter{animation:rowEnter .42s cubic-bezier(.16,1,.3,1) both}@media (prefers-reduced-motion: reduce){.row-enter,.fade-in,.scale-in{animation:none}}.skeleton{background:linear-gradient(90deg,var(--bg-2) 0%,var(--bg-3) 50%,var(--bg-2) 100%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:6px}.cursor-blink:after{content:"";display:inline-block;width:8px;height:1.1em;vertical-align:text-bottom;background:var(--primary);margin-left:3px;animation:blink 1.1s steps(1) infinite;border-radius:1px}@keyframes spin{to{transform:rotate(360deg)}}.spin{display:inline-flex;animation:spin 1.4s linear infinite}@keyframes softPulse{0%,to{opacity:1}50%{opacity:.4}}.pulse{animation:softPulse 1.2s ease-in-out infinite}.dot-flashing{position:relative;width:6px;height:6px;border-radius:50%;background:var(--primary);animation:dotFlash 1s infinite linear alternate}@keyframes dotFlash{0%{opacity:1}to{opacity:.25}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app{display:grid;grid-template-columns:244px 1fr;height:100vh;background:var(--bg-0)}.app.collapsed{grid-template-columns:64px 1fr}.app.no-sidebar{grid-template-columns:1fr}.sidebar{background:var(--bg-1);border-right:1px solid var(--line-1);display:flex;flex-direction:column;min-width:0;position:relative}.sidebar-head{padding:18px 18px 12px;display:flex;align-items:center;gap:10px;height:60px}.sidebar-section{padding:10px}.sidebar-link{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:8px;color:var(--text-2);font-size:13.5px;cursor:pointer;transition:all .14s ease;position:relative}.sidebar-link:hover{background:var(--bg-hover);color:var(--text-1)}.sidebar-link.active{background:var(--primary-soft);color:var(--primary);font-weight:500}.sidebar-link .badge{margin-left:auto;font-size:10.5px;padding:2px 7px;border-radius:999px;background:var(--bg-3);color:var(--text-3);font-family:JetBrains Mono,monospace;font-weight:400}.sidebar-link.active .badge{background:var(--primary);color:var(--primary-fg)}.main{display:flex;flex-direction:column;min-width:0;min-height:0}.topbar{height:60px;border-bottom:1px solid var(--line-1);display:flex;align-items:center;gap:12px;padding:0 28px;background:var(--bg-0)}.viewport{flex:1;overflow:auto;min-height:0;position:relative}.viewport-inner{max-width:1280px;margin:0 auto;padding:40px 44px 80px}.viewport-full{padding:0;max-width:none}@media (max-width: 1180px){.viewport-inner{padding:28px 24px 64px}.topbar{padding:0 18px}}@media (max-width: 760px){.viewport-inner{padding:20px 14px 56px}}@media (max-height: 720px){.viewport-inner{padding-top:22px;padding-bottom:48px}}.login-split{min-height:100vh;display:grid;grid-template-columns:1.15fr 1fr;background:var(--bg-0)}.login-hero{position:relative;overflow:hidden;background:var(--bg-1);border-right:1px solid var(--line-1);display:flex;flex-direction:column;justify-content:space-between;gap:32px;padding:clamp(28px,4vw,56px) clamp(24px,4.5vw,64px)}.login-mini-brand{display:none;margin-bottom:22px}.login-form-pane{display:flex;flex-direction:column;justify-content:center;padding:clamp(28px,4vw,48px) clamp(20px,4vw,64px);position:relative;overflow:auto}@media (max-width: 1080px){.login-split{grid-template-columns:1fr}.login-hero{display:none}.login-form-pane{min-height:100vh}.login-mini-brand{display:flex;align-items:center;justify-content:center}}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:36px;gap:24px;flex-wrap:wrap}.page-head>div:first-child{flex:1 1 480px;min-width:0}.page-head>div:last-child{flex-shrink:0}.page-title{font-family:Bricolage Grotesque,sans-serif;font-weight:600;font-size:42px;line-height:1.05;letter-spacing:-.035em;margin:0 0 8px}.page-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:10.5px;font-weight:600;letter-spacing:.1em;color:var(--primary);text-transform:uppercase;margin-bottom:14px;line-height:1.4}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-weight:500;color:var(--text-3);font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:14px 18px;border-bottom:1px solid var(--line-1);background:var(--bg-1);position:sticky;top:0;z-index:1}.tbl td{padding:18px;border-bottom:1px solid var(--line-1);color:var(--text-1);vertical-align:middle}.tbl tr:hover td{background:var(--bg-hover)}.tbl tr:last-child td{border-bottom:0}.kpi{border:1px solid var(--line-1);border-radius:16px;padding:22px 24px 24px;background:var(--bg-1);display:flex;flex-direction:column;gap:6px;min-height:138px;position:relative;overflow:hidden;transition:all .2s ease}.kpi:hover{border-color:var(--line-2)}.kpi-label{font-size:10.5px;font-weight:600;letter-spacing:.08em;color:var(--text-3);text-transform:uppercase;white-space:nowrap;min-width:0}.kpi-value{font-family:Bricolage Grotesque,sans-serif;font-weight:600;font-size:44px;line-height:1;letter-spacing:-.035em;color:var(--text-1)}.kpi-sub{font-size:12.5px;color:var(--text-3);margin-top:auto;padding-top:10px}.kpi-accent{background:linear-gradient(160deg,var(--primary),var(--primary-strong));border-color:transparent;color:var(--primary-fg)}.kpi-accent .kpi-label,.kpi-accent .kpi-sub{color:#ffffffc7}.kpi-accent .kpi-value{color:var(--primary-fg)}.kpi-lime{background:linear-gradient(160deg,var(--lime),var(--lime-strong));border-color:transparent;color:var(--lime-fg)}.kpi-lime .kpi-label,.kpi-lime .kpi-sub{color:#0b0b149e}.sem{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;padding:4px 10px;border-radius:999px;border:1px solid;line-height:1.3;white-space:nowrap}.sem-success{color:var(--sem-success);background:var(--sem-success-bg);border-color:var(--sem-success-ring)}.sem-warning{color:var(--sem-warning);background:var(--sem-warning-bg);border-color:var(--sem-warning-ring)}.sem-danger{color:var(--sem-danger);background:var(--sem-danger-bg);border-color:var(--sem-danger-ring)}.sem-info{color:var(--sem-info);background:var(--sem-info-bg);border-color:var(--sem-info-ring)}.sem-violet{color:var(--primary);background:var(--primary-soft);border-color:var(--primary-soft)}.sem-neutral{color:var(--text-2);background:var(--bg-2);border-color:var(--line-1)}.sem-lime{color:var(--lime-fg);background:var(--lime);border-color:var(--lime-strong)}.callout{display:flex;gap:14px;border:1px solid var(--line-1);border-radius:14px;background:var(--bg-1);padding:18px 20px;font-size:13.5px;color:var(--text-2)}.callout-icon{flex:0 0 auto;color:var(--text-3);margin-top:1px}.callout-warn{border-color:var(--sem-warning-ring);background:var(--sem-warning-bg);color:var(--text-1)}.callout-warn .callout-icon{color:var(--sem-warning)}.callout-info{border-color:var(--primary-soft);background:var(--primary-soft);color:var(--text-1)}.callout-info .callout-icon{color:var(--primary)}.callout-success{border-color:var(--sem-success-ring);background:var(--sem-success-bg)}.callout-success .callout-icon{color:var(--sem-success)}.avatar{width:28px;height:28px;border-radius:999px;background:var(--bg-3);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--text-2);border:1px solid var(--line-1);flex-shrink:0}.avatar-stack{display:inline-flex}.avatar-stack>.avatar{margin-left:-8px;border:2px solid var(--bg-1)}.avatar-stack>.avatar:first-child{margin-left:0}.chatdock{position:fixed;right:20px;bottom:20px;top:80px;width:440px;background:var(--bg-1);border:1px solid var(--line-2);border-radius:18px;box-shadow:var(--shadow-3);display:flex;flex-direction:column;z-index:60;animation:scaleIn .2s cubic-bezier(.16,1,.3,1) both;transform-origin:bottom right}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100;display:flex;align-items:center;justify-content:center;animation:fadeIn .18s ease both}.modal{background:var(--bg-1);border:1px solid var(--line-2);border-radius:18px;box-shadow:var(--shadow-3);animation:scaleIn .2s cubic-bezier(.16,1,.3,1) both;max-width:92vw;max-height:88vh;overflow:auto}.cmdk{width:680px;max-width:92vw}.cmdk-input{width:100%;padding:18px 22px;font-size:15px;background:transparent;border:0;border-bottom:1px solid var(--line-1);color:var(--text-1)}.cmdk-section{padding:8px 10px}.cmdk-section-label{font-size:10.5px;font-weight:600;letter-spacing:.1em;color:var(--text-4);padding:8px 12px;text-transform:uppercase}.cmdk-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:8px;font-size:13.5px;color:var(--text-2);cursor:pointer}.cmdk-item.active,.cmdk-item:hover{background:var(--primary-soft);color:var(--text-1)}.cmdk-item .meta{margin-left:auto;color:var(--text-4);font-size:11.5px;font-family:JetBrains Mono,monospace}.progress{height:5px;background:var(--bg-3);border-radius:999px;overflow:hidden;min-width:90px}.progress>div{height:100%;background:var(--primary);border-radius:999px;transition:width .28s ease}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line-1)}.tab{padding:12px 16px;font-size:13.5px;color:var(--text-3);border-bottom:2px solid transparent;cursor:pointer;transition:all .14s ease;margin-bottom:-1px;font-weight:500}.tab:hover{color:var(--text-1)}.tab.active{color:var(--text-1);border-bottom-color:var(--primary)}.tabnav-wrap{position:relative;margin-bottom:24px;display:flex;align-items:center;gap:8px}.tabnav-arrow{flex:0 0 auto;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:var(--bg-1);border:1px solid var(--line-1);color:var(--text-2);box-shadow:var(--shadow-1);cursor:pointer;transition:background .15s ease,color .15s ease,opacity .15s ease}.tabnav-arrow:hover{background:var(--bg-hover);color:var(--text-1)}.tabnav-arrow:disabled{opacity:.3;cursor:default}.tabnav{display:flex;gap:4px;padding:5px;background:var(--bg-1);border:1px solid var(--line-1);border-radius:14px;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity;box-shadow:var(--shadow-1);flex:1 1 auto;min-width:0;scroll-behavior:smooth}.tabnav::-webkit-scrollbar{display:none}.tabnav-item{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;padding:9px 14px;border-radius:10px;font-size:13px;font-weight:500;color:var(--text-3);white-space:nowrap;scroll-snap-align:start;transition:background .15s ease,color .15s ease}.tabnav-item svg{flex-shrink:0;opacity:.85}.tabnav-item:hover{background:var(--bg-hover);color:var(--text-1)}.tabnav-item.active{background:var(--primary-soft);color:var(--primary);font-weight:600;box-shadow:inset 0 0 0 1px var(--primary-soft)}.tabnav-item.active svg{opacity:1}@media (max-width: 760px){.tabnav-item{padding:9px 12px}}.risk-grid{display:grid;grid-template-columns:90px 1fr 1fr 1fr;gap:1px;background:var(--line-1);border:1px solid var(--line-1);border-radius:12px;overflow:hidden}.risk-cell{background:var(--bg-1);padding:12px;min-height:76px;font-size:11px;position:relative}.risk-cell.header{background:var(--bg-2);color:var(--text-3);font-size:10.5px;font-weight:500;text-align:center;padding:10px;min-height:auto;text-transform:uppercase;letter-spacing:.06em}.risk-cell.label{background:var(--bg-2);color:var(--text-3);font-weight:500;display:flex;align-items:center;justify-content:center;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em}.gantt{font-family:JetBrains Mono,monospace;font-size:11px}.gantt-row{display:grid;grid-template-columns:240px 1fr;min-height:36px;align-items:center;border-bottom:1px solid var(--line-1)}.gantt-label{padding:0 16px;color:var(--text-2);font-family:Inter,sans-serif;font-size:12.5px}.gantt-track{position:relative;height:100%}.gantt-bar{position:absolute;top:8px;bottom:8px;border-radius:5px;background:var(--primary)}.gantt-bar.phase-1{background:linear-gradient(180deg,var(--sem-info),color-mix(in oklch,var(--sem-info) 70%,black))}.gantt-bar.phase-2{background:linear-gradient(180deg,var(--primary),var(--primary-strong))}.gantt-bar.phase-3{background:linear-gradient(180deg,var(--sem-warning),color-mix(in oklch,var(--sem-warning) 70%,black))}.gantt-bar.phase-4{background:linear-gradient(180deg,var(--lime),var(--lime-strong))}.toast-host{position:fixed;bottom:22px;left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:8px}.toast{background:var(--bg-1);border:1px solid var(--line-2);border-radius:12px;padding:12px 16px;font-size:13.5px;color:var(--text-1);display:flex;align-items:center;gap:10px;box-shadow:var(--shadow-2);animation:scaleIn .22s cubic-bezier(.16,1,.3,1) both}.glow-orb{position:absolute;border-radius:999px;filter:blur(80px);opacity:.5;pointer-events:none}.text-primary{color:var(--primary)}.text-lime{color:var(--lime)}.brand-mark{display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--primary-strong));color:var(--primary-fg);flex-shrink:0;position:relative}.brand-mark:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:linear-gradient(135deg,rgba(255,255,255,.18),transparent 40%);pointer-events:none}.thread-row .thread-del{opacity:0;transition:opacity .12s ease}.thread-row:hover .thread-del{opacity:.7}.thread-row .thread-del:hover{opacity:1}select{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;cursor:pointer;background-color:var(--bg-1)!important;background-image:linear-gradient(45deg,transparent 50%,var(--text-3) 50%),linear-gradient(135deg,var(--text-3) 50%,transparent 50%)!important;background-position:calc(100% - 16px) calc(50% - 1.5px),calc(100% - 11px) calc(50% - 1.5px)!important;background-size:5px 5px,5px 5px!important;background-repeat:no-repeat!important;border:1px solid var(--line-2)!important;border-radius:10px!important;color:var(--text-1)!important;padding-right:34px!important;box-shadow:none;transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease}select:hover:not(:disabled){border-color:var(--line-3, var(--primary))!important;background-color:var(--bg-2)!important}select:focus-visible,select:focus{border-color:var(--primary)!important;box-shadow:0 0 0 3px var(--primary-glow, hsl(0 0% 100% / .08))}select:disabled{opacity:.55;cursor:not-allowed}select option{background:var(--bg-1);color:var(--text-1)}.select-soft{background-color:var(--bg-2)!important;color:var(--text-1);border:1px solid var(--line-2)!important;border-radius:8px!important;font-size:12.5px;padding:6px 28px 6px 10px!important;outline:none;cursor:pointer}.select-soft:focus{border-color:var(--primary)!important}.faro-seg{display:inline-flex;gap:4px;padding:4px;background:var(--bg-1);border:1px solid var(--line-1);border-radius:14px;box-shadow:var(--shadow-1);max-width:100%;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}.faro-seg::-webkit-scrollbar{display:none}.faro-seg>*{flex:0 0 auto}.faro-seg-item{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:10px;font-size:13px;font-weight:500;color:var(--text-3);transition:background .18s ease,color .18s ease,transform .18s ease;white-space:nowrap}.faro-seg-item:hover{background:var(--bg-hover);color:var(--text-1)}.faro-seg-item.active{background:var(--primary);color:var(--primary-fg);font-weight:600;box-shadow:0 6px 18px -8px var(--primary-glow)}.faro-seg-item .n{font-family:JetBrains Mono,monospace;font-size:10.5px;padding:1px 6px;border-radius:999px;background:var(--bg-3);color:var(--text-3)}.faro-seg-item.active .n{background:#ffffff38;color:var(--primary-fg)}.faro-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;color:var(--text-3);margin-bottom:28px}.faro-strip .dotsep{width:4px;height:4px;border-radius:999px;background:var(--line-3)}.faro-stat{position:relative;overflow:hidden;background:var(--bg-1);border:1px solid var(--line-1);border-radius:16px;padding:18px 20px;transition:transform .22s cubic-bezier(.16,1,.3,1),border-color .22s ease,box-shadow .22s ease}.faro-stat:hover{transform:translateY(-2px);border-color:var(--line-2);box-shadow:var(--shadow-2)}.faro-stat .v{font-family:Bricolage Grotesque,sans-serif;font-weight:600;font-size:34px;line-height:1;letter-spacing:-.035em}.faro-stat .l{font-size:11.5px;color:var(--text-3);margin-top:8px}.faro-stat .ic{position:absolute;top:16px;right:16px;opacity:.55;transition:opacity .22s ease,transform .22s ease}.faro-stat:hover .ic{opacity:1;transform:translateY(-1px)}.faro-pill{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:999px;font-size:12.5px;font-weight:500;color:var(--text-3);border:1px solid transparent;transition:all .16s ease}.faro-pill:hover{color:var(--text-1);background:var(--bg-hover)}.faro-pill.active{color:var(--text-1);background:var(--bg-2);border-color:var(--line-2)}.faro-pill .n{font-family:JetBrains Mono,monospace;font-size:10.5px;color:var(--text-4)}.faro-pill.active .n{color:var(--primary)}.faro-list{container-type:inline-size}.faro-card,.faro-head{display:grid;grid-template-columns:22px minmax(200px,1fr) minmax(120px,.7fr) minmax(96px,.5fr) minmax(84px,.4fr) minmax(92px,.45fr) minmax(96px,.5fr) 112px;gap:14px;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line-1)}.faro-card>*,.faro-head>*{min-width:0}.faro-card{cursor:pointer;transition:background .16s ease}.faro-head{padding:9px 20px;background:var(--bg-1);font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-4);white-space:nowrap;overflow:hidden}.faro-head>*{overflow:hidden;text-overflow:ellipsis}.faro-card:last-child{border-bottom:0}.faro-card:hover{background:var(--bg-hover)}.faro-card .title{font-size:14px;font-weight:500;color:var(--text-1);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.faro-card .meta{font-size:11.5px;color:var(--text-3);margin-top:5px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}@container (max-width: 1040px){.faro-card,.faro-head{grid-template-columns:22px minmax(180px,1fr) minmax(96px,.5fr) minmax(92px,.45fr) minmax(96px,.5fr) 108px}.faro-card>.hide-lg,.faro-head>.hide-lg{display:none}}@container (max-width: 820px){.faro-card,.faro-head{grid-template-columns:22px minmax(150px,1fr) minmax(92px,.5fr) 104px}.faro-card>.hide-md,.faro-head>.hide-md{display:none}}@container (max-width: 620px){.faro-head{display:none}.faro-card{display:grid;grid-template-columns:22px minmax(0,1fr);gap:6px 12px;align-items:start;padding:16px}.faro-card>*:not(:first-child){grid-column:2}.faro-card>.hide-lg,.faro-card>.hide-md{display:block}.faro-card>[data-label]:before{content:attr(data-label);display:block;margin-bottom:2px;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-4)}.faro-card>[data-label]{margin-top:6px}.faro-card .faro-actions{justify-content:flex-start;margin-top:10px}}.faro-score{display:flex;align-items:center;gap:9px}.faro-ring{width:34px;height:34px;flex-shrink:0}.faro-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}.faro-act{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line-2);background:var(--bg-1);color:var(--text-3);cursor:pointer;transition:transform .14s cubic-bezier(.16,1,.3,1),background .14s ease,color .14s ease,border-color .14s ease}.faro-act:hover{transform:translateY(-1px) scale(1.06);color:var(--text-1);background:var(--bg-hover)}.faro-act.star:hover{color:var(--sem-success);border-color:var(--sem-success)}.faro-act.del:hover{color:var(--sem-danger);border-color:var(--sem-danger)}.faro-undo{position:fixed;left:50%;bottom:26px;transform:translate(-50%);z-index:340;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:999px;background:var(--bg-2);border:1px solid var(--line-2);box-shadow:0 16px 40px #00000052;font-size:13px;color:var(--text-2)}.faro-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}.faro-search{display:flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid var(--line-2);border-radius:999px;background:var(--bg-1);color:var(--text-4);transition:border-color .16s ease,box-shadow .16s ease;min-width:0;flex:1 1 240px;max-width:360px}.faro-search:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 16%,transparent)}.faro-search input{flex:1;min-width:0;background:transparent;border:0;outline:none;font:inherit;font-size:12.5px;color:var(--text-1)}.faro-search button{display:grid;place-items:center;border:0;background:transparent;color:var(--text-4);cursor:pointer;padding:2px;border-radius:999px}.faro-search button:hover{color:var(--text-1)}.faro-filters{border:1px solid var(--line-1);border-radius:14px;background:var(--bg-1);padding:12px 14px;margin-bottom:18px}.faro-filters-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-width:0}.faro-filters-row>*{min-width:0}@media (max-width: 720px){.faro-more,.faro-filters-count{margin-left:0}}.faro-filters-label{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-4);font-weight:600}.faro-seg-quiet{background:var(--bg-2)}.faro-seg-item .dot{width:7px;height:7px;border-radius:999px;flex:0 0 auto}.faro-more{margin-left:auto;display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;cursor:pointer;border:1px solid var(--line-2);background:var(--bg-1);font:inherit;font-size:12.5px;color:var(--text-2);transition:background .16s ease,color .16s ease,border-color .16s ease}.faro-more:hover{background:var(--bg-hover);color:var(--text-1)}.faro-more.active{border-color:var(--primary);color:var(--text-1)}.faro-more .n{font-family:JetBrains Mono,monospace;font-size:10.5px;background:var(--primary);color:var(--primary-fg);border-radius:999px;padding:1px 6px}.faro-more .chev{display:inline-flex;transition:transform .18s ease}.faro-more .chev.up{transform:rotate(180deg)}.faro-filters-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line-1)}.faro-field{display:flex;flex-direction:column;gap:6px;min-width:0}.faro-field>span{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-4);font-weight:600}.faro-field .lz-select{display:block;width:100%}.faro-field .lz-select-trigger{border-radius:10px;padding:8px 11px}.faro-filters-active{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line-1)}.faro-chip-x{display:inline-flex;align-items:center;gap:6px;cursor:pointer;padding:4px 9px;border-radius:999px;font:inherit;font-size:11.5px;border:1px solid color-mix(in srgb,var(--primary) 38%,var(--line-2));background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--text-1);transition:background .15s ease}.faro-chip-x:hover{background:color-mix(in srgb,var(--primary) 22%,transparent)}.faro-clear{border:0;background:transparent;cursor:pointer;font:inherit;font-size:11.5px;color:var(--text-3);text-decoration:underline;text-underline-offset:3px}.faro-clear:hover{color:var(--text-1)}.faro-filters-count{margin-left:auto;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-4)}.lz-select{position:relative;display:inline-block}.lz-select-trigger{display:flex;align-items:center;gap:8px;width:100%;background:var(--bg-1);color:var(--text-1);border:1px solid var(--line-2);border-radius:10px;padding:9px 11px;font:inherit;font-size:13px;line-height:1.2;cursor:pointer;text-align:left;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.lz-select-sm .lz-select-trigger{padding:6px 10px;font-size:12.5px;border-radius:999px}.lz-select-pill .lz-select-trigger{border-radius:999px}.lz-select-ghost .lz-select-trigger{background:transparent;border-color:transparent}.lz-select-trigger:hover:not(:disabled){border-color:var(--line-3, var(--primary));background:var(--bg-2)}.lz-select.is-open .lz-select-trigger{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}.lz-select-trigger:disabled{opacity:.5;cursor:not-allowed}.lz-select-lead{color:var(--text-4);flex:0 0 auto}.lz-select-value{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lz-select-caret{color:var(--text-4);flex:0 0 auto;transition:transform .18s ease}.lz-select.is-open .lz-select-caret{transform:rotate(180deg);color:var(--primary)}.lz-select-menu{position:absolute;z-index:90;top:calc(100% + 6px);left:0;min-width:100%;max-height:280px;overflow:auto;padding:6px;background:var(--bg-1);border:1px solid var(--line-2);border-radius:12px;box-shadow:0 18px 44px -18px #0000008c,0 2px 8px -4px #00000059;animation:lzSelectIn .13s ease both}@keyframes lzSelectIn{0%{opacity:0;transform:translateY(-4px) scale(.985)}to{opacity:1;transform:none}}.lz-select-opt{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:0;border-radius:8px;padding:8px 10px;font:inherit;font-size:12.75px;color:var(--text-2);cursor:pointer;text-align:left;white-space:nowrap;transition:background .12s ease,color .12s ease}.lz-select-opt.is-hi{background:var(--bg-2);color:var(--text-1)}.lz-select-opt.is-selected{color:var(--text-1);font-weight:600}.lz-select-opt-label{flex:1;overflow:hidden;text-overflow:ellipsis}.lz-select-opt-check{color:var(--primary);flex:0 0 auto}.faro-crit{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}.faro-crit-main{display:flex;flex-direction:column;gap:18px;min-width:0}.faro-crit-side{position:sticky;top:8px;min-width:0}.faro-crit-card{overflow:hidden}.faro-crit-card-head{display:flex;gap:12px;align-items:flex-start;padding:16px 18px;border-bottom:1px solid var(--line-1)}.faro-crit-step{flex:0 0 auto;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;font-size:11.5px;font-weight:600;color:var(--primary);background:var(--primary-soft);border:1px solid var(--line-2)}.faro-crit-title{font-size:13.5px;font-weight:600;letter-spacing:-.01em}.faro-crit-sub{margin:3px 0 0;font-size:11.5px;color:var(--text-3);line-height:1.5}.faro-crit-body{padding:18px}.faro-crit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 22px}.faro-crit-field{min-width:0}.faro-crit-field-head{display:flex;align-items:center;gap:10px;margin-bottom:9px}.faro-crit-field-label{font-size:12.5px;font-weight:600}.faro-crit-value{margin-left:auto;font-size:11.5px;color:var(--primary);background:var(--primary-soft);border-radius:99px;padding:2px 8px;white-space:nowrap}.faro-crit-field-help{margin:8px 0 0;font-size:11px;color:var(--text-4)}.faro-crit-range{width:100%;accent-color:var(--primary);cursor:pointer}.faro-crit-range:disabled{cursor:not-allowed;opacity:.6}.faro-crit-scale{display:flex;justify-content:space-between;margin-top:5px;font-size:10.5px;color:var(--text-4)}.faro-crit-dest{display:flex;gap:8px}.faro-crit-toggle{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;border-radius:10px;font-size:12px;font-weight:500;cursor:pointer;background:transparent;color:var(--text-2);border:1px solid var(--line-2);transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.faro-crit-toggle:hover:not(:disabled){background:var(--bg-hover);transform:translateY(-1px)}.faro-crit-toggle.is-on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.faro-crit-toggle:disabled{cursor:not-allowed;opacity:.6}.faro-kw+.faro-kw{margin-top:20px;padding-top:20px;border-top:1px solid var(--line-1)}.faro-kw-head{display:flex;gap:10px;align-items:flex-start}.faro-kw-icon{flex:0 0 auto;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;color:var(--text-2);background:var(--bg-2);border:1px solid var(--line-1)}.faro-kw-icon.tone-violet{color:var(--primary);background:var(--primary-soft);border-color:var(--line-2)}.faro-kw-label{font-size:12.5px;font-weight:600}.faro-kw-help{margin:2px 0 0;font-size:11px;color:var(--text-4);line-height:1.5}.faro-kw-count{margin-left:auto;flex:0 0 auto;font-size:11px;color:var(--text-3);background:var(--bg-2);border:1px solid var(--line-1);border-radius:99px;min-width:22px;text-align:center;padding:1px 7px}.faro-kw-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.faro-kw-chip{font-size:11.5px;display:inline-flex;align-items:center;gap:6px;transition:transform .16s cubic-bezier(.16,1,.3,1)}.faro-kw-chip:hover{transform:translateY(-1px)}.faro-kw-x{background:none;border:0;padding:0;cursor:pointer;color:inherit;opacity:.55;display:inline-flex;transition:opacity .14s ease}.faro-kw-x:hover{opacity:1}.faro-kw-empty{font-size:11.5px;color:var(--text-4)}.faro-kw-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:14px}.faro-kw-field{flex:1 1 220px;min-width:0;display:flex;align-items:center;gap:8px;height:36px;padding:0 5px 0 11px;border-radius:10px;background:var(--bg-2);border:1px solid var(--line-2);transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.faro-kw-field:focus-within{border-color:var(--primary);background:var(--bg-1);box-shadow:0 0 0 3px var(--primary-soft)}.faro-kw-field-icon{flex:0 0 auto;display:inline-flex;color:var(--text-4);transition:color .16s ease}.faro-kw-field:focus-within .faro-kw-field-icon{color:var(--primary)}.faro-kw-input{flex:1 1 auto;min-width:0;border:0;background:transparent;font-size:12.5px;color:var(--text-1)}.faro-kw-input::placeholder{color:var(--text-4)}.faro-kw-submit{flex:0 0 auto;height:26px;padding:0 11px;border-radius:7px;cursor:pointer;font-size:11.5px;font-weight:600;letter-spacing:-.01em;color:var(--text-3);background:transparent;border:1px solid transparent;transition:color .16s ease,background .16s ease,border-color .16s ease,opacity .16s ease}.faro-kw-submit:hover:not(:disabled){color:var(--primary-fg);background:var(--primary);border-color:var(--primary)}.faro-kw-submit:disabled{cursor:default;opacity:.4}.faro-kw-toggle{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;cursor:pointer;height:36px;padding:0 11px;border-radius:10px;font-size:11.5px;font-weight:500;color:var(--text-3);background:transparent;border:1px solid var(--line-2);transition:color .16s ease,border-color .16s ease,background .16s ease}.faro-kw-toggle:hover{color:var(--primary);border-color:var(--primary)}.faro-kw-toggle.is-open{color:var(--primary);border-color:var(--primary);background:var(--primary-soft)}.faro-kw-toggle.is-open svg{transform:rotate(180deg)}.faro-kw-toggle svg{transition:transform .18s cubic-bezier(.16,1,.3,1)}.faro-kw-toggle-n{font-size:10.5px;font-family:JetBrains Mono,monospace;color:var(--text-4)}.faro-kw-toggle.is-open .faro-kw-toggle-n,.faro-kw-toggle:hover .faro-kw-toggle-n{color:inherit}.faro-kw-suggest{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-1)}.faro-kw-sug{display:inline-flex;align-items:center;gap:5px;font-size:11px;cursor:pointer;padding:3px 9px;border-radius:99px;color:var(--text-3);background:transparent;border:1px dashed var(--line-2);transition:color .14s ease,border-color .14s ease,background .14s ease}.faro-kw-sug:hover{color:var(--primary);border-color:var(--primary);background:var(--primary-soft)}.faro-crit-big{display:flex;align-items:baseline;gap:8px}.faro-crit-num{font-size:36px;font-weight:600;line-height:1;letter-spacing:-.03em}.faro-crit-of{font-size:12.5px;color:var(--text-3)}.faro-crit-bar{height:6px;border-radius:99px;background:var(--line-1);margin-top:14px;overflow:hidden}.faro-crit-bar>div{height:100%;background:var(--primary);border-radius:99px;transition:width .3s cubic-bezier(.16,1,.3,1)}.faro-crit-pct{margin-top:8px;font-size:11.5px;color:var(--text-3);line-height:1.5}.faro-crit-recap{list-style:none;margin:16px 0 0;padding:0;border-top:1px solid var(--line-1)}.faro-crit-recap li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-1);font-size:12px}.faro-crit-recap li:last-child{border-bottom:0}.faro-crit-recap span{color:var(--text-3)}.faro-crit-recap b{margin-left:auto;font-weight:600;text-align:right}.faro-crit-note{margin:14px 0 0;font-size:11px;color:var(--text-4);line-height:1.55}.faro-crit-save{display:flex;align-items:center;gap:10px;padding:12px 18px;border-top:1px solid var(--line-1);background:var(--bg-2)}.faro-crit-dirty{font-size:11px;color:var(--text-4)}.faro-crit-dirty.is-on{color:var(--primary)}.faro-crit-save .btn{margin-left:auto}.faro-crit-soon{display:flex;align-items:center;gap:12px;opacity:.72}.faro-crit-soon-chip{margin-left:auto;font-size:10.5px;white-space:nowrap}@media (max-width:1100px){.faro-crit{grid-template-columns:minmax(0,1fr)}.faro-crit-side{position:static}}@media (max-width:700px){.faro-crit-grid{grid-template-columns:minmax(0,1fr)}}.go-quad{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}@media (max-width: 900px){.go-quad{grid-template-columns:1fr}}.chat-wrap{container-type:inline-size;height:100%;min-height:0;position:relative}.chat-layout{display:grid;height:100%;min-height:0;grid-template-columns:280px minmax(0,1fr) 320px}.chat-layout-2{grid-template-columns:280px minmax(0,1fr)}.chat-layout>*{min-width:0;min-height:0}.chat-ctx-toggle{display:none}@container (max-width: 1200px){.chat-layout{grid-template-columns:240px minmax(0,1fr) 280px}.chat-layout-2{grid-template-columns:240px minmax(0,1fr)}}@container (max-width: 1040px){.chat-layout,.chat-layout-2{grid-template-columns:230px minmax(0,1fr)}.chat-ctx-toggle{display:inline-flex}.chat-ctx{display:none;position:absolute;top:0;right:0;bottom:0;width:min(320px,90%);z-index:20;box-shadow:var(--shadow-3)}.chat-ctx.is-open{display:block}}@container (max-width: 700px){.chat-layout,.chat-layout-2{grid-template-columns:minmax(0,1fr)}.chat-threads{display:none!important}.chat-bid-link{padding:6px 8px}}:root[data-theme=dark]{--tg-slate: #a3a9bd;--tg-violet: #a99cff;--tg-blue: #7eb4ff;--tg-teal: #5fd4c8;--tg-green: #8fdc7a;--tg-amber: #f2c25b;--tg-orange: #ff9f6b;--tg-rose: #ff8fb3;--tg-alpha: .13;--cost-bg: rgba(255,255,255,.022);--row-review: #ffc857}:root[data-theme=light]{--tg-slate: #5d6478;--tg-violet: #6a4fe0;--tg-blue: #1f63d6;--tg-teal: #0d8f86;--tg-green: #2f8f2a;--tg-amber: #9a6a00;--tg-orange: #c4520f;--tg-rose: #c2306a;--tg-alpha: .1;--cost-bg: rgba(11,11,20,.022);--row-review: #c98a06}.tg-slate{--tg: var(--tg-slate)}.tg-violet{--tg: var(--tg-violet)}.tg-blue{--tg: var(--tg-blue)}.tg-teal{--tg: var(--tg-teal)}.tg-green{--tg: var(--tg-green)}.tg-amber{--tg: var(--tg-amber)}.tg-orange{--tg: var(--tg-orange)}.tg-rose{--tg: var(--tg-rose)}.tg-none{--tg: var(--text-4)}.tg-dot{width:8px;height:8px;border-radius:999px;background:var(--tg, var(--text-4));flex-shrink:0;display:inline-block}.tg-pill{display:inline-flex;align-items:center;gap:7px;min-width:0;max-width:100%;font-size:12px;font-weight:500;line-height:1.25;color:var(--text-1);padding:4px 10px 4px 8px;border-radius:999px;background:color-mix(in srgb,var(--tg) calc(var(--tg-alpha) * 100%),transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tg) 22%,transparent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tg-pill .tg-dot{background:var(--tg)}.tg-pill.is-sm{font-size:11px;padding:2px 8px 2px 6px;gap:6px}.tg-pill.tg-none{color:var(--text-3);background:transparent;box-shadow:inset 0 0 0 1px var(--line-2)}.tone-swatches{display:inline-flex;gap:4px}.tone-swatch{width:22px;height:22px;border-radius:7px;border:1px solid transparent;background:transparent;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.tone-swatch:hover{background:var(--bg-hover)}.tone-swatch.is-active{border-color:var(--line-3);background:var(--bg-2)}.tone-swatch .tg-dot{width:10px;height:10px}.code-badge{display:inline-flex;align-items:center;flex-shrink:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:10.5px;font-weight:500;letter-spacing:-.01em;color:var(--primary);background:var(--primary-soft);border-radius:5px;padding:1px 6px;line-height:1.5}.nf{position:relative;width:100%;min-width:0}.nf input,.nf textarea{width:100%;min-width:0;font-size:12.5px;color:var(--text-1);line-height:1.35;background:var(--bg-2);border:1px solid var(--line-2);border-radius:7px;padding:6px 8px;font-variant-numeric:tabular-nums;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease}.nf textarea{resize:vertical;min-height:34px;font-family:inherit}.nf.is-ghost input,.nf.is-ghost textarea{background:transparent;border-color:transparent}.nf.is-ghost:hover input,.nf.is-ghost:hover textarea{background:var(--bg-2);border-color:var(--line-1)}.nf input:focus,.nf textarea:focus{background:var(--bg-1)!important;border-color:var(--primary)!important;box-shadow:0 0 0 3px var(--primary-soft)}.nf input::placeholder,.nf textarea::placeholder{color:var(--text-4)}.nf.is-strong input{font-weight:550;font-size:13px}.nf.is-text input,.nf.is-text textarea{padding-left:6px}.nf.is-invalid input{color:var(--sem-danger)}.nf.is-invalid input::placeholder{color:var(--sem-danger);opacity:.8}.nf.is-invalid.is-ghost input{border-color:color-mix(in srgb,var(--sem-danger) 35%,transparent);border-style:dashed}.nf.is-disabled input,.nf.is-disabled textarea{cursor:default}.nf.is-disabled:hover input{background:transparent;border-color:transparent}.nf-suffix{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:10.5px;color:var(--text-4);pointer-events:none}.cell-btn{display:flex;align-items:center;gap:6px;width:100%;min-width:0;text-align:left;background:transparent;border:1px solid transparent;border-radius:8px;padding:4px 6px;cursor:pointer;color:var(--text-1);transition:background-color .12s ease,border-color .12s ease}.cell-btn:hover:not(:disabled){background:var(--bg-2);border-color:var(--line-1)}.cell-btn:focus-visible{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px var(--primary-soft)}.cell-btn:disabled{cursor:default}.cell-btn-caret{flex-shrink:0;margin-left:auto;color:var(--text-4);opacity:0;transition:opacity .12s ease}.cell-btn:hover .cell-btn-caret,.cell-btn:focus-visible .cell-btn-caret{opacity:1}.cell-btn.is-compact{width:auto;border-color:var(--line-1);background:var(--bg-2);padding:3px 8px 3px 4px}.cell-btn.is-compact .cell-btn-caret{opacity:1}.tp-btn{font-size:12.5px}.tp-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-1)}.tp-name.is-empty{color:var(--text-4);font-style:italic}.pp{position:fixed;z-index:1000;background:var(--bg-1);border:1px solid var(--line-2);border-radius:12px;box-shadow:var(--shadow-3);overflow:hidden;animation:bb-pop .12s ease-out}@keyframes bb-pop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.pp-search{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line-1);color:var(--text-3)}.pp-search input{flex:1;background:transparent;border:0;font-size:13px;color:var(--text-1)}.pp-list{overflow-y:auto;padding:4px 0}.pp-group{padding:10px 12px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-4)}.pp-item{display:flex;align-items:center;gap:10px;padding:7px 12px;cursor:pointer;color:var(--text-1)}.pp-item>svg{color:var(--primary);flex-shrink:0}.pp-item.is-active{background:var(--bg-hover)}.pp-item.is-selected{box-shadow:inset 2px 0 0 var(--primary)}.pp-main{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.pp-text{font-size:12.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pp-meta{font-size:12px;color:var(--text-2);white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}.pp-meta-sub{color:var(--text-4);font-size:11px}.pp-empty{padding:12px;font-size:12px;color:var(--text-3)}.pp-foot{display:flex;align-items:center;gap:6px;padding:8px 12px;border-top:1px solid var(--line-1);font-size:11.5px;color:var(--text-3)}.pp-foot a{color:var(--primary)}.pp-title{padding:10px 12px;border-bottom:1px solid var(--line-1);font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:6px}.row-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:1px;width:100%}.row-icon{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--text-3);width:26px;height:26px;border-radius:7px;cursor:pointer;flex-shrink:0;padding:0}.row-icon:hover:not(:disabled){background:var(--bg-hover);color:var(--text-1)}.row-icon:disabled{opacity:.3;cursor:default}.row-icon.is-danger:hover:not(:disabled){color:var(--sem-danger)}.save-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px}.save-mark.is-busy{width:7px;height:7px;margin:0 5px;background:var(--sem-warning);animation:bb-pulse 1s ease-in-out infinite}.save-mark.is-ok{color:var(--sem-success)}.save-mark.is-error{color:var(--sem-danger)}.bb{display:flex;flex-direction:column;gap:16px}.bb-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.bb-head-icon{width:30px;height:30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;color:var(--primary);background:var(--primary-soft)}.bb-head-icon.is-lg{width:44px;height:44px;border-radius:12px}.bb-head-sub{font-size:12.5px;color:var(--text-3);margin-top:6px;display:flex;gap:14px;flex-wrap:wrap;align-items:center}.bb-eyebrow{font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.bb-save{display:inline-flex;align-items:center;gap:6px}.bb-dot{width:7px;height:7px;border-radius:999px;background:var(--sem-success);display:inline-block}.bb-dot.is-busy{background:var(--sem-warning);animation:bb-pulse 1s ease-in-out infinite}.bb-dot.is-error{background:var(--sem-danger)}@keyframes bb-pulse{50%{opacity:.35}}.bb-link{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;padding:0;color:var(--primary);font-size:12px;cursor:pointer}.bb-link:hover{text-decoration:underline}.btn-sm{padding:5px 10px;font-size:12px;border-radius:8px}.bb{container-type:inline-size;container-name:bb;transition:margin-right .18s ease}.bb-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden;padding:0}.bb-sum-tile{min-width:0;padding:18px 20px;display:flex;flex-direction:column;gap:8px;text-align:left;background:transparent;border:0;color:inherit;font:inherit;border-left:1px solid var(--line-1)}.bb-sum-tile:first-child{border-left:0}.bb-sum-tile.is-click{cursor:pointer;transition:background-color .15s ease}.bb-sum-tile.is-click:hover:not(:disabled){background:var(--bg-hover)}.bb-sum-tile.is-click:disabled{cursor:default}.bb-sum-tile.is-active{background:var(--primary-soft)}.bb-sum-value{font-family:Bricolage Grotesque,sans-serif;font-weight:600;font-size:clamp(20px,2.6cqi,28px);line-height:1.1;letter-spacing:-.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}.bb-sum-value.is-neg{color:var(--sem-danger)}.bb-sum-value.is-warn{color:var(--sem-warning)}.bb-sum-value.is-ok{color:var(--sem-success);font-size:clamp(17px,2cqi,22px)}.bb-sum-of{font-size:.55em;color:var(--text-4);font-weight:500;letter-spacing:0}.bb-sum-sub{font-size:12px;color:var(--text-3);line-height:1.4;margin-top:auto}.bb-sum-sub.is-over{color:var(--sem-danger);font-weight:500}.bb-sum-sub.is-link{color:var(--primary);font-weight:500}.bb-ceiling{height:5px;border-radius:999px;background:var(--bg-3);overflow:hidden}.bb-ceiling-fill{display:block;height:100%;border-radius:999px;background:var(--primary);transition:width .3s ease}.bb-ceiling-fill.is-over{background:var(--sem-danger)}@container bb (max-width: 760px){.bb-sum{grid-template-columns:repeat(2,minmax(0,1fr))}.bb-sum-tile:nth-child(3){border-left:0}.bb-sum-tile:nth-child(n+3){border-top:1px solid var(--line-1)}.bb-sum-value{font-size:22px}}.bb-comp{padding:16px 18px 14px;display:flex;flex-direction:column}.bb-comp-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:0 6px 8px;flex-wrap:wrap}.bb-comp-head span{font-size:11px;color:var(--text-4)}.bb-comp-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;row-gap:2px}@container bb (max-width: 940px){.bb-comp-list{grid-template-columns:minmax(0,1fr)}}.bb-bar{display:grid;grid-template-columns:minmax(150px,1.3fr) minmax(60px,1fr) 88px 40px;align-items:center;gap:10px;width:100%;border:0;background:transparent;color:var(--text-1);padding:4px 6px;border-radius:7px;cursor:pointer;text-align:left;transition:background-color .12s ease,opacity .12s ease}.bb-bar:hover{background:var(--bg-hover)}.bb-bar.is-dim{opacity:.4}.bb-bar.is-active{background:var(--primary-soft)}.bb-bar-label{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:7px;min-width:0}.bb-bar-track{height:8px;border-radius:4px;background:var(--bg-2);overflow:hidden}.bb-bar-fill{display:block;height:100%;border-radius:0 4px 4px 0;background:var(--primary);transition:width .3s ease}.bb-bar-value{font-size:12px;text-align:right;font-variant-numeric:tabular-nums}.bb-bar-share{font-size:11px;text-align:right;color:var(--text-3);font-variant-numeric:tabular-nums}.bb-notices{display:flex;flex-direction:column;gap:8px}.bb-notice{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:12px;font-size:12.5px;color:var(--text-2);background:var(--bg-1);border:1px solid var(--line-1)}.bb-notice>svg{flex-shrink:0;color:var(--text-3)}.bb-notice>span{flex:1;min-width:0}.bb-notice.is-warn{background:var(--sem-warning-bg);border-color:var(--sem-warning-ring);color:var(--text-1)}.bb-notice.is-warn>svg{color:var(--sem-warning)}.bb-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.bb-toolbar-left,.bb-toolbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.bb-seg{display:inline-flex;padding:3px;gap:2px;background:var(--bg-2);border:1px solid var(--line-1);border-radius:10px}.bb-seg button{border:0;background:transparent;color:var(--text-2);font-size:12px;padding:5px 10px;border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.bb-seg button:hover:not(:disabled){color:var(--text-1)}.bb-seg button:disabled{opacity:.4;cursor:default}.bb-seg button.is-active{background:var(--bg-1);color:var(--text-1);box-shadow:0 1px 2px #0000001f;font-weight:500}.bb-seg-count{font-size:10.5px;color:var(--text-4);font-variant-numeric:tabular-nums}.bb-search{display:inline-flex;align-items:center;gap:6px;background:var(--bg-2);border:1px solid var(--line-1);border-radius:9px;padding:5px 8px;color:var(--text-3)}.bb-search:focus-within{border-color:var(--primary)}.bb-search input{border:0;background:transparent;font-size:12.5px;color:var(--text-1);width:170px}.bb-search .row-icon{width:18px;height:18px}.bb-chip-filter{display:inline-flex;align-items:center;gap:2px}.bb-table-wrap{overflow:auto;max-height:74vh;position:relative;transition:opacity .2s ease}.bb-table-wrap.is-locked{opacity:.55;pointer-events:none}.bb-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:1720px;font-size:12.5px}.bb-table th{position:sticky;top:0;z-index:2;background:var(--bg-1);padding:0 8px;height:34px;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);text-align:left;white-space:nowrap;border-bottom:1px solid var(--line-1)}.bb-table .bb-th-band th{height:26px;top:0;border-bottom:0;font-size:10px;letter-spacing:.08em;color:var(--text-4);padding-top:8px}.bb-table thead tr:nth-child(2) th{top:26px}.bb-table .band-sale,.bb-table .band-cost{text-align:center}.bb-table .band-sale{box-shadow:inset 0 -2px color-mix(in srgb,var(--primary) 55%,transparent);color:var(--text-2)}.bb-table .band-cost{box-shadow:inset 0 -2px 0 var(--line-3);color:var(--text-2)}.bb-table th.num,.bb-table td.num{text-align:right}.bb-table td{padding:6px 8px;border-bottom:1px solid var(--line-1);vertical-align:middle;background:var(--bg-1)}.bb-table .is-cost{background-image:linear-gradient(var(--cost-bg),var(--cost-bg))}.bb-row td{transition:background-color .12s ease}.bb-row:hover td{background-color:color-mix(in srgb,var(--bg-1) 94%,var(--text-1))}.bb-row.is-open td{border-bottom-color:transparent}.bb-idx{text-align:center;color:var(--text-4);font-size:11px;font-variant-numeric:tabular-nums;box-shadow:inset 3px 0 0 transparent}.bb-row.needs-review .bb-idx{box-shadow:inset 3px 0 0 var(--row-review);color:var(--row-review);font-weight:600}.bb-row.is-pending .bb-idx{box-shadow:inset 3px 0 0 var(--sem-danger);color:var(--sem-danger)}.bb-concept{padding-top:7px!important;padding-bottom:7px!important}.bb-meta{display:flex;align-items:center;gap:8px;margin:1px 0 0;padding:2px 7px;min-width:0;max-width:100%;font:inherit;font-size:11px;color:var(--text-4);background:transparent;border:0;border-radius:6px;cursor:pointer;text-align:left}.bb-meta:hover{background:var(--bg-hover);color:var(--text-3)}.bb-meta-review{flex-shrink:0;color:var(--row-review);font-weight:600}.bb-meta-review.is-danger{color:var(--sem-danger)}.bb-has-note{display:inline-flex;color:var(--primary);flex-shrink:0}.bb-row.is-selected td{background-color:color-mix(in srgb,var(--bg-1) 90%,var(--primary))!important}.bb-row.is-selected .bb-idx{box-shadow:inset 3px 0 0 var(--primary);color:var(--primary);font-weight:600}.bb-actions-wrap{display:flex;align-items:center;justify-content:flex-end;gap:2px}.bb-actions-wrap .row-actions{width:auto}.bb-open{color:var(--text-4)}.bb-open.is-on{background:var(--primary-soft);color:var(--primary)}.bb-origin{display:inline-flex;align-items:center;gap:5px;flex-shrink:0;color:var(--text-3)}.bb-origin:before{content:"";width:5px;height:5px;border-radius:999px;background:var(--text-4)}.bb-origin.is-pliego:before{background:var(--sem-success)}.bb-origin.is-implicito:before{background:var(--sem-warning)}.bb-origin.is-manual:before{background:var(--primary)}.bb-src{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bb-total{font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums;padding-right:12px!important}.bb-margin{font-size:11.5px;color:var(--text-3);font-variant-numeric:tabular-nums}.bb-margin.is-neg{color:var(--sem-danger);font-weight:600}.money-cell{display:flex;align-items:center;gap:4px}.money-cell .nf{flex:1}.money-cell .reset{width:20px;height:20px;opacity:0}.bb-row:hover .money-cell .reset,.money-cell .reset:focus-visible{opacity:1}.money-stale{font-size:10.5px;color:var(--sem-warning);margin-top:1px;padding-right:8px;white-space:nowrap}.src-dot{width:7px;height:7px;border-radius:999px;flex-shrink:0;display:inline-block;background:var(--text-4)}.src-dot.is-tarifario{background:var(--sem-info)}.src-dot.is-estimacion{background:var(--sem-warning)}.src-dot.is-calculado{background:transparent;box-shadow:inset 0 0 0 1.5px var(--text-4)}.src-dot.is-manual{background:var(--primary)}.src-dot.is-pendiente{background:var(--sem-danger)}.src-dot.is-stale{background:var(--sem-warning);box-shadow:0 0 0 2px var(--sem-warning-bg)}.bb-actions-cell{padding-left:2px!important;padding-right:6px!important}.bb-row .row-actions{opacity:0;transition:opacity .12s ease}.bb-row:hover .row-actions,.bb-row .row-actions:focus-within{opacity:1}.bb-group-row td{background:var(--bg-2);border-bottom:1px solid var(--line-1);height:40px;padding-top:4px;padding-bottom:4px}.bb-group-row .bb-total{font-size:13px}.bb-group-toggle{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--text-2);cursor:pointer;padding:2px 4px;border-radius:6px;max-width:100%}.bb-group-toggle:hover{color:var(--text-1)}.bb-group-count{font-size:11px;color:var(--text-4);font-variant-numeric:tabular-nums}.bb-group-share{font-size:11.5px;color:var(--text-4)}.bb-add-row td{padding:2px 8px 6px;border-bottom:1px solid var(--line-1)}.bb-add-btn{display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--text-4);font-size:11.5px;cursor:pointer;padding:3px 6px;border-radius:6px}.bb-add-btn:hover{color:var(--primary);background:var(--primary-soft)}.bb-foot td{position:sticky;bottom:0;z-index:2;background:var(--bg-1);border-top:1px solid var(--line-2);border-bottom:0;font-weight:600;height:44px}.bb-foot .bb-total{font-size:14px}.bb-empty-row{text-align:center;padding:28px!important;color:var(--text-3)}.bb-empty{text-align:center;padding:44px 24px;display:flex;flex-direction:column;align-items:center}.bb-empty p{font-size:13px;color:var(--text-3);margin:8px auto 18px;max-width:560px;line-height:1.55}.bb-bottom{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.bb-note{padding:18px 20px;font-size:12.5px;color:var(--text-2);line-height:1.6}.bb-note-title{font-size:13px;font-weight:600;margin-bottom:8px;color:var(--text-1);display:flex;align-items:center;gap:6px}.bb-note ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}.bb-note p{margin:0 0 6px}.bb-note a{color:var(--primary)}.bb-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:11.5px;color:var(--text-3)}.bb-legend>span{display:inline-flex;align-items:center;gap:6px}.bb-shimmer{position:relative;overflow:hidden}.bb-shimmer:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.1) 50%,transparent 80%);animation:bb-shimmer 1.8s linear infinite;pointer-events:none}@keyframes bb-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media (min-width: 900px){.bb-stick-1,.bb-stick-2{position:sticky;z-index:1}.bb-table th.bb-stick-1,.bb-table th.bb-stick-2,.bb-foot td.bb-stick-1,.bb-foot td.bb-stick-2{z-index:3}.bb-stick-1{left:0}.bb-stick-2{left:44px;box-shadow:1px 0 0 var(--line-1)}}@container bb (max-width: 900px){.bb-toolbar{align-items:stretch}.bb-toolbar-left,.bb-toolbar-right{width:100%}.bb-toolbar-right .bb-search{flex:1}.bb-toolbar-right .bb-search input{width:100%}.bb-seg{max-width:100%;overflow-x:auto}}.tf-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:22px}.tf-kpi{border:1px solid var(--line-1);border-radius:14px;background:var(--bg-1);padding:16px 18px;text-align:left;color:inherit;font:inherit;min-width:0}.tf-kpi.is-click{cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.tf-kpi.is-click:hover:not(:disabled){border-color:var(--line-2)}.tf-kpi.is-click:disabled{cursor:default}.tf-kpi.is-active{border-color:var(--primary);background:var(--primary-soft)}.tf-kpi-label{font-size:10.5px;font-weight:600;letter-spacing:.08em;color:var(--text-3);text-transform:uppercase}.tf-kpi-value{font-family:Bricolage Grotesque,sans-serif;font-weight:600;font-size:28px;letter-spacing:-.03em;margin-top:8px;line-height:1.1}.tf-kpi-value.is-text{font-size:20px}.tf-kpi-sub{font-size:11.5px;color:var(--text-3);margin-top:6px;display:flex;align-items:center;gap:4px;flex-wrap:wrap}.tf-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.tf-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tf-check{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-2);cursor:pointer}.tf-groups{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.tf-group-chip{border:1px solid var(--line-1);background:var(--bg-1);color:var(--text-2);border-radius:999px;padding:4px 11px;font-size:12px;cursor:pointer;display:inline-flex;gap:6px;align-items:center}.tf-group-chip span{font-size:10.5px;color:var(--text-4);font-variant-numeric:tabular-nums}.tf-group-chip:hover{border-color:var(--line-2);color:var(--text-1)}.tf-group-chip.is-active{background:var(--primary-soft);border-color:transparent;color:var(--text-1)}.tf-table-wrap{overflow:auto;max-height:72vh}.tf-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:1080px;font-size:12.5px}.tf-table th{position:sticky;top:0;z-index:2;background:var(--bg-1);padding:0 10px;height:38px;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);text-align:left;border-bottom:1px solid var(--line-1);white-space:nowrap}.tf-table th.num,.tf-table td.num{text-align:right}.tf-table td{padding:6px 10px;border-bottom:1px solid var(--line-1);vertical-align:middle}.tf-table .is-cost{background-image:linear-gradient(var(--cost-bg),var(--cost-bg))}.tf-row:hover td{background-color:var(--bg-hover)}.tf-row.is-archived td{opacity:.5}.tf-row .row-actions{opacity:.35;transition:opacity .12s ease}.tf-row:hover .row-actions,.tf-row .row-actions:focus-within{opacity:1}.tf-group-row td{background:var(--bg-2);padding:0 10px;height:34px;border-bottom:1px solid var(--line-1);position:sticky;top:38px;z-index:1}.tf-group-toggle{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--text-1);font-size:12px;font-weight:600;cursor:pointer;padding:0}.tf-group-toggle span{font-weight:400;color:var(--text-4);font-size:11px}.tf-desc{display:block;width:100%;text-align:left;border:0;background:transparent;padding:0 7px;margin-top:1px;font-size:11.5px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:text}.tf-desc:hover{color:var(--text-2)}.tf-desc-edit{margin-top:2px}.tf-desc-edit textarea{font-size:11.5px!important;color:var(--text-2)!important}select.tf-unit{width:100%;font-size:12px;padding:5px 22px 5px 8px!important;border-color:transparent!important;background-color:transparent!important;border-radius:7px!important;background-size:4px 4px,4px 4px!important;background-position:calc(100% - 12px) calc(50% - 1px),calc(100% - 8px) calc(50% - 1px)!important;background-image:none!important}select.tf-unit:hover:not(:disabled),select.tf-unit:focus{border-color:var(--line-1)!important;background-color:var(--bg-2)!important;background-image:linear-gradient(45deg,transparent 50%,var(--text-3) 50%),linear-gradient(135deg,var(--text-3) 50%,transparent 50%)!important}.tf-margin{font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums}.tf-margin.is-neg{color:var(--sem-danger);font-weight:600}.tf-missing{display:inline-flex;font-size:10.5px;font-weight:600;color:var(--sem-warning);background:var(--sem-warning-bg);border-radius:999px;padding:2px 8px}.tf-empty{text-align:center;padding:32px!important;color:var(--text-3)}.tf-legend{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:12px;font-size:11.5px;color:var(--text-3)}.tf-legend>span{display:inline-flex;align-items:center;gap:6px}.tf-tags{padding:6px 0}.tf-tag-row{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr) auto;gap:16px;align-items:center;padding:10px 18px;border-bottom:1px solid var(--line-1)}.tf-tag-row.is-new{background:var(--bg-2)}.tf-tag-name{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}.tf-tag-count{font-size:11px;color:var(--text-4);padding-left:4px}.tf-add-row{display:flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--primary);font-size:12.5px;padding:12px 18px;cursor:pointer;width:100%}.tf-add-row:hover:not(:disabled){background:var(--bg-hover)}.tf-add-row:disabled{opacity:.4;cursor:default}.tf-input{width:100%;background:var(--bg-2);border:1px solid var(--line-2);border-radius:9px;padding:8px 10px;font-size:13px;color:var(--text-1);font-family:inherit}.tf-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.tf-input.mono{font-family:JetBrains Mono,ui-monospace,monospace;font-size:12.5px}.tf-input.is-invalid{border-color:var(--sem-danger)}.tf-modal{width:640px;padding:0}.tf-modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:22px 24px 16px;border-bottom:1px solid var(--line-1)}.tf-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:18px 24px}.tf-field{display:flex;flex-direction:column;gap:6px;min-width:0}.tf-field>span{font-size:11px;font-weight:600;color:var(--text-3);letter-spacing:.02em}.tf-field>span em{font-weight:400;font-style:normal;color:var(--text-4)}.tf-field .nf input{padding:8px 10px;font-size:13px;border-radius:9px}.tf-error{font-size:11px;color:var(--sem-danger);font-style:normal}.tf-units{display:flex;flex-wrap:wrap;gap:4px}.tf-units button{border:1px solid var(--line-2);background:transparent;color:var(--text-2);border-radius:8px;padding:5px 9px;font-size:12px;cursor:pointer}.tf-units button.is-active{background:var(--primary-soft);border-color:transparent;color:var(--text-1);font-weight:500}.tf-tagbox{border:1px solid var(--line-2);border-radius:9px;padding:3px;background:var(--bg-2)}.tf-modal-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 24px;border-top:1px solid var(--line-1);background:var(--bg-2);border-radius:0 0 18px 18px;flex-wrap:wrap}@media (max-width: 899px){.tf-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.tf-tag-row{grid-template-columns:minmax(0,1fr)}.tf-form{grid-template-columns:repeat(2,minmax(0,1fr))}.tf-form>*{grid-column:span 2!important}}@media (prefers-reduced-motion: reduce){.bb-shimmer:after,.bb-dot.is-busy,.pp,.save-mark.is-busy{animation:none}}.bd{display:flex;flex-direction:column;min-width:0;background:var(--bg-1)}.bd.is-docked{border:1px solid var(--line-1);border-radius:16px;overflow:hidden;position:sticky;top:12px;max-height:74vh;animation:bd-in .18s cubic-bezier(.16,1,.3,1)}.bd.is-inline{border-top:1px solid var(--line-1);border-bottom:2px solid var(--primary-soft)}.bd.is-inline .bd-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px 28px;align-items:start;overflow:visible}.bd.is-inline .bd-body>.bd-alert,.bd.is-inline .bd-body>.bd-money{grid-column:1 / -1}.bd.is-inline .bd-head{flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px 16px}.bd.is-inline .bd-head-row{order:3;margin-left:auto}.bd.is-inline .bd-title{flex:1 1 320px;min-width:0;order:1}.bd.is-inline .bd-chips{order:2}@keyframes bd-in{0%{transform:translate(12px);opacity:0}to{transform:none;opacity:1}}.bb-split{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}.bb-split.has-panel{grid-template-columns:minmax(0,1fr) minmax(380px,420px)}.bb-table-wrap:has(.bb-inline-row){max-height:none}.bb-inline-row>td{padding:0!important;background:var(--bg-2)!important;border-bottom:1px solid var(--line-1)}.bb-inline{position:sticky;left:0;box-sizing:border-box;padding:4px 0 0}.bb-inline .bd{border-radius:0;background:var(--bg-1);box-shadow:inset 3px 0 0 var(--primary)}.bd-head{padding:16px 20px 14px;border-bottom:1px solid var(--line-1);display:flex;flex-direction:column;gap:10px}.bd-head-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.bd-pos{font-size:11.5px;color:var(--text-3);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bd-nav{display:flex;gap:4px;flex-shrink:0}.bd-icon{width:32px;height:32px;border-radius:8px;border:1px solid var(--line-2);background:var(--bg-1);color:var(--text-2);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.bd-icon:hover:not(:disabled){background:var(--bg-2);color:var(--text-1)}.bd-icon:disabled{opacity:.35;cursor:default}.bd-icon.is-plain{border-color:transparent}.bd-title .nf textarea{resize:none;min-height:0;field-sizing:content;max-height:3.2em;overflow:hidden}.bd-title .nf input,.bd-title .nf textarea{font-family:Bricolage Grotesque,sans-serif;font-size:19px!important;font-weight:600;letter-spacing:-.02em;padding:4px 6px;margin-left:-6px;width:calc(100% + 6px)}.bd-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.bd-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:500;padding:2px 9px;border-radius:999px;background:var(--bg-2);color:var(--text-2);line-height:1.5}.bd-chip.is-pliego{background:var(--sem-success-bg);color:var(--sem-success)}.bd-chip.is-implicito,.bd-chip.is-estimacion{background:var(--sem-warning-bg);color:var(--sem-warning)}.bd-chip.is-manual{background:var(--primary-soft);color:var(--primary)}.bd-chip.is-tarifario{background:var(--sem-info-bg);color:var(--sem-info)}.bd-chip.is-pendiente{background:var(--sem-danger-bg);color:var(--sem-danger)}.bd-chip.is-ok{background:var(--sem-success-bg);color:var(--sem-success)}.bd-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:18px 20px 24px;display:flex;flex-direction:column;gap:22px;overscroll-behavior:contain}.bd-body>*{flex-shrink:0}.bd-alert{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;font-size:12.5px;line-height:1.45;background:var(--sem-warning-bg);color:var(--text-1);border:1px solid var(--sem-warning-ring)}.bd-alert>svg{color:var(--sem-warning);flex-shrink:0}.bd-alert>span{flex:1;min-width:0}.bd-alert.is-danger{background:var(--sem-danger-bg);border-color:var(--sem-danger-ring)}.bd-alert.is-danger>svg{color:var(--sem-danger)}.bd-alert.is-soft{margin-top:2px}.bd-money{border:1px solid var(--line-2);border-radius:14px;overflow:hidden}.bd-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.bd-kpis>div{padding:12px 14px;display:flex;flex-direction:column;gap:4px;border-left:1px solid var(--line-1);min-width:0}.bd-kpis>div:first-child{border-left:0}.bd-kpis span{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.bd-kpis strong{font-family:Bricolage Grotesque,sans-serif;font-weight:600;font-size:18px;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bd-kpis strong.is-neg{color:var(--sem-danger)}.bd-formula{padding:10px 14px;background:var(--bg-2);border-top:1px solid var(--line-1);display:flex;flex-direction:column;gap:4px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11.5px;color:var(--text-2)}.bd-formula>div{display:flex;gap:10px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bd-formula em{font-style:normal;color:var(--text-4);width:44px;flex-shrink:0;font-family:Inter,sans-serif;font-size:11px}.bd-section{display:flex;flex-direction:column;gap:10px}.bd-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.bd-section-head h3{margin:0;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.bd-doc{display:flex;gap:12px;align-items:center;padding:10px 12px;border-radius:12px;border:1px solid var(--line-1);background:var(--bg-1)}.bd-doc-icon{width:32px;height:32px;flex:0 0 32px;border-radius:8px;background:var(--bg-2);color:var(--text-3);display:inline-flex;align-items:center;justify-content:center}.bd-doc-icon.is-pdf{background:var(--sem-danger-bg);color:var(--sem-danger)}.bd-doc-text{display:flex;flex-direction:column;gap:1px;min-width:0}.bd-doc-text strong{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bd-doc-text span{font-size:12px;color:var(--text-3)}.bd-text{margin:0;font-size:13px;line-height:1.6;color:var(--text-2)}.bd-muted{margin:0;font-size:12px;line-height:1.5;color:var(--text-3)}.bd-calc{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.bd-token{padding:4px 10px;border-radius:8px;background:var(--bg-2);font-size:12.5px;color:var(--text-1);font-variant-numeric:tabular-nums}.bd-token.is-result{background:var(--primary-soft);color:var(--primary);font-weight:600}.bd-op{color:var(--text-4);font-size:13px}.bd-tariff{border:1px solid var(--line-2);border-radius:10px;padding:3px;background:var(--bg-2)}.bd-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}.bd-field{display:flex;flex-direction:column;gap:6px;min-width:0}.bd-field>span{font-size:11.5px;font-weight:500;color:var(--text-3);display:flex;align-items:center;justify-content:space-between;gap:6px}.bd-field .nf input{padding:8px 10px;font-size:13px;border-radius:9px}.bd-tagbox{border:1px solid var(--line-2);border-radius:9px;padding:2px;background:var(--bg-2);min-height:37px;display:flex;align-items:center}.bd-reset{border:0;background:transparent;padding:0;color:var(--primary);font-size:11px;cursor:pointer}.bd-reset:hover{text-decoration:underline}.bd-note .nf textarea{background:var(--bg-2);border-color:var(--line-2);font-size:13px;padding:9px 11px;border-radius:10px}.bd-foot{padding:12px 20px;border-top:1px solid var(--line-1);display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--bg-1)}.bd-foot .btn{display:inline-flex;align-items:center;gap:6px}.bd-danger:hover{color:var(--sem-danger)!important;border-color:var(--sem-danger-ring)!important}@media (max-width: 640px){.bd-fields{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion: reduce){.bd{animation:none}}
