:root{color-scheme:dark;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#09111f;color:#f5f7fb}*{box-sizing:border-box}.hidden{display:none!important}html,body,#app{margin:0;width:100%;height:100%}body{min-height:100vh;min-height:100dvh;overflow:hidden;background:radial-gradient(circle at top,rgba(73,142,255,.18),transparent 34%),linear-gradient(180deg,#0d1528,#070b14 60%)}button,select,input{font:inherit}.app-shell{height:100vh;height:100dvh;display:flex;flex-direction:column;gap:12px;padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom));overflow:hidden}.panel{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#0a101ebd;border:1px solid rgba(255,255,255,.08);border-radius:18px;box-shadow:0 10px 40px #00000047}.menu-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 14px;flex-wrap:wrap}.menu-bar-leading{display:flex;align-items:center;gap:12px;min-width:0}.menu-bar-traffic{display:flex;align-items:center;gap:6px;flex:0 0 auto}.traffic-dot{width:10px;height:10px;border-radius:999px;box-shadow:inset 0 1px 2px #ffffff47}.traffic-dot-red{background:#ff5f57}.traffic-dot-yellow{background:#ffbd2f}.traffic-dot-green{background:#28c840}.menu-bar-title-group{min-width:0}h1{margin:0;font-size:1rem}.menu-bar-hud{margin-left:auto;display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.menu-bar-metric{min-height:48px;padding:7px 10px;border-radius:14px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:10px}.menu-bar-metric-copy{display:flex;flex-direction:column;gap:3px}.menu-bar-metric-label{color:#97a7c7;font-size:.68rem;line-height:1}.menu-bar-metric-value{color:#f5f7fb;font-size:.92rem;font-weight:700;line-height:1.1;white-space:nowrap}.menu-bar-metric-fps{min-width:176px}.menu-bar-metric-drawcalls{min-width:112px;justify-content:space-between}.menu-bar-fps-chart{width:96px;height:32px;flex:0 0 auto;display:block;border-radius:8px;background:#0408128f;border:1px solid rgba(125,226,255,.08)}.menu-bar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.menu-bar-field{display:flex;align-items:center;gap:8px;padding:7px 8px 7px 10px;border-radius:999px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08)}.menu-bar-field-label{color:#9fb0d3;font-size:.8rem;white-space:nowrap}.menu-bar-field select,.field select{appearance:none;border:1px solid rgba(255,255,255,.1);background:#ffffff0d;color:#fff;border-radius:12px}.menu-bar-field select{min-width:min(34vw,220px);padding:8px 32px 8px 12px;border-radius:999px}.ghost-btn{border:1px solid rgba(255,255,255,.12);background:#ffffff0d;color:#dce6fb;border-radius:999px;padding:8px 12px;font-size:.84rem;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}.ghost-btn:hover,.ghost-btn:focus-visible{transform:translateY(-1px);border-color:#7de2ff47;background:#7de2ff14}.canvas-stage{position:relative;flex:1;min-height:0;overflow:hidden}.canvas-stage-toolbar{position:absolute;top:14px;right:14px;z-index:5;pointer-events:none}.canvas-stage-toolbar .ghost-btn{pointer-events:auto}.canvas-host{width:100%;height:100%;display:grid}.canvas-placeholder{place-self:center;max-width:18rem;padding:1rem;color:#fffc;text-align:center;line-height:1.5;border:1px dashed rgba(255,255,255,.2);border-radius:12px;background:#ffffff0a}canvas{width:100%;height:100%;display:block;touch-action:none}.settings-layer{position:absolute;inset:0;z-index:4;display:flex;justify-content:flex-end;align-items:flex-start;padding:16px;pointer-events:none}.settings-panel{width:min(460px,calc(100vw - 32px));max-height:min(calc(100dvh - 116px),920px);display:flex;flex-direction:column;background:#090e1cb8;pointer-events:auto}.settings-panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding:14px 14px 10px;border-bottom:1px solid rgba(255,255,255,.08)}.settings-panel-eyebrow{color:#7de2ff;font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.settings-panel-title{margin:6px 0 0;font-size:1rem}.settings-panel-copy{margin:6px 0 0;color:#9fb0d3;font-size:.8rem;line-height:1.45}.settings-close-btn{flex:0 0 auto}.settings-scroll{flex:1;min-height:0;padding:12px 14px 14px;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px}.control-group{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:16px;background:#ffffff08;border:1px solid rgba(255,255,255,.08)}.control-group-compact{padding:12px}.control-group-title{font-size:.95rem;font-weight:700;color:#f5f7fb}.control-group-copy{margin:-2px 0 4px;color:#9caed0;font-size:.79rem;line-height:1.5}.field{display:flex;flex-direction:column;gap:6px}.field-static{gap:8px}.field-heading{display:flex;align-items:center;gap:8px}.field-heading-text,.field label{color:#b4c2dc;font-size:.84rem}.field-heading label{margin:0}.field-help{position:relative;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;background:#7de2ff1f;border:1px solid rgba(125,226,255,.22);color:#7de2ff;font-size:.72rem;font-weight:700;cursor:help;flex:0 0 auto}.field-help-tooltip{position:absolute;left:50%;bottom:calc(100% + 10px);width:min(240px,70vw);transform:translate(-50%) translateY(6px);padding:10px 12px;border-radius:12px;background:#070c18f5;border:1px solid rgba(125,226,255,.18);color:#d7e3fb;font-size:.75rem;line-height:1.5;opacity:0;pointer-events:none;box-shadow:0 12px 32px #00000052;transition:opacity .18s ease,transform .18s ease;z-index:12}.field-help:hover .field-help-tooltip,.field-help:focus-visible .field-help-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.field-note{color:#8294b8;font-size:.75rem;line-height:1.4}.field-selection-note{min-height:2.2em;padding:8px 10px;border-radius:10px;background:#ffffff09;border:1px solid rgba(255,255,255,.06)}.field select{width:100%;padding:12px;font-size:.98rem}.field-range{gap:8px}.range-control{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#ffffff0d}.range-control input[type=range]{width:100%;margin:0;accent-color:#7de2ff}.range-meta{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.range-value{color:#f5f7fb;font-size:.98rem;font-weight:700}.range-limit{color:#8ca0c9;font-size:.76rem}.field select:disabled{cursor:not-allowed}.field-toggle{justify-content:flex-start}.toggle-row{display:flex;align-items:center;gap:10px;min-height:48px;border:1px solid rgba(255,255,255,.1);background:#ffffff0d;border-radius:12px;padding:12px;color:#fff}.toggle-row input{width:18px;height:18px;accent-color:#7de2ff}.field-disabled{opacity:.58}.field-disabled .toggle-row,.field-disabled select,.field-disabled .field-selection-note{filter:saturate(.72)}.action-row{display:flex;gap:8px;flex-wrap:wrap}.action-row-compact{margin-top:2px}.error-box,.log-panel,.code-panel{padding:12px;border-radius:14px;background:#00000038;border:1px solid rgba(255,255,255,.08)}.error-title,.log-panel summary,.code-panel summary{color:#ffd28a;font-size:.88rem;font-weight:600}.error-box pre,.log-panel pre{margin:10px 0 0;white-space:pre-wrap;word-break:break-word;font-size:.78rem;line-height:1.45;color:#d9e4fb;max-height:240px;overflow:auto}.log-panel summary,.code-panel summary{cursor:pointer}.code-panel{background:#0f172d94}.code-panel.warn{border-color:#ffd28a59}.code-intro{margin:10px 0 0;color:#c7d4f0;font-size:.84rem;line-height:1.5}.code-notes{display:flex;flex-direction:column;gap:8px;margin-top:10px}.code-note{padding:9px 10px;border-radius:10px;color:#ffdba4;background:#ffd28a14;border:1px solid rgba(255,210,138,.14);font-size:.8rem;line-height:1.45}.code-sections{display:grid;gap:10px;margin-top:12px}.code-card{padding:12px;border-radius:12px;background:#ffffff09;border:1px solid rgba(255,255,255,.08)}.code-card-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.code-card-title{color:#f5f7fb;font-size:.9rem;font-weight:700}.code-card-source{margin-top:4px;color:#87a1cb;font-size:.74rem}.code-card-lang{padding:5px 8px;border-radius:999px;background:#7de2ff1f;color:#7de2ff;font-size:.72rem;font-weight:700;letter-spacing:.04em}.code-card-description{margin:10px 0 0;color:#b7c8e7;font-size:.82rem;line-height:1.5}.code-snippet{margin:10px 0 0;padding:12px;border-radius:12px;background:#040812db;border:1px solid rgba(125,226,255,.12);color:#dfe8fb;font-size:.76rem;line-height:1.55;overflow:auto;max-height:260px}.code-snippet code{font-family:SFMono-Regular,Cascadia Code,Consolas,Liberation Mono,Menlo,monospace}.code-empty{padding:14px;border-radius:12px;background:#ffffff08;border:1px dashed rgba(255,255,255,.14);color:#a8bad9;font-size:.82rem;line-height:1.5}.app-shell.canvas-only-mode{gap:0;padding:0}.app-shell.canvas-only-mode .menu-bar,.app-shell.canvas-only-mode .settings-layer{display:none!important}.app-shell.canvas-only-mode .canvas-stage{border:0;border-radius:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:#02060d}.app-shell.canvas-only-mode .canvas-stage-toolbar{top:max(12px,env(safe-area-inset-top));right:12px}@media(max-width:960px){.menu-bar{align-items:flex-start}.menu-bar-hud,.menu-bar-actions{width:100%}.menu-bar-actions{justify-content:space-between}}@media(max-width:720px){.menu-bar-field{flex:1 1 100%;justify-content:space-between}.menu-bar-field select{min-width:0;width:100%}.menu-bar-button{width:100%;justify-content:center}.menu-bar-hud{margin-left:0}.menu-bar-metric{flex:1 1 0;min-width:0}.menu-bar-metric-fps{min-width:0}.menu-bar-fps-chart{width:84px}.settings-layer{padding:12px;align-items:stretch}.settings-panel{width:min(100%,460px);max-height:none;height:100%}.settings-panel-header,.code-card-header{flex-direction:column}}@media(max-width:560px){.app-shell{gap:10px;padding-left:10px;padding-right:10px}.menu-bar-hud{gap:6px}.menu-bar-metric{padding:7px 9px}.menu-bar-metric-label{font-size:.64rem}.menu-bar-metric-value{font-size:.86rem}.menu-bar-fps-chart{width:72px;height:28px}.field-help-tooltip{left:0;transform:translateY(6px)}.field-help:hover .field-help-tooltip,.field-help:focus-visible .field-help-tooltip{transform:translateY(0)}}
