.viewport{flex:1;position:relative;overflow:hidden;background:#0d0d0d;user-select:none;-webkit-user-select:none}.dot-grid{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(circle,#2a2a2a 1px,transparent 1px);background-size:24px 24px}.canvas-wrapper{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.main-canvas{display:block;position:absolute;top:0;left:0}.overlay-canvas{display:block;position:absolute;top:0;left:0;pointer-events:none}.vp-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.text-overlay{position:absolute;display:flex;flex-direction:column;gap:4px;z-index:20}.text-field{background:transparent;border:none;border-bottom:1.5px solid #00d4c8;outline:none;font-size:var(--fs, 24px);font-family:Outfit,Segoe UI,sans-serif;min-width:120px;padding:2px 0;caret-color:#00d4c8}.text-hint{font-size:10px;color:#888;white-space:nowrap}.text-hint kbd{background:#2a2a2a;border:1px solid #444;border-radius:3px;padding:1px 4px;font-family:inherit;font-size:9px}.viewonly-badge{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background:#1a1a1a;border:1px solid #333;color:#aaa;font-size:22px;font-weight:500;padding:10px 24px;border-radius:40px;pointer-events:none;white-space:nowrap;z-index:10}.corner-controls{position:absolute;bottom:16px;right:16px;display:flex;flex-direction:column;gap:4px;z-index:10}.corner-btn{width:30px;height:30px;background:#1a1a1a;border:1px solid #2a2a2a;border-radius:6px;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.corner-btn:hover{background:#2a2a2a;color:#e0e0e0}.toolbar{width:196px;flex-shrink:0;background:#161616;border-right:1px solid #222;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:#333 transparent}.toolbar::-webkit-scrollbar{width:4px}.toolbar::-webkit-scrollbar-track{background:transparent}.toolbar::-webkit-scrollbar-thumb{background:#333;border-radius:2px}.tb-section{padding:12px 10px 10px;border-bottom:1px solid #1e1e1e}.tb-label{font-size:9px;font-weight:700;letter-spacing:1.2px;color:#555;margin-bottom:8px}.tb-label-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.tb-val{font-size:11px;color:#888;font-weight:500}.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}.tool-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px 6px;background:#1a1a1a;border:1px solid #222;border-radius:6px;color:#888;cursor:pointer;position:relative;transition:background .12s,color .12s,border-color .12s}.tool-btn:hover{background:#222;color:#ccc}.tool-btn.active{background:#012726;border-color:#00d4c8;color:#00d4c8}.tool-icon svg{width:20px;height:20px}.tool-name{font-size:9px;font-weight:500;letter-spacing:.3px}.tool-key{position:absolute;top:3px;right:4px;font-size:8px;color:#444;font-weight:600}.tool-btn.active .tool-key{color:#007a75}.toggle-pair{display:flex;gap:4px}.toggle-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:5px;padding:6px 8px;background:#1a1a1a;border:1px solid #222;border-radius:6px;color:#888;font-size:11px;cursor:pointer;transition:background .12s,color .12s}.toggle-btn:hover{background:#222;color:#ccc}.toggle-btn.active{background:#012726;border-color:#00d4c8;color:#00d4c8}.full-range{width:100%;accent-color:#00d4c8;cursor:pointer}.brush-preview-row{display:flex;align-items:center;justify-content:center;height:44px;margin-top:4px}.brush-dot{border-radius:50%;transition:width .1s,height .1s}.font-preview{text-align:center;font-family:Outfit,Segoe UI,sans-serif;margin-top:6px;min-height:36px;display:flex;align-items:center;justify-content:center;transition:font-size .1s}.color-top-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.color-swatch-large{width:36px;height:36px;border-radius:8px;border:1px solid #333;position:relative;overflow:hidden;flex-shrink:0;cursor:pointer}.native-color-picker{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.hex-wrapper{display:flex;align-items:center;background:#1a1a1a;border:1px solid #2a2a2a;border-radius:6px;padding:0 8px;height:32px;flex:1;gap:2px}.hex-hash{color:#555;font-size:12px;font-family:monospace}.hex-input{background:none;border:none;outline:none;color:#e0e0e0;font-size:12px;font-family:monospace;width:100%;letter-spacing:1px}.rgb-sliders{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.rgb-row{display:flex;align-items:center;gap:6px}.rgb-label{font-size:11px;font-weight:700;width:12px;flex-shrink:0}.rgb-row input[type=range]{flex:1;cursor:pointer}.slider-r{accent-color:#ff5f6d}.slider-g{accent-color:#39d98a}.slider-b{accent-color:#74c0fc}.rgb-num{font-size:10px;color:#666;width:24px;text-align:right;flex-shrink:0}.palette{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.swatch{aspect-ratio:1;border-radius:4px;border:1.5px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s}.swatch:hover{transform:scale(1.15)}.swatch-active{border-color:#00d4c8;transform:scale(1.1)}.tb-tips{margin-top:auto;padding:12px 10px;border-top:1px solid #1e1e1e}.tip-line{font-size:10px;color:#444;line-height:1.9}@media (max-width: 768px){.toolbar{width:100%;height:26vh;min-height:160px;max-height:220px;flex-direction:row;border-right:none;border-top:1px solid #222;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.tb-section{flex-shrink:0;border-bottom:none;border-right:1px solid #1e1e1e;padding:8px 10px;min-width:max-content}.tool-grid{grid-template-columns:repeat(4,1fr)}.tool-btn{padding:6px 6px 5px;min-width:46px}.palette{grid-template-columns:repeat(4,1fr)}.rgb-sliders{min-width:140px}.tb-tips{display:none}}:root{--teal: #00d4c8;--bg: #111111;--surface: #1a1a1a;--border: #222222;--text: #e0e0e0;--muted: #666666;--header-h: 48px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{font-family:Outfit,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.header{height:var(--header-h);background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;flex-shrink:0;z-index:10}.header-left,.header-right{display:flex;align-items:center;gap:12px}.logo{display:flex;align-items:center;gap:8px}.logo-text{font-size:15px;font-weight:600;letter-spacing:-.3px;color:var(--text)}.logo-text span{color:var(--teal)}.header-divider{width:1px;height:18px;background:var(--border)}.canvas-tag{font-size:11px;color:var(--muted);letter-spacing:.5px;font-weight:500}.built-by{font-size:11px;color:#aaa;letter-spacing:.3px}.built-by-name{color:var(--teal);font-weight:600}.ws-badge{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);padding:4px 10px;background:var(--bg);border-radius:20px;border:1px solid var(--border)}.ws-dot{width:7px;height:7px;border-radius:50%;background:var(--muted)}.ws-live .ws-dot{background:#4ade80;box-shadow:0 0 6px #4ade8066}.ws-live{color:var(--text)}.ws-offline .ws-dot{background:#f87171}.zoom-display{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg);border-radius:20px;border:1px solid var(--border)}.zoom-label{font-size:10px;color:var(--muted);letter-spacing:.8px;font-weight:600}.zoom-val{font-size:12px;font-weight:600;color:var(--text);min-width:38px}.cursor-display{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg);border-radius:20px;border:1px solid var(--border);font-variant-numeric:tabular-nums}.cursor-display .zoom-val{min-width:100px}.timelapse-btn{display:flex;align-items:center;gap:6px;padding:4px 10px;background:var(--bg);border:1px solid var(--border);border-radius:20px;color:var(--muted);font-family:Outfit,Segoe UI,sans-serif;font-size:12px;font-weight:500;cursor:pointer;transition:color .15s,border-color .15s;white-space:nowrap}.timelapse-btn:hover:not(:disabled){color:var(--teal);border-color:var(--teal)}.timelapse-btn.loading,.timelapse-btn:disabled{opacity:.55;cursor:not-allowed}.timelapse-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 4px;background:var(--teal);color:#000;border-radius:8px;font-size:10px;font-weight:700;line-height:1}.workspace{display:flex;flex:1;overflow:hidden}@media (max-width: 768px){.workspace{flex-direction:column}.canvas-tag,.cursor-display,.built-by{display:none}.header{padding:0 10px}}
