:root{color-scheme:light dark;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;--ff-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--gap-tight: 4px;--gap-snug: 8px;--gap-cozy: 12px;--gap-loose: 16px;--gap-section: 20px;--pad-page: 24px;--radius-control: 4px;--radius-card: 6px;--radius-surface: 8px;--fs-numeric: 22px;--fs-label: 16px;--fs-body: 14px;--fs-ui: 13px;--fs-caption: 12px;--fs-meta: 11px;--border: #e0e0e0;--border-strong: #ccc;--surface: #fff;--surface-muted: #fafafa;--surface-overlay: rgba(255,255,255,.92);--hover-tint: rgba(127,127,127,.08);--accent: rgb(60,150,200);--accent-tint: rgba(60,150,200,.18);--accent-tint-soft: rgba(60,150,200,.15);--danger: #c33}@media (prefers-color-scheme: dark){:root{--border: #333;--border-strong: #444;--surface: #1a1a1a;--surface-muted: #1a1a1a;--surface-overlay: rgba(26,26,26,.92)}}.card{border:1px solid var(--border);border-radius:var(--radius-card)}.uppercase-header{font-size:var(--fs-caption);font-weight:600;letter-spacing:.04em;text-transform:uppercase}body{margin:0;padding:0;min-height:100vh}main{display:grid;grid-template-columns:220px minmax(320px,1fr) 140px;gap:var(--pad-page);padding:var(--pad-page);align-items:stretch}.boot-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#ffffffc7;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;transition:opacity .2s ease}@media (prefers-color-scheme: dark){.boot-overlay{background:#141414c7}}.boot-overlay.hidden{opacity:0;pointer-events:none}.boot-card{max-width:380px;padding:var(--pad-page);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-surface);text-align:center;font-size:var(--fs-ui)}.boot-msg{font-size:var(--fs-body);font-weight:500}.boot-card.error .boot-msg{color:var(--danger)}.boot-card.error p{margin:var(--gap-snug) 0;line-height:1.5;opacity:.85;text-align:left}.boot-card.error button{margin-top:var(--gap-cozy);padding:var(--gap-snug) var(--gap-loose);font:inherit;font-size:var(--fs-ui);border:1px solid var(--border-strong);background:transparent;border-radius:var(--radius-card);cursor:pointer}.boot-card.error button:hover{background:var(--hover-tint)}.boot-card.error details{margin-top:var(--gap-cozy);text-align:left;font-size:var(--fs-meta)}.boot-card.error details pre{margin:6px 0 0;padding:6px 8px;background:var(--hover-tint);border-radius:var(--radius-control);white-space:pre-wrap;word-break:break-word;font-size:10px;max-height:120px;overflow:auto}.left-col{display:flex;flex-direction:column;gap:var(--gap-loose);margin:0}.section-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--gap-tight) 2px var(--gap-snug);background:transparent;border:0;font:inherit;font-family:var(--ff-mono);font-size:var(--fs-caption);font-weight:600;letter-spacing:.04em;text-transform:uppercase;text-align:left;cursor:pointer;color:inherit;opacity:.7}.section-toggle:hover{opacity:1}.section-toggle .chevron{display:inline-block;width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s ease;opacity:.55}.left-section.collapsed .section-toggle .chevron{transform:translateY(-1px) rotate(-45deg)}.section-body{overflow:hidden;max-height:400px;opacity:1;transition:max-height .25s ease,opacity .2s ease}.left-section.collapsed .section-body{max-height:0;opacity:0;pointer-events:none}.start-list{display:flex;flex-direction:column;gap:var(--gap-snug)}.start-row{display:flex;align-items:stretch;gap:var(--gap-snug)}.start-row-label{flex-shrink:0;width:60px;font-family:var(--ff-mono);font-size:var(--fs-ui);opacity:.75;display:flex;align-items:center}.start-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:5px var(--gap-snug);border:1px solid var(--border-strong);background:transparent;border-radius:var(--radius-control);cursor:pointer;font:inherit;font-size:var(--fs-ui)}.start-btn:hover{background:var(--hover-tint)}.start-glyph{font-size:16px;line-height:1}.start-tag{opacity:.75}.results-section{margin-top:auto;display:flex;flex-direction:column;gap:var(--gap-cozy)}.readouts{display:grid;grid-template-columns:1fr;gap:var(--gap-snug)}.readout{display:grid;grid-template-columns:30px 1fr 50px;align-items:baseline;gap:var(--gap-cozy);padding:var(--gap-cozy);border:1px solid var(--border);border-radius:var(--radius-card)}.readout-label{font-family:var(--ff-mono);font-size:var(--fs-label);font-weight:600}.readout-val{font-size:var(--fs-numeric);font-variant-numeric:tabular-nums;text-align:right;transition:opacity .2s}.readout-val.computing{opacity:.18}.readout-val.invalid{color:var(--danger);opacity:.85}.readout-val.computing-long{color:transparent;background-color:var(--accent);opacity:.55;-webkit-mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 14'><path d='M 0 7 Q 3 1 6 7 T 12 7 T 18 7 T 24 7' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/></svg>");mask-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 14'><path d='M 0 7 Q 3 1 6 7 T 12 7 T 18 7 T 24 7' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/></svg>");-webkit-mask-repeat:repeat-x;mask-repeat:repeat-x;-webkit-mask-size:24px 100%;mask-size:24px 100%;-webkit-mask-position:right center;mask-position:right center;animation:wave-scroll 1.6s linear infinite}@keyframes wave-scroll{0%{-webkit-mask-position-x:0;mask-position-x:0}to{-webkit-mask-position-x:-24px;mask-position-x:-24px}}.readout-unit{font-family:var(--ff-mono);font-size:var(--fs-caption);opacity:.6}.status{font-size:var(--fs-caption);opacity:.7;font-variant-numeric:tabular-nums;display:flex;flex-direction:column;gap:var(--gap-tight);min-height:1em}.status.invalid #status{color:var(--danger);opacity:1}.lang-switch{display:flex;justify-content:center;margin-top:auto;padding-top:var(--gap-snug);margin-bottom:calc(11px * 1.4 + var(--gap-snug))}.lang-switch-btn{display:inline-flex;align-items:center;gap:var(--gap-tight);padding:var(--gap-tight) var(--gap-snug);background:transparent;border:0;font:inherit;font-family:var(--ff-mono);font-size:var(--fs-meta);color:inherit;opacity:.55;cursor:pointer;border-radius:var(--radius-surface);transition:opacity .15s,background .15s}.lang-switch-btn:hover{opacity:1;background:var(--surface-muted)}.lang-switch-glyph{font-size:.9em;opacity:.8}.canvas-col{display:flex;flex-direction:column;gap:var(--gap-snug);align-items:center;width:100%;max-width:560px}.right-col{display:flex;flex-direction:column;gap:var(--gap-loose);margin:0;font-family:var(--ff-mono);font-size:var(--fs-meta)}.wordmark{font-size:var(--fs-body);letter-spacing:.06em;opacity:.75}.right-meta{display:flex;flex-direction:column;gap:var(--gap-tight)}.meta-link{color:inherit;text-decoration:none;opacity:.55;transition:opacity .15s}.meta-link:hover{opacity:1}.canvas-toolbar{display:flex;align-items:center;gap:var(--gap-snug);width:100%;padding:var(--gap-snug) 0;border-bottom:1px solid var(--border);font-size:var(--fs-ui)}.tool-btn{padding:6px var(--gap-cozy);font:inherit;font-size:var(--fs-ui);border:1px solid var(--border-strong);background:transparent;border-radius:var(--radius-control);cursor:pointer}.tool-btn:hover{background:var(--hover-tint)}.tool-btn.active{background:var(--accent-tint);border-color:var(--accent)}.toolbar-sep{flex:1}.symmetrize-group{position:relative}.symmetrize-popup{position:absolute;top:calc(100% + 4px);left:0;z-index:10;display:flex;flex-direction:column;gap:var(--gap-tight);padding:var(--gap-snug);background:var(--surface-overlay);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:0 4px 12px #0000001f;min-width:160px}.symmetrize-popup[hidden]{display:none}.sym-option{display:flex;align-items:center;gap:var(--gap-snug);padding:6px var(--gap-cozy);font:inherit;font-size:var(--fs-ui);text-align:left;border:1px solid transparent;background:transparent;border-radius:var(--radius-control);cursor:pointer}.sym-option:hover{background:var(--hover-tint);border-color:var(--border-strong)}.sym-icon{width:24px;height:24px;flex-shrink:0;color:var(--accent)}.snap-toggle{display:inline-flex;align-items:center;gap:var(--gap-tight);cursor:pointer;-webkit-user-select:none;user-select:none}.snap-toggle input{margin:0;cursor:pointer}.kbd-hint{font-family:var(--ff-mono);font-size:var(--fs-meta);padding:1px 5px;border:1px solid var(--border-strong);border-radius:var(--radius-control);opacity:.6}.canvas-wrap{position:relative;background:var(--surface-muted);border:1px solid var(--border);border-radius:var(--radius-surface);width:fit-content}canvas{display:block;width:480px;height:480px;cursor:crosshair;-webkit-user-select:none;user-select:none}.size-input-overlay{position:absolute;top:var(--gap-cozy);left:var(--gap-cozy);display:flex;gap:var(--gap-snug);align-items:center;background:var(--surface-overlay);border:1px solid var(--border);border-radius:var(--radius-card);padding:6px var(--gap-snug);font-size:var(--fs-ui);z-index:2}.size-input-overlay[hidden]{display:none}.size-input-overlay label{display:inline-flex;align-items:center;gap:var(--gap-tight)}.size-input-overlay input{width:70px;padding:var(--gap-tight) 6px;font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-control)}.size-input-overlay .hint{font-size:var(--fs-meta);opacity:.55;margin-left:var(--gap-tight)}.canvas-status{width:100%;min-height:1.4em;padding:0 var(--gap-tight);font-family:var(--ff-mono);font-size:var(--fs-meta);opacity:.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-status.warning{color:#b06b00;opacity:1}.canvas-status.error{color:var(--danger);opacity:1}@media (prefers-color-scheme: dark){.canvas-status.warning{color:#e0a040}}body.zero-state .canvas-toolbar,body.zero-state .canvas-status{visibility:hidden}body.zero-state canvas{cursor:default}
