:root{--bg-0: #081118;--bg-1: #0f1f2a;--panel: rgba(10, 22, 30, .72);--panel-strong: rgba(13, 28, 38, .9);--line: rgba(255, 255, 255, .12);--text-main: #f3ead7;--text-soft: rgba(243, 234, 215, .78);--teal: #8fd4c8;--amber: #f0bb72;--coral: #f38762;--shadow: 0 22px 60px rgba(0, 0, 0, .32)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--text-main);background:radial-gradient(circle at top left,rgba(83,149,136,.2),transparent 26%),radial-gradient(circle at 80% 20%,rgba(183,114,49,.18),transparent 25%),linear-gradient(180deg,#09121a,#071017 48%,#050c12);font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}button{font:inherit}.app-shell{position:relative;overflow:hidden;min-height:100vh;padding:34px 28px 42px}.backdrop-orb{position:absolute;border-radius:999px;filter:blur(70px);opacity:.26;pointer-events:none;animation:floatGlow 18s ease-in-out infinite}.orb-a{top:-90px;left:-80px;width:280px;height:280px;background:#3ba39a}.orb-b{top:180px;right:-40px;width:260px;height:260px;background:#dd824d;animation-duration:24s}.orb-c{bottom:-70px;left:28%;width:320px;height:320px;background:#547eae;animation-duration:28s}.hero,.workspace{position:relative;z-index:1}.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:28px;padding:10px 6px 0}.eyebrow,.card-kicker{margin:0 0 10px;color:var(--amber);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase}.hero h1,.side-panel h2,.side-panel h3,.canvas-panel h2{margin:0;font-family:Palatino Linotype,"Noto Serif SC","Source Han Serif SC",serif;letter-spacing:.02em}.hero h1{font-size:clamp(2.5rem,5vw,4.2rem);line-height:.96;max-width:11ch}.hero-copy{max-width:720px;margin:16px 0 0;color:var(--text-soft);font-size:1rem;line-height:1.72}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end}.primary-btn,.secondary-btn,.ghost-btn,.preset-pill,.inline-delete{border:1px solid transparent;border-radius:999px;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease,color .16s ease}.primary-btn,.secondary-btn,.ghost-btn{padding:12px 18px}.primary-btn{color:#10222a;background:linear-gradient(135deg,#f4d59d,#f1895e);box-shadow:0 14px 34px #f0876247}.secondary-btn{color:var(--text-main);background:#0d1f29e0;border-color:#97cdc642}.ghost-btn,.preset-pill,.inline-delete{color:var(--text-main);background:#ffffff08;border-color:#ffffff1a}.compact{padding:9px 14px}.primary-btn:hover,.secondary-btn:hover,.ghost-btn:hover,.preset-pill:hover,.inline-delete:hover{transform:translateY(-1px)}.workspace{display:grid;grid-template-columns:minmax(0,1.48fr) minmax(360px,.92fr);gap:22px}.canvas-panel,.info-card{background:linear-gradient(180deg,#0b1821eb,#071118c7);border:1px solid rgba(255,255,255,.08);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);animation:liftIn .52s ease both}.canvas-panel{padding:20px 20px 18px;border-radius:32px}.panel-topline{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:16px}.panel-topline p{margin:10px 0 0;color:var(--text-soft);line-height:1.6}.toolbar-pills{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.preset-pill{padding:10px 14px;font-size:.94rem}.svg-wrap{position:relative;overflow:hidden;border-radius:26px;border:1px solid rgba(255,255,255,.08)}.solver-canvas{display:block;width:100%;height:auto;aspect-ratio:3 / 2;background:radial-gradient(circle at 50% 15%,rgba(255,255,255,.04),transparent 45%)}.canvas-bg{fill:#09131bf5}.hinge-zone{fill:#ffd7a206;stroke:#ffd7a21a;stroke-dasharray:10 12}.plate-shadow{fill:#00000038}.plate{stroke:#ffffff1f;stroke-width:2}.attachment-band{fill:#ffffff08;stroke:#ffffff14}.plate-label{fill:#fff4dd;font-size:31px;font-weight:600}.plate-subtitle{fill:#fff4ddb8;font-size:16px}.rod-line{stroke:url(#rodStroke);stroke-width:8;stroke-linecap:round;filter:drop-shadow(0 0 14px rgba(240,135,98,.22))}.rod-node{fill:#fcf5df;stroke:#f0b96f;stroke-width:4;cursor:grab}.hinge-glow{fill:#efbb721f}.hinge-node{fill:#102a33;stroke:#ffd494;stroke-width:5;cursor:grab}.hinge-ring{fill:none;stroke:#ffd49480;stroke-width:2.5;stroke-dasharray:8 7;animation:dashFlow 14s linear infinite}.connector-badge{fill:#fff0ce;font-size:15px;font-weight:700;letter-spacing:.08em}.rod-group.is-selected .rod-line,.hinge-group.is-selected .hinge-ring,.hinge-group.is-selected .hinge-node{filter:drop-shadow(0 0 18px rgba(143,212,200,.3))}.legend-box rect{fill:#050c11ad;stroke:#ffffff17}.legend-box text:first-of-type{fill:#fff1d4;font-size:18px;font-weight:700}.legend-box text:not(:first-of-type){fill:#fff1d4bf;font-size:14px}.ghost-layer{pointer-events:none}.ghost-plate{fill:#7dc4c71f;stroke:#8fd4c85c;stroke-width:2;stroke-dasharray:10 10}.ghost-plate-label{fill:#8fd4c8d9;font-size:16px}.ghost-rod{stroke:#8fd4c89e;stroke-width:5;stroke-dasharray:12 9}.ghost-node{fill:#8fd4c840;stroke:#8fd4c8b3;stroke-width:2.4}.side-panel{display:grid;gap:18px}.info-card{padding:18px 18px 20px;border-radius:26px}.status-card h2{margin-top:4px;font-size:1.45rem;line-height:1.45}.status-header,.card-heading-row{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.status-pill{flex-shrink:0;padding:10px 14px;border-radius:999px;font-size:.92rem;font-weight:700;letter-spacing:.04em}.status-pill.is-stable{color:#0f2b2f;background:linear-gradient(135deg,#98f0cb,#63cdb3)}.status-pill.is-pending{color:#f6edd8;background:#ffffff14;border:1px solid rgba(255,255,255,.12)}.status-pill.is-unstable{color:#2e0f13;background:linear-gradient(135deg,#ffb28a,#ff8071)}.metric-row{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0 10px}.metric-chip{min-width:112px;padding:12px 14px;border-radius:20px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08)}.metric-chip span{display:block;color:var(--text-soft);font-size:.82rem}.metric-chip strong{display:block;margin-top:6px;font-size:1.4rem}.detail-stack{display:grid;gap:10px;margin-top:14px}.detail-stack p,.mechanism-copy p,.selection-copy p,.editor-note,.connector-card p,.error-block p,.muted-copy{margin:0;color:var(--text-soft);line-height:1.7}.error-block{margin-top:12px;padding:12px 14px;border-radius:16px;background:#ff807114;border:1px solid rgba(255,128,113,.16)}.connector-list{display:grid;gap:10px}.connector-card{display:flex;justify-content:space-between;gap:12px;padding:14px 14px 14px 16px;border-radius:18px;background:#ffffff08;border:1px solid rgba(255,255,255,.07);cursor:pointer}.connector-card.selected{border-color:#8fd4c857;background:#8fd4c812}.connector-card strong{display:block;margin-bottom:6px}.inline-delete{padding:8px 12px;align-self:center}.editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.editor-field{display:grid;gap:6px}.editor-field span{color:var(--text-soft);font-size:.82rem}.editor-field input{width:100%;padding:10px 12px;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:#ffffff0a;color:var(--text-main);outline:none}.editor-field input:focus{border-color:#8fd4c870;box-shadow:0 0 0 3px #8fd4c81f}.editor-note{margin-top:12px}.rule-list{margin:14px 0 0;padding-left:18px;color:var(--text-soft);line-height:1.9}.matrix-block{margin-top:12px;border-radius:18px;overflow:hidden;border:1px solid rgba(255,255,255,.08)}.matrix-header,.matrix-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.matrix-header{background:#ffffff0f;color:#ffedc4;font-weight:700}.matrix-header span,.matrix-row span{padding:10px 12px;text-align:center;font-family:Consolas,SFMono-Regular,monospace;font-size:.93rem}.matrix-row:nth-child(2n){background:#ffffff06}@keyframes liftIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes floatGlow{0%,to{transform:translateZ(0) scale(1)}50%{transform:translate3d(12px,-18px,0) scale(1.06)}}@keyframes dashFlow{to{stroke-dashoffset:-90}}@media (max-width: 1100px){.workspace{grid-template-columns:1fr}.hero{flex-direction:column;align-items:flex-start}.hero-actions,.toolbar-pills{justify-content:flex-start}}@media (max-width: 720px){.app-shell{padding:18px 14px 28px}.canvas-panel,.info-card{border-radius:22px}.panel-topline,.status-header,.card-heading-row{flex-direction:column}.metric-chip{flex:1 1 120px}.editor-grid{grid-template-columns:1fr}}
