:root{--primary: #1890FF;--primary-hover: #40A9FF;--primary-light: #E6F7FF;--bg: #f5f5f5;--bg-card: #ffffff;--text: #1f1f1f;--text-muted: #666666;--border: #e5e5e5;--error: #FF4D4F;--error-bg: #FFF2F0;--warning: #faad14;--warning-bg: #fffbe6;--success: #52c41a;--success-bg: #f6ffed}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Helvetica Neue,sans-serif;color:var(--text);line-height:1.6}.btn{padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;font-family:inherit}.btn-primary{background:var(--primary);border:1px solid var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-cancel{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-cancel:hover{background:var(--bg)}.btn-danger{background:var(--error);border:1px solid var(--error);color:#fff}.btn-danger:hover{background:#ff7875;border-color:#ff7875}.alert{padding:12px 16px;border-radius:12px;font-size:14px;display:flex;align-items:flex-start;gap:12px}.alert svg{flex-shrink:0;width:18px;height:18px;margin-top:2px}.alert-error{background:var(--error-bg);color:var(--error)}.alert-warning{background:var(--warning-bg);color:#d48806}.alert-success{background:var(--success-bg);color:#389e0d}.input-field{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;color:var(--text);background:var(--bg-card);transition:border-color .2s ease,box-shadow .2s ease;outline:none}.input-field:focus{border-color:var(--primary);box-shadow:0 0 0 2px #1890ff1a}.input-field::-moz-placeholder{color:var(--text-muted)}.input-field::placeholder{color:var(--text-muted)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}:root{--sidebar-bg: #F5F5F7;--sidebar-hover: #E8E8ED;--sidebar-active: #E0E0E5;--sidebar-text: #333333;--sidebar-text-muted: #999999;--sidebar-border: #E5E5EA;--chat-bg: #FFFFFF;--chat-card: #FFFFFF;--chat-text: #333333;--chat-text-muted: #8E8E93;--chat-border: #E5E5EA;--ai-message-bg: #F7F7F8;--user-message-bg: #E8F4FF;--user-message-border: #D4E8FF}body.app-shell{background:var(--chat-bg);height:100vh;display:flex;overflow:hidden}.sidebar{width:260px;background:var(--sidebar-bg);display:flex;flex-direction:column;flex-shrink:0;transition:transform .3s ease,width .3s ease}.sidebar-header{padding:16px}.sidebar-brand{display:flex;align-items:center;gap:10px;margin-bottom:16px}.sidebar-logo{width:32px;height:32px;border-radius:8px;overflow:hidden}.sidebar-logo img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.sidebar-brand-text{display:flex;flex-direction:column}.sidebar-brand-title{font-weight:600;font-size:16px;color:var(--sidebar-text);line-height:1.3}.sidebar-brand-subtitle{font-size:12px;color:var(--sidebar-text-muted);line-height:1.3}.new-chat-btn{width:100%;padding:10px 12px;background:var(--sidebar-hover);border:1px solid var(--primary);border-radius:8px;color:var(--primary);cursor:pointer;font-size:14px;font-weight:500;font-family:inherit;transition:background-color .2s ease;display:flex;align-items:center;justify-content:flex-start;gap:8px}.new-chat-btn:hover{background:var(--sidebar-active)}.chat-history{flex:1;overflow-y:auto;padding:0 8px 8px;display:flex;flex-direction:column}.chat-history-title{font-size:11px;font-weight:500;color:var(--sidebar-text-muted);text-transform:uppercase;letter-spacing:.5px;padding:8px 12px;flex-shrink:0;position:sticky;top:0;background:var(--sidebar-bg);z-index:1}.chat-history-item{padding:10px 12px;cursor:pointer;border-radius:8px;margin-bottom:2px;transition:background-color .15s ease;position:relative}.chat-history-item:hover{background:var(--sidebar-hover)}.chat-history-item.active{background:var(--sidebar-active)}.chat-history-item .chat-title{font-size:14px;color:var(--sidebar-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:24px;display:flex;align-items:center;gap:6px}.chat-history-item .chat-title .mode-icon{opacity:.5;flex-shrink:0}.chat-history-item .action-btns{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:flex;gap:2px;opacity:0;transition:opacity .15s ease}.chat-history-item:hover .action-btns{opacity:1}.chat-history-item .rename-btn,.chat-history-item .delete-btn{background:transparent;border:none;color:var(--sidebar-text-muted);cursor:pointer;padding:6px;border-radius:6px;transition:background-color .15s ease}.chat-history-item .rename-btn:hover{background:var(--sidebar-active);color:var(--sidebar-text)}.chat-history-item .delete-btn:hover{background:#ff4d4f1a;color:var(--error)}.sidebar-footer{padding:8px;border-top:1px solid var(--sidebar-border)}.user-info{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;transition:background-color .15s ease}.user-info:hover{background:var(--sidebar-hover)}.user-avatar{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,#1890ff,#36cfc9);display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:600}.user-name{flex:1;font-size:13px;color:var(--sidebar-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logout-btn{background:transparent;border:none;color:var(--sidebar-text-muted);cursor:pointer;padding:4px;border-radius:4px;transition:all .15s ease}.logout-btn:hover{color:var(--error)}.chat-container{flex:1;display:flex;flex-direction:column;height:100vh;min-width:0;position:relative}.chat-header{padding:12px 24px;background:var(--chat-bg);display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--chat-border)}.chat-header-left{display:flex;align-items:center;gap:12px;min-width:200px}.chat-header-center{flex:1;display:flex;justify-content:center;align-items:center}.chat-header-right{min-width:200px;display:flex;justify-content:flex-end;align-items:center;gap:8px}.model-selector-wrapper{display:flex;align-items:center;gap:8px}.model-selector{position:relative}.model-selector select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:8px 32px 8px 12px;background:var(--chat-card);border:1px solid var(--chat-border);border-radius:8px;color:var(--chat-text);font-size:14px;font-family:inherit;cursor:pointer;transition:border-color .2s ease;min-width:180px}.model-selector select:focus{outline:none;border-color:var(--primary)}.model-selector:after{content:"";position:absolute;right:12px;top:50%;transform:translateY(-50%);border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--chat-text-muted);pointer-events:none}.mobile-menu-btn{display:none;background:transparent;border:none;color:var(--chat-text);cursor:pointer;padding:8px;border-radius:8px}.mobile-menu-btn:hover{background:var(--chat-card)}.sidebar-toggle-btn{display:flex;background:transparent;border:none;color:var(--chat-text-muted);cursor:pointer;padding:8px;border-radius:8px;align-items:center;justify-content:center;transition:all .2s ease}.sidebar-toggle-btn:hover{background:var(--chat-card);color:var(--chat-text)}.sidebar.collapsed{width:0;overflow:hidden;padding:0}.sidebar.collapsed .sidebar-header,.sidebar.collapsed .chat-history,.sidebar.collapsed .sidebar-footer{opacity:0;visibility:hidden}.chat-title-input{background:transparent;border:none;color:var(--chat-text);font-size:16px;font-weight:600;font-family:inherit;outline:none;text-align:center;max-width:400px;opacity:0;transition:opacity .2s}.messages-container{flex:1;overflow-y:auto;padding:24px;display:flex;flex-direction:column}.message{max-width:800px;margin:0 auto 20px;display:flex;gap:12px;width:100%}.message.user{flex-direction:row-reverse}.message-content{flex:1;min-width:0;padding:0;border-radius:0;line-height:1.75;font-size:15px;background:transparent;border:none;color:var(--chat-text);overflow-wrap:break-word}.assistant .message-content{background:transparent;border-radius:0;padding:0}.user .message-content{background:var(--user-message-bg);border:1px solid var(--user-message-border);border-radius:12px;padding:12px 16px;max-width:480px;width:-moz-fit-content;width:fit-content;flex:none}.welcome-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:24px}.welcome-icon{width:64px;height:64px;border-radius:16px;overflow:hidden;margin-bottom:20px}.welcome-icon img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.welcome-screen h1{font-size:24px;font-weight:600;color:var(--chat-text);margin-bottom:8px}.welcome-screen p{color:var(--chat-text-muted);max-width:400px;line-height:1.7;font-size:14px}.input-container{padding:16px 24px 24px;background:transparent}.input-wrapper{max-width:800px;margin:0 auto;background:var(--chat-card);border:1px solid var(--chat-border);border-radius:16px;padding:8px 12px;transition:border-color .2s ease,box-shadow .2s ease}.input-wrapper:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px #1890ff1a}.input-top-bar{display:flex;align-items:center;gap:4px;padding:4px 4px 8px;border-bottom:1px solid var(--chat-border);margin-bottom:8px}.mode-switch-btn{padding:6px 12px;background:transparent;border:none;border-radius:6px;color:var(--chat-text-muted);cursor:pointer;font-size:13px;font-weight:500;font-family:inherit;transition:all .2s ease;display:flex;align-items:center;gap:4px}.mode-switch-btn:hover{background:var(--chat-bg);color:var(--chat-text)}.mode-switch-btn.active{background:var(--primary-light);color:var(--primary)}.mode-switch-btn svg{width:14px;height:14px}.input-main{display:flex;gap:8px;align-items:flex-end}.input-main textarea{flex:1;background:transparent;border:none;color:var(--chat-text);font-size:15px;resize:none;outline:none;max-height:200px;font-family:inherit;line-height:1.5;padding:4px 0}.input-main textarea::-moz-placeholder{color:var(--chat-text-muted)}.input-main textarea::placeholder{color:var(--chat-text-muted)}.input-actions{display:flex;gap:4px;flex-shrink:0}.upload-btn{background:transparent;border:none;color:var(--chat-text-muted);cursor:pointer;padding:8px;border-radius:8px;transition:all .2s ease}.upload-btn:hover{background:var(--chat-bg);color:var(--primary)}.send-btn{background:var(--primary);border:none;color:#fff;cursor:pointer;padding:8px;border-radius:8px;transition:background-color .2s ease}.send-btn:hover:not(:disabled){background:var(--primary-hover)}.send-btn:disabled{opacity:.5;cursor:not-allowed}.image-preview-container{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0;max-width:100%}.image-preview{position:relative;width:80px;height:80px;border-radius:8px;overflow:hidden;border:1px solid var(--chat-border)}.image-preview img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.image-preview .remove-image{position:absolute;top:4px;right:4px;width:20px;height:20px;background:#0009;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;opacity:0;transition:opacity .15s ease}.image-preview:hover .remove-image{opacity:1}.user-images{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.user-images img{max-width:200px;max-height:200px;border-radius:8px;-o-object-fit:cover;object-fit:cover}.message-content img{max-width:100%;border-radius:8px;margin:8px 0}.no-image-result{padding:16px 20px;background:var(--ai-message-bg);border-radius:12px;color:var(--chat-text-muted);font-size:15px;text-align:center}.generated-images-container{display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;gap:12px;margin-top:12px;width:100%}.generated-images-intro{margin-bottom:12px;color:var(--chat-text);width:100%}.generated-image{width:150px!important;height:150px!important;border-radius:8px;overflow:hidden;border:1px solid var(--chat-border);flex:0 0 auto!important;box-sizing:border-box;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.generated-image:hover{transform:scale(1.05);box-shadow:0 4px 12px #00000026}.generated-image img{width:100%!important;height:100%!important;max-width:none!important;-o-object-fit:cover;object-fit:cover;margin:0!important;border-radius:0;display:block}.clickable-image{cursor:pointer;transition:transform .2s,box-shadow .2s}.clickable-image:hover{transform:scale(1.02);box-shadow:0 4px 16px #0000001f}.image-modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000e6;display:flex;align-items:center;justify-content:center;z-index:10000;cursor:pointer}.image-modal-content{position:relative;max-width:90%;max-height:90%;cursor:default}.image-modal-content img{max-width:100%;max-height:90vh;border-radius:8px;box-shadow:0 8px 32px #00000080}.image-modal-close{position:absolute;top:-40px;right:0;width:36px;height:36px;border:none;background:#fff3;color:#fff;font-size:24px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s}.image-modal-close:hover{background:#ffffff4d}.loading{display:flex;align-items:center;gap:8px;padding:6px 0 2px;min-height:22px}.loading-dot{width:7px;height:7px;background:#2d8cff;border-radius:50%;box-shadow:0 0 0 1px #2d8cff14;animation:image-loading-wave 1.2s infinite ease-in-out both}.loading-dot:nth-child(1){animation-delay:-.24s}.loading-dot:nth-child(2){animation-delay:-.12s}@keyframes image-loading-wave{0%,80%,to{transform:translateY(0);opacity:.28}40%{transform:translateY(-3px);opacity:1}}.streaming-indicator{display:inline-block;width:6px;height:18px;background:linear-gradient(180deg,#2f93ff,#1677ff);margin-left:4px;animation:cursor-blink .9s steps(1,end) infinite;vertical-align:text-bottom;border-radius:3px;box-shadow:0 0 0 1px #2f93ff29,0 0 8px #2f93ff3d}@keyframes cursor-blink{0%,50%{opacity:1}51%,to{opacity:.2}}.error-message{background:var(--error-bg);color:var(--error);padding:12px 16px;border-radius:8px;margin-bottom:12px;max-width:800px;margin-left:auto;margin-right:auto;font-size:14px}.chat-history::-webkit-scrollbar{width:4px}.chat-history::-webkit-scrollbar-thumb{background:transparent}.chat-history:hover::-webkit-scrollbar-thumb{background:var(--sidebar-border)}.chat-history:hover::-webkit-scrollbar-thumb:hover{background:var(--sidebar-text-muted)}.sidebar-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:40}@media (max-width: 768px){.sidebar-toggle-btn{display:none}.sidebar{position:fixed;left:0;top:0;bottom:0;z-index:50;transform:translate(-100%);width:260px}.sidebar.open{transform:translate(0)}.sidebar-overlay.open{display:block}.mobile-menu-btn{display:flex}.messages-container{padding:16px}.input-container{padding:12px 16px 16px}.message{margin-bottom:16px}.chat-header{padding:12px 16px}.chat-header-left{min-width:auto}.chat-header-center{flex:1;overflow:hidden}.chat-title-input{max-width:100%;font-size:14px}.chat-header-right{display:none}.model-selector select{min-width:120px}}@media (max-width: 480px){.welcome-screen h1{font-size:20px}.welcome-icon{width:56px;height:56px;border-radius:14px}.welcome-icon svg{width:28px;height:28px}}.message-content pre{background:#f6f8fa;border-radius:8px;padding:16px;overflow-x:auto;margin:12px 0;position:relative;border:1px solid #e1e4e8;max-width:100%;box-sizing:border-box}.message-content pre::-webkit-scrollbar{height:6px}.message-content pre::-webkit-scrollbar-track{background:transparent}.message-content pre::-webkit-scrollbar-thumb{background:#d0d7de;border-radius:3px}.message-content pre::-webkit-scrollbar-thumb:hover{background:#afb8c1}.message-content pre code{font-family:Fira Code,Consolas,monospace;font-size:14px;line-height:1.5;color:#24292e;white-space:pre;display:block}.message-content code:not(pre code){background:#1b1f230d;padding:2px 6px;border-radius:4px;font-family:Fira Code,Consolas,monospace;font-size:14px;color:#24292e}.message-content p{margin:0 0 12px}.message-content p:last-child{margin-bottom:0}.message-content ul,.message-content ol{margin:8px 0;padding-left:24px}.message-content li{margin:4px 0}.message-content blockquote{border-left:4px solid var(--primary);margin:12px 0;padding:8px 16px;background:var(--chat-bg);border-radius:0 8px 8px 0}.message-content h1,.message-content h2,.message-content h3,.message-content h4{margin:16px 0 8px;font-weight:600}.message-content h1{font-size:1.5em}.message-content h2{font-size:1.3em}.message-content h3{font-size:1.1em}.message-content a{color:var(--primary);text-decoration:none}.message-content a:hover{text-decoration:underline}.message-content table{border-collapse:collapse;margin:12px 0;width:100%}.message-content th,.message-content td{border:1px solid var(--chat-border);padding:8px 12px;text-align:left}.message-content th{background:var(--chat-bg);font-weight:600}.confirm-modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006;display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.confirm-dialog{background:var(--chat-card);border-radius:12px;padding:24px;min-width:320px;max-width:400px;box-shadow:0 8px 32px #00000026;animation:slideIn .2s ease}@keyframes slideIn{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.confirm-title{font-size:16px;font-weight:600;color:var(--chat-text);margin-bottom:8px}.confirm-message{font-size:14px;color:var(--chat-text-muted);line-height:1.6;margin-bottom:20px}.confirm-buttons{display:flex;gap:12px;justify-content:flex-end}.confirm-btn{padding:8px 16px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;font-family:inherit}.confirm-btn-cancel{background:transparent;border:1px solid var(--chat-border);color:var(--chat-text)}.confirm-btn-cancel:hover{background:var(--chat-bg)}.confirm-btn-confirm{background:var(--primary);border:1px solid var(--primary);color:#fff}.confirm-btn-confirm:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.confirm-btn-danger{background:var(--error);border:1px solid var(--error);color:#fff}.confirm-btn-danger:hover{background:#ff7875;border-color:#ff7875}.input-dialog{background:var(--chat-card);border-radius:12px;padding:24px;min-width:320px;max-width:400px;box-shadow:0 8px 32px #00000026;animation:slideIn .2s ease}.input-title{font-size:16px;font-weight:600;color:var(--chat-text);margin-bottom:16px}.input-buttons{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}:root{--login-bg-1: #f5f8ff;--login-bg-2: #eef3ff;--login-card: rgba(255, 255, 255, .92);--login-text: #0f172a;--login-muted: #5b6477;--login-primary-1: #2f6bff;--login-primary-2: #00b8ff;--login-line: rgba(15, 23, 42, .08);--login-shadow: 0 18px 44px rgba(20, 40, 90, .14), 0 4px 14px rgba(40, 72, 140, .08);--login-radius: 22px}html,body.login-page{height:100%}body.login-page{margin:0;font-family:Inter,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;color:var(--login-text);background:radial-gradient(1200px 600px at 10% -10%,#dbe7ff 0%,transparent 60%),radial-gradient(900px 500px at 100% 120%,#d8f2ff 0%,transparent 65%),linear-gradient(140deg,var(--login-bg-1),var(--login-bg-2));display:grid;place-items:center;padding:24px;overflow-x:hidden;overflow-y:auto}.noise{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(rgba(47,107,255,.08) .8px,transparent .8px);background-size:3px 3px;opacity:.2}.blob{position:fixed;border-radius:50%;filter:blur(8px);opacity:.45;pointer-events:none;z-index:0;animation:drift 12s ease-in-out infinite}.blob-1{width:280px;height:280px;left:-70px;top:-60px;background:radial-gradient(circle at 30% 30%,#cfe0ff,#e7f0ff)}.blob-2{width:320px;height:320px;right:-90px;bottom:-80px;background:radial-gradient(circle at 30% 30%,#d6f2ff,#ecf8ff);animation-delay:-5s}.wrap{width:min(940px,100%);display:grid;grid-template-columns:1.1fr .9fr;gap:18px;align-items:stretch;position:relative;z-index:1;animation:rise .7s ease-out both}.hero{border:1px solid rgba(255,255,255,.8);border-radius:var(--login-radius);padding:42px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(145deg,#eaf1ff,#f8fbff);color:#1d2a46;box-shadow:inset 0 1px #ffffffd9,0 10px 30px #2f6bff1f;min-height:500px;display:flex;flex-direction:column;justify-content:space-between}.badge{width:-moz-fit-content;width:fit-content;padding:7px 12px;border:1px solid #c8dbff;border-radius:999px;font-size:12px;letter-spacing:.2px;color:#315291;background:#f4f8ff}.hero h1{margin:16px 0 10px;font-size:clamp(28px,4vw,44px);line-height:1.1;letter-spacing:.2px}.hero p{margin:0;color:#4f6288;max-width:32ch;line-height:1.7}.hero .meta{display:flex;gap:22px;color:#6077a8;font-size:13px;flex-wrap:wrap}.card{background:var(--login-card);border:1px solid rgba(255,255,255,.75);box-shadow:var(--login-shadow);border-radius:var(--login-radius);padding:34px 30px 24px;display:flex;flex-direction:column;justify-content:space-between;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);min-height:500px}.logo{display:flex;gap:12px;align-items:center;margin-bottom:18px}.logo-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(140deg,var(--login-primary-1),var(--login-primary-2));box-shadow:0 8px 18px #2f6bff59;display:flex;align-items:center;justify-content:center;overflow:hidden}.logo-mark img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.logo span{font-weight:700;letter-spacing:.2px;font-size:17px}.title{margin:0;font-size:28px;line-height:1.2;letter-spacing:.2px}.subtitle{margin:10px 0 24px;color:var(--login-muted);line-height:1.7;font-size:14px}.btn{width:100%;border:none;border-radius:14px;padding:14px 16px;font-size:15px;font-weight:600;color:#fff;cursor:pointer;background:linear-gradient(135deg,var(--login-primary-1),var(--login-primary-2));box-shadow:0 10px 24px #2f6bff52;transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:8px}.btn:hover{transform:translateY(-1px);box-shadow:0 14px 28px #2f6bff59;filter:saturate(1.05)}.btn:active{transform:translateY(0)}.btn:after{content:"";position:absolute;top:0;left:-130%;width:60%;height:100%;background:linear-gradient(110deg,transparent,rgba(255,255,255,.35),transparent);animation:shine 2.8s ease-in-out infinite}.btn svg{width:20px;height:20px;flex-shrink:0}.actions{margin-top:14px;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:13px}.actions a{color:#3f5fa9;text-decoration:none}.actions a:hover{text-decoration:underline}.tip{margin-top:14px;font-size:12px;color:var(--login-muted);text-align:center}.footer{margin-top:22px;padding-top:16px;border-top:1px solid var(--login-line);font-size:12px;color:#758099;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}.alert{padding:12px 16px;border-radius:12px;margin-bottom:16px;display:flex;align-items:flex-start;gap:10px;font-size:14px;line-height:1.5}.alert svg{width:20px;height:20px;flex-shrink:0;margin-top:1px}.alert-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.alert-warning{background:#fffbeb;border:1px solid #fde68a;color:#92400e}.alert code{background:#0000000f;padding:2px 6px;border-radius:4px;font-size:13px}.dev-notice{margin-top:16px;padding:16px;background:#2f6bff0f;border-radius:12px;font-size:13px;color:var(--login-muted);text-align:center}.dev-notice code{background:#0000000f;padding:2px 6px;border-radius:4px}@keyframes drift{0%,to{transform:translateY(0) translate(0)}50%{transform:translateY(14px) translate(10px)}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes shine{0%,65%{left:-130%}to{left:140%}}@media (max-width: 920px){.wrap{grid-template-columns:1fr}.hero{min-height:280px;padding:32px}.card{min-height:auto}}@media (max-width: 480px){body{padding:16px}.hero{padding:24px}.card{padding:24px 20px 20px}.title{font-size:24px}.badge{font-size:11px}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub
  Description: Light theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .75rem}*{border-color:hsl(var(--border))}html{scroll-behavior:smooth}body{background-color:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;font-family:Inter,Segoe UI,sans-serif}#root{min-height:100vh}body.app-shell #root{width:100%;flex:1;min-width:0;display:flex}.\!container{width:100%!important}.container{width:100%}@media (min-width: 640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width: 768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width: 1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width: 1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width: 1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.hidden{display:none}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.app-loading,.auth-loading{min-height:100vh;display:grid;place-items:center;color:var(--text-muted);background:linear-gradient(180deg,#f8fbff,#eef4ff)}.app-loading-card,.auth-loading-card{min-width:220px;padding:24px 28px;border-radius:18px;background:#ffffffeb;box-shadow:0 20px 48px #2a44801f;text-align:center}.app-loading-card p,.auth-loading-card p{margin:12px 0 0;font-size:14px}.brand-loader{width:42px;height:42px;margin:0 auto;border-radius:14px;background:linear-gradient(135deg,#2f6bff,#00b8ff);animation:pulse-loader 1.4s ease-in-out infinite}.route-error{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(180deg,#f8fbff,#eef4ff)}.route-error-card{width:min(560px,100%);padding:24px;border-radius:20px;background:#fff;box-shadow:0 18px 42px #2a44801f}.route-error-card h1{font-size:20px;margin-bottom:12px}.route-error-card p{color:var(--text-muted)}.route-error-card button{margin-top:18px}@keyframes pulse-loader{0%,to{transform:scale(.92);opacity:.8}50%{transform:scale(1);opacity:1}}
