
    :root{
      --bg:#000008;--bg-panel:rgba(4,4,22,0.94);--bg-glass:rgba(8,8,28,0.82);
      --cyan:#00e5ff;--cyan-dim:rgba(0,229,255,0.12);--cyan-glow:0 0 10px rgba(0,229,255,0.45),0 0 28px rgba(0,229,255,0.10);
      --purple:#8040ff;--purple-dim:rgba(128,64,255,0.14);
      --border:rgba(0,229,255,0.15);--border-hot:rgba(0,229,255,0.52);
      --text:#ddeeff;--text-dim:rgba(200,230,255,0.42);
      --error:#ff3d5a;--warning:#ffd060;
      --glass-bg:var(--bg-panel);--glass-border:var(--border);
      --glow:var(--cyan-glow);
      --red:rgba(255,0,0,0.15);--blue:rgba(0,0,255,0.15)
    }
    html,body{margin:0;padding:0;height:100%;width:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Inter',sans-serif;touch-action:manipulation;-webkit-user-select:none;user-select:none;overscroll-behavior:none}
    #cameraBackground{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;z-index:16;display:none;opacity:1!important;pointer-events:none}
    #shutter{position:fixed;inset:0;background:#000;z-index:17;display:none;pointer-events:none}
    #flasher{position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,var(--red),var(--blue));animation:siren 1s infinite alternate;z-index:18;display:none}
    @keyframes siren{0%{background:var(--red)}100%{background:var(--blue)}}
    #rendererCanvas2D{position:fixed;inset:0;z-index:20;pointer-events:none;display:none}
    #rendererInstruction{position:fixed;inset:0;z-index:20;pointer-events:none;display:none;align-items:center;justify-content:center;flex-direction:column;padding:1rem;box-sizing:border-box}
    #rendererWebGL{position:fixed;inset:0;z-index:21;pointer-events:none;display:none}
    #loadingOverlay{position:fixed;inset:0;background:rgba(0,0,0,.95);z-index:100;display:none;align-items:center;justify-content:center;flex-direction:column;gap:1rem}
    .spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}
    @keyframes spin{to{transform:rotate(360deg)}}
    @keyframes fade{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}
    .row{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:center;align-items:center;padding:.75rem 0}
    .btn{background:var(--cyan-dim);color:var(--cyan);border:1px solid var(--border);border-radius:7px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;font-size:clamp(11px,2.2vw,13px);cursor:pointer;min-width:44px;min-height:44px;padding:.65rem 1.1rem;transition:all .16s ease;box-shadow:none}
    .btn:hover{background:rgba(0,229,255,0.18);border-color:var(--border-hot);box-shadow:var(--cyan-glow);transform:translateY(-1px)}
    .btn:active{transform:translateY(0);box-shadow:none}
    .btn.secondary{background:transparent;color:var(--text-dim);border:1px solid rgba(255,255,255,0.08)}
    .btn.secondary:hover{color:var(--text);border-color:var(--border)}
    .btn.active{background:var(--purple-dim);color:#c0a0ff;border-color:var(--purple)}
    .btn.danger{background:rgba(255,61,90,0.10);color:var(--error);border:1px solid rgba(255,61,90,0.30)}
    .btn.danger:hover{background:rgba(255,61,90,0.18);border-color:rgba(255,61,90,0.55)}
    .btn:disabled{opacity:.3;cursor:not-allowed}
    #advanceBtn{position:relative;z-index:30}
    #status{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:clamp(10px,1.8vw,13px);min-height:1.4em;text-align:center;color:var(--text-dim);letter-spacing:.06em;opacity:1}
    #overlay{position:fixed;left:0;top:0;width:100vw;height:100dvh;z-index:15;background:rgba(0,0,8,.98);display:none;flex-direction:column;align-items:center;justify-content:center;padding:max(1rem,env(safe-area-inset-top)) 1rem max(1.25rem,env(safe-area-inset-bottom));gap:1rem;box-sizing:border-box}
    #playText{max-width:min(1200px,92vw);text-align:center;line-height:1.25;letter-spacing:.6px;text-shadow:0 0 12px rgba(0,229,255,0.35),0 0 24px rgba(0,229,255,0.12);font-size:clamp(20px,5vw,64px);word-break:break-word;animation:fade .3s ease;color:var(--text)}
    #closeBtn{position:fixed;top:max(.6rem,env(safe-area-inset-top));right:max(.6rem,env(safe-area-inset-right));background:rgba(255,61,90,0.15);color:var(--error);border:1px solid rgba(255,61,90,0.40);border-radius:50%;font-size:clamp(14px,3.5vw,18px);padding:.4rem .7rem;cursor:pointer;box-shadow:0 0 10px rgba(255,61,90,0.25);z-index:30;transition:all .16s}
    #closeBtn:hover{background:rgba(255,61,90,0.28);box-shadow:0 0 18px rgba(255,61,90,0.45)}
    #playControls{position:fixed;bottom:max(1.6rem,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:none;gap:.65rem;z-index:30;background:rgba(0,0,8,0.75);padding:.55rem .9rem;border-radius:50px;border:1px solid var(--border);backdrop-filter:blur(10px);box-shadow:0 0 20px rgba(0,229,255,0.12);transition:opacity .4s ease;align-items:center}
    #playControls.visible{display:flex}
    #playControls.faded{opacity:0;pointer-events:none}
    .pcb{background:var(--cyan-dim);color:var(--cyan);border:1px solid var(--border);border-radius:50%;width:46px;height:46px;font-size:17px;cursor:pointer;transition:all .16s;display:flex;align-items:center;justify-content:center;flex-shrink:0}
    .pcb:hover{background:rgba(0,229,255,0.22);border-color:var(--border-hot);box-shadow:var(--cyan-glow)}
    .pcb.pause-active{background:var(--purple-dim);color:#c0a0ff;border-color:var(--purple)}
    #playPageIndicator{font-family:'Orbitron',monospace;font-size:11px;color:var(--text-dim);letter-spacing:.08em;min-width:3rem;text-align:center}
    .modal-wrapper{position:fixed;left:0;top:0;width:100vw;height:100dvh;z-index:20;background:rgba(0,0,8,.94);backdrop-filter:blur(6px);display:none;flex-direction:column;align-items:center;justify-content:flex-start;padding:1rem;box-sizing:border-box;overflow-y:auto}
    .modal-content{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:1.5rem;max-width:min(1000px,95vw);width:100%;box-shadow:0 0 0 1px var(--border),var(--cyan-glow);margin:auto;max-height:80vh;overflow-y:auto}
    .modal-title{font-family:'Orbitron',monospace;font-weight:700;font-size:clamp(14px,2.5vw,19px);text-align:center;letter-spacing:.08em;margin-bottom:1.25rem;color:var(--cyan);text-shadow:0 0 8px rgba(0,229,255,0.45);border-bottom:1px solid var(--border);padding-bottom:.75rem}
    .banner{position:fixed;top:1rem;left:50%;transform:translateX(-50%);background:rgba(220,38,38,.9);color:#fff;padding:.75rem 1.5rem;border-radius:8px;z-index:101;display:none;font-size:.9rem;box-shadow:0 4px 12px rgba(0,0,0,.5);backdrop-filter:blur(10px)}
    .field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}
    .field-row{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}
    input[type="text"],input[type="number"],textarea,select{background:rgba(0,229,255,0.04);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:.7rem;font-size:1em;transition:all .2s}
    input[type="text"]:focus,input[type="number"]:focus,textarea:focus,select:focus{outline:none;border-color:var(--border-hot);background:rgba(0,229,255,0.07);box-shadow:0 0 0 2px rgba(0,229,255,0.10)}
    input.invalid,textarea.invalid{border-color:var(--error)}
    .validation-error{color:var(--error);font-size:.85em;margin-top:.25rem;display:none;padding:.5rem;background:rgba(255,77,77,0.1);border-radius:6px}
    .validation-error.show{display:block}
    #pageEditorContainer{display:flex;flex-direction:column;height:100%;gap:1rem}
    .editor-nav{display:flex;gap:.5rem;align-items:center;justify-content:space-between;padding:.75rem;background:rgba(0,229,255,0.04);border:1px solid var(--border);border-radius:10px}
    .editor-nav-left{display:flex;gap:.5rem;align-items:center}
    .editor-nav-right{display:flex;gap:.5rem}
    .page-indicator{font-size:1.1em;font-weight:700;padding:0 .75rem}
    .mode-toggle{display:flex;gap:.5rem;padding:.5rem;background:rgba(0,229,255,0.04);border:1px solid var(--border);border-radius:10px}
    .mode-toggle .btn{padding:.6rem 1rem;min-width:unset}
    #editorPreview{flex:1;min-height:200px;background:rgba(0,0,16,0.6);border:1px solid var(--border);border-radius:10px;padding:2rem;display:flex;align-items:center;justify-content:center;overflow:auto;font-size:clamp(16px,3vw,48px)}
    #contentEditor{flex:1;min-height:150px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.95em;resize:vertical;background:rgba(0,0,16,0.5);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:.75rem}
    #effectPanel{display:none;max-height:60vh;overflow-y:auto;background:rgba(0,0,16,0.4);border:1px solid var(--border);border-radius:10px;padding:1rem}
    .effect-dropdown{margin-bottom:1rem}
    .effect-dropdown-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:rgba(0,229,255,0.05);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .2s;font-weight:600;color:var(--text)}
    .effect-dropdown-header:hover{background:rgba(0,229,255,0.10);border-color:var(--border-hot)}
    .effect-dropdown-header.active{background:var(--cyan-dim);border-left:2px solid var(--cyan);color:var(--cyan)}
    .effect-dropdown-content{display:none;padding:1rem;margin-top:.5rem;background:rgba(0,0,16,0.5);border:1px solid var(--border);border-radius:8px}
    .effect-dropdown-content.show{display:block}
    .slider-container{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}
    input[type="range"]{width:100%;height:4px;border-radius:3px;background:rgba(0,229,255,0.18);outline:none;transition:all .2s}
    input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--cyan);cursor:pointer;box-shadow:0 0 8px rgba(0,229,255,0.5)}
    input[type="range"]::-moz-range-thumb{width:18px;height:18px;border:none;border-radius:50%;background:var(--cyan);cursor:pointer;box-shadow:0 0 8px rgba(0,229,255,0.5)}
    .toggle-switch-container{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:rgba(0,229,255,0.04);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all .2s;margin-bottom:1rem}
    .toggle-switch-container:hover{background:rgba(0,229,255,0.08);border-color:var(--border-hot)}
    .toggle-switch-container.active{background:var(--cyan-dim);border-color:var(--border-hot)}
    .toggle-switch{width:50px;height:28px;background:rgba(255,255,255,0.12);border-radius:14px;position:relative;transition:all .2s}
    .toggle-switch-container.active .toggle-switch{background:var(--cyan);box-shadow:0 0 8px rgba(0,229,255,0.5)}
    .toggle-switch::after{content:'';position:absolute;left:3px;top:3px;width:22px;height:22px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 2px 4px rgba(0,0,0,0.3)}
    .toggle-switch-container.active .toggle-switch::after{transform:translateX(22px)}
    .color-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(45px,1fr));gap:.5rem;margin-top:.5rem}
    .color-swatch{width:100%;aspect-ratio:1;border-radius:8px;cursor:pointer;border:2px solid transparent;transition:all .15s;box-shadow:0 2px 6px rgba(0,0,0,0.3)}
    .color-swatch:hover{transform:scale(1.1)}
    .color-swatch.selected{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(0,229,255,0.4)}
    .xy-control{width:200px;height:200px;margin:1rem auto;background:rgba(0,0,16,0.7);border:1px solid var(--border);border-radius:10px;position:relative;cursor:crosshair}
    .xy-marker{width:18px;height:18px;background:var(--cyan);border:2px solid #fff;border-radius:50%;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 8px rgba(0,229,255,0.6);pointer-events:none}
    .qr-container{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem;background:var(--cyan-dim);border:1px solid var(--border);border-radius:12px}
    #qrCanvas{border:3px solid var(--cyan);border-radius:8px;background:#fff;box-shadow:0 0 12px rgba(0,229,255,0.3)}
    .viewer-status{padding:1rem;background:var(--cyan-dim);border:1px solid var(--border);border-radius:8px;text-align:center}
    .connection-indicator{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:8px;animation:pulse 2s infinite}
    .connection-indicator.connected{background:#22c55e;box-shadow:0 0 6px #22c55e}
    .connection-indicator.disconnected{background:#ef4444;box-shadow:0 0 6px #ef4444}
    @keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}
    .storage-status{padding:1rem;background:var(--cyan-dim);border:1px solid var(--border);border-radius:8px;margin-bottom:1rem}
    .storage-info{font-size:.9em;color:var(--text-dim);margin-top:.5rem}

    #cameraBackground2{position:fixed;inset:0;width:100%;height:100%;object-fit:cover;z-index:16;display:none;opacity:1!important;pointer-events:none;transform:scaleX(-1)}
    #prerenderedVideo{position:fixed;inset:0;width:100%;height:100%;object-fit:contain;z-index:22;display:none;pointer-events:none;background:transparent}
    #projectViewContainer{display:none;flex-direction:column;gap:1rem;min-height:55vh}
    #projectEditor{width:100%;min-height:42vh;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.95rem;line-height:1.45;resize:vertical;background:rgba(0,0,16,0.5);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:.75rem}

    #app{position:relative;z-index:10;display:flex;flex-direction:column;height:100dvh;width:100vw;align-items:center;justify-content:center;padding:max(1rem,env(safe-area-inset-top)) 1rem max(1rem,env(safe-area-inset-bottom));gap:.6rem;box-sizing:border-box}
    #app::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,229,255,0.014) 2px,rgba(0,229,255,0.014) 4px);pointer-events:none;z-index:0}
    #homeText{font-family:'Orbitron',monospace;font-weight:900;font-size:clamp(1.6rem,5.5vw,3.6rem);letter-spacing:.12em;background:linear-gradient(120deg,var(--cyan) 0%,var(--purple) 50%,var(--cyan) 100%);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:gradientShift 8s linear infinite;filter:drop-shadow(0 0 14px rgba(0,229,255,0.38));text-align:center;flex-grow:1;display:flex;align-items:center;justify-content:center;padding:0 1rem}
    @keyframes gradientShift{to{background-position:200% center}}
    .display{max-width:min(1200px,92vw);text-align:center;padding:0 1rem;line-height:1.25;letter-spacing:.6px;text-shadow:0 0 8px rgba(0,229,255,0.3),0 0 18px rgba(0,229,255,0.10);font-size:clamp(18px,4.5vw,56px);animation:fade .3s ease;word-break:break-word;flex-grow:1;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;color:var(--text)}
    .slider-label{display:flex;justify-content:space-between;font-size:.9em;color:var(--text-dim)}
    #debugPanel{position:fixed;left:.75rem;bottom:.75rem;z-index:50;background:rgba(0,0,8,.88);border:1px solid var(--border);border-radius:10px;padding:.6rem .75rem;font:12px ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--text-dim);display:none;max-width:min(440px,92vw);white-space:pre-wrap;box-shadow:var(--cyan-glow)}
    #projectValidationLive{font-size:.9rem;line-height:1.4;padding:.75rem;border-radius:8px;background:rgba(0,0,16,.5);border:1px solid var(--border);color:var(--text-dim);max-height:160px;overflow:auto}
    .tab-row{display:flex;gap:.5rem;justify-content:center;align-items:center;margin-bottom:1rem;padding:.5rem;background:rgba(0,229,255,0.04);border:1px solid var(--border);border-radius:10px}
    .tiny-note{font-size:.82rem;color:var(--text-dim);line-height:1.4}
    @media (max-width:768px){.modal-content{padding:1rem}.btn{padding:.6rem .9rem;font-size:12px}}
  