/* ═══ CSS Custom Properties ═══ */
:root, [data-theme="light"] {
  --surface: #FFFFFF; --surface-dim: #F9FAFB; --surface-container: #F3F4F6;
  --surface-container-high: #E5E7EB; --surface-variant: #E5E7EB;
  --background: #F5F5F7; --on-surface: #111827; --on-surface-variant: #6B7280;
  --outline: #D1D5DB; --outline-variant: #E5E7EB;
  --error: #DC2626; --error-container: #FEE2E2; --on-error: #FFFFFF;
  --success: #16A34A; --success-container: #DCFCE7;
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.07),0 2px 4px -1px rgba(0,0,0,0.04);
  --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.08),0 4px 6px -2px rgba(0,0,0,0.04);
}
[data-theme="dark"] {
  --surface: #1F2937; --surface-dim: #111827; --surface-container: #1F2937;
  --surface-container-high: #374151; --surface-variant: #374151;
  --background: #111827; --on-surface: #F9FAFB; --on-surface-variant: #9CA3AF;
  --outline: #4B5563; --outline-variant: #374151;
  --error: #F87171; --error-container: #7F1D1D; --on-error: #7F1D1D;
  --success: #4ADE80; --success-container: #14532D;
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.3); --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.4),0 2px 4px -1px rgba(0,0,0,0.2);
  --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.5),0 4px 6px -2px rgba(0,0,0,0.3);
}

/* ─ Color Presets (light) ─ */
:root,[data-color="indigo"]                             { --primary:#4F46E5; --primary-light:#818CF8; --primary-container:#E0E7FF; --on-primary:#FFF; --on-primary-container:#312E81; --secondary:#6366F1; --secondary-container:#E0E7FF; }
[data-color="ocean"]                                    { --primary:#0369A1; --primary-light:#38BDF8; --primary-container:#E0F2FE; --on-primary:#FFF; --on-primary-container:#0C4A6E; --secondary:#0891B2; --secondary-container:#CFFAFE; }
[data-color="forest"]                                   { --primary:#15803D; --primary-light:#4ADE80; --primary-container:#DCFCE7; --on-primary:#FFF; --on-primary-container:#14532D; --secondary:#4D7C0F; --secondary-container:#ECFCCB; }
[data-color="sunset"]                                   { --primary:#C2410C; --primary-light:#FB923C; --primary-container:#FFEDD5; --on-primary:#FFF; --on-primary-container:#7C2D12; --secondary:#B45309; --secondary-container:#FEF3C7; }
[data-color="rose"]                                     { --primary:#DB2777; --primary-light:#F472B6; --primary-container:#FCE7F3; --on-primary:#FFF; --on-primary-container:#831843; --secondary:#A21CAF; --secondary-container:#FAE8FF; }
[data-color="purple"]                                   { --primary:#7C3AED; --primary-light:#A78BFA; --primary-container:#EDE9FE; --on-primary:#FFF; --on-primary-container:#4C1D95; --secondary:#6D28D9; --secondary-container:#EDE9FE; }
[data-color="cherry"]                                   { --primary:#E8457C; --primary-light:#FF85A1; --primary-container:#FFE0E6; --on-primary:#FFF; --on-primary-container:#8B1A3A; --secondary:#D4608C; --secondary-container:#FFE0E6; }
[data-color="midnight"]                                 { --primary:#1E3A5F; --primary-light:#60A5FA; --primary-container:#DBEAFE; --on-primary:#FFF; --on-primary-container:#1E3A5F; --secondary:#4A6FA5; --secondary-container:#DBEAFE; }
[data-color="mint"]                                     { --primary:#39C5BB; --primary-light:#5DD4CB; --primary-container:#D5F5F2; --on-primary:#FFF; --on-primary-container:#115E59; --secondary:#2EADA4; --secondary-container:#D5F5F2; }
[data-color="lavender"]                                 { --primary:#9575CD; --primary-light:#B39DDB; --primary-container:#EDE7F6; --on-primary:#FFF; --on-primary-container:#4A148C; --secondary:#7986CB; --secondary-container:#E8EAF6; }
[data-color="coffee"]                                   { --primary:#6D4C41; --primary-light:#A1887F; --primary-container:#EFEBE9; --on-primary:#FFF; --on-primary-container:#3E2723; --secondary:#8D6E63; --secondary-container:#EFEBE9; }
[data-color="crimson"]                                  { --primary:#B71C1C; --primary-light:#E57373; --primary-container:#FFEBEE; --on-primary:#FFF; --on-primary-container:#7F0000; --secondary:#C62828; --secondary-container:#FFCDD2; }

/* ─ Color Presets (dark) ─ */
[data-theme="dark"][data-color="indigo"],[data-theme="dark"]:not([data-color]) { --primary:#A5B4FC; --primary-light:#C7D2FE; --primary-container:#312E81; --on-primary:#1E1B4B; --on-primary-container:#E0E7FF; --secondary:#A5B4FC; --secondary-container:#3730A3; }
[data-theme="dark"][data-color="ocean"]   { --primary:#7DD3FC; --primary-light:#BAE6FD; --primary-container:#0C4A6E; --on-primary:#082F49; --on-primary-container:#E0F2FE; --secondary:#67E8F9; --secondary-container:#164E63; }
[data-theme="dark"][data-color="forest"]  { --primary:#86EFAC; --primary-light:#BBF7D0; --primary-container:#14532D; --on-primary:#052E16; --on-primary-container:#DCFCE7; --secondary:#BEF264; --secondary-container:#365314; }
[data-theme="dark"][data-color="sunset"]  { --primary:#FDBA74; --primary-light:#FED7AA; --primary-container:#7C2D12; --on-primary:#431407; --on-primary-container:#FFEDD5; --secondary:#FCD34D; --secondary-container:#713F12; }
[data-theme="dark"][data-color="rose"]    { --primary:#F9A8D4; --primary-light:#FBCFE8; --primary-container:#831843; --on-primary:#500724; --on-primary-container:#FCE7F3; --secondary:#E879F9; --secondary-container:#701A75; }
[data-theme="dark"][data-color="purple"]  { --primary:#C4B5FD; --primary-light:#DDD6FE; --primary-container:#4C1D95; --on-primary:#2E1065; --on-primary-container:#EDE9FE; --secondary:#A78BFA; --secondary-container:#5B21B6; }
[data-theme="dark"][data-color="cherry"]  { --primary:#FFB1C8; --primary-light:#FFD6E0; --primary-container:#8B1A3A; --on-primary:#5C0A26; --on-primary-container:#FFE0E6; --secondary:#FFA0B4; --secondary-container:#8B1A3A; }
[data-theme="dark"][data-color="midnight"]{ --primary:#A8C8FF; --primary-light:#C8DCFF; --primary-container:#1E3A5F; --on-primary:#0A1929; --on-primary-container:#DBEAFE; --secondary:#90B4ED; --secondary-container:#1E3A5F; }
[data-theme="dark"][data-color="mint"]    { --primary:#7EDED7; --primary-light:#A7F3EE; --primary-container:#115E59; --on-primary:#042F2E; --on-primary-container:#D5F5F2; --secondary:#5DD4CB; --secondary-container:#134E48; }
[data-theme="dark"][data-color="lavender"]{ --primary:#CE93D8; --primary-light:#E1BEE7; --primary-container:#4A148C; --on-primary:#2A0845; --on-primary-container:#EDE7F6; --secondary:#B39DDB; --secondary-container:#512DA8; }
[data-theme="dark"][data-color="coffee"]  { --primary:#D7BCA8; --primary-light:#E6D5C8; --primary-container:#3E2723; --on-primary:#1B0C08; --on-primary-container:#EFEBE9; --secondary:#BCAAA4; --secondary-container:#4E342E; }
[data-theme="dark"][data-color="crimson"] { --primary:#EF9A9A; --primary-light:#FFCDD2; --primary-container:#7F0000; --on-primary:#3E0000; --on-primary-container:#FFEBEE; --secondary:#E57373; --secondary-container:#B71C1C; }

/* ─ Common tokens ─ */
:root { --radius-sm:8px; --radius-md:12px; --radius-lg:16px; --radius-xl:24px;
  --sidebar-width:240px; --bottom-nav-height:64px;
  --font-sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  --transition-fast:150ms cubic-bezier(.4,0,.2,1); --transition-normal:250ms cubic-bezier(.4,0,.2,1); }

/* ═══ Reset ═══ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-family:var(--font-sans);font-size:16px;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}
body{background:var(--background);color:var(--on-surface);min-height:100dvh;overflow:hidden}
#app{display:flex;height:100dvh;width:100%}
::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--outline);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--on-surface-variant)}

/* ═══ Sidebar ═══ */
.sidebar{display:none;flex-direction:column;width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--surface);border-right:1px solid var(--outline-variant);padding:16px 12px;z-index:10}
.sidebar-header{display:flex;align-items:center;gap:10px;padding:8px 12px 20px}
.sidebar-logo{color:var(--primary);font-size:28px}.sidebar-title{font-size:17px;font-weight:700;letter-spacing:-.3px}
.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:4px}
.sidebar-nav-item{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast);color:var(--on-surface-variant);font-size:14px;font-weight:500;border:none;background:none;width:100%;text-align:left}
.sidebar-nav-item:hover{background:var(--surface-container)}.sidebar-nav-item.active{background:var(--primary-container);color:var(--on-primary-container);font-weight:600}
.sidebar-nav-item.active .material-icons-round{color:var(--primary)}.sidebar-nav-item .material-icons-round{font-size:22px}
.sidebar-footer{padding-top:12px;border-top:1px solid var(--outline-variant);display:flex;justify-content:center}
.theme-toggle-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:none;background:var(--surface-container);color:var(--on-surface-variant);cursor:pointer;transition:background var(--transition-fast)}
.theme-toggle-btn:hover{background:var(--surface-container-high)}

/* ═══ Main ═══ */
.main-content{flex:1;min-width:0;display:flex;flex-direction:column;height:100dvh;overflow:hidden}
.page-container{flex:1;overflow-y:auto;overflow-x:hidden;padding:24px;padding-bottom:calc(var(--bottom-nav-height) + 24px)}

/* ═══ Bottom Nav ═══ */
.bottom-nav{display:flex;align-items:center;justify-content:space-around;height:var(--bottom-nav-height);background:var(--surface);border-top:1px solid var(--outline-variant);padding-bottom:env(safe-area-inset-bottom,0);z-index:10;flex-shrink:0}
.bottom-nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 12px;border-radius:var(--radius-md);cursor:pointer;border:none;background:none;color:var(--on-surface-variant);min-width:48px}
.bottom-nav-item .material-icons-round{font-size:24px}.bottom-nav-item span:last-child{font-size:10px;font-weight:500}
.bottom-nav-item.active{color:var(--primary)}.bottom-nav-item.active .material-icons-round{color:var(--primary)}

@media(min-width:769px){
  .sidebar{display:flex}.bottom-nav{display:none}
  .page-container{padding-bottom:24px;max-width:860px;margin:0 auto;width:100%}
}

/* ═══ Page Header ═══ */
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:12px}
.page-header h1{font-size:22px;font-weight:700;letter-spacing:-.4px}
.page-header-actions{display:flex;gap:8px;align-items:center}

/* ═══ Card ═══ */
.card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--outline-variant);padding:20px;margin-bottom:16px;transition:box-shadow var(--transition-normal)}
.card:hover{box-shadow:var(--shadow-md)}
.card-title{font-size:15px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.card-title .material-icons-round{font-size:20px;color:var(--primary)}

/* ═══ Forms ═══ */
.form-group{margin-bottom:16px}
.form-label{display:block;font-size:13px;font-weight:500;color:var(--on-surface-variant);margin-bottom:6px}
.input,.textarea,.select{width:100%;padding:10px 14px;font-size:14px;font-family:var(--font-sans);background:var(--surface-container);border:1.5px solid var(--outline);border-radius:var(--radius-sm);color:var(--on-surface);outline:none;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}
.input:focus,.textarea:focus,.select:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.textarea{resize:vertical;min-height:100px;line-height:1.6}
.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236B7280' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px;cursor:pointer}

/* ═══ Buttons ═══ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;font-size:14px;font-weight:600;font-family:var(--font-sans);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;user-select:none}
.btn .material-icons-round{font-size:18px}.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover:not(:disabled){filter:brightness(1.1);box-shadow:var(--shadow-md)}
.btn-secondary{background:var(--surface-container);color:var(--on-surface);border:1.5px solid var(--outline)}.btn-secondary:hover:not(:disabled){background:var(--surface-container-high)}
.btn-text{background:none;color:var(--primary);padding:8px 12px}.btn-text:hover:not(:disabled){background:var(--primary-container)}
.btn-icon{padding:8px;border-radius:50%;background:none;border:none;color:var(--on-surface-variant);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background var(--transition-fast)}.btn-icon:hover{background:var(--surface-container)}
.btn-sm{padding:6px 14px;font-size:13px}.btn-block{width:100%}
.btn-danger{background:var(--error);color:var(--on-error)}.btn-danger:hover:not(:disabled){filter:brightness(1.1)}

/* ═══ Chat ═══ */
.chat-wrapper{display:flex;flex-direction:column;height:100%}
.chat-messages{flex:1;overflow-y:auto;padding:12px 0;display:flex;flex-direction:column;gap:16px}
.chat-msg{display:flex;gap:10px;max-width:85%;animation:msgIn .25s ease-out}
@keyframes msgIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.chat-msg.user{align-self:flex-end;flex-direction:row-reverse}.chat-msg.assistant{align-self:flex-start}
.chat-msg-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px}
.chat-msg.user .chat-msg-avatar{background:var(--primary);color:var(--on-primary)}
.chat-msg.assistant .chat-msg-avatar{background:var(--secondary-container);color:var(--on-primary-container)}
.chat-msg-bubble{padding:10px 14px;border-radius:var(--radius-md);font-size:14px;line-height:1.65;word-break:break-word;position:relative}
.chat-msg.user .chat-msg-bubble{background:var(--primary);color:var(--on-primary);border-bottom-right-radius:4px}
.chat-msg.assistant .chat-msg-bubble{background:var(--surface-container);color:var(--on-surface);border-bottom-left-radius:4px}
.chat-msg-bubble pre{background:var(--surface-dim);border-radius:var(--radius-sm);padding:10px 12px;overflow-x:auto;font-size:13px;margin:6px 0;border:1px solid var(--outline-variant)}
.chat-msg-bubble code{font-family:'Menlo','Consolas',monospace;font-size:.9em}
.chat-msg-actions{display:flex;gap:2px;margin-top:4px;opacity:0;transition:opacity var(--transition-fast)}.chat-msg:hover .chat-msg-actions{opacity:1}

.chat-thinking-details{margin-bottom:6px}
.chat-thinking-details summary{font-size:12px;color:var(--primary);cursor:pointer;font-weight:600;padding:4px 0}
.chat-thinking{font-size:13px;color:var(--on-surface-variant);font-style:italic;padding:6px 10px;background:var(--surface-variant);border-radius:var(--radius-sm);border-left:3px solid var(--primary-light)}
.chat-tool-log{font-size:12px;color:var(--on-surface-variant);display:flex;align-items:center;gap:4px;margin-bottom:4px;padding:4px 8px;background:var(--surface-variant);border-radius:var(--radius-sm)}

.chat-attachments{display:flex;gap:8px;padding:8px 4px;flex-wrap:wrap}.chat-attachments.hidden{display:none}
.attachment-preview{position:relative;border-radius:var(--radius-sm);border:1.5px solid var(--outline);overflow:hidden;background:var(--surface-container)}
.attachment-preview img{width:64px;height:64px;object-fit:cover;display:block}
.attachment-preview.file-preview{display:flex;align-items:center;gap:6px;padding:8px 12px;font-size:12px;color:var(--on-surface-variant);max-width:200px}
.attachment-preview .file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.attachment-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.attachment-remove .material-icons-round{font-size:14px}
.chat-msg-images{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.chat-msg-image{max-width:200px;max-height:200px;border-radius:var(--radius-sm);cursor:pointer;object-fit:cover;transition:opacity var(--transition-fast)}.chat-msg-image:hover{opacity:.85}
.chat-msg-file{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--surface-variant);border-radius:var(--radius-sm);font-size:12px;color:var(--on-surface-variant);margin-bottom:6px}
.chat-msg-file .material-icons-round{font-size:16px;color:var(--primary)}

.chat-input-bar{display:flex;gap:8px;align-items:flex-end;padding:12px 0 4px;border-top:1px solid var(--outline-variant);background:var(--background)}
.chat-input-bar .textarea{min-height:44px;max-height:150px;padding:10px 14px;resize:none}
.chat-send-btn{width:44px;height:44px;border-radius:50%;background:var(--primary);color:var(--on-primary);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--transition-fast)}
.chat-send-btn:hover:not(:disabled){filter:brightness(1.1);box-shadow:var(--shadow-md)}

.plugin-badge{position:absolute;top:-4px;right:-4px;background:var(--error);color:#fff;font-size:10px;font-weight:700;width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center}

/* ═══ Translation ═══ */
.translate-panels{display:grid;grid-template-columns:1fr;gap:16px}
@media(min-width:769px){.translate-panels{grid-template-columns:1fr 1fr}}
.translate-panel{display:flex;flex-direction:column;gap:8px}.translate-panel .textarea{min-height:160px;flex:1}
.translate-lang-bar{display:flex;align-items:center;gap:8px}.translate-lang-bar .select{flex:1}
.swap-btn{width:40px;height:40px;border-radius:50%;background:var(--primary-container);color:var(--primary);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:transform var(--transition-normal),background var(--transition-fast)}
.swap-btn:hover{background:var(--primary);color:var(--on-primary)}.swap-btn:active{transform:rotate(180deg)}

/* ═══ Voice ═══ */
.voice-visualizer{height:80px;background:var(--surface-container);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;overflow:hidden}
.voice-bars{display:flex;align-items:center;gap:3px;height:60px}
.voice-bar{width:4px;background:var(--primary);border-radius:2px;transition:height .1s ease;height:8px}
.voice-record-btn{width:72px;height:72px;border-radius:50%;background:var(--primary);color:var(--on-primary);border:4px solid var(--primary-container);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-normal);box-shadow:var(--shadow-lg)}
.voice-record-btn:hover{transform:scale(1.05)}
.voice-record-btn.recording{background:var(--error);border-color:var(--error-container);animation:pulse 1.5s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(220,38,38,.4)}50%{box-shadow:0 0 0 16px rgba(220,38,38,0)}}
.voice-record-btn .material-icons-round{font-size:32px}
.transcript-area{min-height:120px;background:var(--surface-container);border-radius:var(--radius-md);padding:16px;font-size:15px;line-height:1.7;color:var(--on-surface);border:1.5px solid var(--outline-variant);white-space:pre-wrap}
.transcript-area.empty{color:var(--on-surface-variant);font-style:italic}

/* ═══ Settings ═══ */
.settings-item{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--outline-variant);gap:12px}
.settings-item:last-child{border-bottom:none}
.settings-item-label{font-size:14px;font-weight:500}.settings-item-desc{font-size:12px;color:var(--on-surface-variant);margin-top:2px}
.toggle{position:relative;width:48px;height:28px;flex-shrink:0}.toggle input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;inset:0;background:var(--outline);border-radius:14px;cursor:pointer;transition:background var(--transition-fast)}
.toggle-slider::before{content:'';position:absolute;width:20px;height:20px;left:4px;bottom:4px;background:#fff;border-radius:50%;transition:transform var(--transition-fast);box-shadow:var(--shadow-sm)}
.toggle input:checked+.toggle-slider{background:var(--primary)}.toggle input:checked+.toggle-slider::before{transform:translateX(20px)}

.color-preset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px}
.color-preset-btn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 8px;border-radius:var(--radius-md);border:2px solid var(--outline-variant);background:var(--surface-container);cursor:pointer;transition:all var(--transition-fast)}
.color-preset-btn:hover{border-color:var(--outline)}.color-preset-btn.active{border-color:var(--primary);background:var(--primary-container)}
.color-swatch{width:28px;height:28px;border-radius:50%;border:2px solid rgba(0,0,0,.1)}

/* ═══ Assist ═══ */
.assist-menu-item{display:flex;align-items:center;gap:14px;padding:16px 12px;border-radius:var(--radius-md);cursor:pointer;border:none;background:none;width:100%;text-align:left;transition:background var(--transition-fast);color:var(--on-surface)}
.assist-menu-item:hover{background:var(--surface-container)}
.assist-menu-item>.material-icons-round:first-child{font-size:24px;color:var(--primary);flex-shrink:0}
.faq-item{padding:12px 0;border-bottom:1px solid var(--outline-variant)}.faq-item:last-child{border-bottom:none}
.faq-item summary{cursor:pointer;padding:4px 0}

/* ═══ Folder & History ═══ */
.folder-bar{display:flex;gap:6px;flex-wrap:wrap;padding:4px 0}
.history-item .history-delete,.history-item .history-move{opacity:0;transition:opacity var(--transition-fast)}
.history-item:hover .history-delete,.history-item:hover .history-move{opacity:1}

/* ═══ Common ═══ */
.badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;border-radius:10px;background:var(--primary-container);color:var(--on-primary-container)}
.chip{display:inline-flex;align-items:center;gap:4px;padding:4px 12px;font-size:13px;font-weight:500;border-radius:16px;background:var(--surface-container);color:var(--on-surface);border:1px solid var(--outline);cursor:pointer;transition:all var(--transition-fast)}
.chip:hover{background:var(--surface-container-high)}.chip.active{background:var(--primary-container);color:var(--on-primary-container);border-color:var(--primary)}

.toast-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{display:flex;align-items:center;gap:10px;padding:12px 18px;background:var(--surface);border:1px solid var(--outline-variant);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:14px;color:var(--on-surface);pointer-events:auto;animation:toastIn .3s ease-out;max-width:360px}
.toast.leaving{animation:toastOut .25s ease-in forwards}
.toast .material-icons-round{font-size:20px}
.toast.success .material-icons-round{color:var(--success)}.toast.error .material-icons-round{color:var(--error)}.toast.info .material-icons-round{color:var(--primary)}
@keyframes toastIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}
@keyframes toastOut{to{opacity:0;transform:translateX(40px)}}

.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn .2s ease}
.modal-overlay.hidden{display:none}
.modal-content{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:520px;width:100%;max-height:80dvh;overflow-y:auto;padding:24px;animation:modalIn .25s ease-out}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes modalIn{from{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}
.modal-title{font-size:18px;font-weight:700;margin-bottom:16px}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}

.spinner{width:20px;height:20px;border:2.5px solid var(--outline);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;color:var(--on-surface-variant)}
.empty-state .material-icons-round{font-size:56px;margin-bottom:12px;opacity:.4}.empty-state p{font-size:15px;max-width:280px;line-height:1.5}

.streaming-cursor::after{content:'▊';animation:blink .8s step-end infinite;color:var(--primary)}
@keyframes blink{50%{opacity:0}}

/* ═══ Page Transitions ═══ */
.page-container{transition:opacity .18s ease,transform .18s ease}
.page-exit{opacity:0;transform:scale(.97)}
.page-enter{animation:pageEnter .3s ease-out}
@keyframes pageEnter{from{opacity:0;transform:scale(.97) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}
[data-transition="zoom_through"] .page-enter{animation-name:zoomEnter}
@keyframes zoomEnter{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}
[data-transition="flip_slide"] .page-enter{animation-name:flipEnter}
@keyframes flipEnter{from{opacity:0;transform:translateX(60px)}to{opacity:1;transform:translateX(0)}}
[data-transition="cascade"] .page-enter{animation-name:cascadeEnter}
@keyframes cascadeEnter{from{opacity:0;transform:translateY(-40px) scale(.88)}to{opacity:1;transform:translateY(0) scale(1)}}
[data-transition="warp"] .page-enter{animation-name:warpEnter}
@keyframes warpEnter{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}

/* ═══ Utility ═══ */
.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}
.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}
.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}
.text-sm{font-size:13px}.text-muted{color:var(--on-surface-variant)}.text-center{text-align:center}.text-primary{color:var(--primary)}
.font-medium{font-weight:500}.font-semibold{font-weight:600}.hidden{display:none !important}.w-full{width:100%}
