:root{--bg:#0b1020;--surface:#141b2d;--border:#24304a;--text:#e8edf7;--muted:#9aa8c7;--accent:#5b8cff;--accent-soft:#1a2744;--success:#3ecf8e;--warning:#f5a623}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%;background:radial-gradient(circle at top,#152038 0,var(--bg) 55%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.container{width:min(1100px,calc(100% - 2rem));margin:0 auto;padding:2rem 0 4rem}.card{background:color-mix(in srgb,var(--surface) 92%,white 8%);border:1px solid var(--border);border-radius:16px;padding:1.25rem;box-shadow:0 12px 40px rgba(0,0,0,.25)}.grid{display:grid;grid-gap:1rem;gap:1rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border:none;border-radius:10px;padding:.75rem 1rem;background:var(--accent);color:white;font-weight:600;cursor:pointer}.btn.secondary{background:transparent}.btn.secondary,.input{border:1px solid var(--border);color:var(--text)}.input{width:100%;background:#0f1526;border-radius:10px;padding:.75rem .9rem}.label{display:block;margin-bottom:.35rem;font-size:.9rem}.label,.muted{color:var(--muted)}.hero{padding:3rem 0 1rem}.hero h1{font-size:clamp(2rem,4vw,3rem);margin:0 0 .75rem}.stat{font-size:2rem;font-weight:700}.bar-row{display:grid;grid-template-columns:80px 1fr 40px;grid-gap:.75rem;gap:.75rem;align-items:center;margin-bottom:.5rem}.bar-track{height:10px;background:#0f1526;border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,var(--accent),#7aa2ff)}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:.75rem;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600}.nav{align-items:center;justify-content:space-between;padding:1rem 0 2rem}.nav,.nav-links{display:flex;gap:1rem}.badge{display:inline-block;padding:.2rem .55rem;border-radius:999px;background:var(--accent-soft);color:#b9cbff;font-size:.8rem}.error{color:#ff8a8a;margin-top:.5rem}.success{color:var(--success)}.admin-user-details summary{cursor:pointer;padding:.75rem;list-style:none}.admin-user-details summary::-webkit-details-marker{display:none}.admin-user-details[open] summary{background:color-mix(in srgb,var(--accent-soft) 35%,transparent 65%);border-bottom:1px solid color-mix(in srgb,var(--border) 70%,white 30%)}.admin-user-details summary .caret{display:inline-block;transition:transform .15s ease;color:var(--muted)}.admin-user-details[open] summary .caret{transform:rotate(90deg)}.admin-expand-panel{margin:0 .75rem .75rem 2rem;padding:1rem 1.25rem;background:#0f1526;border:1px solid color-mix(in srgb,var(--border) 70%,white 30%);border-radius:10px}.admin-expand-panel h3{margin:1rem 0 .75rem;font-size:.95rem;font-weight:600}.admin-expand-meta{margin:0;font-size:.9rem}.admin-subtable{width:100%;border-collapse:collapse;border:1px solid color-mix(in srgb,var(--border) 60%,white 40%);border-radius:8px;overflow:hidden;font-size:.9rem}.admin-subtable thead th{background:#1a2744;color:var(--text);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;padding:.7rem .85rem;border-bottom:1px solid color-mix(in srgb,var(--border) 50%,white 50%)}.admin-subtable tbody td{padding:.7rem .85rem;border-bottom:1px solid color-mix(in srgb,var(--border) 45%,white 55%);vertical-align:middle}.admin-subtable tbody tr:last-child td{border-bottom:none}.admin-subtable tbody tr:nth-child(2n){background:color-mix(in srgb,#0f1526 94%,white 6%)}.admin-subtable tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 50%,#0f1526 50%)}.json-block{margin:0;padding:1rem 1.15rem;background:#0f1526;border:1px solid color-mix(in srgb,var(--border) 70%,white 30%);border-radius:10px;max-height:400px;overflow:auto;font-size:.9rem;line-height:1.55;width:100%;max-width:100%;min-width:0}.json-block--tool-definition{min-height:800px;max-height:800px}.json-field+.json-field{margin-top:1rem;padding-top:1rem;border-top:1px solid color-mix(in srgb,var(--border) 55%,transparent 45%)}.json-field+.json-field.json-field--compact{margin-top:.5rem;padding-top:0;border-top:none}.json-field--compact .json-field-label{margin-bottom:.3rem}.json-field-label{margin-bottom:.45rem;color:var(--accent);font-size:.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.json-field-value{color:var(--text)}.json-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.json-primitive{display:inline-block;padding:.15rem .45rem;border-radius:6px;background:color-mix(in srgb,var(--accent-soft) 70%,#0f1526 30%);color:#d6e2ff;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.85em}.json-object{display:grid;grid-gap:.85rem;gap:.85rem}.json-object--inline{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .85rem;max-width:100%}.json-object--inline-nested{padding-left:.65rem;border-left:1px solid color-mix(in srgb,var(--border) 60%,var(--accent) 40%)}.json-inline-field{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.3rem .4rem;max-width:100%;min-width:0}.json-inline-label{color:var(--muted);font-size:.72rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.json-inline-value{color:var(--text);overflow-wrap:anywhere;word-break:break-word}.json-inline-array{display:inline-flex;flex-wrap:wrap;gap:.35rem}.json-inline-array-item{padding:.15rem .45rem;border-radius:999px;background:color-mix(in srgb,var(--accent-soft) 55%,#0f1526 45%);color:#d6e2ff;font-size:.85em}.json-field-group{padding-left:.85rem;border-left:2px solid color-mix(in srgb,var(--border) 65%,var(--accent) 35%)}.json-array{margin:0;padding-left:1.25rem;display:grid;grid-gap:.65rem;gap:.65rem}.json-array--inline{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:.45rem}.json-array--inline .json-array-item{margin:0;padding:.35rem .65rem;border-radius:999px;background:color-mix(in srgb,var(--accent-soft) 55%,#0f1526 45%);color:#d6e2ff;font-size:.85em;white-space:normal;overflow-wrap:anywhere;word-break:break-word}.json-array:not(.json-array--inline) .json-array-item{padding-left:.35rem}.shader-control{display:grid;grid-gap:.4rem;gap:.4rem}.shader-control-label{font-size:.85rem;color:var(--muted)}.shader-control-row{display:flex;align-items:center;gap:.65rem}.shader-control-text{flex:1 1;border:1px solid var(--border);border-radius:8px;padding:.45rem .6rem;background:color-mix(in srgb,var(--surface) 92%,white 8%);color:var(--text);font:inherit}.shader-control-multiselect{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:.45rem .75rem;gap:.45rem .75rem}.shader-control-checkbox{display:flex;align-items:center;gap:.45rem;font-size:.9rem;cursor:pointer}.shader-control-value{min-width:2.5rem;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--muted)}.shader-preview-stage{display:flex;align-items:center;justify-content:center;width:334px;height:450px;padding:1rem;border-radius:12px;background:linear-gradient(45deg,#1a2030 25%,transparent 0),linear-gradient(-45deg,#1a2030 25%,transparent 0),linear-gradient(45deg,transparent 75%,#1a2030 0),linear-gradient(-45deg,transparent 75%,#1a2030 0);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;background-color:#12182a;overflow:hidden}.shader-preview-scaler{position:relative;flex-shrink:0}.lines-shader-root{flex-shrink:0}.lines-shader-clip--bg-only{position:absolute;overflow:hidden}.lines-shader-bg,.lines-shader-lines{position:absolute;inset:0}.lines-shader-lines{display:block;pointer-events:none}.lines-shader-overlay{position:absolute;inset:0;pointer-events:none}.lines-shader-overlay--interactive{pointer-events:all}.simple-gradient-shader-root{flex-shrink:0}.simple-gradient-shader-clip{position:absolute;overflow:hidden}.simple-gradient-shader-bg{position:absolute;inset:0}.block-shader-root{flex-shrink:0}.block-shader-clip--bg-only{position:absolute;overflow:hidden}.block-shader-bg,.block-shader-squares{position:absolute;inset:0}.block-shader-squares{display:block;pointer-events:none}.triangular-shader-root{flex-shrink:0}.triangular-shader-clip--bg-only{position:absolute;overflow:hidden}.triangular-shader-bg{position:absolute;inset:0}.triangular-shader-shapes{position:absolute;inset:0;display:block;pointer-events:none}@keyframes shader-shape-reveal{0%{opacity:0;transform:scale(.65)}to{opacity:1;transform:scale(1)}}.block-shader-square--load-anim,.triangular-shader-shape--load-anim{opacity:0;transform-box:fill-box;transform-origin:center;animation:shader-shape-reveal var(--shader-shape-reveal-duration,.52s) ease forwards;animation-delay:calc(var(--reveal-order, 0) * var(--shader-shape-reveal-stagger, 70ms))}.lines-shader-line--load-anim{opacity:0;animation:shader-line-reveal var(--shader-line-reveal-fade,.3s) ease forwards}@keyframes shader-line-reveal{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.block-shader-square--load-anim,.lines-shader-line--load-anim,.triangular-shader-shape--load-anim{opacity:1;transform:none;animation:none}}.shader-layout-guides{pointer-events:none}.shader-guide-start-line{stroke:rgba(255,196,120,.75)}.shader-guide-end-line{stroke:rgba(96,232,190,.85)}.shader-guide-end-line--active{stroke:rgba(120,255,210,1)}.shader-end-edge-layer{pointer-events:none}.shader-end-edge-hit{cursor:pointer;pointer-events:all}.shader-end-range-handle{fill:rgba(96,232,190,.45);stroke:rgba(120,255,210,1);stroke-width:1.5;cursor:-webkit-grab;cursor:grab;pointer-events:all}.shader-end-range-handle--from{fill:rgba(96,232,190,.65)}.shader-end-range-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.shader-curve-handle-layer{pointer-events:none}.shader-curve-handle-layer circle{pointer-events:all}.shader-start-anchor-layer{pointer-events:none}.shader-start-anchor-hit{fill:transparent;stroke:none;cursor:pointer;pointer-events:none}.shader-start-anchor-dot{fill:rgba(255,196,120,.4);stroke:rgba(255,196,120,.9);stroke-width:1.25;opacity:0;transition:opacity .15s ease}.shader-start-anchor-dot--selected{fill:rgba(255,196,120,.9);stroke:#ffd28a;stroke-width:1.5;opacity:1}.shader-preview-stage:hover .shader-start-anchor-dot,.shader-preview-stage:hover .shader-start-anchor-hit{pointer-events:all;opacity:1}.shader-preview-stage:hover .shader-start-anchor-dot--selected{fill:rgba(255,196,120,.95)}.shader-json-output{margin:0;padding:.85rem 1rem;border-radius:10px;border:1px solid var(--border);background:#0f1526;color:#c9d7f2;font-size:.82rem;line-height:1.5;overflow-x:auto}.scene-playground-layout{display:grid;grid-template-columns:minmax(200px,260px) minmax(0,1fr);grid-gap:1.25rem;gap:1.25rem;align-items:start}.scene-playground-controls{min-width:0;overflow-x:hidden;padding:1rem}.scene-playground-controls h2,.scene-playground-controls h3{font-size:.95rem;line-height:1.3;overflow-wrap:anywhere}.scene-playground-controls__section{margin-top:1.25rem}.scene-playground-controls__section--tabs{margin-top:0;margin-bottom:.75rem}.scene-playground-controls__element{margin-top:0}.scene-controls-grid,.scene-playground-controls .grid{gap:.75rem;min-width:0}.scene-playground-controls .shader-control{min-width:0}.scene-playground-controls .shader-control-label{font-size:.78rem;line-height:1.35;overflow-wrap:anywhere}.scene-playground-controls .shader-control-row{min-width:0;gap:.45rem}.scene-playground-controls .shader-control-row:has(input[type=color]){display:grid;grid-template-columns:2.25rem minmax(0,1fr);align-items:center}.scene-playground-controls input[type=color]{width:2.25rem;height:2rem;padding:0;border:1px solid var(--border);border-radius:6px;cursor:pointer}.scene-playground-controls .shader-control-text,.scene-playground-controls select.shader-control-text{width:100%;min-width:0;max-width:100%;box-sizing:border-box;padding:.4rem .5rem;font-size:.78rem}.scene-playground-controls input[type=range]{min-width:0;flex:1 1;width:100%;max-width:100%}.scene-playground-controls .shader-control-value{flex:0 0 auto;min-width:2rem;font-size:.75rem}.scene-playground-controls .shader-control-multiselect{grid-template-columns:1fr;gap:.35rem}.scene-playground-controls .shader-control-checkbox{font-size:.78rem;min-width:0}.scene-playground-controls .shader-control-checkbox span{overflow-wrap:anywhere}.scene-playground-controls .btn{width:100%;max-width:100%;box-sizing:border-box;padding:.5rem .6rem;font-size:.78rem;font-weight:600;white-space:normal;text-align:center;line-height:1.25}.scene-playground-controls__action{margin-top:.25rem}.scene-element-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:.45rem;gap:.45rem;min-width:0}.scene-element-tabs .btn{width:100%;padding:.45rem .35rem;font-size:.72rem}.element-shader-json__header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.element-shader-json__toggle{width:auto!important;padding:.35rem .5rem;font-size:.72rem;flex-shrink:0}.element-shader-json__input{width:100%;min-width:0;max-width:100%;box-sizing:border-box;border:1px solid var(--border);border-radius:8px;padding:.45rem .5rem;background:#0f1526;color:#c9d7f2;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.72rem;line-height:1.4;resize:vertical;overflow:auto}.element-shader-json__input--expanded{min-height:12rem}.element-shader-json__error{margin:0;font-size:.75rem}.scene-group-manager__actions{display:grid;grid-gap:.45rem;gap:.45rem;margin-bottom:.75rem}.scene-group-manager__list{display:grid;grid-gap:.35rem;gap:.35rem;margin-bottom:.75rem}.scene-group-manager__item{display:grid;grid-template-columns:auto 1fr;grid-gap:.35rem .5rem;gap:.35rem .5rem;align-items:center;font-size:.78rem;cursor:pointer}.scene-group-manager__item input{margin:0}.scene-group-manager__item .muted{grid-column:2;font-size:.72rem}.scene-group-manager__summary{display:grid;grid-gap:.35rem;gap:.35rem}.scene-group-manager--preview{margin-bottom:1rem;padding:.75rem 1rem;border-radius:10px;border:1px solid var(--border);background:color-mix(in srgb,var(--surface) 92%,var(--text) 8%)}.scene-group-manager--preview .scene-group-manager__header{display:grid;grid-gap:.25rem;gap:.25rem;margin-bottom:.65rem}.scene-group-manager--preview .scene-group-manager__empty,.scene-group-manager--preview .scene-group-manager__groups,.scene-group-manager--preview .scene-group-manager__hint{margin:0;font-size:.78rem}.scene-group-manager--preview .scene-group-manager__actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.65rem}.scene-group-manager--preview .scene-group-manager__list{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;margin-bottom:.65rem}.scene-group-manager--preview .scene-group-manager__summary{padding-top:.5rem;border-top:1px solid var(--border)}.scene-playground-preview{min-width:0;display:flex;flex-direction:column}.scene-preview-stage{display:flex;align-items:stretch;justify-content:stretch;width:100%;max-width:100%;padding:1rem;border-radius:12px;background:linear-gradient(45deg,#1a2030 25%,transparent 0),linear-gradient(-45deg,#1a2030 25%,transparent 0),linear-gradient(45deg,transparent 75%,#1a2030 0),linear-gradient(-45deg,transparent 75%,#1a2030 0);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;background-color:#12182a;overflow:hidden;flex:1 1;min-width:0;box-sizing:border-box}.scene-preview-scaler{position:relative;width:100%;max-width:100%;min-width:0}.curve-path-scene,.curve-path-scene__stage{position:relative;overflow:visible}.curve-path-scene__stage{width:100%;height:100%}.curve-path-scene__paths{display:block}.curve-path-scene__overlay,.curve-path-scene__paths{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.curve-path-scene__overlay{z-index:10}.curve-path-scene__handle-hit{fill:transparent;stroke:none;cursor:-webkit-grab;cursor:grab;pointer-events:all}.curve-path-scene__handle-hit:active{cursor:-webkit-grabbing;cursor:grabbing}.curve-path-scene__handle{fill:rgba(255,196,120,.9);stroke:#ffd28a;stroke-width:1.5;pointer-events:none}.curve-path-scene__handle--tangent{fill:rgba(120,196,255,.9);stroke:#8ac8ff}.curve-path-scene__tangent-guide{stroke:rgba(138,200,255,.55);stroke-width:1;stroke-dasharray:4 3;pointer-events:none}.curve-path-scene__element{position:absolute;overflow:visible;cursor:-webkit-grab;cursor:grab;border-radius:2px;z-index:5;pointer-events:auto}.curve-path-scene__element-bounds{position:relative;width:100%;height:100%;overflow:visible}.curve-path-scene__element-scaler{position:absolute;top:0;left:0;overflow:visible;pointer-events:none;transform-origin:top left}.curve-path-scene__element-scaler>*{pointer-events:auto}.curve-path-scene__element:active{cursor:-webkit-grabbing;cursor:grabbing}.curve-path-scene__element--group-selected{outline:2px dashed rgba(96,232,190,.75);outline-offset:2px}.curve-path-scene__group{position:absolute;box-sizing:border-box;border:2px solid rgba(96,232,190,.9);border-radius:4px;pointer-events:auto;cursor:-webkit-grab;cursor:grab;background:rgba(96,232,190,.06)}.curve-path-scene__group:active{cursor:-webkit-grabbing;cursor:grabbing}.curve-path-scene__element--selected{outline:2px solid rgba(96,232,190,.9);outline-offset:2px}.orbit-explorer-scene{position:absolute;inset:0;overflow:hidden;pointer-events:none}.orbit-explorer-scene__stage{position:relative;width:100%;height:100%;overflow:hidden}.orbit-explorer-scene__rings{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none;overflow:visible}.orbit-explorer-scene__ring{pointer-events:none}.orbit-explorer-scene__face{position:absolute;top:0;left:0;will-change:transform;pointer-events:none}.orbit-explorer-scene__face-shader{position:absolute;z-index:0;pointer-events:none;opacity:0;transition:opacity .45s ease}.orbit-explorer-scene__face-shader--visible{opacity:1}.orbit-explorer-scene__face-shader-bounds{position:relative;width:100%;height:100%;overflow:visible}.orbit-explorer-scene__face-shader-scaler{position:absolute;top:0;left:0;transform-origin:top left;pointer-events:none}.orbit-explorer-scene__face-avatar{position:relative;z-index:1;border-radius:50%;overflow:hidden;pointer-events:none}.scene-playground-preview .orbit-explorer-scene{position:relative;min-height:420px;border-radius:4px;background:rgba(248,244,241,1)}