/* ═══ CSS Custom Properties ═══ */
:root, [data-theme="light"] {
  --surface: #FFFFFF; --surface-dim: #F9FAFB; --surface-container: #F3F4F6;
  --surface-container-high: #E5E7EB; --surface-variant: #E5E7EB;
  --background: #F0F2F5; --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 3px rgba(0,0,0,0.04),0 1px 2px rgba(0,0,0,0.03);
  --shadow-md: 0 4px 12px -2px rgba(0,0,0,0.08),0 2px 6px -1px rgba(0,0,0,0.04);
  --shadow-lg: 0 12px 28px -6px rgba(0,0,0,0.12),0 4px 10px -2px rgba(0,0,0,0.06);
  --shadow-glow: 0 0 20px -4px;
  --glass-bg: rgba(255,255,255,.72);
  --glass-border: rgba(255,255,255,.5);
}
[data-theme="dark"] {
  --surface: #1a2030; --surface-dim: #111827; --surface-container: #1e2536;
  --surface-container-high: #2a3346; --surface-variant: #2a3346;
  --background: #0f1420; --on-surface: #F1F5F9; --on-surface-variant: #94A3B8;
  --outline: #3B4559; --outline-variant: #2a3346;
  --error: #F87171; --error-container: #7F1D1D; --on-error: #7F1D1D;
  --success: #4ADE80; --success-container: #14532D;
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.3),0 1px 2px rgba(0,0,0,0.2);
  --shadow-md: 0 4px 12px -2px rgba(0,0,0,0.45),0 2px 6px -1px rgba(0,0,0,0.3);
  --shadow-lg: 0 12px 28px -6px rgba(0,0,0,0.6),0 4px 10px -2px rgba(0,0,0,0.4);
  --glass-bg: rgba(26,32,48,.78);
  --glass-border: rgba(255,255,255,.06);
}

/* ─ 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:10px; --radius-md:14px; --radius-lg:18px; --radius-xl:26px;
  --sidebar-width:256px; --bottom-nav-height:68px;
  --font-sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  --transition-fast:180ms cubic-bezier(.4,0,.2,1); --transition-normal:280ms cubic-bezier(.4,0,.2,1);
  --transition-spring:350ms cubic-bezier(.34,1.56,.64,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%;scroll-behavior:smooth}
body{background:var(--background);color:var(--on-surface);min-height:100dvh;overflow:hidden;overscroll-behavior:contain}
#app{display:flex;height:100dvh;width:100%}
::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--primary) 35%,var(--outline) 65%);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}

/* ═══ Sidebar ═══ */
.sidebar{display:none;flex-direction:column;width:var(--sidebar-width);min-width:var(--sidebar-width);
  background:var(--glass-bg);backdrop-filter:blur(24px) saturate(1.6);-webkit-backdrop-filter:blur(24px) saturate(1.6);
  border-right:1px solid var(--glass-border);padding:20px 14px;z-index:10;position:relative;overflow:hidden}
.sidebar::before{content:'';position:absolute;top:0;left:0;right:0;height:180px;
  background:linear-gradient(135deg,var(--primary) 0%,var(--primary-light) 100%);opacity:.09;pointer-events:none}
.sidebar::after{content:'';position:absolute;bottom:0;left:0;right:0;height:120px;
  background:radial-gradient(ellipse at 50% 100%,color-mix(in srgb,var(--primary) 8%,transparent) 0%,transparent 70%);pointer-events:none}
.sidebar-header{display:flex;align-items:center;gap:12px;padding:8px 14px 24px;position:relative}
.sidebar-logo{color:var(--primary);font-size:30px;filter:drop-shadow(0 2px 4px rgba(79,70,229,.25))}
.sidebar-title{font-size:18px;font-weight:800;letter-spacing:-.4px;background:linear-gradient(135deg,var(--primary),var(--primary-light));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:4px;position:relative}
.sidebar-nav-item{display:flex;align-items:center;gap:12px;padding:11px 16px;border-radius:var(--radius-md);cursor:pointer;
  transition:all var(--transition-fast);color:var(--on-surface-variant);font-size:14px;font-weight:500;border:none;background:none;width:100%;text-align:left;position:relative}
.sidebar-nav-item:hover{background:var(--surface-container);transform:translateX(2px)}
.sidebar-nav-item.active{background:linear-gradient(135deg,var(--primary-container),rgba(255,255,255,.3));color:var(--on-primary-container);font-weight:600;box-shadow:inset 3px 0 0 var(--primary)}
.sidebar-nav-item.active .material-icons-round{color:var(--primary)}.sidebar-nav-item .material-icons-round{font-size:22px;transition:color var(--transition-fast)}
.sidebar-footer{padding-top:14px;border-top:1px solid var(--outline-variant);display:flex;justify-content:center}
.theme-toggle-btn{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:50%;border:none;
  background:var(--surface-container);color:var(--on-surface-variant);cursor:pointer;transition:all var(--transition-fast)}
.theme-toggle-btn:hover{background:var(--surface-container-high);transform:rotate(15deg)}

/* ═══ Main ═══ */
.main-content{flex:1;min-width:0;display:flex;flex-direction:column;height:100dvh;overflow:hidden;position:relative;
  background:radial-gradient(ellipse at 20% 0%,color-mix(in srgb,var(--primary) 5%,transparent) 0%,transparent 50%),
             radial-gradient(ellipse at 80% 100%,color-mix(in srgb,var(--secondary,var(--primary-light)) 4%,transparent) 0%,transparent 50%),
             var(--background)}
.page-container{flex:1;overflow-y:auto;overflow-x:hidden;padding:28px;padding-bottom:calc(var(--bottom-nav-height) + 28px);
  scroll-behavior:smooth;overscroll-behavior:contain}

/* ═══ Bottom Nav ═══ */
.bottom-nav{display:flex;align-items:center;justify-content:space-around;height:var(--bottom-nav-height);
  background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);
  border-top:1px solid var(--glass-border);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:3px;padding:8px 14px;border-radius:var(--radius-md);
  cursor:pointer;border:none;background:none;color:var(--on-surface-variant);min-width:52px;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent}
.bottom-nav-item .material-icons-round{font-size:24px;transition:transform var(--transition-spring)}.bottom-nav-item span:last-child{font-size:10px;font-weight:600}
.bottom-nav-item.active{color:var(--primary);background:color-mix(in srgb,var(--primary) 8%,transparent);border-radius:var(--radius-md)}
.bottom-nav-item.active .material-icons-round{color:var(--primary);transform:scale(1.12)}
.bottom-nav-item:active{transform:scale(.92)}

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

/* ═══ Page Header ═══ */
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;gap:12px;
  padding-bottom:16px;border-bottom:1px solid color-mix(in srgb,var(--primary) 12%,var(--outline-variant) 88%);position:relative}
.page-header::after{content:'';position:absolute;bottom:-1px;left:0;width:60px;height:2px;
  background:linear-gradient(90deg,var(--primary),var(--primary-light));border-radius:1px}
.page-header h1{font-size:26px;font-weight:800;letter-spacing:-.5px;
  background:linear-gradient(135deg,var(--primary),var(--on-surface));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.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:22px;margin-bottom:18px;
  transition:box-shadow var(--transition-normal),transform var(--transition-normal),border-color var(--transition-normal);position:relative;overflow:hidden}
.card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,var(--primary),var(--primary-light),transparent);opacity:.6;transition:opacity var(--transition-normal)}
.card:hover{box-shadow:var(--shadow-md),0 0 0 1px color-mix(in srgb,var(--primary) 10%,transparent);transform:translateY(-1px);border-color:color-mix(in srgb,var(--primary) 20%,var(--outline-variant) 80%)}
.card:hover::before{opacity:1}
.card-title{font-size:15px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:8px;letter-spacing:-.2px}
.card-title .material-icons-round{font-size:20px;color:var(--primary)}

/* ═══ Forms ═══ */
.form-group{margin-bottom:18px}
.form-label{display:block;font-size:12px;font-weight:600;color:var(--on-surface-variant);margin-bottom:7px;letter-spacing:.3px;text-transform:uppercase}
.input,.textarea,.select{width:100%;padding:11px 16px;font-size:14px;font-family:var(--font-sans);
  background:var(--surface-container);border:1.5px solid var(--outline-variant);border-radius:var(--radius-sm);
  color:var(--on-surface);outline:none;transition:all var(--transition-fast)}
.input:focus,.textarea:focus,.select:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 12%,transparent);background:var(--surface)}
.input::placeholder,.textarea::placeholder{color:var(--on-surface-variant);opacity:.6}
.textarea{resize:vertical;min-height:100px;line-height:1.65}
.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 14px center;padding-right:38px;cursor:pointer}

/* ═══ Buttons ═══ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 22px;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;position:relative;overflow:hidden}
.btn .material-icons-round{font-size:18px}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none !important}
.btn:active:not(:disabled){transform:scale(.96)}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-light));color:var(--on-primary);
  box-shadow:0 2px 8px -2px var(--primary)}
.btn-primary:hover:not(:disabled){box-shadow:0 4px 16px -3px var(--primary);filter:brightness(1.08)}
.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);border-color:var(--primary)}
.btn-text{background:none;color:var(--primary);padding:8px 14px;border-radius:var(--radius-sm)}
.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:all var(--transition-fast);min-width:40px;min-height:40px}
.btn-icon:hover{background:var(--surface-container);color:var(--primary)}
.btn-sm{padding:7px 16px;font-size:13px}.btn-block{width:100%}
.btn-danger{background:linear-gradient(135deg,var(--error),#ef4444);color:var(--on-error);box-shadow:0 2px 8px -2px var(--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:16px 0;display:flex;flex-direction:column;gap:18px}
.chat-msg{display:flex;gap:10px;max-width:85%;animation:msgIn .3s ease-out}
@keyframes msgIn{from{opacity:0;transform:translateY(12px)}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:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px}
.chat-msg.user .chat-msg-avatar{background:linear-gradient(135deg,var(--primary),var(--primary-light));color:var(--on-primary);box-shadow:0 2px 8px -2px var(--primary)}
.chat-msg.assistant .chat-msg-avatar{background:var(--secondary-container);color:var(--on-primary-container)}
.chat-msg-bubble{padding:12px 16px;border-radius:var(--radius-md);font-size:14px;line-height:1.7;word-break:break-word;position:relative}
.chat-msg.user .chat-msg-bubble{background:linear-gradient(135deg,var(--primary),var(--primary-light));color:var(--on-primary);border-bottom-right-radius:4px;box-shadow:0 2px 8px -2px var(--primary)}
.chat-msg.assistant .chat-msg-bubble{background:var(--surface-container);color:var(--on-surface);border-bottom-left-radius:4px;border:1px solid var(--outline-variant)}
.chat-msg-bubble pre{background:var(--surface-dim);border-radius:var(--radius-sm);padding:12px 14px;overflow-x:auto;font-size:13px;margin:8px 0;border:1px solid var(--outline-variant)}
.chat-msg-bubble code{font-family:'Menlo','Consolas',monospace;font-size:.88em}
.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:8px}
.chat-thinking-details summary{font-size:12px;color:var(--primary);cursor:pointer;font-weight:700;padding:4px 0}
.chat-thinking{font-size:13px;color:var(--on-surface-variant);font-style:italic;padding:8px 12px;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:6px 10px;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:all var(--transition-fast)}.chat-msg-image:hover{opacity:.85;transform:scale(1.02)}
.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:14px 0 4px;border-top:1px solid var(--outline-variant);background:var(--background)}
.chat-input-bar .textarea{min-height:46px;max-height:150px;padding:11px 16px;resize:none;border-radius:var(--radius-lg)}
.chat-send-btn{width:46px;height:46px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-light));
  color:var(--on-primary);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;
  transition:all var(--transition-fast);box-shadow:0 2px 10px -2px var(--primary)}
.chat-send-btn:hover:not(:disabled){box-shadow:0 4px 18px -3px var(--primary);transform:scale(1.06)}

.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:10px}.translate-lang-bar .select{flex:1}
.swap-btn{width:42px;height:42px;border-radius:50%;background:linear-gradient(135deg,var(--primary-container),rgba(255,255,255,.4));
  color:var(--primary);border:1.5px solid var(--primary-container);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;
  transition:all var(--transition-spring)}
.swap-btn:hover{background:var(--primary);color:var(--on-primary);transform:rotate(180deg);box-shadow:0 2px 12px -2px var(--primary)}

/* ═══ Voice ═══ */
.voice-visualizer{height:88px;background:linear-gradient(135deg,var(--surface-container),var(--surface-variant));
  border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--outline-variant)}
.voice-bars{display:flex;align-items:center;gap:3px;height:64px}
.voice-bar{width:4px;background:linear-gradient(to top,var(--primary),var(--primary-light));border-radius:2px;transition:height .08s ease;height:8px}
.voice-record-btn{width:76px;height:76px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-light));
  color:var(--on-primary);border:4px solid var(--primary-container);cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:all var(--transition-spring);box-shadow:0 4px 20px -4px var(--primary);-webkit-tap-highlight-color:transparent}
.voice-record-btn:hover{transform:scale(1.08)}
.voice-record-btn:active{transform:scale(.95)}
.voice-record-btn.recording{background:linear-gradient(135deg,var(--error),#ef4444);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 18px rgba(220,38,38,0)}}
.voice-record-btn .material-icons-round{font-size:34px}
.transcript-area{min-height:120px;background:var(--surface-container);border-radius:var(--radius-md);padding:18px;
  font-size:15px;line-height:1.7;color:var(--on-surface);border:1.5px solid var(--outline-variant);white-space:pre-wrap;
  transition:border-color var(--transition-fast)}
.transcript-area:hover{border-color:var(--outline)}
.transcript-area.empty{color:var(--on-surface-variant);font-style:italic}

/* ═══ Settings ═══ */
.settings-item{display:flex;align-items:center;justify-content:space-between;padding:15px 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:600}.settings-item-desc{font-size:12px;color:var(--on-surface-variant);margin-top:3px;line-height:1.5}
.toggle{position:relative;width:50px;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-spring);box-shadow:var(--shadow-sm)}
.toggle input:checked+.toggle-slider{background:linear-gradient(135deg,var(--primary),var(--primary-light))}.toggle input:checked+.toggle-slider::before{transform:translateX(22px)}

.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);transform:scale(1.03)}
.color-preset-btn.active{border-color:var(--primary);background:var(--primary-container);box-shadow:0 0 0 2px var(--primary-container)}
.color-swatch{width:30px;height:30px;border-radius:50%;border:2px solid rgba(0,0,0,.08);box-shadow:var(--shadow-sm)}

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

/* ═══ Folder & History ═══ */
.folder-bar{display:flex;gap:6px;flex-wrap:wrap;padding:6px 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:3px 10px;font-size:11px;font-weight:700;border-radius:12px;
  background:var(--primary-container);color:var(--on-primary-container);letter-spacing:.2px}
.chip{display:inline-flex;align-items:center;gap:4px;padding:5px 14px;font-size:13px;font-weight:500;border-radius:18px;
  background:var(--surface-container);color:var(--on-surface);border:1.5px solid var(--outline);cursor:pointer;transition:all var(--transition-fast)}
.chip:hover{background:var(--surface-container-high);border-color:var(--primary)}
.chip.active{background:linear-gradient(135deg,var(--primary-container),rgba(255,255,255,.2));color:var(--on-primary-container);border-color:var(--primary);font-weight:600}

.toast-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:10px;pointer-events:none}
.toast{display:flex;align-items:center;gap:10px;padding:13px 20px;
  background:var(--glass-bg);backdrop-filter:blur(16px) saturate(1.5);-webkit-backdrop-filter:blur(16px) saturate(1.5);
  border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);
  font-size:14px;font-weight:500;color:var(--on-surface);pointer-events:auto;animation:toastIn .35s ease-out;max-width:380px;
  border-left:3px solid var(--primary)}
.toast.leaving{animation:toastOut .25s ease-in forwards}
.toast .material-icons-round{font-size:20px}
.toast.success{border-left-color:var(--success)}.toast.error{border-left-color:var(--error)}.toast.info{border-left-color:var(--primary)}.toast.warning{border-left-color:#F59E0B}
.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) scale(.9)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes toastOut{to{opacity:0;transform:translateX(40px) scale(.9)}}

.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;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:28px;animation:modalIn .3s var(--transition-spring)}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes modalIn{from{opacity:0;transform:scale(.92) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}
.modal-title{font-size:19px;font-weight:800;margin-bottom:18px;letter-spacing:-.3px;
  background:linear-gradient(135deg,var(--primary),var(--on-surface));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}

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

.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 24px;text-align:center;color:var(--on-surface-variant);
  background:radial-gradient(ellipse at center,color-mix(in srgb,var(--primary) 4%,transparent) 0%,transparent 60%);border-radius:var(--radius-lg)}
.empty-state .material-icons-round{font-size:64px;margin-bottom:16px;
  background:linear-gradient(135deg,var(--primary),var(--primary-light));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;opacity:.5}
.empty-state p{font-size:15px;max-width:320px;line-height:1.6}

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

/* ═══ Settings Grid (desktop dual-column) ═══ */
@media(min-width:769px){
  .settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;align-items:start}
  .settings-grid>.card{margin-bottom:18px}
  .settings-grid>.card-full{grid-column:1/-1}
}

/* ═══ Screen Capture ═══ */
.capture-container{display:flex;flex-direction:column;gap:16px}
.capture-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.capture-preview{position:relative;border-radius:var(--radius-md);overflow:hidden;border:1.5px solid var(--outline-variant);
  background:var(--surface-container);min-height:200px;display:flex;align-items:center;justify-content:center}
.capture-preview img{max-width:100%;max-height:55vh;object-fit:contain;display:block}
.capture-preview.empty{color:var(--on-surface-variant);flex-direction:column;gap:12px;padding:40px}
.capture-preview.empty .material-icons-round{font-size:48px;opacity:.3;
  background:linear-gradient(135deg,var(--primary),var(--primary-light));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.capture-result{background:var(--surface);border:1px solid var(--outline-variant);border-radius:var(--radius-lg);padding:20px;
  font-size:14px;line-height:1.75;color:var(--on-surface);white-space:pre-wrap;position:relative}
.capture-result::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,var(--primary),var(--primary-light),transparent)}
.capture-result-label{font-size:12px;font-weight:700;color:var(--primary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}
.capture-layout{display:grid;grid-template-columns:1fr;gap:16px}
@media(min-width:769px){.capture-layout{grid-template-columns:1fr 1fr}}
.capture-auto-bar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--surface-container);
  border-radius:var(--radius-md);border:1px solid var(--outline-variant);font-size:13px}
.capture-auto-bar .form-label{margin:0;text-transform:none;font-size:13px}

/* ═══ Page Transitions ═══ */
.page-container{transition:opacity .18s ease,transform .18s ease}
.page-exit{opacity:0;transform:scale(.97)}
.page-enter{animation:pageEnter .35s ease-out}
@keyframes pageEnter{from{opacity:0;transform:scale(.97) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}
[data-transition="zoom_through"] .page-enter{animation-name:zoomEnter}
@keyframes zoomEnter{from{opacity:0;transform:scale(.75)}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)}}

/* ═══ Mobile Optimizations ═══ */
@media(max-width:768px){
  .page-container{padding:16px 12px;padding-bottom:calc(var(--bottom-nav-height) + 16px)}
  .page-header{flex-wrap:wrap;gap:6px;margin-bottom:14px;padding-bottom:10px}
  .page-header h1{font-size:21px;width:auto}
  .page-header::after{width:40px}
  .page-header-actions{gap:2px}
  .card{padding:14px;margin-bottom:10px;border-radius:var(--radius-md)}
  .card::before{height:2px}
  .chat-msg{max-width:94%}
  .chat-input-bar{padding:8px 0 2px;gap:4px}
  .chat-input-bar .textarea{min-height:44px;padding:10px 12px;font-size:16px}
  .btn-icon{min-width:44px;min-height:44px}
  .modal-content{padding:20px;margin:0;max-height:90dvh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;
    position:fixed;bottom:0;left:0;right:0;max-width:100%;animation:modalSlideUp .3s ease-out}
  .toast-container{top:12px;right:12px;left:12px}
  .toast{max-width:100%;font-size:13px;padding:10px 14px}
  .form-label{font-size:11px}
  .input,.textarea,.select{padding:12px 14px;font-size:16px}
  .translate-lang-bar{flex-wrap:wrap}
  .color-preset-grid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:6px}
  .color-preset-btn{padding:6px 4px}
  .color-swatch{width:22px;height:22px}
  .bottom-nav{height:auto;min-height:56px;padding:4px 0;padding-bottom:calc(4px + env(safe-area-inset-bottom,0));gap:0}
  .bottom-nav-item{padding:4px 2px;min-width:0;flex:1;gap:2px}
  .bottom-nav-item .material-icons-round{font-size:22px}
  .bottom-nav-item span:last-child{font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:52px;line-height:1.2}
  .capture-layout{grid-template-columns:1fr}
  .capture-preview{min-height:160px}
  .capture-preview img{max-height:35vh}
  .capture-actions{flex-wrap:wrap}
  .capture-actions .btn{flex:1;min-width:0;justify-content:center;font-size:12px;padding:10px 8px}
  .capture-container .card{padding:12px}
  .settings-item{padding:10px 0;gap:6px}
  .settings-item-label{font-size:13px}
  .settings-item-desc{font-size:11px}
  .mob-action-row{flex-wrap:wrap;gap:2px}
  .mob-action-row .btn-icon{min-width:36px;min-height:36px;padding:4px}
  .mob-action-row .btn-icon .material-icons-round{font-size:18px}
  .voice-record-btn{width:64px;height:64px;border-width:3px}
  .voice-record-btn .material-icons-round{font-size:28px}
  .voice-visualizer{height:64px}
  .voice-bars{height:48px}
  .transcript-area{min-height:80px;padding:14px;font-size:14px}
  .swap-btn{width:38px;height:38px}
  .translate-panels .textarea{min-height:140px !important}
  .settings-grid{display:block}
}
@keyframes modalSlideUp{from{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}

@media(max-width:380px){
  .page-container{padding:10px 8px;padding-bottom:calc(var(--bottom-nav-height) + 10px)}
  .card{padding:12px;margin-bottom:8px}
  .bottom-nav-item .material-icons-round{font-size:20px}
  .bottom-nav-item span:last-child{font-size:8px;max-width:40px}
  .page-header h1{font-size:19px}
  .btn-sm{padding:6px 10px;font-size:11px}
  .capture-actions .btn{font-size:11px;padding:8px 6px}
  .badge{font-size:10px;padding:2px 7px}
}

/* ═══ Region Selector Overlay ═══ */
#region-overlay{position:fixed;inset:0;z-index:9999;cursor:crosshair;touch-action:none}
#region-overlay canvas{width:100%;height:100%;display:block}
.region-hint{position:absolute;top:16px;left:50%;transform:translateX(-50%);padding:8px 20px;
  background:rgba(0,0,0,.7);color:#fff;font-size:14px;font-weight:600;border-radius:20px;pointer-events:none;
  white-space:nowrap;backdrop-filter:blur(8px)}
.region-close{position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:50%;border:none;
  background:rgba(0,0,0,.6);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;
  z-index:10;-webkit-tap-highlight-color:transparent;backdrop-filter:blur(8px)}
.region-close:active{background:rgba(255,255,255,.3)}

/* ═══ Shortcut Input ═══ */
.shortcut-input{cursor:pointer !important;user-select:none;font-weight:600;letter-spacing:.3px;
  transition:all var(--transition-fast)}
.shortcut-input.recording{border-color:var(--primary) !important;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 20%,transparent) !important;
  animation:pulse-border 1s ease infinite}
@keyframes pulse-border{0%,100%{box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 20%,transparent)}50%{box-shadow:0 0 0 5px color-mix(in srgb,var(--primary) 10%,transparent)}}

/* ═══ 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%}
