:root{--navy-900:#06131f;--navy-800:#0a1c2e;--navy-700:#0e2740;--navy-600:#143452;--line:#1e3a57;--line-soft:#16304a;--ink:#e8f0f8;--ink-dim:#8aa6c0;--ink-faint:#5c7793;--emerald:#10b981;--emerald-bright:#34e0a8;--cyan:#38bdf8;--amber:#f59e0b;--font-ui:"Archivo",system-ui,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-ui);color:var(--ink);background:var(--navy-900);-webkit-font-smoothing:antialiased;overflow:hidden}.app{height:100%;display:flex;flex-direction:column;background:radial-gradient(1200px 700px at 78% -8%,rgba(16,185,129,.1),transparent 60%),radial-gradient(900px 600px at 8% 108%,rgba(56,189,248,.08),transparent 55%),linear-gradient(var(--line-soft) 1px,transparent 1px) 0 0/32px 32px,linear-gradient(90deg,var(--line-soft) 1px,transparent 1px) 0 0/32px 32px,var(--navy-900);background-blend-mode:normal,normal,soft-light,soft-light,normal}.hdr{display:flex;align-items:center;gap:22px;padding:14px 26px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#0a1c2eeb,#06131fbf);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:20}.brand{display:flex;align-items:center;gap:12px;flex-shrink:0}.brand .mark{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;background:linear-gradient(135deg,var(--emerald),#0891b2);box-shadow:0 6px 20px #10b98159;font-weight:900;color:#04121b;font-size:19px;letter-spacing:-1px}.brand .wm{line-height:1}.brand .wm b{font-weight:900;letter-spacing:2px;font-size:16px}.brand .wm span{display:block;font-family:var(--font-mono);font-size:9.5px;color:var(--ink-faint);letter-spacing:3px;margin-top:3px}.hdr .title{border-left:1px solid var(--line);padding-left:22px}.hdr .title h1{font-size:15px;font-weight:700;letter-spacing:.2px}.hdr .title p{font-family:var(--font-mono);font-size:10.5px;color:var(--emerald-bright);letter-spacing:1.5px;margin-top:3px;text-transform:uppercase}.hdr .spacer{flex:1}.kpis{display:flex;gap:10px}.kpi{padding:8px 15px;border:1px solid var(--line);border-radius:10px;background:#0a1c2e99;min-width:78px}.kpi .n{font-family:var(--font-mono);font-size:19px;font-weight:600;color:var(--ink);letter-spacing:-.5px}.kpi .n em{font-style:normal;color:var(--emerald-bright)}.kpi .l{font-size:9px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:1.4px;margin-top:2px}.main{flex:1;display:flex;min-height:0}.rail{width:196px;flex-shrink:0;border-right:1px solid var(--line);padding:16px 12px;display:flex;flex-direction:column;gap:8px;background:#06131f80;overflow-y:auto}.rail .lbl{font-family:var(--font-mono);font-size:9.5px;color:var(--ink-faint);letter-spacing:2px;text-transform:uppercase;padding:2px 6px 8px}.floor-btn{text-align:left;border:1px solid var(--line);border-radius:11px;background:#0e274059;color:var(--ink-dim);padding:11px 13px;cursor:pointer;transition:all .18s ease;position:relative;overflow:hidden}.floor-btn:hover{border-color:var(--emerald);color:var(--ink);transform:translate(2px)}.floor-btn.on{background:linear-gradient(135deg,#10b98129,#14345280);border-color:var(--emerald);color:var(--ink);box-shadow:inset 3px 0 0 var(--emerald)}.floor-btn .fn{font-weight:700;font-size:14px}.floor-btn .fs{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);margin-top:4px;letter-spacing:.3px}.floor-btn.on .fs{color:var(--emerald-bright)}.rail .modes{margin-top:auto;display:flex;flex-direction:column;gap:6px;padding-top:14px;border-top:1px solid var(--line)}.mode-btn{border:1px solid var(--line);border-radius:9px;background:transparent;color:var(--ink-dim);padding:9px;cursor:pointer;font-family:var(--font-mono);font-size:11px;letter-spacing:1px;transition:.15s;text-transform:uppercase}.mode-btn.on{background:var(--emerald);color:#04121b;border-color:var(--emerald);font-weight:600}.mode-btn:hover:not(.on){border-color:var(--emerald);color:var(--ink)}.stage{flex:1;position:relative;min-width:0;display:flex;flex-direction:column}.stage-top{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid var(--line);background:#06131f66;z-index:5}.stage-top h2{font-size:16px;font-weight:800;letter-spacing:.3px}.stage-top .tag{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);letter-spacing:1px;border:1px solid var(--line);padding:3px 8px;border-radius:20px}.stage-top .spacer{flex:1}.toggle{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--ink-dim);cursor:pointer;-webkit-user-select:none;user-select:none;font-family:var(--font-mono);letter-spacing:.5px}.toggle input{display:none}.toggle .sw{width:34px;height:19px;border-radius:20px;background:var(--navy-600);border:1px solid var(--line);position:relative;transition:.2s}.toggle .sw:after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:var(--ink-dim);transition:.2s}.toggle input:checked+.sw{background:var(--emerald)}.toggle input:checked+.sw:after{left:17px;background:#04121b}.canvas-wrap{flex:1;position:relative;overflow:hidden;cursor:grab}.canvas-wrap.dragging{cursor:grabbing}.plan-svg{width:100%;height:100%;display:block;touch-action:none}.plan-svg .wall{stroke:#2f5578;stroke-width:.9;fill:none;vector-effect:non-scaling-stroke;opacity:.85}.room{cursor:pointer;transition:fill-opacity .15s,stroke-width .1s}.room-label{font-family:var(--font-mono);fill:var(--ink);pointer-events:none;font-weight:500}.room-area{font-family:var(--font-mono);fill:var(--emerald-bright);pointer-events:none}.zoombar{position:absolute;right:16px;bottom:16px;display:flex;flex-direction:column;gap:6px;z-index:6}.zoombar button{width:36px;height:36px;border:1px solid var(--line);border-radius:9px;background:#0a1c2ed9;color:var(--ink);cursor:pointer;font-size:17px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:.15s;display:grid;place-items:center}.zoombar button:hover{border-color:var(--emerald);color:var(--emerald-bright)}.legend{position:absolute;left:16px;bottom:16px;z-index:6;background:#06131fd1;border:1px solid var(--line);border-radius:12px;padding:12px 14px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);max-width:230px}.legend h4{font-family:var(--font-mono);font-size:9.5px;letter-spacing:2px;color:var(--ink-faint);text-transform:uppercase;margin-bottom:9px}.legend .row{display:flex;align-items:center;gap:9px;font-size:11.5px;color:var(--ink-dim);padding:3px 0;cursor:default}.legend .row .dot{width:11px;height:11px;border-radius:3px;flex-shrink:0}.legend .row b{color:var(--ink);font-family:var(--font-mono);font-size:10.5px;margin-left:auto}.detail{width:340px;flex-shrink:0;border-left:1px solid var(--line);background:#06131f8c;overflow-y:auto;padding:20px}.detail .empty{color:var(--ink-faint);font-size:13px;text-align:center;padding:40px 10px;line-height:1.7}.detail .empty .big{font-size:34px;margin-bottom:12px;opacity:.4}.ia-card{border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:18px;background:linear-gradient(160deg,#10b9811a,#0a1c2e4d)}.ia-card .h{display:flex;align-items:center;gap:8px;margin-bottom:9px}.ia-card .h .badge{font-family:var(--font-mono);font-size:8.5px;letter-spacing:1.5px;background:var(--emerald);color:#04121b;padding:3px 7px;border-radius:5px;font-weight:600}.ia-card .h span{font-family:var(--font-mono);font-size:9px;color:var(--ink-faint);letter-spacing:1px}.ia-card p{font-size:13px;line-height:1.62;color:var(--ink-dim)}.rm-head{border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:16px}.rm-cat{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;padding:4px 10px;border-radius:20px;margin-bottom:11px}.rm-cat .dot{width:8px;height:8px;border-radius:50%}.rm-head h3{font-size:23px;font-weight:800;line-height:1.1;letter-spacing:-.3px}.rm-head .meta{display:flex;gap:18px;margin-top:12px}.rm-head .meta .v{font-family:var(--font-mono);font-size:20px;color:var(--emerald-bright);font-weight:600}.rm-head .meta .k{font-size:9px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:1.4px;margin-top:2px}.rm-av{border:1px solid var(--line);border-radius:13px;padding:15px;background:#0a1c2e66}.rm-av .top{display:flex;align-items:center;gap:8px;margin-bottom:11px}.rm-av .top .ico{width:26px;height:26px;border-radius:7px;background:var(--emerald);color:#04121b;display:grid;place-items:center;font-size:14px}.rm-av .top b{font-size:12.5px;letter-spacing:.3px}.rm-av .sys{font-size:14.5px;font-weight:600;line-height:1.4;color:var(--ink);margin-bottom:10px}.rm-av .note{font-size:12px;line-height:1.55;color:var(--ink-dim);border-top:1px dashed var(--line);padding-top:10px}.rm-av.no{opacity:.7}.rm-av.no .top .ico{background:var(--navy-600);color:var(--ink-faint)}.inv{flex:1;overflow:auto;padding:0}.inv-tools{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--navy-900);z-index:4;flex-wrap:wrap}.inv-tools .search{flex:1;min-width:200px;background:#0a1c2e99;border:1px solid var(--line);border-radius:9px;padding:9px 13px;color:var(--ink);font-family:var(--font-mono);font-size:12px}.inv-tools .search::placeholder{color:var(--ink-faint)}.inv-tools .search:focus{outline:none;border-color:var(--emerald)}.chip{border:1px solid var(--line);background:transparent;color:var(--ink-dim);border-radius:20px;padding:7px 13px;font-size:11px;cursor:pointer;font-family:var(--font-mono);letter-spacing:.5px;transition:.15s;white-space:nowrap}.chip:hover{border-color:var(--emerald);color:var(--ink)}.chip.on{background:var(--emerald);color:#04121b;border-color:var(--emerald);font-weight:600}.btn-dl{border:1px solid var(--emerald);background:#10b9811f;color:var(--emerald-bright);border-radius:9px;padding:9px 15px;font-size:11.5px;font-family:var(--font-mono);letter-spacing:.8px;cursor:pointer;transition:.15s;text-decoration:none;display:inline-flex;align-items:center;gap:7px}.btn-dl:hover{background:var(--emerald);color:#04121b}table{width:100%;border-collapse:collapse;font-size:13px}thead th{position:sticky;top:57px;background:var(--navy-800);text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-faint);padding:11px 16px;border-bottom:1px solid var(--line);cursor:pointer;-webkit-user-select:none;user-select:none}thead th:hover{color:var(--emerald-bright)}tbody td{padding:11px 16px;border-bottom:1px solid var(--line-soft);color:var(--ink-dim)}tbody tr{transition:background .12s;cursor:pointer}tbody tr:hover{background:#10b9810f}tbody td.rm{color:var(--ink);font-weight:600}tbody td.area{font-family:var(--font-mono);color:var(--emerald-bright);text-align:right}.pill{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-family:var(--font-mono);padding:3px 9px;border-radius:20px;letter-spacing:.4px}.pill .dot{width:7px;height:7px;border-radius:50%}.av-yes{color:var(--emerald-bright);font-family:var(--font-mono);font-size:11px}.av-no{color:var(--ink-faint);font-family:var(--font-mono);font-size:11px}.sys-cell{font-size:12px;color:var(--ink-dim);max-width:340px}.tip{position:fixed;pointer-events:none;z-index:50;background:var(--navy-800);border:1px solid var(--emerald);border-radius:9px;padding:8px 11px;font-size:12px;box-shadow:0 10px 30px #00000080;max-width:230px}.tip b{display:block;color:var(--ink);font-size:12.5px;margin-bottom:3px}.tip .m{font-family:var(--font-mono);font-size:10.5px;color:var(--emerald-bright)}.tip .c{font-size:10.5px;color:var(--ink-dim);margin-top:2px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--navy-900)}::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px;border:2px solid var(--navy-900)}::-webkit-scrollbar-thumb:hover{background:var(--navy-600)}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.fade{animation:fadeUp .3s ease both}.cd-stage{flex:1;display:flex;min-height:0}.cd-canvas{flex:1;position:relative;overflow:hidden;background:#0a1626;cursor:grab;display:flex;align-items:center;justify-content:center;background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);background-size:26px 26px}.cd-canvas.dragging{cursor:grabbing}.cd-img{max-width:100%;max-height:100%;-webkit-user-select:none;user-select:none;transform-origin:0 0;will-change:transform;box-shadow:0 12px 40px #00000080;background:#fff}.cd-err{color:var(--ink-faint);text-align:center;font-size:14px;line-height:1.7}.cd-err span{font-family:var(--font-mono);font-size:11px;color:#ef6a6a}.cd-take{width:300px;flex-shrink:0;border-left:1px solid var(--line);background:#06131f8c;padding:20px;overflow-y:auto}.cd-cat{font-family:var(--font-mono);font-size:9.5px;letter-spacing:1.2px;color:var(--emerald-bright);text-transform:uppercase;margin-bottom:8px}.cd-take h3{font-size:22px;font-weight:800;margin-bottom:14px;letter-spacing:-.3px}.cd-total{border:1px solid var(--line);border-radius:13px;padding:14px 16px;margin-bottom:16px;background:linear-gradient(160deg,#38bdf81f,#0a1c2e4d)}.cd-total b{font-family:var(--font-mono);font-size:30px;color:var(--cyan);display:block;line-height:1}.cd-total span{font-size:10.5px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:1px;margin-top:5px;display:block}.cd-take-list{display:flex;flex-direction:column;gap:3px;margin-bottom:16px}.cd-row{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--line-soft);border-radius:9px;background:#0a1c2e59}.cd-row .dot{width:11px;height:11px;border-radius:3px;flex-shrink:0}.cd-row .s{font-size:12.5px;color:var(--ink-dim)}.cd-row b{margin-left:auto;font-family:var(--font-mono);font-size:15px;color:var(--ink)}.cd-empty{color:var(--ink-faint);font-size:12.5px;padding:10px 2px}.cd-take .btn-dl{width:100%;justify-content:center;margin-bottom:12px}.cd-note{font-size:11px;line-height:1.5;color:var(--ink-faint)}.bom{flex:1;display:flex;flex-direction:column;min-height:0}.bom-tools{display:flex;align-items:center;gap:14px;padding:14px 22px;border-bottom:1px solid var(--line);flex-wrap:wrap;background:#06131f66}.bom-kpis{display:flex;gap:10px}.bk{border:1px solid var(--line);border-radius:10px;padding:8px 14px;background:#0a1c2e80}.bk b{font-family:var(--font-mono);font-size:20px;color:var(--ink);display:block;line-height:1}.bk.cyan b{color:var(--cyan)}.bk span{font-size:9px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:1px;margin-top:3px;display:block}.bom-tools .spacer{flex:1}.bom-scroll{flex:1;overflow-y:auto;padding:22px}.bom-sec{max-width:920px;margin:0 auto 26px}.bom-sec h3{font-size:16px;font-weight:800;margin-bottom:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.bom-sec h3 em{font-style:normal;font-weight:400;font-size:12px;color:var(--ink-faint)}.tagn{font-family:var(--font-mono);font-size:9px;letter-spacing:1px;background:var(--emerald);color:#04121b;padding:3px 8px;border-radius:5px;font-weight:600}.tagn.cyan{background:var(--cyan)}.bom-group{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:14px;background:#0a1c2e4d}.bom-gh{display:flex;align-items:center;gap:10px;padding:11px 15px;background:#14345266;font-weight:700;font-size:13.5px;border-bottom:1px solid var(--line)}.bom-gh .dot{width:11px;height:11px;border-radius:3px}.bom-gh b{margin-left:auto;font-family:var(--font-mono);font-size:15px;color:var(--emerald-bright)}.bom-item{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line-soft)}.bom-item:last-child{border-bottom:none}.bom-item .d{color:var(--ink);font-size:13.5px}.bom-item .d i{font-style:normal;color:var(--ink-faint);font-size:11px}.bom-item .r{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;color:var(--ink-faint)}.bom-item b{font-family:var(--font-mono);font-size:16px;color:var(--ink);min-width:36px;text-align:right}.bom-item.opc{opacity:.6}.bom-note{max-width:920px;margin:0 auto;font-size:11.5px;line-height:1.6;color:var(--ink-faint);border-top:1px dashed var(--line);padding-top:14px}@media (max-width:1100px) and (min-width:861px){.rail{width:158px}.detail{width:280px}.kpi{min-width:62px;padding:7px 11px}.kpi .n{font-size:17px}.hdr{gap:16px;padding:13px 18px}}@media (max-width:860px){html,body,#root{height:auto}body{overflow-x:hidden;overflow-y:auto}.app{height:auto;min-height:100vh}.hdr{flex-wrap:wrap;gap:10px 14px;padding:11px 14px}.brand{gap:10px}.brand .mark{width:33px;height:33px;font-size:17px}.brand .wm b{font-size:15px}.hdr .title{border-left:none;padding-left:0}.hdr .title h1{font-size:14px}.hdr .title p{font-size:9.5px;margin-top:2px}.hdr .spacer{display:none}.kpis{width:100%;overflow-x:auto;gap:8px;padding-bottom:3px;-webkit-overflow-scrolling:touch}.kpis::-webkit-scrollbar{height:0}.kpi{flex:0 0 auto;min-width:64px;padding:7px 12px}.kpi .n{font-size:17px}.main{flex-direction:column;min-height:0}.rail{width:auto;flex-direction:row;flex-wrap:wrap;align-items:stretch;overflow:visible;border-right:none;border-bottom:1px solid var(--line);padding:10px 12px;gap:8px;background:#06131f99}.rail .lbl{display:none}.rail .modes{order:-1;flex-basis:100%;flex-direction:row;flex-wrap:wrap;margin:0 0 2px;padding:0;border-top:none;gap:8px}.rail .modes .mode-btn{flex:1 1 44%;padding:11px 8px;font-size:11px;white-space:nowrap}.bom-tools{padding:12px 14px;gap:10px}.bom-scroll{padding:14px}.floor-btn{flex:1 1 28%;min-width:0;padding:9px 8px;text-align:center}.floor-btn:hover{transform:none}.floor-btn.on{box-shadow:inset 0 -3px 0 var(--emerald)}.floor-btn .fn{font-size:13px}.floor-btn .fs{display:none}.stage{flex:0 0 auto;min-width:0}.stage-top{flex-wrap:wrap;gap:8px 12px;padding:10px 14px}.stage-top h2{font-size:15px}.stage-top .spacer{display:none}.canvas-wrap{height:58vh;min-height:330px}.legend{max-width:160px;padding:9px 10px;left:10px;bottom:10px}.legend h4{margin-bottom:7px}.legend .row{font-size:10.5px;padding:2px 0}.zoombar button{width:40px;height:40px;font-size:19px}.detail{width:auto;border-left:none;border-top:1px solid var(--line);max-height:none;padding:16px}.rm-head h3{font-size:21px}.cd-stage{flex-direction:column}.cd-canvas{height:52vh;min-height:300px;flex:0 0 auto}.cd-take{width:auto;border-left:none;border-top:1px solid var(--line);padding:16px}.cd-take h3{font-size:19px}.inv{overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}.inv-tools{position:static;gap:8px 10px;padding:12px 14px}.inv-tools .search{min-width:140px;flex:1 1 140px}table{min-width:660px}thead th{top:0}}@media (max-width:420px){.kpi{min-width:58px;padding:6px 10px}.kpi .n{font-size:15px}.brand .wm span{display:none}.canvas-wrap{height:54vh;min-height:300px}}.v3d{position:relative;flex:1;min-height:0;background:#0a1420;overflow:hidden}.v3d-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.v3d-canvas canvas{display:block;cursor:grab}.v3d-crumbs{position:absolute;top:14px;left:14px;display:flex;gap:6px;flex-wrap:wrap;z-index:3}.v3d-crumbs button{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--ink-dim);background:#0a1c2ed1;border:1px solid var(--line);padding:7px 11px;border-radius:7px;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:.15s}.v3d-crumbs button:hover{color:var(--ink);border-color:var(--navy-600)}.v3d-crumbs button.on{color:var(--navy-900);background:var(--emerald);border-color:var(--emerald);font-weight:600}.v3d-tools{position:absolute;left:14px;bottom:14px;z-index:3;display:flex;flex-direction:column;gap:10px;background:#0a1c2edb;border:1px solid var(--line);border-radius:10px;padding:12px 14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);max-width:280px}.v3d-tools .ex{display:flex;flex-direction:column;gap:6px}.v3d-tools .ex span{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint)}.v3d-tools input[type=range]{width:100%;accent-color:var(--emerald);cursor:pointer}.v3d-floors{display:flex;flex-wrap:wrap;gap:5px}.v3d-floors button{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-dim);background:var(--navy-800);border:1px solid var(--line-soft);border-radius:6px;padding:5px 8px;cursor:pointer;display:flex;gap:6px;align-items:center;transition:.15s}.v3d-floors button:hover{color:var(--ink);border-color:var(--emerald)}.v3d-floors button b{color:var(--emerald);font-size:10px}.v3d-tools .walk{font-family:var(--font-mono);font-size:11.5px;color:var(--ink);background:var(--navy-700);border:1px solid var(--line);border-radius:7px;padding:9px 12px;cursor:pointer;transition:.15s}.v3d-tools .walk:hover{border-color:var(--emerald);color:var(--emerald-bright)}.v3d-tools .walk.on{background:var(--emerald);color:var(--navy-900);border-color:var(--emerald);font-weight:600}.v3d-hint{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);line-height:1.5}.v3d-card{position:absolute;top:14px;right:14px;z-index:3;width:250px;background:#0a1c2ee6;border:1px solid var(--line);border-radius:10px;padding:14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.v3d-card .cat{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;padding:4px 8px;border-radius:5px;margin-bottom:9px}.v3d-card h3{font-size:17px;font-weight:700;line-height:1.25;margin-bottom:11px}.v3d-card .dims{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:10px}.v3d-card .dims div{background:var(--navy-800);border:1px solid var(--line-soft);border-radius:6px;padding:7px 9px}.v3d-card .dims b{display:block;font-family:var(--font-mono);font-size:14px;color:var(--emerald-bright)}.v3d-card .dims span{font-size:9.5px;color:var(--ink-faint);letter-spacing:.05em;text-transform:uppercase}.v3d-card .sys{font-size:12px;color:var(--ink-dim);line-height:1.5;margin-bottom:8px}.v3d-card .est{font-family:var(--font-mono);font-size:9.5px;color:var(--ink-faint);line-height:1.45}.v3d-legend{position:absolute;right:14px;bottom:14px;z-index:2;font-family:var(--font-mono);font-size:10.5px;color:var(--ink-faint);background:#0a1c2eb3;border:1px solid var(--line-soft);border-radius:6px;padding:7px 10px}.td-3d{width:1%;white-space:nowrap}.btn-3d{font-family:var(--font-mono);font-size:10px;color:var(--ink-dim);background:var(--navy-700);border:1px solid var(--line);border-radius:5px;padding:4px 7px;cursor:pointer;transition:.15s}.btn-3d:hover{color:var(--navy-900);background:var(--emerald);border-color:var(--emerald);font-weight:600}@media (max-width:900px){.v3d{min-height:60vh}.v3d-card{width:180px;padding:11px;top:auto;bottom:14px;right:14px}.v3d-card h3{font-size:14px}.v3d-card .dims{grid-template-columns:1fr 1fr;gap:5px}.v3d-tools{max-width:190px;padding:10px}.v3d-legend{display:none}}.boot{margin:auto;color:var(--ink-faint);font-family:var(--font-mono);font-size:13px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1200px 600px at 50% -10%,var(--navy-700),var(--navy-900))}.login-card{width:100%;max-width:380px;background:var(--navy-800);border:1px solid var(--line);border-radius:14px;padding:28px;display:flex;flex-direction:column;gap:8px;box-shadow:0 24px 60px #00000073}.login-card .brand{display:flex;align-items:center;gap:10px;margin-bottom:6px}.login-card h1{font-family:var(--font-ui);font-size:19px;color:var(--ink);margin:10px 0 0;line-height:1.25}.login-card .sub{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);margin:0 0 14px;letter-spacing:.04em}.login-card label{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);margin-top:8px}.login-card input{background:var(--navy-900);border:1px solid var(--line);border-radius:8px;padding:10px 12px;color:var(--ink);font-family:var(--font-mono);font-size:13px;width:100%}.login-card input:focus{outline:none;border-color:var(--emerald)}.login-card button{margin-top:18px;background:var(--emerald);color:#04241a;border:0;border-radius:8px;padding:11px;font-family:var(--font-ui);font-weight:700;font-size:14px;cursor:pointer}.login-card button:disabled{opacity:.45;cursor:not-allowed}.login-err{margin-top:10px;background:#ef44441f;border:1px solid rgba(239,68,68,.4);color:#fca5a5;border-radius:6px;padding:8px 10px;font-family:var(--font-mono);font-size:11px}.sesion{display:flex;align-items:center;gap:8px;padding-left:14px;margin-left:6px;border-left:1px solid var(--line)}.sesion .empresa{font-family:var(--font-mono);font-size:11px;color:var(--emerald-bright);text-transform:uppercase;letter-spacing:.08em}.btn-salir{background:transparent;border:1px solid var(--line);color:var(--ink-dim);border-radius:6px;padding:4px 9px;font-family:var(--font-mono);font-size:10px;cursor:pointer}.btn-salir:hover{border-color:var(--emerald);color:var(--emerald)}.com{margin-top:16px;border-top:1px solid var(--line-soft);padding-top:14px}.com h4{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);margin:0 0 10px}.com-vacio{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);padding:10px;background:var(--navy-900);border-radius:8px;border:1px dashed var(--line-soft)}.com-item{background:var(--navy-900);border:1px solid var(--line-soft);border-radius:8px;padding:10px 12px;margin-bottom:8px;border-left:3px solid var(--line)}.com-item.requerimiento{border-left-color:var(--cyan)}.com-item.propuesta{border-left-color:var(--emerald)}.com-head{display:flex;align-items:center;gap:8px;margin-bottom:5px}.com-head b{font-family:var(--font-mono);font-size:11px;color:var(--ink);text-transform:uppercase;letter-spacing:.06em}.com-tipo{font-family:var(--font-mono);font-size:9px;color:var(--ink-faint);border:1px solid var(--line);border-radius:99px;padding:1px 7px}.com-item p{margin:0;font-size:13px;line-height:1.5;color:var(--ink-dim);overflow-wrap:anywhere}.com-form{margin-top:12px;display:flex;flex-direction:column;gap:8px}.com-form textarea{background:var(--navy-900);border:1px solid var(--line);border-radius:8px;padding:10px;color:var(--ink);font-family:var(--font-ui);font-size:13px;resize:vertical;width:100%}.com-form textarea:focus{outline:none;border-color:var(--emerald)}.com-form button{background:var(--emerald);color:#04241a;border:0;border-radius:8px;padding:9px;font-family:var(--font-ui);font-weight:700;font-size:13px;cursor:pointer}.com-form button:disabled{opacity:.4;cursor:not-allowed}.cmp{flex:1;overflow:auto;padding:16px;min-width:0}.cmp-tools{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.cmp-tools select{background:var(--navy-900);border:1px solid var(--line);border-radius:8px;padding:8px 10px;color:var(--ink);font-family:var(--font-mono);font-size:12px;max-width:100%;flex:1 1 260px;min-width:0}.cmp-tools .spacer{flex:1}.cmp-req{background:var(--navy-800);border:1px solid var(--line);border-left:3px solid var(--cyan);border-radius:10px;padding:14px;margin-bottom:16px}.cmp-req h4{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);margin:0 0 8px}.cmp-req p,.cmp-col p{margin:0 0 6px;font-size:13px;line-height:1.5;color:var(--ink-dim);overflow-wrap:anywhere}.cmp-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.cmp-col{background:var(--navy-800);border:1px solid var(--line);border-radius:10px;padding:14px;min-width:0}.cmp-col h5{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--emerald-bright);margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line-soft)}.cmp .vacio{color:var(--ink-faint);font-family:var(--font-mono);font-size:11px}@media (max-width:900px){.cmp-cols{grid-template-columns:1fr}.sesion{padding-left:8px;margin-left:0}}.joy{position:absolute;left:16px;bottom:16px;width:96px;height:96px;border-radius:50%;background:#0a1c2e80;border:1px solid var(--line);touch-action:none;z-index:6;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.joy-nub{position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;background:var(--emerald);opacity:.85;pointer-events:none;transition:transform .05s linear}.v3d-ghost{position:absolute;top:14px;left:50%;transform:translate(-50%);background:#10b98124;border:1px solid var(--emerald);color:var(--emerald-bright);font-family:var(--font-mono);font-size:11px;padding:5px 12px;border-radius:99px;z-index:6}@media (min-width:900px){.joy{display:none}}.v3d-estilo{position:absolute;top:14px;right:14px;display:flex;gap:0;z-index:6;background:#0a1c2eb8;border:1px solid var(--line);border-radius:9px;overflow:hidden;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.v3d-estilo button{background:transparent;border:0;color:var(--ink-dim);cursor:pointer;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;padding:7px 12px}.v3d-estilo button.on{background:var(--emerald);color:#04241a;font-weight:700}.v3d-estilo button:not(.on):hover{color:var(--emerald)}@media (max-width:600px){.v3d-estilo{top:auto;bottom:14px;right:14px}}.act{flex:1;overflow-y:auto;padding:20px;min-width:0}.act .vacio{color:var(--ink-faint);font-size:13px;padding:14px 0}.act-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:12px;margin-bottom:26px}.act-card{border:1px solid var(--line);border-radius:12px;padding:14px 15px;background:#0a1c2e59}.act-card.propio{border-color:var(--line-soft);opacity:.62}.act-card-h{display:flex;align-items:center;gap:8px;margin-bottom:9px}.act-card-h b{font-size:13.5px;text-transform:uppercase;letter-spacing:.04em}.act-rol{margin-left:auto;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);border:1px solid var(--line);border-radius:5px;padding:2px 6px}.act-ult{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-dim);margin-bottom:12px}.act-ult i{font-style:normal;margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--ink-faint)}.act-ult .dot{width:8px;height:8px;border-radius:50%;background:var(--line);flex:none}.act-ult .dot.on{background:var(--emerald-bright);box-shadow:0 0 8px var(--emerald)}.act-nums{display:flex;gap:14px;padding-top:11px;border-top:1px solid var(--line-soft)}.act-nums div{display:flex;flex-direction:column;gap:1px}.act-nums b{font-family:var(--font-mono);font-size:18px;color:var(--ink);line-height:1}.act-nums span{font-size:9.5px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em}.act-meta{display:flex;flex-direction:column;gap:3px;margin-top:10px;font-family:var(--font-mono);font-size:10px;color:var(--ink-faint)}.act-meta .warn{color:var(--amber)}.act-tools{display:flex;align-items:center;gap:12px;margin-bottom:12px}.act-tools h3{font-size:15px;font-weight:800}.act-tools .spacer{flex:1}.act-tools select{background:var(--navy-900);border:1px solid var(--line);border-radius:8px;color:var(--ink);font-family:var(--font-ui);font-size:12.5px;padding:7px 10px}.act-log{border:1px solid var(--line);border-radius:12px;overflow:hidden}.act-row{display:flex;align-items:center;gap:12px;padding:9px 14px;font-size:12.5px;border-bottom:1px solid var(--line-soft)}.act-row:last-child{border-bottom:none}.act-row:nth-child(2n){background:#0a1c2e47}.act-hora{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-faint);flex:none;width:104px}.act-row b{text-transform:uppercase;letter-spacing:.03em;font-size:11.5px;flex:none;width:80px;color:var(--ink)}.act-ev{flex:none;width:112px;color:var(--ink-dim)}.act-det{flex:1;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.act-ip{font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);flex:none;text-align:right}.act-row.hi .act-ev{color:var(--emerald-bright);font-weight:600}.act-row.warn .act-ev{color:var(--amber);font-weight:600}.act-nota{font-size:11.5px;color:var(--ink-faint);padding:14px 2px;line-height:1.6}@media (max-width:760px){.act-row{flex-wrap:wrap;gap:6px 10px}.act-hora,.act-row b,.act-ev{width:auto}.act-det{flex:1 0 100%;white-space:normal}.act-ip{margin-left:auto}}
