@import "https://fonts.googleapis.com/css2?family=Instrument+Sans:wdth,wght@75..100,400..700&family=Newsreader:opsz,wght@6..72,400..600&display=swap";:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:oklch(94% .018 78);--paper-deep:oklch(89% .026 73);--paper-light:oklch(97% .012 82);--ink:oklch(23% .026 62);--ink-soft:oklch(44% .027 65);--line:oklch(80% .026 72);--lime:oklch(61% .128 111);--lime-dark:oklch(39% .09 107);--clay:oklch(55% .16 39);--danger:oklch(49% .16 28);--warning:oklch(58% .14 69);--font-sans:"Instrument Sans", "Avenir Next", sans-serif;--font-serif:"Newsreader", Georgia, serif;--ease-out:cubic-bezier(.16, 1, .3, 1);--header-height:3.5rem}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{min-width:20rem;min-height:100svh;padding:0 0 calc(5.5rem + env(safe-area-inset-bottom));background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-kerning:normal;margin:0;font-size:1rem;line-height:1.5}button,input{color:inherit;font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--clay);outline-offset:3px}button{cursor:pointer;border:0}.skip-link{z-index:100;background:var(--ink);color:var(--paper-light);transition:transform .16s var(--ease-out);padding:.65rem .9rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.topbar{z-index:30;height:calc(var(--header-height) + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(1rem, env(safe-area-inset-right)) 0 max(1rem, env(safe-area-inset-left));border-bottom:1px solid var(--line);background:color-mix(in oklch, var(--paper) 94%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);grid-template-columns:1fr auto;align-items:center;display:grid;position:sticky;top:0}.brand{width:fit-content;color:inherit;align-items:baseline;gap:.55rem;text-decoration:none;display:inline-flex}.brand__mark{font-family:var(--font-serif);letter-spacing:-.035em;font-size:1.45rem;font-weight:600}.brand__tag,.eyebrow{letter-spacing:.12em;text-transform:uppercase;font-size:.69rem;font-weight:700}.brand__tag{color:var(--ink-soft)}.project-state{display:none}.status-dot{background:var(--lime);border-radius:50%;width:.45rem;height:.45rem}.text-button{background:0 0;min-width:2.75rem;min-height:2.75rem;padding:0 .35rem;font-size:.83rem;font-weight:650}.studio{min-height:calc(100svh - var(--header-height))}.stage{background:var(--paper-deep);min-width:0}.stage__toolbar{min-height:4.5rem;padding:.75rem max(1rem, env(safe-area-inset-right)) .75rem max(1rem, env(safe-area-inset-left));border-bottom:1px solid color-mix(in oklch, var(--line) 78%, transparent);justify-content:space-between;align-items:center;gap:1rem;display:flex}.eyebrow{color:var(--lime-dark);margin:0 0 .15rem}h1,h2,p{margin-top:0}h1,h2{font-family:var(--font-serif);letter-spacing:-.035em;font-weight:500}h1{margin-bottom:0;font-size:clamp(1.35rem,5.4vw,1.85rem);line-height:1}h2{margin-bottom:.75rem;font-size:clamp(1.8rem,8vw,2.55rem);line-height:1}.view-switcher{border:1px solid var(--line);background:var(--paper);border-radius:999px;align-items:center;padding:.2rem;display:inline-flex}.view-button{min-width:2.75rem;min-height:2.4rem;color:var(--ink-soft);background:0 0;border-radius:999px;padding:0 .75rem;font-size:.76rem;font-weight:650}.view-button.is-active{background:var(--ink);color:var(--paper-light)}.viewport-shell{isolation:isolate;min-height:clamp(19.5rem,48svh,27rem);position:relative;overflow:hidden}.viewport{touch-action:none;position:absolute;inset:0}.viewport canvas{width:100%;height:100%;display:block}.profile-chip{z-index:2;border:1px solid color-mix(in oklch, var(--line) 75%, transparent);background:color-mix(in oklch, var(--paper-light) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:4.75rem;padding:.45rem;position:absolute;top:.8rem;left:.8rem}.profile-chip span{color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.2rem;font-size:.58rem;font-weight:700;display:block}.profile-chip svg{aspect-ratio:1;width:100%;display:block;overflow:visible}.profile-chip path{fill:color-mix(in oklch, var(--lime) 78%, var(--paper));stroke:var(--lime-dark);stroke-width:2.2px;vector-effect:non-scaling-stroke}.camera-reset{z-index:2;border:1px solid color-mix(in oklch, var(--line) 75%, transparent);background:color-mix(in oklch, var(--paper-light) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);min-height:2.75rem;padding:0 .85rem;font-size:.73rem;font-weight:650;position:absolute;top:.8rem;right:.8rem}.gesture-hint{z-index:2;background:color-mix(in oklch, var(--paper-deep) 82%, transparent);width:max-content;color:var(--ink-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);margin:0;padding:.45rem .7rem;font-size:.69rem;position:absolute;bottom:.75rem;left:50%;transform:translate(-50%)}.stage__status{min-height:3rem;padding:.65rem max(1rem, env(safe-area-inset-right)) .65rem max(1rem, env(safe-area-inset-left));border-top:1px solid color-mix(in oklch, var(--line) 78%, transparent);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:.75rem;font-size:.76rem;display:flex}.mesh-status{align-items:center;gap:.35rem;font-weight:650;display:inline-flex}.mesh-status.is-valid{color:var(--lime-dark)}.mesh-status.is-warning{color:var(--warning)}.mesh-status.is-error{color:var(--danger)}.controls,.export-panel{padding:2rem max(1rem, env(safe-area-inset-right)) 2rem max(1rem, env(safe-area-inset-left))}.controls__intro{max-width:35rem}.controls__intro p:last-child,.export-copy{max-width:38ch;color:var(--ink-soft);margin-bottom:0;font-size:.9rem}.section-nav{z-index:10;top:calc(var(--header-height) + env(safe-area-inset-top));border-block:1px solid var(--line);background:color-mix(in oklch, var(--paper) 94%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);scrollbar-width:none;gap:.4rem;margin:1.5rem -1rem 0;padding:.55rem 1rem;display:flex;position:sticky;overflow-x:auto}.section-nav::-webkit-scrollbar{display:none}.section-nav a{min-height:2.75rem;color:var(--ink-soft);white-space:nowrap;border-radius:999px;align-items:center;padding:0 .95rem;font-size:.78rem;font-weight:650;text-decoration:none;display:inline-flex}.parameter-group{border:0;border-bottom:1px solid var(--line);min-width:0;margin:0;padding:1.75rem 0}.parameter-group legend{width:100%;font-family:var(--font-serif);align-items:center;gap:.65rem;margin-bottom:1.5rem;padding:0;font-size:1.35rem;font-weight:600;display:flex}.parameter-group legend span{color:var(--clay);font-family:var(--font-sans);letter-spacing:.08em;font-size:.65rem;font-weight:700}.parameter{min-width:0;margin-bottom:1.65rem}.parameter:last-child{margin-bottom:0}.parameter__header{justify-content:space-between;align-items:center;gap:1rem;min-height:2.75rem;margin-bottom:.35rem;display:flex}.parameter label,.toggle strong{font-size:.88rem;font-weight:650}.parameter output{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:.82rem}.number-control{border-bottom:1px solid var(--ink-soft);min-height:2.75rem;color:var(--ink-soft);align-items:center;display:inline-flex}.number-control input{text-align:right;font-variant-numeric:tabular-nums;background:0 0;border:0;width:4rem;min-height:2.75rem;padding:0 .25rem 0 0;font-size:1rem}.number-control span{text-align:right;min-width:1.65rem;font-size:.77rem}input[type=range]{--fill:50%;appearance:none;cursor:pointer;background:0 0;width:100%;height:2.75rem;margin:0}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--clay) 0 var(--fill), var(--line) var(--fill) 100%);border-radius:999px;height:.25rem}input[type=range]::-moz-range-track{background:var(--line);border-radius:999px;height:.25rem}input[type=range]::-moz-range-progress{background:var(--clay);border-radius:999px;height:.25rem}input[type=range]::-webkit-slider-thumb{appearance:none;border:.3rem solid var(--paper);background:var(--ink);width:1.5rem;height:1.5rem;box-shadow:0 0 0 1px var(--ink);border-radius:50%;margin-top:-.625rem}input[type=range]::-moz-range-thumb{border:.3rem solid var(--paper);background:var(--ink);width:1rem;height:1rem;box-shadow:0 0 0 1px var(--ink);border-radius:50%}.parameter__hint{color:var(--ink-soft);margin:-.15rem 0 0;font-size:.74rem}.parameter-pair{gap:0;display:grid}.toggle{cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;min-height:4rem;margin:0 0 1.5rem;display:flex}.toggle>span:first-child{gap:.1rem;display:grid}.toggle small{color:var(--ink-soft);font-size:.74rem}.toggle input{opacity:0;pointer-events:none;position:absolute}.toggle__track{border:1px solid var(--line);background:var(--paper-deep);width:3rem;height:1.75rem;transition:background-color .18s var(--ease-out);border-radius:999px;flex:none;position:relative}.toggle__track:after{content:"";background:var(--ink-soft);width:1.25rem;height:1.25rem;transition:transform .18s var(--ease-out), background-color .18s var(--ease-out);border-radius:50%;position:absolute;top:.2rem;left:.2rem}.toggle input:checked+.toggle__track{background:var(--lime)}.toggle input:checked+.toggle__track:after{background:var(--ink);transform:translate(1.2rem)}.toggle input:focus-visible+.toggle__track{outline:2px solid var(--clay);outline-offset:3px}[data-star-control].is-disabled{opacity:.38}.quick-values{gap:.4rem;display:flex}.quick-values button{border:1px solid var(--line);background:0 0;border-radius:999px;min-width:2.75rem;min-height:2.75rem;padding:0 .75rem;font-size:.76rem;font-weight:650}.export-panel{border-top:1px solid var(--line);background:var(--paper-light)}.export-panel__content{max-width:35rem}.spec-list{margin:1.75rem 0}.spec-list div{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;min-height:3rem;display:flex}.spec-list dt{color:var(--ink-soft);font-size:.77rem}.spec-list dd{font-variant-numeric:tabular-nums;text-align:right;margin:0;font-size:.82rem;font-weight:650}.print-note{color:var(--ink-soft);gap:.7rem;display:flex}.print-note>span{width:1.35rem;height:1.35rem;font-family:var(--font-serif);border:1px solid;border-radius:50%;flex:none;place-items:center;font-size:.8rem;display:grid}.print-note p{margin-bottom:0;font-size:.76rem}.export-actions{z-index:40;min-height:calc(4.75rem + env(safe-area-inset-bottom));padding:.7rem max(1rem, env(safe-area-inset-right)) max(.7rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));border-top:1px solid var(--line);background:color-mix(in oklch, var(--paper-light) 94%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);grid-template-columns:minmax(0,.78fr) minmax(0,1.35fr);gap:.65rem;display:grid;position:fixed;bottom:0;left:0;right:0}.primary-button,.secondary-button{min-height:3rem;transition:transform .14s var(--ease-out), background-color .14s var(--ease-out);border-radius:999px;padding:0 1rem;font-size:.85rem;font-weight:700}.primary-button{background:var(--ink);color:var(--paper-light)}.primary-button:disabled{cursor:not-allowed;opacity:.45}.secondary-button{border:1px solid var(--line);background:0 0}.primary-button:active,.secondary-button:active,.text-button:active,.camera-reset:active,.quick-values button:active{transform:scale(.98)}.toast{z-index:80;top:calc(var(--header-height) + env(safe-area-inset-top) + .75rem);background:var(--ink);max-width:calc(100vw - 2rem);color:var(--paper-light);opacity:0;pointer-events:none;transition:opacity .18s var(--ease-out), transform .18s var(--ease-out);padding:.7rem 1rem;font-size:.8rem;position:fixed;left:50%;transform:translate(-50%,-.75rem)}.toast.is-visible{opacity:1;transform:translate(-50%)}@media (hover:hover){.text-button:hover,.camera-reset:hover,.quick-values button:hover,.secondary-button:hover{background:var(--paper-deep)}.primary-button:hover:not(:disabled){background:var(--lime-dark)}}@media (width>=40rem){.topbar{padding-inline:max(1.5rem, env(safe-area-inset-left))}.stage__toolbar,.stage__status,.controls,.export-panel{padding-inline:1.5rem}.viewport-shell{min-height:clamp(22rem,52svh,34rem)}.parameter-pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem}.parameter-pair .parameter{margin-bottom:0}}@media (width>=50rem){body{padding-bottom:0}.topbar{grid-template-columns:1fr auto 1fr}.project-state{color:var(--ink-soft);align-items:center;gap:.5rem;font-size:.75rem;display:inline-flex}.text-button{justify-self:end}.studio{grid-template-columns:minmax(0,1fr) 21.5rem;grid-template-areas:"stage controls""stage export";align-items:start;display:grid}.stage{top:calc(var(--header-height) + env(safe-area-inset-top));height:calc(100svh - var(--header-height) - env(safe-area-inset-top));border-right:1px solid var(--line);grid-area:stage;grid-template-rows:auto minmax(0,1fr) auto;display:grid;position:sticky}.viewport-shell{min-height:0}.controls{grid-area:controls}.export-panel{border-top:1px solid var(--line);grid-area:export}.export-actions{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0;grid-template-columns:1fr;min-height:0;margin-top:1.5rem;padding:0;position:static}}@media (width>=75rem){.studio{height:calc(100svh - var(--header-height) - env(safe-area-inset-top));grid-template-columns:20rem minmax(32rem,1fr) 18.5rem;grid-template-areas:"controls stage export";overflow:hidden}.stage{border-inline:1px solid var(--line);height:100%;position:static}.controls,.export-panel{scrollbar-width:thin;scrollbar-color:var(--line) transparent;height:100%;overflow-y:auto}.controls{padding-inline:1.65rem}.export-panel{border-top:0;padding-inline:1.5rem}.controls__intro h2{max-width:9ch}.section-nav{top:0}.parameter-pair{grid-template-columns:1fr;gap:0}.parameter-pair .parameter:not(:last-child){margin-bottom:1.65rem}}@media (pointer:coarse){.view-button,.text-button,.camera-reset,.quick-values button,.section-nav a{min-height:2.75rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
