/* ===== RESET & BASE ===== */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg-primary:#0f0f1a;
  --bg-secondary:#1a1a2e;
  --bg-tertiary:#16213e;
  --bg-card:#1e1e38;
  --bg-hover:#2a2a4a;
  --text-primary:#e8e8f0;
  --text-secondary:#a0a0b8;
  --text-muted:#6a6a80;
  --accent:#6c5ce7;
  --accent-hover:#7c6ff7;
  --accent-glow:rgba(108,92,231,0.3);
  --success:#00b894;
  --warning:#fdcb6e;
  --danger:#e17055;
  --border:#2a2a4a;
  --border-light:#3a3a5a;
  --panel-width:280px;
  --topbar-h:52px;
  --timeline-h:280px;
  --radius:8px;
  --radius-sm:5px;
  --shadow:0 4px 20px rgba(0,0,0,0.3);
  --transition:all .2s ease;
}
[data-theme="light"]{
  --bg-primary:#f0f2f5;
  --bg-secondary:#ffffff;
  --bg-tertiary:#f8f9fa;
  --bg-card:#ffffff;
  --bg-hover:#e8eaf0;
  --text-primary:#1a1a2e;
  --text-secondary:#555570;
  --text-muted:#888898;
  --border:#d8d8e8;
  --border-light:#e8e8f0;
  --shadow:0 4px 20px rgba(0,0,0,0.08);
}
html,body{height:100%;font-family:'Segoe UI',system-ui,-apple-system,sans-serif;background:var(--bg-primary);color:var(--text-primary);overflow:hidden;font-size:13px}

/* ===== SCROLLBAR ===== */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--accent)}

/* ===== TOPBAR ===== */
.topbar{height:var(--topbar-h);background:var(--bg-secondary);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 16px;z-index:100;position:relative}
.topbar-left,.topbar-center,.topbar-right{display:flex;align-items:center;gap:6px}
.logo{font-size:16px;font-weight:700;color:var(--accent);display:flex;align-items:center;gap:8px;letter-spacing:-0.5px}
.logo i{font-size:20px;background:linear-gradient(135deg,var(--accent),#a29bfe);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.tb-btn{width:34px;height:34px;border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition);font-size:13px}
.tb-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.tb-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.tb-sep{width:1px;height:24px;background:var(--border);margin:0 4px}
.zoom-label{font-size:12px;color:var(--text-muted);min-width:40px;text-align:center}
.export-btn{width:auto!important;padding:0 14px;gap:6px;font-weight:600;background:linear-gradient(135deg,var(--accent),#a29bfe)!important;color:#fff!important;border:none!important}
.export-btn:hover{opacity:.9}

/* ===== MAIN LAYOUT ===== */
.main-layout{display:flex;height:calc(100vh - var(--topbar-h));overflow:hidden}

/* ===== PANELS ===== */
.panel{width:var(--panel-width);min-width:var(--panel-width);background:var(--bg-secondary);border-right:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column}
.panel-right{border-right:none;border-left:1px solid var(--border)}
.panel-section{border-bottom:1px solid var(--border)}
.panel-header{padding:12px 14px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0.5px;color:var(--text-muted);display:flex;align-items:center;gap:8px;background:var(--bg-tertiary)}
.panel-header i{color:var(--accent);font-size:13px}

/* ===== UPLOAD ZONE ===== */
.upload-zone{margin:10px;padding:20px;border:2px dashed var(--border-light);border-radius:var(--radius);text-align:center;cursor:pointer;transition:var(--transition);color:var(--text-muted)}
.upload-zone:hover,.upload-zone.dragover{border-color:var(--accent);background:var(--accent-glow);color:var(--accent)}
.upload-zone i{font-size:28px;margin-bottom:8px;display:block}
.upload-zone p{font-size:12px;margin:0}
.upload-link{color:var(--accent);text-decoration:underline;cursor:pointer}

/* ===== FILE LIST ===== */
.file-list{padding:6px}
.file-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);color:var(--text-secondary);font-size:12px}
.file-item:hover{background:var(--bg-hover)}
.file-item.active{background:var(--accent);color:#fff}
.file-item i{font-size:14px;color:var(--accent);min-width:16px}
.file-item.active i{color:#fff}
.file-item .file-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-item .file-remove{opacity:0;color:var(--danger);cursor:pointer}
.file-item:hover .file-remove{opacity:1}

/* ===== SAMPLE GRID ===== */
.sample-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px}
.sample-card{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);padding:12px 8px;text-align:center;cursor:pointer;transition:var(--transition);display:flex;flex-direction:column;align-items:center;gap:6px}
.sample-card:hover{border-color:var(--accent);background:var(--bg-hover);transform:translateY(-2px)}
.sample-card svg{width:48px;height:48px}
.sample-card span{font-size:10px;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:0.3px}

/* ===== LAYER LIST ===== */
.layer-list{padding:6px;max-height:300px;overflow-y:auto}
.layer-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);font-size:12px;color:var(--text-secondary)}
.layer-item:hover{background:var(--bg-hover)}
.layer-item.selected{background:var(--accent-glow);border-left:3px solid var(--accent);color:var(--text-primary)}
.layer-item .layer-icon{color:var(--accent);min-width:14px;font-size:11px}
.layer-item .layer-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layer-item .layer-eye{color:var(--text-muted);cursor:pointer;font-size:12px}
.layer-item .layer-eye:hover{color:var(--accent)}
.layer-item .layer-anim-badge{font-size:9px;background:var(--accent);color:#fff;padding:1px 5px;border-radius:8px}
.empty-msg{padding:20px;text-align:center;color:var(--text-muted);font-size:12px}

/* ===== CENTER AREA ===== */
.center-area{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-primary)}
.canvas-wrapper{flex:1;overflow:hidden;position:relative}
.canvas-bg{width:100%;height:100%;overflow:auto;display:flex;align-items:center;justify-content:center;background-image:radial-gradient(circle,var(--border) 1px,transparent 1px);background-size:20px 20px;position:relative}
.canvas-content{position:relative;min-width:200px;min-height:200px;display:flex;align-items:center;justify-content:center}
.canvas-content svg{max-width:100%;max-height:100%;cursor:pointer}
.canvas-content svg *{cursor:pointer;transition:outline .15s ease}
.canvas-content svg .svg-element-hover{outline:2px dashed var(--accent);outline-offset:2px}
.canvas-content svg .svg-element-selected{outline:2px solid var(--accent);outline-offset:2px;filter:drop-shadow(0 0 6px var(--accent-glow))}
.empty-canvas{text-align:center;color:var(--text-muted);padding:60px 20px}
.empty-canvas i{font-size:64px;margin-bottom:16px;color:var(--border-light);display:block}
.empty-canvas h3{font-size:18px;margin-bottom:8px;color:var(--text-secondary)}
.empty-canvas p{font-size:13px}

/* ===== TIMELINE ===== */
.timeline-panel{height:var(--timeline-h);min-height:var(--timeline-h);background:var(--bg-secondary);border-top:1px solid var(--border);display:flex;flex-direction:column}
.timeline-toolbar{display:flex;align-items:center;gap:8px;padding:8px 14px;border-bottom:1px solid var(--border);background:var(--bg-tertiary)}
.tl-btn{width:30px;height:30px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:var(--transition)}
.tl-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.tl-btn.active{background:var(--success);color:#fff;border-color:var(--success)}
.tl-time{font-size:12px;color:var(--text-muted);font-family:'Courier New',monospace;min-width:100px}
.tl-spacer{flex:1}
.tl-label{font-size:11px;color:var(--text-muted)}
.tl-input{width:50px;height:28px;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius-sm);padding:0 6px;font-size:12px;text-align:center}
.timeline-tracks{flex:1;position:relative;overflow:auto}
.tl-ruler{height:24px;background:var(--bg-tertiary);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5;display:flex;align-items:flex-end}
.tl-ruler-mark{position:absolute;bottom:0;font-size:9px;color:var(--text-muted);border-left:1px solid var(--border)}
.tl-ruler-mark span{padding-left:3px}
.tl-playhead{position:absolute;top:0;bottom:0;width:2px;background:var(--danger);z-index:10;pointer-events:none;left:0;transition:left 0.05s linear}
.tl-playhead::before{content:'';position:absolute;top:0;left:-5px;width:12px;height:12px;background:var(--danger);clip-path:polygon(0 0,100% 0,50% 100%);pointer-events:auto;cursor:ew-resize}
.tl-track-list{min-height:100px}
.tl-track{display:flex;align-items:center;height:32px;border-bottom:1px solid var(--border)}
.tl-track-label{width:120px;min-width:120px;padding:0 10px;font-size:11px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--bg-tertiary);height:100%;display:flex;align-items:center;border-right:1px solid var(--border)}
.tl-track-bar{flex:1;height:100%;position:relative}
.tl-keyframe{position:absolute;height:20px;top:6px;background:linear-gradient(135deg,var(--accent),#a29bfe);border-radius:4px;min-width:30px;cursor:move;display:flex;align-items:center;justify-content:center;font-size:9px;color:#fff;font-weight:600;opacity:0.9;transition:opacity .2s}
.tl-keyframe:hover{opacity:1;box-shadow:0 0 10px var(--accent-glow)}

/* ===== ANIMATION CATEGORIES ===== */
.anim-categories{padding:8px}
.anim-cat{margin-bottom:6px}
.anim-cat-header{display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;border-radius:var(--radius-sm);font-size:12px;font-weight:600;color:var(--text-secondary);transition:var(--transition)}
.anim-cat-header:hover{background:var(--bg-hover)}
.anim-cat-header i{font-size:11px;color:var(--accent);min-width:16px;text-align:center}
.anim-cat-header .cat-arrow{margin-left:auto;font-size:10px;transition:transform .2s}
.anim-cat.open .cat-arrow{transform:rotate(90deg)}
.anim-cat-items{display:none;padding:2px 0 2px 20px}
.anim-cat.open .anim-cat-items{display:block}
.anim-item{display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;border-radius:var(--radius-sm);font-size:12px;color:var(--text-secondary);transition:var(--transition)}
.anim-item:hover{background:var(--bg-hover);color:var(--text-primary)}
.anim-item.selected{background:var(--accent-glow);color:var(--accent);font-weight:600}
.anim-item .anim-preview{width:18px;height:18px;border-radius:3px;background:var(--bg-tertiary);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--accent)}

/* ===== PROPERTIES ===== */
.props-panel{padding:10px 14px}
.prop-group{margin-bottom:10px}
.prop-group label{display:block;font-size:11px;color:var(--text-muted);margin-bottom:4px;font-weight:600;text-transform:uppercase;letter-spacing:0.3px}
.prop-group input,.prop-group select{width:100%;height:32px;background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius-sm);padding:0 10px;font-size:12px;transition:var(--transition)}
.prop-group input:focus,.prop-group select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
.btn-apply{width:100%;height:36px;background:linear-gradient(135deg,var(--accent),#a29bfe);color:#fff;border:none;border-radius:var(--radius);cursor:pointer;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;transition:var(--transition);margin-top:14px}
.btn-apply:hover{opacity:.85;transform:translateY(-1px)}
.btn-remove{width:100%;height:32px;background:transparent;color:var(--danger);border:1px solid var(--danger);border-radius:var(--radius);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;gap:6px;transition:var(--transition);margin-top:6px}
.btn-remove:hover{background:var(--danger);color:#fff}

/* ===== CODE OUTPUT ===== */
.code-tabs{display:flex;border-bottom:1px solid var(--border);background:var(--bg-tertiary)}
.code-tab{flex:1;padding:8px;text-align:center;font-size:11px;font-weight:600;color:var(--text-muted);background:transparent;border:none;cursor:pointer;transition:var(--transition);border-bottom:2px solid transparent}
.code-tab:hover{color:var(--text-primary)}
.code-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.code-output{position:relative;padding:12px;max-height:200px;overflow:auto}
.code-output pre{font-family:'Fira Code','Courier New',monospace;font-size:11px;color:var(--text-secondary);white-space:pre-wrap;word-break:break-all;line-height:1.6}
.btn-copy{position:absolute;top:8px;right:8px;width:28px;height:28px;background:var(--bg-hover);border:1px solid var(--border);color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:11px;transition:var(--transition)}
.btn-copy:hover{background:var(--accent);color:#fff;border-color:var(--accent)}

/* ===== MODAL ===== */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.6);z-index:1000;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.modal-overlay.show{display:flex}
.modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;width:500px;max-width:90vw;box-shadow:var(--shadow)}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}
.modal-header h3{font-size:16px;display:flex;align-items:center;gap:8px;color:var(--text-primary)}
.modal-header h3 i{color:var(--accent)}
.modal-close{width:32px;height:32px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:16px;transition:var(--transition)}
.modal-close:hover{background:var(--danger);color:#fff}
.modal-body{padding:20px}
.export-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.export-card{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);padding:20px 16px;text-align:center;cursor:pointer;transition:var(--transition);display:flex;flex-direction:column;align-items:center;gap:8px}
.export-card:hover{border-color:var(--accent);background:var(--accent-glow);transform:translateY(-2px)}
.export-card i{font-size:28px;color:var(--accent)}
.export-card span{font-size:13px;font-weight:600;color:var(--text-primary)}
.export-card small{font-size:10px;color:var(--text-muted)}

/* ===== TOAST ===== */
.toast-container{position:fixed;bottom:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px}
.toast{padding:12px 18px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:13px;box-shadow:var(--shadow);display:flex;align-items:center;gap:10px;animation:toastIn .3s ease;min-width:250px}
.toast.success{border-left:4px solid var(--success)}
.toast.error{border-left:4px solid var(--danger)}
.toast.info{border-left:4px solid var(--accent)}
.toast i{font-size:16px}
.toast.success i{color:var(--success)}
.toast.error i{color:var(--danger)}
.toast.info i{color:var(--accent)}
@keyframes toastIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

/* ===== RESPONSIVE ===== */
@media(max-width:1100px){
  .panel{width:220px;min-width:220px}
}
@media(max-width:860px){
  .panel-right{display:none}
  .panel-left{width:200px;min-width:200px}
}