:root{--blue-50:#eff6ff;--blue-100:#dbeafe;--blue-200:#bfdbfe;--blue-300:#93c5fd;--blue-400:#60a5fa;--blue-500:#3b82f6;--blue-600:#2563eb;--blue-700:#1d4ed8;--blue-800:#1e40af;--blue-900:#1e3a8a;--white:#fff;--gray-50:#f8fafc;--gray-100:#f1f5f9;--gray-200:#e2e8f0;--gray-300:#cbd5e1;--gray-400:#94a3b8;--gray-500:#64748b;--gray-600:#475569;--gray-700:#334155;--gray-800:#1e293b;--gray-900:#0f172a;--green-500:#22c55e;--red-500:#ef4444;--red-600:#dc2626;--red-700:#b91c1c;--orange-500:#f97316;--yellow-400:#facc15;--nav-h:57px;--bg:var(--blue-50);--surface:var(--white);--surface-dim:var(--gray-100);--border:var(--blue-100);--border-strong:var(--blue-200);--text:var(--gray-800);--text-muted:var(--gray-500);--text-light:var(--gray-400);--accent:var(--blue-600);--accent-hover:var(--blue-700);--accent-light:var(--blue-100);--glass-bg:rgba(255,255,255,.72);--glass-border:rgba(147,197,253,.4);--glass-shadow:0 8px 32px rgba(37,99,235,.08), 0 2px 8px rgba(37,99,235,.04);--glass-blur:backdrop-filter: blur(16px) saturate(1.8);--r-xs:4px;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:24px;--r-2xl:32px;--r-pill:9999px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "Consolas", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--text-4xl:2.25rem;--shadow-sm:0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md:0 4px 16px rgba(37,99,235,.1), 0 2px 6px rgba(0,0,0,.04);--shadow-lg:0 10px 40px rgba(37,99,235,.12), 0 4px 12px rgba(0,0,0,.06);--shadow-xl:0 20px 60px rgba(37,99,235,.15);--t-fast:.15s ease;--t-base:.25s cubic-bezier(.4,0,.2,1);--t-slow:.4s cubic-bezier(.4,0,.2,1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-sans);background:linear-gradient(135deg, var(--blue-50) 0%, #e0ecff 40%, var(--blue-100) 100%);color:var(--text);-webkit-font-smoothing:antialiased;background-attachment:fixed;min-height:100vh;line-height:1.6}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit}.glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(16px)saturate(1.8);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.btn-primary{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-6);background:linear-gradient(135deg, var(--blue-500) 0%, var(--blue-700) 100%);color:#fff;border-radius:var(--r-pill);font-size:var(--text-sm);letter-spacing:.01em;transition:transform var(--t-fast), box-shadow var(--t-fast), opacity var(--t-fast);border:none;font-weight:600;display:inline-flex;box-shadow:0 4px 16px rgba(37,99,235,.35),0 1px 3px rgba(0,0,0,.12)}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 24px rgba(37,99,235,.45)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-ghost{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);color:var(--accent);border:1px solid var(--border-strong);border-radius:var(--r-pill);font-size:var(--text-sm);transition:background var(--t-fast), border-color var(--t-fast), transform var(--t-fast);background:0 0;font-weight:500;display:inline-flex}.btn-ghost:hover{background:var(--accent-light);border-color:var(--blue-300);transform:translateY(-1px)}.btn-ghost:active{transform:translateY(0)}.btn-back-mobile{display:none}.btn-flat{color:inherit;font:inherit;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);transition:background var(--t-fast);background:0 0;border:none}.btn-flat:hover{background:var(--accent-light)}.btn-sm{padding:var(--sp-1) var(--sp-3);font-size:var(--text-xs)}.btn-xs{padding:2px var(--sp-2);font-size:var(--text-xs)}.icon-btn{color:var(--text-muted);font-size:var(--text-lg);padding:var(--sp-1);border-radius:var(--r-sm);transition:color var(--t-fast), background var(--t-fast);background:0 0;border:none;line-height:1}.icon-btn:hover{color:var(--text);background:var(--gray-100)}.input-field{width:100%;padding:var(--sp-3) var(--sp-4);border:1.5px solid var(--border);border-radius:var(--r-md);font-size:var(--text-sm);color:var(--text);transition:border-color var(--t-fast), box-shadow var(--t-fast), background var(--t-fast);background:rgba(255,255,255,.8);outline:none}.input-field::placeholder{color:var(--text-light)}.input-field:focus{border-color:var(--blue-400);background:var(--white);box-shadow:0 0 0 3px rgba(96,165,250,.2)}.input-sm{padding:var(--sp-2) var(--sp-3);font-size:var(--text-xs)}.search-field{padding:var(--sp-2) var(--sp-4);border:1.5px solid var(--border);border-radius:var(--r-pill);font-size:var(--text-sm);color:var(--text);transition:border-color var(--t-fast), box-shadow var(--t-fast);background:rgba(255,255,255,.75);outline:none}.search-field:focus{border-color:var(--blue-400);box-shadow:0 0 0 3px rgba(96,165,250,.2)}.field-group{gap:var(--sp-2);flex-direction:column;display:flex}.field-group label{font-size:var(--text-sm);color:var(--gray-600);font-weight:500}.badge{padding:2px var(--sp-3);border-radius:var(--r-pill);font-size:var(--text-xs);letter-spacing:.04em;align-items:center;font-weight:600;display:inline-flex}.badge-blue{background:var(--blue-100);color:var(--blue-700)}.badge-green{color:#15803d;background:#dcfce7}.badge-red{color:#b91c1c;background:#fee2e2}.badge-gray{background:var(--gray-100);color:var(--gray-600)}.badge-orange{color:#c2410c;background:#ffedd5}.error-banner{padding:var(--sp-3) var(--sp-4);color:#b91c1c;border-radius:var(--r-md);font-size:var(--text-sm);background:#fee2e2;border:1px solid #fca5a5}.success-banner{padding:var(--sp-3) var(--sp-4);color:#166534;border-radius:var(--r-md);font-size:var(--text-sm);background:#dcfce7;border:1px solid #86efac}.page-layout{flex-direction:column;min-height:100vh;display:flex}.page-content{width:100%;max-width:1100px;padding:var(--sp-6);flex:1;margin:0 auto}.page-header{margin-bottom:var(--sp-6);justify-content:space-between;align-items:center;display:flex}.page-header h2{font-size:var(--text-2xl);color:var(--gray-800);font-weight:700}.navbar{align-items:center;gap:var(--sp-6);padding:var(--sp-3) var(--sp-6);z-index:100;border-bottom:1px solid var(--glass-border);border-radius:0;display:flex;position:sticky;top:0}.navbar-brand{align-items:center;gap:var(--sp-2);font-weight:700;font-size:var(--text-lg);color:var(--blue-700);display:flex}.navbar-links{align-items:center;gap:var(--sp-1);flex:1;display:flex}.navbar-right{align-items:center;gap:var(--sp-3);margin-left:auto;display:flex}.nav-link{padding:var(--sp-2) var(--sp-3);color:var(--gray-600);font-size:var(--text-sm);border-radius:var(--r-sm);transition:background var(--t-fast), color var(--t-fast);font-weight:500}.nav-link:hover{background:var(--accent-light);color:var(--accent);text-decoration:none}.username-chip{padding:var(--sp-1) var(--sp-3);background:var(--blue-100);color:var(--blue-800);border-radius:var(--r-pill);font-size:var(--text-xs);font-weight:600}.logo-icon{background:linear-gradient(135deg, var(--blue-500), var(--blue-800));border-radius:var(--r-md);width:36px;height:36px;position:relative;overflow:hidden;box-shadow:0 4px 12px rgba(37,99,235,.4)}.logo-icon:after{content:"";background:linear-gradient(135deg,rgba(255,255,255,.3) 0%,transparent 60%);position:absolute;inset:0}.logo-icon-sm{border-radius:var(--r-xs);background:linear-gradient(135deg, var(--blue-500), var(--blue-700));width:24px;height:24px}.auth-page{min-height:100vh;padding:var(--sp-6);background:linear-gradient(145deg,#dbeafe 0%,#eff6ff 50%,#e0f2fe 100%) fixed;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.auth-page:before{content:"";background:radial-gradient(circle,rgba(96,165,250,.18) 0%,transparent 70%);width:600px;height:600px;animation:8s ease-in-out infinite float;position:absolute;top:-30%;left:-20%}.auth-page:after{content:"";background:radial-gradient(circle,rgba(59,130,246,.12) 0%,transparent 70%);width:500px;height:500px;animation:10s ease-in-out infinite reverse float;position:absolute;bottom:-20%;right:-10%}.auth-card{width:100%;max-width:420px;padding:var(--sp-10);border-radius:var(--r-2xl);gap:var(--sp-6);z-index:1;flex-direction:column;animation:.5s cubic-bezier(.4,0,.2,1) slideUp;display:flex;position:relative}.auth-logo{text-align:center;align-items:center;gap:var(--sp-3);flex-direction:column;display:flex}.auth-logo h1{font-size:var(--text-3xl);color:var(--blue-800);letter-spacing:-.02em;font-weight:800}.auth-logo .logo-icon{border-radius:var(--r-lg);width:56px;height:56px}.auth-subtitle{color:var(--text-muted);font-size:var(--text-sm)}.auth-form{gap:var(--sp-4);flex-direction:column;display:flex}.auth-footer{text-align:center;font-size:var(--text-sm);color:var(--text-muted)}.resource-table{border-radius:var(--r-xl);overflow:hidden}.table-header{background:linear-gradient(135deg, var(--blue-600) 0%, var(--blue-800) 100%);color:#fff;font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;padding:var(--sp-3) var(--sp-5);gap:var(--sp-4);font-weight:600;display:grid}.resource-table .table-header{grid-template-columns:1fr 120px 160px 100px}.table-row{padding:var(--sp-4) var(--sp-5);gap:var(--sp-4);border-bottom:1px solid var(--border);transition:background var(--t-fast);align-items:center;display:grid}.resource-table .table-row{grid-template-columns:1fr 120px 160px 100px}.table-row:hover{background:rgba(219,234,254,.4)}.table-row:last-child{border-bottom:none}.file-name{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-weight:500;display:flex}.file-icon{font-size:var(--text-lg)}.file-size,.file-date{font-size:var(--text-sm);color:var(--text-muted)}.chat-layout{height:calc(100dvh - var(--nav-h));width:100%;max-width:900px;padding:0 var(--sp-4) var(--sp-4);gap:var(--sp-3);flex-direction:column;margin:0 auto;display:flex}.chat-header{padding:var(--sp-3) var(--sp-5);border-radius:var(--r-xl);margin-top:var(--sp-4);justify-content:space-between;align-items:center;display:flex}.chat-title{align-items:center;gap:var(--sp-3);font-weight:700;font-size:var(--text-lg);color:var(--blue-800);display:flex}.chat-icon{background:linear-gradient(135deg, var(--blue-500), var(--blue-700));border-radius:var(--r-md);width:32px;height:32px}.chat-badge{padding:2px var(--sp-3);background:var(--blue-100);color:var(--blue-700);border-radius:var(--r-pill);font-size:var(--text-xs);font-weight:600}.history-panel{gap:var(--sp-3);border-radius:var(--r-xl);padding:var(--sp-4);border:1px solid var(--glass-border);background:rgba(255,255,255,.55);flex-direction:column;max-height:65vh;display:flex}.history-panel-header{justify-content:space-between;align-items:center;display:flex}.history-panel-title{font-weight:700;font-size:var(--text-base);color:var(--blue-800)}.history-search-bar input{width:100%}.history-results{gap:var(--sp-2);flex-direction:column;flex:1;display:flex;overflow-y:auto}.history-result-row{padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);border:1px solid var(--border);background:rgba(255,255,255,.6);flex-direction:column;gap:2px;display:flex}.history-result-meta{gap:var(--sp-2);font-size:var(--text-xs);color:var(--text-muted);align-items:center;display:flex}.history-result-sender{color:var(--blue-700);font-weight:600}.history-result-time{opacity:.7}.history-result-content{font-size:var(--text-sm);color:var(--text-primary);word-break:break-word}.history-empty{text-align:center;color:var(--text-muted);font-size:var(--text-sm);padding:var(--sp-6)}.messages-wrapper{flex:1;min-height:0;position:relative;overflow:hidden}.messages-container{gap:var(--sp-3);height:100%;padding:var(--sp-4);border:1px solid var(--glass-border);border-radius:var(--r-xl);scroll-behavior:smooth;background:rgba(255,255,255,.4);flex-direction:column;display:flex;overflow-y:auto}.messages-container::-webkit-scrollbar{width:4px}.messages-container::-webkit-scrollbar-track{background:0 0}.messages-container::-webkit-scrollbar-thumb{background:var(--blue-200);border-radius:var(--r-pill)}.scroll-to-bottom-btn{bottom:var(--sp-3);right:var(--sp-4);background:var(--accent);width:36px;height:36px;color:var(--white);cursor:pointer;transition:background var(--t-fast), transform var(--t-fast), opacity var(--t-fast);z-index:5;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;line-height:1;animation:.2s fadeIn;display:flex;position:absolute;box-shadow:0 2px 8px rgba(37,99,235,.35)}.scroll-to-bottom-btn:hover{background:var(--accent-hover);transform:translateY(2px)}.message-bubble{gap:var(--sp-1);flex-direction:column;max-width:72%;animation:.3s fadeInUp;display:flex}.message-bubble.mine{align-self:flex-end}.message-bubble.theirs{align-self:flex-start}.bubble-header{align-items:baseline;gap:var(--sp-2);padding:0 var(--sp-1);display:flex}.bubble-sender{font-size:var(--text-xs);color:var(--blue-600);font-weight:600}.bubble-time{font-size:var(--text-xs);color:var(--text-light)}.bubble-content{padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);word-break:break-word;white-space:pre-wrap;line-height:1.7}.message-bubble.mine .bubble-content{background:linear-gradient(135deg, var(--blue-500) 0%, var(--blue-600) 100%);color:#fff;border-radius:var(--r-lg) var(--r-sm) var(--r-lg) var(--r-lg);box-shadow:0 4px 16px rgba(37,99,235,.25)}.message-bubble.theirs .bubble-content{background:var(--white);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm) var(--r-lg) var(--r-lg) var(--r-lg);box-shadow:var(--shadow-sm)}.deleted-msg{color:var(--text-light);font-style:italic}.reply-quote{padding:var(--sp-2) var(--sp-3);border-left:3px solid var(--blue-400);border-radius:0 var(--r-sm) var(--r-sm) 0;margin-bottom:var(--sp-1);font-size:var(--text-xs);background:rgba(219,234,254,.5)}.reply-quote-name{color:var(--blue-700);margin-right:var(--sp-2);font-weight:700}.reply-quote-text{color:var(--text-muted)}.bubble-footer{justify-content:flex-end;align-items:center;gap:var(--sp-2);padding:0 var(--sp-1);display:flex}.read-receipt{color:var(--text-light);font-size:10px}.read-receipt.read{color:var(--blue-500)}.reply-btn{font-size:var(--text-xs);opacity:0;transition:opacity var(--t-fast)}.message-bubble:hover .reply-btn{opacity:1}.attachment-chip{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border:1px solid var(--blue-200);border-radius:var(--r-lg);font-size:var(--text-xs);margin-top:var(--sp-1);background:rgba(219,234,254,.6);display:inline-flex}.att-name{color:var(--blue-700);text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-weight:500;overflow:hidden}.load-older-banner{text-align:center;padding:var(--sp-3) var(--sp-4);background:var(--blue-50);border-bottom:1px solid var(--border);border-radius:var(--r-md);font-size:var(--text-sm);color:var(--text-muted);justify-content:center;align-items:center;gap:var(--sp-3);display:flex}.typing-indicator{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);color:var(--text-muted);font-size:var(--text-xs);display:flex}.typing-dots{gap:4px;display:flex}.typing-dots span{background:var(--blue-400);border-radius:50%;width:7px;height:7px;animation:1.4s ease-in-out infinite typing-bounce}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}.reply-bar{padding:var(--sp-2) var(--sp-4);border-radius:var(--r-lg);justify-content:space-between;align-items:center;animation:.2s slideDown;display:flex}.reply-bar-content{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);display:flex}.reply-label{color:var(--text-muted)}.reply-sender{color:var(--blue-600);font-weight:600}.reply-preview{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.input-bar{align-items:flex-end;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-xl);display:flex}.chat-input{resize:none;min-height:44px;max-height:160px;padding:var(--sp-3) var(--sp-4);border:1.5px solid var(--border);border-radius:var(--r-lg);font-size:var(--text-sm);color:var(--text);transition:border-color var(--t-fast), box-shadow var(--t-fast);background:rgba(255,255,255,.8);outline:none;flex:1;line-height:1.5}.chat-input:focus{border-color:var(--blue-400);box-shadow:0 0 0 3px rgba(96,165,250,.2)}.input-actions{align-items:center;gap:var(--sp-2);display:flex}.btn-send{padding:var(--sp-3) var(--sp-5)}.upload-btn{font-size:var(--text-xl);padding:var(--sp-2) var(--sp-3);align-items:center;display:inline-flex}.modal-backdrop{z-index:200;backdrop-filter:blur(6px);padding:var(--sp-6);background:rgba(15,23,42,.45);justify-content:center;align-items:center;animation:.25s fadeIn;display:flex;position:fixed;inset:0}.modal-card{width:100%;max-width:400px;padding:var(--sp-8);border-radius:var(--r-2xl);gap:var(--sp-5);flex-direction:column;animation:.3s cubic-bezier(.4,0,.2,1) scaleIn;display:flex}.modal-header{justify-content:space-between;align-items:center;display:flex}.modal-header h3{font-size:var(--text-xl);color:var(--gray-800);font-weight:700}.modal-desc{font-size:var(--text-sm);color:var(--text-muted)}.modal-actions{gap:var(--sp-3);justify-content:flex-end;display:flex}.admin-layout{gap:var(--sp-6);padding:var(--sp-6);flex:1;grid-template-columns:220px 1fr;width:100%;max-width:1400px;margin:0 auto;display:grid}.admin-sidebar{border-radius:var(--r-xl);padding:var(--sp-5);gap:var(--sp-1);flex-direction:column;height:fit-content;display:flex;position:sticky;top:80px}.sidebar-title{font-size:var(--text-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:0 var(--sp-3) var(--sp-3);border-bottom:1px solid var(--border);margin-bottom:var(--sp-2);font-weight:700}.sidebar-link{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-size:var(--text-sm);color:var(--gray-600);text-align:left;cursor:pointer;width:100%;transition:background var(--t-fast), color var(--t-fast);background:0 0;border:none;font-weight:500}.sidebar-link:hover{background:var(--accent-light);color:var(--accent)}.sidebar-link.active{background:linear-gradient(135deg, var(--blue-500), var(--blue-700));color:#fff;box-shadow:0 4px 12px rgba(37,99,235,.3)}.admin-content{min-height:600px}.admin-tab{gap:var(--sp-5);flex-direction:column;display:flex}.admin-tab h2{font-size:var(--text-2xl);color:var(--gray-800);font-weight:700}.stats-grid{gap:var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.stat-card{padding:var(--sp-6);border-radius:var(--r-xl);align-items:center;gap:var(--sp-2);text-align:center;transition:transform var(--t-base);flex-direction:column;display:flex}.stat-card:hover{transform:translateY(-3px)}.stat-icon{font-size:2rem}.stat-value{font-size:var(--text-3xl);color:var(--blue-700);font-weight:800}.stat-label{font-size:var(--text-sm);color:var(--text-muted);font-weight:500}.table-wrap{border-radius:var(--r-xl);overflow:hidden}.cols-4{grid-template-columns:1fr 1fr 1fr 1fr}.cols-5{grid-template-columns:1fr 1fr 1fr 1fr auto}.cols-6{grid-template-columns:1fr 1fr 1fr 1fr 1fr auto}.action-btns{gap:var(--sp-1);flex-wrap:wrap;display:flex}.admin-messages{gap:var(--sp-2);flex-direction:column;display:flex}.admin-msg-row{align-items:baseline;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--white);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--text-sm);transition:background var(--t-fast);grid-template-columns:120px 80px 1fr auto;display:grid}.admin-msg-row:hover{background:var(--blue-50)}.admin-msg-row.deleted{opacity:.5}.msg-sender{color:var(--blue-700);font-weight:600}.msg-time{color:var(--text-muted);font-size:var(--text-xs)}.msg-content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.att-badge{font-size:var(--text-sm)}.alerts-list{gap:var(--sp-4);flex-direction:column;display:flex}.alert-card{padding:var(--sp-4) var(--sp-5);border-radius:var(--r-xl);gap:var(--sp-3);flex-direction:column;display:flex}.alert-card.high{border-left:4px solid var(--red-500)}.alert-card.medium{border-left:4px solid var(--orange-500)}.alert-card.low{border-left:4px solid var(--yellow-400)}.alert-header{align-items:center;gap:var(--sp-3);display:flex}.alert-type{font-weight:600;font-size:var(--text-sm)}.alert-time{font-size:var(--text-xs);color:var(--text-muted);margin-left:auto}.alert-body{font-size:var(--text-sm);color:var(--text-muted)}.alert-action{color:var(--red-500);font-weight:600}.invite-create{align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);border-radius:var(--r-xl);flex-wrap:wrap;display:flex}.new-code-banner{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--blue-50);border:1px solid var(--blue-200);border-radius:var(--r-lg);font-size:var(--text-sm);display:flex}.code-display{font-family:var(--font-mono);font-size:var(--text-sm);padding:2px var(--sp-3);background:var(--blue-100);color:var(--blue-800);border-radius:var(--r-xs);letter-spacing:.08em}.tab-header-row{justify-content:space-between;align-items:center;display:flex}.tab-header-actions{align-items:center;gap:var(--sp-3);display:flex}.loading-screen{justify-content:center;align-items:center;min-height:100vh;display:flex}.loading-rows{background:linear-gradient(90deg, var(--gray-100) 25%, var(--gray-50) 50%, var(--gray-100) 75%);border-radius:var(--r-xl);background-size:200% 100%;height:200px;animation:1.5s infinite shimmer}.spinner{border:4px solid var(--blue-200);border-top-color:var(--blue-500);border-radius:50%;width:48px;height:48px;animation:.9s linear infinite spin}.empty-state{text-align:center;padding:var(--sp-16);align-items:center;gap:var(--sp-4);color:var(--text-muted);flex-direction:column;display:flex}.empty-icon{font-size:3rem}.not-found{text-align:center;padding:var(--sp-16);align-items:center;gap:var(--sp-4);flex-direction:column;display:flex}@keyframes float{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-20px)scale(1.02)}}@keyframes slideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes typing-bounce{0%,80%,to{opacity:.4;transform:scale(0)}40%{opacity:1;transform:scale(1)}}*{scrollbar-width:thin;scrollbar-color:var(--blue-200) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--blue-200);border-radius:3px}@media (width<=768px){.navbar{padding:0 var(--sp-3);gap:var(--sp-2);height:var(--nav-h);flex-wrap:nowrap;overflow-x:auto}.navbar-brand{font-size:var(--text-sm);white-space:nowrap;gap:var(--sp-1);flex-shrink:0}.navbar-links,.navbar-right{gap:var(--sp-1);flex-shrink:0}.nav-link{padding:var(--sp-1) var(--sp-2);font-size:var(--text-xs);white-space:nowrap}.page-header{align-items:stretch;gap:var(--sp-3);text-align:center;flex-direction:column}.page-header h2{margin-bottom:0}.admin-layout{grid-template-columns:1fr}.admin-sidebar{position:static}.auth-card{padding:var(--sp-4);width:calc(100% - var(--sp-6));max-width:420px;margin:0 auto}.chat-layout{padding:0 var(--sp-2) var(--sp-2)}.message-bubble{max-width:95%}.cols-5{grid-template-columns:1fr 1fr}.table-header.cols-5>span:nth-child(n+3),.table-row.cols-5>span:nth-child(n+3){display:none}.cols-6{grid-template-columns:1fr auto}.table-header.cols-6>span:nth-child(n+2):not(:last-child),.table-row.cols-6>span:nth-child(n+2):not(:last-child){display:none}.modal-box{max-width:calc(100vw - var(--sp-6));padding:var(--sp-4)}.history-panel{inset:0;top:var(--nav-h);z-index:50;border-radius:0;position:fixed}.page-content{padding:var(--sp-3)}.input-bar{padding:var(--sp-2);gap:var(--sp-2)}.chat-input{font-size:var(--text-sm)}.btn-send{padding:var(--sp-2) var(--sp-4)}}.chat-page-layout{height:calc(100dvh - var(--nav-h));width:100%;max-width:1200px;margin:0 auto;display:flex}.chat-sidebar{border-right:1px solid var(--border);background:var(--surface);width:320px;padding:var(--sp-4);gap:var(--sp-4);box-sizing:border-box;flex-direction:column;height:100%;display:flex}.chat-main{flex-direction:column;flex:1;height:100%;display:flex}.profile-panel{padding:var(--sp-3);border-radius:var(--r-lg);background:var(--surface-dim);border:1px solid var(--border);gap:var(--sp-2);flex-direction:column;display:flex}.profile-title{font-weight:600;font-size:var(--text-sm);color:var(--text-muted)}.bio-input-group{gap:var(--sp-2);display:flex}.bio-text-field{font-size:var(--text-xs);padding:4px var(--sp-2);border:1px solid var(--border);border-radius:var(--r-sm);flex:1}.partner-search{gap:var(--sp-1);flex-direction:column;display:flex}.partner-search-input{width:100%;font-size:var(--text-sm);padding:6px var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);box-sizing:border-box}.partner-list{gap:var(--sp-2);margin-top:var(--sp-2);flex-direction:column;flex:1;display:flex;overflow-y:auto}.partner-item{padding:var(--sp-3);border-radius:var(--r-md);cursor:pointer;background:var(--surface);border:1px solid var(--border);text-align:left;flex-direction:column;transition:all .2s;display:flex}.partner-item:hover{background:var(--blue-50);border-color:var(--blue-200)}.partner-item.active{background:var(--blue-100);border-color:var(--blue-300);font-weight:600}.partner-name{font-size:var(--text-sm);color:var(--text);font-weight:600}.partner-bio{font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;overflow:hidden}@media (width<=768px){.chat-page-layout{left:0;right:0;top:var(--nav-h);max-width:none;height:auto;margin:0;position:fixed;bottom:0;overflow:hidden}.chat-sidebar{z-index:2;border-bottom:none;border-right:none;width:100%;height:100%;transition:transform .28s cubic-bezier(.4,0,.2,1);position:absolute;inset:0;overflow-y:auto;transform:translate(0)}.chat-main{z-index:1;width:100%;height:100%;transition:transform .28s cubic-bezier(.4,0,.2,1);position:absolute;inset:0;transform:translate(100%)}.chat-page-layout.has-partner .chat-sidebar{pointer-events:none;transform:translate(-100%)}.chat-page-layout.has-partner .chat-main{z-index:2;transform:translate(0)}.chat-layout{height:100%}.btn-back-mobile{display:inline-flex!important}}