:root{--bg:#17181b;--card:#212327;--card-2:#2a2d32;--line:#34383f;--text:#e9edf2;--muted:#949aa4;--accent:#a6e22e;--accent-ink:#14170c;--danger:#e0483d;--radius:14px;--tap:52px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);overscroll-behavior-y:none;font:15px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow:hidden}#root,.app{height:100dvh}.muted{color:var(--muted)}.small{font-size:12px}code{background:#000;border-radius:5px;padding:1px 5px;font-size:12px}.signin{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:100%;padding:32px;display:flex}.login-form{flex-direction:column;gap:12px;width:min(320px,100%);display:flex}.login-form input{height:var(--tap);text-align:center;background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:var(--radius);padding:0 14px;font-size:17px}.login-form input:focus{border-color:var(--accent);outline:none}.login-form p{margin:0}.brand{letter-spacing:-.5px;font-size:30px;font-weight:800}.brand:first-letter{color:var(--accent)}.app{flex-direction:column;height:100dvh;display:flex}.topbar{z-index:5;padding:calc(env(safe-area-inset-top,0) + 10px) calc(env(safe-area-inset-right,0) + 12px) 10px calc(env(safe-area-inset-left,0) + 12px);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#17181beb;align-items:center;gap:10px;display:flex;position:sticky;top:0}.topbar-title{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:18px;font-weight:700;overflow:hidden}.logo{color:var(--accent);text-align:center;width:40px;font-size:18px;font-weight:800}.icon-btn{width:40px;height:40px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;display:flex}.icon-btn:active{background:var(--card-2)}.icon-btn.text{background:var(--card-2);color:var(--accent);font-weight:700}.lang-btn{letter-spacing:.5px;font-size:13px}.content{padding:10px calc(env(safe-area-inset-right,0) + 12px) calc(env(safe-area-inset-bottom,0) + 76px) calc(env(safe-area-inset-left,0) + 12px);-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}body.modal-open .content{overflow:hidden}.tabbar{z-index:6;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding-bottom:max(env(safe-area-inset-bottom,0) - 14px, 4px);padding-left:env(safe-area-inset-left,0);padding-right:env(safe-area-inset-right,0);background:#17181bf0;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{cursor:pointer;min-height:40px;color:var(--muted);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:7px 0 5px;font-size:11px;font-weight:700;line-height:1;display:flex}.tab.active{color:var(--accent)}.tab .ic{stroke-width:2px;color:currentColor;width:34px;height:34px}.detail-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;padding:14px}.detail-title{font-size:18px;font-weight:700}.status-btn{background:var(--card-2);border:1px solid var(--line);cursor:pointer;border-radius:999px;margin-top:10px;padding:6px 14px;font-weight:700}.section-label{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:6px 2px;font-size:12px}.row.static{cursor:default}.row.static:active{background:0 0}.overlay.center{justify-content:center;align-items:center;padding:24px}.dialog{background:var(--bg);border:1px solid var(--line);width:100%;max-width:420px;max-height:calc(100dvh - 32px - env(safe-area-inset-top,0) - env(safe-area-inset-bottom,0));border-radius:16px;flex-direction:column;gap:12px;padding:18px;display:flex;overflow-y:auto}.dialog-title{font-size:16px;font-weight:700}.input{background:var(--card);width:100%;height:46px;color:var(--text);border:1px solid var(--line);border-radius:10px;outline:none;padding:0 14px;font-size:15px}.input:focus{border-color:var(--accent)}.input.textarea{resize:vertical;height:auto;min-height:96px;font:inherit;padding:12px 14px;line-height:1.4}.dialog-actions{gap:10px;margin-top:4px;display:flex}.action-sheet{background:var(--bg);width:100%;padding:10px 10px calc(env(safe-area-inset-bottom,0) + 10px);border-top-left-radius:18px;border-top-right-radius:18px;flex-direction:column;gap:8px;animation:.18s ease-out rise;display:flex}.action-title{text-align:center;color:var(--muted);padding:8px;font-size:13px}.action-item{background:var(--card);color:var(--text);cursor:pointer;border:none;border-radius:12px;padding:15px;font-size:16px;font-weight:600}.action-item:active{background:var(--card-2)}.action-item.danger{color:#ff9c93}.action-item.cancel{background:var(--card-2);font-weight:700}.progress{background:linear-gradient(90deg, transparent, var(--accent), transparent);background-size:40% 100%;height:3px;animation:1.1s linear infinite slide}@keyframes slide{0%{background-position:-40% 0}to{background-position:140% 0}}.banner{border-radius:10px;margin:8px 0;padding:10px 12px;font-size:13px}.banner.error{color:#ff9c93;background:#e0483d29}.empty{text-align:center;color:var(--muted);padding:40px 12px}.empty.stack{flex-direction:column;align-items:center;gap:8px;display:flex}.big-ext{color:var(--accent);letter-spacing:1px;font-size:40px;font-weight:800}.list{margin:0;padding:0;list-style:none}.row{min-height:var(--tap);border-bottom:1px solid var(--line);cursor:pointer;align-items:center;gap:12px;padding:10px 12px;display:flex}.row:active{background:var(--card-2)}.row-name{flex:1;font-weight:600}.row-name .sub{margin-top:2px;font-size:12px;font-weight:400}.chev{color:var(--muted);font-size:22px}.ic.folder{color:#cdd3db}.ic.project{color:var(--accent)}.badge{text-transform:uppercase;letter-spacing:.4px;background:var(--card-2);color:var(--muted);border-radius:999px;padding:3px 8px;font-size:11px}.badge.released{color:var(--accent)}.badge.obsolete{color:#ff9c93}.tiles{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;display:grid}.tile{border:1px solid var(--line);background:var(--card);border-radius:var(--radius);color:var(--text);cursor:pointer;text-align:center;flex-direction:column;align-items:center;gap:8px;padding:12px;display:flex}.tile:active{background:var(--card-2)}.tile-thumb{aspect-ratio:4/3;color:#5b626e;background:#101216;border-radius:8px;justify-content:center;align-items:center;width:100%;display:flex;position:relative}.tile-thumb .ext{color:var(--accent);font-size:10px;font-weight:700;position:absolute;bottom:6px;right:8px}.tile-name{word-break:break-word;font-size:12px;font-weight:600}.tile-meta{color:var(--muted);font-size:11px}.tile-wrap{display:flex;position:relative}.tile-wrap>.tile{flex:1;width:100%}.tile-wrap.excluded>.tile{opacity:.45}.tile-menu{z-index:2;width:34px;height:34px;color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#17181bb8;border:none;border-radius:8px;font-size:20px;line-height:1;position:absolute;top:4px;right:4px}.tile-menu:active{background:var(--card-2)}.tile-comments{color:var(--text);background:#17181bd1;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:700;position:absolute;bottom:6px;left:6px}.tile-excluded{z-index:2;text-transform:uppercase;letter-spacing:.4px;color:#ff9c93;background:#e0483d33;border-radius:999px;padding:3px 8px;font-size:10px;font-weight:700;position:absolute;top:6px;left:6px}.version-actions{gap:10px;margin-bottom:14px;display:flex}.version-actions .primary,.version-actions .ghost{flex:1;justify-content:center}.version-actions button:disabled{opacity:.5;cursor:default}.primary{background:var(--accent);color:var(--accent-ink);cursor:pointer;border:none;border-radius:12px;padding:12px 18px;font-weight:700}.primary:active{filter:brightness(.92)}.primary.big{padding:14px 28px;font-size:16px}.primary.block{text-align:center;margin:12px;text-decoration:none;display:block}.overlay{z-index:20;background:#0009;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);width:100%;max-height:min(92%,92dvh);padding-bottom:env(safe-area-inset-bottom,0);border-top-left-radius:18px;border-top-right-radius:18px;flex-direction:column;animation:.18s ease-out rise;display:flex;overflow:hidden}@keyframes rise{0%{opacity:.6;transform:translateY(30px)}to{opacity:1;transform:none}}.sheet-head{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:14px 14px 10px;display:flex}.sheet-title{flex:1;min-width:0}.sheet-name{word-break:break-word;font-weight:700}.sheet-body{overscroll-behavior:contain;flex-direction:column;flex:1;justify-content:flex-start;align-items:stretch;min-height:0;padding:12px;display:flex;overflow:auto}.preview-img{background:#fff;border-radius:8px;align-self:center;max-width:100%;max-height:70vh;margin:auto}.preview-pdf{background:#fff;border:none;border-radius:8px;width:100%;height:70vh}.pdf-pages{flex-direction:column;align-items:stretch;gap:10px;width:100%;display:flex}.pdf-page{background:#fff;border-radius:6px;width:100%;height:auto;display:block}.preview-text{white-space:pre-wrap;word-break:break-word;color:#cdd3db;background:#0f1114;border-radius:8px;width:100%;max-height:70vh;margin:0;padding:12px;font:12px/1.5 ui-monospace,monospace;overflow:auto}.dxf-wrap{flex-direction:column;flex:1;width:100%;min-height:0;display:flex}.dxf-canvas{touch-action:none;background:#000;border-radius:8px;flex:1;width:100%;min-height:240px;overflow:hidden}.dxf-canvas canvas{display:block}.dxf-toolbar{align-items:center;gap:10px;margin-top:10px;display:flex}.dxf-dims{color:var(--accent);font-variant-numeric:tabular-nums;flex:1;font-weight:700}.dxf-zoom{gap:8px;display:flex}.dxf-zoom button{border:1px solid var(--line);background:var(--card-2);min-width:52px;height:44px;color:var(--text);cursor:pointer;border-radius:10px;font-size:20px;font-weight:700}.dxf-zoom button:active{background:#3a3f47}.model3d-wrap{flex-direction:column;flex:1;width:100%;min-height:0;display:flex}.model3d-canvas{touch-action:none;background:#111;border-radius:8px;flex:1;width:100%;min-height:260px;overflow:hidden}.model3d-canvas canvas{touch-action:none;display:block}.sheet-actions{gap:10px;padding:12px;display:flex}.flex{flex:1}.ghost{background:var(--card-2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;padding:12px 18px;font-weight:600;text-decoration:none;display:flex}.ghost:active{filter:brightness(1.15)}.build-tag{z-index:10;right:calc(env(safe-area-inset-right,0) + 10px);bottom:calc(env(safe-area-inset-bottom,0) + 58px);color:#7b828c;cursor:pointer;border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#17181bb8;border-radius:999px;padding:7px 11px;font-size:10px;line-height:1;position:fixed}.build-tag:active{background:var(--card-2)}.close-bar{background:var(--card-2);color:var(--text);cursor:pointer;border:none;border-radius:12px;margin:0 12px 12px;padding:14px;font-size:15px;font-weight:700}.close-bar:active{filter:brightness(1.2)}.changelog{align-items:stretch;display:block}.cl-entry{border-bottom:1px solid var(--line);padding:12px 2px}.cl-head{align-items:center;gap:8px;display:flex}.cl-title{flex:1;font-weight:700}.cl-tag{text-transform:uppercase;letter-spacing:.4px;background:var(--card-2);color:var(--muted);border-radius:999px;padding:3px 8px;font-size:10px}.cl-tag.web{color:var(--accent)}.cl-list{margin:6px 0 0;padding-left:18px}.cl-list li{color:#c3c9d2;margin:3px 0;font-size:13px}.searchbar{z-index:1;background:var(--bg);padding:4px 0 10px;position:sticky;top:0}.search-input{width:100%;height:42px;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:12px;outline:none;padding:0 14px;font-size:15px}.search-input:focus{border-color:var(--accent)}.search-input::placeholder{color:var(--muted)}.row-menu{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:none;font-size:22px;line-height:1}.row-menu:active{background:var(--card-2)}.plus{color:var(--accent);font-size:26px;font-weight:400;line-height:1}.picker-list{flex-direction:column;gap:6px;max-height:52vh;display:flex;overflow-y:auto}.picker-item{text-align:left;border:1px solid var(--line);background:var(--card);color:var(--text);cursor:pointer;border-radius:10px;padding:13px 14px;font-weight:600}.picker-item:active{background:var(--card-2)}.danger-btn{background:var(--danger);color:#fff;cursor:pointer;border:none;border-radius:12px;padding:12px 18px;font-weight:700}.danger-btn:active{filter:brightness(.92)}.tile-thumb-img{object-fit:contain;background:#fff;border-radius:8px;width:100%;height:100%}.vendors-btn,.prices-btn{white-space:nowrap;width:auto;padding:0 12px;font-size:13px}.dash{flex-wrap:wrap;gap:8px;margin:2px 0 12px;display:flex}.dash-tile{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);min-width:72px;color:var(--text);text-align:left;cursor:pointer;appearance:none;flex-direction:column;flex:72px;align-items:flex-start;gap:3px;padding:10px 12px;display:flex}.dash-tile.stat{cursor:default}.dash-tile:not(.stat):active{background:var(--card-2)}.dash-num{font-variant-numeric:tabular-nums;font-size:22px;font-weight:800;line-height:1}.dash-label{color:var(--muted);white-space:nowrap;font-size:11px}.dash-tile.accent .dash-num{color:var(--accent)}.dash-tile.active{border-color:var(--accent);background:#a6e22e24}.dash-tile.active .dash-num{color:var(--accent)}.price-note{margin:4px 2px 10px}.price-list{margin:0;padding:0;list-style:none}.price-row{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:flex-end;gap:8px;padding:12px 0;display:flex}.price-field{flex-direction:column;flex:100px;gap:4px;min-width:0;display:flex}.price-field.wide{flex:2 150px}.price-cap{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-size:11px}.price-row .input{height:44px}.price-row .input.num{font-variant-numeric:tabular-nums}.price-row select.input{appearance:none}.price-del{background:var(--card-2);color:#ff9c93;cursor:pointer;border:none;border-radius:10px;flex:none;width:44px;height:44px;font-size:18px}.price-del:active{filter:brightness(1.2)}.price-del:disabled{opacity:.5}.cost-total{color:var(--accent);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;flex:none;font-size:18px;font-weight:800}.cost-line{font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-weight:700}.row.static.unpriced{opacity:.5}.approx-badge{color:var(--accent);font-weight:700}.cost-approx{margin:2px 2px 8px}.cost-breakdown{background:var(--card-2);border-radius:12px;margin:4px 0 12px;padding:10px 12px}.cost-brk-row{justify-content:space-between;align-items:baseline;gap:10px;padding:4px 0;display:flex}.cost-brk-row.total{border-top:1px solid var(--line);margin-top:4px;padding-top:8px;font-weight:800}.cost-brk-label{flex-direction:column;gap:1px;min-width:0;display:flex}.cost-brk-hint{color:var(--muted);font-size:11px}.cost-brk-val{font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-weight:700}.cost-brk-row.total .cost-brk-val{color:var(--accent)}.cost-foot{margin:10px 2px 2px;line-height:1.5}.nest-controls{flex-direction:column;gap:12px;margin-bottom:14px;display:flex}.nest-field{flex-direction:column;flex:1 1 0;gap:4px;min-width:0;display:flex}.nest-row2{gap:10px;display:flex}.nest-field select.input{appearance:none;height:46px}.nest-field .input.num{font-variant-numeric:tabular-nums}.nest-check{color:var(--text);cursor:pointer;align-items:center;gap:10px;font-size:15px;display:flex}.nest-check input{width:20px;height:20px;accent-color:var(--accent)}.nest-actions{gap:10px;display:flex}.nest-actions .primary,.nest-actions .ghost{flex:1;justify-content:center}.nest-group .sub{font-variant-numeric:tabular-nums}.nest-unplaced{color:#ff9c93;margin-top:4px;font-size:12px;line-height:1.4}.vendor-line{justify-content:space-between;align-items:center;gap:10px;margin-top:4px;display:flex}.link-btn{color:var(--accent);cursor:pointer;background:0 0;border:none;flex:none;padding:2px 0;font-size:13px;font-weight:700}.link-btn:active{filter:brightness(1.15)}.item-del,.item-edit{width:38px;height:38px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:10px;flex:none;justify-content:center;align-items:center;display:flex}.item-del:active{background:var(--card-2);color:#ff9c93}.item-edit:active{background:var(--card-2);color:var(--accent)}.add-item{justify-content:center;align-items:center;gap:8px;width:100%;margin:12px 0 4px;display:flex}.order-actions{flex-direction:column;gap:10px;margin:16px 0 4px;display:flex}.order-actions .primary,.order-actions .ghost{text-align:center;justify-content:center;align-items:center;gap:8px;width:100%;display:flex}.order-actions .primary:disabled{opacity:.5;cursor:default}.zip-status{color:var(--accent);font-variant-numeric:tabular-nums;text-align:center;font-size:13px}.hint{border:1px dashed var(--line);color:var(--muted);border-radius:12px;padding:12px;font-size:13px;line-height:1.5}.dialog.pick{max-height:82vh}.pick-list{border:1px solid var(--line);-webkit-overflow-scrolling:touch;border-radius:10px;max-height:46vh;margin:0;padding:0;list-style:none;overflow-y:auto}.pick-row{border:none;border-bottom:1px solid var(--line);width:100%;min-height:48px;color:var(--text);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:10px;padding:10px 12px;font-size:15px;display:flex}.pick-row:last-child{border-bottom:none}.pick-row:active{background:var(--card-2)}.pick-row .pick-name{flex:1;font-weight:600}.pick-row .pick-sub{color:var(--muted);margin-top:2px;font-size:12px;font-weight:400}.pick-row.sel{background:#a6e22e24}.pick-row .pick-check{color:var(--accent);font-weight:800}.pick-empty{text-align:center;color:var(--muted);padding:24px 12px;font-size:13px}.pick-back{color:var(--muted);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:13px}.pick-back:active{color:var(--text)}.seg{background:var(--bg);gap:6px;padding:10px 12px 4px;display:flex}.seg-btn{border:1px solid var(--line);background:var(--card);min-height:40px;color:var(--muted);cursor:pointer;border-radius:999px;flex:1;font-size:14px;font-weight:700}.seg-btn.active{border-color:var(--accent);color:var(--accent);background:#a6e22e24}.admin-form{flex-direction:column;gap:10px;margin:4px 0 10px;display:flex}.admin-form-row{align-items:center;gap:10px;display:flex}.select{appearance:none;cursor:pointer;flex:1}.admin-form-row .primary{flex:none}.user-del{width:38px;height:38px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:10px;flex:none;justify-content:center;align-items:center;font-size:18px;line-height:1;display:flex}.user-del:active{background:var(--card-2);color:#ff9c93}.user-del:disabled{opacity:.5}.badge.role-admin{color:var(--accent)}.badge.role-editor{color:#c08a2b}.badge.role-viewer{color:var(--muted)}.audit-row{align-items:flex-start}.audit-line{align-items:center;gap:8px;display:flex}.audit-target{word-break:break-all;color:#c3c9d2;font-family:ui-monospace,monospace;font-size:12px}.badge.method-post{color:var(--accent)}.badge.method-patch,.badge.method-put{color:#c08a2b}.badge.method-delete{color:#ff9c93}.search-hint{text-align:center;color:var(--muted);padding:44px 18px;line-height:1.5}.search-thumb{color:#5b626e;background:#101216;border-radius:8px;flex:none;justify-content:center;align-items:center;width:54px;height:42px;display:flex;position:relative;overflow:hidden}.search-thumb .ic.file{width:30px;height:30px}.search-thumb .ext{color:var(--accent);font-size:9px;font-weight:700;position:absolute;bottom:3px;right:4px}.exact-dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:7px;display:inline-block}.search-name{word-break:break-word}
