:root{--white: #fafafa;--white-soft: #f5f5f7;--red: #ff3b30;--red-soft: #ff6b63;--yellow: #ffd60a;--yellow-soft: #ffec8b;--blue: #007aff;--blue-soft: #5ac8fa;--glass: rgba(255, 255, 255, .78);--glass-border: rgba(255, 255, 255, .55);--shadow-soft: 0 4px 24px rgba(0, 0, 0, .06);--glass-convex: 0 1px 0 rgba(255, 255, 255, .6) inset, 0 -1px 0 rgba(255, 255, 255, .25) inset, 0 4px 16px rgba(0, 0, 0, .08);--glass-convex-strong: 0 2px 0 rgba(255, 255, 255, .7) inset, 0 -1px 0 rgba(255, 255, 255, .2) inset, 0 6px 20px rgba(0, 0, 0, .1);--shadow-medium: 0 8px 32px rgba(0, 0, 0, .08);--shadow-glow-blue: 0 0 40px rgba(0, 122, 255, .12);--radius: 20px;--radius-sm: 14px;--radius-pill: 999px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ease-out-smooth: cubic-bezier(.22, 1, .36, 1);--ease-out-soft: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: cubic-bezier(.34, 1.2, .64, 1);--ease-bounce: cubic-bezier(.68, -.3, .265, 1.25);--duration-fast: .28s;--duration-normal: .5s;--duration-slow: .7s}@media(prefers-reduced-motion:reduce){:root{--duration-fast: .01s;--duration-normal: .01s;--duration-slow: .01s}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;font-family:var(--font);background:linear-gradient(165deg,var(--white) 0%,var(--white-soft) 42%,#fff8f2 72%,#f2f8ff 100%);color:#1d1d1f;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}button,input,textarea{font-family:inherit}a{color:var(--blue);text-decoration:none;transition:color var(--duration-fast) var(--ease-out-smooth),opacity var(--duration-fast) var(--ease-out-smooth)}a:hover{text-decoration:underline}.login-page{--parallax-x: 0;--parallax-y: 0;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;position:relative;overflow:hidden;background:#fff;animation:loginPageIn .8s var(--ease-out-soft) both}.login-pattern{position:absolute;inset:-40px;pointer-events:none;z-index:0}.login-pattern-back{background:linear-gradient(to right,rgba(0,0,0,.06) 1px,transparent 1px),linear-gradient(to bottom,rgba(0,0,0,.06) 1px,transparent 1px);background-size:22px 22px;opacity:.4;transform:translate3d(calc(var(--parallax-x) * 12px),calc(var(--parallax-y) * 10px),0);transition:transform .4s var(--ease-out-soft)}.login-pattern-front{background-image:radial-gradient(circle at 20% 28%,rgba(255,214,10,.9) 0,rgba(255,214,10,.9) 7px,transparent 9px),radial-gradient(circle at 68% 22%,rgba(0,122,255,.85) 0,rgba(0,122,255,.85) 6px,transparent 8px),radial-gradient(circle at 82% 72%,rgba(255,59,48,.9) 0,rgba(255,59,48,.9) 8px,transparent 10px),radial-gradient(circle at 30% 78%,rgba(0,122,255,.8) 0,rgba(0,122,255,.8) 6px,transparent 8px),linear-gradient(135deg,rgba(255,214,10,.18) 0 12%,transparent 12% 24%,rgba(0,122,255,.18) 24% 36%,transparent 36% 48%,rgba(255,59,48,.18) 48% 60%,transparent 60% 100%);opacity:.75;transform:translate3d(calc(var(--parallax-x) * -16px),calc(var(--parallax-y) * -12px),0);transition:transform .6s var(--ease-out-soft)}.login-pattern-tri{z-index:0}.login-pattern-tri:before,.login-pattern-tri:after{content:"";position:absolute;width:190px;height:190px;opacity:.18;clip-path:polygon(0 100%,100% 100%,0 0);transform:translate3d(calc(var(--parallax-x) * 14px),calc(var(--parallax-y) * 12px),0);transition:transform .6s var(--ease-out-soft)}.login-pattern-tri:before{background:linear-gradient(135deg,var(--blue),#0051d5);top:-40px;left:-60px}.login-pattern-tri:after{background:linear-gradient(135deg,var(--yellow),#ffb800);bottom:-70px;right:-40px;clip-path:polygon(0 0,100% 100%,100% 0)}.login-pattern-extra{opacity:.7;background-image:linear-gradient(90deg,#007affe6,#007affe6),linear-gradient(0deg,#007affe6,#007affe6),linear-gradient(90deg,#ffd60ae6,#ffd60ae6),linear-gradient(0deg,#ffd60ae6,#ffd60ae6),linear-gradient(90deg,#ff3b30e6,#ff3b30e6),linear-gradient(0deg,#ff3b30e6,#ff3b30e6),linear-gradient(135deg,#007affd9,#007affd9),linear-gradient(-135deg,#ffd60ad9,#ffd60ad9),linear-gradient(135deg,#ff3b30d9,#ff3b30d9);background-size:22px 3px,3px 22px,24px 3px,3px 24px,24px 3px,3px 24px,70px 4px,60px 4px,80px 4px;background-position:28% 32%,28% 32%,74% 42%,74% 42%,60% 78%,60% 78%,18% 62%,52% 18%,86% 52%;background-repeat:no-repeat;transform:translate3d(calc(var(--parallax-x) * 8px),calc(var(--parallax-y) * 6px),0);transition:transform .55s var(--ease-out-soft)}@keyframes loginPageIn{0%{opacity:0}to{opacity:1}}.login-card{width:100%;max-width:420px;background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--shadow-medium),0 0 0 1px #ffffff80 inset;padding:48px 44px;animation:loginCardIn .85s var(--ease-out-soft) .06s both;transition:box-shadow var(--duration-normal) var(--ease-out-smooth),transform var(--duration-normal) var(--ease-out-smooth);position:relative;z-index:1}@media(max-width:640px){.login-page{padding:16px}.login-card{max-width:100%;padding:32px 20px 24px}.login-brand-visual{height:80px}.login-face{width:80px;height:80px}.login-input{padding:12px 14px}.login-btn{padding:14px 20px}}.login-card:hover{box-shadow:0 12px 40px #00000014,0 0 0 1px #fff9 inset}@keyframes loginCardIn{0%{opacity:0;transform:scale(.97) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}.login-brand{text-align:center;margin-bottom:36px}.login-brand-visual{display:flex;align-items:center;justify-content:center;height:100px;margin-bottom:4px}.login-face{width:100px;height:100px;cursor:default;animation:loginFaceIn .4s var(--ease-out-soft) both}@keyframes loginFaceIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.brand-dot{display:inline-block;width:14px;height:14px;border-radius:50%;margin:0 5px;vertical-align:middle;animation:brandDotPulse 4s var(--ease-in-out) infinite;box-shadow:0 2px 8px #0000001f}.brand-dot.red{background:var(--red);animation-delay:0s}.brand-dot.yellow{background:var(--yellow);animation-delay:.4s}.brand-dot.blue{background:var(--blue);animation-delay:.8s}@keyframes brandDotPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.94}}.login-brand h1{margin:20px 0 6px;font-size:1.85rem;font-weight:700;letter-spacing:-.03em;animation:loginTitleIn var(--duration-normal) var(--ease-out-soft) .2s both}@keyframes loginTitleIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.login-brand p{margin:0;font-size:.92rem;color:#666;animation:loginTitleIn var(--duration-normal) var(--ease-out-soft) .28s both}.login-form{display:flex;flex-direction:column;gap:18px;overflow:hidden}.login-form-inner{display:flex;flex-direction:column;gap:18px;transition:opacity .45s var(--ease-out-soft),transform .45s var(--ease-out-soft)}.login-form-pulse{opacity:.92;transform:scale(.992)}.login-form-inner:not(.login-form-pulse){opacity:1;transform:scale(1)}.login-error{padding:12px 16px;background:#ff3b3014;border-radius:var(--radius-sm);color:var(--red);font-size:.9rem;animation:shake .5s var(--ease-out-smooth)}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.login-input{padding:16px 20px;border:1px solid rgba(0,0,0,.06);border-radius:var(--radius-sm);font-size:1rem;background:#ffffffd9;transition:border-color var(--duration-slow) var(--ease-out-soft),box-shadow var(--duration-slow) var(--ease-out-soft),background var(--duration-slow) var(--ease-out-soft),transform var(--duration-normal) var(--ease-out-soft)}.login-input:hover{background:#fffffff2}.login-input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px #007aff1f;background:#fff}.login-password-wrap{position:relative;display:flex;align-items:stretch}.login-password-wrap .login-input{flex:1;padding-right:48px}.login-password-toggle{position:absolute;right:0;top:0;bottom:0;width:48px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:#0006;cursor:pointer;border-radius:0 var(--radius-sm) var(--radius-sm) 0;transition:color var(--duration-fast) var(--ease-out-smooth)}.login-password-toggle:hover{color:#000000b3}.login-password-toggle:focus-visible{outline:none;color:var(--blue)}.login-password-wrap .login-input:focus~.login-password-toggle{color:#00000080}.login-btn{padding:16px 28px;background:linear-gradient(180deg,var(--blue) 0%,#0066dd 100%);color:#fff;border:none;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;transition:transform var(--duration-normal) var(--ease-out-soft),box-shadow var(--duration-slow) var(--ease-out-soft),filter var(--duration-normal) var(--ease-out-soft);box-shadow:0 4px 14px #007aff40}.login-btn:hover:not(:disabled){box-shadow:0 6px 24px #007aff59;filter:brightness(1.02)}.login-btn:active:not(:disabled){transform:scale(.98);transition-duration:.1s}.login-btn:disabled{opacity:.9;cursor:not-allowed}.login-dots{display:inline-flex;align-items:center;justify-content:center;gap:6px}.login-dot{width:8px;height:8px;border-radius:50%;background:currentColor;opacity:.9;animation:loginDotBounce 1.2s var(--ease-in-out) infinite both}.login-dot:nth-child(1){animation-delay:0s}.login-dot:nth-child(2){animation-delay:.15s}.login-dot:nth-child(3){animation-delay:.3s}@keyframes loginDotBounce{0%,60%,to{transform:translateY(0);opacity:.6}30%{transform:translateY(-8px);opacity:1}}.login-toggle{background:none;border:none;color:var(--blue);font-size:.9rem;cursor:pointer;padding:10px 0;transition:color var(--duration-fast) var(--ease-out-smooth),transform var(--duration-fast) var(--ease-out-smooth)}.login-toggle:hover{text-decoration:underline;color:#0051d5}.login-toggle:active{transform:scale(.98)}.login-divider{display:flex;align-items:center;gap:12px;font-size:.85rem;color:#00000073;margin:8px 0 4px}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:#0000001a}.login-google-btn{display:flex;align-items:center;justify-content:center;gap:12px;padding:14px 24px;background:#fff;color:#333;border:1px solid rgba(0,0,0,.12);border-radius:var(--radius-sm);font-size:.98rem;font-weight:500;cursor:pointer;transition:background var(--duration-normal) var(--ease-out-soft),border-color var(--duration-normal) var(--ease-out-soft),box-shadow var(--duration-normal) var(--ease-out-soft);box-shadow:0 1px 3px #0000000f}.login-google-btn:hover:not(:disabled){background:#f8f8f8;border-color:#0000002e;box-shadow:0 2px 8px #00000014}.login-google-btn:disabled{opacity:.8;cursor:not-allowed}.login-google-logo{display:flex;align-items:center;justify-content:center;flex-shrink:0}.login-google-logo svg{display:block}.login-verify-text{margin:0 0 8px;font-size:.95rem;color:#333;line-height:1.45}.login-verify-text strong{word-break:break-all}.login-input-code{text-align:center;letter-spacing:.35em;font-variant-numeric:tabular-nums}.modal-overlay{position:fixed;inset:0;background:#00000059;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px;animation:modalOverlayIn .3s var(--ease-out-soft) both}@keyframes modalOverlayIn{0%{opacity:0}to{opacity:1}}.modal-card{width:100%;max-width:400px;background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--glass-border);border-radius:var(--radius);box-shadow:var(--glass-convex-strong),0 24px 56px #0000001f;padding:28px 28px 24px;animation:modalCardIn .4s var(--ease-out-soft) both}@keyframes modalCardIn{0%{opacity:0;transform:scale(.96) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-brand{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:20px}.modal-brand .dot{width:10px;height:10px;border-radius:50%}.modal-brand .dot.red{background:var(--red)}.modal-brand .dot.yellow{background:var(--yellow)}.modal-brand .dot.blue{background:var(--blue)}.modal-title{margin:0 0 8px;font-size:1.1rem;font-weight:600;color:#1d1d1f;text-align:center}.modal-message{margin:0 0 24px;font-size:.95rem;color:#666;line-height:1.5;text-align:center}.modal-input{width:100%;padding:14px 18px;margin-bottom:24px;border:1px solid rgba(0,0,0,.1);border-radius:var(--radius-sm);font-size:1rem;background:#ffffffe6;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.modal-input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #007aff26}.modal-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.modal-btn{flex:1;min-width:120px;padding:12px 20px;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;cursor:pointer;transition:transform var(--duration-fast) var(--ease-out-soft),box-shadow var(--duration-fast),background var(--duration-fast),color var(--duration-fast);border:1px solid transparent}.modal-btn:active{transform:scale(.98)}.modal-btn-cancel{background:linear-gradient(145deg,#ffffffe6,#0000000a);border-color:#fff9;color:#666;box-shadow:var(--glass-convex)}.modal-btn-cancel:hover{background:linear-gradient(145deg,#fffffffa,#0000000f);color:#333}.modal-btn-confirm{background:linear-gradient(145deg,var(--blue) 0%,#0051d5 100%);color:#fff;border:none;box-shadow:0 2px #ffffff40 inset,0 4px 14px #007aff59}.modal-btn-confirm:hover{box-shadow:0 2px #ffffff4d inset,0 6px 20px #007aff66;filter:brightness(1.05)}.modal-btn-danger{background:linear-gradient(145deg,var(--red) 0%,#d63028 100%);color:#fff;border:none;box-shadow:0 2px #ffffff40 inset,0 4px 14px #ff3b3059}.modal-btn-danger:hover{box-shadow:0 2px #ffffff4d inset,0 6px 20px #ff3b3066;filter:brightness(1.05)}.modal-choice-card .modal-message{margin-bottom:20px}.modal-choice-buttons{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.modal-choice-btn{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:16px 20px;text-align:left;border:1px solid rgba(0,122,255,.2);border-radius:var(--radius-sm);background:linear-gradient(145deg,#fffffff2,#007aff0f);color:#1d1d1f;cursor:pointer;transition:background var(--duration-fast),border-color var(--duration-fast),box-shadow var(--duration-fast);box-shadow:var(--glass-convex)}@media(max-width:640px){.modal-overlay{padding:12px;align-items:flex-end}.modal-card{max-width:100%;padding:20px 18px 18px}.modal-message{font-size:.9rem}.modal-btn{min-width:0;padding:10px 16px;font-size:.9rem}.modal-choice-btn{padding:12px 16px}}.modal-choice-btn:hover{background:linear-gradient(145deg,#fffffffa,#007aff1f);border-color:#007aff59;box-shadow:var(--glass-convex-strong)}.modal-choice-btn-max{border-color:#ffd60a40;background:linear-gradient(145deg,#fffffff2,#ffd60a0f)}.modal-choice-btn-max:hover{background:linear-gradient(145deg,#fffffffa,#ffd60a1f);border-color:#ffd60a66}.modal-choice-btn-title{font-weight:600;font-size:1rem}.modal-choice-btn-desc{font-size:.85rem;color:#666}.modal-choice-cancel{width:100%}.app-layout{display:flex;height:100vh;overflow:hidden;animation:layoutIn var(--duration-normal) var(--ease-out-soft) both}@keyframes layoutIn{0%{opacity:0}to{opacity:1}}.sidebar{width:288px;min-width:288px;display:flex;flex-direction:column;background:var(--glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-right:1px solid var(--glass-border);box-shadow:var(--shadow-soft),0 0 0 1px #fff6 inset;transition:box-shadow var(--duration-normal) var(--ease-out-smooth)}.sidebar:hover{box-shadow:0 6px 28px #0000000f,0 0 0 1px #ffffff80 inset}.sidebar-header{padding:22px 18px;border-bottom:1px solid rgba(0,0,0,.05)}.sidebar-brand{display:flex;align-items:center;gap:12px;margin-bottom:18px}.sidebar-logo{width:80px;height:80px;flex-shrink:0;transition:transform var(--duration-normal) var(--ease-spring)}.sidebar-brand:hover .sidebar-logo{transform:scale(1.08)}.brand-name{font-weight:700;font-size:1.6rem;letter-spacing:-.02em}.sidebar-actions{display:flex;flex-direction:column;gap:8px}.btn-new-chat,.btn-new-folder{display:flex;align-items:center;gap:10px;width:100%;padding:12px 18px;border-radius:var(--radius-sm);font-weight:600;font-size:.9rem;cursor:pointer;transition:background var(--duration-slow) var(--ease-out-soft),transform var(--duration-normal) var(--ease-out-soft),box-shadow var(--duration-slow) var(--ease-out-soft),border-color var(--duration-slow) var(--ease-out-soft);border:1px solid transparent}.btn-new-chat{background:linear-gradient(145deg,#fffffff2,#007aff1f,#ffd60a0f);border-color:#fffc;color:var(--blue);box-shadow:var(--glass-convex)}.btn-new-chat:hover{background:linear-gradient(145deg,#fffffffa,#007aff2e,#ffd60a1a);border-color:#ffffffe6;box-shadow:var(--glass-convex-strong),0 4px 16px #007aff1f}.btn-new-folder{background:linear-gradient(145deg,#ffffffe6,#0000000a);border-color:#ffffffb3;color:#666;box-shadow:var(--glass-convex)}.btn-new-folder:hover{background:linear-gradient(145deg,#fffffff2,#0000000f);border-color:#fffc;box-shadow:var(--glass-convex-strong);color:#333}.btn-new-chat:active,.btn-new-folder:active{transform:scale(.98)}.btn-new-chat>svg,.btn-new-folder>svg{flex-shrink:0}.chat-list{flex:1;overflow-y:auto;overflow-x:hidden;padding:10px 0;scroll-behavior:smooth}.folder-section{margin-bottom:12px}.folder-section-header{padding:6px 22px 6px 18px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#888;-webkit-user-select:none;user-select:none}.folder-section-header.folder-droppable{border-radius:var(--radius-sm);margin:0 10px 4px;transition:background var(--duration-fast)}.folder-section-header.folder-droppable:hover{background:#007aff0f;color:var(--blue)}.folder-section-header.folder-header-collapsible{display:flex;align-items:center;gap:6px;cursor:pointer}.folder-chevron{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;margin-right:2px;opacity:.7;transition:transform var(--duration-fast)}.folder-header-with-actions{display:flex;align-items:center;gap:6px}.folder-header-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-header-actions{display:flex;align-items:center;gap:2px;flex-shrink:0;opacity:0;transition:opacity var(--duration-fast)}.folder-section-header:hover .folder-header-actions{opacity:1}.folder-header-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:4px;background:transparent;color:#999;cursor:pointer;transition:background var(--duration-fast),color var(--duration-fast)}.folder-header-btn:hover{background:#007aff26;color:var(--blue)}.folder-header-btn-delete:hover{background:#ff3b301f;color:var(--red)}.folder-section-chats{display:flex;flex-direction:column;gap:2px}.sidebar-divider{flex-shrink:0;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.08) 15%,rgba(0,0,0,.08) 85%,transparent 100%);margin:0 14px}.chat-list-loading{padding:28px 18px;color:#888;font-size:.9rem;animation:fadeIn var(--duration-normal) var(--ease-out-smooth)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.chat-item{display:flex;align-items:center;gap:8px;padding:12px 18px;margin:0 10px 2px;border-radius:var(--radius-sm);color:#333;font-size:.95rem;text-decoration:none;transition:background var(--duration-slow) var(--ease-out-soft),color var(--duration-slow) var(--ease-out-soft),transform var(--duration-normal) var(--ease-out-soft),box-shadow var(--duration-slow) var(--ease-out-soft);animation:chatItemIn var(--duration-slow) var(--ease-out-soft) both;cursor:grab}.chat-item:active{cursor:grabbing}@keyframes chatItemIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.chat-item:hover{background:#0000000a;transform:translate(2px);text-decoration:none}.chat-item:active{transform:scale(.995) translate(2px)}.chat-item.active{background:linear-gradient(90deg,#007aff1f,#007aff0a);color:var(--blue);font-weight:500;box-shadow:0 2px 12px #007aff14}.chat-item-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-item-delete{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:6px;background:transparent;color:#999;cursor:pointer;opacity:0;transition:opacity var(--duration-fast),background var(--duration-fast),color var(--duration-fast)}.chat-item:hover .chat-item-delete,.chat-item-delete:focus{opacity:1}.chat-item-delete:hover{background:#ff3b301a;color:var(--red)}.sidebar-footer{padding:14px 18px;border-top:1px solid rgba(0,0,0,.05);display:flex;flex-direction:column;gap:10px}.footer-toggle{display:flex;align-items:center;gap:10px;padding:10px 14px;margin:0 -4px;border-radius:var(--radius-sm);cursor:pointer;font-size:.85rem;color:#666;-webkit-user-select:none;user-select:none;transition:background var(--duration-normal) var(--ease-out-smooth),color var(--duration-normal) var(--ease-out-smooth),box-shadow var(--duration-normal) var(--ease-out-smooth),border-color var(--duration-normal) var(--ease-out-smooth);border:1px solid transparent}.footer-toggle:hover{background:#00000008}.footer-toggle--anon{background:linear-gradient(135deg,#007aff2e,#0051d51f);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-color:#fff6;color:var(--blue);box-shadow:0 2px 12px #007aff26,0 0 0 1px #ffffff40 inset}.footer-toggle--anon:hover{background:linear-gradient(135deg,#007aff38,#0051d529);box-shadow:0 4px 16px #007aff33,0 0 0 1px #ffffff4d inset}.footer-toggle--anon .footer-toggle-label svg{opacity:1}.footer-toggle input{width:18px;height:18px;accent-color:var(--blue);cursor:pointer}.footer-toggle-label{display:flex;align-items:center;gap:6px}.footer-toggle-label svg{flex-shrink:0;opacity:.8}.btn-logout{width:100%;padding:12px 18px;background:linear-gradient(145deg,#ffffffd9,#00000008);border:1px solid rgba(255,255,255,.6);border-radius:var(--radius-sm);color:#666;font-size:.9rem;cursor:pointer;box-shadow:var(--glass-convex);transition:background var(--duration-normal) var(--ease-out-smooth),color var(--duration-normal) var(--ease-out-smooth),transform var(--duration-fast) var(--ease-out-smooth),box-shadow var(--duration-normal) var(--ease-out-smooth)}.btn-logout:hover{background:linear-gradient(145deg,#fffffff2,#ff3b3014);color:var(--red);box-shadow:var(--glass-convex-strong),0 2px 12px #ff3b3014}.btn-logout:active{transform:scale(.98)}.main{flex:1;display:flex;flex-direction:column;min-width:0;background:linear-gradient(180deg,#fff9,#fffaf559 45%,#f5faff59);transition:background var(--duration-slow) var(--ease-out-smooth)}@media(max-width:768px){.app-layout{flex-direction:column;height:100vh;overflow:auto}.sidebar{width:100%;min-width:0;flex:0 0 auto}.sidebar-header{padding:14px 14px 10px}.sidebar-brand{margin-bottom:10px}.sidebar-logo{width:60px;height:60px}.brand-name{font-size:1.3rem}.chat-list{max-height:40vh}.sidebar-footer{padding:10px 14px 12px}.main{flex:1;min-height:0}}.chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;color:#888;animation:fadeIn var(--duration-slow) var(--ease-out-soft) both}.chat-empty-dots{display:flex;gap:10px;align-items:center}.chat-empty-dots .dot{width:16px;height:16px;border-radius:50%;animation:emptyDotFloat 2.5s var(--ease-in-out) infinite;box-shadow:0 3px 12px #00000026}.chat-empty-dots .dot.red{background:var(--red);animation-delay:0s}.chat-empty-dots .dot.yellow{background:var(--yellow);animation-delay:.3s}.chat-empty-dots .dot.blue{background:var(--blue);animation-delay:.6s}@keyframes emptyDotFloat{0%,to{transform:translateY(0) scale(1);opacity:1}50%{transform:translateY(-6px) scale(1.05);opacity:.9}}.chat-empty p{margin:0;font-size:1.02rem;letter-spacing:.01em;animation:fadeIn var(--duration-normal) var(--ease-out-soft) .2s both}.chat-view{flex:1;display:flex;flex-direction:column;min-height:0;animation:fadeIn var(--duration-normal) var(--ease-out-soft) both}.chat-messages{flex:1;overflow-y:auto;overflow-x:hidden;padding:28px 36px 20px;display:flex;flex-direction:column;gap:18px;scroll-behavior:smooth}.chat-messages::-webkit-scrollbar{width:8px}.chat-messages::-webkit-scrollbar-track{background:transparent}.chat-messages::-webkit-scrollbar-thumb{background:#0000001f;border-radius:var(--radius-pill)}.chat-messages::-webkit-scrollbar-thumb:hover{background:#0000002e}.chat-loading{color:#888;padding:28px 0;animation:fadeIn var(--duration-normal) var(--ease-out-smooth)}.message{display:flex;justify-content:flex-start;max-width:82%;animation:messageIn var(--duration-slow) var(--ease-out-soft) both}@keyframes messageIn{0%{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.message-user{align-self:flex-end;margin-left:auto;animation-name:messageInUser}@keyframes messageInUser{0%{opacity:0;transform:translateY(10px) translate(8px) scale(.98)}to{opacity:1;transform:translateY(0) translate(0) scale(1)}}.message-user .message-bubble{background:linear-gradient(135deg,var(--blue) 0%,#0051d5 100%);color:#fff;border-radius:20px 20px 6px;box-shadow:0 4px 20px #007aff47;transition:box-shadow var(--duration-normal) var(--ease-out-smooth),transform var(--duration-fast) var(--ease-out-smooth)}.message-user .message-bubble:hover{box-shadow:0 6px 28px #007aff52}.message-assistant{align-self:flex-start}.message-assistant .message-bubble{background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:20px 20px 20px 6px;box-shadow:var(--glass-convex);color:#1d1d1f;transition:box-shadow var(--duration-normal) var(--ease-out-smooth),transform var(--duration-fast) var(--ease-out-smooth)}.message-assistant .message-bubble:hover{box-shadow:var(--glass-convex-strong)}.message-bubble{padding:16px 20px;font-size:.96rem;line-height:1.55;word-break:break-word}.message-bubble .message-markdown{margin:0}.message-bubble .message-markdown>*:first-child{margin-top:0}.message-bubble .message-markdown>*:last-child{margin-bottom:0}.message-bubble .message-markdown p{margin:0 0 .65em}.message-bubble .message-markdown p:last-child{margin-bottom:0}.message-bubble .message-markdown ul,.message-bubble .message-markdown ol{margin:.4em 0 .65em;padding-left:1.4em}.message-bubble .message-markdown li{margin:.2em 0}.message-bubble .message-markdown code{font-size:.9em;padding:.18em .4em;border-radius:6px;background:#0000000f}.message-user .message-bubble code{background:#ffffff40}.message-bubble .message-markdown .code-block-wrap{position:relative;margin:.6em 0 .65em}.message-bubble .message-markdown pre{margin:0;padding:12px 44px 12px 14px;border-radius:10px;overflow-x:auto;background:#0000000f}.message-user .message-bubble pre{background:#fff3}.message-bubble .message-markdown pre code{padding:0;background:none;font-size:.88em}.message-bubble .message-markdown .code-block-copy{position:absolute;top:8px;right:8px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:8px;background:#00000014;color:#555;cursor:pointer;transition:background .2s,color .2s}.message-bubble .message-markdown .code-block-copy:hover{background:#0000001f;color:#333}.message-bubble .message-markdown .code-block-copy:focus{outline:none;box-shadow:0 0 0 2px var(--blue)}.message-user .message-bubble .code-block-copy{background:#ffffff40;color:#ffffffe6}.message-user .message-bubble .code-block-copy:hover{background:#ffffff59;color:#fff}.message-bubble .message-markdown .code-block-copy svg{flex-shrink:0}.message-bubble .message-markdown a{color:var(--blue);text-decoration:none}.message-bubble .message-markdown a:hover{text-decoration:underline}.message-user .message-bubble a{color:#fffffff2;text-decoration:underline}.message-bubble .message-markdown strong{font-weight:600}.message-bubble .message-markdown h1,.message-bubble .message-markdown h2,.message-bubble .message-markdown h3{margin:.75em 0 .4em;font-weight:600;line-height:1.3}.message-bubble .message-markdown h1{font-size:1.2em}.message-bubble .message-markdown h2{font-size:1.1em}.message-bubble .message-markdown h3{font-size:1.02em}.message-bubble .message-markdown blockquote{margin:.5em 0 .65em;padding-left:1em;border-left:3px solid rgba(0,0,0,.15);color:#555}.message-user .message-bubble blockquote{border-left-color:#ffffff80;color:#ffffffe6}.message-bubble .message-markdown hr{margin:.8em 0;border:none;border-top:1px solid rgba(0,0,0,.1)}.message-user .message-bubble hr{border-top-color:#ffffff4d}.message-bubble .message-markdown table{border-collapse:collapse;font-size:.92em;margin:.5em 0}.message-bubble .message-markdown th,.message-bubble .message-markdown td{border:1px solid rgba(0,0,0,.12);padding:6px 10px;text-align:left}.message-user .message-bubble th,.message-user .message-bubble td{border-color:#ffffff4d}.message-bubble.typing{color:transparent;padding:18px 24px;min-height:52px;display:flex;align-items:center}.typing-dots{display:inline-flex;align-items:center;gap:6px}.typing-dots span{width:8px;height:8px;border-radius:50%;opacity:.6;animation:typingBounce 1.4s var(--ease-in-out) infinite both}.typing-dots span.dot.red{background:var(--red);animation-delay:0s}.typing-dots span.dot.yellow{background:var(--yellow);animation-delay:.2s}.typing-dots span.dot.blue{background:var(--blue);animation-delay:.4s}@keyframes typingBounce{0%,60%,to{transform:translateY(0);opacity:.5}30%{transform:translateY(-8px);opacity:1}}.chat-input-wrap{display:flex;gap:14px;padding:20px 28px 28px;background:linear-gradient(0deg,rgba(255,255,255,.92) 0%,rgba(255,255,255,.6) 60%,transparent 100%);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:padding var(--duration-normal) var(--ease-out-smooth)}.chat-input{flex:1;padding:16px 24px;border:1px solid rgba(0,0,0,.07);border-radius:var(--radius-pill);font-size:1rem;resize:none;min-height:52px;max-height:180px;background:#ffffffe6;transition:border-color var(--duration-slow) var(--ease-out-soft),box-shadow var(--duration-slow) var(--ease-out-soft),background var(--duration-slow) var(--ease-out-soft),transform var(--duration-normal) var(--ease-out-soft)}.chat-input:hover{background:#fffffffa;border-color:#0000001a}.chat-input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px #007aff24;background:#fff}.chat-input::placeholder{color:#999}.chat-send{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;border:none;background:linear-gradient(145deg,#1a8cff 0%,var(--blue) 30%,#0051d5 100%);color:#fff;cursor:pointer;transition:transform var(--duration-normal) var(--ease-out-soft),box-shadow var(--duration-slow) var(--ease-out-soft),filter var(--duration-normal) var(--ease-out-soft);flex-shrink:0;box-shadow:0 2px #ffffff59 inset,0 -1px #00000026 inset,0 6px 20px #007aff59}.chat-send:hover:not(:disabled){box-shadow:0 2px #fff6 inset,0 -1px #0000001f inset,0 8px 28px #007aff66;filter:brightness(1.04);transform:scale(1.04)}.chat-send:active:not(:disabled){transform:scale(.94);transition-duration:.1s}.chat-send:disabled{opacity:.5;cursor:not-allowed;transform:scale(1)}@media(max-width:768px){.chat-messages{padding:16px 14px 12px;gap:12px}.message{max-width:100%}.message-bubble{padding:12px 14px;font-size:.94rem}.chat-input-wrap{padding:12px 12px 16px;gap:10px}.chat-input{padding:12px 16px;min-height:46px}.chat-send{width:46px;height:46px}}
