:root{--bg:#f8fafc;--surface:#ffffff;--surface-subtle:#f1f5f9;--surface-soft:#e2e8f0;--line:#e2e8f0;--line-strong:#cbd5e1;--text:#0f172a;--text-muted:#64748b;--text-on-accent:#ffffff;--primary:#3b82f6;--primary-hover:#2563eb;--accent-sky:#0ea5e9;--accent-sky-bg:#e0f2fe;--accent-amber:#f59e0b;--accent-amber-bg:#fef3c7;--accent-violet:#8b5cf6;--accent-violet-bg:#ede9fe;--accent-emerald:#10b981;--accent-emerald-bg:#d1fae5;--accent-red:#ef4444;--accent-red-bg:#fee2e2;--gradient-primary:linear-gradient(135deg,#3b82f6,#8b5cf6);--gradient-surface:linear-gradient(180deg,rgba(255,255,255,0.9),rgba(255,255,255,0.4));--font-sans:"Inter","Pretendard",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-mono:"JetBrains Mono","Fira Code",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--radius-sm:0.5rem;--radius-md:0.75rem;--radius-lg:1rem;--radius-full:9999px;--shadow-sm:0 1px 3px 0 rgba(15,23,42,0.05);--shadow-md:0 4px 6px -1px rgba(15,23,42,0.05),0 2px 4px -2px rgba(15,23,42,0.05);--shadow-lg:0 10px 15px -3px rgba(15,23,42,0.08),0 4px 6px -4px rgba(15,23,42,0.04);--max-width:1100px}*{box-sizing:border-box;margin:0;padding:0}body,html{background-color:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit;background:none;border:none}.container{max-width:var(--max-width);margin:0 auto;padding:0 1rem}@media (min-width:768px){.container{padding:0 1.5rem}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);transition:box-shadow .2s,transform .2s}.card:hover{box-shadow:var(--shadow-md)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;font-weight:600;border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease;gap:.5rem;min-height:44px}.btn-primary{background:var(--gradient-primary);color:var(--text-on-accent);border:none;box-shadow:0 2px 4px rgba(59,130,246,.25)}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 8px rgba(59,130,246,.35)}.btn-secondary{background:var(--surface);border:1px solid var(--line-strong);color:var(--text)}.btn-secondary:hover:not(:disabled){background:var(--surface-subtle);border-color:var(--text-muted)}.btn-ghost{background:transparent;color:var(--text-muted)}.btn-ghost:hover:not(:disabled){background:var(--surface-soft);color:var(--text)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.input{width:100%;padding:.75rem 1rem;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius-md);transition:border-color .2s,box-shadow .2s;min-height:44px}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(59,146,246,.15)}.badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:var(--radius-full);font-size:.75rem;font-weight:700;gap:.25rem}.app-shell{display:flex;flex-direction:column;min-height:100vh;padding-bottom:70px}@media (min-width:768px){.app-shell{padding-bottom:0}}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:70px;background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-around;z-index:1000;padding:0 .5rem}@media (min-width:768px){.bottom-nav{display:none}}.nav-item{display:flex;flex-direction:column;align-items:center;gap:.25rem;color:var(--text-muted);cursor:pointer;transition:all .2s ease;flex:1 1;padding:.5rem 0}.nav-item.active{color:var(--primary)}.nav-item span{font-size:.7rem;font-weight:600}.fab{position:fixed;bottom:85px;right:1.5rem;width:56px;height:56px;border-radius:var(--radius-full);background:var(--gradient-primary);color:white;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);z-index:900;cursor:pointer;transition:transform .2s}.fab:hover{transform:scale(1.05)}@media (min-width:768px){.fab{display:none}}.header{height:64px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 1rem;position:-webkit-sticky;position:sticky;top:0;background:var(--surface);z-index:100;box-shadow:var(--shadow-sm)}@media (min-width:768px){.header{padding:0 1.5rem}}.main{flex:1 1;padding:1.5rem 0}@media (min-width:768px){.main{padding:2rem 0}}.hidden-mobile{display:none!important}@media (min-width:768px){.hidden-mobile{display:flex!important}.hidden-desktop{display:none!important}}@media (max-width:767px){.flex-desktop{display:none!important}}@media (min-width:768px){.flex-desktop{display:flex!important}.block-desktop{display:block!important}}.title-lg{font-size:1.75rem;font-weight:800;letter-spacing:-.025em}.title-md{font-size:1.25rem;font-weight:700;letter-spacing:-.015em}.title-sm{font-size:1rem;font-weight:700}.text-muted{color:var(--text-muted)}.text-sm{font-size:.875rem}@media (min-width:768px){.title-lg{font-size:2rem}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:fadeIn .4s cubic-bezier(.16,1,.3,1) forwards}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,23,42,.4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:999;padding:1rem}.modal-content{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:500px;max-height:80vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);overflow:hidden;animation:fadeIn .3s cubic-bezier(.16,1,.3,1) forwards}.dashboard-grid{display:grid;grid-template-columns:1fr;grid-gap:1.5rem;gap:1.5rem;align-items:start}@media (min-width:900px){.dashboard-grid{grid-template-columns:1fr 380px;gap:2rem}}.chat-stream-container{flex:1 1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1.25rem;overflow-anchor:auto;scroll-behavior:smooth}@media (min-width:768px){.chat-stream-container{padding:1.5rem}}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}