:root{--bg: #f1f5f9;--bg-soft: #f8fafc;--bg-tint: #eef6ff;--surface: #ffffff;--surface-glass: rgba(255, 255, 255, .78);--border: rgba(15, 23, 42, .08);--border-strong: rgba(15, 23, 42, .14);--text: #0f172a;--text-2: #334155;--muted: #64748b;--primary: #2563eb;--primary-2: #0284c7;--primary-3: #0ea5e9;--accent: #06b6d4;--accent-2: #6366f1;--accent-3: #8b5cf6;--success: #10b981;--warning: #f59e0b;--danger: #ef4444;--side-1: #07111f;--side-2: #0b1220;--glow-blue: rgba(37, 99, 235, .18);--glow-cyan: rgba(6, 182, 212, .16);--glow-violet: rgba(139, 92, 246, .14);--radius: 18px;--radius-sm: 12px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04), 0 1px 3px rgba(15, 23, 42, .06);--shadow-md: 0 6px 20px rgba(15, 23, 42, .08);--shadow-lg: 0 18px 50px rgba(15, 23, 42, .14);--gradient-primary: linear-gradient(135deg, #2563eb 0%, #0ea5e9 55%, #06b6d4 100%)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.layout{display:flex;min-height:100vh}.sidebar{width:256px;flex-shrink:0;background:linear-gradient(180deg,var(--side-1) 0%,var(--side-2) 60%,#0a1830 100%);color:#cbd5e1;display:flex;flex-direction:column;position:relative;overflow:hidden}.sidebar:before{content:"";position:absolute;inset:-40% -60% auto -20%;height:320px;background:radial-gradient(closest-side,var(--glow-blue),transparent 70%),radial-gradient(closest-side,var(--glow-violet),transparent 70%);filter:blur(10px);pointer-events:none}.sidebar-brand{position:relative;padding:22px 22px 18px;display:flex;align-items:center;gap:12px}.brand-mark{width:38px;height:38px;border-radius:11px;background:var(--gradient-primary);display:grid;place-items:center;color:#fff;font-weight:800;font-size:15px;box-shadow:0 8px 20px var(--glow-blue)}.brand-text b{color:#fff;font-size:16px;letter-spacing:.4px;display:block}.brand-text span{color:#93a4bd;font-size:11px;letter-spacing:.6px}.sidebar nav{flex:1;padding:8px 12px;overflow-y:auto}.nav-group-label{color:#5e7290;font-size:10.5px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;padding:16px 12px 6px}.sidebar ul{list-style:none;margin:0;padding:0}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;margin:2px 0;border-radius:11px;color:#aebbcd;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;transition:background .15s ease,color .15s ease,box-shadow .2s ease}.nav-item:hover{background:#ffffff0f;color:#fff;text-decoration:none}.nav-item .nav-ico{width:18px;height:18px;flex-shrink:0;opacity:.9}.nav-item.active{color:#fff;background:linear-gradient(90deg,#2563eb59,#06b6d41f);box-shadow:inset 3px 0 #38bdf8,0 6px 16px var(--glow-blue)}.nav-item.soon{opacity:.55;cursor:default}.nav-item .soon-tag{margin-left:auto;font-size:9.5px;font-weight:700;letter-spacing:.5px;color:#7c8db0;border:1px solid rgba(148,163,184,.25);border-radius:6px;padding:1px 6px}.sidebar-foot{position:relative;padding:14px 20px;font-size:12px;color:#7e8ea7;border-top:1px solid rgba(255,255,255,.06)}.main{flex:1;display:flex;flex-direction:column;min-width:0}.header{height:64px;flex-shrink:0;background:var(--surface-glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:0 26px;position:sticky;top:0;z-index:30}.header-title{font-weight:700;font-size:16px;color:var(--text)}.header-sub{color:var(--muted);font-size:13px}.header-spacer{flex:1}.menu-toggle{display:none;background:none;border:1px solid var(--border-strong);border-radius:10px;padding:7px;cursor:pointer;color:var(--text-2)}.user-chip{display:flex;align-items:center;gap:10px;padding:5px 10px 5px 6px;border-radius:999px;border:1px solid var(--border);background:var(--surface);cursor:pointer;transition:box-shadow .2s ease,border-color .2s ease}.user-chip:hover{box-shadow:var(--shadow-sm);border-color:var(--border-strong)}.avatar{width:34px;height:34px;border-radius:50%;background:var(--gradient-primary);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;flex-shrink:0;box-shadow:0 4px 10px var(--glow-blue)}.avatar.lg{width:60px;height:60px;font-size:22px;border-radius:18px}.user-chip-meta{display:flex;flex-direction:column;line-height:1.2;text-align:left}.user-chip-meta b{font-size:13.5px;color:var(--text);font-weight:600}.user-chip-meta span{font-size:11.5px;color:var(--muted)}.chip-caret{color:var(--muted);width:16px;height:16px}.dropdown{position:relative}.dropdown-menu{position:absolute;right:0;top:calc(100% + 10px);width:248px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);overflow:hidden;z-index:50;animation:pop .12s ease-out}@keyframes pop{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.dropdown-head{padding:14px 16px;display:flex;gap:12px;align-items:center;border-bottom:1px solid var(--border)}.dropdown-head .user-chip-meta b{font-size:14px}.dropdown-badges{display:flex;flex-wrap:wrap;gap:6px;padding:10px 14px;border-bottom:1px solid var(--border)}.dropdown-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:none;padding:11px 16px;font-size:14px;color:var(--text-2);cursor:pointer}.dropdown-item:hover{background:var(--bg-soft);color:var(--text)}.dropdown-item.danger{color:var(--danger)}.dropdown-item svg{width:16px;height:16px}.content{padding:26px;max-width:1320px;width:100%;margin:0 auto}.page-head{margin-bottom:22px}.page-head h1{margin:0;font-size:24px;font-weight:750;letter-spacing:-.4px}.page-head p{margin:6px 0 0;color:var(--muted);font-size:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow-sm)}.card.pad-lg{padding:28px}.card-hover{transition:transform .18s ease,box-shadow .18s ease}.card-hover:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:18px}.col-3{grid-column:span 3}.col-4{grid-column:span 4}.col-6{grid-column:span 6}.col-8{grid-column:span 8}.col-12{grid-column:span 12}.card-label{font-size:12px;color:var(--muted);font-weight:600;letter-spacing:.3px;text-transform:uppercase}.card-value{font-size:26px;font-weight:750;margin-top:8px;letter-spacing:-.5px}.card-foot{margin-top:10px;font-size:13px;color:var(--text-2)}.stat-ico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;margin-bottom:14px}.stat-ico svg{width:22px;height:22px}.tone-blue{background:#2563eb1a;color:var(--primary)}.tone-cyan{background:#06b6d41f;color:var(--accent)}.tone-violet{background:#8b5cf61f;color:var(--accent-3)}.tone-green{background:#10b9811f;color:var(--success)}.tone-amber{background:#f59e0b24;color:var(--warning)}.tone-slate{background:#64748b1f;color:var(--muted)}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.6}.badge-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.badge-ok{background:#10b9811f;color:#047857}.badge-err{background:#ef44441f;color:#b91c1c}.badge-wait{background:#f59e0b29;color:#b45309}.badge-blue{background:#2563eb1a;color:#1d4ed8}.badge-cyan{background:#06b6d41f;color:#0e7490}.badge-violet{background:#8b5cf61f;color:#6d28d9}.badge-slate{background:#64748b1f;color:#475569}.badge-role{background:#2563eb1a;color:#1d4ed8}.badge-dept{background:#06b6d41f;color:#0e7490}.badge-row{display:flex;flex-wrap:wrap;gap:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:11px;padding:10px 16px;font-size:14px;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .15s ease,background .15s ease,opacity .15s ease;font-family:inherit}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:0 8px 18px var(--glow-blue)}.btn-primary:hover:not(:disabled){box-shadow:0 10px 24px var(--glow-blue)}.btn-ghost{background:var(--surface);border-color:var(--border-strong);color:var(--text-2)}.btn-ghost:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.btn-danger-ghost{background:var(--surface);border-color:#ef44444d;color:var(--danger)}.btn-danger-ghost:hover:not(:disabled){background:#ef44440f}.btn-sm{padding:6px 11px;font-size:12.5px;border-radius:9px}.btn-block{width:100%}label.field-label{display:block;font-size:13px;color:var(--text-2);font-weight:600;margin:14px 0 6px}.field-label .opt{color:var(--muted);font-weight:500}input,select,textarea{width:100%;background:var(--bg-soft);border:1px solid var(--border-strong);color:var(--text);border-radius:11px;padding:11px 13px;font-size:14px;font-family:inherit;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}input::placeholder,textarea::placeholder{color:#94a3b8}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);background:#fff;box-shadow:0 0 0 4px #2563eb1f}.input-icon{position:relative}.input-icon svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--muted)}.input-icon input{padding-left:42px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 16px}.form-grid .span-2{grid-column:span 2}.alert{padding:11px 14px;border-radius:11px;font-size:13.5px;margin:14px 0 0}.alert-err{background:#ef444414;color:#b91c1c;border:1px solid rgba(239,68,68,.2)}.alert-ok{background:#10b98114;color:#047857;border:1px solid rgba(16,185,129,.2)}.alert code{background:#0f172a0f;padding:2px 6px;border-radius:6px;word-break:break-all}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm)}.grid{width:100%;border-collapse:collapse;font-size:13.5px}.grid thead th{position:sticky;top:0;text-align:left;padding:12px 14px;background:var(--bg-soft);color:var(--muted);font-weight:600;font-size:12px;letter-spacing:.3px;text-transform:uppercase;border-bottom:1px solid var(--border)}.grid tbody td{padding:12px 14px;border-bottom:1px solid var(--border);color:var(--text-2);vertical-align:middle}.grid tbody tr:last-child td{border-bottom:none}.grid tbody tr{transition:background .12s ease}.grid tbody tr:hover{background:var(--bg-tint)}.cell-user{display:flex;align-items:center;gap:10px}.cell-user .avatar{width:30px;height:30px;font-size:11px}.cell-user b{color:var(--text);font-weight:600}.cell-user span{color:var(--muted);font-size:12px}.muted-cell{color:var(--muted)}.kv{width:100%;border-collapse:collapse}.kv th{text-align:left;color:var(--muted);padding:9px 16px 9px 0;font-weight:500;vertical-align:top;width:130px;font-size:13.5px}.kv td{padding:9px 0;color:var(--text);border-bottom:1px solid var(--border)}.kv tr:last-child th,.kv tr:last-child td{border-bottom:none}.cap-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:6px}.cap-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:var(--bg-soft);border-radius:10px;font-size:13.5px}.cap-item span{color:var(--text-2)}.empty-state{text-align:center;padding:44px 20px;color:var(--muted)}.empty-ico{width:64px;height:64px;margin:0 auto 16px;border-radius:20px;display:grid;place-items:center;background:var(--bg-tint);color:var(--primary)}.empty-ico svg{width:30px;height:30px}.empty-state h3{color:var(--text);margin:0 0 6px;font-size:17px}.empty-state p{margin:0 auto;max-width:440px;font-size:14px;line-height:1.6}.data-notice{display:flex;align-items:flex-start;gap:14px}.data-notice-ico{width:44px;height:44px;flex-shrink:0;border-radius:12px;display:grid;place-items:center;background:var(--bg-tint);color:var(--primary)}.data-notice-ico svg{width:22px;height:22px}.data-notice b{font-size:15px}.skeleton{background:linear-gradient(90deg,#eef2f7 25%,#e2e8f0 37%,#eef2f7 63%);background-size:400% 100%;animation:shimmer 1.3s ease infinite;border-radius:8px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;background:radial-gradient(900px 600px at 12% 15%,var(--glow-blue),transparent 60%),radial-gradient(800px 600px at 85% 25%,var(--glow-cyan),transparent 60%),radial-gradient(700px 700px at 75% 90%,var(--glow-violet),transparent 60%),linear-gradient(160deg,#f8fafc,#eef6ff 55%,#f1f5f9)}.auth-aside{position:relative;padding:56px 60px;color:#e6edf7;background:linear-gradient(160deg,#07111f,#0b1530 55%,#131c44);display:flex;flex-direction:column;justify-content:center;overflow:hidden}.auth-aside:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(600px 380px at 80% 10%,var(--glow-blue),transparent 60%),radial-gradient(520px 420px at 10% 95%,var(--glow-violet),transparent 60%);pointer-events:none}.auth-aside .aside-inner{position:relative;max-width:440px}.aside-brand{display:flex;align-items:center;gap:13px;margin-bottom:34px}.aside-brand .brand-mark{width:44px;height:44px;font-size:17px}.aside-brand b{color:#fff;font-size:18px;display:block;letter-spacing:.4px}.aside-brand span{color:#93a4bd;font-size:12px;letter-spacing:.5px}.auth-aside h2{font-size:30px;line-height:1.2;margin:0 0 14px;color:#fff;letter-spacing:-.5px}.auth-aside .lead{color:#aab8cf;font-size:15px;line-height:1.65;margin:0 0 30px}.feature-list{display:flex;flex-direction:column;gap:13px}.feature-row{display:flex;align-items:center;gap:13px;font-size:14.5px;color:#d6dfee}.feature-row .f-ico{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;background:#ffffff12;color:#56ccf5;flex-shrink:0}.feature-row .f-ico svg{width:19px;height:19px}.aside-health{display:flex;flex-wrap:wrap;gap:8px;margin-top:34px}.health-pill{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;font-size:12.5px;font-weight:600;background:#ffffff0f;color:#c7d3e6;border:1px solid rgba(255,255,255,.08)}.health-pill .badge-dot{width:7px;height:7px}.health-pill.ok{color:#6ee7b7}.health-pill.off{color:#fca5a5}.auth-main{display:flex;align-items:center;justify-content:center;padding:40px 24px}.auth-card{width:100%;max-width:400px;background:var(--surface-glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.7);border-radius:22px;padding:36px 34px;box-shadow:var(--shadow-lg)}.auth-card .mobile-brand{display:none}.auth-card h1{margin:0 0 4px;font-size:23px;font-weight:750;letter-spacing:-.4px}.auth-card .subtext{color:var(--muted);margin:0 0 22px;font-size:14px}.auth-card .btn{margin-top:22px}.auth-foot{font-size:13.5px;margin-top:18px;text-align:center;color:var(--muted)}.centered{min-height:100vh;display:grid;place-items:center;color:var(--muted);gap:14px}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--border-strong);border-top-color:var(--primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.note{color:var(--muted);font-size:13px;line-height:1.6}.divider{height:1px;background:var(--border);margin:22px 0;border:none}.section-title{font-size:15px;font-weight:700;margin:0 0 12px;color:var(--text);display:flex;align-items:center;gap:8px}.section-title svg{width:18px;height:18px;color:var(--primary);flex-shrink:0}.header-brand{display:flex;flex-direction:column;line-height:1.25}.overlay-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:70;animation:fade .15s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.drawer{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:94vw;z-index:80;background:var(--surface);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;animation:slidein .2s ease-out}@keyframes slidein{0%{transform:translate(30px);opacity:.6}to{transform:none;opacity:1}}.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:80;width:440px;max-width:94vw;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:pop .14s ease-out;display:flex;flex-direction:column;max-height:90vh}.drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--border)}.drawer-body{padding:18px 20px;overflow-y:auto;flex:1}.drawer-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border)}.icon-btn{background:none;border:1px solid var(--border);border-radius:10px;padding:6px;cursor:pointer;color:var(--muted);display:grid;place-items:center}.icon-btn:hover{color:var(--text);border-color:var(--border-strong)}.icon-btn svg{width:18px;height:18px}.perm-section-title{font-size:12px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.perm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 10px}.perm-dept{padding:12px 0;border-bottom:1px solid var(--border)}.perm-dept:last-child{border-bottom:none}.perm-dept-name{font-weight:600;font-size:13.5px;margin-bottom:8px;color:var(--text)}.check-row{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:9px;font-size:13.5px;color:var(--text-2);cursor:pointer}.check-row:hover{background:var(--bg-soft)}.cb{width:17px;height:17px;flex-shrink:0;accent-color:var(--primary);cursor:pointer}.scrim{display:none}@media (max-width: 1100px){.col-3,.col-4{grid-column:span 6}.col-8{grid-column:span 12}}@media (max-width: 960px){.auth-shell{grid-template-columns:1fr}.auth-aside{display:none}.auth-card{max-width:420px}.auth-card .mobile-brand{display:flex;align-items:center;gap:12px;justify-content:center;margin-bottom:20px}}@media (max-width: 820px){.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:60;transform:translate(-100%);transition:transform .22s ease;box-shadow:var(--shadow-lg)}.sidebar.open{transform:none}.menu-toggle{display:inline-flex}.scrim.show{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;z-index:55}.content{padding:18px}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:span 1}.cap-list{grid-template-columns:1fr}.col-3,.col-4,.col-6,.col-8{grid-column:span 12}.user-chip-meta,.header-badges,.header-sub{display:none}}@media (max-width: 520px){.header{padding:0 16px}.auth-card{padding:28px 22px}}.stat{display:flex;align-items:center;gap:14px}.stat .stat-ico{margin-bottom:0;background:#2563eb1a;color:var(--primary)}.stat-num{font-size:26px;font-weight:700;color:var(--text);line-height:1.1}.stat-lbl{font-size:12.5px;color:var(--muted);margin-top:2px}.badge-warn{background:#f59e0b29;color:#b45309}.attn-list li{font-size:13.5px;color:var(--muted);padding:9px 12px;background:#f59e0b12;border:1px solid rgba(245,158,11,.22);border-radius:10px}.group-card{display:flex;flex-direction:column;gap:12px;min-height:230px}.group-card-name{font-size:15px;font-weight:600;color:var(--text)}.group-card-code{font-size:11.5px;color:var(--muted);margin-top:2px}.group-card-warn{color:#b45309}.avatar-lg{width:56px;height:56px;font-size:20px;border-radius:16px}.tabbar{display:flex;gap:4px;padding:0 16px;border-bottom:1px solid var(--border)}.tab{background:none;border:none;padding:11px 12px;font-size:13px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;font-weight:500}.tab-on{color:var(--primary);border-bottom-color:var(--primary)}.kvlist{display:flex;flex-direction:column}.kvlist>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);font-size:13.5px}.kvlist>div:last-child{border-bottom:none}.kvlist>div>span:first-child{color:var(--muted)}.kv-note{display:block!important;flex-direction:column;align-items:flex-start!important;color:var(--muted);font-size:12.5px;gap:3px}.rollup{--gold: #d9a441;--silver: #a7b0be;--bronze: #b7794c;--ok-bg: #ecfdf3;--ok-tx: #16a34a;--warn-bg: #fff7e6;--warn-tx: #b7791f}.rollup .card{box-shadow:var(--shadow-sm);border:1px solid #e5eaf1;border-radius:18px}.period-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.period-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;border:1px solid #e5eaf1;background:#fff;color:var(--muted);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.period-pill:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.period-pill.on{background:#2563eb14;border-color:var(--primary);color:var(--primary);font-weight:600}.period-pill:disabled{opacity:.65;cursor:not-allowed}.period-soon{font-size:10px;padding:1px 6px;border-radius:6px;background:#eef1f5;color:#94a0b0}.sum-row{margin-bottom:16px}.sum-card{transition:transform .15s ease,box-shadow .15s ease}.sum-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.tone-green-ic{background:#16a34a1a!important;color:#16a34a!important}.tone-amber-ic{background:#b7791f1f!important;color:#b7791f!important}.tone-gold-ic{background:#d9a44124!important;color:#b7791f!important}.sum-principle{font-size:15px!important;line-height:1.3}.search-card{margin-bottom:16px}.search-box{display:flex;align-items:center;gap:10px;padding:4px 6px 4px 14px;border:1px solid #e5eaf1;border-radius:12px;background:#fff;transition:border-color .15s ease,box-shadow .15s ease}.search-box:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.search-box svg{width:18px;height:18px;color:var(--muted);flex-shrink:0}.search-input{flex:1;border:none;outline:none;background:none;font-size:14px;color:var(--text);padding:9px 0}.search-panel{margin-top:14px}.search-sec-title{font-size:12px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);margin-top:12px}.search-list{display:flex;flex-direction:column;gap:2px;margin:6px 0}.search-row{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:none;background:none;border-radius:10px;cursor:pointer;text-align:left;transition:background .12s ease}.search-row:hover{background:#2563eb0f}.search-row-main{display:flex;flex-direction:column;line-height:1.3;flex:1;min-width:0}.search-row-main b{font-size:13.5px;color:var(--text)}.search-row-main .muted-cell{font-size:12px}.search-row-score{font-weight:700;color:var(--primary);font-size:14px}.avatar-xs{width:30px;height:30px;font-size:11px;border-radius:9px;box-shadow:none;background:var(--bg-soft);color:var(--text-2)}.attn-card{margin-bottom:16px}.attn-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.attn-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:left;font-size:13.5px;color:var(--text-2);padding:11px 14px;background:var(--warn-bg);border:1px solid rgba(183,121,31,.22);border-radius:12px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.attn-item:hover{background:#fffaf0;border-color:#b7791f66}.attn-item b{color:var(--text)}.attn-cta{color:var(--warn-tx);font-weight:600;white-space:nowrap;font-size:12.5px}.group-card{display:flex;flex-direction:column;gap:12px;min-height:244px;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.group-card.clickable{cursor:pointer}.group-card.clickable:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:#2563eb59}.group-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.group-card-name{font-size:15px;font-weight:650;color:var(--text)}.group-card-code{font-size:11px;color:var(--muted);margin-top:2px;letter-spacing:.02em}.group-card-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:12.5px;color:var(--muted)}.group-card-warn{color:var(--warn-tx)}.group-card-cta{margin-top:auto}.btn-soft{background:#2563eb12;border:1px solid transparent;color:var(--primary);font-weight:600}.btn-soft:hover:not(:disabled){background:#2563eb21}.ranking-medal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:14px}.ranking-medal-empty{padding:18px 0;text-align:center;font-size:12.5px}.ranking-medal-card{min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;border:1px solid #e5eaf1;border-radius:18px;padding:16px 14px 14px;cursor:pointer;background:linear-gradient(180deg,#fff,#f8fafc);color:var(--text);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.ranking-medal-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:#2563eb38}.ranking-medal-card.is-center{padding-top:20px;padding-bottom:18px;transform:translateY(-6px)}.ranking-medal-card.is-center:hover{transform:translateY(-9px)}.ranking-medal-icon{width:60px;height:70px;display:inline-flex;color:var(--primary)}.ranking-medal-card.is-center .ranking-medal-icon{width:72px;height:84px}.ranking-medal-icon svg{width:100%;height:100%;overflow:visible}.ranking-medal-icon text{font:800 15px/1 var(--font-sans, system-ui);fill:#fff;dominant-baseline:middle}.ranking-medal-title{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.ranking-medal-name{width:100%;font-size:13.5px;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-medal-card.is-center .ranking-medal-name{font-size:15px}.ranking-medal-score{font-size:17px;font-weight:800;color:var(--text);line-height:1.15}.ranking-medal-card.is-center .ranking-medal-score{font-size:20px}.ranking-medal-score small{font-size:11px;color:var(--muted);font-weight:650}.ranking-medal-delta{max-width:100%;font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-title{font-size:16px;font-weight:650;color:var(--text)}.tab{transition:color .12s ease,border-color .12s ease}.tab:hover{color:var(--text)}.row-click{cursor:pointer;transition:background .12s ease}.row-click:hover{background:#2563eb0d}.emp-head{display:flex;align-items:center;gap:12px}.emp-quick{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:16px 20px;border-bottom:1px solid var(--border)}.qcard{background:var(--bg-soft);border:1px solid #e5eaf1;border-radius:12px;padding:12px;text-align:center}.qval{font-size:20px;font-weight:700;color:var(--text);line-height:1.2}.qlbl{font-size:11.5px;color:var(--muted);margin-top:3px}.emp-head .avatar{background:var(--bg-soft);color:var(--text-2);box-shadow:none}.rollup .ranking-medal-card.rank-1{border-color:#d9a4415c;background:linear-gradient(180deg,#fff9e8,#fff 52%,#fffaf0);box-shadow:0 12px 32px #d9a4412e}.rollup .ranking-medal-card.rank-2{border-color:#9ca3af5c;background:linear-gradient(180deg,#f7f9fc,#fff 58%,#f4f6f9)}.rollup .ranking-medal-card.rank-3{border-color:#b7794c4d;background:linear-gradient(180deg,#fff4ea,#fff 58%,#fff7f0)}.rollup .rank-1 .ranking-medal-title{color:#9a6b13}.rollup .rank-2 .ranking-medal-title{color:#64748b}.rollup .rank-3 .ranking-medal-title{color:#9a5f33}.rollup .ranking-medal-icon--1 .medal-face{fill:#d9a441}.rollup .ranking-medal-icon--1 .medal-inner{fill:#f4d47c;opacity:.9}.rollup .ranking-medal-icon--1 .medal-ribbon{fill:#fff0bd}.rollup .ranking-medal-icon--2 .medal-face{fill:#9ca3af}.rollup .ranking-medal-icon--2 .medal-inner{fill:#d1d5db;opacity:.92}.rollup .ranking-medal-icon--2 .medal-ribbon{fill:#eef2f7}.rollup .ranking-medal-icon--3 .medal-face{fill:#b7794c}.rollup .ranking-medal-icon--3 .medal-inner{fill:#d6a06a;opacity:.92}.rollup .ranking-medal-icon--3 .medal-ribbon{fill:#ffe3cb}.rollup .ranking-medal-icon .medal-ribbon-left{opacity:.95}.rollup .ranking-medal-icon .medal-ribbon-right{opacity:.78}.rollup .ranking-medal-grid--compact{gap:8px}.rollup .ranking-medal-grid--compact .ranking-medal-card{border-radius:14px;padding:11px 8px 10px;gap:4px;min-height:148px}.rollup .ranking-medal-grid--compact .ranking-medal-card.is-center{padding-top:13px;padding-bottom:12px;transform:translateY(-3px)}.rollup .ranking-medal-grid--compact .ranking-medal-card.is-center:hover{transform:translateY(-5px)}.rollup .ranking-medal-grid--compact .ranking-medal-icon{width:42px;height:50px}.rollup .ranking-medal-grid--compact .ranking-medal-card.is-center .ranking-medal-icon{width:50px;height:58px}.rollup .ranking-medal-grid--compact .ranking-medal-title{font-size:10.5px}.rollup .ranking-medal-grid--compact .ranking-medal-name{font-size:11.5px}.rollup .ranking-medal-grid--compact .ranking-medal-card.is-center .ranking-medal-name{font-size:12.2px}.rollup .ranking-medal-grid--compact .ranking-medal-score{font-size:13.5px}.rollup .ranking-medal-grid--compact .ranking-medal-card.is-center .ranking-medal-score{font-size:15px}.rollup .ranking-medal-grid--compact .ranking-medal-delta{font-size:10.5px}.rollup .podium-card{position:relative;overflow:visible;isolation:isolate}.rollup .podium-aura{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:22px;opacity:0;pointer-events:none;z-index:-1;transition:opacity .26s ease;filter:blur(3px);background:radial-gradient(62% 62% at 50% 30%,rgba(37,99,235,.28),transparent 72%)}.rollup .podium-card:hover .podium-aura,.rollup .podium-card:focus-visible .podium-aura{opacity:1}.rollup .rank-1 .podium-aura{background:radial-gradient(62% 62% at 50% 28%,rgba(217,164,65,.46),rgba(244,212,124,.18) 55%,transparent 74%)}.rollup .rank-2 .podium-aura{background:radial-gradient(62% 62% at 50% 30%,rgba(148,163,184,.4),transparent 72%)}.rollup .rank-3 .podium-aura{background:radial-gradient(62% 62% at 50% 30%,rgba(183,121,76,.36),transparent 72%)}.rollup .podium-card:hover{box-shadow:0 14px 30px #10182829}.rollup .podium-card.rank-1:hover{box-shadow:0 14px 34px #d9a44152}.rollup .podium-card:hover .emp-avatar-ring{filter:brightness(1.05) saturate(1.04)}.rollup .wd-daily2 td,.rollup .wd-daily2 th{vertical-align:top}.rollup .wd-daily2 .wd-kpi{line-height:1.7}.rollup .wd-daily2 .wd-note{color:#6b7280;font-size:12px;white-space:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.rollup .wd-daily2 .wd-task{white-space:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.rollup .podium-sparkles{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1}.rollup .podium-sparkles i{position:absolute;width:5px;height:5px;border-radius:50%;opacity:0;background:radial-gradient(circle,#fff,#fff0 70%);box-shadow:0 0 6px 1px #ffffffd9}.rollup .rank-1 .podium-sparkles i{background:radial-gradient(circle,#fff4cf,#fff4cf00 70%);box-shadow:0 0 7px 1px #f4d47ce6}.rollup .podium-sparkles i:nth-child(1){top:14%;left:24%}.rollup .podium-sparkles i:nth-child(2){top:20%;right:22%;width:4px;height:4px}.rollup .podium-sparkles i:nth-child(3){top:40%;left:16%;width:3px;height:3px}.rollup .podium-sparkles i:nth-child(4){top:34%;right:16%}.rollup .podium-card:hover .podium-sparkles i{animation:podium-spark 1.5s ease-in-out infinite}.rollup .podium-card:hover .podium-sparkles i:nth-child(2){animation-delay:.35s}.rollup .podium-card:hover .podium-sparkles i:nth-child(3){animation-delay:.7s}.rollup .podium-card:hover .podium-sparkles i:nth-child(4){animation-delay:.2s}@keyframes podium-spark{0%,to{opacity:0;transform:scale(.6)}45%{opacity:.9;transform:scale(1)}}.rollup .emp-avatar-medal{position:absolute;bottom:-4px;right:-4px;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#fff;box-shadow:0 1px 4px #10182838;z-index:2}.rollup .emp-avatar--lg .emp-avatar-medal,.rollup .emp-avatar--xl .emp-avatar-medal{width:28px;height:28px;bottom:-5px;right:-5px}.rollup .rank-medal{display:inline-flex;width:100%;height:100%;align-items:center;justify-content:center}.rollup .rank-medal svg{width:88%;height:88%;overflow:visible}.rollup .rank-medal--1{color:#d9a441}.rollup .rank-medal--1 svg{width:80%;height:80%}.rollup .rank-medal--2 .rm-disc{fill:#9ca3af}.rollup .rank-medal--2 .rm-star{fill:#f3f4f6}.rollup .rank-medal--2 .rm-ribbon{color:#cbd5e1}.rollup .rank-medal--3 .rm-disc{fill:#b7794c}.rollup .rank-medal--3 .rm-star{fill:#ffe3cb}.rollup .rank-medal--3 .rm-ribbon{color:#e7b896}@media (prefers-reduced-motion: reduce){.rollup .podium-card:hover .podium-sparkles i{animation:none;opacity:.85}.rollup .podium-aura{transition:none}}.rollup .ms-card{background:linear-gradient(180deg,#fbfcff,#fff);border:1px solid #eef1f6;border-radius:12px;padding:12px 14px}.rollup .ms-row .wd-fill{transition:width .4s ease}.rollup .ms-row--k1 .wd-fill{background:linear-gradient(90deg,#2563eb,#60a5fa)}.rollup .ms-row--k2 .wd-fill{background:linear-gradient(90deg,#7c3aed,#a78bfa)}.rollup .ms-row--k3 .wd-fill{background:linear-gradient(90deg,#0d9488,#5eead4)}.rollup .ms-row--k4 .wd-fill{background:linear-gradient(90deg,#d97706,#fbbf24)}.rollup .ms-hl{margin-top:12px}.rollup .hl-chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.rollup .hl-chip--good{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.rollup .hl-chip--warn{background:#fffbeb;color:#b45309;border:1px solid #fde68a}.rollup .medal-wrap{position:relative;display:inline-flex}.rollup .medal-badge{position:absolute;bottom:-7px;left:50%;transform:translate(-50%);min-width:19px;height:19px;padding:0 4px;border-radius:999px;display:grid;place-items:center;font-size:11px;font-weight:800;color:#fff;border:2px solid #fff;background:var(--silver);box-shadow:var(--shadow-sm)}.rollup .emp-medal.rank-1 .avatar-xl{border-color:var(--gold);box-shadow:0 6px 18px #d9a44142}.rollup .rank-1 .medal-badge{background:linear-gradient(135deg,#ecc873,#d9a441)}.rollup .emp-medal.rank-2 .avatar-xl{border-color:var(--silver)}.rollup .rank-2 .medal-badge{background:linear-gradient(135deg,#c3cbd6,#a7b0be)}.rollup .emp-medal.rank-3 .avatar-xl{border-color:var(--bronze)}.rollup .rank-3 .medal-badge{background:linear-gradient(135deg,#cd9269,#b7794c)}.rollup .emp-head-bar{background:linear-gradient(180deg,#f7faff,#fff)}.rollup .emp-eyebrow{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--primary);margin-bottom:3px}.rollup .emp-medal .avatar-xl{width:60px;height:60px;font-size:22px;border-radius:18px;border:2.5px solid var(--border);background:#fff;color:var(--text-2);box-shadow:var(--shadow-sm)}.rollup .emp-medal .medal-badge{bottom:-7px;min-width:21px;height:21px;font-size:12px}.rollup .emp-quick{grid-template-columns:repeat(3,1fr);gap:12px}.rollup .grp-head-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rollup .grp-code-chip{font-size:11px;font-weight:700;letter-spacing:.03em;color:var(--muted);background:var(--bg-soft);border:1px solid #e5eaf1;padding:2px 8px;border-radius:6px}.rollup-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:110;display:flex;align-items:center;justify-content:center;padding:24px;background:#1118276b;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:rollupFade .18s ease}.rollup-modal-panel{display:flex;flex-direction:column;background:#fff;border:1px solid #e5eaf1;border-radius:24px;box-shadow:0 30px 80px #0f172a47;overflow:hidden;width:min(1180px,92vw);max-height:88vh;animation:rollupPop .2s cubic-bezier(.2,.8,.3,1)}.rollup-modal-panel--xl{width:min(1360px,95vw);max-height:88vh}.rollup-modal-panel--lg{width:min(1040px,92vw);max-height:86vh}.rollup-modal-panel--md{width:min(920px,84vw);max-height:86vh}.rollup-modal-panel--sm{width:min(560px,90vw);max-height:80vh}.rollup-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px;border-bottom:1px solid var(--border)}.rollup-modal-title{font-size:19px;font-weight:650;color:var(--text);line-height:1.25}.rollup-modal-head-actions{display:flex;align-items:center;gap:8px}.rollup-modal-close{width:36px;height:36px;border-radius:10px;border:1px solid #e5eaf1;background:#fff;font-size:22px;line-height:1;color:var(--muted);cursor:pointer;flex-shrink:0;transition:background .15s ease,color .15s ease,border-color .15s ease}.rollup-modal-close:hover{background:var(--bg-soft);color:var(--text);border-color:var(--border-strong)}.rollup-modal-tabs{display:flex;gap:4px;padding:0 22px;border-bottom:1px solid var(--border);flex-wrap:wrap}.rollup-modal-body{padding:22px;overflow-y:auto;flex:1}.rollup-modal-empty{text-align:center;padding:30px 16px;color:var(--muted)}.rollup-modal-empty .empty-ico{width:56px;height:56px;border-radius:16px;margin:0 auto 14px;display:grid;place-items:center;background:var(--bg-soft);color:var(--muted)}.rollup-modal-empty .empty-ico svg{width:26px;height:26px}.rollup-modal-empty h3{margin:0 0 6px;font-size:15px;color:var(--text)}.rollup-modal-empty p{margin:0 auto;max-width:460px;font-size:13.5px;line-height:1.6}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.warn-chip{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;color:var(--warn-tx, #b7791f);background:var(--warn-bg, #fff7e6);border:1px solid rgba(183,121,31,.24);border-radius:999px;padding:3px 10px}.warn-chip-lg{font-size:13px;padding:6px 14px}.rollup .rollup-modal-header.emp-head-bar{background:linear-gradient(180deg,#f7faff,#fff)}.rollup-modal-header .emp-medal .avatar-xl{width:60px;height:60px;font-size:22px;border-radius:18px;border:2.5px solid var(--border);background:#fff;color:var(--text-2);box-shadow:var(--shadow-sm)}.rollup-modal-header .emp-medal.rank-1 .avatar-xl{border-color:var(--gold, #d9a441)}.rollup-modal-header .emp-medal.rank-2 .avatar-xl{border-color:var(--silver, #a7b0be)}.rollup-modal-header .emp-medal.rank-3 .avatar-xl{border-color:var(--bronze, #b7794c)}@keyframes rollupFade{0%{opacity:0}to{opacity:1}}@keyframes rollupPop{0%{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width: 760px){.rollup-modal-backdrop{padding:12px}.rollup-modal-panel--xl,.rollup-modal-panel--lg,.rollup-modal-panel--md{width:96vw;height:auto;max-height:92vh}.rollup-modal-header,.rollup-modal-body{padding:16px}.rollup-modal-tabs{padding:0 16px}.rollup .ranking-medal-grid:not(.ranking-medal-grid--compact){grid-template-columns:1fr;align-items:stretch}.rollup .ranking-medal-grid:not(.ranking-medal-grid--compact) .ranking-medal-card{transform:none}.rollup .ranking-medal-grid:not(.ranking-medal-grid--compact) .ranking-medal-card:hover{transform:translateY(-2px)}.rollup .ranking-medal-grid:not(.ranking-medal-grid--compact) .rank-1{order:1}.rollup .ranking-medal-grid:not(.ranking-medal-grid--compact) .rank-2{order:2}.rollup .ranking-medal-grid:not(.ranking-medal-grid--compact) .rank-3{order:3}}@media (prefers-reduced-motion: reduce){.rollup-modal-backdrop,.rollup-modal-panel{animation:rollupFade .12s ease}}.rollup .ranking-rest-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:18px;color:var(--muted);font-size:12.5px}.rollup .ranking-rest-head span:first-child{color:var(--text);font-size:13px;font-weight:700}.rollup .rank-table-wrap{width:100%}.rollup .rank-table{width:100%;table-layout:fixed}.rollup .rank-table .c-rank{width:88px}.rollup .rank-table .c-score{width:120px}.rollup .rank-table .c-delta{width:150px}.rollup .rank-table .c-status{width:190px}.rollup .rank-table th,.rollup .rank-table td{overflow:hidden;text-overflow:ellipsis}.rollup .rank-table td:nth-child(2) b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}@media (max-width: 640px){.rollup .rank-table{min-width:640px}}.rollup .attention-limitations{margin:0 0 14px;padding:10px 12px;border-radius:12px;background:#64748b14;border:1px solid rgba(100,116,139,.16);color:var(--muted);font-size:12.5px;line-height:1.6}.rollup .attention-table-wrap{max-height:56vh;overflow:auto;width:100%}.rollup .attention-table{width:100%;min-width:1120px;table-layout:fixed}.rollup .attention-table .a-type{width:150px}.rollup .attention-table .a-task{width:260px}.rollup .attention-table .a-ktv{width:110px}.rollup .attention-table .a-rule{width:140px}.rollup .attention-table .a-status{width:110px}.rollup .attention-table .a-source{width:170px}.rollup .attention-table .a-sugg{width:280px}.rollup .attention-table td{vertical-align:top}.rollup .attention-table .cell-task,.rollup .attention-table .cell-wrap,.rollup .attention-table .cell-sugg{white-space:normal;word-break:normal;overflow-wrap:break-word}.rollup .attention-table .cell-task{display:block}.rollup .attention-table .cell-sugg{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.45}.rollup .source-record{display:block;color:var(--muted);font-size:11.5px;line-height:1.5}.rollup .source-record .src-table{display:block;color:var(--text-2)}.rollup .source-record .rec-id{display:block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rollup .emp-avatar{position:relative;display:inline-flex;flex-shrink:0}.rollup .emp-avatar-ring{display:grid;place-items:center;border-radius:50%;overflow:hidden;border:3px solid var(--border);background:var(--bg-soft);box-shadow:0 4px 12px #0f172a1a}.rollup .emp-avatar-img{width:100%;height:100%;object-fit:cover;display:block}.rollup .emp-avatar-initials{font-weight:700;color:var(--text-2);line-height:1}.rollup .emp-avatar-badge{position:absolute;bottom:-5px;left:50%;transform:translate(-50%);min-width:19px;height:19px;padding:0 5px;border-radius:999px;display:grid;place-items:center;font-size:11px;font-weight:800;color:#fff;border:2px solid #fff;background:var(--silver);box-shadow:var(--shadow-sm)}.rollup .emp-avatar--sm .emp-avatar-ring{width:32px;height:32px;border-width:2px}.rollup .emp-avatar--sm .emp-avatar-initials{font-size:11px}.rollup .emp-avatar--sm .emp-avatar-badge{min-width:15px;height:15px;font-size:9px;bottom:-4px}.rollup .emp-avatar--md .emp-avatar-ring{width:54px;height:54px}.rollup .emp-avatar--md .emp-avatar-initials{font-size:17px}.rollup .emp-avatar--lg .emp-avatar-ring{width:62px;height:62px}.rollup .emp-avatar--lg .emp-avatar-initials{font-size:20px}.rollup .ranking-medal-card.is-center .emp-avatar--lg .emp-avatar-ring{width:74px;height:74px}.rollup .emp-avatar--xl .emp-avatar-ring{width:64px;height:64px;border-width:3px}.rollup .emp-avatar--xl .emp-avatar-initials{font-size:22px}.rollup .emp-avatar.rank-1 .emp-avatar-ring{border-color:var(--gold);box-shadow:0 6px 22px #d9a44180}.rollup .emp-avatar.rank-2 .emp-avatar-ring{border-color:var(--silver);box-shadow:0 6px 18px #a7b0be73}.rollup .emp-avatar.rank-3 .emp-avatar-ring{border-color:var(--bronze);box-shadow:0 6px 18px #b7794c6b}.rollup .emp-avatar.rank-1 .emp-avatar-badge{background:linear-gradient(135deg,#ecc873,#d9a441)}.rollup .emp-avatar.rank-2 .emp-avatar-badge{background:linear-gradient(135deg,#c3cbd6,#a7b0be)}.rollup .emp-avatar.rank-3 .emp-avatar-badge{background:linear-gradient(135deg,#cd9269,#b7794c)}.rollup .rest-person{display:inline-flex;align-items:center;gap:9px;min-width:0}.rollup .rest-person b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rollup .rollup-modal-header .emp-avatar{margin-right:2px}@media (prefers-reduced-motion: reduce){.rollup .emp-avatar-ring{box-shadow:0 2px 8px #0f172a1a}.rollup .ranking-medal-card{transition:none}}.brand-mark.dept-logo{background:#fff;object-fit:contain;padding:5px;box-shadow:0 6px 16px #00000038}.header-brand{display:flex;align-items:center;gap:11px}.header-brand-text{display:flex;flex-direction:column;line-height:1.18}.header-logo{width:32px;height:32px;border-radius:9px;object-fit:contain;background:#fff;padding:4px;box-shadow:var(--shadow-sm);border:1px solid var(--border);flex-shrink:0}.header-logo.dept-logo-fallback{display:grid;place-items:center;font-size:11px;font-weight:800;color:#fff;background:var(--gradient-primary);padding:0;border:none}.avatar-photo{background:none!important;box-shadow:none;overflow:hidden;padding:0}.avatar-photo img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}.app-header-title{font-weight:800;font-size:17px;color:#172033;letter-spacing:-.2px;line-height:1.15}.app-header-subtitle{font-size:12px;color:#6b7280;margin-top:1px}.profile-page{display:flex;flex-direction:column;gap:16px}.profile-header{display:flex;align-items:center;gap:18px}.profile-avatar.profile-avatar{width:72px;height:72px;font-size:26px;border-radius:20px;flex:none}.profile-avatar.avatar-photo{background:none;box-shadow:none;overflow:hidden;padding:0}.profile-avatar.avatar-photo img{width:100%;height:100%;object-fit:cover;border-radius:20px;display:block}.profile-id{min-width:0}.profile-name{font-size:20px;font-weight:800;letter-spacing:-.2px;color:var(--text)}.profile-sub{font-size:13.5px;margin-top:2px}.profile-code{font-weight:700;color:var(--text-2)}.profile-meta{display:flex;flex-wrap:wrap;gap:14px;margin-top:8px;font-size:13px}.profile-tabs{display:flex;flex-wrap:wrap;gap:6px;border-bottom:1px solid var(--border);padding-bottom:0}.profile-tab{background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;padding:9px 14px;font-size:14px;font-weight:600;color:var(--text-2);border-radius:8px 8px 0 0}.profile-tab:hover{background:var(--bg-soft);color:var(--text)}.profile-tab.active{color:var(--accent-2);border-bottom-color:var(--accent-2)}.profile-body{min-height:120px}.profile-empty{padding:22px;text-align:center;background:var(--bg-soft);border-radius:12px;font-size:14px}.profile-skills p{margin:6px 0 0;color:var(--text-2);line-height:1.55}.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}@media (max-width: 760px){.account-grid{grid-template-columns:1fr}.profile-header{flex-direction:column;text-align:center;align-items:center}}.work-avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:9px;background:var(--bg-soft);color:var(--text-2);font-weight:700;flex:none;overflow:hidden}.work-avatar-sm{width:28px;height:28px;font-size:11px}.work-avatar-md{width:44px;height:44px;font-size:15px;border-radius:12px}.work-avatar.is-photo{background:none}.work-avatar img{width:100%;height:100%;object-fit:cover;display:block}.work-table-wrap{overflow-x:auto}.work-table{width:100%;border-collapse:collapse;font-size:13.5px}.work-table th,.work-table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:top}.work-table thead th{font-size:12px;color:var(--text-2);font-weight:600;white-space:nowrap}.work-row{cursor:pointer}.work-row:hover{background:var(--bg-soft)}.work-table .nowrap{white-space:nowrap}.work-emp{display:flex;align-items:center;gap:8px}.work-emp-name{white-space:nowrap}.work-task{max-width:360px}.work-kpi{white-space:nowrap}.work-filters{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:14px}.work-filters label{display:flex;flex-direction:column;gap:4px}.work-filters select,.work-filters input{padding:7px 10px;border:1px solid var(--border-strong);border-radius:9px;background:var(--surface);font-size:13.5px}.work-filters .work-search{flex:1;min-width:200px}.work-filters .work-search input{width:100%}.work-limitations{background:#f59e0b14;border:1px solid rgba(245,158,11,.22);border-radius:12px;padding:10px 14px;margin-bottom:12px;font-size:13px}.work-limitations ul{margin:6px 0 0;padding-left:18px;color:var(--text-2)}.work-limitations li{margin:2px 0}.work-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.work-modal{background:var(--surface);border-radius:18px;width:min(720px,96vw);max-height:90vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000047}.work-modal-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}.work-modal-title{font-weight:700;font-size:16px}.work-modal-close{margin-left:auto;background:none;border:none;font-size:18px;cursor:pointer;color:var(--text-2)}.work-modal-body{padding:16px 20px;overflow-y:auto}.work-content{background:var(--bg-soft);border-radius:10px;padding:10px 12px;margin:0 0 12px;line-height:1.55}.work-links{margin:8px 0 0;padding-left:18px;font-size:13px;color:var(--text-2)}.wef-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;margin-top:10px}.wef-field{display:flex;flex-direction:column;gap:4px;min-width:0}.wef-field.wef-full{grid-column:1 / -1}.wef-field input,.wef-field select,.wef-field textarea{width:100%;box-sizing:border-box}.wef-section-title{font-weight:700;font-size:13px;margin:16px 0 6px;color:#111827}.wef-kpi-row{padding:8px 0;border-top:1px solid #f1f5f9}.wef-kpi-head{font-size:13px;color:#374151;margin-bottom:6px}.wef-rule{cursor:pointer;border:1px solid transparent}.wef-neutral{background:#f1f5f9;color:#475569}.wef-good{background:#dcfce7;color:#15803d}.wef-warn{background:#fef3c7;color:#b45309}.wef-active{outline:2px solid #7c3aed;outline-offset:1px}.wef-reason{margin-top:6px;width:100%;box-sizing:border-box;padding:5px 8px;border:1px solid #d1d5db;border-radius:6px;font-size:13px}.wef-payload{margin-top:8px;background:#0f172a;color:#e2e8f0;border-radius:8px;padding:12px;font-size:12px;max-height:240px;overflow:auto}@media (max-width: 640px){.wef-grid{grid-template-columns:1fr}}.bwe-modal{position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;width:min(1120px,96vw);max-height:92vh;background:#fff;border-radius:16px;box-shadow:0 24px 64px #0f172a47;display:flex;flex-direction:column;overflow:hidden}.bwe-head{display:flex;align-items:flex-start;gap:12px;padding:16px 20px;border-bottom:1px solid #eef2f7;background:linear-gradient(180deg,#faf5ff,#fff);position:sticky;top:0}.bwe-title{font-size:18px;font-weight:800;color:#111827;letter-spacing:-.2px}.bwe-sub{font-size:12.5px;color:#6b7280;margin-top:2px}.bwe-note{margin:12px 20px 0;padding:9px 12px;border-radius:10px;font-size:12.5px;background:#f5f3ff;border:1px solid #e9e3fb;color:#5b21b6}.bwe-tabs{display:flex;gap:6px;padding:12px 20px 0}.bwe-tab{padding:8px 14px;border:1px solid #e5e7eb;border-bottom:none;background:#f8fafc;border-radius:10px 10px 0 0;font-size:13px;font-weight:600;color:#64748b;cursor:pointer}.bwe-tab.is-active{background:#fff;color:#6d28d9;border-color:#ddd6fe;box-shadow:0 -2px #7c3aed inset}.bwe-body{flex:1;overflow:auto;padding:14px 20px;border-top:1px solid #eef2f7}.bwe-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.bwe-grid-wrap{overflow:auto;border:1px solid #eef2f7;border-radius:12px}.bwe-grid{width:100%;border-collapse:collapse;font-size:13px;min-width:920px}.bwe-grid thead th{position:sticky;top:0;z-index:1;background:#f8fafc;text-align:left;padding:9px 10px;border-bottom:2px solid #e5e7eb;color:#64748b;font-weight:700;white-space:nowrap}.bwe-grid td{padding:6px 8px;border-bottom:1px solid #f1f5f9;vertical-align:middle}.bwe-row-warn{background:#fffdf5}.bwe-in{width:100%;box-sizing:border-box;height:32px;padding:4px 8px;border:1px solid #d8dee9;border-radius:8px;font-size:13px;background:#fff}.bwe-grid td:nth-child(2){min-width:220px}.bwe-warn-cell{white-space:nowrap}.bwe-badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700}.bwe-ok{background:#dcfce7;color:#15803d}.bwe-need{background:#fef3c7;color:#b45309}.bwe-dup{background:#ffe4e6;color:#be123c;margin-right:4px}.bwe-actions{white-space:nowrap}.bwe-icon{background:none;border:none;cursor:pointer;font-size:14px;padding:2px 4px;color:#64748b;border-radius:6px}.bwe-icon:hover{background:#f1f5f9}.bwe-hint{font-size:12px;color:#94a3b8;margin:8px 0 0}.bwe-kpi-chip{position:relative;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;cursor:pointer;border:1px solid transparent;white-space:nowrap}.bwe-kpi-chip.is-default{background:#f1f5f9;color:#475569}.bwe-kpi-chip.is-changed{background:#ede9fe;color:#6d28d9;border-color:#ddd6fe}.bwe-kpi-chip.is-need{background:#fef3c7;color:#b45309}.bwe-kpi-pop{position:absolute;z-index:30;margin-top:6px;width:320px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 16px 40px #0f172a2e;padding:12px}.bwe-kpi-pop-head{display:flex;justify-content:space-between;align-items:center;font-weight:700;font-size:13px;margin-bottom:8px}.bwe-kpi-dim{padding:6px 0;border-top:1px solid #f1f5f9}.bwe-kpi-dim-name{font-size:12.5px;font-weight:600;color:#374151;margin-bottom:4px}.bwe-kpi-auto{font-size:10.5px;font-weight:700;color:#7c3aed;background:#ede9fe;border-radius:999px;padding:1px 7px;margin-left:4px}.bwe-kpi-k1{font-size:13px;color:#111827}.bwe-code{color:#9ca3af;font-size:11px}.bwe-kpi-opts{display:flex;gap:6px;flex-wrap:wrap}.bwe-kpi-opt{padding:4px 9px;border-radius:8px;border:1px solid #e5e7eb;background:#f8fafc;font-size:12px;cursor:pointer;color:#475569}.bwe-kpi-opt.is-on{background:#7c3aed;border-color:#7c3aed;color:#fff}.bwe-reason{width:100%;box-sizing:border-box;margin-top:6px;padding:5px 8px;border:1px solid #fcd34d;border-radius:7px;font-size:12.5px;background:#fffdf5}.bwe-example{background:#0f172a;color:#cbd5e1;border-radius:8px;padding:10px;font-size:12px;overflow:auto;margin:6px 0}.bwe-textarea{width:100%;box-sizing:border-box;border:1px solid #d8dee9;border-radius:10px;padding:10px;font-size:13px;font-family:inherit}.bwe-detail-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px 14px}.bwe-l{display:flex;flex-direction:column;gap:4px;min-width:0}.bwe-l-full{grid-column:1 / -1}.bwe-detail-k1{height:32px;display:flex;align-items:center;font-size:13px;color:#6d28d9;font-weight:600}.bwe-foot{display:flex;align-items:center;gap:12px;padding:12px 20px;border-top:1px solid #eef2f7;background:#fafafa;position:sticky;bottom:0;flex-wrap:wrap}.bwe-summary{font-size:13px;color:#475569}.bwe-summary .t-ok{color:#15803d}.bwe-summary .t-need{color:#b45309}.bwe-summary .t-dup{color:#be123c}.bwe-unsaved{color:#7c3aed;font-weight:700;margin-left:4px}.bwe-foot-actions{margin-left:auto;display:flex;gap:8px}.bwe-tech{padding:10px 20px 16px;border-top:1px dashed #e5e7eb}.bwe-tech-summary{font-size:12.5px;color:#475569;margin-bottom:6px}.bwe-tech details summary{cursor:pointer;font-size:12px;color:#94a3b8}.bwe-json{background:#0f172a;color:#e2e8f0;border-radius:8px;padding:10px;font-size:11.5px;max-height:200px;overflow:auto;margin-top:6px}.wdp{position:relative}.wdp-input{width:100%;box-sizing:border-box;height:32px;padding:4px 8px;border:1px solid #d8dee9;border-radius:8px;font-size:13px}.wdp-input.wdp-sm{height:30px;min-width:104px}.wdp-input.wdp-invalid{border-color:#fca5a5;background:#fff5f5}.wdp-pop{position:absolute;z-index:40;margin-top:4px;width:252px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 16px 40px #0f172a2e;padding:10px}.wdp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.wdp-title{font-weight:700;font-size:13px}.wdp-nav{border:1px solid #e5e7eb;background:#f8fafc;border-radius:8px;width:26px;height:26px;cursor:pointer;font-size:14px}.wdp-wd{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;font-size:11px;color:#94a3b8;text-align:center;margin-bottom:2px}.wdp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.wdp-day{height:30px;border:none;background:none;border-radius:8px;cursor:pointer;font-size:13px;color:#334155}.wdp-day:hover{background:#f1f5f9}.wdp-empty{height:30px}.wdp-today{box-shadow:0 0 0 1px #c4b5fd inset;font-weight:700;color:#6d28d9}.wdp-selected{background:#7c3aed;color:#fff}.wdp-selected:hover{background:#6d28d9}.wdp-foot{display:flex;gap:6px;margin-top:8px;border-top:1px solid #f1f5f9;padding-top:8px}.wdp-quick{flex:1;border:1px solid #e5e7eb;background:#f8fafc;border-radius:8px;padding:5px;font-size:12px;cursor:pointer;color:#475569}.wdp-quick.wdp-clear{color:#be123c}@media (max-width: 720px){.bwe-detail-grid{grid-template-columns:1fr}}.bwe-modal.bwe-wide{width:min(1320px,98vw);max-height:94vh}.bwe-grid-ss{min-width:1100px}.bwe-grid-ss th:nth-child(4),.bwe-grid-ss td:nth-child(4){min-width:240px}.bwe-grid-ss th:nth-child(8),.bwe-grid-ss td:nth-child(8){min-width:160px}.bwe-grid-ss td:nth-child(-n+3){width:124px}.bwe-grid-wrap{max-height:52vh}.bwe-pg{display:inline-block;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.bwe-pg.pg-good{background:#dcfce7;color:#15803d}.bwe-pg.pg-late{background:#fef3c7;color:#b45309}.bwe-pg.pg-pending{background:#e0e7ff;color:#4338ca}.bwe-pg.pg-cancel{background:#f1f5f9;color:#64748b;text-decoration:line-through}.bwe-pg.pg-need,.bwe-icon.is-on{background:#fee2e2;color:#b91c1c}.bwe-link{background:none;border:none;cursor:pointer;font:inherit;font-weight:700;padding:0;text-decoration:underline dotted}.bwe-link.t-need{color:#b45309}.bwe-link.t-dup{color:#be123c}.bwe-paste-tmpl{border:1px solid #eef2f7;border-radius:12px;padding:10px;margin-bottom:12px;background:#fafbff}.bwe-paste-tmpl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:13px}.bwe-tmpl-grid{min-width:720px;font-size:12.5px}.bwe-tmpl-grid th{background:#eef2ff;color:#4338ca}.bwe-preview{margin-top:12px;border-top:1px dashed #e5e7eb;padding-top:10px}.bwe-preview-head{font-size:13px;color:#374151;margin-bottom:6px}.bwe-check{display:flex;align-items:center;gap:6px;font-size:13px;height:32px;color:#374151}.bwe-paste-howto{background:#f5f3ff;border:1px solid #e9e3fb;color:#4c1d95;border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.5;margin-bottom:10px}.bwe-paste-tmpl-acc{margin-bottom:10px}.bwe-paste-tmpl-acc>summary{cursor:pointer;font-size:12.5px;color:#6d28d9;font-weight:600;padding:4px 0}.bwe-paste-tmpl-acc[open]>summary{margin-bottom:6px}.bwe-grid-paste{min-width:1040px}.bwe-grid-paste th:nth-child(4),.bwe-grid-paste td:nth-child(4){min-width:230px}.bwe-grid-paste th:nth-child(6),.bwe-grid-paste td:nth-child(6){min-width:170px}.bwe-grid-paste td:nth-child(-n+3){width:122px}.bwe-pcell{width:100%;box-sizing:border-box;height:32px;padding:4px 8px;border:1px solid #d8dee9;border-radius:8px;font-size:13px;background:#fff}.bwe-pcell:focus{outline:none;border-color:#7c3aed;box-shadow:0 0 0 2px #ede9fe}.bwe-pcell.is-active{border-color:#7c3aed;box-shadow:0 0 0 2px #ede9fe}.bwe-warn{background:#ffedd5;color:#c2410c}.bwe-paste-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:10px;border-top:1px dashed #e5e7eb}.bwe-paste-foot .btn-primary{margin-left:auto}.bwe-grid-paste .muted-cell{color:#cbd5e1}.bwe-result{padding:10px 20px 14px;border-top:1px solid #eef2f7;font-size:13px}.bwe-result.is-ok{background:#f0fdf4}.bwe-result.is-error{background:#fef2f2;color:#b91c1c}.bwe-result-head{font-weight:700;margin-bottom:6px}.bwe-result-list{margin:0;padding-left:18px;max-height:160px;overflow:auto}.bwe-result-list li{margin:2px 0;color:#475569}.bwe-result-list li.res-rejected{color:#b91c1c}.bwe-result-list li.res-warning{color:#c2410c}.bwe-result .t-need{color:#b45309}.bwe-result .t-dup{color:#be123c}.bwe-note-on{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}.dov-wrap{max-width:1200px;margin:0 auto;padding:4px 4px 40px}.dov-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.dov-title{font-size:24px;font-weight:800;color:#0f172a;margin:0;letter-spacing:-.02em}.dov-sub{color:#64748b;font-size:14px;margin:4px 0 0}.dov-badges{display:flex;gap:8px;flex-wrap:wrap}.dov-badge{font-size:12px;font-weight:700;padding:5px 11px;border-radius:999px}.dov-badge-read{background:#eef2ff;color:#4338ca}.dov-badge-info{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0;max-width:340px}.dov-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}.dov-seg{display:inline-flex;background:#f1f5f9;border-radius:10px;padding:3px}.dov-seg-btn{border:none;background:none;padding:7px 14px;border-radius:8px;font-size:13px;font-weight:600;color:#475569;cursor:pointer}.dov-seg-btn.is-on{background:#fff;color:#6d28d9;box-shadow:0 1px 3px #0f172a1f}.dov-input{height:36px;border:1px solid #d8dee9;border-radius:9px;padding:0 10px;font-size:13px;background:#fff;color:#0f172a}.dov-range{display:inline-flex;align-items:center;gap:8px}.dov-period{color:#475569;font-size:13px;margin-left:auto}.dov-empty{padding:48px;text-align:center;color:#94a3b8;background:#f8fafc;border-radius:14px}.dov-empty.dov-err{color:#b91c1c;background:#fef2f2}.dov-empty-sm{padding:22px;text-align:center;color:#94a3b8;font-size:13px}.dov-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:18px}.dov-card{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;box-shadow:0 1px 2px #0f172a0a}.dov-card.is-accent{background:linear-gradient(135deg,#faf5ff,#fff);border-color:#e9d5ff}.dov-card-label{font-size:12.5px;color:#64748b;font-weight:600}.dov-card-value{font-size:26px;font-weight:800;color:#0f172a;margin-top:6px;letter-spacing:-.02em}.dov-card-value.is-muted{font-size:18px;color:#94a3b8}.dov-card-hint{font-size:11.5px;color:#94a3b8;margin-top:2px}.dov-grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:18px}.dov-panel{background:#fff;border:1px solid #eef2f7;border-radius:16px;padding:18px;box-shadow:0 1px 2px #0f172a0a}.dov-h2{font-size:15px;font-weight:700;color:#0f172a;margin:0 0 14px}.dov-trend{display:flex;align-items:flex-end;gap:14px;height:180px;padding-top:10px}.dov-trend-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}.dov-trend-val{font-size:13px;font-weight:700;color:#6d28d9;margin-bottom:6px}.dov-trend-bar{width:70%;max-width:64px;background:linear-gradient(180deg,#a78bfa,#7c3aed);border-radius:8px 8px 0 0;min-height:10px}.dov-trend-x{font-size:12px;color:#64748b;margin-top:8px}.dov-comp{display:flex;flex-direction:column;gap:14px}.dov-comp-row{display:grid;grid-template-columns:150px 1fr 48px;align-items:center;gap:10px}.dov-comp-name{font-size:12.5px;color:#374151;font-weight:600}.dov-comp-track{height:12px;background:#f1f5f9;border-radius:999px;overflow:hidden}.dov-comp-fill{display:block;height:100%;border-radius:999px}.dov-comp-val{font-size:13px;font-weight:700;color:#0f172a;text-align:right}.dov-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.dov-gcard{text-align:left;background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:14px;cursor:pointer;transition:box-shadow .15s,transform .15s;display:flex;flex-direction:column;gap:10px}.dov-gcard:hover{box-shadow:0 8px 24px #0f172a1a;transform:translateY(-2px);border-color:#ddd6fe}.dov-gcard-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.dov-gname{font-size:15px;font-weight:700;color:#0f172a}.dov-gstatus{font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:999px;white-space:nowrap}.dov-gstatus.is-ok{background:#dcfce7;color:#15803d}.dov-gstatus.is-warn{background:#fef3c7;color:#b45309}.dov-gstatus.is-none{background:#f1f5f9;color:#94a3b8}.dov-gmeta{display:flex;flex-direction:column;gap:3px;font-size:13px;color:#475569}.dov-gcta{font-size:12px;color:#7c3aed;font-weight:600}.dov-notes ul{margin:0;padding-left:18px;color:#475569;font-size:13px;line-height:1.7}.dov-drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a6b;z-index:50;display:flex;justify-content:flex-end}.dov-drawer{width:min(420px,92vw);height:100%;background:#fff;box-shadow:-12px 0 40px #0f172a2e;padding:22px;overflow-y:auto;animation:dovSlide .18s ease}@keyframes dovSlide{0%{transform:translate(20px);opacity:.6}to{transform:none;opacity:1}}.dov-drawer-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.dov-drawer-title{font-size:18px;font-weight:800;color:#0f172a}.dov-drawer-sub{font-size:12.5px;color:#64748b;margin-top:2px}.dov-drawer-x{border:none;background:#f1f5f9;width:30px;height:30px;border-radius:8px;cursor:pointer;color:#475569}.dov-drawer-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}.dov-drawer-stats>div{background:#f8fafc;border-radius:10px;padding:12px;text-align:center;font-size:11.5px;color:#64748b}.dov-drawer-stats>div span{display:block;font-size:20px;font-weight:800;color:#0f172a;margin-bottom:2px}.dov-drawer-kpi{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.dov-drawer-kpi-row{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:#374151;padding:8px 10px;background:#f8fafc;border-radius:8px}.dov-drawer-rank-h{font-weight:700;color:#0f172a;margin-bottom:8px;font-size:13px}.dov-drawer-rank-row{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #f1f5f9;color:#374151;font-size:13px}.dov-rank-no{color:#7c3aed;font-weight:700}.dov-drawer-note{font-size:11.5px;color:#94a3b8;margin-top:8px}.dov-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px;padding:22px 24px;border-radius:18px;background:linear-gradient(120deg,#1e1b4b,#4c1d95 55%,#6d28d9);box-shadow:0 12px 30px #4c1d9547}.dov-hero .dov-title{color:#fff;font-size:26px}.dov-hero .dov-sub{color:#ddd6fe}.dov-hero .dov-badge-read{background:#ffffff29;color:#fff}.dov-hero .dov-badge-info{background:#fffffff2;color:#5b21b6;border:none}.dov-card{transition:box-shadow .15s,transform .15s}.dov-card:hover{box-shadow:0 8px 22px #0f172a14}.dov-card-row{display:flex;align-items:center;justify-content:space-between}.dov-card-icon{font-size:16px;color:#c4b5fd}.dov-card.is-accent .dov-card-icon{color:#a78bfa}.dov-h2-hint{font-size:12px;font-weight:500;color:#94a3b8;margin-left:4px}.dov-trend-col{border:none;background:none;cursor:pointer;padding:0}.dov-trend-col:hover .dov-trend-bar{filter:brightness(1.08);box-shadow:0 4px 12px #7c3aed4d}.dov-comp-row{border:none;background:none;cursor:pointer;text-align:left;padding:4px;border-radius:8px}.dov-comp-row:hover{background:#faf5ff}.dov-av{border-radius:50%;object-fit:cover;flex:none;background:#ede9fe}.dov-av-ini{display:inline-flex;align-items:center;justify-content:center;font-weight:800;color:#6d28d9}.dov-rankgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.dov-rankcard{border:1px solid #eef2f7;border-radius:16px;padding:16px;background:linear-gradient(180deg,#faf5ff,#fff)}.dov-rankcard-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:12px}.dov-rankcard-name{font-size:16px;font-weight:800;color:#0f172a}.dov-rankcard-code{font-size:12px;color:#94a3b8;margin-top:2px}.dov-rankcard-score{text-align:right}.dov-rankcard-score b{display:block;font-size:22px;font-weight:800;color:#6d28d9;line-height:1}.dov-rankcard-score span{font-size:11px;color:#94a3b8}.dov-podium{display:flex;flex-direction:column;gap:6px}.dov-podium-row{display:grid;grid-template-columns:30px 32px 1fr auto;align-items:center;gap:9px;border:none;background:#fff;border-radius:10px;padding:7px 10px;cursor:pointer;transition:box-shadow .12s}.dov-podium-row:hover{box-shadow:0 4px 14px #0f172a1a}.dov-podium-row.r1{background:linear-gradient(90deg,#fef9c3,#fff)}.dov-medal{font-size:17px;text-align:center}.dov-podium-name{font-size:13.5px;font-weight:600;color:#1f2937;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dov-podium-score{font-size:14px;font-weight:800;color:#6d28d9}.dov-rankcard-more{margin-top:12px;width:100%;border:1px dashed #ddd6fe;background:#fff;color:#6d28d9;font-weight:600;font-size:12.5px;padding:8px;border-radius:10px;cursor:pointer}.dov-rankcard-more:hover{background:#faf5ff}.dov-drawer-rank-row.dov-clickable{cursor:pointer;border:none;background:none;width:100%;text-align:left}.dov-drawer-rank-row.dov-clickable:hover{background:#faf5ff;border-radius:8px}.dov-member-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.dov-member-name{font-size:17px;font-weight:800;color:#0f172a}.dov-member-score{margin-left:auto;text-align:right}.dov-member-score b{display:block;font-size:20px;font-weight:800;color:#6d28d9;line-height:1}.dov-member-score span{font-size:11px;color:#94a3b8}.dov-work-row{display:flex;flex-direction:column;padding:8px 0;border-bottom:1px solid #f1f5f9}.dov-work-title{font-size:13px;color:#1f2937;font-weight:500}.dov-work-meta{font-size:11.5px;color:#94a3b8;margin-top:2px}@media (max-width: 900px){.dov-cards{grid-template-columns:repeat(2,1fr)}.dov-grid2{grid-template-columns:1fr}}.dov-notice{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.dov-chip{font-size:12px;font-weight:600;color:#4338ca;background:#eef2ff;border:1px solid #e0e7ff;padding:5px 12px;border-radius:999px}.dov-chip-soft{color:#64748b;background:#f8fafc;border-color:#eef2f7}.dov-groupgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-bottom:18px}.dov-gbig{background:#fff;border:1px solid #eef2f7;border-radius:18px;padding:20px;box-shadow:0 2px 8px #0f172a0d;display:flex;flex-direction:column;gap:14px}.dov-gbig:hover{box-shadow:0 10px 28px #0f172a17}.dov-gbig-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.dov-gbig-name{font-size:18px;font-weight:800;color:#0f172a;letter-spacing:-.01em}.dov-gbig-code{font-size:12px;color:#94a3b8;margin-top:2px}.dov-gbig-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.dov-gbig-meta>div{background:#f8fafc;border-radius:12px;padding:12px 10px;text-align:center;font-size:11.5px;color:#64748b}.dov-gbig-meta>div span{display:block;font-size:21px;font-weight:800;color:#0f172a;margin-bottom:2px;letter-spacing:-.02em}.dov-gbig-rank{display:flex;flex-direction:column;gap:6px}.dov-gbig-rank-h{font-size:12.5px;font-weight:700;color:#6d28d9}.dov-gbig-empty{background:#faf5ff;border:1px dashed #e9d5ff;border-radius:12px;padding:16px;font-size:12.5px;color:#7c3aed;text-align:center;line-height:1.5}.dov-gbig-cta{margin-top:auto;width:100%;border:1px solid #ddd6fe;background:#faf5ff;color:#6d28d9;font-weight:700;font-size:13px;padding:10px;border-radius:12px;cursor:pointer;transition:background .12s}.dov-gbig-cta:hover{background:#f3e8ff}@media (max-width: 820px){.dov-groupgrid{grid-template-columns:1fr}}.dov-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}.dov-topbar .dov-title{font-size:22px;font-weight:800;color:#0f172a;margin:0;letter-spacing:-.02em}.dov-topbar .dov-sub{color:#64748b;font-size:13.5px;margin:3px 0 0}.dov-topbar .dov-badges{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.dov-notescard{margin-top:18px;padding:16px 18px}.dov-notes-ul{margin:8px 0 0;padding-left:18px;color:#475569;font-size:13px;line-height:1.7}.group-card .ranking-medal-grid{margin-top:6px}.group-card-cta{margin-top:10px;width:100%}.dov-wrap .emp-avatar-ring{overflow:hidden;border-radius:50%}.dov-wrap .emp-avatar-img{width:100%;height:100%;object-fit:cover;display:block}.dov-wrap .emp-avatar-initials{display:grid;place-items:center;width:100%;height:100%}.dov-wrap .emp-avatar--sm .emp-avatar-ring{width:32px;height:32px}.dov-wrap .emp-avatar--md .emp-avatar-ring{width:54px;height:54px}.dov-wrap .emp-avatar--lg .emp-avatar-ring{width:62px;height:62px}.dov-wrap .ranking-medal-card.is-center .emp-avatar--lg .emp-avatar-ring{width:74px;height:74px}.wd-block{display:flex;flex-direction:column;gap:10px;padding:4px 2px}.wd-row{display:grid;grid-template-columns:200px 1fr 96px;align-items:center;gap:12px}.wd-label{font-size:13px;color:var(--text, #1f2937);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wd-track{height:14px;background:#eef2f7;border-radius:999px;overflow:hidden}.wd-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#a78bfa,#7c3aed);min-width:4px}.wd-fill.tone-ok{background:linear-gradient(90deg,#4ade80,#16a34a)}.wd-fill.tone-progress{background:linear-gradient(90deg,#fbbf24,#d97706)}.wd-fill.tone-none{background:linear-gradient(90deg,#cbd5e1,#94a3b8)}.wd-val{font-size:12.5px;font-weight:700;color:var(--text, #0f172a);text-align:right;white-space:nowrap}.wd-daily td.wd-task{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 640px){.wd-row{grid-template-columns:120px 1fr 78px}}.bulk-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;padding:8px 12px;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;font-size:13px;color:#991b1b}.bulk-bar .btn{background:#dc2626;color:#fff;border:none}.bulk-bar .btn:hover{background:#b91c1c}.bulk-bar .btn.btn-ghost{background:none;color:#991b1b}tr.row-sel{background:#fff7ed}.fx-host{position:relative;overflow:visible;isolation:isolate}.fx-aura{position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px;border-radius:24px;opacity:0;z-index:-1;pointer-events:none;transition:opacity .3s ease;filter:blur(2px)}.fx-host[data-tier="1"] .fx-aura{background:radial-gradient(ellipse at 50% 38%,rgba(251,191,36,.46),transparent 66%)}.fx-host[data-tier="2"] .fx-aura{background:radial-gradient(ellipse at 50% 38%,rgba(148,163,184,.4),transparent 66%)}.fx-host[data-tier="3"] .fx-aura{background:radial-gradient(ellipse at 50% 38%,rgba(205,127,50,.36),transparent 66%)}.fx-host:hover .fx-aura,.fx-host:focus-visible .fx-aura{opacity:1;animation:fx-aura-pulse 1.4s ease-in-out infinite}@keyframes fx-aura-pulse{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}.fx-orbit{position:absolute;top:-20px;left:50%;transform:translate(-50%);width:78px;height:78px;pointer-events:none;z-index:5;opacity:0;transition:opacity .3s ease}.fx-host:hover .fx-orbit{opacity:1}.fx-orbit i{position:absolute;border-radius:50%;background:#fcd34d;box-shadow:0 0 6px #f59e0b;animation:fx-blink linear infinite}.fx-orbit i:nth-child(1){width:7px;height:7px;top:2px;left:50%;margin-left:-3px;animation-duration:2.6s}.fx-orbit i:nth-child(2){width:4px;height:4px;top:50%;left:2px;margin-top:-2px;animation-duration:3.3s;animation-direction:reverse;background:#fff}.fx-orbit i:nth-child(3){width:6px;height:6px;bottom:2px;left:50%;margin-left:-3px;animation-duration:2.1s}.fx-orbit i:nth-child(4){width:4px;height:4px;top:50%;right:2px;margin-top:-2px;animation-duration:3.7s;animation-direction:reverse;background:#fff}.fx-orbit i:nth-child(5){width:3px;height:3px;top:12px;left:12px;animation-duration:4s}.fx-orbit i:nth-child(6){width:3px;height:3px;top:12px;right:12px;animation-duration:2.9s;animation-direction:reverse}@keyframes fx-blink{0%,to{opacity:.35;transform:scale(.7)}50%{opacity:1;transform:scale(1.35)}}.fx-sparkles{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:6}.fx-sparkles i{position:absolute;width:5px;height:5px;border-radius:50%;opacity:0;background:#fff;box-shadow:0 0 6px 1px #ffffffd9}.fx-host[data-tier="1"] .fx-sparkles i{background:#ffe566;box-shadow:0 0 7px 1px #f59e0be6}.fx-host[data-tier="2"] .fx-sparkles i{background:#e2e8f0;box-shadow:0 0 6px 1px #94a3b8d9}.fx-host[data-tier="3"] .fx-sparkles i{background:#fed7aa;box-shadow:0 0 6px 1px #cd7f32d9}.fx-sparkles i:nth-child(1){top:16%;left:18%}.fx-sparkles i:nth-child(2){top:22%;right:16%;width:4px;height:4px}.fx-sparkles i:nth-child(3){top:44%;left:10%;width:3px;height:3px}.fx-sparkles i:nth-child(4){top:38%;right:10%}.fx-sparkles i:nth-child(5){top:62%;left:22%;width:4px;height:4px}.fx-sparkles i:nth-child(6){top:66%;right:20%;width:3px;height:3px}.fx-sparkles i:nth-child(7){top:12%;left:48%;width:4px;height:4px}.fx-sparkles i:nth-child(8){top:78%;left:50%;width:3px;height:3px}.fx-host:hover .fx-sparkles i{animation:fx-spark 1.3s ease-in-out infinite}.fx-host:hover .fx-sparkles i:nth-child(2){animation-delay:.18s}.fx-host:hover .fx-sparkles i:nth-child(3){animation-delay:.36s}.fx-host:hover .fx-sparkles i:nth-child(4){animation-delay:.54s}.fx-host:hover .fx-sparkles i:nth-child(5){animation-delay:.72s}.fx-host:hover .fx-sparkles i:nth-child(6){animation-delay:.24s}.fx-host:hover .fx-sparkles i:nth-child(7){animation-delay:.42s}.fx-host:hover .fx-sparkles i:nth-child(8){animation-delay:.6s}@keyframes fx-spark{0%,to{opacity:0;transform:scale(.4) translateY(0)}45%{opacity:1;transform:scale(1) translateY(-5px)}}.fx-host:hover .fx-icon{animation:fx-bounce .75s ease-in-out infinite}@keyframes fx-bounce{0%,to{transform:scale(1) translateY(0)}50%{transform:scale(1.13) translateY(-3px)}}@media (prefers-reduced-motion: reduce){.fx-host:hover .fx-aura{animation:none;opacity:1}.fx-host:hover .fx-orbit i,.fx-host:hover .fx-sparkles i,.fx-host:hover .fx-icon{animation:none}.fx-host:hover .fx-sparkles i{opacity:.85}}
