:root{color-scheme:light;--background: #eef3f7;--panel: #ffffff;--panel-soft: #f8fafc;--text: #172033;--muted: #64748b;--border: #d8e0ea;--primary: #0f766e;--primary-dark: #115e59;--primary-soft: #ccfbf1;--danger: #b42318;--danger-soft: #fee4e2;--warning: #b45309;--warning-soft: #fff7ed;--route: #ef4444;--route-shadow: rgba(15, 23, 42, .55);--grid: #0369a1;--radius: 16px;--shadow: 0 16px 45px rgba(15, 23, 42, .12);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--background);color:var(--text)}button,input,select{font:inherit}button,select,input[type=file]::file-selector-button{cursor:pointer}button,select,input{border-radius:10px}button{border:1px solid var(--border);background:#fff;color:var(--text);padding:.62rem .8rem;font-weight:700;transition:transform .12s ease,background .12s ease,border .12s ease,color .12s ease}button:hover:not(:disabled){transform:translateY(-1px);border-color:#99a9bb}button:disabled{cursor:not-allowed;opacity:.5}button.active,button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}button.danger{color:var(--danger);border-color:#fecaca;background:snow}input,select{width:100%;border:1px solid var(--border);background:#fff;color:var(--text);padding:.62rem .7rem;outline:none}input:focus,select:focus,button:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px #0f766e29;outline:none}input[type=range]{padding:0}label{display:block;margin:.8rem 0 .35rem;color:#334155;font-size:.86rem;font-weight:800}h1,h2,h3,p{margin:0}h1{font-size:clamp(1.4rem,2vw,2rem);line-height:1.05}h2{font-size:1rem}h3{font-size:.95rem}.app-shell{display:grid;grid-template-columns:minmax(300px,360px) minmax(520px,1fr) minmax(340px,420px);gap:1rem;height:100vh;padding:1rem;overflow:hidden}.sidebar,.main-workspace{min-height:0}.sidebar{overflow:auto;border:1px solid var(--border);background:#ffffffeb;border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem}.left-sidebar,.right-sidebar{display:flex;flex-direction:column;gap:.9rem}.main-workspace{display:flex}.panel-title-block{border-radius:18px;background:linear-gradient(135deg,#0f766e,#164e63);color:#fff;padding:1rem}.panel-title-block .muted,.panel-title-block .eyebrow{color:#ffffffc7}.eyebrow{color:var(--primary);font-size:.72rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.muted{color:var(--muted);font-size:.88rem;line-height:1.45}.compact{margin-top:.45rem}.control-section,.result-card,.workspace-card{border:1px solid var(--border);background:var(--panel);border-radius:var(--radius)}.control-section,.result-card{padding:1rem}.control-section h2,.result-card h2{margin-bottom:.65rem}.active-plan-section{background:var(--panel-soft)}.active-plan-pill,.count-pill,.zoom-pill{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:999px;background:#fff;color:var(--primary-dark);font-size:.78rem;font-weight:800;padding:.38rem .65rem}.active-plan-pill{margin-top:.6rem}.two-column-fields{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.button-row,.button-grid,.toolbar-actions,.saved-route-actions{display:flex;gap:.5rem;flex-wrap:wrap}.button-row{margin-top:.75rem}.button-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:1rem}.checkbox-row{display:flex;align-items:center;gap:.55rem;margin-top:.65rem;line-height:1.2}.checkbox-row input{width:auto}.calibration-box,.notice,.status-message,.empty-state{border-radius:12px;padding:.8rem}.calibration-box{margin-top:.8rem;border:1px dashed var(--primary);background:var(--primary-soft)}.calibration-box button{width:100%;margin-top:.65rem;background:var(--primary);border-color:var(--primary);color:#fff}.workspace-card{display:flex;flex:1;min-width:0;min-height:0;flex-direction:column;overflow:hidden;box-shadow:var(--shadow)}.workspace-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--border);background:#fffffff2;padding:.95rem 1rem}.workspace-toolbar h2{font-size:1.1rem}.toolbar-actions button{padding:.52rem .7rem}.workspace-hint{border-bottom:1px solid var(--border);background:#f8fafc;color:#475569;padding:.65rem 1rem;font-size:.88rem}.workspace-viewport{position:relative;flex:1;min-height:0;overflow:hidden;background:radial-gradient(circle at 24px 24px,rgba(15,23,42,.08) 1px,transparent 1px),#dbe5ef;background-size:24px 24px}.workspace-stage{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.floorplan-svg{display:block;background:#fff;box-shadow:0 16px 30px #0f172a38;-webkit-user-select:none;user-select:none}.grid-overlay line{stroke:var(--grid);stroke-width:1;vector-effect:non-scaling-stroke}.route-line-shadow,.route-line{fill:none;pointer-events:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.route-line-shadow{stroke:var(--route-shadow);stroke-width:10}.route-line{stroke:var(--route);stroke-width:5}.segment-labels text{fill:#111827;font-size:13px;font-weight:900;paint-order:stroke;pointer-events:none;stroke:#fff;stroke-linejoin:round;stroke-width:5px}.route-point{cursor:grab}.route-point:active{cursor:grabbing}.route-point circle{fill:#fff;stroke:#111827;stroke-width:3;vector-effect:non-scaling-stroke}.route-point text{fill:#111827;font-size:12px;font-weight:900;pointer-events:none;-webkit-user-select:none;user-select:none}.route-point.start circle{fill:#dcfce7;stroke:#15803d}.route-point.end circle{fill:#fee2e2;stroke:#dc2626}.calibration-points circle{fill:#fef3c7;stroke:#b45309;stroke-width:3;vector-effect:non-scaling-stroke}.calibration-points text{fill:#92400e;font-size:14px;font-weight:900;paint-order:stroke;stroke:#fff;stroke-width:4px}.highlight-card{background:linear-gradient(180deg,#fff,#f8fafc)}.result-header,.saved-routes-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.8rem}.standard-cable-badge{min-width:120px;border-radius:18px;background:var(--primary);color:#fff;padding:.7rem;text-align:center}.standard-cable-badge span{display:block;color:#ffffffc2;font-size:.72rem;font-weight:800;text-transform:uppercase}.standard-cable-badge strong{display:block;margin-top:.2rem;font-size:1rem;line-height:1.15}.notice{margin-top:.85rem;border:1px solid #fed7aa;background:var(--warning-soft);color:var(--warning);font-weight:700}.status-message{margin-top:.8rem;background:var(--primary-soft);color:var(--primary-dark);font-weight:800}.result-grid{display:grid;gap:.15rem;margin-top:1rem}.result-row{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;border-bottom:1px solid #edf2f7;padding:.45rem 0;font-size:.9rem}.result-row span{color:#475569}.result-row strong{color:#111827;text-align:right}.result-row.emphasis{border-bottom:none;border-radius:10px;background:#ecfeff;padding:.58rem .65rem}.result-row.emphasis strong{color:var(--primary-dark)}.file-import-label{display:block;margin-top:.8rem;border:1px dashed var(--border);border-radius:12px;background:#fff;padding:.75rem;text-align:center}.file-import-label input{display:none}.route-point-list,.saved-routes-list{display:grid;gap:.55rem;margin-top:.65rem}.route-point-row,.saved-route{border:1px solid var(--border);border-radius:12px;background:#fff;padding:.7rem}.route-point-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem}.route-point-row span{display:block;color:var(--muted);font-size:.8rem;margin-top:.12rem}.route-point-row button,.saved-route-actions button{padding:.42rem .55rem;font-size:.8rem}.empty-state{background:var(--panel-soft);color:var(--muted);font-weight:700}.saved-route{display:grid;gap:.55rem}.saved-route.selected{border-color:var(--primary);box-shadow:0 0 0 3px #0f766e1f}.saved-route p,.saved-route small{color:var(--muted)}.saved-route p{margin-top:.16rem;font-size:.85rem}.saved-route small{display:block;margin-top:.2rem;font-size:.76rem}.compact-card .result-row:last-child{border-bottom:none}@media (max-width: 1280px){.app-shell{grid-template-columns:320px minmax(420px,1fr);grid-template-rows:minmax(520px,1fr) auto;height:auto;min-height:100vh;overflow:visible}.left-sidebar{grid-row:1 / 3}.right-sidebar{grid-column:2;max-height:none}.workspace-card{min-height:620px}}@media (max-width: 900px){.app-shell{display:flex;flex-direction:column;height:auto;padding:.6rem}.workspace-card{min-height:70vh}.workspace-toolbar,.result-header,.saved-routes-header{align-items:stretch;flex-direction:column}.two-column-fields,.button-grid{grid-template-columns:1fr}}.password-page{min-height:100vh;display:grid;place-items:center;padding:1.5rem;background:radial-gradient(circle at top left,rgba(15,118,110,.22),transparent 34rem),radial-gradient(circle at bottom right,rgba(22,78,99,.18),transparent 30rem),var(--background)}.password-card{width:min(100%,430px);border:1px solid var(--border);background:#fffffff0;border-radius:24px;box-shadow:var(--shadow);padding:1.4rem}.password-badge{display:inline-flex;margin-bottom:.8rem;border-radius:999px;background:var(--primary-soft);color:var(--primary-dark);padding:.35rem .65rem;font-size:.78rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.password-card h1{margin-bottom:.45rem}.password-submit{width:100%;margin-top:.9rem}.password-error{margin-top:.55rem;color:var(--danger);font-size:.9rem;font-weight:800}.password-note{margin-top:1rem;color:var(--muted);font-size:.8rem;line-height:1.45}.lock-button{position:fixed;z-index:100;right:1.25rem;bottom:1.25rem;box-shadow:0 10px 26px #0f172a2e}
