.shaper{--bg: var(--bg-primary);--surface: var(--bg-secondary);--surface-raised: #22222c;--surface-sunken: #0b0b0f;--surface-hover: #262630;--line: var(--glass-border);--line-strong: rgba(255, 255, 255, .2);--text: var(--text-primary);--text-muted: var(--text-secondary);--text-faint: rgba(232, 234, 237, .45);--accent-strong: var(--accent-hover);--accent-dim: var(--accent-subtle);--danger: #e0685f;--danger-dim: rgba(224, 104, 95, .12);--warn: #d9b44a;--warn-dim: rgba(217, 180, 74, .12);--radius-sm: 6px;--shadow: var(--glass-shadow);--step: 8px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}:root[data-theme=light] .shaper{--surface-raised: #f7f7fa;--surface-sunken: #e7e7ec;--surface-hover: #ededf2;--line-strong: rgba(0, 0, 0, .2);--text-faint: rgba(26, 26, 34, .5);--danger-dim: rgba(224, 104, 95, .14);--warn-dim: rgba(217, 180, 74, .18)}.shaper *,.shaper *:before,.shaper *:after{box-sizing:border-box}.shaper h1,.shaper h2,.shaper h3,.shaper h4,.shaper p,.shaper dl,.shaper dd,.shaper figure{margin:0}.shaper ul{margin:0;padding:0;list-style:none}.shaper a{color:inherit;text-decoration:none}.shaper code{font-family:var(--font-mono);font-size:.9em}.shaper :focus-visible{outline:2px solid var(--accent);outline-offset:2px}.shaper__main{width:100%;max-width:1440px;margin:0 auto;padding:calc(var(--step) * 4)}.shaper .page__header{margin-bottom:calc(var(--step) * 4)}.shaper .page__title{font-size:26px;font-weight:600;letter-spacing:-.01em}.shaper .page__subtitle{margin-top:calc(var(--step) * .5);color:var(--text-muted);max-width:62ch}.shaper .page__state{display:flex;flex-direction:column;gap:calc(var(--step) * 1.5);align-items:flex-start;padding:calc(var(--step) * 4) 0}.shaper .banner{padding:calc(var(--step) * 2);border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface-raised);margin-bottom:calc(var(--step) * 3)}.shaper .banner--error{border-color:#e0685f73;background:var(--danger-dim)}.shaper .banner--warn{border-color:#d9b44a73;background:var(--warn-dim)}.shaper .banner__title{font-weight:600;margin-bottom:calc(var(--step) * .75)}.shaper .banner__list{display:flex;flex-direction:column;gap:4px;color:var(--text-muted);font-size:14px}.shaper .banner__list li:before{content:"—";margin-right:8px;color:var(--text-faint)}.shaper .banner__hint{margin-top:calc(var(--step) * .75);color:var(--text-faint);font-size:13px}.shaper .banner__actions{display:flex;gap:var(--step);margin-top:calc(var(--step) * 1.5)}.shaper .panel-error{padding:calc(var(--step) * 3);border:1px solid rgba(224,104,95,.45);border-radius:var(--radius);background:var(--danger-dim)}.shaper .panel-error__title{font-weight:600}.shaper .panel-error__detail{color:var(--text-muted);font-size:14px;margin-top:4px}.shaper .button{appearance:none;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface-raised);color:var(--text);font:inherit;font-size:14px;padding:8px 14px;cursor:pointer;transition:background .12s ease,border-color .12s ease,opacity .12s ease}.shaper .button:hover:not(:disabled){background:var(--surface-hover);border-color:var(--line-strong)}.shaper .button:disabled{opacity:.45;cursor:not-allowed}.shaper .button--primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.shaper .button--primary:hover:not(:disabled){background:var(--accent-strong);border-color:var(--accent-strong)}.shaper .button--ghost{background:transparent}.shaper .toggle{appearance:none;border:1px solid var(--line-strong);background:transparent;color:var(--text-muted);font:inherit;font-size:13px;letter-spacing:.04em;padding:6px 14px;cursor:pointer}.shaper .toggle:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.shaper .toggle:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left-width:0}.shaper .toggle--active{background:var(--accent-dim);border-color:var(--accent);color:var(--accent-strong)}.shaper .toggle--active+.toggle{border-left-color:var(--accent)}.shaper .card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:calc(var(--step) * 2.5)}.shaper .card-grid>li{display:flex}.shaper .card{display:flex;flex-direction:column;flex:1;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease}.shaper .card:hover{border-color:var(--line-strong);transform:translateY(-2px);box-shadow:var(--shadow)}.shaper .card__thumb{display:block;width:100%;aspect-ratio:4 / 3;object-fit:cover;background:var(--surface-sunken);border-bottom:1px solid var(--line)}.shaper .card__thumb--placeholder{display:grid;place-items:center;background:repeating-linear-gradient(135deg,var(--hover-bg) 0 10px,transparent 10px 20px),var(--surface-sunken)}.shaper .card__thumb-initials{font-size:28px;font-weight:600;letter-spacing:.06em;color:var(--text-faint)}.shaper .card__body{display:flex;flex-direction:column;flex:1;gap:var(--step);padding:calc(var(--step) * 2)}.shaper .card__title{font-size:16px;font-weight:600}.shaper .card__description{color:var(--text-muted);font-size:14px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;line-clamp:4;overflow:hidden}.shaper .chips{display:flex;flex-wrap:wrap;gap:6px}.shaper .card .chips{margin-top:auto}.shaper .chip{padding:2px 9px;border:1px solid var(--line-strong);border-radius:999px;color:var(--text-faint);font-size:12px;letter-spacing:.02em}.shaper .badge{padding:2px 9px;border-radius:999px;background:var(--accent-dim);color:var(--accent-strong);font-size:12px;font-family:var(--font-mono)}.shaper--tool{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}.shaper .workbench{display:grid;grid-template-columns:minmax(320px,380px) 1fr;flex:1 1 auto;min-height:0}.shaper .workbench__side{overflow-y:auto;min-height:0;padding:calc(var(--step) * 2);display:flex;flex-direction:column;gap:calc(var(--step) * 1.5);background:var(--sidebar-bg);border-right:1px solid var(--line)}.shaper .workbench__intro{padding:calc(var(--step) * .5) calc(var(--step) * .5) calc(var(--step) * 1.5);border-bottom:1px solid var(--line)}.shaper .workbench__title{font-size:18px;font-weight:600;letter-spacing:-.01em}.shaper .workbench__lede{margin-top:6px;color:var(--text-muted);font-size:12.5px;line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}.shaper .workbench__meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.shaper .workbench__stage{position:relative;min-width:0;min-height:0}.shaper .workbench__stage>.viewer{position:absolute;inset:0;height:auto;border:0;border-radius:0}.shaper .workbench__card{position:absolute;top:calc(var(--step) * 1.5);right:calc(var(--step) * 1.5);width:min(300px,calc(100% - var(--step) * 3));max-height:calc(100% - var(--step) * 3);overflow-y:auto;display:flex;flex-direction:column;gap:calc(var(--step) * 1.5);padding:calc(var(--step) * 1.75);border:1px solid var(--line);border-radius:var(--radius);background:var(--glass-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:var(--shadow)}.shaper .render-meta{display:flex;gap:calc(var(--step) * 2);color:var(--text-faint);font-size:11px;font-family:var(--font-mono);min-height:14px}.shaper .readouts{display:flex;flex-direction:column;gap:6px;padding-bottom:calc(var(--step) * 1.5);border-bottom:1px solid var(--line)}.shaper .readouts__row{display:flex;align-items:baseline;justify-content:space-between;gap:calc(var(--step) * 1.5);font-size:12.5px}.shaper .readouts__row dt{color:var(--text-muted)}.shaper .readouts__row dd{display:inline-flex;align-items:baseline;gap:8px;text-align:right}.shaper .readouts__value{font-family:var(--font-mono);font-size:14px;color:var(--text)}.shaper .readouts__band{font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);background:var(--accent-dim);border-radius:999px;padding:2px 7px;white-space:nowrap}.shaper .export{display:flex;flex-direction:column;gap:var(--step)}.shaper .export__row{display:flex;gap:var(--step);align-items:stretch}.shaper .export__format{display:flex;flex:none}.shaper .export__button{flex:1;display:flex;justify-content:center;align-items:center;min-height:36px}.shaper .export__share{width:100%;font-size:12.5px}.shaper .export__all{width:100%;min-height:36px;justify-content:center}.shaper .export__note{color:var(--text-faint);font-size:12px}.shaper .export__error{color:var(--danger);font-size:13px}.shaper .export__print>summary{cursor:pointer;font-size:12px;color:var(--text-muted);list-style:none}.shaper .export__print>summary::-webkit-details-marker{display:none}.shaper .export__print>summary:before{content:"▸";display:inline-block;width:1em;color:var(--text-faint);transition:transform .12s ease}.shaper .export__print[open]>summary:before{transform:rotate(90deg)}@media(max-width:900px){.shaper .workbench{grid-template-columns:1fr;grid-template-rows:52vh 1fr}.shaper .workbench__side{order:2;border-right:0;border-top:1px solid var(--line)}.shaper .workbench__stage{order:1}.shaper .workbench__card{width:min(260px,calc(100% - var(--step) * 3))}}.shaper .viewer{--surface-raised: rgba(16, 19, 23, .82);--surface-hover: rgba(32, 38, 46, .9);--surface-sunken: #101317;--line: rgba(255, 255, 255, .1);--line-strong: rgba(255, 255, 255, .2);--text: #e8eaed;--text-muted: #9ca3af;--text-faint: rgba(232, 234, 237, .45);position:relative;border:1px solid var(--line);border-radius:var(--radius);background:#101317;overflow:hidden;height:clamp(340px,58vh,640px)}.shaper .viewer--static{display:grid;place-items:center}.shaper .viewer__canvas{display:block;width:100%;height:100%}.shaper .viewer__hud{position:absolute;display:flex;gap:var(--step);pointer-events:none}.shaper .viewer__hud>*{pointer-events:auto}.shaper .viewer__hud--top{top:calc(var(--step) * 1.5);right:calc(var(--step) * 1.5)}.shaper .viewer__hud--top-left{top:calc(var(--step) * 1.5);left:calc(var(--step) * 1.5)}.shaper .viewer__views{display:flex;gap:4px;padding:3px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface-raised);backdrop-filter:blur(6px)}.shaper .viewer__views button{border:0;background:transparent;color:var(--text-muted);font:inherit;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:5px 9px;border-radius:4px;cursor:pointer}.shaper .viewer__views button:hover{color:var(--text)}.shaper .viewer__views button[aria-pressed=true]{background:var(--accent);color:#fff}.shaper .viewer__hint{position:absolute;right:calc(var(--step) * 1.5);bottom:calc(var(--step) * 1.5);padding:5px 9px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-raised);color:var(--text-faint);font-size:11px;pointer-events:none}.shaper .viewer__hud--bottom{bottom:calc(var(--step) * 1.5);left:calc(var(--step) * 1.5)}.shaper .viewer__hud .button{backdrop-filter:blur(6px)}.shaper .bbox{padding:6px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface-raised);backdrop-filter:blur(6px)}.shaper .bbox dt{color:var(--text-faint);font-size:10px;letter-spacing:.1em;text-transform:uppercase}.shaper .bbox dd{font-family:var(--font-mono);font-size:13px;color:var(--text)}.shaper .viewer__overlay{position:absolute;inset:0;display:grid;place-items:center;background:#0d10136b;backdrop-filter:blur(1px)}.shaper .viewer__banner{position:absolute;left:calc(var(--step) * 1.5);right:calc(var(--step) * 1.5);top:calc(var(--step) * 1.5);padding:8px 12px;border:1px solid rgba(224,104,95,.5);border-radius:var(--radius-sm);background:#301412e6;color:#f3cbc7;font-size:13px}.shaper .viewer__empty,.shaper .viewer__fallback{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:6px;color:var(--text-faint);text-align:center;padding:calc(var(--step) * 3)}.shaper .viewer__fallback{background:var(--surface-sunken)}.shaper .viewer__fallback-title{color:var(--text);font-weight:600}.shaper .viewer__fallback-detail{font-size:13px;max-width:44ch}.shaper .spinner{display:inline-flex;align-items:center;gap:10px;font-size:13px;color:var(--text-muted)}.shaper .spinner__ring{width:16px;height:16px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--accent);animation:spin .72s linear infinite;flex:none}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.shaper .spinner__ring{animation-duration:2s}.shaper .card{transition:none}}.shaper .param-form{display:flex;flex-direction:column;gap:calc(var(--step) * 3)}.shaper .step{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.shaper .step__summary{display:flex;align-items:center;gap:8px;padding:12px 14px;cursor:pointer;list-style:none;user-select:none}.shaper .step__summary::-webkit-details-marker{display:none}.shaper .step__index{font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.shaper .step__label{margin:0;font-size:13.5px;font-weight:600;color:var(--text)}.shaper .step__dot,.shaper .step__flag{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none}.shaper .step__flag{background:var(--danger)}.shaper .step__chevron{margin-left:auto;width:7px;height:7px;border-right:1.5px solid var(--text-faint);border-bottom:1.5px solid var(--text-faint);transform:rotate(-45deg);transition:transform .12s ease}.shaper .step[open]>.step__summary .step__chevron{transform:rotate(45deg)}.shaper .step__body{display:flex;flex-direction:column;gap:calc(var(--step) * 2.5);padding:4px 14px 16px;border-top:1px solid var(--line)}.shaper .param-form{gap:var(--step)}.shaper .field{display:flex;flex-direction:column;gap:6px}.shaper .field--flagged .number-field__input,.shaper .field--flagged .select{border-color:#e0685f99}.shaper .field__label{font-size:13px;font-weight:500;color:var(--text)}.shaper .field__label--inline{font-weight:400}.shaper .field__help{color:var(--text-faint);font-size:12px}.shaper .field__error,.shaper .field__constraint{font-size:12px;color:var(--danger)}.shaper .field__constraint:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--danger);margin-right:7px;vertical-align:middle}.shaper .number-field{display:grid;grid-template-columns:1fr 116px;gap:calc(var(--step) * 1.5);align-items:center}.shaper .number-field__entry{position:relative;display:flex;align-items:center}.shaper .number-field__input,.shaper .select{width:100%;appearance:none;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--text);font:inherit;font-size:14px;font-family:var(--font-mono);padding:7px 10px}.shaper .number-field__input.is-invalid{border-color:var(--danger)}.shaper .number-field__unit{position:absolute;right:10px;color:var(--text-faint);font-size:12px;pointer-events:none}.shaper .number-field__input{padding-right:42px}.shaper .number-field__bounds{display:flex;justify-content:space-between;width:calc(100% - 132px);color:var(--text-faint);font-size:11px;font-family:var(--font-mono)}.shaper .select{font-family:var(--font);background-image:linear-gradient(45deg,transparent 50%,var(--text-faint) 50%),linear-gradient(135deg,var(--text-faint) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:32px;cursor:pointer}.shaper .number-field__slider{appearance:none;width:100%;height:3px;border-radius:2px;background:var(--line-strong);cursor:pointer}.shaper .number-field__slider::-webkit-slider-thumb{appearance:none;width:15px;height:15px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);cursor:grab}.shaper .number-field__slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);cursor:grab}.shaper .bool-field{display:flex;align-items:center;gap:10px}.shaper .checkbox{appearance:none;width:16px;height:16px;flex:none;border:1px solid var(--line-strong);border-radius:4px;background:var(--surface-sunken);cursor:pointer;position:relative}.shaper .checkbox:checked{background:var(--accent);border-color:var(--accent)}.shaper .checkbox:checked:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid #ffffff;border-width:0 2px 2px 0;transform:rotate(43deg)}.shaper .param-form__saved{color:var(--text-faint);font-size:12px}.shaper .param-form__actions{display:flex;align-items:center;justify-content:flex-start;gap:calc(var(--step) * 1.5)}.shaper .print-notes{display:flex;flex-direction:column;gap:6px;margin-top:var(--step)}.shaper .print-notes__row--long{flex-direction:column;gap:4px}.shaper .print-notes__row--long dd{text-align:left;font-size:12px;line-height:1.5}.shaper .print-notes__row{display:flex;justify-content:space-between;gap:calc(var(--step) * 2);font-size:13px}.shaper .print-notes__row dt{color:var(--text-faint);flex:none}.shaper .print-notes__row dd{color:var(--text-muted);text-align:right}.shaper .badge--beta{border-color:color-mix(in srgb,var(--warning, #f5a524) 55%,transparent);background:color-mix(in srgb,var(--warning, #f5a524) 16%,transparent);color:var(--warning, #f5a524);text-transform:lowercase;letter-spacing:.04em}.shaper .workbench__beta{margin:.5rem 0 0;padding:.55rem .7rem;border:1px solid color-mix(in srgb,var(--warning, #f5a524) 35%,transparent);background:color-mix(in srgb,var(--warning, #f5a524) 10%,transparent);border-radius:8px;color:var(--text-secondary);font-size:12.5px;line-height:1.45}
