:root{--bg:#dbe7f4;--bg-deep:#cfdcec;--panel-bg:#ffffffb8;--panel-border:#5783b62e;--ink:#0b1726;--muted:#58708a;--accent:#00d6ff;--accent-strong:#0b7dff;--warm:#ff875f;--gold:#ffd166;--sans:"Aptos", "Bahnschrift", "Segoe UI Variable Text", sans-serif;--heading:"Bahnschrift SemiCondensed", "Aptos Display", "Segoe UI Variable Display", sans-serif;--mono:"Cascadia Code", "Consolas", monospace;font:17px/1.55 var(--sans);color:var(--ink);background:radial-gradient(circle at top left, #00d6ff1f, transparent 24%), radial-gradient(circle at 90% 10%, #5274ff1f, transparent 18%), linear-gradient(180deg, var(--bg), var(--bg-deep));font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0}body:before{content:"";pointer-events:none;background-image:linear-gradient(#5378a00d 1px,#0000 1px),linear-gradient(90deg,#5378a00d 1px,#0000 1px);background-size:26px 26px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#0000008c,#0000 88%);mask-image:linear-gradient(#0000008c,#0000 88%)}#root{width:min(1480px,100% - 32px);margin:0 auto;padding:28px 0 36px}h1,h2{font-family:var(--heading);color:var(--ink)}h1{letter-spacing:-.05em;margin:0;font-size:clamp(42px,5vw,72px);line-height:.95}h2{letter-spacing:-.02em;font-size:24px;line-height:1.08}p{margin:0}button,input,select{font:inherit}input,select{min-height:46px;color:var(--ink);background:#ffffffb8;border:1px solid #5c87b833;border-radius:14px;padding:0 14px;box-shadow:inset 0 1px #ffffffb3,0 4px 14px #1d4a780a}input:focus,select:focus,button:focus{outline-offset:2px;outline:2px solid #187dff38}input[type=range]{min-height:unset;accent-color:#1ba9ff;box-shadow:none;padding:0}button{font-weight:700}@media (width<=760px){#root{width:min(100% - 20px,1480px);padding-top:18px}:root{font-size:15px}}.app-shell{gap:24px;display:grid}.hero-panel{border:1px solid var(--panel-border);background:radial-gradient(circle at 0 0,#00d6ff2e,#0000 28%),radial-gradient(circle at 82% 24%,#5b8cff33,#0000 20%),linear-gradient(135deg,#fcfeffe6,#e8f0fac2);border-radius:30px;gap:26px;padding:34px;display:grid;position:relative;overflow:hidden;box-shadow:0 30px 80px #08223d1f,inset 0 1px #ffffffb3}.hero-panel:before{content:"";pointer-events:none;background:linear-gradient(90deg,#fff0 0%,#00d6ff0f 45%,#fff0 100%);animation:9s linear infinite heroSweep;position:absolute;inset:0;transform:translate(-45%)}.hero-grid{z-index:1;grid-template-columns:minmax(0,1.2fr) 320px;align-items:center;gap:24px;display:grid;position:relative}.hero-copy-block{gap:16px;display:grid}.eyebrow{letter-spacing:.28em;text-transform:uppercase;color:var(--accent-strong);margin:0;font-size:12px}.hero-copy{max-width:880px;color:var(--muted);font-size:16px}.hero-tag-row{flex-wrap:wrap;gap:10px;display:flex}.hero-tag{color:var(--ink);letter-spacing:.08em;background:#ffffff80;border:1px solid #4288ff38;border-radius:999px;padding:8px 12px;font-size:12px}.hero-signal{background:radial-gradient(circle,#00d6ff24,#0000 38%),linear-gradient(145deg,#071423fa,#0a1b2ef5);border-radius:28px;min-height:240px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #5b8cff2e,0 24px 60px #04122247}.hero-signal:before{content:"";border:1px solid #48e3ff24;border-radius:22px;position:absolute;inset:14px}.signal-grid,.signal-ring,.signal-line,.signal-core,.signal-pulse{position:absolute}.signal-grid{background-image:linear-gradient(#59b4ff14 1px,#0000 1px),linear-gradient(90deg,#59b4ff14 1px,#0000 1px);background-size:24px 24px;inset:0;-webkit-mask-image:radial-gradient(circle,#000000e6,#0000 92%);mask-image:radial-gradient(circle,#000000e6,#0000 92%)}.signal-ring{border-radius:50%;inset:50%;transform:translate(-50%,-50%)}.signal-ring--outer{border:1px solid #4bd7ff47;width:190px;height:190px}.signal-ring--inner{border:1px dashed #73a4ff66;width:116px;height:116px}.signal-line{background:linear-gradient(90deg,#0000,#49dcff80,#0000)}.signal-line--horizontal{height:1px;top:50%;left:14%;right:14%}.signal-line--vertical{width:1px;top:14%;bottom:14%;left:50%;transform:rotate(90deg)}.signal-core{text-align:center;gap:8px;width:160px;display:grid;top:50%;left:50%;transform:translate(-50%,-50%)}.signal-core span,.signal-core small{color:#badfffd1}.signal-core span{letter-spacing:.2em;font-size:12px}.signal-core strong{color:#f3fbff;text-shadow:0 0 28px #00d6ff59;font-size:72px;line-height:.9}.signal-core small{letter-spacing:.12em;font-size:12px}.signal-pulse{background:#ff7c62;border-radius:50%;width:12px;height:12px;animation:2.6s infinite pulse;top:calc(50% - 54px);left:calc(50% + 46px);box-shadow:0 0 #ff7c6280}.metric-row{z-index:1;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid;position:relative}.metric-card{background:linear-gradient(#ffffffd1,#f4f9ffad);border:1px solid #4678b433;border-radius:20px;gap:6px;padding:18px;display:grid;position:relative;box-shadow:0 18px 36px #0c264217,inset 0 1px #ffffffbf}.metric-card:after{content:"";pointer-events:none;border:1px solid #ffffffa6;border-radius:19px;position:absolute;inset:1px}.metric-card p,.metric-card span{color:var(--muted);margin:0}.metric-card strong{color:var(--ink);font-size:30px;line-height:1}.workspace{grid-template-columns:360px minmax(0,1fr);gap:24px;display:grid}.control-panel,.main-panel{gap:20px;display:grid}.panel{border:1px solid var(--panel-border);background:linear-gradient(#ffffffb8,#f0f7ff8a);border-radius:26px;gap:16px;padding:22px;display:grid;position:relative;box-shadow:0 20px 46px #0b264214,inset 0 1px #ffffffb8}.panel:before{content:"";pointer-events:none;border:1px solid #ffffff80;border-radius:26px;position:absolute;inset:0}.panel-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-title h2{margin:0}.panel-badge{color:var(--accent-strong);letter-spacing:.08em;background:#00d6ff1a;border-radius:999px;padding:6px 10px;font-size:12px}.field,.field-grid{gap:8px;display:grid}.field span{color:var(--muted);font-size:13px}.field input,.field select{width:100%}.field--compact{gap:6px}.field-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.helper-text{color:var(--muted);margin:0;font-size:14px}.toolbar-row{align-items:end;gap:12px;display:flex}.secondary-button,.mode-button{cursor:pointer;border:1px solid #387ac438;border-radius:14px;min-height:44px;transition:transform .16s,border-color .16s,background-color .16s,box-shadow .16s}.secondary-button{color:var(--ink);background:linear-gradient(135deg,#00d6ff24,#4b67ff1a);padding:0 16px}.secondary-button:hover,.mode-button:hover{transform:translateY(-1px);box-shadow:0 10px 22px #005fa024}.mode-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.mode-button{color:var(--ink);background:#ffffffb8}.mode-button--active{background:linear-gradient(135deg,#00d6ff24,#4b67ff29);border-color:#388cff4d}.stage-panel{min-height:680px}.banner{border-radius:16px;padding:14px 16px;font-size:14px}.banner p{margin:0}.banner--warning{color:#7e5515;background:#ffd6844d}.banner--error{color:#9e3523;background:#ff78602e}.warning-list{flex-wrap:wrap;gap:10px;display:flex}.warning-chip{color:#7e5515;background:#ffd68447;border-radius:999px;padding:8px 10px;font-size:13px}.structure-wrap{gap:14px;display:grid}.structure-screen{background:linear-gradient(135deg,#05101cf5,#081626fa);border-radius:30px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #4da8ff29,0 22px 54px #0512223d}.structure-screen:before{content:"";pointer-events:none;background:linear-gradient(#0000 0%,#7cd7ff0d 48%,#0000 100%);animation:8s linear infinite scanline;position:absolute;inset:0;transform:translateY(-100%)}.structure-canvas{width:100%;min-height:560px;display:block;position:relative}.canvas-bg{fill:url(#canvas-bg-gradient)}.canvas-frame{fill:#08121de0;stroke:#55a0ff1f}.canvas-screen-fill{fill:#061320e6}.grid-line{stroke:#4e85b424;stroke-width:1px}.grid-line--major{stroke:#62a9e638}.axis-label{fill:#bedcffbd;letter-spacing:.05em;font-size:12px}.dimension-line{stroke:#80cdff3d;stroke-width:1.5px;stroke-dasharray:7 7}.dimension-text{fill:#b5ddffb8;letter-spacing:.08em;font-size:12px}.support-symbol{fill:#aedeff14;stroke:#a8dfff4d;stroke-width:1.5px}.support-base{stroke:#a8dfff3d;stroke-width:2px}.member-shadow{stroke:#00000052;stroke-width:16px;stroke-linecap:round}.member-highlight{stroke-linecap:round;stroke-width:15px}.member-highlight--load{stroke:#ff7d636b;filter:url(#warm-glow)}.member-highlight--monitor{stroke:#ffd26d70;filter:url(#soft-glow)}.member-hitbox{stroke:#0000;stroke-width:24px;cursor:pointer}.member-line{fill:none;stroke-linecap:round}.member-line--beam{stroke:url(#beam-gradient);stroke-width:7.5px}.member-line--column{stroke:url(#column-gradient);stroke-width:7.5px}.member-line--inactive{stroke:#6e89a433;stroke-width:6px;stroke-dasharray:8 8}.member-line--deformed{stroke:url(#deformed-gradient);stroke-width:3.2px;stroke-dasharray:10 7;opacity:.95}.target-pill-shell{fill:#041726e0;stroke:#65c6ff4d}.target-pill-text{fill:#dff8ff;letter-spacing:.1em;font-size:11px}.node-hitbox{fill:#0000;cursor:pointer}.node-halo{fill:#ffd66d24;stroke:#ffd66d52;stroke-width:1.5px}.node-dot{stroke-width:2px}.node-dot--connected{fill:#f3fbff;stroke:#7adfff;filter:url(#soft-glow)}.node-dot--free{fill:#d0e4ff47;stroke:#adcdf44d}.node-dot--monitor{fill:#ffe28b;stroke:#ffb65a;filter:url(#warm-glow)}.load-orbit{fill:#ff7d631f;stroke:#ff7d6366;stroke-width:1.6px}.load-arrow{stroke:#ff896e;stroke-width:3.2px;filter:url(#warm-glow)}.load-point{fill:#ff8d57;stroke:#fff8ef;stroke-width:2px}.canvas-hud{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.canvas-hud-card{background:linear-gradient(#ffffffbd,#edf5ff94);border:1px solid #4a81ba29;border-radius:18px;gap:5px;padding:14px;display:grid}.canvas-hud-card span,.canvas-hud-card small{color:var(--muted)}.canvas-hud-card span{letter-spacing:.14em;font-size:12px}.canvas-hud-card strong{color:var(--ink)}.canvas-placeholder,.chart-placeholder,.force-placeholder{text-align:center;min-height:220px;color:var(--muted);background:#fff6;border:1px dashed #4782be3d;border-radius:20px;place-items:center;padding:18px;display:grid}.bottom-grid{grid-template-columns:minmax(0,1.28fr) minmax(340px,.72fr);gap:20px;display:grid}.chart-wrap{gap:14px;display:grid}.chart-summary{flex-wrap:wrap;justify-content:space-between;align-items:start;gap:14px;display:flex}.chart-summary-copy{gap:6px;display:grid}.chart-summary-copy strong{color:var(--ink)}.chart-summary-copy span{color:var(--muted)}.chart-stat-row{flex-wrap:wrap;gap:8px;display:flex}.chart-stat-pill{color:var(--ink);background:#00d6ff14;border-radius:999px;padding:8px 10px;font-size:12px}.influence-chart{width:100%;min-height:270px;display:block}.chart-bg{fill:url(#chart-bg-gradient)}.chart-grid-line{stroke:#73afdc21;stroke-width:1px}.chart-axis{stroke:#80cdff59;stroke-width:1.6px}.chart-zero{stroke:#ff8b5f5c;stroke-width:1.4px;stroke-dasharray:8 8}.chart-current-line{stroke:#46dcff57;stroke-width:1.4px;stroke-dasharray:7 7}.chart-area{fill:url(#chart-area-gradient)}.chart-polyline{fill:none;stroke:#46e1ff;stroke-width:3.4px;stroke-linecap:round;stroke-linejoin:round}.chart-point-halo{fill:#ff7d6324;stroke:#ff7d635c}.chart-point{fill:#ff8d57;stroke:#fffaf2;stroke-width:2px}.chart-label{fill:#c4e1ffb8;font-size:12px}.result-grid{gap:10px;display:grid}.result-line{background:#ffffff9e;border-radius:16px;justify-content:space-between;gap:12px;padding:11px 12px;display:flex}.result-line span{color:var(--muted)}.result-line strong{color:var(--ink)}.force-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.force-pill{background:linear-gradient(#fffc,#edf6ffa8);border:1px solid #4884be24;border-radius:18px;gap:6px;padding:14px;display:grid}.force-pill span{color:var(--muted)}.force-pill strong{color:var(--ink)}@keyframes heroSweep{0%{transform:translate(-45%)}to{transform:translate(45%)}}@keyframes pulse{0%{box-shadow:0 0 #ff7c6280}70%{box-shadow:0 0 0 18px #ff7c6200}to{box-shadow:0 0 #ff7c6200}}@keyframes scanline{0%{transform:translateY(-100%)}to{transform:translateY(100%)}}@media (width<=1180px){.workspace{grid-template-columns:1fr}.hero-grid,.metric-row,.bottom-grid,.canvas-hud{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.hero-panel,.panel{border-radius:22px;padding:18px}.hero-grid,.metric-row,.field-grid,.mode-grid,.bottom-grid,.force-grid,.canvas-hud{grid-template-columns:1fr}.toolbar-row{flex-direction:column;align-items:stretch}.structure-canvas{min-height:460px}}
