@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-main:#020617;--bg-card:#0f172a;--bg-card-hover:#16162a;--bg-elevated:#1a1a2e;--bg-sidebar:#0d0d1a;--surface:#0f172a;--surface-2:#1e293b;--border:#ffffff0f;--border-hover:#ffffff1f;--border-light:#ffffff14;--border-accent:#6c63ff40;--glass-bg:#ffffff0b;--glass-bg-hover:#ffffff12;--glass-border:#ffffff17;--glass-blur:14px;--shadow-card:0 4px 24px #0006;--shadow-glow:0 0 20px #6c63ff26;--ambient:radial-gradient(900px 520px at 88% -8%, #6c63ff29, transparent 60%), radial-gradient(700px 460px at 0% 112%, #00d4aa17, transparent 55%);--accent:#6c63ff;--accent-light:#a78bfa;--accent-hover:#5a52e0;--accent-dim:#6c63ff1a;--accent-green:#00d4aa;--accent-green-dim:#00d4aa1a;--accent-amber:#f59e0b;--accent-red:#ef4444;--gradient-brand:linear-gradient(135deg, #6c63ff 0%, #a855f7 100%);--gradient-btn:linear-gradient(135deg, #6c63ff 0%, #a855f7 100%);--gradient-card:linear-gradient(135deg, #6c63ff26 0%, #a855f70d 100%);--gradient-progress:linear-gradient(90deg, #6c63ff 0%, #00d4aa 100%);--gradient-glow:linear-gradient(135deg, #6c63ff1f 0%, #00d4aa0d 100%);--success:#00d4aa;--success-dim:#00d4aa1a;--warning:#f59e0b;--warning-dim:#f59e0b1a;--error:#ef4444;--danger:#ef4444;--error-dim:#ef44441a;--text-primary:#fff;--text-secondary:#a1a1aa;--text-muted:#6b7280;--radius-sm:8px;--radius:12px;--radius-lg:16px;--radius-xl:20px;--shadow-sm:0 1px 4px #00000080;--shadow:0 4px 24px #0006;--shadow-lg:0 12px 48px #0009;--shadow-accent:0 4px 20px #6c63ff59;--shadow-btn:0 4px 15px #6c63ff66;--transition:.14s ease;--transition-slow:.28s ease;--font-display:"Sora", "Inter", system-ui, sans-serif;--font-body:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-body);background-color:var(--bg-main);color:var(--text-primary);min-height:100vh;line-height:1.55}h1,h2,h3{font-family:var(--font-display)}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{color:var(--text-primary);letter-spacing:-.01em;font-weight:700;line-height:1.25}p{color:var(--text-secondary)}a{color:var(--accent-light);transition:color var(--transition);text-decoration:none}a:hover{color:var(--text-primary)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-main)}::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}:focus-visible{outline:2px solid var(--accent-light);outline-offset:2px}.sr-only{clip:rect(0,0,0,0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{border-radius:var(--radius);cursor:pointer;transition:background var(--transition), border-color var(--transition), opacity var(--transition), color var(--transition), box-shadow var(--transition);white-space:nowrap;border:1px solid #0000;align-items:center;gap:7px;padding:8px 16px;font-family:inherit;font-size:14px;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--gradient-brand);color:#fff;box-shadow:var(--shadow-accent);border-color:#0000}.btn-primary:hover{opacity:.88;transform:translateY(-1px);box-shadow:0 4px 24px #6366f166}.btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border-color:var(--border-light)}.btn-secondary:hover{background:var(--border-light)}.btn-ghost{color:var(--text-secondary);background:0 0;border-color:#0000}.btn-ghost:hover{color:var(--text-primary);background:var(--bg-elevated)}.btn-danger{background:var(--error-dim);color:var(--error);border-color:#e8534b33}.btn-danger:hover{background:var(--error);color:#fff;border-color:var(--error)}.btn-success{background:var(--success-dim);color:var(--success);border-color:#1db87e33}.btn-success:hover{background:var(--success);color:#fff;border-color:var(--success)}.btn-sm{gap:5px;padding:5px 11px;font-size:12px}.btn-lg{padding:13px 26px;font-size:15px}.input,.textarea{background:var(--bg-elevated);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-primary);width:100%;transition:border-color var(--transition), box-shadow var(--transition);padding:10px 14px;font-family:inherit;font-size:14px}.input:focus,.textarea:focus{border-color:var(--accent-light);outline:none;box-shadow:0 0 0 3px #5b52c826}.input::placeholder,.textarea::placeholder{color:var(--text-muted)}.textarea{resize:vertical;min-height:100px}.label{color:var(--text-secondary);letter-spacing:.01em;margin-bottom:5px;font-size:13px;font-weight:600;display:block}.form-group{flex-direction:column;gap:4px;display:flex}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px}.badge{letter-spacing:.03em;text-transform:uppercase;border-radius:999px;align-items:center;gap:4px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-flex}.badge-accent{background:var(--accent-dim);color:var(--accent-light)}.badge-success{background:var(--success-dim);color:var(--success)}.badge-warning{background:var(--warning-dim);color:var(--warning)}.badge-info{background:var(--info-dim);color:var(--info)}.badge-error{background:var(--error-dim);color:var(--error)}.badge-muted{background:var(--bg-elevated);color:var(--text-secondary)}.progress-bar{background:var(--border);border-radius:999px;height:6px;overflow:hidden}.progress-bar-fill{background:var(--accent);height:100%;transition:width var(--transition-slow);border-radius:999px}.spinner{border:2px solid var(--border-light);border-top-color:var(--accent-light);border-radius:50%;flex-shrink:0;width:20px;height:20px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-screen{min-height:100vh;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.avatar{background:var(--accent);color:#fff;letter-spacing:.04em;text-transform:uppercase;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:13px;font-weight:700;display:flex}.avatar-lg{width:48px;height:48px;font-size:16px}.avatar-sm{width:28px;height:28px;font-size:11px}.markdown h1,.markdown h2,.markdown h3{color:var(--text-primary);margin-top:20px;margin-bottom:8px}.markdown h1:first-child,.markdown h2:first-child,.markdown h3:first-child{margin-top:0}.markdown h1{font-size:1.4rem}.markdown h2{font-size:1.2rem}.markdown h3{font-size:1rem}.markdown p{color:var(--text-secondary);margin-bottom:12px}.markdown ul,.markdown ol{margin-bottom:12px;padding-left:20px}.markdown li{color:var(--text-secondary);margin-bottom:4px}.markdown strong{color:var(--text-primary);font-weight:600}.markdown em{font-style:italic}.markdown code{background:var(--bg-elevated);border:1px solid var(--border);color:var(--accent-light);border-radius:4px;padding:1px 5px;font-family:monospace;font-size:.9em}.markdown blockquote{border-left:3px solid var(--accent);color:var(--text-secondary);margin:12px 0;padding-left:12px;font-style:italic}.empty-state{color:var(--text-secondary);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:64px 24px;display:flex}.empty-state svg{color:var(--text-muted);opacity:.6}.empty-state h3{color:var(--text-primary);font-size:1.1rem}.empty-state p{max-width:360px;font-size:14px}.alert{border-radius:var(--radius);border:1px solid #0000;align-items:flex-start;gap:10px;padding:13px 16px;font-size:14px;line-height:1.5;display:flex}.alert-error{background:var(--error-dim);color:var(--error);border-color:#e8534b40}.alert-success{background:var(--success-dim);color:var(--success);border-color:#1db87e40}.alert-warning{background:var(--warning-dim);color:var(--warning);border-color:#f0a33040}.alert-info{background:var(--accent-dim);color:var(--accent-light);border-color:#5b52c840}.divider{background:var(--border);border:none;height:1px;margin:20px 0}.checkbox-label{cursor:pointer;color:var(--text-secondary);align-items:flex-start;gap:10px;font-size:14px;line-height:1.5;display:flex}.checkbox-label input[type=checkbox]{width:16px;min-width:16px;height:16px;accent-color:var(--accent);cursor:pointer;margin-top:3px}.overlay{z-index:100;background:#000000a6;justify-content:flex-end;align-items:flex-start;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.drawer{background:var(--bg-card);border-left:1px solid var(--border);flex-direction:column;gap:20px;width:480px;max-width:100%;height:100vh;padding:28px 24px;animation:.25s slideIn;display:flex;overflow-y:auto}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.status-locked{color:var(--text-muted)}.status-active{color:var(--accent-light)}.status-submitted{color:var(--warning)}.status-approved{color:var(--success)}.status-rejected{color:var(--error)}.ai-output-content{animation:.4s forwards outputReveal}@keyframes outputReveal{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.ai-output-content h1{color:#a78bfa;letter-spacing:-.5px;border-bottom:2px solid #7c6fff40;margin:24px 0 16px;padding-bottom:8px;font-size:22px;font-weight:700;line-height:1.3}.ai-output-content h1:first-child{margin-top:0}.ai-output-content h2{color:#7c6fff;margin:20px 0 10px;font-size:17px;font-weight:600;line-height:1.4}.ai-output-content h3{color:#a78bfa;opacity:.85;margin:16px 0 8px;font-size:15px;font-weight:600}:root{--bg:#0e1717;--card:#162323;--border:#25393a;--fg:#eaf4f0;--muted:#9fb8b4;--primary:#8d7cff;--secondary:#42d5c6;--success:#3fb873;--danger:#f2545b;--warning:#f5a84e;--gold:#f5a84e;--pink:#b98cff;--link:#42d5c6;--on-brand:#fff;--radius-card:.875rem;--radius-control:.625rem;--shadow-card:0 4px 16px #00000073;--gradient-brand:linear-gradient(135deg, #6356e6, #5b4fe0);--gradient-accent:linear-gradient(135deg, #42d5c6, #2ba7a0);--font-head:"Plus Jakarta Sans Variable", system-ui, -apple-system, sans-serif;--font-body:"Plus Jakarta Sans Variable", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--bg-main:var(--bg);--bg-card:var(--card);--bg-card-hover:color-mix(in srgb, var(--card) 88%, var(--fg));--bg-elevated:color-mix(in srgb, var(--card) 92%, var(--fg));--bg-sidebar:color-mix(in srgb, var(--bg) 84%, var(--card));--surface:var(--card);--surface-2:color-mix(in srgb, var(--card) 78%, var(--bg));--border-hover:color-mix(in srgb, var(--border) 50%, var(--fg));--border-light:var(--border);--border-accent:color-mix(in srgb, var(--primary) 34%, transparent);--accent:var(--primary);--accent-light:color-mix(in srgb, var(--primary) 72%, var(--fg));--accent-hover:color-mix(in srgb, var(--primary) 82%, #000);--accent-dim:color-mix(in srgb, var(--primary) 14%, transparent);--accent-green:var(--success);--accent-green-dim:color-mix(in srgb, var(--success) 12%, transparent);--accent-amber:var(--warning);--accent-yellow:var(--warning);--accent-red:var(--danger);--gradient-btn:var(--gradient-brand);--gradient-progress:var(--gradient-accent);--gradient-ocean:var(--gradient-accent);--gradient-sunset:var(--gradient-brand);--on-sunset:var(--on-brand);--gradient-card:linear-gradient(135deg, color-mix(in srgb, var(--primary) 14%, transparent), color-mix(in srgb, var(--secondary) 6%, transparent));--gradient-glow:linear-gradient(135deg, color-mix(in srgb, var(--primary) 12%, transparent), color-mix(in srgb, var(--secondary) 5%, transparent));--info:#4ea8de;--success-dim:color-mix(in srgb, var(--success) 12%, transparent);--warning-dim:color-mix(in srgb, var(--warning) 12%, transparent);--info-dim:color-mix(in srgb, var(--info) 12%, transparent);--error:var(--danger);--error-dim:color-mix(in srgb, var(--danger) 12%, transparent);--text-primary:var(--fg);--text-secondary:var(--muted);--text-muted:color-mix(in srgb, var(--muted) 75%, var(--bg));--radius-sm:var(--radius-control);--radius:var(--radius-card);--radius-lg:var(--radius-card);--radius-xl:1.25rem;--shadow-sm:0 1px 4px #00000059;--shadow:var(--shadow-card);--shadow-lg:0 12px 40px #00000080;--shadow-accent:0 4px 20px color-mix(in srgb, var(--primary) 35%, transparent);--shadow-btn:0 6px 18px color-mix(in srgb, var(--primary) 42%, transparent);--shadow-glow:0 18px 50px color-mix(in srgb, var(--primary) 26%, transparent);--glass-bg:color-mix(in srgb, var(--card) 64%, transparent);--glass-bg-hover:color-mix(in srgb, var(--card) 80%, transparent);--glass-border:color-mix(in srgb, var(--fg) 9%, transparent);--glass-blur:14px;--ambient:radial-gradient(900px 520px at 88% -8%, color-mix(in srgb, var(--primary) 15%, transparent), transparent 60%), radial-gradient(700px 460px at 0% 112%, color-mix(in srgb, var(--secondary) 11%, transparent), transparent 55%);--transition:.14s ease;--transition-slow:.28s ease;--font-display:var(--font-head)}[data-theme=light]{--bg:#f5f7fa;--card:#fff;--border:#e2e8ee;--fg:#15201e;--muted:#586a67;--primary:#5b4fe0;--secondary:#0e9e8e;--success:#1a7e48;--danger:#c72222;--warning:#b26c12;--info:#1d6fd1;--gold:#b26c12;--pink:#6b4fd6;--link:#0a7064;--shadow-card:0 4px 14px #141e281a}.toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;top:68px;right:24px}.toast{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-card);box-shadow:var(--shadow-lg);color:var(--text-primary);pointer-events:all;align-items:center;gap:10px;min-width:260px;max-width:380px;padding:11px 14px;font-size:13px;animation:.18s toast-in;display:flex}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast--success{background:#1d9e7514;border-color:#1d9e7566}.toast--success .toast-icon{color:var(--success)}.toast--error{background:#e2524a14;border-color:#e2524a66}.toast--error .toast-icon{color:var(--error)}.toast--info .toast-icon{color:var(--info)}.toast-icon{flex-shrink:0;display:flex}.toast-message{flex:1;line-height:1.4}.toast-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;flex-shrink:0;padding:2px;display:flex}.toast-close:hover{color:var(--text-primary)}.notif-permission-banner{background:var(--bg-card);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-lg);color:var(--text-secondary);z-index:200;max-width:380px;box-shadow:var(--shadow);align-items:center;gap:10px;padding:10px 14px;font-size:13px;animation:.25s slideIn;display:flex;position:fixed;bottom:80px;right:20px}
