:root{--bg: #f3f4f6;--panel: #ffffff;--border: #e5e7eb;--text: #111827;--muted: #6b7280;--primary: #2563eb;--primary-hover: #1d4ed8;--danger: #dc2626;--success: #059669;--warning: #d97706;--tap: 44px}*{box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,Helvetica Neue,Arial,sans-serif;margin:0;background:var(--bg);color:var(--text);font-size:14px}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{background:var(--primary);color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px}button:hover:not(:disabled){background:var(--primary-hover)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:#fff;color:var(--text);border:1px solid var(--border)}button.danger{background:var(--danger)}button.success{background:var(--success)}input,select,textarea{border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:14px;font-family:inherit;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.app-shell{display:grid;grid-template-columns:240px 1fr;height:100vh;min-height:100vh;overflow:hidden}.sidebar{background:#111827;color:#fff;padding:20px 14px 16px;display:flex;flex-direction:column;overflow-y:auto;position:relative}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:0 6px;margin-bottom:24px}.sidebar-logo{width:36px;height:36px;flex:0 0 36px;border-radius:9px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff;font-weight:800;font-size:14px;letter-spacing:.5px;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.sidebar h1{font-size:17px;margin:0;font-weight:700;letter-spacing:.2px}.sidebar nav{flex:1;display:flex;flex-direction:column;gap:2px}.sidebar a{display:flex;align-items:center;gap:10px;color:#cbd5e1;padding:10px 12px;border-radius:8px;font-size:14px;min-height:40px;transition:background .12s ease}.sidebar a>span{flex:1}.sidebar a:hover{background:#1f2937;text-decoration:none;color:#fff}.sidebar a.active{background:var(--primary);color:#fff;font-weight:600}.sidebar .user-box{margin-top:16px;display:flex;align-items:center;gap:10px;font-size:12px;color:#94a3b8;border-top:1px solid #1f2937;padding-top:12px}.user-box-info{flex:1;min-width:0}.sidebar .user-box .name{color:#fff;font-weight:600;font-size:13px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{color:#94a3b8;font-size:11px;margin-top:1px}.user-avatar-small{flex:0 0 32px;width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#6366f1);color:#fff;font-weight:700;font-size:12px;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.sidebar-backdrop{display:none}.main{overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;min-height:0;min-width:0;background:#f8fafc}.main-content{padding:8px 32px 32px;flex:1;min-width:0}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:18px;margin-bottom:16px}.kpi-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px}.kpi-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px}.kpi-card .label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.5px}.kpi-card .value{font-size:28px;font-weight:700;margin-top:4px}table{width:100%;border-collapse:collapse;background:var(--panel)}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);font-size:13px}th{background:#f9fafb;font-weight:600;color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:.5px}tr:hover td{background:#f9fafb}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;color:#fff}.row{display:flex;gap:12px;align-items:center}.row>*{flex:1}h2{font-size:22px;margin:0 0 16px}h3{font-size:16px;margin:0 0 12px}.login-shell{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:24px 16px;background:linear-gradient(135deg,#2563eb,#1e40af,#7c3aed);background-attachment:fixed}.login-box{background:#fff;border-radius:16px;padding:36px 32px 28px;width:100%;max-width:400px;box-shadow:0 24px 48px -8px #00000040,0 0 0 1px #ffffff14}.login-brand{text-align:center;margin-bottom:28px}.login-logo{width:72px;height:72px;margin:0 auto 14px;border-radius:18px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff;font-weight:800;font-size:28px;letter-spacing:1px;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 16px -4px #2563eb66;-webkit-user-select:none;user-select:none}.login-box h1{margin:0 0 6px;font-size:22px;font-weight:700;color:#0f172a}.login-sub{margin:0;color:var(--muted);font-size:13px}.input-with-action{position:relative}.input-with-action input{padding-right:44px!important;width:100%}.input-action{position:absolute;top:50%;right:4px;transform:translateY(-50%);background:transparent;border:0;color:var(--muted);cursor:pointer;width:36px;height:36px;padding:0;font-size:18px;display:flex;align-items:center;justify-content:center;border-radius:6px}.input-action:hover{background:#f1f5f9}.login-submit{width:100%;margin-top:16px;min-height:44px;font-size:15px;font-weight:600}.login-help{text-align:center;font-size:12px;color:var(--muted);margin:16px 0 0}.login-footer{margin-top:20px;color:#ffffffb3;font-size:11px;text-align:center;letter-spacing:.3px}@media (max-width: 480px){.login-box{padding:28px 20px 22px;border-radius:12px}.login-logo{width:64px;height:64px;font-size:24px}}.error{color:var(--danger);font-size:12px;margin-top:8px}.grade-A\+,.grade-A{color:#065f46;background:#d1fae5;padding:2px 8px;border-radius:10px;display:inline-block}.grade-B{color:#1e3a8a;background:#dbeafe;padding:2px 8px;border-radius:10px;display:inline-block}.grade-C{color:#92400e;background:#fef3c7;padding:2px 8px;border-radius:10px;display:inline-block}.grade-D{color:#991b1b;background:#fee2e2;padding:2px 8px;border-radius:10px;display:inline-block}.lb-bar{width:60px;height:6px;background:#e5e7eb;border-radius:999px;overflow:hidden;display:inline-block;vertical-align:middle;margin-left:6px}.lb-bar>div{height:100%;background:linear-gradient(90deg,#10b981,#2563eb);border-radius:999px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{background:#00000008}th.sortable .sort-ind{margin-left:4px;font-size:11px;opacity:.6}th.sortable.active .sort-ind{opacity:1;color:var(--primary)}.toolbar{display:flex;gap:12px;margin-bottom:16px;align-items:center}.spacer{flex:1}.topbar{display:flex;align-items:center;gap:12px;padding:12px 24px;background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}.page-title{font-size:18px;font-weight:700;margin:0;color:var(--text)}.topbar-spacer{flex:1}.hamburger{display:none;background:transparent;border:0;font-size:22px;width:40px;height:40px;padding:0;color:var(--text);cursor:pointer;border-radius:8px}.hamburger:hover{background:#f1f5f9}.user-menu-wrap{position:relative}.user-menu-btn{display:flex;align-items:center;gap:8px;background:transparent;border:1px solid var(--border);border-radius:999px;padding:4px 12px 4px 4px;min-height:40px;color:var(--text);font-size:13px;cursor:pointer}.user-menu-btn:hover{background:#f8fafc}.user-menu-name{max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.user-menu-pop{position:absolute;top:calc(100% + 8px);right:0;min-width:240px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px -8px #00000026;padding:4px;z-index:60;animation:menuPop .12s ease}@keyframes menuPop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.user-menu-header{padding:12px 12px 10px;border-bottom:1px solid var(--border);margin-bottom:4px}.user-menu-name-full{font-weight:600;color:var(--text);font-size:14px}.user-menu-meta{color:var(--muted);font-size:12px;margin-top:2px}.user-menu-item{display:block;width:100%;text-align:left;background:transparent;border:0;padding:10px 12px;border-radius:6px;color:var(--danger);font-size:13px;font-weight:500;cursor:pointer;min-height:40px}.user-menu-item:hover{background:#fef2f2}.bell-wrap{position:relative}.bell-btn{background:#fff;color:var(--text);border:1px solid var(--border);border-radius:999px;width:40px;height:40px;padding:0;font-size:18px;position:relative;display:flex;align-items:center;justify-content:center}.bell-badge{position:absolute;top:-4px;right:-4px;background:var(--danger);color:#fff;border-radius:999px;font-size:11px;padding:2px 6px;min-width:16px;text-align:center}.bell-panel{position:absolute;right:0;top:44px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 10px 30px #00000026;width:360px;z-index:100}.bell-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid var(--border)}.bell-item{display:block;padding:10px 12px;border-bottom:1px solid var(--border);color:var(--text)}.bell-item:hover{background:#f9fafb;text-decoration:none}.bell-item.unread{background:#eff6ff}.bell-title{font-weight:600;font-size:13px}.bell-body{font-size:12px;color:var(--muted);margin-top:2px}.bell-time{font-size:11px;color:var(--muted);margin-top:4px}button.small{padding:4px 8px;font-size:12px}.main-content:has(.chat-page){padding:0!important;display:flex;flex-direction:column;min-height:0;overflow:hidden}.main:has(.chat-page){overflow:hidden}.chat-page{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;background:#fff}.chat-shell{display:grid;grid-template-columns:320px 1fr;grid-template-rows:1fr;gap:0;height:100%;width:100%;min-height:0;border-top:1px solid var(--border);background:#fff;overflow:hidden}.chat-sidebar{display:flex;flex-direction:column;background:#f8fafc;border-right:1px solid var(--border);min-width:0;min-height:0;height:100%;overflow:hidden}.chat-sb-header{padding:14px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);background:#fff}.chat-search-wrap{padding:8px 12px}.chat-search{width:100%;padding:8px 12px;border-radius:20px;border:1px solid var(--border);background:#fff;font-size:13px}.chat-search:focus{outline:none;border-color:var(--primary)}.new-group-form{padding:12px;background:#fff;border-bottom:1px solid var(--border)}.new-group-form input,.new-group-form select{width:100%;margin-bottom:8px}.chat-list{flex:1;overflow-y:auto}.chat-section-label{font-size:10px;color:var(--muted);letter-spacing:.5px;font-weight:700;padding:12px 16px 6px;text-transform:uppercase}.chat-row{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;position:relative;transition:background .1s;border-left:3px solid transparent}.chat-row:hover{background:#0000000a}.chat-row.active{background:#2563eb14;color:var(--text);border-left-color:var(--primary)}.chat-row.active .chat-row-name{color:var(--primary)}.chat-row.active .chat-row-preview,.chat-row.active .chat-row-time{color:var(--muted)}.chat-row-preview.muted-preview{color:#9ca3af;font-style:italic}.chat-row-main{flex:1;min-width:0}.chat-row-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.chat-row-name{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-row-time{font-size:11px;color:var(--muted);flex-shrink:0}.chat-row-bot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}.chat-row-preview{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.chat-row-badge{background:var(--primary);color:#fff;font-size:11px;font-weight:600;min-width:18px;height:18px;border-radius:9px;padding:0 6px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.chat-row.active .chat-row-badge{background:var(--primary);color:#fff}.chat-row-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.chat-row-unread-dot{width:10px;height:10px;border-radius:50%;background:var(--primary, #3b82f6);flex-shrink:0}.chat-row.has-unread .chat-row-name{font-weight:700}.chat-row.has-unread .chat-row-preview{color:#0f172a;font-weight:500}.avatar{border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;flex-shrink:0;-webkit-user-select:none;user-select:none}.chat-main{display:flex;flex-direction:column;background:#f0f4f8;background-image:radial-gradient(circle at 25% 30%,rgba(37,99,235,.04) 0%,transparent 30%),radial-gradient(circle at 75% 80%,rgba(124,58,237,.04) 0%,transparent 30%);min-width:0;min-height:0;height:100%;overflow:hidden;position:relative}.chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted)}.chat-empty-room{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center;margin:auto;background:#ffffff8c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:16px;max-width:360px;box-shadow:0 2px 8px #0000000a}.chat-empty-room .cer-icon{font-size:64px;margin-bottom:12px;opacity:.85}.chat-empty-room .cer-title{font-size:15px;font-weight:600;color:var(--text);margin-bottom:6px}.chat-empty-room .cer-sub{font-size:13px;color:var(--muted)}.chat-header{flex-shrink:0;padding:14px 16px;display:flex;align-items:center;gap:12px;background:#fff;border-bottom:1px solid var(--border);box-shadow:0 2px 6px #0000000d;position:relative;z-index:4}.chat-header .icon-btn{width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:16px;transition:background .15s}.chat-header .icon-btn:hover{background:#f3f4f6}.chat-header .icon-btn.active{background:#2563eb1f;color:var(--primary)}.chat-header-title{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-header-sub{font-size:12px;color:var(--muted)}.header-kebab-menu{position:absolute;top:100%;right:8px;margin-top:6px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px #0000001f;padding:4px;min-width:180px;z-index:20}.header-kebab-menu button{display:block;width:100%;text-align:left;background:#fff!important;color:var(--text)!important;border:none!important;padding:8px 12px!important;font-size:13px!important;cursor:pointer;border-radius:4px}.header-kebab-menu button:hover{background:#f3f4f6!important}.chat-search-in-room{flex-shrink:0;display:flex;align-items:center;gap:6px;padding:8px 16px;background:#fafbfc;border-bottom:1px solid var(--border)}.chat-search-in-room input{flex:1;border:1px solid var(--border);border-radius:18px;padding:7px 14px;font-size:13px;outline:none;background:#fff}.chat-search-in-room input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.chat-info{flex-shrink:0;padding:12px 16px;background:#fff;border-bottom:1px solid var(--border);max-height:260px;overflow-y:auto}.member-list{display:flex;flex-direction:column;gap:4px}.member-row{display:flex;align-items:center;gap:10px;padding:6px 4px;border-radius:6px}.member-row:hover{background:#f3f4f6}.chat-messages{flex:1 1 0;min-height:0;overflow-y:auto;padding:16px 16px 8px;display:flex;flex-direction:column;gap:2px}.day-sep{display:flex;justify-content:center;margin:12px 0}.day-sep>span{background:#ffffffd9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:4px 12px;border-radius:12px;font-size:11px;color:var(--muted);font-weight:500;box-shadow:0 1px 2px #0000000a}.msg-line{display:flex;gap:8px;align-items:flex-end;max-width:100%}.msg-line.mine{justify-content:flex-end}.msg-avatar{flex-shrink:0;width:32px;display:flex;align-items:flex-end}.msg-bubble-wrap{display:flex;flex-direction:column;max-width:min(70%,520px)}.msg-line.mine .msg-bubble-wrap{align-items:flex-end}.msg-author{font-size:11px;font-weight:600;color:var(--primary);margin-left:12px;margin-bottom:2px}.msg-bubble{padding:6px 60px 18px 10px;border-radius:14px;background:#fff;box-shadow:0 1px 1px #0000000f;position:relative;word-wrap:break-word;overflow-wrap:break-word;max-width:100%;min-height:28px}.msg-line.mine .msg-bubble{padding-right:72px}.msg-line.mine .msg-bubble{background:linear-gradient(135deg,#4f8df7,#2563eb);color:#fff;border-bottom-right-radius:4px}.msg-line.theirs .msg-bubble{border-bottom-left-radius:4px}.msg-bubble.only-emoji{background:transparent!important;box-shadow:none;font-size:40px;padding:2px 6px 18px;line-height:1.15;min-height:0}.msg-bubble.only-emoji .msg-text{font-size:40px}.msg-bubble.only-emoji .msg-meta{position:static;background:#ffffffbf;border-radius:8px;padding:1px 6px;color:var(--muted);margin-top:4px;align-self:flex-end;display:inline-flex}.msg-bubble.pending{opacity:.75}.msg-bubble.failed{border:1px solid #ef4444}.msg-text{white-space:pre-wrap;font-size:14px;line-height:1.4}.msg-img{display:block;max-width:320px;max-height:320px;border-radius:10px;margin:-2px -4px 2px;cursor:zoom-in}.msg-file{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;background:#0000000d;border-radius:8px;text-decoration:none;color:inherit;font-size:13px;margin-bottom:2px}.msg-line.mine .msg-file{background:#ffffff2e;color:#fff}.msg-meta{font-size:11px;color:#00000073;white-space:nowrap;-webkit-user-select:none;user-select:none;display:inline-flex;align-items:center;gap:2px;line-height:1;position:absolute;bottom:4px;right:10px}.msg-line.mine .msg-meta{color:#ffffffd9}.msg-status{margin-left:2px;font-size:10px}.chat-composer{flex-shrink:0;padding:10px 14px;background:#fff;border-top:1px solid var(--border);display:flex;gap:6px;align-items:flex-end;position:relative;z-index:5;box-shadow:0 -2px 6px #00000008}.chat-composer>.icon-btn,.chat-composer>div>.icon-btn,.chat-composer>.send-btn{margin-bottom:2px}.chat-text-input{flex:1;border:1px solid var(--border);border-radius:22px;padding:10px 18px;font-size:14px;font-family:inherit;outline:none;background:#f3f4f6;min-height:22px;max-height:130px;line-height:1.45;resize:none;overflow-y:auto;transition:background .15s,border-color .15s}.chat-text-input::-webkit-scrollbar{width:6px}.chat-text-input::-webkit-scrollbar-thumb{background:#0000002e;border-radius:3px}.chat-text-input:focus{background:#fff;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.send-btn{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:none;border-radius:50%;width:42px;height:42px;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .1s,box-shadow .15s;flex-shrink:0;box-shadow:0 2px 6px #2563eb4d}.send-btn:hover:not(:disabled){transform:scale(1.05);box-shadow:0 4px 10px #2563eb66}.send-btn:active:not(:disabled){transform:scale(.95)}.send-btn:disabled{background:#cbd5e1;cursor:not-allowed;box-shadow:none}.scroll-to-bottom-btn{position:absolute;right:18px;bottom:78px;width:42px;height:42px;border-radius:50%;background:#fff;border:1px solid var(--border);color:var(--text);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px #0000001f;z-index:8;transition:transform .15s,opacity .2s;animation:fadeInUp .2s ease}.scroll-to-bottom-btn:hover{transform:translateY(-2px);background:#f8fafc}.scroll-to-bottom-btn .badge{position:absolute;top:-4px;right:-4px;background:var(--primary);color:#fff;font-size:11px;font-weight:700;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.day-sep.sticky{position:sticky;top:0;z-index:2}.chat-typing-row{flex-shrink:0;padding:4px 16px 6px;font-size:12px;color:var(--muted);font-style:italic;display:flex;align-items:center;gap:6px;min-height:22px}.typing-dots{display:inline-flex;gap:3px;margin-left:4px}.typing-dots span{width:5px;height:5px;border-radius:50%;background:var(--primary);animation:typingPulse 1.2s infinite ease-in-out}.typing-dots span:nth-child(2){animation-delay:.15s}.typing-dots span:nth-child(3){animation-delay:.3s}@keyframes typingPulse{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.chat-pending{flex-shrink:0;padding:8px 12px;background:#fef3c7;display:flex;align-items:center;gap:12px;font-size:13px;border-top:1px solid var(--border)}.icon-btn{background:transparent;color:var(--text);border:none;border-radius:50%;width:36px;height:36px;font-size:20px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .1s}.icon-btn:hover{background:#0000000f}.icon-btn:disabled{opacity:.5;cursor:wait}.emoji-pick{position:absolute;bottom:44px;left:0;z-index:50;width:320px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px #00000026;overflow:hidden}.emoji-tabs{display:flex;border-bottom:1px solid var(--border);font-size:18px}.emoji-tab{flex:1;background:transparent;border:none;padding:8px 4px;cursor:pointer;border-bottom:2px solid transparent}.emoji-tab.active{background:#f3f4f6;border-bottom-color:var(--primary)}.emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px;padding:8px;max-height:240px;overflow-y:auto}.emoji-cell{background:transparent;border:none;font-size:22px;padding:4px;cursor:pointer;border-radius:6px;transition:background .08s}.emoji-cell:hover{background:#f3f4f6}.img-preview{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e6;z-index:1000;display:flex;align-items:center;justify-content:center;cursor:zoom-out;animation:fadein .15s ease}.img-preview img{max-width:92vw;max-height:92vh;border-radius:8px;box-shadow:0 20px 60px #00000080}@keyframes fadein{0%{opacity:0}to{opacity:1}}.eval-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:12px}.stars-row{display:flex;gap:6px;margin:8px 0}.star{cursor:pointer;font-size:24px;filter:grayscale(1);opacity:.4}.star.active{filter:none;opacity:1}.comment{padding:10px;border-bottom:1px solid var(--border)}.comment-author{font-weight:600;font-size:13px}.comment-time{color:var(--muted);font-size:11px}.comment-body{margin-top:4px;white-space:pre-wrap}.field{margin-bottom:12px}.field label{display:block;font-size:12px;font-weight:600;margin-bottom:4px;color:var(--muted)}.user-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.user-table{width:100%;min-width:920px;border-collapse:collapse;font-size:13px}.user-table th{background:#f8fafc;text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-weight:600;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.3px}.user-table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle;word-break:break-word}.user-table tbody tr:hover{background:#fafbfc}.user-table tbody tr:last-child td{border-bottom:none}.user-table tr.row-disabled{opacity:.55}.role-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;letter-spacing:.2px;white-space:nowrap}.role-SUPER_ADMIN{background:#fef2f2;color:#b91c1c}.role-CEO{background:#fef3c7;color:#b45309}.role-LEADER{background:#ede9fe;color:#6d28d9}.role-STAFF{background:#e0f2fe;color:#0369a1}.status-tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 8px;border-radius:10px;font-weight:500}.status-on{background:#ecfdf5;color:#047857}.status-off{background:#f3f4f6;color:#6b7280}button.ghost.small{padding:4px 8px;font-size:14px;background:transparent;border:1px solid var(--border);border-radius:6px;cursor:pointer}button.ghost.small:hover{background:#f3f4f6}button.ghost.small.danger:hover{background:#fee2e2;border-color:#fca5a5}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;animation:fadein .15s ease}.modal{background:#fff;border-radius:12px;max-width:560px;width:100%;max-height:90vh;overflow-y:auto;padding:20px 24px;box-shadow:0 20px 60px #00000040}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:500}.form-grid label small{color:var(--muted);font-weight:400}.form-grid input,.form-grid select{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:14px}.upload-zone{border:2px dashed var(--border);border-radius:10px;padding:24px;text-align:center;cursor:pointer;background:#fafbfc;transition:all .15s}.upload-zone:hover{border-color:var(--primary);background:#f0f7ff}.upload-zone.drag-over{border-color:var(--primary);background:#e0f2fe;transform:scale(1.01)}.attachment-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-top:12px}.attachment-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:#fff;position:relative}.attachment-item .att-thumb{width:44px;height:44px;object-fit:cover;border-radius:6px;flex-shrink:0}.attachment-item .att-icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:24px;background:#f3f4f6;border-radius:6px;flex-shrink:0}.attachment-item .att-info{flex:1;min-width:0}.attachment-item .att-name{display:block;font-size:13px;font-weight:500;color:var(--text);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attachment-item .att-name:hover{color:var(--primary);text-decoration:underline}.attachment-item .att-meta{font-size:11px;color:var(--muted);margin-top:2px}.attachment-item .att-remove{background:transparent;border:none;color:var(--muted);cursor:pointer;font-size:14px;padding:4px 6px;border-radius:4px}.attachment-item .att-remove:hover{background:#fee2e2;color:#b91c1c}.task-attachments-block{margin-top:12px;padding:12px;background:#fafbfc;border:1px solid var(--border);border-radius:8px}.att-block-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px}.att-add-btn{cursor:pointer;color:var(--primary);font-size:12px;font-weight:600;padding:4px 8px;border:1px solid var(--primary);border-radius:6px}.att-add-btn:hover{background:var(--primary);color:#fff}.dept-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;align-items:center}.dept-chip{padding:4px 10px;font-size:12px;background:#fff;border:1px solid var(--border);border-radius:14px;cursor:pointer;color:var(--text);transition:all .1s}.dept-chip:hover{border-color:var(--primary);color:var(--primary)}.dept-chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}.assignee-chips{position:relative;display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:40px;padding:6px;border:1px solid var(--border);border-radius:6px;background:#fff}.user-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 3px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:14px;font-size:13px;color:#1e40af}.chip-avatar{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;color:#fff;font-size:10px;font-weight:700}.chip-remove{background:transparent;border:none;color:#1e40af;cursor:pointer;padding:0 2px;font-size:12px;margin-left:2px}.chip-remove:hover{color:#b91c1c}.add-user-btn{padding:4px 10px;font-size:12px;background:#fff;border:1px dashed var(--border);border-radius:14px;cursor:pointer;color:var(--muted)}.add-user-btn:hover{border-color:var(--primary);color:var(--primary)}.user-picker{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000001f;z-index:50;max-height:380px;display:flex;flex-direction:column}.picker-search{padding:8px 10px;border:none;border-bottom:1px solid var(--border);outline:none;font-size:13px}.picker-list{flex:1;overflow-y:auto;max-height:280px}.picker-row{display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;font-size:13px;border-bottom:1px solid #f3f4f6}.picker-row:hover{background:#f9fafb}.picker-row.checked{background:#eff6ff}.picker-row input[type=checkbox]{width:auto;margin:0}.picker-footer{padding:8px 10px;display:flex;justify-content:space-between;gap:6px;border-top:1px solid var(--border)}.picker-footer button{padding:4px 10px;font-size:12px}@media (max-width: 1024px){.app-shell{grid-template-columns:220px 1fr}.sidebar h1{font-size:16px}.sidebar a{font-size:13px}.main-content{padding:8px 16px 16px}table{font-size:12px}}@media (max-width: 768px){.app-shell{display:block;height:100vh;overflow:hidden}.sidebar{position:fixed;top:0;left:0;width:280px;max-width:86vw;height:100vh;z-index:200;transform:translate(-100%);transition:transform .2s ease;box-shadow:0 0 24px #0000004d}.sidebar.open{transform:translate(0)}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:150;animation:fadeIn .18s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.hamburger{display:flex;align-items:center;justify-content:center}.main{height:100vh;overflow-y:auto}.main-content{padding:12px}.topbar{padding:10px 12px}.page-title{font-size:16px}.user-menu-name{display:none}.user-menu-btn{padding:4px}button,.icon-btn,a.btn-like,input[type=submit]{min-height:var(--tap)}.icon-btn,.kebab-btn{min-width:var(--tap)}.stat-pill,.dept-chip,.sidebar a{min-height:var(--tap)}.msg-action-btn,.att-remove,.chip-remove{min-height:32px;min-width:32px}table{display:block;overflow-x:auto;white-space:nowrap;font-size:12px}table thead,table tbody{display:table;width:100%;min-width:600px}.stat-grid,.kpi-grid,.kpi-cards{grid-template-columns:repeat(2,1fr)!important}.form-grid{grid-template-columns:1fr!important}input[type=text],input[type=number],input[type=email],input[type=tel],input[type=password],textarea,select{width:100%;font-size:16px}.chat-shell{flex-direction:column}.chat-list,.chat-room{width:100%!important}.dept-chips,.assignee-chips{gap:6px}.dept-chip,.user-chip{font-size:12px;padding:8px 12px;min-height:36px}}@media (max-width: 480px){.stat-grid,.kpi-grid,.kpi-cards{grid-template-columns:1fr!important}h2{font-size:18px}h3{font-size:15px}.modal{width:95%!important;max-width:95%!important;padding:16px}.topbar{gap:8px}}.reply-quote{border-left:3px solid var(--primary);background:#2563eb14;padding:6px 8px;border-radius:4px;margin-bottom:6px;font-size:12px}.msg-bubble.mine .reply-quote{background:#ffffff2e;border-left-color:#ffffffe6}.reply-author{font-weight:600;color:var(--primary);font-size:11px}.msg-bubble.mine .reply-author{color:#fffffff2}.reply-body{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.msg-bubble.mine .reply-body{color:#ffffffd9}.msg-edited{font-style:italic;opacity:.7;font-size:10px}.msg-bubble.deleted{background:#f1f5f9!important;color:var(--muted)!important;font-style:italic;border:1px dashed var(--border)}.msg-bubble.mine.deleted{background:#e2e8f0!important;color:var(--muted)!important}.deleted-text{font-size:13px}.msg-reactions{display:flex;gap:4px;margin-top:2px;flex-wrap:wrap}.react-chip{background:#fff;border:1px solid var(--border);border-radius:12px;padding:2px 8px;font-size:12px;cursor:pointer;line-height:1.4;color:var(--text)}.react-chip:hover{background:#f3f4f6}.react-chip.mine{background:#2563eb1f;border-color:var(--primary);color:var(--primary);font-weight:600}.msg-bubble-wrap{position:relative}.msg-actions{position:absolute;top:-16px;right:4px;display:flex;gap:2px;background:#fff;border:1px solid var(--border);border-radius:18px;box-shadow:0 4px 14px #0000001f;padding:3px;z-index:5;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity .15s ease,transform .15s ease}.msg-line.mine .msg-actions{right:auto;left:4px}.msg-line:hover .msg-actions,.msg-actions:hover,.msg-actions:focus-within{opacity:1;pointer-events:auto;transform:translateY(0)}.msg-action-btn{background:transparent!important;color:var(--text)!important;border:none!important;width:28px;height:28px;padding:0!important;font-size:14px!important;cursor:pointer;border-radius:50%;line-height:1;display:inline-flex!important;align-items:center;justify-content:center;transition:background .12s,transform .12s}.msg-action-btn:hover{background:#f3f4f6!important;transform:scale(1.1)}.msg-action-btn.danger:hover{background:#ef44441f!important;color:#ef4444!important}.msg-menu{position:absolute;top:100%;right:0;background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 12px #0000001a;padding:4px;min-width:120px;z-index:10;margin-top:4px}.msg-menu button{display:block;width:100%;text-align:left;background:#fff!important;color:var(--text)!important;border:none!important;padding:6px 10px!important;font-size:13px!important;cursor:pointer;border-radius:4px}.msg-menu button:hover{background:#f3f4f6!important}.msg-react-picker{position:absolute;top:100%;right:0;background:#fff;border:1px solid var(--border);border-radius:20px;box-shadow:0 4px 12px #0000001a;padding:4px 6px;display:flex;gap:2px;z-index:10;margin-top:4px}.msg-react-picker button{background:transparent!important;border:none!important;padding:4px 6px!important;font-size:18px!important;cursor:pointer;border-radius:50%;width:32px;height:32px;line-height:1}.msg-react-picker button:hover{background:#f3f4f6!important;transform:scale(1.2)}.chat-reply-preview{display:flex;align-items:flex-start;gap:8px;background:#f9fafb;border-top:1px solid var(--border);padding:8px 12px}.rp-icon{font-size:16px}.rp-body{flex:1;min-width:0}.rp-label{font-size:12px;font-weight:600;color:var(--primary)}.rp-text{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.typing-indicator{display:flex;align-items:center;gap:8px;padding:4px 12px;color:var(--muted);font-size:12px;font-style:italic}.typing-indicator .dots{display:inline-flex;gap:3px}.typing-indicator .dots span{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:typing-bounce 1.4s infinite ease-in-out}.typing-indicator .dots span:nth-child(2){animation-delay:.15s}.typing-indicator .dots span:nth-child(3){animation-delay:.3s}@keyframes typing-bounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-4px);opacity:1}}.toast-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px;max-width:340px}.toast{background:#fff;border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:6px;padding:10px 12px;box-shadow:0 6px 16px #0000001f;font-size:13px;cursor:pointer;animation:toast-in .3s ease-out;display:flex;gap:8px;align-items:flex-start}.toast.kind-success{border-left-color:var(--success)}.toast.kind-error{border-left-color:var(--danger)}.toast.kind-warning{border-left-color:var(--warning)}.toast .toast-title{font-weight:600}.toast .toast-body{color:var(--muted);font-size:12px;margin-top:2px}.toast .toast-close{background:transparent!important;border:none!important;padding:0!important;color:var(--muted)!important;font-size:16px!important;cursor:pointer;line-height:1}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.task-stats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.stat-pill{background:#fff!important;color:var(--text)!important;border:1px solid var(--border)!important;border-radius:18px;padding:6px 12px!important;font-size:13px!important;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.stat-pill b{background:#f3f4f6;padding:2px 6px;border-radius:10px;font-size:12px}.stat-pill:hover{border-color:var(--primary)}.stat-pill.active{background:var(--primary)!important;color:#fff!important;border-color:var(--primary)!important}.stat-pill.active b{background:#ffffff40;color:#fff}.stat-pill.danger.active{background:var(--danger)!important;border-color:var(--danger)!important}tr.row-overdue{background:#dc26260a}tr.row-overdue:hover{background:#dc262614}.pagination{display:flex;align-items:center;gap:4px}.pagination button{padding:4px 10px!important;font-size:12px!important}.dash-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:16px}@media (max-width: 900px){.dash-grid{grid-template-columns:1fr}}.legend-row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px}.legend-dot{width:12px;height:12px;border-radius:2px;flex-shrink:0}.legend-label{flex:1;color:var(--text)}.legend-val{font-weight:600}.legend-val small{color:var(--muted);font-weight:400}.bar-chart{display:flex;flex-direction:column;gap:10px}.bar-row{display:flex;flex-direction:column;gap:4px}.bar-label{display:flex;justify-content:space-between;font-size:12px;color:var(--text)}.bar-label small{font-weight:600}.bar-track{background:#f1f5f9;border-radius:4px;height:8px;overflow:hidden}.bar-fill{height:100%;transition:width .5s;border-radius:4px}.upcoming-list{display:flex;flex-direction:column;gap:6px}.upcoming-item{display:block;padding:8px 10px;border:1px solid var(--border);border-radius:6px;text-decoration:none!important;color:var(--text);transition:background .15s}.upcoming-item:hover{background:#f9fafb}.upcoming-item.overdue{border-color:#dc26264d;background:#dc26260a}.up-title{font-weight:500;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.up-meta{display:flex;justify-content:space-between;align-items:center;margin-top:4px;font-size:11px;color:var(--muted)}.leaderboard-mini{display:flex;flex-direction:column;gap:6px}.lb-row{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:4px;font-size:13px}.lb-row:nth-child(odd){background:#f9fafb}.lb-rank{font-size:16px;min-width:32px}.lb-name{flex:1}.kebab-wrap{position:relative;display:inline-block}.kebab-btn{width:36px;height:36px;padding:0;background:transparent;border:0;border-radius:6px;font-size:18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#475569}.kebab-btn:hover{background:#f1f5f9}.kebab-btn[aria-expanded=true]{background:#e2e8f0}.kebab-pop{position:absolute;top:calc(100% + 4px);right:0;min-width:220px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000001f;padding:4px;z-index:100;animation:fadein .12s ease}.kebab-pop button{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;min-height:36px;background:transparent;border:0;text-align:left;border-radius:4px;font-size:13px;cursor:pointer;color:#1f2937}.kebab-pop button:hover:not(:disabled){background:#f1f5f9}.kebab-pop button:disabled{opacity:.5;cursor:not-allowed}.kebab-pop button.danger{color:var(--danger)}.kebab-pop button.danger:hover:not(:disabled){background:#fef2f2}.kebab-pop-portal{position:fixed;top:auto;right:auto;left:auto;z-index:1000}.weight-picker{display:flex;gap:4px;flex-wrap:wrap}.wp-btn{width:36px;height:36px;border:1px solid var(--border);background:#fff;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:all .15s;padding:0;line-height:1}.wp-btn:hover{border-color:var(--primary)}.wp-btn.active.low{background:#e0f2fe;border-color:#0284c7;color:#0c4a6e}.wp-btn.active.mid{background:#ddd6fe;border-color:#7c3aed;color:#4c1d95}.wp-btn.active.high{background:#fee2e2;border-color:#dc2626;color:#7f1d1d}.weight-help{font-size:12px;color:#64748b;margin-top:6px}.form-actions-sticky{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--border);padding:12px 16px;margin:16px -16px -16px;display:flex;gap:12px;justify-content:flex-end;z-index:5}.upload-toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1px dashed var(--border);border-radius:8px;background:#f8fafc;cursor:pointer;font-size:13px;color:#334155}.upload-toggle:hover{background:#f1f5f9;border-color:var(--primary)}.upload-counter{background:var(--primary, #3b82f6);color:#fff;font-size:11px;font-weight:600;padding:2px 7px;border-radius:10px;min-width:18px;text-align:center}.upload-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.upload-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:#f1f5f9;border-radius:12px;font-size:12px;color:#334155;max-width:220px}.upload-chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.deadline-mode-toggle{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;margin-bottom:6px}.deadline-mode-toggle button{background:#fff;border:none;padding:4px 12px;font-size:12px;cursor:pointer;color:#64748b}.deadline-mode-toggle button.active{background:var(--primary, #3b82f6);color:#fff}.deadline-preview{font-size:12px;color:#475569;margin-top:6px}.weight-chip{display:inline-block;min-width:28px;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:700;text-align:center}.weight-chip.w-low{background:#e0f2fe;color:#0c4a6e}.weight-chip.w-mid{background:#ddd6fe;color:#4c1d95}.weight-chip.w-high{background:#fee2e2;color:#7f1d1d}.deadline-cell{display:flex;flex-direction:column;line-height:1.25}.deadline-cell small{font-size:11px;color:#94a3b8}.deadline-cell.urgent{color:#b45309;font-weight:600}.deadline-cell.danger{color:#b91c1c;font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal{background:#fff;border-radius:12px;box-shadow:0 24px 64px #00000040;display:flex;flex-direction:column;max-height:90vh;width:100%;max-width:560px;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e2e8f0}.modal-header h3{margin:0;font-size:17px;font-weight:600;color:#0f172a}.modal-header .icon-btn{background:transparent;border:none;cursor:pointer;width:32px;height:32px;border-radius:8px;font-size:16px;color:#64748b}.modal-header .icon-btn:hover{background:#f1f5f9;color:#0f172a}.modal-body{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:12px}.modal-footer{display:flex;gap:8px;justify-content:flex-end;padding:12px 20px;border-top:1px solid #e2e8f0;background:#f8fafc}.modal-footer button{padding:8px 18px;border-radius:8px;font-weight:600;cursor:pointer;border:1px solid transparent;font-size:14px;min-height:38px}.modal-footer button.ghost{background:#fff;border-color:#e2e8f0;color:#475569}.modal-footer button.ghost:hover{background:#f1f5f9}.modal-footer button.primary{background:#3b82f6;color:#fff}.modal-footer button.primary:hover:not(:disabled){background:#2563eb}.modal-footer button.primary:disabled{background:#cbd5e1;cursor:not-allowed}.new-group-modal{max-width:560px}.new-group-modal .form-group{display:flex;flex-direction:column;gap:6px}.new-group-modal .form-group label{font-size:13px;font-weight:600;color:#475569}.ng-name-input{width:100%;padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:15px;outline:none}.ng-name-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.ng-selected-chips{background:#eff6ff;border:1px solid #dbeafe;border-radius:8px;padding:8px 10px}.ng-selected-label{font-size:12px;color:#1e40af;font-weight:600;margin-bottom:6px}.ng-chips-list{display:flex;flex-wrap:wrap;gap:6px}.ng-chip{display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid #93c5fd;border-radius:16px;padding:3px 4px 3px 10px;font-size:12px;color:#1e40af;font-weight:500}.ng-chip-remove{background:transparent;border:none;cursor:pointer;color:#64748b;width:18px;height:18px;border-radius:50%;font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.ng-chip-remove:hover{background:#fee2e2;color:#dc2626}.ng-search-wrap{position:sticky;top:0;background:#fff;z-index:2}.ng-search-input{width:100%;padding:9px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:14px;outline:none}.ng-search-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.ng-dept-pills{display:flex;flex-wrap:wrap;gap:6px}.ng-dept-pill{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:5px 12px;font-size:12px;color:#475569;cursor:pointer;font-weight:500;min-height:28px}.ng-dept-pill:hover{background:#f1f5f9;border-color:#cbd5e1}.ng-dept-pill.active{background:#3b82f6;color:#fff;border-color:#3b82f6}.ng-user-list{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;background:#fff;max-height:360px;overflow-y:auto}.ng-empty{padding:24px;text-align:center;color:#94a3b8;font-size:13px}.ng-group:not(:first-child){border-top:4px solid #f8fafc}.ng-group-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#f8fafc;font-size:11px;color:#64748b;font-weight:700;text-transform:uppercase;letter-spacing:.4px}.ng-select-all-btn{background:transparent;border:none;color:#3b82f6;font-size:11px;cursor:pointer;padding:2px 6px;border-radius:4px;font-weight:600;text-transform:none;letter-spacing:0}.ng-select-all-btn:hover{background:#eff6ff}.ng-user-row{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer;transition:background .1s;border-top:1px solid #f1f5f9}.ng-user-row:first-child{border-top:none}.ng-user-row:hover{background:#f8fafc}.ng-user-row.checked{background:#eff6ff}.ng-user-row input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:#3b82f6;flex-shrink:0}.ng-user-avatar{width:32px;height:32px;border-radius:50%;background:#cbd5e1;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}.ng-user-row.checked .ng-user-avatar{background:#3b82f6}.ng-user-info{flex:1;min-width:0}.ng-user-name{font-size:14px;font-weight:500;color:#0f172a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ng-user-role{font-size:11px;color:#64748b;margin-top:1px}@media (max-width: 640px){.new-group-modal{max-width:100%;height:100vh;max-height:100vh;border-radius:0}.modal-body{padding:12px 14px}.ng-user-list{max-height:none;flex:1}}.profile-page{max-width:720px;margin:0 auto}.profile-card{padding:24px}.profile-avatar-section{display:flex;gap:24px;align-items:center;padding:16px 0 24px;border-bottom:1px solid #e2e8f0;margin-bottom:20px}.profile-avatar-wrap{position:relative;width:120px;height:120px;flex-shrink:0}.profile-avatar-img,.profile-avatar-initials{width:120px;height:120px;border-radius:50%;object-fit:cover;display:block}.profile-avatar-initials{background:#3b82f6;color:#fff;font-size:40px;font-weight:600;display:flex;align-items:center;justify-content:center}.profile-avatar-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000080;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:32px}.profile-avatar-actions{display:flex;flex-direction:column;gap:8px;flex:1;min-width:0}.profile-avatar-actions button{padding:8px 16px;border-radius:8px;cursor:pointer;font-weight:500;border:1px solid transparent;font-size:14px;min-height:38px;text-align:left}.profile-avatar-actions button.primary{background:#3b82f6;color:#fff}.profile-avatar-actions button.primary:hover:not(:disabled){background:#2563eb}.profile-avatar-actions button.ghost{background:#fff;border-color:#e2e8f0;color:#475569}.profile-avatar-actions button.ghost:hover{background:#f1f5f9}.profile-avatar-actions button:disabled{opacity:.5;cursor:not-allowed}.profile-avatar-hint{font-size:11px;color:#94a3b8;margin-top:4px}.profile-info{display:flex;flex-direction:column;gap:14px}.profile-row{display:grid;grid-template-columns:140px 1fr;gap:12px;align-items:center;padding-bottom:10px;border-bottom:1px dashed #f1f5f9}.profile-row label{font-size:13px;color:#64748b;font-weight:600}.profile-row-value{font-size:14px;color:#0f172a}.profile-row-value .muted{color:#94a3b8;font-size:12px}.profile-row input{width:100%;padding:8px 10px;border:1px solid #cbd5e1;border-radius:6px;font-size:14px;outline:none}.profile-row input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.role-badge{display:inline-block;padding:2px 10px;border-radius:12px;background:#eff6ff;color:#1e40af;font-size:12px;font-weight:600}.profile-actions{display:flex;gap:8px;padding-top:12px}.profile-actions button{padding:8px 18px;border-radius:8px;cursor:pointer;font-weight:600;border:1px solid #e2e8f0;background:#fff;font-size:14px;min-height:38px}.profile-actions button.primary{background:#3b82f6;color:#fff;border-color:#3b82f6}.profile-actions button.primary:hover:not(:disabled){background:#2563eb}.profile-actions button.ghost{background:#fff;color:#475569}.profile-actions button.ghost:hover{background:#f1f5f9}.avatar-img{object-fit:cover;border-radius:50%;display:block}.user-avatar-inline{display:inline-flex;align-items:center}.user-avatar-inline .user-avatar-small.inline,.user-avatar-inline .avatar-img.inline{width:28px;height:28px}.user-box .user-avatar-small.avatar-img{width:40px;height:40px}@media (max-width: 640px){.profile-avatar-section{flex-direction:column;align-items:flex-start}.profile-avatar-wrap,.profile-avatar-img,.profile-avatar-initials{width:96px;height:96px}.profile-row{grid-template-columns:1fr;gap:4px}.profile-row label{font-size:12px}}
