:root{--page:#f7f1e8;--panel:#fff9f0eb;--border:#343b4324;--border-soft:#343b4317;--ink:#1d2936;--muted:#5b6470;--accent:#127b75;--accent-alt:#b55233;--mono:"IBM Plex Mono", "SFMono-Regular", Consolas, monospace;--sans:"Avenir Next", "Segoe UI", sans-serif;--heading:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif;--shadow-soft:0 20px 50px #35251014;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{font-size:17px}body{min-width:320px;min-height:100vh;color:var(--muted);font:400 1rem/1.55 var(--sans);background:radial-gradient(circle at 0 0,#127b7524,#0000 26%),radial-gradient(circle at 100% 0,#b5523329,#0000 22%),linear-gradient(#fbf7f0 0%,#f4ede2 100%);margin:0}button,input{font:inherit}#root{width:min(1440px,100%);min-height:100vh;margin:0 auto}h1,h2,h3{color:var(--ink);font-family:var(--heading);letter-spacing:-.02em;margin:0;font-weight:700}h1{margin:.55rem 0 1rem;font-size:clamp(2.35rem,4vw,4.5rem);line-height:.98}h2{font-size:clamp(1.5rem,2vw,2.2rem)}h3{font-size:1.25rem}p{margin:0}a{color:inherit}.app-shell{gap:2rem;padding:2rem;display:grid}.hero-panel,.tabs-card,.module-card{border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow-soft);border-radius:28px;position:relative;overflow:hidden}.hero-panel{background:radial-gradient(circle at top right, #d271302e, transparent 33%), radial-gradient(circle at 10% 20%, #127b7533, transparent 35%), var(--panel);padding:2rem 2.25rem;display:block}.hero-title{flex-wrap:wrap;align-items:baseline;gap:.45rem;display:flex}.hero-title .katex,.hero-copy .katex,.module-head .katex,.plane-header .katex{font-size:1em}.hero-copy{max-width:28rem;margin:0;font-size:.98rem}.summary-card,.steps-card,.matrix-block,.plane-card,.coordinate-card{border:1px solid var(--border-soft);background:#fffcf5e0;border-radius:20px}.module-card{padding:1.5rem}.tabs-card{padding:.5rem}.tabs-row{flex-wrap:wrap;gap:.5rem;display:inline-flex}.tab-button{appearance:none;border:1px solid var(--border);color:var(--ink);font:inherit;cursor:pointer;background:#ffffffd1;border-radius:999px;padding:.8rem 1.25rem;font-weight:700}.tab-button.is-selected{background:linear-gradient(135deg,#127b7529,#b5523329);border-color:#127b754d}.module-head{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;display:flex}.module-layout{grid-template-columns:minmax(240px,290px) minmax(0,1fr);gap:1.25rem;display:grid}.control-panel,.visual-panel,.plane-stack,.results-grid,.steps-card,.coordinate-fields{gap:1rem;display:grid}.plane-stack{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.control-panel{align-content:start}.actions-row{flex-wrap:wrap;justify-content:flex-end;gap:.75rem;display:flex}.primary-button,.secondary-button,.ghost-button{appearance:none;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:999px;transition:transform .16s,box-shadow .16s,background-color .16s,border-color .16s}.primary-button,.secondary-button{padding:.85rem 1.15rem;font-weight:600}.primary-button{color:#fffaf0;background:linear-gradient(135deg,#b55233,#da8b38);box-shadow:0 12px 24px #b552333d}.secondary-button{color:var(--ink);background:#127b751f;border-color:#127b7538}.ghost-button{color:var(--ink);border-color:var(--border);background:0 0;padding:.65rem .95rem}.primary-button:hover,.secondary-button:hover,.ghost-button:hover{transform:translateY(-1px)}.primary-button:disabled,.secondary-button:disabled{opacity:.55;cursor:not-allowed;transform:none}.coordinate-card,.group-card,.summary-card,.steps-card,.plane-card,.matrix-block{padding:1rem}.group-card{border:1px solid var(--border-soft);background:#fffcf5e0;border-radius:20px;gap:1rem;display:grid}.coordinate-card{cursor:pointer;padding:.7rem .85rem}.coordinate-card.is-active{border-color:#127b7573;box-shadow:inset 0 0 0 1px #127b752e}.summary-card strong,.steps-card h3,.module-card h2{color:var(--ink)}.summary-card p,.steps-card p,.plane-caption,.matrix-grid{margin:0}.coordinate-fields{grid-template-columns:auto repeat(2,minmax(0,1fr));align-items:end}.coordinate-input{gap:.35rem;display:grid}.coordinate-input span{color:var(--muted);font-size:.88rem}.coordinate-name{appearance:none;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-self:center;padding:0 .2rem 0 0;font-weight:700}.coordinate-input input{box-sizing:border-box;border:1px solid var(--border);width:100%;color:var(--ink);font:inherit;cursor:text;background:#fffc;border-radius:14px;padding:.6rem .75rem}.coefficient-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;display:grid}.coefficient-input{gap:.35rem;display:grid}.coefficient-input span{color:var(--muted);font-size:.88rem;font-weight:700}.coefficient-input input,.augmented-matrix-grid input{box-sizing:border-box;border:1px solid var(--border);width:100%;color:var(--ink);font:inherit;font-family:var(--mono);background:#ffffffd6;border-radius:12px;padding:.55rem .65rem}.augmented-matrix-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem;display:grid}.conic-equation{color:var(--ink);background:#ffffffb8;border:1px solid #28354614;border-radius:14px;padding:.6rem .7rem;display:block;overflow-x:auto}.normal-mode-switch{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.mode-button{appearance:none;border:1px solid var(--border);color:var(--ink);font:inherit;cursor:pointer;background:#ffffffd1;border-radius:999px;padding:.65rem .8rem;font-weight:700}.mode-button.is-selected{background:#b5523321;border-color:#b5523347}.results-grid,.linear-results-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.results-grid-affine{margin-top:.25rem}.eyebrow{color:var(--accent);text-transform:uppercase;letter-spacing:.12em;margin-bottom:.4rem;font-size:.72rem;font-weight:700;display:inline-block}.matrix-block{gap:.65rem;display:grid}.matrix-grid{font-family:var(--mono);color:var(--ink);gap:.35rem;display:inline-grid}.matrix-row{grid-template-columns:repeat(auto-fit,minmax(4rem,1fr));gap:.5rem;display:grid}.matrix-row span{background:#ffffffbf;border:1px solid #28354614;border-radius:12px;justify-content:center;align-items:center;min-height:2.2rem;display:inline-flex}.steps-card ol{gap:.4rem;margin:0;padding-left:1.2rem;display:grid}.steps-card li{padding-left:.2rem}.warning-card{background:#fff4ebf2;border-color:#b5523359}.error-text{color:#9f2d25;font-weight:600}.plane-card{gap:.65rem;display:grid}.plane-header{gap:.2rem;display:grid}.plane-stage{overscroll-behavior:contain;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;position:relative}.plane-toolbar{z-index:2;-webkit-user-select:none;user-select:none;gap:.45rem;display:grid;position:absolute;top:.85rem;right:.85rem}.plane-header h3{color:var(--ink);margin:0}.plane-caption{color:var(--muted);font-size:.9rem}.plane-svg{aspect-ratio:1;touch-action:none;overscroll-behavior:contain;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;background:radial-gradient(circle at 15% 15%,#127b7514,#0000 35%),linear-gradient(#ffffffe0,#f4efe7e0);border-radius:20px;width:100%}.plane-svg:active{cursor:grabbing}.plane-svg text{pointer-events:none;-webkit-user-select:none;user-select:none}.plane-button{appearance:none;width:2.35rem;height:2.35rem;color:var(--ink);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;background:#fffcf5e0;border:1px solid #2835461f;border-radius:999px;place-items:center;display:inline-grid;box-shadow:0 10px 24px #2835461f}.plane-button:hover,.plane-button:focus-visible{transform:translateY(-1px);box-shadow:0 14px 28px #28354629}.plane-button svg{width:1.05rem;height:1.05rem}.plane-legend{flex-wrap:wrap;gap:.75rem;display:flex}.legend-chip{border:1px solid var(--border-soft);color:var(--ink);background:#ffffffd6;border-radius:999px;align-items:center;gap:.45rem;padding:.4rem .7rem;font-size:.9rem;display:inline-flex}.legend-swatch{border-radius:999px;width:.7rem;height:.7rem}@media (width<=1080px){.module-layout,.plane-stack{grid-template-columns:1fr}.module-head{flex-direction:column}.actions-row{justify-content:flex-start}}@media (width<=720px){.app-shell{padding:1rem}.hero-panel,.module-card{border-radius:22px;padding:1.2rem}.hero-title{align-items:flex-start}.results-grid,.coordinate-fields,.coefficient-grid{grid-template-columns:1fr}.coordinate-name{padding-bottom:.2rem}}
