:root{--c-primary:#2563eb;--c-primary-h:#1d4ed8;--c-primary-l:#eff6ff;--c-primary-m:#bfdbfe;--c-success:#059669;--c-success-l:#ecfdf5;--c-warning:#d97706;--c-warning-l:#fffbeb;--c-danger:#dc2626;--c-danger-l:#fef2f2;--c-purple:#7c3aed;--c-purple-l:#f5f3ff;--c-ink:#0f172a;--c-ink-2:#334155;--c-muted:#64748b;--c-border:#e2e8f0;--c-border-2:#cbd5e1;--c-surface:#f8fafc;--c-bg:#f1f5f9;--c-white:#fff;--c-sidebar-bg:#0f172a;--c-sidebar-act:#ffffff1a;--c-sidebar-txt:#ffffffa6;--c-sidebar-txth:#fff;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--f-xs:.6875rem;--f-sm:.8125rem;--f-base:.875rem;--f-md:1rem;--f-lg:1.125rem;--f-xl:1.25rem;--f-2xl:1.5rem;--f-3xl:1.875rem;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-6:1.5rem;--sp-8:2rem;--sp-10:2.5rem;--r-sm:.375rem;--r-md:.5rem;--r-lg:.75rem;--r-xl:1rem;--r-2xl:1.25rem;--r-full:9999px;--sh-xs:0 1px 2px #0000000f;--sh-sm:0 1px 3px #0000001a, 0 1px 2px #0000000f;--sh-md:0 4px 6px -1px #00000014, 0 2px 4px -1px #0000000a;--sh-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--sh-xl:0 20px 25px -5px #0000001a, 0 10px 10px -5px #0000000a;--sidebar-w:240px;--sidebar-w-sm:64px;--header-h:56px;--bottom-nav-h:64px;font:var(--f-base)/1.5 var(--font);color:var(--c-ink);background:var(--c-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{overscroll-behavior:none}#root{text-align:left;border:none;width:100%;min-height:100dvh;display:block}h1,h2,h3,h4,h5,h6{color:var(--c-ink);margin:0;font-weight:700;line-height:1.25}p{margin:0}a{color:var(--c-primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:var(--font);font-size:var(--f-base);cursor:pointer;background:0 0;border:none;padding:0}input,select,textarea{font-family:var(--font);font-size:var(--f-base)}.k-shell{background:var(--c-bg);min-height:100dvh;display:flex;position:relative}.k-sidebar{background:var(--c-sidebar-bg);color:var(--c-sidebar-txth);width:var(--sidebar-w);z-index:40;flex-direction:column;flex-shrink:0;transition:width .2s;display:flex;position:relative;overflow:hidden}.k-sidebar.collapsed{width:var(--sidebar-w-sm)}.k-sidebar-header{padding:var(--sp-4);min-height:var(--header-h);border-bottom:1px solid #ffffff12;flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.k-brand{font-size:var(--f-xl);color:#60a5fa;letter-spacing:-.5px;white-space:nowrap;font-weight:800}.k-collapse-btn{color:#fff6;padding:var(--sp-1);border-radius:var(--r-sm);flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,background .15s;display:flex}.k-collapse-btn:hover{color:#fffc;background:#ffffff0f}.k-nav{padding:var(--sp-2) 0;flex:1;overflow:hidden auto}.k-nav-item{align-items:center;gap:var(--sp-3);padding:.6rem var(--sp-3);margin:2px var(--sp-2);border-radius:var(--r-md);font-size:var(--f-sm);color:var(--c-sidebar-txt);white-space:nowrap;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex;position:relative}.k-nav-item:hover{color:var(--c-sidebar-txth);background:#ffffff12;text-decoration:none}.k-nav-item.active{color:#fff;background:#ffffff1a}.k-nav-item.active:before{content:"";left:calc(-1 * var(--sp-2));border-radius:0 var(--r-full) var(--r-full) 0;background:#60a5fa;width:3px;height:50%;position:absolute;top:25%}.k-nav-icon{flex-shrink:0;align-items:center;display:flex}.k-nav-label{text-overflow:ellipsis;overflow:hidden}.k-nav-divider{height:1px;margin:var(--sp-2) var(--sp-3);background:#ffffff0f}.k-sidebar-footer{padding:var(--sp-3) var(--sp-4);align-items:center;gap:var(--sp-3);border-top:1px solid #ffffff12;flex-shrink:0;display:flex}.k-avatar{border-radius:var(--r-full);width:32px;height:32px;font-size:var(--f-sm);color:#fff;letter-spacing:0;background:#2563eb;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.k-user-info{flex:1;min-width:0;overflow:hidden}.k-user-name{font-size:var(--f-sm);color:#fff;white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.k-user-role{font-size:var(--f-xs);color:#ffffff73;text-transform:capitalize;margin-top:1px}.k-logout-btn{color:#fff6;border-radius:var(--r-sm);flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;padding:6px;transition:color .15s,background .15s;display:flex}.k-logout-btn:hover{color:#f87171;background:#ef44441f}.k-main{flex:1;min-width:0;overflow:auto}.k-mob-header{align-items:center;gap:var(--sp-3);padding:0 var(--sp-4);height:var(--header-h);background:var(--c-sidebar-bg);color:#fff;z-index:30;flex-shrink:0;display:none;position:sticky;top:0}.k-mob-header .k-brand{font-size:var(--f-lg)}.k-mob-menu-btn{color:#ffffffb3;border-radius:var(--r-sm);align-items:center;padding:4px;display:flex}.k-mob-menu-btn:hover{color:#fff}.k-mob-spacer{flex:1}.k-sidebar-overlay{z-index:39;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000080;display:none;position:fixed;inset:0}.k-bottom-nav{height:var(--bottom-nav-h);background:var(--c-white);border-top:1px solid var(--c-border);z-index:30;padding-bottom:env(safe-area-inset-bottom,0);display:none;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 12px #00000014}.k-bottom-nav-inner{align-items:stretch;height:100%;display:flex}.k-bottom-nav-item{color:var(--c-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:4px 0;font-size:10px;font-weight:500;text-decoration:none;transition:color .15s;display:flex;position:relative}.k-bottom-nav-item.active{color:var(--c-primary)}.k-bottom-nav-item.active:before{content:"";background:var(--c-primary);border-radius:0 0 var(--r-full) var(--r-full);height:2px;position:absolute;top:0;left:20%;right:20%}.k-bottom-nav-item:hover{color:var(--c-primary);text-decoration:none}@media (width<=767px){.k-sidebar{z-index:40;box-shadow:var(--sh-xl);transition:transform .25s;position:fixed;inset:0 auto 0 0;transform:translate(-100%);width:var(--sidebar-w)!important}.k-sidebar.mob-open{transform:translate(0)}.k-sidebar-overlay.visible{display:block}.k-mob-header{display:flex}.k-bottom-nav{display:block}.k-main{padding-bottom:calc(var(--bottom-nav-h) + env(safe-area-inset-bottom,0))}.k-mob-main-wrap{min-height:calc(100dvh - var(--header-h));flex-direction:column;display:flex}}@media (width>=768px){.k-mob-header,.k-bottom-nav{display:none!important}}.k-page{padding:var(--sp-6) var(--sp-8);width:100%;max-width:1280px;margin:0 auto}@media (width<=1023px){.k-page{padding:var(--sp-5) var(--sp-6)}}@media (width<=767px){.k-page{padding:var(--sp-4)}}.k-page-header{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);margin-bottom:var(--sp-6);flex-wrap:wrap;display:flex}.k-page-title{font-size:var(--f-2xl);color:var(--c-ink);margin:0;font-weight:700}.k-page-subtitle{font-size:var(--f-sm);color:var(--c-muted);margin-top:var(--sp-1)}@media (width<=767px){.k-page-title{font-size:var(--f-xl)}}.k-split-layout{grid-template-columns:minmax(240px,320px) minmax(0,1fr);align-items:start;gap:1.5rem;width:100%;display:grid}@media (width<=900px){.k-split-layout{grid-template-columns:1fr}}.k-card{background:var(--c-white);border-radius:var(--r-xl);border:1px solid var(--c-border);box-shadow:var(--sh-xs);overflow:hidden}.k-card-pad{padding:var(--sp-5)}@media (width<=767px){.k-card-pad{padding:var(--sp-4)}}.k-table-wrap{background:var(--c-white);border-radius:var(--r-xl);border:1px solid var(--c-border);box-shadow:var(--sh-xs);-webkit-overflow-scrolling:touch;max-width:100%;overflow:auto visible}.k-table{border-collapse:collapse;width:100%;min-width:720px}.k-th{background:var(--c-surface);text-align:left;font-size:var(--f-xs);color:var(--c-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--c-border);white-space:nowrap;padding:.75rem 1rem;font-weight:600}.k-tr{border-bottom:1px solid #f1f5f9;transition:background .1s}.k-tr:hover{background:var(--c-surface)}.k-tr:last-child{border-bottom:none}.k-td{font-size:var(--f-base);color:var(--c-ink-2);vertical-align:middle;padding:.875rem 1rem}.k-td-center{text-align:center;color:var(--c-muted);font-size:var(--f-sm);padding:3rem}.k-badge{border-radius:var(--r-full);font-size:var(--f-xs);white-space:nowrap;align-items:center;gap:4px;padding:.2rem .55rem;font-weight:600;line-height:1.4;display:inline-flex}.k-btn{align-items:center;gap:var(--sp-2);border-radius:var(--r-md);font-size:var(--f-base);cursor:pointer;white-space:nowrap;border:none;padding:.5625rem 1.125rem;font-weight:600;line-height:1;transition:background .15s,box-shadow .15s,opacity .15s;display:inline-flex}.k-btn:disabled{opacity:.55;cursor:not-allowed}.k-btn-primary{background:var(--c-primary);color:#fff;box-shadow:var(--sh-sm)}.k-btn-primary:hover:not(:disabled){background:var(--c-primary-h);box-shadow:var(--sh-md)}.k-btn-outline{background:var(--c-white);color:var(--c-ink-2);border:1px solid var(--c-border);box-shadow:var(--sh-xs)}.k-btn-outline:hover:not(:disabled){background:var(--c-surface);border-color:var(--c-border-2)}.k-btn-danger{background:var(--c-danger-l);color:var(--c-danger);border:1px solid #fecaca}.k-btn-danger:hover:not(:disabled){background:#fee2e2}.k-btn-ghost{color:var(--c-primary);background:0 0}.k-btn-ghost:hover:not(:disabled){background:var(--c-primary-l)}.k-btn-sm{font-size:var(--f-sm);border-radius:var(--r-sm);padding:.375rem .75rem}.k-input,.k-select,.k-textarea{border:1px solid var(--c-border);border-radius:var(--r-md);width:100%;font-size:var(--f-base);color:var(--c-ink);background:var(--c-white);box-sizing:border-box;appearance:none;outline:none;padding:.625rem .875rem;transition:border-color .15s,box-shadow .15s}.k-input:focus,.k-select:focus,.k-textarea:focus{border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary-l)}.k-input::placeholder,.k-textarea::placeholder{color:var(--c-muted);opacity:.7}.k-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right .75rem center;background-repeat:no-repeat;padding-right:2rem}.k-label{font-size:var(--f-sm);color:var(--c-ink-2);margin-bottom:.375rem;font-weight:600;display:block}.k-field-error{font-size:var(--f-xs);color:var(--c-danger);margin:.25rem 0 0}.k-toolbar{gap:var(--sp-3);margin-bottom:var(--sp-4);flex-wrap:wrap;align-items:center;display:flex}.k-overlay{z-index:100;padding:var(--sp-4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.k-modal{background:var(--c-white);border-radius:var(--r-2xl);width:100%;max-width:480px;max-height:90dvh;padding:var(--sp-6);box-shadow:var(--sh-xl);overflow-y:auto}.k-modal-header{margin-bottom:var(--sp-5);justify-content:space-between;align-items:center;display:flex}.k-modal-title{font-size:var(--f-lg);color:var(--c-ink);font-weight:700}.k-close-btn{border-radius:var(--r-md);width:32px;height:32px;color:var(--c-muted);font-size:var(--f-md);justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.k-close-btn:hover{background:var(--c-surface);color:var(--c-ink)}.k-modal-actions{justify-content:flex-end;gap:var(--sp-3);margin-top:var(--sp-6);flex-wrap:wrap;display:flex}.k-field{margin-bottom:var(--sp-4)}@media (width<=767px){.k-overlay{align-items:flex-end;padding:0}.k-modal{border-radius:var(--r-2xl) var(--r-2xl) 0 0;max-width:100%;max-height:92dvh;padding:var(--sp-5) var(--sp-4) calc(var(--sp-5) + env(safe-area-inset-bottom,0))}}.k-pagination{justify-content:center;align-items:center;gap:var(--sp-4);margin-top:var(--sp-5);padding-bottom:var(--sp-2);display:flex}.k-page-info{font-size:var(--f-sm);color:var(--c-muted)}.k-sub{font-size:var(--f-xs);color:var(--c-muted);margin-top:2px}.k-muted{color:var(--c-muted);font-size:var(--f-sm)}.k-strong{color:var(--c-ink);font-weight:700}.k-actions{gap:var(--sp-3);align-items:center;display:flex}.k-link-btn{cursor:pointer;color:var(--c-primary);font-size:var(--f-sm);background:0 0;border:none;padding:0;font-weight:500;transition:color .15s}.k-link-btn:hover{color:var(--c-primary-h)}.k-link-btn.danger{color:var(--c-danger)}.k-link-btn.danger:hover{color:#b91c1c}.k-section-toggle{align-items:center;gap:var(--sp-2);color:var(--c-muted);font-size:var(--f-sm);padding:var(--sp-2) 0;font-weight:600;transition:color .15s;display:flex}.k-section-toggle:hover{color:var(--c-ink-2)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.k-skeleton{background:linear-gradient(90deg, var(--c-border) 25%, var(--c-surface) 50%, var(--c-border) 75%);border-radius:var(--r-sm);background-size:200% 100%;animation:1.4s infinite shimmer}.k-stats-grid{gap:var(--sp-4);margin-bottom:var(--sp-6);grid-template-columns:repeat(4,1fr);display:grid}@media (width<=1023px){.k-stats-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=479px){.k-stats-grid{gap:var(--sp-3);grid-template-columns:repeat(2,1fr)}}.k-score-ring{border:4px solid;border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;display:flex}@keyframes spin{to{transform:rotate(360deg)}}.k-login-spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}@media (width<=767px){.k-login-panel{display:none!important}.k-login-mobile-logo{display:flex!important}}@media (width>=768px){.k-login-mobile-logo{display:none!important}}.k-row{gap:var(--sp-5);grid-template-columns:1fr 1fr;display:grid}@media (width<=767px){.k-row{grid-template-columns:1fr}}.k-quick-links{gap:var(--sp-2);flex-direction:column;display:flex}.k-quick-link{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--c-surface);border-radius:var(--r-md);border:1px solid var(--c-border);color:var(--c-ink-2);font-size:var(--f-sm);font-weight:500;text-decoration:none;transition:background .15s,border-color .15s;display:flex}.k-quick-link:hover{background:var(--c-primary-l);border-color:var(--c-primary-m);color:var(--c-primary);text-decoration:none}.k-task-cards{gap:var(--sp-3);flex-direction:column;display:flex}.k-task-card{background:var(--c-white);border-radius:var(--r-xl);border:1px solid var(--c-border);padding:var(--sp-4) var(--sp-5);box-shadow:var(--sh-xs);transition:box-shadow .15s,border-color .15s}.k-task-card:hover{box-shadow:var(--sh-md);border-color:var(--c-border-2)}.k-empty{justify-content:center;align-items:center;gap:var(--sp-3);padding:3rem var(--sp-4);color:var(--c-muted);font-size:var(--f-sm);text-align:center;flex-direction:column;display:flex}.k-alert{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);font-size:var(--f-sm);display:flex}.k-alert-error{background:var(--c-danger-l);color:var(--c-danger);border:1px solid #fecaca}.k-alert-warning{background:var(--c-warning-l);color:var(--c-warning);border:1px solid #fde68a}.k-mobile-only{display:block}@media (width>=768px){.k-mobile-only{display:none!important}.k-config-panel{display:flex!important}}.k-password-toggle{color:#94a3b8;transition:color .15s ease-in-out}.k-password-toggle:hover{color:#475569}.k-offline-chip{z-index:240;letter-spacing:.01em;pointer-events:none;-webkit-backdrop-filter:blur(8px);border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;max-width:min(260px,100vw - 24px);padding:5px 10px;font-size:11px;font-weight:600;line-height:1.2;display:inline-flex;position:fixed;bottom:12px;right:12px;box-shadow:0 4px 14px #0f172a29}.k-offline-chip-dot{opacity:.9;background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.k-offline-chip-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.k-offline-chip--pulse .k-offline-chip-dot{animation:1.2s ease-in-out infinite k-offline-pulse}@keyframes k-offline-pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}@media (width<=767px){.k-offline-chip{bottom:calc(12px + var(--bottom-nav-h) + env(safe-area-inset-bottom,0px))}}@media (width<=1023px){.k-assets-page{padding-left:1rem!important;padding-right:1rem!important;padding-bottom:calc(1rem + var(--bottom-nav-h) + env(safe-area-inset-bottom,0px))!important}.k-assets-toolbar{flex-direction:column!important;align-items:stretch!important}.k-assets-search,.k-assets-filter{width:100%!important;max-width:100%!important}}
