:root{--bg-color:#07080b;--panel-bg:#0c0e16d9;--border-color:#ffffff12;--primary-color:#6d28d9;--primary-hover:#7c3aed;--text-color:#f1f5f9;--text-muted:#64748b;--danger-color:#ef4444;--success-color:#4ade80;--accent-cyan:#00f0ff;--accent-pink:#f0a;--accent-amber:#fa0;--success:#4ade80;--warning:#fbbf24;--font-pixel:"Press Start 2P", monospace;--font-pixel-alt:"VT323", monospace;--glow-cyan:0 0 12px #00f0ff66;--glow-pink:0 0 12px #f0a6;--glow-purple:0 0 12px #6d28d980;--glow-amber:0 0 12px #fa06;--surface-1:#ffffff0d;--surface-2:#ffffff1a;--surface-3:#ffffff08;--surface-solid:#1a1a2e;--accent-a08:#00f0ff14;--accent-a10:#00f0ff1a;--accent-a12:#00f0ff1f;--accent-a15:#00f0ff26;--accent-a20:#00f0ff33;--accent-a30:#00f0ff4d;--bg-grid:linear-gradient(#00f0ff08 1px, transparent 1px), linear-gradient(90deg, #00f0ff08 1px, transparent 1px);--bg-grid-size:32px 32px;--bg-fx:radial-gradient(ellipse at 20% 50%, #6d28d91f, transparent 50%), radial-gradient(ellipse at 80% 20%, #00f0ff14, transparent 50%), radial-gradient(ellipse at 50% 80%, #ff00aa0f, transparent 50%);--bg-fx-animation:bg-drift 20s ease-in-out infinite alternate;--bg-vignette:radial-gradient(ellipse at center, transparent 50%, #0009 100%)}*{box-sizing:border-box;margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}h1,h2,h3,.brand h2,.page-header h1,.auth-header h2,.editor-panel-title,.modal-header h3{font-family:var(--font-pixel);letter-spacing:1px}body{background-color:var(--bg-color);color:var(--text-color);background-image:var(--bg-grid);background-size:var(--bg-grid-size);justify-content:center;align-items:center;min-height:100dvh;display:flex;position:relative;overflow:hidden}body:before{content:"";background:var(--bg-fx);animation:var(--bg-fx-animation);pointer-events:none;z-index:0;position:fixed;inset:0}body:after{content:"";background:var(--bg-vignette);pointer-events:none;z-index:0;position:fixed;inset:0}#root{z-index:1;justify-content:center;align-items:center;width:100%;height:100dvh;display:flex;position:relative}.auth-container{-webkit-backdrop-filter:blur(10px);z-index:100;background-color:#0d0f1499;justify-content:center;align-items:center;width:100vw;height:100dvh;display:flex;position:absolute;top:0;left:0}.auth-panel{background:var(--panel-bg);border:1px solid var(--accent-cyan);width:100%;max-width:400px;box-shadow:0 25px 50px -12px #00000080, var(--glow-cyan);border-radius:16px;padding:40px;animation:.4s ease-out slideUp;position:relative}.auth-panel:before{content:"";border:1px solid var(--accent-a20);pointer-events:none;border-radius:18px;position:absolute;inset:-2px}.auth-header{text-align:center;margin-bottom:30px}.auth-header h2{margin-bottom:8px;font-size:16px;font-weight:600}.auth-header p{color:var(--text-muted);font-size:14px}.form-group{margin-bottom:20px}.form-group label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;font-size:13px;display:block}.form-group input{border:1px solid var(--border-color);width:100%;color:var(--text-color);background:#0003;border-radius:8px;outline:none;padding:12px 16px;font-size:15px;transition:all .2s}.form-group input:focus{border-color:var(--accent-cyan);box-shadow:0 0 0 2px var(--accent-a20)}.btn-primary{background-color:var(--primary-color);color:#fff;width:100%;font-size:14px;font-family:var(--font-pixel-alt);cursor:pointer;border:none;border-radius:8px;padding:14px;font-weight:600;transition:background-color .2s,transform .1s,box-shadow .2s}.btn-primary:hover{background-color:var(--primary-hover);box-shadow:var(--glow-pink)}.btn-primary:active{transform:scale(.98)}.auth-switch{text-align:center;color:var(--text-muted);margin-top:20px;font-size:14px}.auth-switch button{color:var(--primary-color);cursor:pointer;background:0 0;border:none;margin-left:5px;font-weight:600}.auth-switch button:hover{text-decoration:underline}.error-msg{color:var(--danger-color);text-align:center;background:#ef44441a;border-radius:6px;margin-bottom:15px;padding:10px;font-size:13px}.editor-page{justify-content:center;align-items:flex-start;gap:24px;width:100%;height:100%;padding:24px;animation:.3s ease-out fadeIn;display:flex}.editor-frame{background:var(--surface-solid);box-shadow:inset 0 0 20px #00000080, 0 0 20px var(--accent-a10);border:3px solid #2a2a3e;border-radius:16px;padding:20px;position:relative}.editor-frame:before{content:"";border:2px solid var(--accent-a15);pointer-events:none;border-radius:18px;position:absolute;inset:-1px}.editor-frame:after{content:"PIXELVISION";font-family:var(--font-pixel-alt);color:var(--accent-cyan);background:var(--surface-solid);letter-spacing:2px;text-shadow:var(--glow-cyan);padding:0 12px;font-size:12px;position:absolute;bottom:-10px;left:50%;transform:translate(-50%)}.editor-canvas-area{flex-direction:column;flex-shrink:0;align-items:center;gap:12px;display:flex}.editor-canvas-frame{background:var(--panel-bg);border:1px solid var(--border-color);border-radius:12px;flex-direction:column;align-items:center;gap:12px;padding:16px;display:flex;box-shadow:0 10px 30px -10px #00000080}.canvas-viewport{background:#000;border-radius:4px;position:relative;overflow:hidden}.editor-canvas-main,.editor-canvas-grid{width:100%;height:100%;position:absolute;top:0;left:0}.editor-canvas-main{image-rendering:pixelated;cursor:crosshair;touch-action:none}.editor-canvas-grid{pointer-events:none}.editor-canvas-info{color:var(--text-muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:16px;font-size:12px;display:flex}.editor-canvas-info-hint{opacity:.4;margin-left:auto;font-size:11px}.editor-panel{flex-direction:column;flex-shrink:0;gap:12px;width:220px;display:flex}.editor-panel-section{background:var(--panel-bg);border:1px solid var(--border-color);border-radius:10px;flex-direction:column;gap:10px;padding:14px;display:flex}.editor-panel-title{text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);text-align:left;cursor:default;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;padding:0;font-size:11px;font-weight:600;display:flex}.editor-panel-caret{flex-shrink:0;transition:transform .18s;display:none}.editor-panel-body{flex-direction:column;gap:10px;display:flex}.editor-size-inputs{align-items:center;gap:6px;display:flex}.editor-size-inputs label{color:var(--text-muted);align-items:center;gap:4px;font-size:12px;display:flex}.editor-size-inputs input{border:1px solid var(--border-color);width:52px;color:var(--text-color);text-align:center;background:#0000004d;border-radius:6px;outline:none;padding:4px 8px;font-size:13px}.editor-size-inputs input:focus{border-color:var(--primary-color)}.editor-size-sep{color:var(--text-muted);font-size:13px}.editor-tools{gap:6px;display:flex}.editor-tools-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.editor-panel-label{color:var(--text-muted);flex-shrink:0;font-size:11px}.editor-brush-row{align-items:center;gap:8px;display:flex}.editor-brush-btns{gap:4px;display:flex}.editor-brush-btn{border:1px solid var(--border-color);width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;font-size:12px;font-weight:600;transition:all .15s;display:flex}.editor-brush-btn:hover{background:var(--surface-1);color:var(--text-color)}.editor-brush-btn.active{background:var(--accent-a15);border-color:var(--accent-cyan);color:var(--accent-cyan)}.editor-shape-mode{gap:4px;display:flex}.editor-mode-btn{border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;flex:1;padding:5px 8px;font-size:11px;font-weight:500;transition:all .15s}.editor-mode-btn:hover{background:var(--surface-1);color:var(--text-color)}.editor-mode-btn.active{background:var(--accent-a12);border-color:var(--accent-cyan);color:var(--accent-cyan)}.editor-color-swatches{align-items:flex-end;gap:0;height:42px;margin-bottom:4px;display:flex;position:relative}.editor-swatch-bg{border:1px solid var(--border-color);cursor:pointer;border-radius:6px;width:28px;height:28px;position:absolute;bottom:0;left:14px}.editor-swatch-fg{cursor:pointer;border:2px solid #ffffff4d;border-radius:6px;width:28px;height:28px;position:absolute;bottom:6px;left:0;box-shadow:0 2px 6px #0006}.editor-swatch-fg.active{border-color:var(--accent-cyan)}.editor-swap-btn{border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:4px;padding:2px 5px;font-size:12px;line-height:1;transition:all .15s;position:absolute;bottom:0;left:46px}.editor-swap-btn:hover{color:var(--text-color);background:#ffffff0d}.editor-tool-btn{border:1px solid var(--border-color);width:38px;height:38px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;transition:all .15s;display:flex}.editor-tool-btn:hover{background:var(--surface-1);color:var(--text-color)}.editor-tool-btn.active{background:var(--accent-a15);border-color:var(--accent-cyan);color:var(--accent-cyan);box-shadow:var(--glow-cyan)}.editor-palette{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.editor-swatch{aspect-ratio:1;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border:2px solid #0000;border-radius:6px;transition:transform .1s,border-color .1s}.editor-swatch:hover{z-index:1;transform:scale(1.15)}.editor-swatch.active{border-color:var(--accent-cyan);box-shadow:var(--glow-cyan);transform:scale(1.1)}.editor-swatch-wrapper{position:relative}.editor-swatch-remove{background:var(--danger-color);color:#fff;cursor:pointer;z-index:2;border:none;border-radius:50%;justify-content:center;align-items:center;width:13px;height:13px;padding:0;font-size:9px;line-height:1;display:none;position:absolute;top:-4px;right:-4px}.editor-swatch-wrapper:hover .editor-swatch-remove{display:flex}.editor-add-preset-btn{border:1px solid var(--border-color);width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;font-weight:500;line-height:1;transition:all .15s;display:flex}.editor-add-preset-btn:hover{background:var(--surface-1);color:var(--text-color)}.editor-color-picker-row{align-items:center;gap:8px;display:flex}.editor-color-picker{cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;width:28px;height:28px;padding:0}.editor-color-preview{border:1px solid var(--border-color);border-radius:6px;flex-shrink:0;width:28px;height:28px}.editor-color-hex{font-variant-numeric:tabular-nums;color:var(--text-muted);font-family:monospace;font-size:12px}.editor-actions{flex-direction:column;gap:6px;display:flex}.editor-actions-row{gap:6px;display:flex}.editor-actions-row .editor-action-btn{flex:1}.editor-action-btn{border:1px solid var(--border-color);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;width:100%;padding:8px 10px;font-size:13px;font-weight:500;transition:all .15s;display:flex}.editor-action-btn:disabled{opacity:.3;cursor:not-allowed}.editor-action-btn:disabled:hover{color:var(--text-muted);background:0 0}.editor-action-btn.primary{background:var(--primary-color);color:#fff;border:none}.editor-action-btn.primary:hover{background:var(--primary-hover)}.editor-action-btn.secondary{color:var(--text-muted);background:0 0}.editor-action-btn.secondary:hover{background:var(--surface-1);color:var(--text-color)}.editor-name-input{border:1px solid var(--border-color);width:100%;color:var(--text-color);background:#0000004d;border-radius:8px;outline:none;padding:8px 12px;font-size:13px}.editor-name-input:focus{border-color:var(--primary-color)}.editor-tag-list{flex-direction:column;gap:4px;max-height:132px;display:flex;overflow-y:auto}.editor-tag-item{color:var(--text-muted);cursor:pointer;border-radius:4px;align-items:center;gap:6px;padding:4px 6px;font-size:12px;transition:background .15s;display:flex}.editor-tag-item:hover{background:var(--surface-1);color:var(--text-color)}.editor-tag-item input[type=checkbox]{accent-color:var(--primary-color);cursor:pointer;flex-shrink:0;width:13px;height:13px}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.layout-container{width:100vw;height:100dvh;display:flex;overflow:hidden}.sidebar{background:var(--panel-bg);border-right:1px solid var(--border-color);-webkit-backdrop-filter:blur(10px);z-index:10;flex-direction:column;flex-shrink:0;width:260px;transition:width .22s;display:flex}.sidebar.collapsed{width:60px}.sidebar.collapsed .brand{justify-content:center}.sidebar.collapsed .sidebar-nav{padding:16px 6px}.sidebar.collapsed .nav-link{border-left-width:0;border-radius:8px;justify-content:center;padding:12px}.sidebar.collapsed .nav-link.active{border-left:0;border-radius:8px}.sidebar.collapsed .sidebar-footer{padding:12px 6px}.sidebar.collapsed .btn-logout-sidebar{justify-content:center;padding:12px}.sidebar-header{border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding:16px;display:flex}.sidebar-toggle{border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:all .15s;display:flex}.sidebar-toggle:hover{background:var(--surface-1);color:var(--text-color)}.brand{align-items:center;gap:12px;display:flex}.brand-logo{border:2px solid var(--accent-cyan);width:36px;height:36px;font-family:var(--font-pixel);color:var(--accent-cyan);box-shadow:var(--glow-cyan);background:0 0;border-radius:8px;justify-content:center;align-items:center;font-size:14px;animation:3s infinite neon-flicker;display:flex}.brand h2,.brand-name{letter-spacing:1px;font-size:16px;font-weight:600}.sidebar-nav{flex-grow:1;padding:24px 12px;overflow-y:auto}.nav-list{flex-direction:column;gap:8px;list-style:none;display:flex}.nav-link{color:var(--text-muted);border-radius:8px;align-items:center;gap:12px;padding:12px 16px;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.nav-link:hover{background:var(--surface-1);color:var(--text-color)}.nav-link.active{color:var(--accent-cyan);border-left:3px solid var(--accent-cyan);box-shadow:var(--glow-cyan);background:#00f0ff14;border-radius:0 8px 8px 0}.sidebar-footer{border-top:1px solid var(--border-color);padding:24px}.theme-switcher{background:var(--surface-1);width:100%;color:var(--text-muted);border:1px solid var(--border-color);border-radius:8px;align-items:center;gap:10px;margin-bottom:12px;padding:10px 14px;display:flex}.theme-switcher select{color:var(--text-color);cursor:pointer;background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:14px;font-weight:500}.theme-switcher select option{background:var(--surface-solid);color:var(--text-color)}.btn-logout-sidebar{width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:12px;padding:12px 16px;font-size:15px;font-weight:500;transition:all .2s;display:flex}.btn-logout-sidebar:hover{color:var(--accent-pink);box-shadow:var(--glow-pink);background:#ff00aa1a}.main-content{flex-grow:1;justify-content:center;align-items:center;height:100dvh;display:flex;position:relative;overflow-y:auto}.page-container{flex-direction:column;width:100%;max-width:1200px;height:100%;padding:40px;animation:.5s ease-out fadeIn;display:flex}.page-header{flex-direction:column;gap:8px;margin-bottom:32px;display:flex}.page-header h1{letter-spacing:1px;font-size:18px;font-weight:600}.page-header p{color:var(--text-muted);font-size:16px}.page-content{background:var(--panel-bg);border:1px solid var(--border-color);border-radius:16px;flex-grow:1;justify-content:center;align-items:center;padding:40px;display:flex}.placeholder-state{text-align:center;flex-direction:column;align-items:center;gap:16px;max-width:400px;display:flex}.placeholder-icon{opacity:.8;margin-bottom:8px;font-size:64px}.placeholder-state h3{font-size:24px;font-weight:500}.placeholder-state p{color:var(--text-muted);line-height:1.5}.image-grid-container{flex-grow:1;width:100%;padding:10px;overflow-y:auto}.image-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-content:start;gap:24px;width:100%;display:grid}.image-card{background:var(--panel-bg);border:1px solid var(--border-color);border-radius:12px;flex-direction:column;transition:all .2s ease-out;display:flex;position:relative;overflow:hidden}.image-card:before,.image-card:after{content:"";pointer-events:none;opacity:0;z-index:2;border:2px solid;width:8px;height:8px;transition:opacity .3s;position:absolute}.image-card:before{border-color:var(--accent-cyan) transparent transparent var(--accent-cyan);border-width:2px 0 0 2px;top:-2px;left:-2px}.image-card:after{border-color:transparent var(--accent-pink) var(--accent-pink) transparent;border-width:0 2px 2px 0;bottom:-2px;right:-2px}.image-card:hover{box-shadow:var(--glow-cyan);border-color:var(--accent-a30);transform:translateY(-4px)scale(1.02)}.image-card:hover:before,.image-card:hover:after{opacity:1}.image-card-preview{aspect-ratio:1;border-bottom:1px solid var(--border-color);background:#0009;justify-content:center;align-items:center;width:100%;padding:20px;display:flex}.secure-image{object-fit:contain;width:100%;height:100%;image-rendering:pixelated}.secure-image-placeholder{background:var(--surface-1);border-radius:8px;width:100%;height:100%}.secure-image-placeholder.error{justify-content:center;align-items:center;font-size:24px;display:flex}.secure-image-placeholder.loading{animation:1.5s ease-in-out infinite pulse}@keyframes pulse{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.image-card-info{padding:16px}.image-card-info h4{white-space:nowrap;text-overflow:ellipsis;margin-bottom:8px;font-size:16px;font-weight:500;overflow:hidden}.image-card-info .meta{color:var(--text-muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.btn-delete{border:1px solid var(--border-color);width:32px;height:32px;color:var(--text-muted);cursor:pointer;opacity:0;background:#0d0f14cc;border-radius:8px;justify-content:center;align-items:center;transition:all .2s;display:flex;position:absolute;top:10px;right:10px}.image-card:hover .btn-delete{opacity:1}.btn-delete:hover{color:var(--danger-color);background:#ef44441a;border-color:#ef44444d}.spinner{border:3px solid var(--accent-a15);border-top-color:var(--accent-cyan);width:24px;height:24px;box-shadow:0 0 8px var(--accent-a20);border-radius:2px;animation:1s steps(4,end) infinite pixel-spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes bg-drift{0%{background-position:0%}to{background-position:100%}}@keyframes glow-pulse{0%,to{box-shadow:0 0 6px var(--accent-a20)}50%{box-shadow:0 0 18px #00f0ff80}}@keyframes glow-pulse-pink{0%,to{box-shadow:0 0 6px #f0a3}50%{box-shadow:0 0 18px #ff00aa80}}@keyframes neon-flicker{0%,19%,21%,23%,25%,54%,56%,to{text-shadow:0 0 4px var(--accent-cyan), 0 0 8px var(--accent-cyan);opacity:1}20%,24%,55%{text-shadow:none;opacity:.8}}@keyframes scanline{0%{transform:translateY(0)}to{transform:translateY(4px)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes pixel-spin{0%{transform:rotate(0)}25%{transform:rotate(90deg)}50%{transform:rotate(180deg)}75%{transform:rotate(270deg)}to{transform:rotate(360deg)}}.loading-state{flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.tags-list{flex-direction:column;gap:12px;width:100%;max-width:800px;display:flex}.tag-item{background:var(--panel-bg);border:1px solid var(--border-color);border-radius:12px;justify-content:space-between;align-items:center;padding:16px;transition:all .2s;display:flex}.tag-item:hover{border-color:var(--accent-a30);box-shadow:var(--glow-cyan)}.tag-info h4{align-items:center;gap:8px;margin-bottom:4px;font-size:16px;display:flex}.tag-info p{color:var(--text-muted);font-size:13px}.tag-actions{gap:8px;display:flex}.btn-icon{background:var(--surface-1);border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;transition:all .2s;display:flex}.btn-icon:hover{background:var(--surface-2);color:#fff}.btn-icon.danger:hover{color:var(--danger-color);background:#ef44441a;border-color:#ef44444d}.tag-form{background:var(--panel-bg);border:1px solid var(--border-color);border-radius:12px;align-items:flex-end;gap:16px;width:100%;max-width:800px;margin-bottom:24px;padding:20px;display:flex}.tag-form .form-group{flex:1;margin-bottom:0}.tag-form .form-group input{width:100%}.tag-form .btn-primary{align-self:flex-end;align-items:center;gap:8px;width:auto;height:44px;padding:0 24px;display:flex}.page-content.tags-content{flex-direction:column;justify-content:flex-start;align-items:center;overflow-y:auto}.card-actions-overlay{opacity:0;gap:4px;transition:opacity .2s;display:flex;position:absolute;top:8px;right:8px}.image-card:hover .card-actions-overlay{opacity:1}.btn-card-action{border:1px solid var(--border-color);width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:#0d0f14d9;border-radius:6px;justify-content:center;align-items:center;transition:all .2s;display:flex}.btn-card-action:hover{background:var(--surface-2);color:#fff}.btn-card-action.danger:hover{color:var(--danger-color);background:#ef444426;border-color:#ef444466}.tag-badge{text-transform:uppercase;letter-spacing:.4px;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:11px;font-weight:600}.tag-badge.active{background:var(--accent-a12);color:var(--accent-cyan);font-family:var(--font-pixel);box-shadow:var(--glow-cyan);font-size:9px}.tag-badge.paused{color:var(--accent-amber);font-family:var(--font-pixel-alt);background:#ffaa001f;font-size:11px}.tag-interval{color:var(--text-muted);margin-left:8px;font-size:12px;font-weight:400}.shared-label{color:var(--text-muted);background:var(--surface-1);border-radius:4px;padding:2px 6px;font-size:11px}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-panel{background:var(--panel-bg);border:1px solid var(--border-color);width:100%;max-width:480px;max-height:80vh;box-shadow:0 25px 50px -12px #0009, var(--glow-cyan);border:1px solid var(--accent-cyan);border-radius:16px;padding:28px;animation:.25s ease-out slideUp;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-header h3{font-size:18px;font-weight:600}.share-form{align-items:center;gap:8px;margin-bottom:20px;display:flex}.share-select,.share-input{border:1px solid var(--border-color);color:var(--text-color);background:#0000004d;border-radius:8px;outline:none;flex:1;padding:8px 12px;font-size:14px}.share-select:focus,.share-input:focus{border-color:var(--primary-color)}.acl-list{flex-direction:column;gap:8px;list-style:none;display:flex}.acl-entry{background:var(--surface-3);border:1px solid var(--border-color);border-radius:8px;align-items:center;gap:10px;padding:10px 12px;display:flex}.acl-user{flex:1;font-size:14px}.acl-level{color:var(--text-muted);background:#ffffff12;border-radius:4px;padding:2px 8px;font-size:12px}.acl-empty{color:var(--text-muted);text-align:center;padding:16px;font-size:14px}.tag-assignment-list{flex-direction:column;gap:8px;list-style:none;display:flex}.tag-assignment-item label{background:var(--surface-3);border:1px solid var(--border-color);cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;transition:background .15s;display:flex}.tag-assignment-item label:hover{background:#ffffff0f}.tag-assignment-item input[type=checkbox]{accent-color:var(--primary-color);cursor:pointer;width:16px;height:16px}.tag-desc{color:var(--text-muted);font-size:12px}.toast-container{z-index:999;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{border-radius:8px;align-items:center;gap:12px;min-width:280px;max-width:420px;padding:12px 16px;font-size:14px;animation:.25s ease-out slideUp;display:flex;box-shadow:0 8px 24px #0006}.toast-error{color:var(--accent-pink);font-family:var(--font-pixel-alt);background:#ff00aa1a;border:1px solid #ff00aa4d;font-size:14px}.toast-success{background:var(--accent-a10);border:1px solid var(--accent-a30);color:var(--accent-cyan);font-family:var(--font-pixel-alt);font-size:14px}.toast span{flex:1}.toast .btn-icon{background:0 0;border:none;width:24px;height:24px}.confirm-dialog{text-align:center;max-width:360px}.confirm-dialog p{margin-bottom:24px;font-size:16px;line-height:1.5}.confirm-actions{justify-content:center;gap:12px;display:flex}.btn-secondary{background:var(--surface-1);border:1px solid var(--border-color);color:var(--text-color);cursor:pointer;border-radius:8px;padding:10px 24px;font-size:14px;font-weight:500;transition:all .2s}.btn-secondary:hover{background:var(--surface-2)}.btn-danger{color:#fca5a5;cursor:pointer;background:#ef444426;border:1px solid #ef44444d;border-radius:8px;padding:10px 24px;font-size:14px;font-weight:600;transition:all .2s}.btn-danger:hover{background:#ef444440}.live-content{flex-direction:column;justify-content:center;align-items:center;gap:24px}.live-view{flex-direction:column;align-items:center;gap:16px;display:flex}.live-canvas-wrapper{background:var(--panel-bg);border:2px solid var(--accent-cyan);box-shadow:var(--glow-cyan);border-radius:12px;flex-direction:column;align-items:center;gap:12px;padding:16px;display:flex;position:relative;overflow:hidden}.live-canvas-wrapper:after{content:"";pointer-events:none;z-index:1;background:repeating-linear-gradient(0deg,#0000,#0000 2px,#00000026 2px 4px);animation:.1s linear infinite scanline;position:absolute;inset:0}.live-canvas{width:320px;height:320px;image-rendering:pixelated;cursor:default}.live-status{text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:6px;font-size:12px;font-weight:500;display:flex}.live-status.connected{color:var(--accent-cyan);text-shadow:var(--glow-cyan)}.live-status.disconnected{color:var(--text-muted)}.status-dot{background:currentColor;border-radius:0;width:8px;height:8px;animation:1.5s infinite glow-pulse}.live-timestamp{color:var(--text-muted);font-size:12px}.btn-live{background:var(--accent-a10);border:1px solid var(--accent-a30);color:var(--accent-cyan)}.btn-live:hover{background:var(--accent-a20);box-shadow:var(--glow-cyan)}.devices-list{flex-direction:column;gap:10px;width:100%;display:flex}.device-card{background:var(--panel-bg);border:1px solid var(--border-color);border-radius:10px;align-items:center;gap:14px;padding:14px 16px;transition:border-color .2s;display:flex}.device-card:hover{border-color:#00f0ff40}.device-card-left{flex-shrink:0}.device-status-icon{border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.device-status-icon.online{color:var(--success);background:#4ade801f}.device-status-icon.offline{color:var(--text-muted);background:#64748b1a}.device-card-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.device-name-row{align-items:center;gap:8px;display:flex}.device-name{font-size:15px;font-weight:600}.device-status-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:999px;padding:2px 8px;font-size:10px;font-weight:600}.device-status-badge.online{color:var(--success);background:#4ade801f}.device-status-badge.offline{color:var(--text-muted);background:#64748b1a}.device-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.device-mac{color:var(--text-muted);font-family:monospace;font-size:12px}.device-tag{background:var(--surface-1);color:var(--text-muted);border-radius:4px;padding:1px 6px;font-size:10px}.device-topic{color:var(--accent-cyan);opacity:.7;font-family:monospace;font-size:11px}.device-stats{gap:12px;margin-top:2px;display:flex}.device-stat{color:var(--text-muted);font-variant-numeric:tabular-nums;align-items:center;gap:4px;font-size:11px;display:flex}.device-card-actions{flex-shrink:0;gap:4px;display:flex}.device-poll-hint{color:var(--text-muted);opacity:.5;align-items:center;gap:6px;margin-top:16px;font-size:11px;display:flex}.device-owner-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-flex}.device-owner-badge.claimed{color:var(--primary-hover);background:#6d28d91f}.device-owner-badge.unclaimed{color:var(--text-muted);background:#94a3b81a}.device-claim-bar{background:var(--panel-bg);border:1px solid var(--border-color);width:100%;max-width:600px;color:var(--text-muted);border-radius:10px;align-items:center;gap:10px;margin-bottom:16px;padding:14px 18px;font-size:13px;display:flex}.device-claim-bar .device-claim-input{border:1px solid var(--border-color);width:100px;color:var(--text-color);text-transform:lowercase;text-align:center;background:#0000004d;border-radius:6px;outline:none;flex-shrink:0;padding:7px 10px;font-family:monospace;font-size:14px}.device-claim-bar .device-claim-input:focus{border-color:var(--primary-color)}.device-claim-btn{border:1px solid var(--primary-color);color:var(--primary-hover);cursor:pointer;background:#6d28d926;border-radius:6px;flex-shrink:0;padding:7px 16px;font-size:13px;font-weight:600;transition:background .15s}.device-claim-btn:hover{background:#6d28d940}.device-claim-btn:disabled{opacity:.5;cursor:default}.device-unclaim-btn{color:var(--danger-color);cursor:pointer;white-space:nowrap;background:#ef44441a;border:1px solid #ef44444d;border-radius:6px;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:600;transition:background .15s;display:flex}.device-unclaim-btn:hover{background:#ef444433}.device-edit-topic-toggle{gap:4px;margin-bottom:8px;display:flex}.device-edit-topic-toggle button{border:1px solid var(--border-color);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;flex:1;padding:6px 10px;font-size:12px;transition:all .15s}.device-edit-topic-toggle button.active{background:var(--accent-a12);border-color:var(--accent-cyan);color:var(--accent-cyan)}.device-edit-brightness-row{align-items:center;gap:10px;display:flex}.device-edit-brightness-row input[type=range]{accent-color:var(--primary-color);flex:1}.device-edit-brightness-val{font-variant-numeric:tabular-nums;color:var(--text-color);text-align:right;min-width:28px;font-size:13px}.device-owner-row{color:var(--text-muted);align-items:center;gap:4px;margin-top:4px;font-size:11px;display:flex}.device-owner-row em{opacity:.6;font-style:normal}.owner-select-inline{border:1px solid var(--border-color);background:var(--surface-color);color:var(--text-muted);cursor:pointer;border-radius:4px;max-width:120px;margin-top:4px;padding:2px 6px;font-size:11px}.owner-select-inline:focus{border-color:var(--accent-cyan);color:var(--text-color);outline:none}@media (width<=768px){.sidebar,.sidebar.collapsed{width:100%;height:calc(56px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-right:none;border-top:1px solid var(--border-color);z-index:100;-webkit-backdrop-filter:blur(16px);flex-direction:row;transition:none;position:fixed;bottom:0;left:0;right:0}.sidebar-header,.sidebar-toggle{display:none}.sidebar-nav{flex:1;padding:0;overflow:visible}.nav-list{flex-direction:row;align-items:stretch;gap:0;height:100%}.nav-item{flex:1}.nav-link,.sidebar.collapsed .nav-link{border-left:none;border-radius:0;justify-content:center;align-items:center;gap:0;height:100%;padding:0;display:flex}.nav-link span,.btn-logout-sidebar span{display:none}.nav-link.active,.sidebar.collapsed .nav-link.active{border-left:none;border-top:2px solid var(--accent-cyan);box-shadow:none;border-radius:0}.sidebar-footer{border-top:none;border-left:1px solid var(--border-color);flex-shrink:0;padding:0}.btn-logout-sidebar,.sidebar.collapsed .btn-logout-sidebar{border-radius:0;justify-content:center;align-items:center;gap:0;width:56px;height:100%;padding:0;display:flex}.main-content{padding-bottom:calc(56px + env(safe-area-inset-bottom));align-items:flex-start}.page-container{height:auto;padding:16px}.page-content{padding:16px}.editor-page{flex-direction:column;justify-content:flex-start;align-items:stretch;gap:12px;height:auto;padding:12px}.editor-canvas-area{align-self:center;max-width:100%}.editor-frame{padding:10px}.editor-canvas-frame{padding:8px}.editor-panel{width:100%}.editor-panel-title{cursor:pointer;padding:2px 0}.editor-panel-caret{display:block}.editor-panel-section.is-collapsed .editor-panel-body{display:none}.editor-panel-section.is-collapsed .editor-panel-caret{transform:rotate(-90deg)}.editor-palette{grid-template-columns:repeat(8,1fr)}}[data-theme=calm-dark]{--bg-color:#0c0c0e;--panel-bg:#161618e6;--border-color:#ffffff14;--primary-color:#7c5cff;--primary-hover:#8f73ff;--text-color:#ededef;--text-muted:#8a8a94;--accent-cyan:#7c5cff;--accent-pink:#7c5cff;--accent-amber:#7c5cff;--font-pixel:"Inter", sans-serif;--font-pixel-alt:"Inter", sans-serif;--glow-cyan:0 0 0 transparent;--glow-pink:0 0 0 transparent;--glow-purple:0 0 0 transparent;--glow-amber:0 0 0 transparent;--surface-1:#ffffff0d;--surface-2:#ffffff17;--surface-3:#ffffff08;--surface-solid:#161618;--accent-a08:#7c5cff14;--accent-a10:#7c5cff1a;--accent-a12:#7c5cff1f;--accent-a15:#7c5cff29;--accent-a20:#7c5cff38;--accent-a30:#7c5cff52;--bg-grid:none;--bg-grid-size:0;--bg-fx:none;--bg-fx-animation:none;--bg-vignette:none}[data-theme=tactile]{--bg-color:#16140f;--panel-bg:#211d16eb;--border-color:#f5a62324;--primary-color:#f5a623;--primary-hover:#ffb84d;--text-color:#ece3d4;--text-muted:#9a8f7a;--accent-cyan:#f5a623;--accent-pink:#f5a623;--accent-amber:#f5a623;--warning:#ffce6b;--font-pixel:"JetBrains Mono", monospace;--font-pixel-alt:"IBM Plex Mono", monospace;--glow-cyan:0 0 10px #f5a62347;--glow-pink:0 0 10px #f5a62333;--glow-purple:0 0 10px #f5a62333;--glow-amber:0 0 10px #f5a62352;--surface-1:#fff0d20d;--surface-2:#fff0d217;--surface-3:#fff0d208;--surface-solid:#211d16;--accent-a08:#f5a62314;--accent-a10:#f5a6231a;--accent-a12:#f5a6231f;--accent-a15:#f5a62329;--accent-a20:#f5a62338;--accent-a30:#f5a62352;--bg-grid:none;--bg-grid-size:0;--bg-fx:none;--bg-fx-animation:none;--bg-vignette:radial-gradient(ellipse at center, transparent 58%, #0000006b 100%)}[data-theme=gallery]{--bg-color:#f4f2ee;--panel-bg:#fffffff5;--border-color:#1a1a1a1f;--primary-color:#1a1a1a;--primary-hover:#000;--text-color:#18181b;--text-muted:#71717a;--accent-cyan:#c2410c;--accent-pink:#c2410c;--accent-amber:#c2410c;--font-pixel:"Space Grotesk", sans-serif;--font-pixel-alt:"Inter", sans-serif;--glow-cyan:0 0 0 transparent;--glow-pink:0 0 0 transparent;--glow-purple:0 0 0 transparent;--glow-amber:0 0 0 transparent;--surface-1:#0000000a;--surface-2:#00000012;--surface-3:#00000005;--surface-solid:#fff;--accent-a08:#c2410c14;--accent-a10:#c2410c1a;--accent-a12:#c2410c1f;--accent-a15:#c2410c26;--accent-a20:#c2410c33;--accent-a30:#c2410c4d;--bg-grid:none;--bg-grid-size:0;--bg-fx:none;--bg-fx-animation:none;--bg-vignette:none}[data-theme=brutalist]{--bg-color:#eae6dd;--panel-bg:#fff;--border-color:#000;--primary-color:#000;--primary-hover:#1a1a1a;--text-color:#000;--text-muted:#555;--accent-cyan:#ff3b00;--accent-pink:#ff3b00;--accent-amber:#ff3b00;--font-pixel:"Archivo Black", sans-serif;--font-pixel-alt:"Archivo", sans-serif;--glow-cyan:0 0 0 transparent;--glow-pink:0 0 0 transparent;--glow-purple:0 0 0 transparent;--glow-amber:0 0 0 transparent;--surface-1:#0000000d;--surface-2:#00000017;--surface-3:#00000008;--surface-solid:#111;--accent-a08:#ff3b0014;--accent-a10:#ff3b001a;--accent-a12:#ff3b001f;--accent-a15:#ff3b0029;--accent-a20:#ff3b0038;--accent-a30:#ff3b0052;--bg-grid:none;--bg-grid-size:0;--bg-fx:none;--bg-fx-animation:none;--bg-vignette:none}
