:root{color:#242b2d;background:#f7f4ec;font-family:Avenir Next,Inter,Segoe UI,Arial,sans-serif;font-synthesis:none;text-rendering:geometricPrecision;--bg: #f7f4ec;--paper: #fbf9f2;--surface: #f2efe6;--line: #dad4c8;--line-strong: #b9afa0;--ink: #242b2d;--muted: #6b716e;--teal: #1f7185;--teal-dark: #195c6c;--teal-soft: #d9e6e6;--ochre: #e0ab45;--coral: #d66853;--symmetry-accent: #365cf5;--symmetry-halo: #fffdf8;--shadow: 0 1px 1px rgba(36, 43, 45, .04), 0 7px 22px rgba(36, 43, 45, .04)}*{box-sizing:border-box}html,body,#root{min-height:100vh;margin:0}body{background:var(--bg)}button{font:inherit;color:inherit;border:0;background:transparent;cursor:pointer}button:disabled{opacity:.4;cursor:default}h1,h2,h3,p{margin:0}code{font:500 .73rem/1.4 SFMono-Regular,Roboto Mono,monospace;color:var(--muted)}.app-shell{height:100vh;min-height:100vh;overflow:hidden;display:flex;flex-direction:column}.app-header{height:70px;flex:0 0 auto;border-bottom:1px solid #263b42;display:flex;align-items:center;justify-content:space-between;padding:0 22px;background:#14242b;color:#edf0eb}.brand{display:flex;align-items:center;gap:13px}.brand-mark{width:30px;height:30px;display:block;border:2px solid #56adba;position:relative}.brand-mark:before,.brand-mark:after{content:"";position:absolute;width:2px;height:calc(100% + 8px);top:-4px;left:50%;background:#56adba}.brand-mark:before{transform:translate(-50%) rotate(45deg)}.brand-mark:after{transform:translate(-50%) rotate(-45deg)}.brand h1{font-size:1rem;font-weight:650;letter-spacing:.01em}.brand p{margin-top:2px;font-size:.72rem;color:#98aaac}.header-actions{display:flex;align-items:center;gap:8px}.header-actions button{border:1px solid transparent;border-radius:6px;height:36px;padding:0 13px;font-size:.78rem;font-weight:550;color:#d2dada}.header-actions button:hover:not(:disabled){border-color:#385058;background:#21363d;color:#edf0eb}.header-actions .primary-action{background:var(--teal);color:#fff;margin-left:8px;padding:0 18px}.header-actions .primary-action:hover:not(:disabled){border-color:transparent;background:var(--teal-dark);color:#fff}.header-actions .demo-action{background:transparent;border-color:#315965;margin-left:0}.mobile-menu-hide,.mobile-menu-reveal,.mobile-control-rail,.mobile-studio-bar,.mobile-canvas-actions{display:none}.separator{display:block;height:25px;width:1px;background:#354951;margin:0 7px}.start-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px;background:#101d23b3;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.start-dialog{width:min(680px,100%);padding:32px 34px 28px;border-radius:12px;border:1px solid var(--line);background:var(--paper);box-shadow:0 28px 70px #0b14184d}.start-heading{display:flex;align-items:center;gap:18px}.start-heading h2{font-size:1.55rem;font-weight:620;color:var(--ink)}.start-heading p{margin-top:4px;font-size:.86rem;color:var(--muted)}.start-description{margin-top:25px;max-width:590px;color:#445053;font-size:.94rem;line-height:1.62}.start-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;margin-top:25px}.start-steps article{min-height:115px;padding:15px 14px;border-radius:7px;border:1px solid var(--line);background:#f4f1e8}.start-steps strong{display:block;color:var(--teal-dark);font-size:.78rem;letter-spacing:.09em;text-transform:uppercase}.start-steps span{display:block;margin-top:9px;color:#566061;font-size:.75rem;line-height:1.52}.start-symmetry{margin-top:22px;padding:14px 15px;border-left:3px solid var(--teal);background:var(--teal-soft);color:#374d51;font-size:.83rem;line-height:1.55}.start-symmetry strong{color:var(--teal-dark)}.start-actions{margin-top:25px;display:flex;justify-content:flex-end;gap:9px}.start-actions button,.about-actions button{min-height:41px;border:1px solid var(--line-strong);border-radius:6px;padding:0 17px;font-size:.8rem;font-weight:570}.start-actions .secondary-action:hover,.about-actions button:hover{border-color:var(--teal);color:var(--teal-dark)}.start-actions .start-primary{border-color:var(--teal);background:var(--teal);color:#fff}.start-actions .start-primary:hover{border-color:var(--teal-dark);background:var(--teal-dark)}.editor-grid{flex:1;min-height:0;display:grid;grid-template-columns:214px minmax(480px,1fr) 300px}.about-page{min-height:100vh;background:var(--paper);color:var(--ink)}.about-header{height:70px;border-bottom:1px solid #263b42;display:flex;align-items:center;justify-content:space-between;padding:0 32px;background:#14242b;color:#edf0eb}.about-actions{display:flex;gap:9px}.about-actions button{border-color:#385058;color:#d2dada}.about-actions button:hover{border-color:#56adba;background:#20363d;color:#edf0eb}.about-content{width:min(1000px,calc(100% - 48px));margin:0 auto;padding:clamp(50px,8vh,76px) 0 38px}.about-introduction{max-width:750px}.about-introduction h2{max-width:680px;color:var(--ink);font-size:clamp(2.2rem,4vw,3.15rem);font-weight:590;letter-spacing:-.055em;line-height:1.08}.about-introduction p{margin-top:24px;max-width:700px;color:#536064;font-size:1.06rem;line-height:1.7}.about-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:clamp(43px,6vh,60px)}.about-columns article{padding-top:19px;border-top:2px solid var(--teal)}.about-columns h3,.about-scope h3{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-dark)}.about-columns p{margin-top:13px;color:#586264;font-size:.88rem;line-height:1.65}.about-scope{margin-top:clamp(44px,7vh,72px);padding:26px 29px;background:var(--surface);border:1px solid var(--line);border-radius:8px}.about-scope p{max-width:790px;margin-top:13px;color:#525d5f;font-size:.92rem;line-height:1.68}.about-footer{margin-top:clamp(40px,7vh,64px);padding-top:19px;border-top:1px solid var(--line);color:var(--muted);font-size:.79rem}.mobile-disabled-page{min-height:100vh;padding:20px;display:grid;place-items:center;background:var(--bg)}.mobile-disabled-card{width:min(440px,100%);padding:31px 25px 25px;border:1px solid rgba(185,175,160,.72);border-radius:18px;background:#fbf9f2e0;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.mobile-disabled-label{margin-top:22px;color:var(--teal-dark);font-size:.7rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase}.mobile-disabled-card h1{margin-top:10px;color:var(--ink);font-size:1.75rem;font-weight:590;letter-spacing:-.045em;line-height:1.13}.mobile-disabled-card>p:last-of-type{margin-top:18px;color:#566061;font-size:.9rem;line-height:1.62}.mobile-disabled-actions{margin-top:25px;display:flex;flex-direction:column;gap:8px}.mobile-disabled-actions button{min-height:48px;border:1px solid var(--line-strong);border-radius:9px;padding:0 17px;font-size:.84rem;font-weight:570}.mobile-disabled-actions .start-primary{border-color:var(--teal);background:var(--teal);color:#fff}.panel{background:var(--surface);min-height:0;overflow:auto}.panel h2{font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;color:#69706d;font-weight:700;margin-bottom:14px}.tools-panel{background:#192c34;border-right:1px solid #294149;padding:25px 17px;color:#e5ebea}.tool-fold+.tool-fold{border-top:1px solid #31464d;margin-top:25px;padding-top:24px}.tools-panel h2{color:#9baaad}.tool-fold summary{cursor:pointer;display:flex;align-items:center;gap:10px;justify-content:space-between;list-style:none}.tool-fold summary::-webkit-details-marker{display:none}.tool-fold summary h2{margin-bottom:0}.tool-fold summary .fold-chevron{margin-left:auto;width:8px;height:8px;border-right:1.5px solid #9baaad;border-bottom:1.5px solid #9baaad;transform:rotate(45deg);transition:transform .12s ease}.tool-fold[open] summary .fold-chevron{transform:rotate(225deg)}.fold-icon{display:none}.tool-fold-content{margin-top:14px}.lattice-list,.tool-list{display:flex;flex-direction:column;gap:5px}.select-button,.tool-button{width:100%;border-radius:6px;height:42px;padding:0 10px;display:flex;align-items:center;gap:12px;font-size:.82rem;text-transform:capitalize;text-align:left;color:#d3dcda}.select-button:hover,.tool-button:hover,.select-button.is-selected,.tool-button.is-selected{background:#126779;color:#fff}.select-button.is-selected,.tool-button.is-selected{font-weight:600}.lattice-icon{width:22px;height:19px;border:1.5px solid currentColor;display:block}.lattice-icon--generic{transform:skew(-17deg)}.lattice-icon--rectangular{width:24px;height:16px}.lattice-icon--hexagonal{transform:skew(-29deg)}.tool-button{justify-content:space-between;padding-left:13px}.symmetry-lock{width:100%;min-height:44px;border:1px solid #43575c;border-radius:6px;padding:0 12px;display:flex;align-items:center;justify-content:space-between;color:#d3dcda;font-size:.78rem}.symmetry-lock strong{color:#a6b5b6;font:600 .68rem/1 SFMono-Regular,monospace}.symmetry-lock:hover,.symmetry-lock.is-selected{border-color:#73c3ca;background:#126779;color:#fff}.symmetry-lock.is-selected strong{color:#fff}.visibility-list{display:flex;flex-direction:column;gap:6px}.visibility-button{width:100%;min-height:40px;border:1px solid #43575c;border-radius:6px;padding:0 12px;display:flex;align-items:center;justify-content:space-between;color:#d3dcda;font-size:.78rem}.visibility-button strong{color:#a6b5b6;font:600 .66rem/1 SFMono-Regular,monospace;text-transform:uppercase}.visibility-button:hover,.visibility-button.is-visible{border-color:#73c3ca;background:#126779;color:#fff}.visibility-button.is-visible strong{color:#fff}kbd{font:600 .65rem/1 SFMono-Regular,monospace;border:1px solid #43575c;padding:5px 6px;border-radius:4px;color:#a6b5b6}.palette{display:flex;gap:8px;flex-wrap:wrap}.swatch{width:25px;height:25px;border-radius:50%;border:2px solid #192c34;box-shadow:0 0 0 1px #819095}.swatch.is-selected{box-shadow:0 0 0 2px #73c3ca}.help-text{color:#a5b2b2;font-size:.72rem;line-height:1.55;margin-top:16px}.workspace{min-width:0;min-height:0;padding:20px 22px 13px;display:flex;flex-direction:column;background:var(--paper)}.workspace-heading{display:flex;justify-content:space-between;gap:18px;align-items:end;margin-bottom:15px}.workspace-heading h2{font-size:1.2rem;line-height:1.35;font-weight:620}.workspace-heading p{color:var(--muted);margin-top:4px;font-size:.77rem}.delete-action{border:1px solid #d3c3bb;color:var(--coral);border-radius:5px;font-size:.75rem;padding:9px 12px}.unit-canvas{min-height:0;flex:1;width:100%;border:1px solid var(--line);border-radius:4px;background:var(--paper);box-shadow:var(--shadow);touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;overflow:hidden}.canvas-stage{position:relative;display:flex;flex:1;min-height:0}.canvas-stage .unit-canvas{flex:1}.canvas-paper{fill:var(--paper)}.cell-boundary{fill:none;stroke:#ded8cd;stroke-width:1;stroke-dasharray:4 6}.cell-boundary--active{stroke:var(--teal);stroke-width:2.2;stroke-dasharray:none}.cell-outline-overlay{fill:none;pointer-events:none;stroke:var(--teal);stroke-width:3}.periodic-face{stroke:none;opacity:.38;transition:opacity .12s ease}.canvas-face-underlay{pointer-events:none}.periodic-face-underlay{stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}.canvas-faces--edge-free .periodic-face{opacity:1}.color-roller{pointer-events:none}.color-roller-track{fill:#14242beb;stroke:#73c3ca80;stroke-width:1.25}.color-roller-selection{fill:#73c3ca42;stroke:#73c3ca;stroke-width:1.7}.color-roller-swatch{stroke:#fbf9f2d6;stroke-width:1.4}.periodic-face--active,.periodic-face--preview{opacity:.92}.periodic-face--paintable{cursor:crosshair}.canvas-faces:not(.canvas-faces--edge-free) .periodic-face--paintable:hover{opacity:1}.motif-edge{stroke:#3e4a4c;stroke-width:2;opacity:.38;cursor:default}.motif-edge--active{stroke-width:2.2;opacity:.9}.motif-edge--preview{opacity:.58}.motif-edge--selected{stroke:var(--coral);stroke-width:4;opacity:1}.vertex-grid-point{fill:#b8aea0;opacity:.8;cursor:copy}.vertex-grid-point:hover{fill:var(--coral);opacity:1}.motif-vertex{fill:#2d3839;stroke:var(--paper);stroke-width:1.4;opacity:.58}.motif-vertex:hover{fill:var(--teal);opacity:1;cursor:pointer}.motif-vertex--preview{opacity:.65}.motif-vertex--start{fill:var(--coral);stroke-width:2;opacity:1}.symmetry-overlay{pointer-events:none;filter:drop-shadow(0 0 1.6px var(--symmetry-halo)) drop-shadow(0 0 3px rgba(54,92,245,.34))}#symmetry-arrowhead path{fill:context-stroke}.symmetry-translation{stroke:var(--symmetry-accent);stroke-width:3;stroke-dasharray:8 5;marker-end:url(#symmetry-arrowhead)}.symmetry-label{fill:var(--symmetry-accent);stroke:var(--symmetry-halo);stroke-width:3px;paint-order:stroke;stroke-linejoin:round;font:600 12px/1 SFMono-Regular,monospace}.symmetry-center{fill:var(--symmetry-accent);stroke:var(--symmetry-halo);stroke-width:2.5}.symmetry-rotation{fill:none;stroke:var(--symmetry-accent);stroke-width:3;marker-end:url(#symmetry-arrowhead)}.symmetry-mirror{stroke:var(--symmetry-accent);stroke-width:3.2;stroke-dasharray:10 6}.symmetry-glide{stroke:var(--symmetry-accent);stroke-width:3;stroke-dasharray:10 7}.symmetry-glide-arrow{stroke:var(--symmetry-accent);stroke-width:3;marker-end:url(#symmetry-arrowhead)}.axis-labels{font:italic 20px/1 Georgia,serif;fill:var(--teal)}.workspace-status{display:flex;justify-content:space-between;align-items:center;height:42px;margin:9px -22px -13px;padding:0 18px;color:#b5c1c1;background:#16272e;font-size:.71rem;text-transform:lowercase}.workspace-status strong{color:#eef2ec;font-weight:600}.inspector-panel{border-left:1px solid var(--line);background:#fcfaf5}.inspector-panel section{padding:22px 21px;border-bottom:1px solid var(--line)}.group-result{display:flex;align-items:baseline;gap:12px;margin-bottom:15px}.group-result strong{font-size:2.2rem;color:var(--teal-dark);font-weight:600;letter-spacing:-.045em}.group-result span{color:var(--muted);font-size:.76rem}.generator-list{margin:0;border:1px solid var(--line);border-radius:5px;background:#f8f6ef;overflow:hidden}.generator-button{width:100%;display:grid;grid-template-columns:92px minmax(0,1fr);align-items:baseline;column-gap:14px;border-bottom:1px solid var(--line);padding:8px 10px;color:var(--text);text-align:left}.generator-button:last-child{border-bottom:0}.generator-button:hover,.generator-button.is-selected{background:var(--teal-soft)}.generator-button span{color:var(--muted);font-size:.63rem;text-transform:uppercase;letter-spacing:.07em}.generator-button code{font:500 .72rem/1.35 SFMono-Regular,monospace;overflow-wrap:anywhere}.generator-button.is-selected code{color:var(--teal-dark);font-weight:600}.minor{font-size:.69rem;line-height:1.5;color:var(--muted);margin-top:12px}.cw-counts{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:13px}.cw-counts div{border-right:1px solid var(--line);padding-left:12px}.cw-counts div:first-child{padding-left:0}.cw-counts div:last-child{border-right:0}.cw-counts strong{display:block;font-size:1.45rem;line-height:1.2;font-weight:570}.cw-counts span{color:var(--muted);font-size:.69rem}.euler{font-size:.69rem;padding:8px 9px;border-radius:4px;margin-bottom:12px}.euler.valid{background:#e1ebe6;color:#3c6158}.euler.warning{background:#f2e7d3;color:#876129}.face-list>div{display:grid;grid-template-columns:16px 1fr auto;align-items:center;gap:8px;font-size:.72rem;padding:5px 0}.face-chip{width:11px;height:11px;border-radius:2px;border:1px solid rgba(36,43,45,.12)}.preset-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.preset{height:32px;border-radius:4px;border:1px solid var(--line);background:var(--paper);font:550 .72rem/1 SFMono-Regular,monospace}.preset:hover,.preset.is-selected{border-color:var(--teal);color:var(--teal-dark)}.preset.is-selected{background:var(--teal-soft)}.preset-context{margin:-5px 0 14px}.preset:disabled,.preset:disabled:hover{cursor:not-allowed;opacity:.36;background:#f2efe8;border-color:var(--line);color:#69706d}.preview-page{background:var(--paper);min-height:100vh;height:100vh;padding:28px 34px 34px;display:flex;flex-direction:column;overflow:hidden;position:relative}.preview-header{flex:0 0 auto;display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:19px}.preview-header h1{font-size:1.4rem;font-weight:600}.preview-header p,.preview-group span{color:var(--muted);font-size:.77rem;margin-top:4px}.preview-group{display:flex;gap:13px;align-items:baseline;margin-left:auto}.preview-group strong{font-size:1.65rem;color:var(--teal-dark);font-weight:600}.preview-actions{display:flex;align-items:center;gap:7px}.preview-actions button,.demo-actions button{min-height:37px;border:1px solid var(--line);border-radius:6px;padding:0 12px;font-size:.75rem;font-weight:550;color:var(--ink);background:#fbf9f2db}.preview-actions button:hover,.demo-actions button:hover{border-color:var(--teal);color:var(--teal-dark)}.png-actions{height:37px;display:flex;align-items:center;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#fbf9f2db}.png-actions span,.presentation-layers span{padding:0 9px;font-size:.66rem;letter-spacing:.09em;color:var(--muted);text-transform:uppercase}.png-actions button{min-height:35px;border:0;border-left:1px solid var(--line);border-radius:0;padding:0 9px;text-transform:capitalize}.presentation-layers{height:37px;display:flex;align-items:center;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#fbf9f2db}.presentation-layers button{min-height:35px;border:0;border-left:1px solid var(--line);border-radius:0;padding:0 9px}.presentation-layers button.is-selected{background:var(--teal-soft);color:var(--teal-dark)}.preview-canvas-frame{flex:1;min-height:0;overflow:hidden}.unit-canvas--preview{height:100%}.preview-notice{flex:0 0 auto;margin-top:9px;color:var(--muted);font-size:.7rem;text-align:right}.mobile-ambient-header{display:none}.preview-page.is-ambient{padding:0;background:#14242b}.preview-page.is-ambient .preview-header{position:absolute;inset:18px 18px auto;z-index:2;padding:13px 15px;border-radius:9px;background:#14242be6;color:#eef2ec;opacity:.18;transition:opacity .28s ease}.preview-page.is-ambient .preview-header:hover,.preview-page.is-ambient .preview-header:focus-within{opacity:1}.preview-page.is-ambient .preview-header p,.preview-page.is-ambient .preview-group span{color:#a7b8b8}.preview-page.is-ambient .preview-group strong{color:#6eb3bf}.preview-page.is-ambient .preview-actions button,.preview-page.is-ambient .png-actions,.preview-page.is-ambient .presentation-layers{color:#e3e9e8;background:#20343b;border-color:#385058}.preview-page.is-ambient .png-actions button,.preview-page.is-ambient .presentation-layers button{border-left-color:#385058}.preview-page.is-ambient .presentation-layers button.is-selected{background:#1e6374;color:#fff}.preview-page.is-ambient .preview-canvas-frame{height:100vh}.preview-page.is-ambient .unit-canvas--preview{border:0;border-radius:0;box-shadow:none;transform:scale(1.035);animation:ambient-drift 36s ease-in-out infinite alternate}.preview-page.is-ambient .preview-notice{position:absolute;right:24px;bottom:18px;z-index:2;color:#e4eae88f}@keyframes ambient-drift{0%{transform:scale(1.035) translate(-.55%,-.35%)}to{transform:scale(1.075) translate(.65%,.45%)}}.demo-page{--branch-accent: var(--coral);height:100vh;overflow:hidden;padding:23px 28px 25px;background:var(--bg);color:var(--ink);display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:17px}.demo-header{position:relative;z-index:3;display:flex;justify-content:space-between;align-items:center}.demo-heading p{color:var(--muted);font-size:.69rem;letter-spacing:.13em;text-transform:uppercase;margin-bottom:5px}.demo-heading h1{font-size:1.55rem;font-weight:600}.demo-actions{display:flex;gap:8px}.demo-actions button{color:var(--ink);background:var(--paper);border-color:var(--line-strong)}.demo-controls{position:relative;z-index:3;display:grid;grid-template-columns:minmax(310px,390px) auto minmax(215px,1fr);align-items:center;gap:20px;padding:13px 15px;border:1px solid var(--line);border-radius:9px;background:var(--paper);box-shadow:var(--shadow)}.demo-branches,.demo-playback{display:flex;gap:7px;align-items:center}.demo-walk-control{align-items:center;gap:12px}.demo-walk-control span{color:var(--muted);font-size:.67rem;line-height:1.35}.demo-branches button,.play-toggle{min-height:36px;padding:0 12px;border:1px solid var(--line-strong);border-radius:6px;color:var(--ink);font-size:.73rem}.demo-branches button.is-selected,.demo-branches button:hover,.play-toggle:hover{border-color:var(--branch-accent);background:color-mix(in srgb,var(--branch-accent) 12%,var(--paper));color:var(--ink)}.demo-playback label{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:.7rem}.demo-playback select{border:1px solid var(--line-strong);border-radius:5px;background:var(--paper);color:var(--ink);padding:8px 7px;font:inherit}.demo-playback .presentation-layers{border-color:var(--line-strong);background:var(--paper)}.demo-playback .presentation-layers button{color:var(--ink);border-left-color:var(--line-strong);font-size:.7rem}.demo-playback .presentation-layers button.is-selected,.demo-playback .presentation-layers button:hover{color:var(--ink);background:color-mix(in srgb,var(--branch-accent) 12%,var(--paper))}.demo-visual-mode{min-width:0;display:flex;justify-content:flex-end;align-items:center;gap:10px}.demo-visual-mode strong{flex:0 0 auto;color:var(--branch-accent);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.demo-visual-mode span{color:var(--muted);font-size:.68rem;line-height:1.3}.demo-experience{min-height:0;display:grid;grid-template-columns:minmax(455px,485px) minmax(0,1fr);gap:17px}.subgroup-graph{min-height:0;padding:17px 18px 14px;border:1px solid var(--line);border-radius:10px;background:var(--paper);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}.subgroup-graph-heading{display:flex;align-items:end;justify-content:space-between;gap:8px}.subgroup-graph-heading p{color:var(--muted);font-size:.62rem;letter-spacing:.13em;text-transform:uppercase;margin-bottom:5px}.subgroup-graph-heading h2{color:var(--branch-accent);font-size:1.7rem;line-height:1;font-weight:600}.subgroup-graph-heading strong{color:var(--muted);font-size:.67rem;font-weight:500;margin-bottom:3px}.subgroup-route{color:var(--ink);font-size:.73rem;margin-top:12px}.subgroup-map{flex:1;min-height:306px;position:relative;margin:13px 0 11px}.subgroup-map svg{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;width:100%}.subgroup-edge{stroke:#c8c1b5;stroke-width:.72;opacity:.56;transition:stroke .24s ease,stroke-width .24s ease,opacity .24s ease}.subgroup-edge.is-walk{stroke:#989287;stroke-width:1.02;opacity:.9}.subgroup-edge.is-traversed{stroke:var(--branch-accent);stroke-width:1.65;opacity:1}.subgroup-edge.is-focus{opacity:1}.subgroup-edge.is-focus:not(.is-walk){stroke:color-mix(in srgb,var(--branch-accent) 52%,#9b948a);stroke-width:1.08}.subgroup-node{--node-x: 50%;--node-y: 50%;position:absolute;left:var(--node-x);top:var(--node-y);transform:translate(-50%,-50%);min-width:47px;height:27px;padding:0 8px;border:1px solid var(--line-strong);border-radius:7px;background:var(--paper);color:var(--muted);font:500 .64rem/1 SFMono-Regular,monospace;transition:border-color .18s ease,background .18s ease,color .18s ease,box-shadow .18s ease,transform .18s ease}.subgroup-node:hover,.subgroup-node.is-walk{border-color:#9a9388;color:var(--ink)}.subgroup-node.is-related{border-color:color-mix(in srgb,var(--branch-accent) 54%,var(--line-strong));color:var(--ink)}.subgroup-node.is-current{transform:translate(-50%,-50%) scale(1.08);background:color-mix(in srgb,var(--branch-accent) 16%,var(--paper));border-color:var(--branch-accent);color:var(--ink);font-weight:650;box-shadow:0 0 0 2px color-mix(in srgb,var(--branch-accent) 15%,transparent)}.subgroup-note{color:var(--muted);font-size:.65rem;line-height:1.5;margin-top:8px}.subgroup-legend{display:flex;flex-wrap:wrap;gap:12px;color:var(--muted);font-size:.61rem;margin-bottom:9px}.subgroup-legend span{display:inline-flex;align-items:center;gap:6px}.subgroup-legend span:before{content:"";display:block;width:20px;border-top:1px solid var(--line-strong)}.subgroup-legend .is-path:before{border-top:2px solid var(--branch-accent)}.subgroup-legend .is-current:before{width:17px;height:10px;border:1px solid var(--branch-accent);border-radius:3px;background:color-mix(in srgb,var(--branch-accent) 16%,var(--paper))}.subgroup-walk p{margin:0 0 6px;color:var(--muted);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase}.subgroup-walk-track{display:flex;flex-wrap:wrap;gap:4px}.subgroup-walk-track span{padding:3px 5px;border-radius:4px;color:var(--muted);background:var(--surface);font:500 .57rem/1 SFMono-Regular,monospace}.subgroup-walk-track span.is-current{background:color-mix(in srgb,var(--branch-accent) 16%,var(--paper));color:var(--ink);font-weight:650}.demo-viewport{min-height:0;overflow:hidden;position:relative;border:1px solid var(--line);border-radius:10px;background:var(--paper);box-shadow:var(--shadow)}.demo-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.demo-layer .unit-canvas--preview{height:100%;border:0;border-radius:0;box-shadow:none}.unit-canvas--immersive .canvas-paper{fill:var(--paper)}.unit-canvas--immersive .periodic-face--immersive{opacity:.96}.demo-layer--threshold .periodic-face--immersive:not(.periodic-face--transitioning){opacity:.9}.demo-layer--threshold .periodic-face--transitioning{opacity:1;stroke:var(--teal);stroke-width:.72;fill:var(--threshold-from-fill);animation:symmetry-threshold-pulse var(--threshold-duration) step-end both}.canvas-faces--edge-free .periodic-face--transitioning{stroke:none}.unit-canvas--immersive .motif-edge{stroke:#8b857b;opacity:.6}.unit-canvas--immersive .motif-vertex{fill:var(--ink);stroke:var(--paper);opacity:.68}.demo-layer--homotopy .canvas-edges,.demo-layer--homotopy .canvas-vertices{transform-box:fill-box;transform-origin:center}.demo-layer--homotopy-from{animation:homotopy-fade-out var(--homotopy-duration) cubic-bezier(.45,0,.55,1) both}.demo-layer--homotopy-to{animation:homotopy-fade-in var(--homotopy-duration) cubic-bezier(.45,0,.55,1) both}.demo-layer--homotopy-from .canvas-edges,.demo-layer--homotopy-from .canvas-vertices{animation:homotopy-contract var(--homotopy-duration) cubic-bezier(.45,0,.55,1) both}.demo-layer--homotopy-to .canvas-edges,.demo-layer--homotopy-to .canvas-vertices{animation:homotopy-expand var(--homotopy-duration) cubic-bezier(.45,0,.55,1) both}@keyframes homotopy-fade-out{to{opacity:0}}@keyframes homotopy-fade-in{0%{opacity:0}}@keyframes homotopy-contract{to{transform:scale(.018)}}@keyframes homotopy-expand{0%{transform:scale(.018)}}@keyframes symmetry-threshold-pulse{0%{fill:var(--threshold-from-fill)}22%{fill:var(--threshold-to-fill)}41%{fill:var(--threshold-from-fill)}56%{fill:var(--threshold-to-fill)}68%{fill:var(--threshold-from-fill)}77%{fill:var(--threshold-to-fill)}84%{fill:var(--threshold-from-fill)}89%{fill:var(--threshold-to-fill)}93%{fill:var(--threshold-from-fill)}96%{fill:var(--threshold-to-fill)}98%{fill:var(--threshold-from-fill)}to{fill:var(--threshold-to-fill)}}.demo-caption{position:absolute;right:22px;bottom:20px;z-index:2;min-width:235px;padding:15px 17px;border-radius:8px;background:#fbf9f2eb;border:1px solid var(--line);-webkit-backdrop-filter:blur(11px);backdrop-filter:blur(11px)}.demo-caption span{display:block;color:var(--muted);font-size:.63rem;letter-spacing:.12em;text-transform:uppercase}.demo-caption strong{display:block;margin:4px 0;color:var(--branch-accent);font-size:2rem;font-weight:580}.demo-caption p{color:var(--ink);font-size:.72rem}.demo-caption small{display:block;margin-top:9px;color:var(--muted);font-size:.62rem;letter-spacing:.04em}.demo-page.is-ambient{padding:0;display:block}.demo-page.is-ambient .demo-experience,.demo-page.is-ambient .demo-viewport{height:100vh}.demo-page.is-ambient .demo-experience{display:block}.demo-page.is-ambient .demo-viewport{border:0;border-radius:0}.demo-page.is-ambient .demo-layer .unit-canvas--preview{transform:scale(1.05);animation:ambient-drift 38s ease-in-out infinite alternate}.demo-page.is-ambient .demo-header,.demo-page.is-ambient .demo-controls,.demo-page.is-ambient .subgroup-graph{position:absolute;z-index:4;left:19px;right:19px;opacity:.16;transition:opacity .28s ease}.demo-page.is-ambient .demo-header{top:18px}.demo-page.is-ambient .demo-controls{top:83px}.demo-page.is-ambient .subgroup-graph{top:auto;right:auto;bottom:20px;width:min(485px,calc(100vw - 38px));height:min(76vh,640px);background:#fbf9f2f0}.demo-page.is-ambient .demo-header:hover,.demo-page.is-ambient .demo-header:focus-within,.demo-page.is-ambient .demo-controls:hover,.demo-page.is-ambient .demo-controls:focus-within,.demo-page.is-ambient .subgroup-graph:hover,.demo-page.is-ambient .subgroup-graph:focus-within{opacity:1}@media(prefers-reduced-motion:reduce){.preview-page.is-ambient .unit-canvas--preview,.demo-page.is-ambient .demo-layer .unit-canvas--preview,.demo-layer--threshold .periodic-face--transitioning{animation:none}}@media(max-width:1050px){.app-shell{height:auto;overflow:visible}.app-header{height:auto;padding:14px;flex-wrap:wrap;gap:14px}.editor-grid{display:block;grid-template-columns:1fr}.tools-panel{display:grid;grid-template-columns:repeat(3,1fr);border-right:0;border-bottom:1px solid var(--line);gap:20px}.tool-fold+.tool-fold{border-top:0;margin-top:0;padding-top:0}.workspace{min-height:620px}.inspector-panel{border-left:0;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(3,1fr)}.preview-header{flex-wrap:wrap}.preview-group{margin-left:0}.preview-actions{width:100%;flex-wrap:wrap}.demo-controls{grid-template-columns:1fr}.demo-visual-mode{justify-content:flex-start}.demo-experience{grid-template-columns:1fr}.subgroup-graph{min-height:485px}.subgroup-map{min-height:305px}}@media(max-width:680px){.is-mobile-editor{min-height:100svh;background:linear-gradient(158deg,#edf0e9 0%,var(--bg) 38%,#ecf3f1 100%)}.is-mobile-editor .app-header{position:sticky;top:0;z-index:10;gap:11px;padding:12px;background:#14242bf0;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.is-mobile-editor .brand p{display:none}.is-mobile-editor .brand-mark{width:27px;height:27px}.is-mobile-editor .mobile-menu-hide{display:block;min-height:42px;margin-left:auto;padding:0 13px;border:1px solid rgba(86,173,186,.38);border-radius:10px;color:#dce6e4;font-size:.74rem}.mobile-menu-reveal{align-self:flex-end;display:inline-flex;align-items:center;gap:10px;min-height:47px;margin:10px 10px 0 auto;padding:0 14px 0 12px;border:1px solid rgba(86,173,186,.36);border-radius:14px;background:#14242beb;color:#e5ebea;box-shadow:0 9px 20px #17222421;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);font-size:.73rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase}.mobile-menu-reveal .brand-mark{width:23px;height:23px}.header-actions{flex-wrap:wrap}.is-mobile-editor .header-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;gap:6px}.is-mobile-editor .header-actions .separator{display:none}.is-mobile-editor .header-actions button{height:44px;min-width:0;padding:0 5px;border-color:#56adba24;font-size:.71rem}.is-mobile-editor .header-actions .primary-action{grid-column:span 2;margin-left:0}.start-overlay{align-items:start;overflow:auto;padding:12px}.start-dialog{margin:12px 0;padding:23px 18px 18px}.start-heading{align-items:flex-start;gap:14px}.start-heading h2{font-size:1.3rem}.start-description{margin-top:20px}.start-steps{grid-template-columns:1fr;margin-top:20px}.start-steps article{min-height:0}.start-actions{flex-direction:column-reverse}.start-actions button{width:100%}.about-header{height:auto;min-height:70px;flex-wrap:wrap;gap:14px;padding:14px 16px}.about-actions{width:100%}.about-actions button{flex:1}.about-content{width:calc(100% - 32px);padding-top:40px}.about-introduction h2{font-size:2.1rem}.about-introduction p{font-size:.97rem}.about-columns{grid-template-columns:1fr;margin-top:38px;gap:26px}.about-scope{padding:21px 18px}.tools-panel,.inspector-panel{display:block}.mobile-control-rail{display:contents}.is-mobile-editor.mobile-menu-hidden .mobile-control-rail{position:sticky;top:10px;z-index:10;display:flex;align-items:stretch;gap:8px;margin:10px 10px 0}.is-mobile-editor.mobile-menu-hidden .mobile-studio-bar{flex:1 1 auto;min-width:0;margin:0;padding-left:12px;gap:8px}.is-mobile-editor.mobile-menu-hidden .mobile-studio-bar strong{min-width:0;font-size:.64rem;letter-spacing:.1em;line-height:1.22}.is-mobile-editor.mobile-menu-hidden .mobile-studio-bar button{flex:0 0 auto;padding:0 9px;font-size:.68rem}.is-mobile-editor.mobile-menu-hidden .mobile-menu-reveal{align-self:stretch;min-height:59px;margin:0;padding:0 11px;gap:8px}.mobile-studio-bar{display:flex;align-items:center;justify-content:space-between;gap:13px;margin:10px 10px 0;padding:9px 10px 9px 14px;border:1px solid rgba(54,85,91,.22);border-radius:14px;background:#192c34db;color:#e5ebea;box-shadow:0 7px 18px #17222412;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.mobile-studio-bar strong{color:#dce6e4;font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.mobile-studio-bar button{min-height:41px;padding:0 13px;border:1px solid rgba(117,194,202,.42);border-radius:10px;color:#dce6e4;font-size:.72rem;font-weight:550;touch-action:manipulation}.mobile-tools-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px;overflow:visible;border:0;background:transparent;color:#e5ebea}.mobile-tools-panel .tool-fold{min-width:0;overflow:hidden;border:1px solid rgba(54,85,91,.28);border-radius:14px;background:#192c34e3;box-shadow:0 7px 18px #17222412;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.mobile-tools-panel .tool-fold+.tool-fold{margin:0;padding:0;border-top:1px solid rgba(54,85,91,.28)}.mobile-tools-panel .tool-fold[open]{grid-column:1 / -1}.mobile-tools-panel .tool-fold summary{min-height:57px;padding:0 13px;touch-action:manipulation}.mobile-tools-panel .tool-fold-content{margin-top:0;padding:0 13px 15px}.mobile-tools-panel h2{font-size:.65rem;margin:0}.fold-icon{position:relative;display:block;flex:0 0 25px;width:25px;height:25px;color:#75c2ca}.fold-icon--lattice{border:1.5px solid currentColor;transform:skew(-12deg)}.fold-icon--lattice:before,.fold-icon--lattice:after{content:"";position:absolute;background:currentColor;opacity:.75}.fold-icon--lattice:before{left:50%;top:0;bottom:0;width:1px}.fold-icon--lattice:after{top:50%;left:0;right:0;height:1px}.fold-icon--palette{border-radius:50%;background:radial-gradient(circle at 34% 34%,#e0ab45 0 17%,transparent 18%),radial-gradient(circle at 68% 38%,#d66853 0 16%,transparent 17%),radial-gradient(circle at 51% 69%,#75c2ca 0 16%,transparent 17%);border:1.5px solid currentColor}.fold-icon--display{height:16px;margin-top:4px;border:1.5px solid currentColor;border-radius:18px/12px}.fold-icon--display:before{content:"";position:absolute;top:4px;left:9px;width:6px;height:6px;border-radius:50%;background:currentColor}.fold-icon--symmetry:before{content:"";position:absolute;top:2px;right:2px;bottom:2px;left:2px;border:1.5px dashed currentColor;border-radius:50%}.fold-icon--symmetry:after{content:"";position:absolute;left:12px;top:0;height:25px;border-left:1.5px solid currentColor}.fold-icon--examples{border:1.5px solid currentColor;border-radius:5px;box-shadow:inset 8px 0 #1f718533,inset 0 8px #1f71851f}.mobile-tools-panel .select-button,.mobile-tools-panel .visibility-button,.mobile-tools-panel .symmetry-lock{min-height:48px;height:auto;touch-action:manipulation}.mobile-tools-panel .palette{gap:15px;padding:7px 0 3px}.mobile-tools-panel .swatch{width:44px;height:44px}.mobile-tools-panel .help-text{margin-top:14px;font-size:.76rem}.workspace{min-height:500px;padding:14px}.is-mobile-editor .workspace{min-height:min(66svh,590px);padding:10px;background:transparent}.is-mobile-editor .unit-canvas{min-height:54svh;border-radius:14px}.mobile-canvas-controls{position:absolute;top:10px;right:10px;left:10px;z-index:4;display:flex;justify-content:space-between;align-items:flex-start;gap:8px;pointer-events:none}.mobile-canvas-selectors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:min(214px,calc(100% - 116px));padding:6px;border:1px solid rgba(118,194,202,.3);border-radius:12px;background:#14242bc7;color:#e4eae8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:auto}.mobile-canvas-selectors label{display:grid;gap:3px;min-width:0}.mobile-canvas-selectors span,.mobile-symmetry-toggle span{color:#afc3c2;font-size:.57rem;font-weight:650;letter-spacing:.13em;text-transform:uppercase}.mobile-canvas-selectors select{width:100%;min-height:30px;border:0;border-radius:7px;padding:0 4px;background:#32464cbd;color:#f1f2ed;font-family:inherit;font-size:.76rem;font-weight:550;line-height:1;text-transform:capitalize;touch-action:manipulation}.mobile-symmetry-toggle{display:grid;justify-items:end;gap:3px;min-width:108px;padding:9px 9px 8px;border:1px solid rgba(118,194,202,.33);border-radius:12px;background:#14242bd1;color:#eef1eb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:auto;touch-action:manipulation}.mobile-symmetry-toggle strong{color:#77d9e2;font-size:1.2rem;font-weight:600;line-height:1.1}.mobile-symmetry-toggle small{color:#c3d1cf;font-size:.61rem}.mobile-symmetry-toggle.is-active{border-color:#76c2cabd;background:#1b3840eb;box-shadow:0 0 0 1px #76c2ca24}.mobile-canvas-actions{position:absolute;right:50%;bottom:max(12px,env(safe-area-inset-bottom));z-index:5;display:flex;align-items:center;gap:6px;padding:6px;border:1px solid rgba(118,194,202,.32);border-radius:21px;background:#14242bc7;box-shadow:0 8px 19px #14242b29;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transform:translate(50%)}.mobile-canvas-actions button{display:grid;place-items:center;width:43px;height:43px;border:1px solid transparent;border-radius:15px;color:#e4eae8;background:transparent;touch-action:manipulation}.mobile-canvas-actions button:not(:disabled):active,.mobile-canvas-actions .mobile-preview-action{border-color:#76c2ca4f;background:#2d4e57a8}.mobile-canvas-actions button:disabled{color:#c4d0ce5c}.mobile-canvas-actions svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.mobile-canvas-actions .mobile-preview-action{width:47px;height:47px;color:#78d4dd}.mobile-canvas-actions .mobile-interface-toggle{border-color:#1f4a5529;background:#fbf9f2e6;color:#1b4a57}.mobile-canvas-actions.is-interface-hidden{padding:0;border-color:transparent;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.mobile-canvas-actions.is-interface-hidden .mobile-interface-toggle{border-color:#1f4a5512;background:#fbf9f242;color:#1f3e454d}.is-mobile-editor.mobile-panels-hidden.mobile-menu-hidden .workspace{min-height:calc(100svh - 79px)}.is-mobile-editor.mobile-panels-hidden.mobile-menu-hidden .unit-canvas{min-height:calc(100svh - 99px)}.is-mobile-editor.mobile-interface-hidden{height:100svh;min-height:100svh;overflow:hidden}.is-mobile-editor.mobile-interface-hidden .workspace,.is-mobile-editor.mobile-interface-hidden .canvas-stage,.is-mobile-editor.mobile-interface-hidden .unit-canvas{height:100svh;min-height:100svh}.is-mobile-editor.mobile-interface-hidden .workspace{padding:0}.is-mobile-editor.mobile-interface-hidden .unit-canvas{border:0;border-radius:0;box-shadow:none}.mobile-inspector-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 10px 14px;overflow:visible;border:0;background:transparent}.mobile-inspector-panel .tool-fold{overflow:hidden;border:1px solid rgba(218,212,200,.86);border-radius:14px;background:#fbf9f2c9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.mobile-inspector-panel .tool-fold[open]{grid-column:1 / -1}.mobile-inspector-panel .tool-fold summary{min-height:57px;padding:0 13px;touch-action:manipulation}.mobile-inspector-panel .tool-fold summary h2{margin:0}.mobile-inspector-panel .tool-fold summary .fold-chevron{border-color:#718080}.mobile-inspector-panel .fold-icon{color:var(--teal)}.mobile-inspector-panel .tool-fold-content{margin:0;padding:0 13px 16px}.mobile-inspector-panel .preset{min-height:44px}.preview-page{height:auto;min-height:100vh;padding:16px}.preview-header{gap:12px}.preview-title,.preview-actions{width:100%}.preview-canvas-frame{flex:0 0 auto;min-height:0}.preview-canvas-frame .unit-canvas--preview{display:block;height:auto;aspect-ratio:900 / 690}.preview-notice{text-align:left}.preview-page.is-ambient.is-mobile-preview{height:100svh;min-height:100svh;padding:0;overflow:hidden}.preview-page.is-ambient.is-mobile-preview .mobile-ambient-header{position:absolute;inset:max(12px,env(safe-area-inset-top)) 12px auto;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 8px 8px 13px;border:1px solid rgba(118,194,202,.34);border-radius:14px;background:#14242bbd;color:#eef2ec;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px)}.mobile-ambient-title{display:flex;align-items:baseline;gap:10px;min-width:0}.mobile-ambient-title span{overflow:hidden;color:#b7c6c5;font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}.mobile-ambient-title strong{flex:0 0 auto;color:#73c3ca;font-size:1.05rem;font-weight:600}.preview-page.is-ambient.is-mobile-preview .mobile-ambient-header button{flex:0 0 auto;min-height:42px;padding:0 13px;border:1px solid rgba(118,194,202,.42);border-radius:10px;color:#e3e9e8;font-size:.73rem;font-weight:550;background:#20343bdb;touch-action:manipulation}.preview-page.is-ambient.is-mobile-preview .preview-canvas-frame{position:relative;flex:1 1 auto;height:100svh;min-height:100svh}.preview-page.is-ambient.is-mobile-preview .preview-canvas-frame .unit-canvas--preview{position:absolute;top:50%;left:50%;display:block;width:max(100vw,calc(100svh * 900 / 690));max-width:none;height:max(100svh,calc(100vw * 690 / 900));min-height:100svh;aspect-ratio:auto;transform:translate(-50%,-50%);animation:none}.preview-page.is-ambient.is-mobile-preview .preview-notice{display:none}.demo-page:not(.is-ambient){height:auto;min-height:100vh;overflow:visible;padding:16px}.demo-header{align-items:flex-start;flex-direction:column;gap:12px}.demo-branches,.demo-playback{flex-wrap:wrap}.subgroup-graph{min-height:475px;padding:14px}.subgroup-map{min-height:302px;margin-top:10px}.demo-viewport{min-height:460px}.demo-caption{right:13px;bottom:13px;min-width:206px}}
