:root{--ink: #080808;--carbon: #111111;--ivory: #f6f4ee;--white: #ffffff;--signal: #ff4e0a;--signal-text: #b33604;--signal-tint: #fff4ee;--line: #e2dfd6;--line-strong: #cfcbc0;--muted: #555555;--muted-dark: #a8a8a8;--font: Inter, Arial, Helvetica, sans-serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;--k: .86;--fs: calc(15px * var(--k));--title-hero: calc(56px * var(--k));--title-page: calc(48px * var(--k));--title-auth: calc(32px * var(--k));--title-section: calc(20px * var(--k));--control-h: calc(48px * var(--k));--input-h: calc(50px * var(--k));--gap: calc(28px * var(--k));--page-pad: calc(40px * var(--k)) 24px calc(72px * var(--k));--card-pad: calc(24px * var(--k));--row-pad: calc(20px * var(--k)) calc(22px * var(--k));--cell-pad: calc(12px * var(--k)) calc(16px * var(--k));--bar-h: calc(40px * var(--k));--bar-pad: calc(12px * var(--k)) 24px}@media(min-width:1680px)and (min-height:1000px){:root{--k: 1}}@media(max-width:1279px),(max-height:799px){:root{--k: .76}}*{box-sizing:border-box}body{margin:0;background:var(--ivory);color:var(--ink);font:var(--fs)/1.5 var(--font)}a{color:var(--ink);font-weight:700}a:hover{color:var(--signal-text)}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--signal);outline-offset:1px}.title-hero{font-size:var(--title-hero)}.title-page{font-size:var(--title-page)}.title-auth{font-size:var(--title-auth);font-weight:800}.title-section{font-size:var(--title-section);font-weight:800}.title-sub{font-size:calc(var(--title-section) - 3px);font-weight:800}.display{font-weight:900;font-style:italic;letter-spacing:-.03em;line-height:1}.eyebrow{font:600 12px var(--mono);letter-spacing:.08em;color:var(--muted);text-transform:uppercase}.muted{color:var(--muted)}.mono{font-family:var(--mono)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:var(--control-h);padding:0 calc(var(--control-h) * .4);border:1.5px solid var(--ink);background:var(--white);font-weight:700;cursor:pointer;text-decoration:none;color:var(--ink)}.btn:hover{color:var(--ink);background:#f3f1eb}.btn-primary{background:var(--signal);border-color:var(--signal);font-weight:800;justify-content:space-between}.btn-primary:hover{background:#ff6a33}.btn-dark{background:var(--ink);border-color:var(--ink);color:var(--white)}.btn-dark:hover{background:#222;color:var(--white)}.btn-link{background:none;border:0;padding:0 4px;min-height:40px;font-weight:600;color:#444;cursor:pointer}.btn:disabled{opacity:.5;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:8px}.field label{font-size:14px;font-weight:700}.input{min-height:var(--input-h);padding:0 14px;background:var(--white);border:1.5px solid var(--line-strong)}.input:focus{outline:3px solid var(--signal);outline-offset:0;border-color:var(--ink)}textarea.input{padding:12px 14px;min-height:90px;resize:vertical}.error{padding:12px 14px;border:2px solid var(--signal);background:var(--signal-tint);color:var(--signal-text);font-weight:600}.notice{padding:12px 14px;border:1px dashed var(--muted-dark);font-size:14px;color:#333}.card{background:var(--white);border:1px solid var(--line);padding:var(--card-pad)}.card-dark{background:var(--ink);color:var(--white);padding:var(--card-pad)}.card-dark .muted{color:#c9c9c9}.tag{font:600 11px var(--mono);letter-spacing:.06em;padding:5px 9px;border:1.5px solid var(--line-strong);white-space:nowrap}.tag-dark{background:var(--ink);color:var(--white);border-color:var(--ink)}.tag-signal{border-color:var(--signal);color:var(--signal-text)}.stack{display:flex;flex-direction:column}.row{display:flex;flex-wrap:wrap;align-items:center}.spacer{flex:1}.page{width:100%;max-width:1200px;margin:0 auto;padding:var(--page-pad);display:flex;flex-direction:column;gap:var(--gap)}.topbar{background:var(--ink);color:var(--white);padding:var(--bar-pad);display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px}.topbar a{color:#d4d4d4;text-decoration:none;font-size:14px;font-weight:600}.topbar a:hover{color:var(--white)}.topbar nav{display:flex;gap:4px}.topbar nav a{padding:0 14px;min-height:var(--bar-h);display:inline-flex;align-items:center}.topbar nav a.active{background:var(--white);color:var(--ink);font-weight:700}.topbar .btn-primary{min-height:var(--bar-h);color:var(--ink);font-size:14px}.avatar-btn{width:var(--bar-h);height:var(--bar-h);background:#2a2a2a;display:grid;place-items:center}.auth{min-height:100vh;display:flex;flex-wrap:wrap}.auth-brand{flex:1 1 480px;background:var(--ink);color:var(--white);padding:56px 64px;display:flex;flex-direction:column;justify-content:space-between;gap:48px}.auth-brand h1{font-size:clamp(32px,4vw,calc(var(--title-hero) + 8px))}.auth-main{flex:1 1 420px;padding:56px 24px;display:flex;align-items:center;justify-content:center}.auth-form{width:100%;max-width:400px;display:flex;flex-direction:column;gap:22px}.list{list-style:none;margin:0;padding:0;background:var(--white);border:1px solid var(--line)}.list>li{padding:var(--row-pad);border-bottom:1px solid #ece9e1;display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px}.list>li:last-child{border-bottom:0}.site-row{text-decoration:none;background:var(--white);border:1px solid var(--line);padding:var(--row-pad);display:flex;flex-wrap:wrap;align-items:center;gap:12px 28px}.site-row:hover{border-color:var(--ink);color:var(--ink)}.table-wrap{overflow-x:auto;background:var(--white);border:1px solid var(--line)}table{width:100%;min-width:680px;border-collapse:collapse}th{text-align:left;font:600 11px var(--mono);letter-spacing:.08em;color:var(--muted);padding:14px 16px;border-bottom:2px solid var(--ink)}td{padding:var(--cell-pad);border-bottom:1px solid #ece9e1;vertical-align:middle}tr.pending{background:var(--signal-tint)}.choice{text-align:left;background:var(--white);border:1.5px solid var(--line-strong);padding:var(--card-pad);display:flex;gap:16px;cursor:pointer;width:100%}.choice[aria-pressed=true]{border:2px solid var(--ink)}.choice .dot{width:22px;height:22px;flex:none;border:2px solid var(--ink);display:grid;place-items:center;margin-top:2px}.choice[aria-pressed=true] .dot:after{content:"";width:10px;height:10px;background:var(--signal)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.pro-mark{font:600 calc(10px * var(--k)) var(--mono);letter-spacing:.08em;color:var(--signal);border:1px solid currentColor;padding:1px 5px;margin-left:8px;vertical-align:1px}.select-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:var(--input-h);padding:0 14px;background:var(--white);color:var(--ink);border:1.5px solid var(--line-strong);font:inherit;text-align:left;cursor:pointer}.select-trigger.compact{min-height:calc(40px * var(--k))}.select-trigger:hover{border-color:var(--ink)}.select-trigger:focus-visible,.select-trigger[data-state=open]{outline:3px solid var(--signal);outline-offset:0;border-color:var(--ink)}.select-trigger[data-placeholder]{color:var(--muted)}.select-chevron{display:grid;place-items:center;color:var(--ink);transition:transform .12s}.select-trigger[data-state=open] .select-chevron{transform:rotate(180deg)}.select-content{z-index:1000;min-width:var(--radix-select-trigger-width);max-height:var(--radix-select-content-available-height);background:var(--white);color:var(--ink);border:1px solid var(--line-strong);box-shadow:0 6px 20px #0808081a}.select-viewport{padding:4px}.select-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(9px * var(--k)) 12px;cursor:pointer;outline:none;-webkit-user-select:none;user-select:none;font-size:var(--fs)}.select-item[data-highlighted]{background:var(--signal-tint)}.select-item[data-state=checked]{font-weight:700}.select-item[data-disabled]{color:var(--muted-dark);cursor:not-allowed}.select-item-text{display:flex;flex-direction:column;gap:2px;min-width:0}.select-hint{font-weight:400;color:var(--muted);font-size:calc(12.5px * var(--k));line-height:1.35;max-width:34ch}.select-check{flex:none;width:10px;height:10px;display:grid}.select-check span{background:var(--signal)}@media(prefers-reduced-motion:reduce){.select-chevron{transition:none}}input[type=checkbox]{accent-color:var(--signal);width:16px;height:16px}.workspace{--hair: #e8e5dd;--hair-2: #f0ede6;--field: #ddd9cf;--text-2: #5c5a55;--bad: #b3261e;--ok: #1d7a46;height:100vh;display:flex;flex-direction:column;font-size:13px;line-height:1.4;min-height:560px}.workspace .muted{color:var(--text-2)}.workspace .bad{color:var(--bad)}.workspace .mono{font-family:var(--mono);font-size:12px}.ws-error{margin:8px 12px 0;cursor:pointer;font-size:13px;padding:8px 12px;border-width:1px}.sitebar{background:var(--ink);color:var(--white);min-height:44px;padding:0 12px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;flex:none}.sitebar a{text-decoration:none}.sitebar-mark img{display:block}.sitebar-crumbs{display:flex;align-items:center;gap:8px;min-width:0}.sitebar-crumbs>a{color:#a8a8a8;font-weight:500}.sitebar-crumbs>a:hover,.sitebar-link:hover{color:var(--white)}.sitebar .slash{color:#5c5c5c}.sitebar-addr{font:500 11px var(--mono);color:#8c8c8c;white-space:nowrap}.sitebar-tabs{display:flex;align-self:stretch;gap:2px;margin-left:8px}.sitebar-tabs button{background:none;border:0;border-bottom:2px solid transparent;color:#a8a8a8;font:500 13px var(--font);padding:0 12px;cursor:pointer}.sitebar-tabs button:hover{color:var(--white)}.sitebar-tabs button.on{color:var(--white);font-weight:600;border-bottom-color:var(--signal)}.sitebar-stats{display:flex;gap:14px;font:500 12px var(--mono);color:#a8a8a8}.sitebar-stats b{color:var(--white);font-weight:600}.sitebar-stats b.gaps{color:#ff7a45}.sitebar-export{background:var(--signal);color:var(--ink);border:0;font:600 12px var(--font);padding:0 12px;min-height:28px;cursor:pointer}.sitebar-link{color:#a8a8a8;font-weight:500}.sitebar-avatar{width:28px;height:28px;background:#262626;display:grid;place-items:center}.switcher{position:relative}.switcher-btn{background:none;border:0;color:var(--white);font:600 14px var(--font);display:inline-flex;align-items:center;gap:6px;padding:0;min-height:40px;cursor:pointer}.switcher-menu{position:absolute;top:calc(100% + 2px);left:-8px;z-index:950;min-width:240px;background:var(--white);color:var(--ink);border:1px solid var(--line-strong);box-shadow:0 6px 20px #08080824;padding:4px;display:grid}.switcher-menu button{display:flex;justify-content:space-between;align-items:center;gap:12px;border:0;background:none;text-align:left;padding:7px 10px;font:500 13px var(--font);cursor:pointer;color:var(--ink)}.switcher-menu button:hover{background:#f6f4ee}.switcher-menu button.on{font-weight:700}.switcher-menu .check{color:var(--signal);font-size:9px}.menu-head{font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55;padding:6px 10px 4px}.menu-note{padding:7px 10px;color:#5c5a55}.switcher-menu .menu-foot{border-top:1px solid #e8e5dd;margin-top:4px;padding:8px 10px 6px;color:#5c5a55;font-weight:500;text-decoration:none}.soon{cursor:help!important;opacity:.55}.soon:hover{opacity:.7}.ws-stage{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}.ws-body{flex:1;min-height:0;display:flex;background:#f6f4ee}.ws-stage>.ws-hidden{visibility:hidden;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.ws-empty{padding:28px 16px;display:flex;flex-direction:column;gap:8px}.add-link{background:none;border:0;padding:0;min-height:24px;font:500 12px var(--font);color:var(--signal-text);cursor:pointer}.add-link.muted{color:#5c5a55}.add-link.danger{color:#b3261e}.btn-ink{background:var(--ink);color:var(--white);border:0;font:600 12px var(--font);padding:0 12px;min-height:28px;cursor:pointer}.btn-ink:disabled{opacity:.45;cursor:default}.btn-quiet{background:var(--white);border:1px solid #ddd9cf;font:500 12px var(--font);padding:0 10px;min-height:28px;cursor:pointer;color:var(--ink)}.btn-quiet:hover{border-color:#b9b5aa}.btn-quiet.danger{color:#b3261e;border-color:#e9c3bf}.btn-quiet.danger:hover{background:#fdecea}.fi{height:30px;box-sizing:border-box;border:1px solid #ddd9cf;background:var(--white);padding:0 8px;font:13px var(--font);color:var(--ink);min-width:0;width:100%}.fi:focus{outline:2px solid var(--signal);outline-offset:-1px;border-color:var(--ink)}.fi::placeholder{color:#9a978f}.workspace .select-trigger.compact,.modal .select-trigger.compact{min-height:30px;font-size:13px;border-width:1px;border-color:#ddd9cf;padding:0 8px}.workspace .select-trigger.compact[data-state=open],.workspace .select-trigger.compact:focus-visible{outline:2px solid var(--signal);outline-offset:-1px;border-color:var(--ink)}.select-item{font-size:13px;padding:7px 10px}.sdot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none;background:#b3261e}.sdot.ok{background:#1d7a46}.sdot.empty{background:transparent;border:1px solid #cfcbc0;box-sizing:border-box}.fs-label{margin:0 0 2px;font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55}.rooms{width:220px;flex:none;border-right:1px solid var(--hair);overflow-y:auto;padding:10px 8px;box-sizing:border-box;display:flex;flex-direction:column;gap:2px}.room{display:flex;justify-content:space-between;align-items:center;gap:8px;background:none;border:1px solid transparent;padding:0 10px;min-height:30px;font:500 13px var(--font);color:var(--ink);cursor:pointer;text-align:left}.room:hover{background:#fff9}.room.on{background:var(--white);border-color:var(--hair);font-weight:600}.room .count{font:500 11px var(--mono);color:#8c8c8c}.room-name{display:inline-flex;align-items:center;gap:8px;min-width:0}.building{display:flex;flex-direction:column;gap:1px;margin-top:10px}.building-head{display:flex;justify-content:space-between;align-items:center;padding:0 10px 2px}.rooms .note{margin:2px 10px;font-size:12px}.add-room{display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--white);border:1px solid var(--hair);margin-top:4px}.assets{flex:1;min-width:0;display:flex;flex-direction:column}.assets-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:6px 14px;min-height:44px;box-sizing:border-box;border-bottom:1px solid var(--hair);background:var(--white)}.assets-head h2{margin:0;font-size:14px;font-weight:600}.assets-head .muted{font-size:12px}.class-picker{border-bottom:1px solid var(--hair);background:#fbfaf6;padding:10px 14px;display:flex;flex-direction:column;gap:8px}.quiet-tabs{display:flex;gap:2px;border-bottom:1px solid var(--hair)}.quiet-tabs button{background:none;border:0;border-bottom:2px solid transparent;font:500 12px var(--font);color:#5c5a55;padding:0 10px;min-height:30px;cursor:pointer}.quiet-tabs button.on{color:var(--ink);font-weight:600;border-bottom-color:var(--signal)}.class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;max-height:260px;overflow-y:auto}.class-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:7px 10px;background:var(--white);border:1px solid #ddd9cf;cursor:pointer;font:600 13px var(--font);color:var(--ink)}.class-btn:hover{border-color:var(--ink)}.class-role{font:500 10px var(--mono);letter-spacing:.04em;text-transform:uppercase;color:#8c8c8c}.sheet{flex:1;min-height:0;overflow:auto;background:var(--white)}.sheet-table{width:100%;border-collapse:collapse;font-size:13px}.sheet-table th{position:sticky;top:0;background:var(--white);text-align:left;font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55;padding:8px;border-bottom:1px solid var(--hair)}.sheet-table td{padding:0 8px;height:34px;border-bottom:1px solid var(--hair-2);color:#3a3935}.sheet-table th:first-child,.sheet-table td:first-child{padding-left:14px}.sheet-table th:last-child,.sheet-table td:last-child{padding-right:14px}.sheet-table tr{cursor:pointer}.sheet-table tbody tr:hover{background:#faf9f5}.sheet-table tr.on,.sheet-table tr.on:hover{background:#fff1ea}.sheet-table .c-dot{width:10px}.sheet-table .c-num{text-align:right;white-space:nowrap}.sheet-table td.c-num.bad{color:#b3261e}.sheet-table td.c-num.muted{color:#8c8c8c}.row-btn{background:none;border:0;padding:0;font:600 12px var(--mono);color:var(--ink);cursor:pointer;text-align:left}.sheet-table tr.on .row-btn{color:var(--ink)}.inspector{width:380px;flex:none;border-left:1px solid var(--hair);background:var(--white);overflow-y:auto}.panel,.run-panel{padding:14px 16px 20px;display:flex;flex-direction:column}.inspector>.back-to{margin:12px 16px 0}.back-to{align-self:flex-start;background:none;border:0;padding:0;min-height:24px;font:500 12px var(--font);color:#5c5a55;cursor:pointer}.back-to:hover{color:var(--signal-text)}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding-bottom:8px}.panel-title{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.title-input,.title-static{margin:0;font:700 16px var(--mono);letter-spacing:-.01em;color:var(--ink);border:0;border-bottom:1px solid transparent;background:none;padding:1px 0;width:100%;min-width:0}.title-input:hover{border-bottom-color:#ddd9cf}.title-input:focus{outline:none;border-bottom-color:var(--signal)}.panel-sub{color:#5c5a55;font-size:12px}.panel-actions{display:flex;gap:4px;flex:none}.missing-line{margin:0 0 6px;font-size:12px;color:#b3261e}.fs{border-top:1px solid var(--hair);padding:10px 0 6px;display:flex;flex-direction:column;gap:6px}.fr{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;gap:8px}.fr-label{color:#5c5a55;font-size:13px}.fr-toggle{grid-template-columns:1fr}.req{color:#b3261e;font-weight:600}.unit-input{display:flex;align-items:center;gap:6px;min-width:0}.unit-input>:first-child{flex:1;min-width:0}.unit{font:500 11px var(--mono);color:#5c5a55;width:18px;flex:none}.fr>.select-trigger,.fr>button[role=combobox]{margin-right:24px;width:auto}.calc-value{font:600 12px var(--mono);color:var(--ink);padding:0 8px}.calc-from{font:400 12px var(--font);color:#8c8c8c}.has-ghost::placeholder{color:#9a6a50;font-style:italic}.joined{display:flex;align-items:center;gap:4px;min-width:0}.joined .fi{flex:1}.toggle{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;min-height:28px}.suggest{position:relative;display:flex}.suggest .fi{flex:1;padding-right:26px}.suggest-btn{position:absolute;right:2px;top:50%;transform:translateY(-50%);border:0;background:none;cursor:pointer;font-size:11px;padding:4px 6px;color:#5c5a55}.suggest-menu{position:absolute;top:100%;left:0;right:0;z-index:50;list-style:none;margin:2px 0 0;padding:4px;background:var(--white);border:1px solid var(--line-strong);box-shadow:0 6px 20px #0808081a;max-height:220px;overflow-y:auto}.suggest-menu li{padding:6px 10px;cursor:pointer;font-size:13px}.suggest-menu li:hover,.suggest-menu li.on{background:#f6f4ee}.settings-box{border:1px solid var(--hair)}.settings-head{display:flex;justify-content:space-between;padding:6px 10px;background:#faf9f5;border-bottom:1px solid var(--hair);font-weight:600;font-size:12px}.settings-head .muted{font-weight:400}.seg-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:3px 10px;min-height:36px;border-bottom:1px solid var(--hair-2)}.seg-row:last-child{border-bottom:0}.seg-row>.unit-input,.seg-row>button{flex:0 0 150px}.seg-check{display:flex;align-items:center;gap:8px;font-size:12px;min-width:0}.seg-name{font-weight:600}.seg-row.off .seg-name{color:#8c8c8c;text-decoration:line-through}.dev-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#5c5a55;padding-top:2px}.dev-none{font-size:12px;color:#8c8c8c;padding:2px 0}.dev-row{display:flex;align-items:stretch;gap:4px}.run-row{display:block;width:100%;text-align:left;border:1px solid var(--hair);background:#faf9f5;padding:6px 8px;font:12px var(--font);color:var(--ink);cursor:pointer}.run-row:hover{border-color:#cfcbc0}.run-row b{font-weight:600}.dev-open{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.dev-icon{flex:none;color:var(--ink)}.dev-text{flex:1;min-width:0}.chev{color:#8c8c8c}.icon-x{border:1px solid var(--hair);background:var(--white);width:28px;cursor:pointer;color:#5c5a55;font-size:15px}.icon-x:hover{color:#b3261e;border-color:#e9c3bf}.fs>.add-link{align-self:flex-start}.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.photo-tile{aspect-ratio:1;border:1px dashed #cfcbc0;background:#faf9f5;font:500 11px var(--font);color:#5c5a55;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:4px;text-align:center}.lib-cell{height:30px;border:1px dashed #cfcbc0;background:#faf9f5;text-align:left;padding:0 8px;font:12px var(--mono);color:#5c5a55;margin-right:24px}.ms-actions{display:flex;gap:6px;justify-content:flex-end;padding:10px 16px 14px;border-top:1px solid var(--hair)}.run-panel .panel-head .muted{font-size:12px}.drawer-title{margin:0;font:700 16px var(--mono)}.run-panel .form-section{border-top:1px solid var(--hair);padding:10px 0 6px;display:flex;flex-direction:column;gap:6px}.run-panel .form-section-label{font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55;margin:0 0 2px}.run-panel .form-row{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;gap:8px}.run-panel .form-row>label{color:#5c5a55;font-size:13px;font-weight:400}.run-panel .eyebrow{font:600 11px var(--font);letter-spacing:.06em;color:#5c5a55}.run-panel .status-box{margin-top:8px}.run-end{display:flex;align-items:center;gap:6px;min-width:0}.run-end>:first-child{flex:1;min-width:0}.status-box{border:1px solid #e9c3bf;background:#fdf4f2;padding:8px 10px;display:flex;flex-direction:column;gap:6px;font-size:12px}.chips{display:flex;flex-wrap:wrap;gap:4px}.chip{font:500 11px var(--mono);padding:1px 6px;border:1px solid #e9c3bf;color:#b3261e;background:var(--white)}.ws-oneline{position:relative;overflow:hidden}.model{display:flex;flex-direction:column;height:100%;width:100%}.model-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:6px 12px;min-height:40px;box-sizing:border-box;border-bottom:1px solid var(--hair);background:var(--white)}.tb-group{display:flex;border:1px solid #ddd9cf}.tb-group button{background:var(--white);border:0;font:500 12px var(--font);padding:0 10px;min-height:28px;color:#5c5a55;cursor:pointer}.tb-group button+button{border-left:1px solid #ddd9cf}.tb-group button.on{background:#f1efe8;color:var(--ink);font-weight:600}.tb-group button span{font:500 11px var(--mono);color:#8c8c8c;margin-left:2px}.tb-group button span.bad{color:#b3261e}.tb-btn{background:var(--white);border:1px solid #ddd9cf;font:500 12px var(--font);padding:0 10px;min-height:28px;cursor:pointer;color:var(--ink);display:inline-flex;align-items:center;gap:5px}.tb-btn:hover{border-color:#b9b5aa}.tb-btn span{font:500 11px var(--mono);color:#8c8c8c}.tb-btn.ghost{border-color:transparent;color:#5c5a55;padding:0 4px}.search{position:relative;display:flex;align-items:center;gap:6px;border:1px solid #ddd9cf;padding:0 8px;min-height:28px;width:200px;box-sizing:border-box;background:var(--white)}.search-icon{color:#8c8c8c;flex:none}.search input{border:0;outline:0;font:13px var(--font);min-width:0;flex:1;background:transparent}.search .results{position:absolute;top:calc(100% + 4px);left:-1px;width:340px;background:var(--white);border:1px solid var(--line-strong);box-shadow:0 6px 20px #0808081a;z-index:20;padding:4px}.search .results button{display:block;width:100%;text-align:left;border:0;background:none;padding:7px 10px;cursor:pointer;font:13px var(--font);color:var(--ink)}.search .results button:hover{background:#f6f4ee}.search .results b{font-family:var(--mono)}.search .results .muted{padding:7px 10px}.spacing{display:flex;align-items:center;gap:8px;font:500 12px var(--font);color:#5c5a55}.spacing input[type=range]{width:120px;accent-color:var(--ink)}.spacing-name{width:70px}.spacing-val{font:500 11px var(--mono);width:28px;color:#5c5a55}.pop-wrap,.build-wrap{position:relative}.pop{position:absolute;top:calc(100% + 4px);left:0;z-index:901;background:var(--white);border:1px solid var(--line-strong);box-shadow:0 6px 20px #0808081a;padding:10px 12px;display:grid;gap:8px;justify-items:start}.build-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:901;width:300px;background:var(--white);border:1px solid var(--line-strong);box-shadow:0 6px 20px #0808081a;padding:4px;display:grid}.build-menu button{display:grid;gap:2px;text-align:left;border:0;background:none;padding:8px 10px;cursor:pointer;font:inherit;font-size:13px;color:var(--ink)}.build-menu button:hover{background:#f6f4ee}.build-menu .muted{font-size:12px}.model-error{margin:8px 12px 0;cursor:pointer;font-size:13px;padding:8px 12px;border-width:1px}.sheet-bar{display:flex;gap:2px;padding:0 12px;overflow-x:auto;background:#fbfaf6;border-bottom:1px solid var(--hair);flex:none}.sheet-tab{flex:none;max-width:340px;padding:0 10px;min-height:34px;border:0;border-bottom:2px solid transparent;background:none;font:500 12px var(--font);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#5c5a55}.sheet-tab b{font:600 11px var(--mono);margin-right:4px;color:#8c8c8c}.sheet-tab span{font:500 11px var(--mono);color:#8c8c8c;margin-left:4px}.sheet-tab:hover{color:var(--ink)}.sheet-tab.on{color:var(--ink);font-weight:600;border-bottom-color:var(--signal)}.sheet-tab.sub{padding-left:16px}.tab-menu{position:fixed;z-index:40;width:284px;background:var(--white);border:1px solid var(--line-strong);box-shadow:0 6px 20px #0808081f;padding:4px;display:grid}.tab-menu .tm-head,.ctx-menu .ctx-head{font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55;padding:7px 10px 5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-menu button{display:flex;justify-content:space-between;gap:12px;align-items:baseline;border:0;background:none;text-align:left;padding:7px 10px;font:inherit;font-size:13px;cursor:pointer;color:var(--ink)}.tab-menu button:hover:not(:disabled){background:#f6f4ee}.tab-menu button:disabled{color:#8c8c8c;cursor:default}.tab-menu button span{font:500 11px var(--mono);color:#8c8c8c}.tab-menu button.undo{border-top:1px solid var(--hair);margin-top:4px}.ctx-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900}.ctx-menu{position:fixed;z-index:901;min-width:200px;background:var(--white);border:1px solid var(--line-strong);box-shadow:0 6px 20px #0808081f;padding:4px}.ctx-menu button{display:block;width:100%;text-align:left;border:0;background:none;font:inherit;font-size:13px;padding:7px 10px;cursor:pointer;color:var(--ink)}.ctx-menu button:hover:not(:disabled){background:#f6f4ee}.ctx-menu button:disabled{opacity:.45;cursor:default}.model-body{position:relative;flex:1;min-height:0;display:flex}.canvas{flex:1;min-width:0;height:100%;display:block;background:#f6f4ee;cursor:grab;-webkit-user-select:none;user-select:none}.canvas:active{cursor:grabbing}.model-side{width:380px;flex:none;border-left:1px solid var(--hair);background:var(--white);overflow-y:auto;display:flex;flex-direction:column}.legend{position:absolute;left:12px;bottom:12px;z-index:3;display:flex;gap:12px;font-size:11px;color:#5c5a55;background:var(--white);border:1px solid var(--hair);padding:5px 10px;pointer-events:none}.legend span{display:inline-flex;align-items:center;gap:6px}.lg-dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:#b3261e}.lg-dot.ok{background:#1d7a46}.lg-dash{width:16px;border-top:1.5px dashed #c8281e;display:inline-block}.layout-busy{position:absolute;left:50%;bottom:24px;transform:translate(-50%);z-index:6;display:flex;gap:12px;align-items:center;padding:10px 14px;font-size:13px;min-width:240px;background:var(--white);border:1px solid var(--line-strong);box-shadow:0 6px 20px #0808081a}.layout-busy .muted{font:12px var(--mono);margin-top:2px}.layout-busy .bar{height:3px;background:var(--hair);margin-top:6px;overflow:hidden}.layout-busy .bar i{display:block;height:100%;background:var(--signal);transition:width .2s}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--hair);border-top-color:var(--signal);animation:spin .8s linear infinite;flex:none}@keyframes spin{to{transform:rotate(360deg)}}.whole-hold{position:absolute;top:48px;left:50%;transform:translate(-50%);width:min(460px,calc(100% - 32px));z-index:5;display:grid;gap:10px;justify-items:start}.whole-hold h3,.whole-hold p{margin:0}.edge{transition:opacity .12s}.dot.ok{fill:#1e7a46}.dot.no{fill:#c8281e}.pill-text{font:600 10px var(--mono)}.lane{font:600 12px var(--font);letter-spacing:.05em;fill:#8f1b12}.bus{cursor:pointer}.bus .bar{stroke:var(--ink);stroke-width:5;stroke-linecap:square}.bus.sel .bar{stroke:var(--signal)}.bus.hit .bar{stroke:#f2b705}.bus-label{font:700 12px var(--mono);fill:var(--ink);paint-order:stroke;stroke:#f6f4ee;stroke-width:4px;stroke-linejoin:round}.bus-sub{font:500 10px var(--font);fill:#5b5b5b}.brk{cursor:pointer}.brk>rect{fill:#fff;stroke:#6b6b6b;stroke-width:1.3}.brk.bad>rect{stroke:#c8281e}.brk.spare>rect{stroke-dasharray:3 3;fill:#f6f5f1}.brk.main>rect{fill:#fff;stroke:var(--ink);stroke-width:1.6}.brk.main.bad>rect{stroke:#c8281e}.brk.open>rect{stroke-dasharray:4 3}.brk.sel>rect{stroke:var(--signal);stroke-width:2.6}.brk .drop{stroke:var(--ink);stroke-width:2}.brk-pos{font:700 11px var(--mono);fill:var(--ink)}.brk-sub{font:500 9px var(--mono);fill:#5b5b5b}.nb-dot{fill:var(--ink);stroke:#f6f4ee;stroke-width:1.5}.sym{cursor:pointer}.sym-box{fill:#fff;stroke:var(--ink);stroke-width:1.5}.g-l{fill:none;stroke:var(--ink);stroke-width:1.5}.g-f{fill:var(--ink)}.g-t{font-family:var(--mono);font-weight:700;fill:var(--ink)}.db-name{font:700 11px var(--mono);fill:var(--ink)}.db-info{font:500 9px var(--font);fill:#5b5b5b}.sym.bad .sym-box{stroke:#c8281e}.sym.src .sym-box{fill:var(--ink);stroke:var(--ink)}.sym.src .g-l{stroke:#fff}.sym.src .g-t,.sym.src .g-f{fill:#fff}.sym.stub .sym-box,.sym.lone .sym-box{stroke:#c8281e;stroke-dasharray:5 4}.sym.lone .sym-box{fill:#fff8f6}.sym.ref .sym-box{stroke:#1f5bd8;stroke-dasharray:4 3;fill:#f3f7ff}.sym.ref .g-t,.sym.ref .db-info{fill:#1f5bd8}.sym.ref-in .sym-box{fill:#1f3f8f;stroke:#1f3f8f;stroke-dasharray:none}.sym.ref-in .g-t{fill:#fff}.sym.hit .sym-box{stroke:#f2b705;stroke-width:3}.sym.sel .sym-box{stroke:var(--signal);stroke-width:3}.junction{fill:var(--ink)}.g-icon{color:var(--ink);--sym-bg: #fff;overflow:visible;pointer-events:none}.sym.src .g-icon,.sym.ref-in .g-icon{color:#fff;--sym-bg: var(--ink)}.sym.ref .g-icon{color:#1f5bd8}.sym.src.lone .g-icon,.sym.src.stub .g-icon{color:var(--ink);--sym-bg: #fff8f6}.brk.spare .g-icon{color:#9a9a9a}.grow{opacity:0;transition:opacity .12s}.sym:hover .grow,.brk:hover .grow,.grow:hover{opacity:1}.grow-btn{cursor:pointer}.grow-btn rect{fill:var(--signal);stroke:#fff;stroke-width:1.2}.grow-btn text{fill:var(--ink);font:800 9.5px var(--font);pointer-events:none}.grow-btn:hover rect{fill:var(--ink)}.grow-btn:hover text{fill:#fff}.bus-grow-handle{cursor:pointer;opacity:.4;transition:opacity .12s}.bus-grow-handle circle{fill:var(--signal);stroke:#fff;stroke-width:1.2}.bus-grow-handle text{fill:var(--ink);font:800 11px var(--font);pointer-events:none}.bus-grow-menu{opacity:0;pointer-events:none;transition:opacity .12s}.bus-grow-card{fill:#fff;stroke:#cfcbc0;stroke-width:1}.bus-grow:hover .bus-grow-handle{opacity:0}.bus-grow:hover .bus-grow-menu{opacity:1;pointer-events:auto}.no-pills .lod-pills,.no-dev .lod-dev,.no-text .lod-text,.no-text .grow,.no-dev .brk .grow,.no-text .g-icon{display:none}.no-text .edge{vector-effect:non-scaling-stroke;stroke-width:1.2px}.no-text .edge:not(.gap):not(.hot){stroke:var(--ink)}.no-text .edge.hot{stroke-width:2.2px}.no-text .bus .bar{vector-effect:non-scaling-stroke;stroke-width:2.5px}.no-text .brk .drop{vector-effect:non-scaling-stroke;stroke:var(--ink);stroke-width:1.2px}.no-text .brk>rect{fill:var(--ink);stroke:var(--ink)}.no-text .sym:not(.sel):not(.hit) .sym-box{fill:var(--ink);stroke:var(--ink);stroke-dasharray:none}.no-text .nb-dot{fill:var(--ink);stroke:var(--ink)}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0808085c;display:grid;place-items:center;z-index:950;padding:16px}.modal{width:min(900px,100%);max-height:min(780px,calc(100vh - 32px));background:var(--white);border:1px solid var(--line-strong);box-shadow:0 16px 48px #0808082e;display:flex;flex-direction:column;overflow:hidden;font-size:13px}.modal-accent{height:3px;background:var(--signal);flex:none}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;padding:14px 20px 10px;gap:12px}.modal-head h3{margin:0 0 2px;font:700 16px var(--font);letter-spacing:-.01em}.modal-head .muted{font-size:13px;color:#5c5a55}.icon-btn{border:0;background:none;font-size:20px;line-height:1;cursor:pointer;padding:2px 6px;color:#5c5a55}.modal-body{overflow:auto;border-top:1px solid #e8e5dd;flex:1;padding:14px 20px 20px;display:grid;gap:12px;align-content:start}.modal-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 20px;border-top:1px solid #e8e5dd}.modal .btn.compact{min-height:30px;padding:0 12px;font:500 13px var(--font);border-width:1px;border-color:#ddd9cf}.modal .btn-dark.compact{background:var(--ink);border-color:var(--ink);color:var(--white);font-weight:600}.btn-danger{background:#b3261e;border-color:#b3261e;color:var(--white)}.modal .input.compact{min-height:30px;height:30px;border-width:1px;border-color:#ddd9cf;font-size:13px;padding:0 8px}.cfg-field{display:grid;gap:4px;font-size:12px;font-weight:600;color:#3a3935;min-width:0}.cfg-field .input{width:100%;box-sizing:border-box}.cfg-field.toggle span{display:flex;align-items:center;gap:8px}.cfg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.cfg-grid.three{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.pick-on .select-trigger{border-color:var(--ink);background:#fff1ea}.grow-which{display:flex;gap:0;border:1px solid #ddd9cf}.grow-which button{flex:1;padding:7px 10px;border:0;background:var(--white);font:500 13px var(--font);cursor:pointer;color:#5c5a55}.grow-which button+button{border-left:1px solid #ddd9cf}.grow-which button.on{background:#f1efe8;color:var(--ink);font-weight:600}.grow-which button:disabled{opacity:.4;cursor:default}.grow-head{font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55;margin-top:4px;padding-top:12px;border-top:1px solid #e8e5dd}.class-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:6px}.class-tile{display:flex;flex-direction:column;align-items:center;gap:4px;padding:9px 6px 7px;border:1px solid #ddd9cf;background:var(--white);font:500 12px var(--font);line-height:1.2;text-align:center;cursor:pointer;color:var(--ink)}.class-tile:hover{border-color:#b9b5aa}.class-tile.on{border-color:var(--ink);background:#fff1ea;font-weight:600}.class-tile .g-icon{color:var(--ink)}.vc-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}.vc-cuts{display:grid;gap:8px;align-content:start}.vc-cut{display:flex;gap:10px;align-items:flex-start;border:1px solid #ddd9cf;padding:10px 12px;cursor:pointer}.vc-cut:hover{border-color:#b9b5aa}.vc-cut.on{border-color:var(--ink);background:#fff1ea}.vc-cut input{margin:3px 0 0}.vc-cut>span{display:grid;gap:3px;font-size:13px}.vc-cut b{font-size:13px;font-weight:600}.vc-note{color:var(--signal-text);font-size:12px}.vc-hint{font-size:12px}.vc-preview{min-width:0;display:grid;gap:6px}.vc-preview .label{font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55}.vc-list{list-style:none;margin:0;padding:0;border:1px solid #e8e5dd;max-height:420px;overflow:auto}.vc-list li{display:flex;gap:10px;align-items:baseline;padding:6px 12px;border-bottom:1px solid #f0ede6;font-size:13px}.vc-list li:last-child{border-bottom:0}.vc-list .n{font:600 12px var(--mono);width:26px;flex:none;color:#8c8c8c}.vc-list .t{flex:1;min-width:0}.vc-list .i{font:500 12px var(--mono);color:#8c8c8c;font-variant-numeric:tabular-nums}.vc-list li.whole{background:#faf9f5}.vc-list li.big .i{color:var(--signal-text);font-weight:600}@media(max-width:1100px){.workspace{height:auto}.ws-body.ws-walk{flex-wrap:wrap}.rooms{width:100%;border-right:0;border-bottom:1px solid var(--hair)}.inspector,.model-side{width:100%;border-left:0}.ws-oneline{min-height:640px}.vc-body{grid-template-columns:1fr}}.sitebar-export.soon{opacity:1;background:transparent;color:#ff7a45;outline:1px dashed #ff7a45;outline-offset:-1px}.sitebar-export.soon:hover{background:#ff4e0a1f}.panel-sub .bad{white-space:nowrap}.ol-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;z-index:4;pointer-events:none}.ol-empty-card{pointer-events:auto;width:min(460px,100%);background:var(--white);border:1px solid var(--line-strong);padding:32px 32px 28px;display:flex;flex-direction:column;align-items:flex-start;gap:12px}.ol-empty-card h2{margin:6px 0 0;font:700 22px var(--font);letter-spacing:-.015em}.ol-empty-card p{margin:0;color:#5c5a55;font-size:14px;line-height:1.5}.ol-empty-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px}.btn-signal{background:var(--signal);color:var(--ink);border:0;font:700 14px var(--font);padding:0 18px;min-height:40px;cursor:pointer}.btn-signal:hover{background:#ff6a33}.ol-empty-actions .btn-quiet{min-height:40px;font-size:13px;padding:0 14px}.cp{display:flex;flex-direction:column;gap:14px;min-width:0}.cp-search{display:flex;align-items:center;gap:8px;border:1px solid #ddd9cf;padding:0 10px;min-height:36px;color:#8c8c8c;background:var(--white)}.cp-search:focus-within{border-color:var(--ink);outline:2px solid var(--signal);outline-offset:-1px}.cp-search input{border:0;outline:0;flex:1;min-width:0;font:14px var(--font);color:var(--ink);background:transparent}.cp-clear{border:0;background:none;font-size:17px;line-height:1;color:#8c8c8c;cursor:pointer;padding:2px 4px}.cp-group{display:flex;flex-direction:column;gap:6px}.cp-head{font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55}.cp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:6px}.cp-tile{display:flex;align-items:center;gap:10px;min-height:44px;padding:6px 10px 6px 8px;border:1px solid #e2dfd6;background:var(--white);text-align:left;cursor:pointer;font:500 13px var(--font);line-height:1.25;color:var(--ink)}.cp-tile:hover{border-color:#b9b5aa;background:#faf9f5}.cp-tile.on{border-color:var(--ink);background:#fff1ea;box-shadow:inset 0 0 0 1px var(--ink);font-weight:600}.cp-sym{flex:none;overflow:visible}.cp-box{fill:#fff;stroke:var(--ink);stroke-width:1.5}.cp-tile .g-icon{color:var(--ink)}.cp-label{flex:1;min-width:0}.cp-area{font:500 10px var(--mono);letter-spacing:.04em;text-transform:uppercase;color:#8c8c8c}.cp-more{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:4px 0;font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55;cursor:pointer}.cp-more:hover{color:var(--ink)}.cp-more span{font:500 11px var(--mono);color:#8c8c8c;letter-spacing:0}.cp-none{margin:4px 0;color:#5c5a55}.modal.add-asset{height:min(780px,calc(100vh - 32px))}.add-asset .modal-body{overflow:hidden;display:flex;flex-direction:column;gap:0;padding:0}.add-asset .cp{flex:1;min-height:0;overflow-y:auto;padding:14px 20px 16px}.aa-details{flex:none;display:flex;flex-direction:column;gap:10px;padding:12px 20px 14px;border-top:1px solid #e8e5dd;background:#faf9f5}.aa-row{display:flex;align-items:flex-end;gap:12px}.aa-indent{width:34px;flex:none;align-self:stretch;border-left:1px solid #ddd9cf;margin-left:16px;margin-top:-10px;width:18px}.aa-narrow{width:170px}.aa-label-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.aa-back{background:none;border:0;padding:0;font:500 11px var(--font);color:var(--signal-text);cursor:pointer}.aa-details.off .aa-sym{opacity:.35}.aa-sym{flex:none;margin-bottom:1px}.aa-field{display:flex;flex-direction:column;gap:4px;font:600 12px var(--font);color:#3a3935;width:220px}.aa-name{flex:1;width:auto}.aa-details .fi{height:32px}.aa-details .select-trigger.compact{min-height:32px;font-size:13px;border-width:1px;border-color:#ddd9cf;padding:0 8px}@media(max-width:640px){.aa-row{flex-wrap:wrap}.aa-field,.aa-narrow{width:100%}.aa-indent{display:none}}.walk-empty{flex:1;min-width:0;display:grid;place-items:center;padding:24px;background:#f6f4ee}.walk-empty-card{width:min(540px,100%)}.walk-empty-form{display:flex;align-items:flex-end;gap:10px;width:100%;margin-top:8px}.walk-empty-form .fi{height:40px;font-size:14px}.walk-empty-form .select-trigger.compact{min-height:40px;border-width:1px;border-color:#ddd9cf;font-size:13px;padding:0 10px}.walk-empty-form .btn-signal:disabled{opacity:.45;cursor:default}.walk-empty-form .aa-narrow{width:150px}.walk-empty-or{width:100%;display:flex;align-items:center;gap:10px;color:#8c8c8c;font-size:12px;margin-top:6px}.walk-empty-or:before,.walk-empty-or:after{content:"";flex:1;border-top:1px solid #e8e5dd}.walk-empty .ol-empty-actions{margin-top:0}.sheet-empty{margin:64px auto;max-width:420px;padding:0 24px;display:flex;flex-direction:column;align-items:flex-start;gap:10px}.sheet-empty h3{margin:0;font:700 18px var(--font);letter-spacing:-.01em}.sheet-empty p{margin:0;font-size:14px;line-height:1.5}.sheet-empty .btn-signal{margin-top:6px}@media(max-width:640px){.walk-empty-form{flex-wrap:wrap}.walk-empty-form .aa-narrow{width:100%}}.aa-newroom.flat{padding-top:2px}.modal .aa-row .aa-field .fi{height:32px}.modal .aa-row .select-trigger.compact{min-height:32px;font-size:13px;border-width:1px;border-color:#ddd9cf;padding:0 8px}.sheet-table td.c-missing{font-size:12px;max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sheet-table td.c-missing.bad{color:#b3261e}.sheet-table td.c-missing.muted{color:#8c8c8c}.sheet-table td.c-end{white-space:nowrap}.sheet-table td.c-end b{font:600 12px var(--mono)}.rail-section{margin-top:14px;padding-top:10px;border-top:1px solid var(--hair)}.rail-group{margin:2px 10px 6px;font:700 13px var(--font);color:var(--ink);letter-spacing:-.005em}.rail-section{margin-top:18px;padding-top:12px;border-top:1px solid var(--hair);display:flex;flex-direction:column;gap:1px}.building-head{gap:4px}.loc-pencil{width:22px;height:22px;display:grid;place-items:center;border:0;background:none;color:#5c5a55;cursor:pointer;opacity:0;transition:opacity .12s;flex:none}.building-head:hover .loc-pencil,.room-row:hover .loc-pencil,.loc-pencil:focus-visible{opacity:1}.loc-pencil:hover{color:var(--ink);background:#ece9e1}.room-row{position:relative}.room-row>.room{width:100%}.room-pencil{position:absolute;right:40px;top:50%;transform:translateY(-50%)}.locations .modal-body{gap:18px}.loc-building{display:flex;flex-direction:column;gap:6px}.loc-bhead{display:flex;align-items:center;gap:12px}.loc-bhead .muted{font-size:12px;white-space:nowrap}.loc-bname{font-weight:600;max-width:280px;height:32px}.loc-confirm{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;border:1px solid #e9c3bf;background:#fdf4f2;font-size:13px}.loc-confirm-inline{display:inline-flex;gap:8px;white-space:nowrap}.loc-table{width:100%;border-collapse:collapse}.loc-table th{text-align:left;font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55;padding:4px 6px;border-bottom:1px solid #e8e5dd}.loc-table td{padding:4px 6px;border-bottom:1px solid #f0ede6;vertical-align:middle}.loc-table .fi,.loc-table .select-trigger.compact{height:30px;min-height:30px;font-size:13px}.loc-table .select-trigger.compact{border-width:1px;border-color:#ddd9cf;padding:0 8px}.loc-table .c-name{width:34%}.loc-table .c-type{width:20%}.loc-table .c-level{width:80px}.loc-table .c-num{text-align:right;width:56px;font:500 12px var(--mono)}.loc-table .c-del{width:90px;text-align:right}.loc-table .icon-x{height:28px}.loc-add td{border-bottom:0;padding-top:6px}.loc-add .fi{border-style:dashed;background:#fbfaf6}.loc-add .fi:focus{border-style:solid;background:var(--white)}.add-link:disabled{opacity:.4;cursor:default}.modal.locations{height:min(780px,calc(100vh - 32px))}.sitebar-btn{background:none;border:0;cursor:pointer;font:500 13px var(--font);padding:0}.sitebar-export:disabled{opacity:.6;cursor:default}.imp-drop{position:relative;display:flex;align-items:center;gap:14px;padding:22px 18px;border:1.5px dashed #cfcbc0;background:#faf9f5;cursor:pointer;color:#5c5a55}.imp-drop:hover,.imp-drop.over{border-color:var(--ink);background:#fff1ea;color:var(--ink)}.imp-drop.has{border-style:solid;border-color:var(--ink);background:var(--white);color:var(--ink)}.imp-drop input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.imp-file{display:flex;flex-direction:column;gap:2px;font-size:13px}.imp-file b{font-size:14px;font-weight:600;color:var(--ink)}.imp-note{margin:0;font-size:13px;line-height:1.5}.imp-totals{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #e8e5dd}.imp-totals div{display:flex;flex-direction:column;gap:2px;padding:12px 14px}.imp-totals div+div{border-left:1px solid #e8e5dd}.imp-totals b{font:700 22px var(--font);letter-spacing:-.02em}.imp-totals span{font-size:12px;color:#5c5a55}.imp-classes{display:flex;flex-wrap:wrap;gap:6px}.imp-class{font-size:12px;padding:3px 8px;border:1px solid #e8e5dd;background:#faf9f5}.imp-class b{font-family:var(--mono);font-weight:600}.imp-skipped{margin:0;padding-left:16px;font:12px var(--mono);color:#3a3935;display:grid;gap:2px}.modal-filters{display:flex;flex-wrap:wrap;gap:8px;padding:10px 20px;border-top:1px solid #e8e5dd}.modal-filters .fi{flex:1;min-width:220px;height:32px}.modal-filters .mf-pick{width:200px}.modal-filters .select-trigger.compact{min-height:32px;border-width:1px;border-color:#ddd9cf;font-size:13px;padding:0 8px}.chip-row{display:flex;flex-wrap:wrap;gap:6px;padding:0 20px 10px;font-size:12px}.tag-chip{font:500 11px var(--font);padding:2px 7px;border:1px solid #ddd9cf;background:#faf9f5;color:#3a3935;white-space:nowrap}button.tag-chip{cursor:pointer}.tag-chip.on{border-color:var(--ink);background:#fff1ea;color:var(--ink)}.linked-row{display:flex;align-items:center;gap:10px;padding:8px 20px;border-top:1px solid #e8e5dd;background:#faf9f5;font-size:13px}.lib-pill{font:600 11px var(--font);padding:2px 8px;background:#e7f5ec;color:#1f7a45;white-space:nowrap}.match-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}.match-list button{width:100%;text-align:left;border:1px solid #e8e5dd;background:var(--white);padding:8px 10px;cursor:pointer;display:grid;gap:3px;font:inherit;color:var(--ink)}.match-list button:hover:not(:disabled){border-color:var(--ink);background:#faf9f5}.match-list button.on{border-color:var(--ink);background:#fff1ea}.match-list button:disabled{opacity:.55;cursor:default}.m-title{font-weight:600;font-size:13px}.m-sub{font-size:12px;color:#5c5a55}.m-tags{display:flex;flex-wrap:wrap;gap:4px}.modal-body .pad{padding:18px 2px}.lib-cell{display:inline-flex;align-items:center;gap:6px;max-width:100%;height:30px;padding:0 8px;border:1px dashed #cfcbc0;background:#faf9f5;font:12px var(--mono);color:#5c5a55;cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:24px}.lib-cell:hover{border-color:var(--ink);color:var(--ink)}.lib-cell.on{border-style:solid;border-color:#ddd9cf;background:var(--white);color:var(--ink)}.lib-cell.broken{border-color:#e9c3bf;color:#b3261e}.lib-cell .dot{width:7px;height:7px;border-radius:50%;background:#1d7a46;flex:none}.lib-row .lib-cell{justify-self:start}.na{color:#8c8c8c;font-size:12px}.settings{border:1px solid var(--hair, #e8e5dd)}.settings .seg-row{min-height:36px}.seg-ctl{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.seg-ctl .fi{width:90px;height:28px;font:12px var(--mono)}.seg-ctl .select-trigger.compact{min-height:28px;font-size:12px;border-width:1px;border-color:#ddd9cf;padding:0 8px;min-width:110px}.seg-static{font:12px var(--mono)}.dial{display:inline-flex;align-items:center;gap:6px;font-size:11px}.seg-toggle{display:inline-flex;border:1px solid #ddd9cf}.seg-toggle button{border:0;background:var(--white);padding:3px 8px;font:11px var(--mono);cursor:pointer}.seg-toggle button.on{background:var(--ink);color:var(--white)}.ct-ratio{display:flex;align-items:center;gap:6px;margin-right:24px}.calc-value.from-link{color:var(--ink)}.lib-cell{max-width:calc(100% - 24px);min-width:0}.seg-locked{color:#5c5a55;padding:3px 8px;border:1px solid #e8e5dd;background:#faf9f5}.seg-toggle button:disabled{opacity:.45;cursor:default}.select-trigger{min-width:0}.select-trigger>span:not(.select-chevron){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.fr>.select-trigger,.fr>button[role=combobox]{min-width:0;max-width:calc(100% - 24px)}.modal.gear-setup{height:min(800px,calc(100vh - 32px))}.gear-setup .modal-body{padding:0;display:flex;flex-direction:column;overflow:hidden}.gear-setup .modal-foot{justify-content:space-between}.gs-foot-r{display:flex;gap:8px}.gs-skip{border:0;background:none;padding:0;font:500 13px var(--font);color:#5c5a55;cursor:pointer;text-decoration:underline;text-underline-offset:3px;min-height:36px}.gs-skip:hover{color:var(--ink)}.gs-steps{flex:none;display:flex;gap:4px;padding:4px 20px 0;border-bottom:1px solid #e8e5dd}.gs-steps button{display:flex;align-items:center;gap:8px;border:0;border-bottom:2px solid transparent;background:none;padding:8px 12px 10px 2px;margin-right:14px;font:500 13px var(--font);color:#5c5a55;cursor:pointer;min-height:40px}.gs-steps button:hover{color:var(--ink)}.gs-steps button.on{color:var(--ink);border-bottom-color:var(--signal)}.gs-n{width:20px;height:20px;border:1px solid var(--line-strong);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font:600 11px var(--mono)}.gs-steps .on .gs-n{background:var(--signal);border-color:var(--signal);color:#fff}.gs-steps .done .gs-n{background:var(--ink);border-color:var(--ink);color:#fff}.gs-main{flex:1;min-height:0;display:flex}.gs-q{width:420px;flex:none;padding:18px 20px 20px;overflow-y:auto;border-right:1px solid #e8e5dd;font-size:13px}.gs-pane{display:flex;flex-direction:column;gap:18px;animation:gs-fade .25s ease-out}@keyframes gs-fade{0%{opacity:0;transform:translate(6px)}to{opacity:1;transform:none}}.gs-field{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;min-width:0}.gs-field.tight{gap:2px}.gs-field legend,.gs-q-h{font-weight:600;font-size:14px;padding:0}.gs-field legend{margin-bottom:8px}.gs-field.tight .gs-q-h{margin-bottom:6px}.gs-hint{color:#5c5a55;font-size:12px;margin:0}.gs-field .gs-hint{margin-top:-4px}.gs-cap{font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55}.gs-mono{font:500 12px var(--mono);color:#5c5a55;white-space:pre}b.gs-mono{color:var(--ink);font-weight:600}.gs-note{margin:0;padding:10px 12px;background:var(--ivory);font-size:12px;color:#3d3b37}.gs-warn{margin:0;padding:8px 10px;background:#fbedeb;color:#8a1c15;font-size:12px}.gs-tl{display:flex;flex-direction:column;gap:1px;text-align:left}.gs-tl b{font-weight:600}.gs-tl>span{color:#5c5a55;font-size:12px}.gs-opt{display:flex;gap:12px;align-items:center;border:1px solid #e2dfd6;background:#fff;padding:10px 12px;cursor:pointer;min-height:56px;color:var(--ink);font:inherit}.gs-opt:hover{border-color:#b9b5aa}.gs-opt.on{border-color:var(--ink);background:#fff1ea;box-shadow:inset 0 0 0 1px var(--ink)}.gs-seg{display:grid}.gs-seg button{border:1px solid #ddd9cf;margin-left:-1px;background:#fff;min-height:36px;font:500 12px var(--font);color:var(--ink);cursor:pointer;padding:0 6px}.gs-seg button:first-child{margin-left:0}.gs-seg button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.gs-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:4px}.gs-pair label{display:flex;flex-direction:column;gap:4px;color:#5c5a55;font-size:12px}.gs-pair label>span{display:flex;align-items:center;gap:6px}.gs-pair input{flex:1;min-width:0;height:34px;font:14px var(--mono)}.gs-pair i{font:500 11px var(--mono);font-style:normal;color:var(--ink)}.gs-stepper{display:inline-flex;align-items:center}.gs-stepper button{width:36px;height:36px;border:1px solid #ddd9cf;background:#fff;font-size:17px;cursor:pointer;color:var(--ink)}.gs-stepper button:hover{background:#faf9f5}.gs-stepper output{width:44px;height:36px;border-top:1px solid #ddd9cf;border-bottom:1px solid #ddd9cf;display:flex;align-items:center;justify-content:center;font:600 15px var(--mono)}.gs-stepper.big{margin-top:4px}.gs-stepper.big button{width:44px;height:44px;font-size:20px}.gs-stepper.big output{width:64px;height:44px;font-size:20px}.gs-toggle{display:flex;align-items:center;gap:12px;border:0;background:none;padding:0;cursor:pointer;color:var(--ink);min-height:44px;font:inherit}.gs-switch{width:32px;height:18px;border-radius:9px;background:var(--line-strong);flex:none;padding:2px;display:flex;transition:background .18s}.gs-switch>span{width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .18s}.gs-switch.on{background:var(--ink)}.gs-switch.on>span{transform:translate(14px)}.gs-gaps{display:flex;flex-wrap:wrap;gap:6px}.gs-gaps button{border:1px solid #ddd9cf;background:#fff;min-height:36px;min-width:56px;padding:0 10px;font:500 12px var(--mono);color:var(--ink);cursor:pointer}.gs-gaps button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.gs-tabs{display:flex;flex-wrap:wrap;gap:6px}.gs-tabs button{display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #ddd9cf;background:#fff;min-width:52px;min-height:44px;padding:2px 8px;cursor:pointer;color:var(--ink)}.gs-tabs button b{font:600 14px var(--mono)}.gs-tabs button span{font-size:10px;color:#5c5a55}.gs-tabs button.on{border-color:var(--ink);background:#fff1ea}.gs-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid #f0ede6}.gs-rl{font-weight:500;color:var(--ink)!important;font-size:13px!important}.gs-row .gs-tl>span:last-child{color:#8c8c8c;font-size:11px}.gs-meter{display:flex;flex-direction:column;gap:6px;font-size:12px}.gs-meter>div:first-child{display:flex;justify-content:space-between;color:#5c5a55}.gs-meter b{font:600 12px var(--mono);color:var(--ink)}.gs-cells{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:3px}.gs-cells span{height:10px;background:#e8e5dd;transition:background .2s}.gs-cells .m{background:#5c5a55}.gs-cells .u{background:var(--signal)}.gs-cells .x{background:#b3261e}.gs-review{margin:0;display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px 12px}.gs-review dt{color:#5c5a55}.gs-review dd{margin:0}.gs-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.gs-counts div{border:1px solid #e2dfd6;padding:10px 12px;display:flex;flex-direction:column}.gs-counts b{font:600 22px var(--mono)}.gs-counts span{color:#5c5a55;font-size:12px}.gs-view{flex:1;min-width:0;background:var(--ivory);display:flex;flex-direction:column;padding:14px 20px}.gs-view-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.gs-view-head .gs-cap{font-family:var(--mono)}.gs-legend{display:flex;gap:10px;font-size:11px;color:#5c5a55}.gs-legend b{font:600 10px var(--mono);color:var(--ink)}.gs-stage{flex:1;min-height:0;overflow:auto;display:flex;align-items:center;justify-content:center;padding:8px 0}.gs-lineup{display:flex;align-items:flex-start;gap:6px;margin:auto}.gs-col{border:0;background:none;padding:0;cursor:pointer;display:flex;flex-direction:column;color:var(--ink);flex:none;transition:opacity .2s}.gs-bus-l{height:16px;font:600 10px var(--mono);letter-spacing:.06em;color:#5c5a55;text-align:left}.gs-bar{height:5px;background:var(--ink);margin:0 -3px}.gs-num{display:flex;justify-content:center;padding:6px 0 5px}.gs-num span{min-width:22px;height:20px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;font:600 11px var(--mono);transition:background .2s,color .2s}.gs-body{position:relative;height:380px;border:1.5px solid var(--ink);background:#fff;padding:4px;display:flex;flex-direction:column;gap:4px;overflow:hidden;transition:border-color .2s,box-shadow .2s}.gs-col:hover .gs-body{border-color:#5c5a55}.gs-col.hl .gs-num span{background:var(--signal);color:#fff}.gs-col.hl .gs-body,.gs-col.sel .gs-body,.gs-col.hl:hover .gs-body,.gs-col.sel:hover .gs-body{border-color:var(--signal)}.gs-col.sel .gs-body{box-shadow:0 0 0 2px #ffd9c7}.gs-col.sel .gs-num span{color:var(--signal-text)}.gs-col.dim{opacity:.45}.gs-col.over .gs-body{border-color:#b3261e}.gs-dev{flex:none;border:1px solid var(--line-strong);background:#faf9f5;display:flex;align-items:center;gap:5px;padding:0 5px;overflow:hidden;animation:gs-pop .28s ease-out}.gs-dev.tall{flex-direction:column;justify-content:center}.gs-dev.space{border-style:dashed;background:transparent;color:#8c8c8c}.gs-dev.hl{outline:2px solid var(--signal);outline-offset:1px;background:#fff1ea;animation:gs-pulse 1.8s ease-in-out infinite}@keyframes gs-pop{0%{opacity:0;transform:translateY(-6px) scale(.96)}to{opacity:1;transform:none}}@keyframes gs-pulse{0%,to{outline-color:var(--signal)}50%{outline-color:#ff4e0a4d}}.gs-glyph{flex:none}.gs-dl{display:flex;flex-direction:column;min-width:0;line-height:1.15}.gs-dev.tall .gs-dl{align-items:center}.gs-dl b{font:600 10px var(--mono);white-space:nowrap}.gs-dl span{font:500 9px var(--mono);color:#5c5a55;white-space:nowrap}.gs-more{position:absolute;left:0;right:0;bottom:0;background:#fff;border-top:1px solid #e8e5dd;font:600 10px var(--mono);color:var(--signal-text);text-align:center;padding:4px 0}.gs-col.over .gs-more{color:#b3261e}.gs-mainsec{flex:1;display:flex;align-items:center;justify-content:center;font:500 9px var(--mono);color:#8c8c8c;letter-spacing:.06em;text-transform:uppercase}.gs-tiecol{flex:none;display:flex;flex-direction:column;align-items:center}.gs-tiebar{height:5px;display:flex;width:100%;justify-content:space-between}.gs-tiebar span{width:30%;background:var(--ink)}.gs-tie{margin-top:8px;width:46px;height:64px;border:1.5px solid var(--ink);background:#fff;flex-direction:column;justify-content:center;gap:2px;padding:0}.gs-tie b{font:600 10px var(--mono)}.gs-view-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;border-top:1px solid #e2dfd6;padding-top:10px}.gs-view-foot p{margin:0;color:#5c5a55;font-size:12px;max-width:300px}.gs-chips{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px}.gs-chips span{border:1px solid #ddd9cf;background:#fff;padding:2px 8px;font:500 11px var(--mono);white-space:nowrap}@media(max-width:900px){.gs-main{flex-direction:column;overflow-y:auto}.gs-q{width:auto;border-right:0;overflow:visible}.gs-view{min-height:520px}}@media(prefers-reduced-motion:reduce){.gs-dev,.gs-pane,.gs-dev.hl{animation:none}}.fs-label-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px}.fs-label-row .fs-label{margin:0}.btn.dm-open{min-height:26px;font-size:12px;padding:0 8px}.modal.dev-mgr{height:min(860px,calc(100vh - 32px))}.dev-mgr .modal-body{padding:0;display:flex;flex-direction:column;overflow:hidden}.dev-mgr .modal-foot{justify-content:space-between}.dm-note{color:#1f6b3a;font-size:13px}.dm-bar{flex:none;display:flex;align-items:center;gap:16px;padding:0 20px;border-bottom:1px solid #e8e5dd;min-height:48px;flex-wrap:wrap}.dm-progress{display:flex;align-items:center;gap:10px;margin-left:auto;font-size:13px;color:#5c5a55}.dm-progress b{color:var(--ink);font-family:var(--mono)}.dm-meter{width:140px;height:6px;background:#e8e5dd;display:block}.dm-meter span{display:block;height:100%;background:#1f8a4c;transition:width .3s}.dm-pct{font:600 12px var(--mono);color:var(--ink);min-width:36px}.dm-only{display:flex;align-items:center;gap:6px;font-size:13px;color:#3d3b37;cursor:pointer}.dm-main{flex:1;min-height:0;display:flex}.dm-lineup{flex:1;min-width:0;background:var(--ivory);padding:16px 20px;display:flex;gap:10px;align-items:stretch;overflow-x:auto}.dm-col{width:196px;flex:none;display:flex;flex-direction:column;min-height:0}.dm-col.mains{width:180px}.dm-col-h{display:flex;justify-content:space-between;align-items:baseline;padding:0 2px 6px;border-bottom:5px solid var(--ink);margin-bottom:6px}.dm-col-h b{font:600 12px var(--font)}.dm-col-h span{font:500 11px var(--mono);color:#5c5a55}.dm-col-b{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:4px;border:1.5px solid var(--ink);background:#fff;padding:5px}.dm-dev{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 8px;border:1px solid var(--line-strong);background:#faf9f5;text-align:left;cursor:pointer;color:var(--ink);font:inherit;flex:none;transition:border-color .15s,background .15s,opacity .15s}.dm-dev:hover{border-color:#8c8a84}.dm-dev.on{border-color:var(--signal);background:#fff1ea;box-shadow:inset 0 0 0 1px var(--signal)}.dm-dev.src{border-color:var(--ink);background:#fff1ea;box-shadow:inset 0 0 0 1px var(--ink)}.dm-dev.target{border-color:var(--signal);background:#fff7f2}.dm-dev.dim{opacity:.4}.dm-dev-t{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}.dm-dev-t b{font:600 12px var(--mono)}.dm-dev-t span{font-size:11px;color:#5c5a55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dm-dot{width:8px;height:8px;border-radius:50%;flex:none;background:#cfcbc0}.dm-dot.ok{background:#1f8a4c}.dm-dot.gap{background:#b3261e}.dm-miss{flex:none;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#fbedeb;color:#8a1c15;font:600 10px var(--mono);display:inline-flex;align-items:center;justify-content:center}.dm-check{width:16px;height:16px;flex:none;border:1.5px solid #8c8a84;background:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}.dm-check.on{background:var(--signal);border-color:var(--signal);color:#fff}.dm-dev.src .dm-check{border-color:var(--ink);background:var(--ink);color:#fff}.dm-empty{color:#8c8c8c;font-size:12px;text-align:center;padding:12px 0}.dm-none{color:#5c5a55;margin:auto}.dm-side{width:440px;flex:none;border-left:1px solid #e8e5dd;display:flex;flex-direction:column;min-height:0}.dm-nav{flex:none;display:flex;align-items:center;gap:6px;padding:10px 16px;border-bottom:1px solid #e8e5dd;font:500 12px var(--mono)}.dm-nav>span{flex:1;text-align:center}.dm-nav .btn{min-width:32px}.dm-nav .dm-copy{font-family:var(--font);margin-left:8px}.dm-panel{flex:1;min-height:0;overflow-y:auto;padding:4px 16px 20px}.dm-copypane{flex:1;min-height:0;overflow-y:auto;padding:14px 16px 16px;display:flex;flex-direction:column;gap:8px;font-size:13px}.dm-copy-h{display:flex;justify-content:space-between;align-items:center}.dm-copy-h h3{font-size:15px}.dm-cap{font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55;margin-top:8px}.dm-hint{margin:0;color:#5c5a55;font-size:12px}.dm-keys{display:flex;flex-direction:column;border:1px solid #e8e5dd;max-height:260px;overflow-y:auto}.dm-opt{display:flex;align-items:center;gap:10px;padding:6px 10px;border-bottom:1px solid #f0ede6;cursor:pointer}.dm-opt:last-child{border-bottom:0}.dm-opt>span{flex:1;display:flex;justify-content:space-between;gap:8px;min-width:0}.dm-opt>span>span{color:#5c5a55}.dm-opt b{font-weight:600;font-family:var(--mono);font-size:12px;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-opt.link{border:1px solid var(--ink);background:#fff1ea}.dm-opt.link>span{flex-direction:column;gap:1px}.dm-opt.link b{font-family:var(--font);text-align:left;font-size:13px}.dm-opt.locked{color:#8c8c8c;cursor:default}.dm-chips{display:flex;flex-wrap:wrap;gap:6px}.dm-chips button{border:1px solid #ddd9cf;background:#fff;min-height:32px;padding:0 10px;font:500 12px var(--font);cursor:pointer;color:var(--ink)}.dm-chips button:hover:not(:disabled){border-color:var(--ink)}.dm-chips button span{font-family:var(--mono);color:#5c5a55;margin-left:2px}.dm-chips button:disabled{opacity:.45;cursor:default}.dm-warn{margin:4px 0 0;padding:8px 10px;background:#fbedeb;color:#8a1c15;font-size:12px;display:flex;flex-direction:column;gap:4px}.dm-warn ul{margin:0;padding-left:16px}.dm-warn li b{font-family:var(--mono)}.dm-copy-go{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:auto;padding-top:12px}@media(max-width:1000px){.dm-main{flex-direction:column;overflow-y:auto}.dm-side{width:auto;border-left:0;border-top:1px solid #e8e5dd}.dm-lineup{min-height:420px}}.gd-progress{display:flex;align-items:center;gap:8px;font-size:12px;color:#5c5a55;margin:2px 0 6px}.gd-progress b{color:var(--ink);font-family:var(--mono)}.gd-progress .dm-meter{flex:1;width:auto}.gd-groups{display:flex;flex-direction:column;border:1px solid #e8e5dd}.gd-row{display:flex;align-items:center;gap:10px;padding:8px 10px;min-height:44px;border:0;border-bottom:1px solid #f0ede6;background:#fff;text-align:left;cursor:pointer;font:inherit;color:var(--ink)}.gd-row:last-child{border-bottom:0}.gd-row:hover{background:#faf9f5}.gd-t{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}.gd-t b{font-weight:600;font-size:13px}.gd-t span{font-size:11px;color:#5c5a55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gd-n{font:600 12px var(--mono);color:#8a1c15}.gd-n.ok{color:#1f6b3a}.btn.gd-open{margin-top:8px;width:100%;justify-content:center}.dm-add{flex:none;border:1px dashed #b9b5aa;background:none;min-height:36px;font:600 12px var(--font);color:var(--signal-text);cursor:pointer;margin-top:2px}.dm-add:hover:not(:disabled){border-color:var(--signal);background:#fff7f2}.dm-addsec{width:150px;border:1.5px dashed #b9b5aa;background:transparent;cursor:pointer;align-items:center;justify-content:center;gap:4px;font:600 13px var(--font);color:var(--signal-text)}.dm-addsec:hover{border-color:var(--signal);background:#fff7f2}.dm-addsec .muted{font:500 11px var(--mono);color:#8c8c8c}.dm-col-h{gap:6px}.dm-col-h>span{margin-left:auto}.dm-drop{border:0;background:none;padding:2px 3px;color:#8c8c8c;cursor:pointer;display:inline-flex;align-items:center;min-width:22px;min-height:22px;justify-content:center}.dm-drop:hover:not(:disabled){color:#b3261e;background:#fbedeb}.canvas .marquee{fill:#ff4e0a12;stroke:var(--signal);stroke-width:1;stroke-dasharray:4 3}.tb-btn.on{background:var(--ink);color:#fff;border-color:var(--ink)}.tb-btn svg{vertical-align:-2px;margin-right:4px}.bulk-bar{position:absolute;bottom:16px;left:50%;transform:translate(-50%);z-index:20;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--ink);box-shadow:0 6px 20px #08080824;padding:6px 6px 6px 14px;font-size:13px;max-width:calc(100% - 32px)}.bulk-bar b{white-space:nowrap}.bulk-sum{color:#5c5a55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:360px}.bulk-note-inline{color:#1f6b3a;font-size:12px;max-width:320px}.bulk-bar.note{color:#1f6b3a;padding:6px 6px 6px 14px;border-color:#1f6b3a}.bulk-bar .danger-text{color:#b3261e}.bulk-bar .btn.compact{min-height:30px}.panel.bulk .bulk-note{margin:0 0 8px;font-size:12px;color:#5c5a55;background:var(--ivory);padding:8px 10px}.bulk-classes{display:flex;flex-direction:column;border:1px solid #e8e5dd;margin:8px 0}.bulk-class{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 12px;border:0;border-bottom:1px solid #f0ede6;background:#fff;text-align:left;cursor:pointer;font:inherit;color:var(--ink)}.bulk-class:last-child{border-bottom:0}.bulk-class:hover{background:#faf9f5}.bulk-class b{font:600 14px var(--mono);min-width:24px}.bulk-class span:nth-child(2){flex:1}.select-what button.on{background:var(--ink);color:#fff}.sheet-tools{display:flex;align-items:center;gap:10px;padding:8px 20px;border-bottom:1px solid #e8e5dd;flex-wrap:wrap;font-size:13px}.sheet-search{display:flex;align-items:center;gap:6px;border:1px solid #ddd9cf;padding:0 8px;min-height:32px;background:#fff;color:#8c8c8c;flex:1;max-width:320px}.sheet-search:focus-within{border-color:var(--ink)}.sheet-search input{border:0;outline:0;flex:1;min-width:0;font:13px var(--font);background:transparent;color:var(--ink)}.sheet-class{width:200px}.sheet-check{display:flex;align-items:center;gap:6px;color:#3d3b37;cursor:pointer}.sheet-table tr.dev-row-sheet td{font-size:12px;padding-top:5px;padding-bottom:5px;background:#fcfbf8}.sheet-table tr.dev-row-sheet.on td{background:#fff1ea}.sheet-table td.c-dev{padding-left:34px;position:relative}.sheet-table td.c-dev:before{content:"";position:absolute;left:18px;top:0;bottom:50%;width:9px;border-left:1px solid #cfcbc0;border-bottom:1px solid #cfcbc0}.sheet-table tr.sheet-none td{color:#5c5a55;padding:18px 20px;cursor:default}.photo-tile{position:relative;overflow:hidden}.photo-tile.has{padding:0;border:1px solid var(--line-strong);background:#f0ede6;cursor:pointer}.photo-tile.has img{width:100%;height:100%;object-fit:cover;display:block}.photo-tile.has .photo-cap{position:absolute;left:0;right:0;bottom:0;padding:3px 6px;background:#0808089e;color:#fff;font-size:10px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photo-tile.has:hover{border-color:var(--ink)}.photo-tile.add{cursor:pointer}.photo-tile.add:hover:not(:disabled),.photo-tile.add.over{border-color:var(--signal);color:var(--signal-text);background:#fff7f2}.photo-tile.add .req{color:#b3261e}.photo-spin{width:16px;height:16px;border:2px solid #e2dfd6;border-top-color:var(--signal);border-radius:50%;animation:photo-spin .8s linear infinite}@keyframes photo-spin{to{transform:rotate(360deg)}}.photo-view .modal-body{padding:0;background:#111;display:flex}.photo-big{flex:1;display:flex;align-items:center;justify-content:center;min-height:360px;max-height:calc(100vh - 220px)}.photo-big img{max-width:100%;max-height:calc(100vh - 220px);object-fit:contain;display:block}.photo-view .modal-foot .spacer{flex:1}.sitebar.appbar{gap:4px 16px}.sitebar-tabs a{display:inline-flex;align-items:center;color:#a8a8a8;font:500 13px var(--font);padding:0 12px;border-bottom:2px solid transparent;text-decoration:none}.sitebar-tabs a:hover{color:var(--white)}.sitebar-tabs a.active{color:var(--white);font-weight:600;border-bottom-color:var(--signal)}.appbar-org{font:500 12px var(--mono);color:#a8a8a8;display:inline-flex;align-items:center;gap:8px}.page.pg{--k: .72;font-size:13px;padding:18px 24px 48px;gap:16px}.pg .display{font-style:normal;font-weight:700;letter-spacing:-.01em;line-height:1.2}.pg .title-page,.pg .title-hero{font-size:20px}.pg .title-section{font-size:15px;font-weight:700}.pg .title-sub{font-size:13px;font-weight:700}.pg .eyebrow{font:600 11px var(--font);letter-spacing:.06em;color:#5c5a55}.pg-head{display:flex;align-items:center;gap:10px;min-height:32px}.pg-head h1{font-size:20px;font-weight:700}.pg-count{font:500 12px var(--mono);color:#5c5a55}.pg-sheet{background:var(--white);border:1px solid var(--line)}.pg-sheet .sheet-tools{background:#faf9f5}.pg .sheet-table{min-width:0}.pg .sheet-table td.c-chev,.pg .sheet-table th.c-chev{width:28px;text-align:right}.pg-empty{background:var(--white);border:1px solid var(--line);padding:48px 24px}.pg .btn{min-height:32px;padding:0 12px;gap:8px;font-size:13px}.pg .input{min-height:32px;padding:0 10px;font-size:13px;border-width:1px}.pg textarea.input{padding:8px 10px;min-height:64px}.pg .field{gap:4px}.pg .field label{font-size:12px;font-weight:600;color:#3d3b37}.pg .card{padding:16px 18px}.pg .card-dark{background:var(--white);color:var(--ink);border:1px solid var(--line);padding:16px 18px}.pg .card-dark .muted{color:#5c5a55}.pg .card-dark .btn-primary{color:var(--ink)}.pg .list>li{padding:10px 14px}.pg .table-wrap table{min-width:0}.pg th{padding:8px 12px;font:600 11px var(--font);letter-spacing:.06em;text-transform:uppercase;color:#5c5a55;border-bottom:1px solid var(--line)}.pg td{padding:8px 12px}.pg .site-row{padding:12px 16px}.pg .sheet-table .row-btn{font:600 13px var(--font);text-decoration:none;color:var(--ink)}.pg .sheet-table .row-btn:hover{color:var(--signal-text)}.pg a.btn-ink,.pg a.btn-signal{display:inline-flex;align-items:center;text-decoration:none;min-height:32px;font-weight:600}.pg a.btn-ink:hover{color:var(--white);background:#262626}.pg .select-trigger{min-height:32px;font-size:13px;padding:0 10px;border-width:1px}.pg .btn-primary{font-size:13px}.fs.photos{gap:8px}.fs.photos.over{outline:2px dashed var(--signal);outline-offset:2px;background:#fff7f2}.photo-slot{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;gap:8px;padding:3px 4px;margin:0 -4px;border:1px solid transparent}.photo-slot.over{border-color:var(--signal);background:#fff7f2}.photo-slot-head{display:flex;align-items:center;gap:6px;font:500 12px var(--font);color:#3b3a36;min-width:0}.photo-slot-head .req{color:#b3261e}.photo-slot.missing .photo-slot-head{color:#8a5a00}.photo-count{font:600 10px var(--mono);color:#5c5a55;background:#efece4;padding:1px 5px}.photo-strip{display:flex;flex-wrap:wrap;gap:6px}.photo-strip .photo-tile{width:52px;height:52px;aspect-ratio:auto}.photo-strip .photo-tile.add{width:36px}.photo-strip .photo-tile.add{border-style:dashed;color:#8a877f}.photo-tile.busy{border:1px solid var(--hair);background:#faf9f5}.photo-tile.has[draggable=true]{cursor:grab}.photo-drop-hint{margin:0;font:11px var(--font);color:#8a877f}.photo-move{display:inline-flex;gap:6px;align-items:center;margin-left:8px}.photo-slot:not(:has(.photo-tile.has,.photo-tile.busy)) .photo-tile.add{height:28px;width:52px}.fs.photos .fs-label-row .btn{height:28px;padding:0 12px}
