:root{--bg: #eef1f8;--card: rgba(255, 255, 255, .82);--text: #141a2b;--muted: #5f6880;--line: rgba(20, 26, 43, .09);--accent: #f26b1d;--accent-dark: #d4530b;--accent-soft: #fff0e5;--accent-2: #7c4dff;--accent-3: #12b5cb;--grad: linear-gradient(135deg, #ff8a3d 0%, #f2441d 45%, #c2307a 100%);--grad-cool: linear-gradient(135deg, #7c4dff 0%, #12b5cb 100%);--shadow: 0 1px 2px rgba(20, 26, 43, .04), 0 8px 28px -12px rgba(20, 26, 43, .18);--shadow-lg: 0 24px 60px -24px rgba(36, 20, 80, .35);--ok: #1f8a4c;--ok-soft: #e6f5ec;--warn: #a76a00;--warn-soft: #fff6dd;--danger: #c0392b;--danger-soft: #fdecea;--info: #2563a8;--info-soft: #e8f0fb;--sidebar: #0f1324;--radius: 8px;font-family:Inter,Segoe UI,Roboto,system-ui,-apple-system,sans-serif;font-size:15px;color:var(--text);background:var(--bg);line-height:1.45}*{box-sizing:border-box}body{margin:0}h1{font-size:1.5rem;margin:0 0 .75rem}h2{font-size:1.2rem;margin:0 0 .5rem}h3{font-size:1.02rem;margin:1.1rem 0 .5rem}a{color:var(--info)}.muted{color:var(--muted)}.small{font-size:.85rem}.mono,code{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.strong{font-weight:600}.danger-text{color:var(--danger)}button,a.button{font:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:8px;padding:.5rem .9rem;cursor:pointer;transition:background .15s,border-color .15s}button:hover:not(:disabled),a.button:hover{border-color:#c8cdd6;background:#f9fafb}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-dark);border-color:var(--accent-dark)}button.danger{color:var(--danger);border-color:#f0c4be}button.danger:hover:not(:disabled){background:var(--danger-soft)}button.ghost{background:transparent;border-color:transparent;color:inherit}button.link{background:none;border:none;padding:.1rem .25rem;color:var(--info);text-decoration:underline}button.icon{padding:.35rem;border-color:transparent;background:transparent}button.icon.danger{color:var(--danger)}input,select,textarea{font:inherit;width:100%;padding:.5rem .65rem;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text)}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}input[type=checkbox]{width:auto;accent-color:var(--accent)}label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;font-weight:500}label.checkbox{flex-direction:row;align-items:center}.layout{display:grid;grid-template-columns:240px 1fr;grid-template-rows:auto 1fr;min-height:100vh}.topbar{grid-column:1 / -1;display:flex;align-items:center;gap:.75rem;padding:.7rem 1.25rem;background:var(--sidebar);color:#fff}.brand{display:flex;align-items:center;gap:.5rem;font-weight:700;font-size:1.1rem;color:var(--accent)}.brand span:first-of-type{color:#fff}.brand-dark span:first-of-type{color:var(--text)}.brand-sub{color:#aab2c0;font-weight:400;font-size:.85rem}.menu-toggle{display:none;color:#fff}.sidebar{background:var(--sidebar);color:#d5dae3;padding:1rem .75rem;display:flex;flex-direction:column;justify-content:space-between;gap:1rem}.sidebar nav{display:flex;flex-direction:column;gap:.2rem;min-height:0;overflow-y:auto}.sidebar nav a{display:flex;align-items:center;gap:.6rem;padding:.6rem .75rem;border-radius:8px;color:inherit;text-decoration:none}.sidebar nav a:hover{background:#ffffff12}.sidebar nav a.active{background:var(--accent);color:#fff}.sidebar-footer{display:flex;flex-direction:column;gap:.25rem;border-top:1px solid rgba(255,255,255,.1);padding-top:.75rem}.sidebar-footer .who{padding:0 .5rem .4rem;overflow-wrap:anywhere}.sidebar-footer .muted{color:#8f98a8}.sidebar-footer button.ghost{color:#d5dae3;justify-content:flex-start}.sidebar-footer button.ghost:hover{background:#ffffff12}.main{padding:1.5rem;min-width:0;display:flex;flex-direction:column;gap:1rem}.splash{display:grid;place-items:center;min-height:100vh;color:var(--muted)}.auth{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:1.5rem;background:var(--ink, #1a2136)}.auth-card{width:100%;max-width:420px;display:flex;flex-direction:column;gap:.85rem}.auth .link{color:#fff}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.25rem;min-width:0}.card.narrow,.narrow{max-width:480px;width:100%;display:flex;flex-direction:column;gap:.85rem}.page-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.5rem}.page-header h1{margin:0}.actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.filters input{flex:1 1 260px}.filters select{flex:0 1 200px}.empty{text-align:center;padding:2.5rem 1rem;color:var(--muted)}.empty h3{color:var(--text)}.banner{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start;padding:.7rem .9rem;border-radius:8px;border:1px solid transparent;margin:.25rem 0 .5rem;font-size:.92rem}.banner ul{margin:.4rem 0 0;padding-left:1.2rem}.banner-error{background:var(--danger-soft);border-color:#f3c3bd;color:#7d2117}.banner-warn{background:var(--warn-soft);border-color:#f1dc9c;color:#6b4700}.banner-info{background:var(--info-soft);border-color:#c7d9f2;color:#1c4a80}.banner-ok{background:var(--ok-soft);border-color:#b7e0c7;color:#145c33}.badge{display:inline-block;font-size:.75rem;font-weight:600;padding:.12rem .5rem;border-radius:4px;background:#eef0f4;color:var(--muted);margin-right:.25rem;white-space:nowrap}.badge-ok,.badge-current,.badge-published{background:var(--ok-soft);color:var(--ok)}.badge-warn,.badge-sample,.badge-draft{background:var(--warn-soft);color:var(--warn)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.tabs{display:inline-flex;flex-wrap:wrap;gap:.25rem;background:#eceef2;padding:.25rem;border-radius:6px}.tabs button{border:none;background:transparent;padding:.5rem 1rem}.tabs button.active{background:#fff;box-shadow:0 1px 3px #0000001a;font-weight:600}.tabs.compact button{padding:.35rem .75rem;font-size:.9rem}.chips{display:flex;flex-wrap:wrap;gap:.4rem;margin:.5rem 0;align-items:center}.chip{display:inline-flex;flex-direction:row;align-items:center;gap:.35rem;padding:.35rem .75rem;border-radius:4px;border:1px solid var(--line);background:#fff;font-size:.88rem;font-weight:500;cursor:pointer}.chip input{display:none}.chip-on,.chip.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-dark)}.chip-off{color:var(--muted)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{padding:.5rem .6rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-weight:600;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap}tr.clickable,tbody tr[class*=row-selected]{cursor:pointer}tr.clickable:hover{background:#fafbfc}tr.row-selected{background:var(--accent-soft)}tr.row-muted td{color:var(--muted)}tr.extra td{background:#fafbfc}tfoot td{font-weight:600}.row-actions{white-space:nowrap;text-align:right}td input,td select{min-width:90px;padding:.3rem .45rem}code.details{white-space:pre-wrap;word-break:break-word;color:var(--muted)}.calc-layout{display:grid;grid-template-columns:minmax(320px,440px) 1fr;gap:1rem;align-items:start}.calc-result{display:flex;flex-direction:column;gap:1rem;min-width:0}.form{display:flex;flex-direction:column;gap:.85rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.75rem}.extra-row{display:grid;grid-template-columns:1fr 110px auto;gap:.5rem;align-items:end;margin-bottom:.5rem}.save-bar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.save-bar input{flex:1 1 220px}.total-card{border-color:#f3c9a8;background:#fff}.range{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:.75rem;align-items:end;margin:.5rem 0 .75rem}.range>div{text-align:center}.range-base{background:var(--accent-soft);border-radius:6px;padding:.6rem}.range-value{font-weight:700;font-size:1.15rem;font-variant-numeric:tabular-nums}.range-value.big{font-size:1.7rem;color:var(--accent-dark)}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;margin:.75rem 0}.stat{background:#f8f9fb;border:1px solid var(--line);border-radius:8px;padding:.6rem .75rem}.stat-label{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.02em}.stat-value{font-weight:700;font-size:1.05rem;font-variant-numeric:tabular-nums}.stat-value.small{font-size:.9rem;font-weight:600}.stat-hint{font-size:.8rem;color:var(--muted)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.formula{background:#f8f9fb;border:1px dashed var(--line);border-radius:8px;padding:.75rem;white-space:pre-wrap;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.82rem;overflow-x:auto}.disclaimer{font-size:.85rem;color:var(--muted);border-left:3px solid var(--accent);padding-left:.75rem}.compare th:first-child,.compare td:first-child{position:sticky;left:0;background:var(--card)}.create-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;margin-top:.75rem;padding:.9rem;border:1px dashed var(--line);border-radius:8px}.create-form h3,.create-form .actions{grid-column:1 / -1;margin:0}.admin-table>button.ghost{margin-top:.6rem;color:var(--info)}.shares{display:flex;flex-direction:column;gap:.5rem}.shares-grid{display:flex;flex-direction:column;gap:.35rem}.share-row{display:grid;grid-template-columns:minmax(160px,2fr) 1fr 1fr auto;gap:.4rem;align-items:center}.temp-password{background:#fff;border:1px solid var(--line);padding:.15rem .45rem;border-radius:6px;font-size:1rem;-webkit-user-select:all;user-select:all}@media(max-width:1100px){.calc-layout{grid-template-columns:1fr}}@media(max-width:820px){.layout{grid-template-columns:1fr}.menu-toggle{display:inline-flex}.brand-sub{display:none}.sidebar{display:none;position:fixed;top:52px;left:0;bottom:0;width:min(280px,85vw);z-index:20;box-shadow:4px 0 18px #00000040}.sidebar.open{display:flex}.main{padding:.85rem}.card{padding:.9rem}.grid-2,.range{grid-template-columns:1fr}.range-value.big{font-size:1.45rem}.extra-row{grid-template-columns:1fr 90px auto}.share-row{grid-template-columns:1fr 1fr}}.reg-group h2{font-size:1rem;margin:1.25rem 0 .6rem}.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem}.module-card{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem;text-align:left;font:inherit;color:inherit;cursor:pointer}.module-card:hover{border-color:var(--accent)}.reg-toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.75rem 0}.reg-toolbar .search{flex:1 1 260px;min-width:0}.reg-layout{display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr);gap:.75rem;align-items:start}.reg-layout.no-tree{grid-template-columns:minmax(0,1fr)}.reg-tree{max-height:70vh;overflow:auto;padding:.5rem}.reg-main{min-width:0}.card.flush{padding:0}.reg-table td.wrap{min-width:260px}.reg-table td.num,.reg-table th.num,table.compact td.num{text-align:right;white-space:nowrap}.reg-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-top:.6rem}.pager{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center}.tree,.tree ul{list-style:none;margin:0;padding:0}.tree ul{padding-left:.9rem}.tree-row{display:flex;align-items:flex-start;gap:.2rem;border-radius:6px}.tree-row.active{background:#2563eb1f}.caret-btn{border:0;background:none;padding:.15rem .25rem;width:1.4rem;flex:none;cursor:pointer}.tree-name{border:0;background:none;text-align:left;padding:.15rem .25rem;font-size:.85rem;color:inherit;cursor:pointer;white-space:normal}.tree-pad{padding:.25rem .5rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;display:flex;align-items:flex-start;justify-content:center;padding:3vh 1rem;z-index:50;overflow:auto}.modal{background:var(--card);border-radius:var(--radius);width:min(1000px,100%);padding:1rem 1.25rem;box-shadow:0 10px 40px #0000004d}.modal-head{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start}.modal-head h2{margin:.2rem 0 0;font-size:1.1rem}.modal-body{display:flex;flex-direction:column;gap:.9rem;margin-top:.75rem}.crumbs{display:flex;flex-wrap:wrap;gap:.25rem .75rem;color:var(--muted)}.crumbs span+span:before{content:"› "}.attr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.6rem 1rem}.attr-grid .field,.field.full{display:flex;flex-direction:column;gap:.15rem;min-width:0}.attr-grid .field span,.field.full span{font-size:.78rem;color:var(--muted)}.attr-grid .field b,.field.full b{font-weight:500;overflow-wrap:anywhere}.attr-section h3{font-size:.95rem;margin:0 0 .4rem}.attr-list{margin:0;padding-left:1.1rem}@media(max-width:820px){.reg-layout{grid-template-columns:1fr}.reg-tree{max-height:40vh}.modal{padding:.85rem}}.modal-tools{display:flex;gap:8px;align-items:center;flex-shrink:0}.modal-head .badge{margin-top:6px;display:inline-block}.card-editor input,.card-editor textarea,.card-editor select{width:100%}.card-editor .field{display:flex;flex-direction:column;gap:4px}.card-editor .field>span{display:flex;justify-content:space-between;gap:8px}.edit-attr{margin-top:10px}.edit-attr.removed{opacity:.45}.edit-attr.removed input,.edit-attr.removed textarea{text-decoration:line-through}.edit-new{display:grid;grid-template-columns:1fr 2fr auto;gap:8px;margin-top:10px}.sticky-actions{position:sticky;bottom:-1px;padding:12px 0 4px;background:inherit;display:flex;gap:8px}.spacer{flex:1}td.clip{max-width:320px;overflow:hidden;text-overflow:ellipsis}@media(max-width:640px){.modal-head{flex-wrap:wrap}.edit-new{grid-template-columns:1fr}}:root{--ink: #0f1424;--ink-2: #1a2136;--line: #e3e6ec;--accent-soft: rgba(242, 107, 29, .1);--ease: cubic-bezier(.22, 1, .36, 1)}body{min-height:100vh;background:#f4f5f7;-webkit-font-smoothing:antialiased}h1{font-size:1.75rem;letter-spacing:-.02em}h2{letter-spacing:-.01em}.card,.glass{background:#fff;border:1px solid var(--line);box-shadow:0 1px 2px #0f14240f;border-radius:var(--radius)}.glass{padding:1.5rem}input,select,textarea{border-radius:6px;background:#fff;border-color:#d5d9e2;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}button{border-radius:4px;font-weight:500;transition:background .15s,border-color .15s,color .15s,transform .15s var(--ease)}button:active:not(:disabled){transform:translateY(1px)}button.primary{background:var(--accent);border-color:transparent;color:#fff}button.primary:hover:not(:disabled){background:#d95a12}button.primary.big{padding:.6rem 1.1rem}button.primary svg{transition:transform .2s var(--ease)}button.primary:hover:not(:disabled) svg{transform:translate(3px)}.badge{border-radius:4px}.topbar{background:var(--ink);border-bottom:1px solid rgba(255,255,255,.06);position:sticky;top:0;z-index:20}.brand-mark,.brand>svg{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:6px;background:var(--accent);color:#fff}.brand>svg{padding:5px}.brand-dark>svg{color:#fff}.sidebar{background:var(--ink)}.sidebar nav a{position:relative;border-radius:4px;transition:background .15s,color .15s}.sidebar nav a.active{background:#ffffff14;color:#fff}.sidebar nav a.active:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:2px;background:var(--accent)}.main{padding:1.75rem clamp(1rem,3vw,2.25rem);animation:fade-up .35s var(--ease) both}th{background:#f7f8fa}tr.clickable td{transition:background .12s}tr.clickable:hover td{background:var(--accent-soft)}.module-card{border-radius:var(--radius);transition:transform .2s var(--ease),box-shadow .2s,border-color .2s}.module-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0f142414;border-color:#f26b1d66}.modal-backdrop{background:#0a0c1e73;animation:fade-in .2s ease both}.modal{background:#fff;border-radius:8px;box-shadow:0 20px 50px #0f142440;animation:pop-in .25s var(--ease) both}.total-card{background:#fff;border-top:3px solid var(--accent)}.range-value.big{color:var(--accent)}.auth{background:radial-gradient(700px 420px at 15% 15%,rgba(242,107,29,.22),transparent 65%),var(--ink)}.auth-card{padding:2rem;background:#fff;border-radius:8px;box-shadow:0 20px 50px #00000059;animation:pop-in .4s var(--ease) both}.landing{color:var(--text);overflow-x:hidden}.landing-nav{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:1.5rem;padding:.85rem clamp(1rem,4vw,3rem);background:#0f1424eb;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.06);color:#fff}.landing-nav nav{display:flex;gap:1.5rem;margin-left:auto}.landing-nav nav a{position:relative;color:#b9c0d6;text-decoration:none;font-weight:500;transition:color .15s}.landing-nav nav a:after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease)}.landing-nav nav a:hover{color:#fff}.landing-nav nav a:hover:after{transform:scaleX(1)}.hero{position:relative;overflow:hidden;padding:clamp(3rem,8vw,6rem) clamp(1rem,4vw,3rem) clamp(5rem,10vw,8rem);color:#fff;background:var(--ink)}.hero:before{content:"";position:absolute;width:640px;height:640px;left:-160px;top:-220px;border-radius:50%;background:radial-gradient(closest-side,rgba(242,107,29,.32),transparent);animation:drift 18s ease-in-out infinite alternate;pointer-events:none}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:linear-gradient(180deg,#000 0%,transparent 85%);mask-image:linear-gradient(180deg,#000 0%,transparent 85%);animation:grid-pan 40s linear infinite;pointer-events:none}.hero-copy{position:relative;z-index:1;max-width:880px}.hero-copy>*{animation:fade-up .7s var(--ease) both}.hero-copy>:nth-child(2){animation-delay:.08s}.hero-copy>:nth-child(3){animation-delay:.16s}.hero-copy>:nth-child(4){animation-delay:.24s}.eyebrow{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .75rem;border-radius:4px;border:1px solid rgba(255,255,255,.16);font-size:.85rem;color:#d6dbe8}.eyebrow:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);animation:pulse 2.4s ease-in-out infinite}.hero h1{font-size:clamp(2.1rem,5.5vw,3.8rem);line-height:1.05;letter-spacing:-.03em;margin:1rem 0}.hero p{font-size:clamp(1rem,1.6vw,1.2rem);color:#b9c0d6;max-width:680px}.accent-text{position:relative;color:var(--accent);white-space:nowrap}.accent-text:after{content:"";position:absolute;left:0;right:0;bottom:.04em;height:.08em;background:var(--accent);transform-origin:left;animation:underline .8s .5s var(--ease) both}.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-top:2rem}.fact{padding:.9rem 1rem;border-radius:8px;border:1px solid rgba(255,255,255,.1);border-left:2px solid var(--accent);background:#ffffff08;display:flex;flex-direction:column;transition:background .2s,transform .2s var(--ease)}.fact:hover{background:#ffffff0f;transform:translateY(-2px)}.fact b{font-size:1.45rem;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.fact span{color:#9aa3ba;font-size:.85rem}.landing-section{padding:0 clamp(1rem,4vw,3rem);margin:3.5rem auto;max-width:1320px}.calc-section{margin-top:-4.5rem;position:relative;z-index:2}.calc-shell{padding:clamp(1rem,2.5vw,2rem);display:flex;flex-direction:column;gap:1rem;box-shadow:0 24px 60px #0f142424;animation:fade-up .8s .3s var(--ease) both}.calc-shell-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem}.calc-shell-head h2,.cta h2{display:flex;align-items:center;gap:.5rem;margin:0}.calc-result>*{animation:fade-up .45s var(--ease) both}.calc-placeholder{display:grid;place-items:center;text-align:center;gap:.25rem;padding:3rem 1.5rem;border:1.5px dashed #d5d9e2;border-radius:var(--radius);color:var(--accent);background:#fafbfc}.calc-placeholder svg{animation:float 4s ease-in-out infinite}.calc-placeholder h3{color:var(--text);margin:.5rem 0 0}.cta-inline{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem}.section-title{font-size:clamp(1.6rem,3.5vw,2.4rem);letter-spacing:-.02em;margin-bottom:.25rem}.section-lead{margin:0 0 1.75rem;font-size:1.05rem}.feature-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.feature{position:relative;overflow:hidden;transition:transform .25s var(--ease),box-shadow .25s,border-color .25s}.feature:after{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}.feature:hover{transform:translateY(-3px);box-shadow:0 12px 30px #0f142414;border-color:#d5d9e2}.feature:hover:after{transform:scaleX(1)}.feature h3{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:.9rem 0 .4rem}.feature p{margin:0;color:var(--muted);font-size:.93rem}.feature-icon{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:8px;color:var(--accent);background:var(--accent-soft);transition:background .25s,color .25s}.feature:hover .feature-icon{background:var(--accent);color:#fff}.cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;padding:clamp(1.25rem,3vw,2.25rem);background:var(--ink);border-color:var(--ink);color:#fff}.cta .muted{color:#9aa3ba}.cta p{margin:.35rem 0 0}.landing-foot{text-align:center;padding:2rem 1rem 2.5rem}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease)}.reveal.in{opacity:1;transform:none}.feature-grid .reveal:nth-child(4n+2){transition-delay:.06s}.feature-grid .reveal:nth-child(4n+3){transition-delay:.12s}.feature-grid .reveal:nth-child(4n+4){transition-delay:.18s}@keyframes fade-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px) scale(.98)}}@keyframes drift{to{transform:translate(220px,90px)}}@keyframes grid-pan{to{background-position:0 48px,48px 0}}@keyframes underline{0%{transform:scaleX(0)}}@keyframes pulse{50%{box-shadow:0 0 0 6px #f26b1d00;opacity:.6}0%,to{box-shadow:0 0 #f26b1d80}}@keyframes float{50%{transform:translateY(-6px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}@media(max-width:820px){.landing-nav{gap:.75rem}.landing-nav nav,.landing-nav .brand-sub{display:none}.landing-nav button{margin-left:auto}.facts{grid-template-columns:repeat(2,minmax(0,1fr))}.calc-section{margin-top:-3rem}.cta button{width:100%;justify-content:center}}.landing-nav .brand span:nth-of-type(2){color:#fff}fieldset{border:1px solid var(--line);border-radius:8px;background:#fafbfc}legend{padding:0 .35rem;font-weight:600}.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,660px);gap:clamp(1.5rem,3vw,3rem);align-items:center;max-width:1400px;margin:0 auto}.hero-grid .hero-copy h1{font-size:clamp(2.1rem,4.4vw,3.4rem)}.xray{margin:0;animation:fade-in .8s .2s both}.xray svg{display:block;width:100%;height:auto;overflow:visible}.x-el polygon,.x-el line,.x-el.x-face{transition:stroke .2s,fill .2s}.x-struct line{stroke:#ffffff8c;stroke-width:1.2;stroke-dasharray:1;animation:draw 1.1s var(--ease) both}.x-slab{fill:#ffffff0a;stroke:#ffffff59;animation:fade-in .6s both}.x-found polygon{fill:#ffffff14;stroke:#ffffff73}.x-pile{stroke:#ffffff59;stroke-dasharray:3 3}.x-roof polygon{fill:#ffffff1a;stroke:#ffffff80}.x-eng line{stroke:#fdba74;stroke-width:1.6;stroke-dasharray:4 3;opacity:.85}.x-fin polygon{fill:#ffffff0f;stroke:#ffffff40}.x-shadow{fill:#000;opacity:.55}.x-solid{transition:opacity .35s}.xray.peek .x-solid{opacity:.15}.x-solid polygon{stroke:#ffffff12;stroke-width:.8}.x-solid .r,.x-face.r{fill:url(#xr-face-r)}.x-solid .l,.x-face.l{fill:url(#xr-face-l)}.x-solid .t{fill:#4a5674}.x-plinth .r,.x-plinth .l{fill:#3b4255}.x-plinth .t{fill:#2f3647}.x-floor,.x-solid .x-roof{animation:rise .55s var(--ease) both}.x-win polygon{fill:url(#xr-glass);stroke:#ffffff2e;stroke-width:.6}.x-win polygon.lit{fill:url(#xr-lit);opacity:.9}.x-edge{stroke:#ffffff59;stroke-width:1}.x-canopy{fill:#5b6788;stroke:#fff3}.x-el.hot polygon,.x-el.hot line,.x-el.x-face.hot{stroke:var(--accent)}.x-el.hot polygon,.x-el.x-face.hot{fill:#f26b1d73}.x-scan{stroke:var(--accent);stroke-width:1.5;opacity:.5}.x-callout{cursor:default;animation:fade-in .5s both}.x-callout polyline{fill:none;stroke:#fff6;stroke-width:1;transition:stroke .2s}.x-callout.hot polyline{stroke:var(--accent)}.x-marker{r:9px;fill:var(--accent);stroke:var(--ink);stroke-width:2}.x-callout.hot .x-marker{animation:pulse 1.6s ease-in-out infinite}.x-marker-num{fill:#fff;font-size:10px;font-weight:700;text-anchor:middle;dominant-baseline:central;pointer-events:none}.x-name{fill:#b9c0d6;font-size:13px}.x-cost{fill:#fff;font-size:17px;font-weight:700}.x-share{fill:#9aa3ba;font-size:12px}.xray figcaption{margin-top:.5rem;text-align:center;color:#9aa3ba;font-size:.9rem}.xray figcaption b{color:#fff}.xray-legend{display:none}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}@keyframes draw{0%{stroke-dashoffset:1}}@media(max-width:1100px){.hero-grid{grid-template-columns:1fr}.xray{width:100%;max-width:680px;margin:0 auto}}@media(max-width:720px){.x-callout polyline,.x-label{display:none}.x-marker{r:15px}.x-marker-num{font-size:17px}.xray-legend{display:grid;grid-template-columns:1fr 1fr;gap:.5rem 1rem;margin:.75rem 0 0;padding:0;list-style:none;font-size:.85rem;color:#b9c0d6}.xray-legend li{display:flex;gap:.5rem}.xray-legend .n{flex:none;display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;font-size:.75rem;font-weight:700}.xray-legend b{display:block;color:#fff}}.brand-title{display:inline-flex;flex-direction:column;line-height:1.15}.brand-line{display:inline-flex;align-items:baseline;gap:8px}.brand-ver{font-size:11px;font-weight:400;color:inherit;opacity:.55;text-decoration:none;letter-spacing:.02em}.brand-ver:hover{opacity:.9}.changes-main{max-width:1100px;margin:0 auto;padding:32px 20px 64px}.timeline{list-style:none;margin:0;padding:0 0 0 22px;border-left:2px solid var(--line);display:grid;gap:18px}.timeline>li{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px;animation:fade-in .4s both}.timeline>li:before{content:"";position:absolute;left:-30px;top:18px;width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid var(--muted)}.timeline>li.latest:before{border-color:var(--accent);background:var(--accent)}.timeline-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.timeline h3{margin:8px 0 6px;font-size:16px}.timeline ul{margin:0;padding-left:18px;color:var(--muted)}.timeline ul li+li{margin-top:3px}.plan-summary{display:grid;gap:12px;margin-bottom:18px}.plan-bar{display:flex;height:8px;border-radius:4px;background:var(--line);overflow:hidden}.plan-bar .done{background:var(--ok)}.plan-bar .doing{background:var(--accent)}.plan-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.plan-tools input{flex:1 1 260px;max-width:420px}.plan-stages{display:grid;gap:10px}.plan-stage{padding:0}.plan-stage-head{all:unset;box-sizing:border-box;width:100%;display:flex;gap:12px;align-items:center;padding:12px 16px;cursor:pointer}.plan-stage-head:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.plan-stage-title{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.plan-progress{flex:none;width:120px;height:6px;border-radius:3px;background:var(--line);overflow:hidden}.plan-progress span{display:block;height:100%;background:var(--ok)}.plan-chevron{flex:none;transition:transform .2s;color:var(--muted)}.plan-stage.open .plan-chevron{transform:rotate(180deg)}.plan-modules{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px 24px;padding:4px 16px 16px 54px}.plan-module h4{margin:0 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.plan-module ul{list-style:none;margin:0;padding:0;display:grid;gap:5px}.plan-num{flex:none;width:26px;height:26px;border-radius:4px;display:grid;place-items:center;font-weight:700;font-size:13px;color:#fff;background:var(--ink, #0f1424)}.plan-count{white-space:nowrap}.plan-item{display:flex;gap:8px;align-items:flex-start;font-size:14px}.plan-item svg{flex:none;margin-top:2px}.plan-item.done svg{color:var(--ok)}.plan-item.doing svg{color:var(--accent)}.plan-item.next{color:var(--muted)}@media(max-width:640px){.plan-progress{display:none}.plan-modules{padding-left:16px}.brand-line .brand-sub{display:none}}.bim-page-head{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between}.bim-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.bim-item{all:unset;box-sizing:border-box;display:flex;gap:12px;align-items:flex-start;padding:14px 16px;background:var(--surface, #fff);border:1px solid var(--line);border-radius:8px;cursor:pointer;transition:border-color .15s,transform .15s}.bim-item:hover{border-color:var(--accent);transform:translateY(-1px)}.bim-item svg{color:var(--accent);flex:none}.bim-item>span{display:grid;gap:2px}.bim{padding:0;overflow:hidden}.bim-head{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;padding:14px 16px 10px}.bim-head h2{margin:0;font-size:18px}.bim-body{display:grid;grid-template-columns:1fr 300px;min-height:520px}.bim-view{position:relative;min-width:0;display:flex}.bim-stage{position:relative;flex:1;min-height:520px;background:#dfe6ee;touch-action:none}.bim-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#dfe6eee0;color:#334155;font-size:14px}.bim-view-pending{min-height:520px}.bim-spinner{width:40px;height:40px;border:4px solid #c3cfdc;border-top-color:#2f6fed;border-radius:50%;animation:bim-spin .8s linear infinite}.bim-spinner.small{width:14px;height:14px;border-width:2px}@keyframes bim-spin{to{transform:rotate(360deg)}}.bim-loading-chip{position:absolute;left:12px;bottom:12px;z-index:6;display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;background:#ffffffeb;box-shadow:0 2px 8px #0f172a26;font-size:12px;color:#334155}.bim-stage canvas{display:block;width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0}.bim-side{padding:12px 14px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:6px}.bim-side h4{margin:0 0 4px;font-size:13px;text-transform:uppercase;color:var(--muted)}.bim-cat{all:unset;box-sizing:border-box;display:grid;grid-template-columns:12px 1fr auto;gap:8px;align-items:center;padding:7px 8px;border-radius:4px;cursor:pointer;font-size:14px}.bim-cat:hover{background:#0000000a}.bim-cat.active{background:#ff7a1a1f;box-shadow:inset 3px 0 0 var(--accent)}.bim-cat span:last-child{white-space:nowrap;font-variant-numeric:tabular-nums}.bim-sys{display:grid;gap:2px;margin:0 0 6px 20px}.bim-cat.sub{font-size:13px;padding:5px 8px}.bim-spec{margin:8px 0 0;padding:8px;background:#0000000a;border-radius:4px}.bim-dot{width:12px;height:12px;border-radius:3px}.bim-level{display:grid;gap:4px;margin-top:8px}.bim-card{position:absolute;z-index:2;left:12px;top:12px;max-width:300px;background:#fffffff2;border-radius:8px;padding:12px 14px;box-shadow:0 6px 24px #0f14242e;display:grid;gap:2px}.bim-card dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:8px 0 0;font-size:13px}.bim-card dt{color:var(--muted)}.bim-card dd{margin:0;text-align:right;font-weight:600}.bim-card{max-height:calc(100% - 24px);overflow:auto}.bim-works{margin-top:10px;display:grid;gap:4px}.bim-works ul{margin:0;padding:0;list-style:none;display:grid;gap:6px;font-size:13px}.bim-works code{font-size:12px;color:var(--accent)}.bim-close{all:unset;position:absolute;right:10px;top:6px;cursor:pointer;font-size:20px;color:var(--muted)}.dwg{padding:0;overflow:hidden}.dwg-bar{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:0 16px 10px}.dwg-bar select{width:auto}.dwg-tools{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}.dwg-tools button{display:inline-flex;align-items:center;gap:4px}.dwg-scroll{overflow:auto;max-height:80vh;background:#e9ecf1;border-top:1px solid var(--line);border-bottom:1px solid var(--line);-webkit-overflow-scrolling:touch}.dwg-sheet{display:block;height:auto;max-width:none;margin:0 auto;background:#fff;-webkit-user-select:none;user-select:none}.dwg-prim,.dwg-row{cursor:pointer}.dwg-prim:hover rect,.dwg-prim:hover circle{stroke:var(--accent)}.dwg-row:hover rect:first-child{fill:#f26b1d1f}.dwg-foot{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;justify-content:space-between;padding:10px 16px 14px;font-size:14px}@media(max-width:860px){.bim-body{grid-template-columns:1fr}.bim-stage{min-height:360px}.bim-view{flex-direction:column}.bim-card{position:static;max-width:none;max-height:none;border-radius:0;box-shadow:none;border-top:1px solid var(--line)}.bim-side{border-left:0;border-top:1px solid var(--line)}.dwg-tools{margin-left:0}.dwg-scroll{max-height:70vh}}.method{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.ncs-analog{display:flex;flex-direction:column;gap:4px;flex:1 1 100%;min-width:0}.ncs-analog select{width:100%;min-width:0;text-overflow:ellipsis}.ncs-card{border-left:4px solid var(--accent)}.ncs-card .range-base{margin:8px 0}.ncs-card .badge{margin-left:6px}.assumptions{color:var(--warn);padding-left:18px}.formula{padding-left:18px}.bim-variant{display:flex;gap:6px}.bim-variant select{flex:1;min-width:0}.bim-regen{border:1px solid var(--border, #d0d5dd);background:transparent;border-radius:8px;padding:4px 10px;cursor:pointer;color:inherit}.bim-regen.wide{margin-top:8px}.bim-comp{align-self:stretch;width:100%;box-sizing:border-box;padding:0 16px 16px;margin-top:16px;overflow-x:auto}.bim-comp h3{font-size:15px;margin:0 0 8px}.bim-comp table{width:100%;border-collapse:collapse;font-size:13px}.bim-comp th,.bim-comp td{padding:6px 8px;border-bottom:1px solid var(--border, #e5e7eb);text-align:left;vertical-align:top}.bim-comp td:nth-child(n+3),.bim-comp th:nth-child(n+3){text-align:right;white-space:nowrap}.typical{margin-top:4px;font-size:12px;color:var(--muted, #6b7280)}.bim-cmp{margin-bottom:8px}.bim-cmp tbody tr{cursor:pointer}.bim-cmp tbody tr.on td{background:#fff4ec}.bim-src{display:inline-flex;gap:8px;margin-left:auto;flex-wrap:wrap}.bim-src label{cursor:pointer}.acts-lines input{width:110px;text-align:right}.acts-lines input.invalid{border-color:#d14343;background:#fff1f1}tr.selected td{background:#fff4ec}.acts-form{overflow-x:auto;margin-top:12px;border:1px solid #e5e7eb;border-radius:8px}.link-btn{background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer;white-space:nowrap}.lsr-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.lsr-actions{display:flex;flex-wrap:wrap;gap:8px}.lsr-table td,.lsr-table th{vertical-align:top}.lsr-section td{font-weight:600;background:#7f7f7f14}.lsr-total td{font-weight:600}.lsr-res td{background:#7f7f7f0a}@media(max-width:640px){.lsr-table{font-size:12px;min-width:760px}.lsr-actions{width:100%}.lsr-actions button{flex:1}}@media print{body *{visibility:hidden}.lsr-card,.lsr-card *{visibility:visible}.lsr-card{position:absolute;inset:0 auto auto 0;width:100%;box-shadow:none;border:0}.lsr-card .table-wrap{overflow:visible}.no-print{display:none!important}}.lsr-editor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.lsr-editor-grid label{display:flex;flex-direction:column;gap:4px;font-size:.9rem}.lsr-editor-grid select,.lsr-editor-grid input{width:100%;min-width:0}.lsr-search{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.lsr-search input{flex:1 1 220px;min-width:0}.lsr-hits{list-style:none;margin:8px 0 0;padding:0;max-height:260px;overflow-y:auto}.lsr-hits li{display:flex;gap:8px;align-items:flex-start;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border, #e5e7eb)}.lsr-edit-table input[type=number]{width:110px}.lsr-edit-table select{max-width:180px}.lsr-coef{display:inline-flex;gap:4px;align-items:center;margin:2px 4px 2px 0;font-size:.8rem}.lsr-coef-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:6px;margin-top:6px}.lsr-versions{list-style:none;padding:0;margin:0}.lsr-versions li{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--border, #e5e7eb)}@media(max-width:640px){.lsr-edit-table input[type=number]{width:80px}.lsr-hits li{flex-direction:column}}.supplied-pick{max-height:420px;overflow-y:auto;margin-bottom:16px}.supplied-pick input[type=number]{width:110px}.ks-form td.neg{color:#b91c1c;font-weight:600}.signing-steps{margin:0 0 8px;padding-left:20px}.signing-steps .sign-signed{color:var(--ok, #15803d)}.signing-steps .sign-rejected{color:var(--danger, #b91c1c)}.signing .hash,.ks-edo{word-break:break-all}.ks-edo{margin-top:10px;font-size:11px;border:1px solid #1d4ed8;color:#1d4ed8;padding:6px 8px}.materials-controls{display:grid;gap:12px;margin:12px 0}.materials-fields{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.materials-fields label{display:grid;gap:4px;font-size:13px}.ks-scroll{overflow-x:auto}@media(max-width:640px){.materials-fields>*{flex:1 1 100%}}.execdoc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:12px}.execdoc-grid label{display:flex;flex-direction:column;gap:4px}.execdoc-grid .wide{grid-column:1 / -1}.execdoc-lines{max-height:260px;overflow:auto;border:1px solid var(--border, #e5e7eb);border-radius:8px;padding:6px 10px;margin:8px 0 12px}.execdoc-lines .check{display:flex;gap:8px;align-items:flex-start;padding:3px 0}.warn-text{color:#b45309}.ok-text{color:#15803d}@media(max-width:640px){.execdoc-grid{grid-template-columns:1fr}}.vol-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;align-items:end;margin:12px 0}.vol-form label{display:grid;gap:4px;font-size:13px}.vol-form .vol-wide{grid-column:1 / -1}.vol-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.vol-entry{display:grid;gap:6px}.vol-head{display:flex;justify-content:space-between;gap:8px}.vol-qty{font-size:18px;font-weight:600}.vol-photos{display:flex;flex-wrap:wrap;gap:8px}.vol-photos figure{margin:0;font-size:11px}.vol-photos img{width:96px;height:96px;object-fit:cover;border-radius:6px;display:block}.vol-actions{display:flex;flex-wrap:wrap;gap:8px}@media(max-width:640px){.vol-list{grid-template-columns:1fr}.vol-actions>button,.vol-form>button{flex:1 1 100%;min-height:44px}}.ctl-kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin:12px 0}.ctl-kpis .card{margin:0}.ctl-kpis strong{display:block;font-size:1.25rem;margin-top:4px}.ctl-bar{height:6px;min-width:60px;border-radius:3px;background:var(--border, #e2e8f0);overflow:hidden;margin-top:4px}.ctl-bar span{display:block;height:100%;background:var(--accent, #2563eb)}.ctl-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.ctl-row>label{flex:1 1 160px}.ctl-notes p{margin:4px 0}.ctl-overdue td,.card.ctl-overdue{background:#dc26260f}.ctl-bind{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.ctl-history{display:flex;flex-direction:column;gap:4px}.nav-badge{margin-left:auto;min-width:20px;padding:0 6px;border-radius:10px;background:var(--danger, #dc2626);color:#fff;font-size:.75rem;line-height:20px;text-align:center}@media(max-width:640px){.ctl-kpis{grid-template-columns:1fr 1fr}.ctl-kpis strong{font-size:1rem}.ctl-row>label,.ctl-bind select{flex:1 1 100%;width:100%}}.ctl-form{display:flex;flex-direction:column;gap:12px}.ctl-form>label,.ctl-form textarea{width:100%}.ctl-form>button{align-self:flex-start}.sidebar nav .nav-group{display:flex;align-items:center;gap:6px;width:100%;margin:10px 0 2px;padding:6px 12px;border:0;border-radius:8px;background:none;cursor:pointer;font:inherit;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;text-align:left;color:#ffffff80}.sidebar nav .nav-group:hover,.sidebar nav .nav-group.has-active{color:#ffffffd9}.sidebar nav .nav-group:hover{background:#ffffff0f}.sidebar nav .nav-section:first-child .nav-group{margin-top:0}.sidebar nav .nav-section a{padding-left:22px}.nav-chevron{flex-shrink:0;transition:transform .15s}.nav-chevron.closed{transform:rotate(-90deg)}.nav-count{margin-left:auto;font-size:10px;opacity:.6}.sidebar nav a svg{flex-shrink:0}.bimlib-layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;align-items:start}.bimlib-aside{position:sticky;top:16px;display:grid;gap:10px}.bimlib-aside h3{margin:0;font-size:15px}.reg-table tr.selected td{background:#2563eb14}.element-preview{position:relative;width:100%;height:320px;border-radius:10px;overflow:hidden;background:#eef2f6;touch-action:none}.element-preview canvas{display:block;width:100%!important;height:100%!important}.element-preview-hint{position:absolute;left:10px;bottom:8px;pointer-events:none}.element-preview-error{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#b42318}.bim-card-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:18px}.bim-card-preview{display:grid;gap:8px;align-content:start}.bim-card-preview .element-preview{height:420px}.bim-upload{display:grid;gap:8px;margin-top:8px}.bim-upload input{width:100%}.bim-history{padding:6px 0;border-bottom:1px solid rgba(0,0,0,.06)}@media(max-width:1100px){.bimlib-layout{grid-template-columns:minmax(0,1fr) 300px}}@media(max-width:820px){.bimlib-layout{grid-template-columns:1fr}.bimlib-aside{display:none}.bim-card-grid{grid-template-columns:1fr}.bim-card-preview .element-preview{height:300px}}@media(max-width:640px){.bim-library .hide-sm{display:none}.bim-library .reg-toolbar select{flex:1 1 45%;min-width:0}}.bim-attrs{display:grid;gap:6px;margin:0}.bim-attrs>div{display:grid;grid-template-columns:minmax(110px,34%) minmax(0,1fr);gap:10px;padding:4px 0;border-bottom:1px solid rgba(0,0,0,.05)}.bim-attrs dt{color:#64748b;font-size:13px}.bim-attrs dd{margin:0;text-align:left;overflow-wrap:anywhere}.bim-card-attrs .attr-section h3{margin:0 0 6px}@media(max-width:1400px){.bim-library .hide-md{display:none}}@media(max-width:1200px){.bim-library .hide-lg{display:none}}.bim-lib-card{display:grid;gap:12px}.bim-lib-card-code{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.bim-lib-card dl.bim-attrs{display:grid;grid-template-columns:1fr}.bim-lib-card dl.bim-attrs dd{text-align:left;font-weight:500}[data-testid=bim-library-editor] #f-params{font-family:var(--mono, ui-monospace, monospace);font-size:13px}.draw-head,.draw-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}.draw-head input:first-child{flex:1 1 240px}.draw-head input[type=number]{width:80px;margin-left:4px}.draw-tools label,.draw-head label{display:inline-flex;flex-direction:row;align-items:center;gap:4px;margin:0}.draw-tools button{display:inline-flex;align-items:center;gap:4px}.draw-tools button.active{background:#f26b1d;color:#fff;border-color:#f26b1d}.draw-canvas{overflow:auto;max-height:75vh;border:1px solid #d8dde6;background:#eef1f5;outline:none}.draw-canvas svg{display:block;width:calc(var(--z, 1) * 100%);height:auto;background:#fff}.draw-canvas.drawing svg{touch-action:none;cursor:crosshair}@media(max-width:640px){.draw-tools button span{display:none}.draw-tools>select{flex:1 1 140px;min-width:0}}.gantt-toolbar{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin-bottom:8px}.gantt-toolbar .segmented{display:inline-flex;gap:4px}.gantt-toolbar .segmented button{padding:4px 10px}.gantt-scroll{overflow:auto;max-height:72vh;border:1px solid #e5e7eb;border-radius:6px;background:#fff;touch-action:pan-x pan-y}.gantt-row{display:flex;border-bottom:1px solid #f1f5f9}.gantt-row.selected{background:#fff7ed}.gantt-left{position:sticky;left:0;z-index:2;flex:none;background:#fff;border:0;border-right:1px solid #e5e7eb;border-radius:0;padding:0 8px;text-align:left;font-size:12px;color:inherit;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;font-weight:400}.gantt-row.selected .gantt-left{background:#fff7ed}.gantt-head{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid #e5e7eb}.gantt-head .gantt-left{z-index:4;display:flex;align-items:flex-end;padding-bottom:4px;color:#64748b}.gantt-group .gantt-left{font-weight:600;background:#f8fafc}.gantt-month{position:absolute;top:2px;font-size:11px;font-weight:600;white-space:nowrap;padding-left:3px;border-left:1px solid #cbd5e1}.gantt-tick{position:absolute;bottom:3px;font-size:10px;color:#64748b}.gantt-bar{position:absolute;top:9px;height:16px;background:#94a3b8;border-radius:3px;overflow:hidden}.gantt-bar.editable{cursor:grab;touch-action:none}.gantt-bar.crit{background:#fca5a5}.gantt-done{height:100%;background:#475569}.gantt-bar.crit .gantt-done{background:#dc2626}.gantt-handle{position:absolute;right:0;top:0;width:8px;height:100%;cursor:ew-resize;background:#00000026;touch-action:none}.gantt-base{position:absolute;top:27px;height:4px;background:#cbd5e1;border-radius:2px}.gantt-milestone{position:absolute;top:9px;width:16px;height:16px;background:#0f172a;transform:rotate(45deg);touch-action:none}.gantt-milestone.crit{background:#dc2626}.gantt-links{position:absolute;pointer-events:none;overflow:visible}.gantt-today,.gantt-marker{position:absolute;width:0;border-left:2px dashed #dc2626;pointer-events:none;z-index:1}.gantt-marker{border-left:2px solid #f97316}.gantt-legend{margin-top:6px}.gantt-key{display:inline-block;width:18px;height:8px;background:#475569;border-radius:2px;vertical-align:middle}.gantt-key.crit{background:#dc2626}.gantt-key.base{background:#cbd5e1;height:4px}.gantt-editor{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:10px}.gantt-toolbar label{display:inline-flex;align-items:center;gap:4px;margin:0}.exec-works{margin:8px 0}.exec-works input{width:100%;margin:6px 0}.exec-works-list{display:grid;gap:4px;max-height:240px;overflow:auto;font-size:.9em}.cad-ribbon{display:flex;flex-wrap:wrap;overflow-x:auto;margin-top:8px;border:1px solid #d8dde6;border-radius:6px 6px 0 0;background:#f5f7fa}.cad-panel{display:flex;flex:0 0 auto;flex-direction:column;border-right:1px solid #d8dde6}.cad-panel-body{display:flex;flex:1;align-items:stretch;gap:2px;padding:4px}.cad-panel-title{padding:1px 6px;background:#e9edf2;color:#5b6575;font-size:11px;text-align:center}.cad-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:58px;padding:4px 6px;border:1px solid transparent;border-radius:4px;background:transparent;color:inherit;font-size:11px;line-height:1.15}.cad-btn:hover:not(:disabled){border-color:#c8d1dd;background:#e3e9f1}.cad-btn.active{border-color:#f26b1d;background:#fde3d1}.cad-btn:disabled{opacity:.45}.cad-field{display:flex;flex-direction:column;justify-content:center;gap:4px;padding:0 4px;font-size:11px}.cad-field label{display:flex;flex-direction:row;align-items:center;gap:4px;margin:0}.cad-field select{max-width:200px;padding:2px 4px;font-size:12px}.cad-layer{display:flex;align-items:center;gap:4px}.cad-swatch{display:inline-block;flex:0 0 auto;width:12px;height:12px;border:1px solid #888}.cad-ribbon+.draw-canvas{border-top:none}.draw-canvas.drawing svg{cursor:none}.cad-cmd{border:1px solid #d8dde6;border-top:none;background:#fff;font-family:ui-monospace,Consolas,monospace;font-size:12px}.cad-log{min-height:1.4em;max-height:4.6em;padding:3px 8px;overflow:auto;border-bottom:1px solid #eef1f5;color:#5b6575}.cad-prompt{display:flex;align-items:center;gap:6px;padding:3px 8px}.cad-prompt>span{overflow:hidden;color:#334;text-overflow:ellipsis;white-space:nowrap}.cad-prompt b{color:#f26b1d}.cad-prompt input{flex:1;min-width:80px;padding:2px;border:none;outline:none;background:transparent;font:inherit}.cad-logbtn{padding:2px 4px;border:none;background:transparent}.cad-status{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:3px 6px;border:1px solid #d8dde6;border-top:none;border-radius:0 0 6px 6px;background:#e9edf2;font-size:12px}.cad-status button{padding:1px 8px;border:1px solid #c8d1dd;border-radius:3px;background:transparent;color:#7a8494;font-size:11px;font-weight:600}.cad-status button.on{border-color:#2b6cb0;background:#2b6cb0;color:#fff}.cad-coords{min-width:140px;font-family:ui-monospace,Consolas,monospace}.cad-status .muted{margin-left:auto}@media(max-width:640px){.cad-ribbon{flex-wrap:nowrap}.cad-btn{min-width:48px;font-size:10px}.cad-log{display:none}.cad-cmd.open .cad-log{display:block}.cad-prompt>span{max-width:45vw}.cad-coords{min-width:0}}.proc-scroll{overflow-x:auto}.proc-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:8px}.proc-head h3{margin:0;flex:1 1 200px}.proc-form{display:flex;flex-wrap:wrap;gap:8px 14px}.proc-form label{flex:1 1 160px}.proc-comment{display:block;margin:8px 0}.proc-comment input{width:100%}.proc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.proc-title{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;width:100%;background:none;border:0;padding:0;text-align:left;color:inherit;cursor:pointer;font-weight:400}.proc-unit{width:70px}.proc-qty{width:100px}.proc-check{display:inline-flex;flex-direction:row;align-items:center;gap:6px}.proc-best{background:#ecfdf3;font-weight:600}.nodes-lib{display:grid;grid-template-columns:minmax(200px,260px) 1fr;gap:12px;margin-top:8px}.nodes-list{display:grid;align-content:start;gap:4px;margin:0;padding:0;list-style:none}.nodes-list button{display:grid;gap:2px;width:100%;padding:6px 8px;border:1px solid #d8dde6;border-radius:6px;background:#fff;color:inherit;text-align:left}.nodes-list button.active{border-color:#f26b1d;background:#fde3d1}.nodes-card{min-width:0}.nodes-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.nodes-head h3{margin:0}.nodes-sol{margin:4px 0;padding-left:18px}.nodes-sheet{margin-top:8px;overflow:auto;border:1px solid #d8dde6}.nodes-sheet svg{display:block;width:100%;min-width:560px;height:auto;background:#fff}@media(max-width:760px){.nodes-lib{grid-template-columns:1fr}.nodes-list{display:flex;overflow-x:auto}.nodes-list li{flex:0 0 200px}}.sc-bad{color:#b42318;font-weight:600}.sc-ok{color:#067647}.sc-summary{display:flex;flex-wrap:wrap;gap:8px 24px;margin-bottom:12px}.dv-legend{display:flex;flex-wrap:wrap;gap:8px 16px;font-weight:600}.dv-add{color:#2a9d3f}.dv-del{color:#d62828}.dv-same{color:#6b7280}.dv-sheet{overflow:auto;border:1px solid var(--border, #e5e7eb);border-radius:8px;background:#fff}.dv-sheet svg{display:block;width:100%;height:auto;min-width:560px}.dv-table td:nth-child(2),.dv-table td:nth-child(3){text-align:center}.steel-board{display:grid;gap:12px;margin-top:12px}.steel-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.rm-board{display:grid;gap:12px;margin-top:12px}.rm-new,.rm-form,.rm-filters,.rm-comment{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.rm-form input:not([type=date]),.rm-form textarea{flex:1 1 240px;min-width:0}.rm-sheet{overflow:auto;border:1px solid var(--border, #e5e7eb);border-radius:8px;background:#fff;cursor:crosshair}.rm-sheet svg{display:block;width:100%;height:auto;min-width:560px}.rm-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.rm-closed td{opacity:.6}.rm-history ul{margin:4px 0;padding-left:18px;font-size:.9em}@media(max-width:640px){.rm-new>*,.rm-form>*,.rm-filters select{flex:1 1 100%}}.report-card h2{margin-top:20px}.report-total{font-size:1.6rem;font-weight:700}@media print{.report-card,.report-card *{visibility:visible}.report-card{position:absolute;inset:0 auto auto 0;width:100%;box-shadow:none;border:0}.report-card .proc-scroll{overflow:visible}}.tornado{display:grid;gap:6px;margin:12px 0}.tornado-row{display:grid;grid-template-columns:minmax(140px,240px) 1fr minmax(150px,auto);gap:10px;align-items:center;width:100%;padding:6px 4px;border:0;border-bottom:1px solid #eaecf0;background:none;text-align:left;cursor:pointer;font:inherit}.tornado-bar{position:relative;height:18px;background:#f2f4f7;border-radius:3px}.tornado-bar:after{content:"";position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:#475467}.tornado-neg,.tornado-pos{position:absolute;top:0;height:100%}.tornado-neg{right:50%;background:#12b76a}.tornado-pos{left:50%;background:#f04438}@media(max-width:640px){.tornado-row{grid-template-columns:1fr;gap:4px}}.sens-up{color:#b42318}.sens-down{color:#067647}.variant-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 12px;margin:12px 0}.variant-form label{display:grid;gap:4px}.variant-col-actions{display:flex;gap:6px;justify-content:flex-end;margin-top:4px}.registry-table tr.reg-actual td{background:#ecfdf3;font-weight:500}.registry-table tr.reg-sub td:first-child{border-left:3px solid #d0d5dd}.registry-table tr.reg-archive td{opacity:.6}.reg-actions{white-space:nowrap}.reg-badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:.85em;background:#f2f4f7}.reg-badge-actual{background:#12b76a;color:#fff}.reg-badge-review{background:#fef0c7;color:#93370d}.reg-badge-work{background:#e0eaff;color:#2d31a6}.clash-fix{margin:8px 0 12px;padding:10px 12px;border-radius:8px;background:#ecfdf3;border:1px solid #a6e3bf;color:#14532d;font-size:14px}.plan-toolbar,.plan-views{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}.plan-summary .badge{margin-left:8px}.plan-svg-wrap{overflow:auto}.plan-svg{display:block;width:100%;height:auto;max-height:70vh;background:#fff}.plan-wall{stroke:#6b7280;cursor:pointer}.plan-wall.ext{stroke:#1f2937}.plan-opening{cursor:pointer}.plan-opening.door{stroke:#d97706}.plan-opening.window{stroke:#0ea5e9}.plan-column{fill:#7c3aed;cursor:pointer}.plan-outline{fill:#10b9810f;stroke:#10b98180;stroke-width:.05}.plan-room{fill:#374151;text-anchor:middle;cursor:pointer}.plan-legend .lg{display:inline-block;width:14px;height:4px;margin:0 4px 2px 10px;vertical-align:middle}.plan-legend .lg.ext{background:#1f2937}.plan-legend .lg.int{background:#6b7280}.plan-legend .lg.door{background:#d97706}.plan-legend .lg.window{background:#0ea5e9}.plan-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.plan-field{display:grid;gap:4px}.plan-field.wide,.plan-form-actions{grid-column:1 / -1}.plan-field .input.short{max-width:140px}.plan-field .req{color:#dc2626}.plan-form-actions{display:flex;flex-wrap:wrap;gap:8px}@media(max-width:640px){.modal.plan-card{width:100vw;max-width:100vw;height:100vh;max-height:100vh;border-radius:0}}.asb-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start}.asb-photo{position:relative;-webkit-user-select:none;user-select:none}.asb-photo img{display:block;width:100%;height:auto;border-radius:6px}.asb-photo canvas,.asb-photo svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.asb-photo svg{touch-action:none;cursor:crosshair}.asb-model{height:380px;border-radius:6px;overflow:hidden;touch-action:none}.asb-mark{fill:#f97316;stroke:#fff}.asb-label{fill:#fff;paint-order:stroke;stroke:#111;stroke-width:3px;font-weight:700}.asb-axis{stroke:#f97316;stroke-dasharray:6 4}.asb-handle{fill:#f97316;stroke:#fff;stroke-width:3px;cursor:ns-resize}.asb-draft{fill:#22c55e4d;stroke:#22c55e}.asb-list{max-height:420px;overflow:auto}.asb-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}.asb-row input[type=range]{flex:1 1 140px}@media(max-width:820px){.asb-grid{grid-template-columns:minmax(0,1fr)}.asb-model{height:300px}}.asb-upload{display:grid;gap:4px}.asb-upload input{max-width:100%}.asb-card{border:1px solid rgba(0,0,0,.1);border-radius:8px;padding:12px;margin-bottom:12px}.asb-slider{display:grid;grid-template-columns:minmax(90px,auto) minmax(0,1fr) 48px;gap:8px;align-items:center;margin:6px 0}.bim-walk{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.bim-walk-hint{position:absolute;left:8px;top:8px;max-width:calc(100% - 180px);padding:4px 8px;border-radius:6px;background:#0f172ab8;color:#fff;font-size:12px}.bim-walk-floors{position:absolute;right:8px;top:8px;display:flex;gap:6px;pointer-events:auto}.bim-joy{position:absolute;left:16px;bottom:16px;width:96px;height:96px;border-radius:50%;border:2px solid rgba(255,255,255,.75);background:#0f172a40;display:flex;align-items:center;justify-content:center;pointer-events:auto;touch-action:none}.bim-joy span{width:40px;height:40px;border-radius:50%;background:#ffffffd9}@media(max-width:640px){.bim-walk-hint{display:none}}||||||| 55d43de .modal.form-modal{display:flex;flex-direction:column;width:min(860px,100%);max-height:94vh;padding:0}.modal.form-modal.wide{width:min(1100px,100%)}.form-modal .modal-head{padding:1rem 1.25rem .75rem;border-bottom:1px solid var(--line)}.form-modal-body{overflow-y:auto;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1rem}.form-modal-foot{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:.75rem 1.25rem;border-top:1px solid var(--line);background:#fafbfd;border-radius:0 0 8px 8px}.form-modal-foot .spacer{flex:1}.form-groups{display:flex;flex-direction:column;gap:1rem}.form-group{border:0;margin:0;padding:0;min-width:0}.form-group legend{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:0 0 .45rem;margin-bottom:.25rem;width:100%;border-bottom:1px solid var(--line)}.form-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:.75rem 1rem;align-items:start}.form-field{display:flex;flex-direction:column;gap:.25rem;min-width:0}.form-field.f-xs{grid-column:span 2}.form-field.f-s{grid-column:span 3}.form-field.f-m{grid-column:span 4}.form-field.f-l{grid-column:span 6}.form-field.f-xl{grid-column:span 8}.form-field.f-full{grid-column:1 / -1}.form-field>label{font-size:.82rem;font-weight:500;color:var(--text)}.form-field input:not([type=checkbox]),.form-field select,.form-field textarea{width:100%;min-height:38px}.form-field textarea{resize:vertical}.form-field.is-check{flex-direction:row-reverse;justify-content:flex-end;align-items:center;gap:.5rem;padding-top:1.6rem}.form-field.is-check .form-hint,.form-field.is-check .form-error{display:none}.form-field.has-error input,.form-field.has-error select,.form-field.has-error textarea{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}.form-hint{font-size:.76rem;color:var(--muted);line-height:1.3}.form-error{font-size:.76rem;color:var(--danger);line-height:1.3}.req{color:var(--danger);margin-left:2px;font-weight:600}.form-legend{margin-top:-.25rem}@media(max-width:720px){.form-field.f-xs,.form-field.f-s{grid-column:span 6}.form-field.f-m,.form-field.f-l,.form-field.f-xl{grid-column:1 / -1}.modal-backdrop:has(.form-modal){padding:0}.modal.form-modal,.modal.form-modal.wide{width:100%;max-height:100vh;min-height:100vh;border-radius:0}.form-modal-foot{border-radius:0;position:sticky;bottom:0}.form-modal-foot button{flex:1 1 auto}}.form-field>label{flex-direction:row;align-items:baseline;flex-wrap:wrap;gap:.35rem}.form-field>label .req{margin-left:-.2rem}.form-group,.form-grid{background:none;box-shadow:none}.form-group legend{width:100%;border-bottom:1px solid var(--line);margin-bottom:.6rem}.form-field input::placeholder,.form-field textarea::placeholder{color:#a3abb8}.layout-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.layout-card{display:flex;flex-direction:column;gap:8px;text-align:left;cursor:pointer;padding:12px;font:inherit;color:inherit}.layout-card:hover{border-color:var(--accent, #2f80ed)}.layout-svg{width:100%;height:170px;background:#fafafa;border-radius:6px}.layout-svg.big{height:auto;max-height:46vh;margin-bottom:8px}.layout-svg text{font-family:inherit;pointer-events:none}.layout-meta{display:flex;flex-direction:column;gap:4px;min-width:0}.layout-source{overflow-wrap:anywhere}.layout-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:12px}.layout-legend i{display:inline-block;width:12px;height:12px;margin-right:5px;vertical-align:-1px;border:1px solid #999;border-radius:2px}.layout-rooms td.num{text-align:right}@media(max-width:640px){.layout-grid{grid-template-columns:1fr}.layout-svg{height:200px}}
