@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap";:root{--navy: #1e2a3a;--navy-2: #27374b;--navy-grad: linear-gradient(180deg, #223043 0%, #1a2533 100%);--accent: #1a56db;--accent-2: #1648b8;--accent-soft: #e9f0fe;--accent-ico: #6e9bf2;--gold: #f1b912;--gold-soft: #fdf2cf;--grad-accent: linear-gradient(310deg, #1648b8 0%, #4f8af7 100%);--grad-navy: linear-gradient(310deg, #16202e 0%, #34465f 100%);--grad-gold: linear-gradient(310deg, #e0a90c 0%, #f7cf52 100%);--grad-green: linear-gradient(310deg, #266841 0%, #4caf78 100%);--grad-red: linear-gradient(310deg, #a5311f 0%, #e0604e 100%);--grad-violet: linear-gradient(310deg, #46409e 0%, #837cdd 100%);--bg: #f3f5f9;--card: #ffffff;--text: #1e2a3a;--muted: #67738a;--border: #e8ebf1;--border-strong: #d8dde6;--green: #2f7d4f;--green-soft: #e4f3ea;--amber: #b7791f;--amber-soft: #fbf2dd;--red: #c0392b;--red-soft: #fbe9e7;--violet: #5b54c7;--violet-soft: #eae9fb;--radius: 16px;--radius-sm: 10px;--pill: 999px;--shadow: 0 8px 26px -4px rgba(30, 42, 58, .08), 0 8px 9px -5px rgba(30, 42, 58, .03);--shadow-soft: 0 20px 27px 0 rgba(30, 42, 58, .12);--shadow-inset: inset 0 1px 2px rgba(30, 42, 58, .08);--ring: 0 0 0 3px rgba(26, 86, 219, .14)}*{box-sizing:border-box}html,body{margin:0}body{font-family:Plus Jakarta Sans,Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);background-image:radial-gradient(1100px 380px at 78% -120px,rgba(26,86,219,.06),transparent 70%),radial-gradient(800px 320px at 8% -100px,rgba(241,185,18,.05),transparent 70%);background-repeat:no-repeat;color:var(--text);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}h1,h2,h3,h4{letter-spacing:-.015em;margin:0}.stat .num,.cc-stat,table td,table th{font-variant-numeric:tabular-nums}.app{display:flex;min-height:100vh}.sidebar{width:250px;background:var(--grad-navy);color:#aeb8c6;display:flex;flex-direction:column;position:fixed;top:16px;left:16px;bottom:16px;border-radius:20px;box-shadow:var(--shadow-soft);overflow:hidden}.sidebar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:20px;pointer-events:none;box-shadow:inset 0 1px #ffffff0f}.brand{padding:22px 20px 18px;border-bottom:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;align-items:center;text-align:center}.logo-mark{width:44px;height:44px;border-radius:14px;background:var(--grad-gold);color:#2e2406;font-family:Georgia,Times New Roman,serif;font-size:24px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;margin-bottom:11px;box-shadow:0 8px 18px -6px #f1b9128c,inset 0 1px #ffffff59}.logo{display:inline-flex;flex-direction:column;align-items:center}.logo-name{font-family:Georgia,Times New Roman,serif;font-size:16px;letter-spacing:2px;color:#fff;font-weight:600}.logo-rule{height:1px;width:100%;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:4px 0}.logo-sub{font-family:Georgia,Times New Roman,serif;font-size:8.5px;letter-spacing:3px;color:#c5cedd}.brand .sub{display:inline-flex;align-items:center;gap:8px;margin-top:11px;font-size:9px;color:#93a1b5;letter-spacing:1.8px;font-weight:600}.brand .sub:before,.brand .sub:after{content:"";width:16px;height:1px;background:#ffffff2e}.nav{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column}.nav-section{display:flex;flex-direction:column;gap:3px;padding-bottom:10px}.nav-section+.nav-section{border-top:1px solid rgba(255,255,255,.07);padding-top:12px;margin-top:2px}.nav-label{font-size:9.5px;letter-spacing:1.6px;text-transform:uppercase;color:#76839a;padding:3px 12px 6px;font-weight:700}.nav a{display:flex;align-items:center;gap:10px;padding:6px 8px 6px 6px;font-size:13.5px;color:#aeb8c6;border-radius:12px;font-weight:500;transition:background .15s,color .15s,box-shadow .15s}.nav a:hover{background:#ffffff0f;color:#fff}.nav a.active{background:#ffffff1f;color:#fff;font-weight:600;box-shadow:inset 0 1px #ffffff14}.nav .ico{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:#ffffff12;box-shadow:inset 0 1px #ffffff14;color:#fff;flex-shrink:0;transition:transform .15s,box-shadow .15s}.nav .ico.t-blue{background:var(--grad-accent)}.nav .ico.t-gold{background:var(--grad-gold);color:#3a2f06}.nav .ico.t-green{background:var(--grad-green)}.nav .ico.t-red{background:var(--grad-red)}.nav .ico.t-violet{background:var(--grad-violet)}.nav .ico.t-steel{background:#ffffff1a;color:#c7d0dd}.nav a:hover .ico{transform:translateY(-1px) scale(1.04);box-shadow:0 5px 12px -4px #00000073}.nav a.active .ico{transform:scale(1.05);box-shadow:0 5px 14px -4px #00000080,0 0 0 2px var(--gold)}.nav{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.16) transparent}.nav::-webkit-scrollbar{width:6px}.nav::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:3px}.nav::-webkit-scrollbar-thumb:hover{background:#ffffff42}.nav::-webkit-scrollbar-track{background:transparent}.nav-foot{padding:12px;border-top:1px solid rgba(255,255,255,.08)}.nav-foot button{width:100%;display:flex;align-items:center;gap:10px;padding:6px 8px 6px 6px;font-size:13.5px;color:#aeb8c6;background:none;border:none;border-radius:12px;cursor:pointer;font-family:inherit;font-weight:500;transition:background .15s,color .15s}.nav-foot button:hover{background:#ffffff14;color:#fff}.nav-foot .ico{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:#ffffff12;color:#c7d0dd;flex-shrink:0}.main{margin-left:282px;flex:1;display:flex;flex-direction:column;min-width:0;overflow-x:hidden}.topbar{background:#f3f5f9bf;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(30,42,58,.05);padding:12px 28px;display:flex;align-items:center;gap:16px;position:sticky;top:0;z-index:20;min-height:62px}.topbar-search{position:relative;flex:1;max-width:400px}.topbar-search>svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.topbar-search input{width:100%;padding:10px 16px 10px 40px;border-radius:12px;background:#fff;border:1px solid transparent;box-shadow:var(--shadow)}.topbar-search input:focus{border-color:var(--accent)}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}.topbar-buk{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;letter-spacing:.3px;color:var(--muted);text-decoration:none;padding:7px 12px;border-radius:10px;border:1px solid rgba(30,42,58,.1);background:#ffffff80;transition:color .14s,border-color .14s,background .14s,box-shadow .14s;white-space:nowrap}.topbar-buk:hover{color:var(--navy);border-color:#1e2a3a2e;background:#fff;box-shadow:var(--shadow)}.icon-btn{position:relative;width:40px;height:40px;border-radius:12px;border:none;background:#fff;color:var(--navy);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow);transition:transform .14s,box-shadow .14s}.icon-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-soft)}.icon-btn .dot{position:absolute;top:9px;right:10px;width:7px;height:7px;border-radius:50%;background:var(--red);border:1.5px solid #fff}.topbar-sep{width:1px;height:26px;background:#1e2a3a1f}.topbar .who{text-align:right;line-height:1.25}.topbar .who b{font-size:13px;font-weight:700;display:block}.topbar .who small{display:block;color:var(--muted);font-size:10.5px}.avatar{width:40px;height:40px;border-radius:12px;background:linear-gradient(310deg,#dce8fd,#f0f6ff);color:var(--accent-ico);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:var(--shadow),inset 0 0 0 1.5px #6e9bf259}.content{padding:20px 28px 30px;max-width:1380px;width:100%;margin:0 auto;min-width:0}.content>*{animation:fadeIn .3s ease backwards}.content>*:nth-child(2){animation-delay:.05s}.content>*:nth-child(3){animation-delay:.09s}.content>*:nth-child(n+4){animation-delay:.12s}@keyframes fadeIn{0%{opacity:0}}@media (prefers-reduced-motion: reduce){.content>*{animation:none}}form.card,.card:has(>form){max-width:880px;margin-left:auto;margin-right:auto}form.card{padding:26px 30px 24px}.page-title{font-size:21px;font-weight:800;margin-bottom:1px;letter-spacing:-.02em}.page-sub{color:var(--muted);margin:0 0 12px;font-size:13px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:12px;margin-bottom:18px}.stat{background:var(--card);border:none;border-radius:var(--radius);padding:13px 15px;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:space-between;gap:10px;transition:transform .16s,box-shadow .16s}.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-soft)}.stat-info{min-width:0}.stat .lbl{color:var(--muted);font-size:10px;letter-spacing:.4px;text-transform:uppercase;font-weight:700;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat .num{font-size:21px;font-weight:800;letter-spacing:-.02em;color:var(--navy);display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}.stat-ico{width:38px;height:38px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;box-shadow:0 5px 12px -4px #1e2a3a59}.stat-ico svg{width:17px;height:17px}.stat-ico.i-blue{background:var(--grad-accent)}.stat-ico.i-gold{background:var(--grad-gold);color:#3a2f06}.stat-ico.i-green{background:var(--grad-green)}.stat-ico.i-red{background:var(--grad-red)}.stat-ico.i-violet{background:var(--grad-violet)}.stat-ico.i-navy{background:var(--grad-navy);color:var(--gold)}.trend{font-size:11px;font-weight:700;padding:2.5px 8px;border-radius:var(--pill)}.trend.up{background:var(--green-soft);color:var(--green)}.trend.down{background:var(--red-soft);color:var(--red)}.trend.flat{background:#eef1f6;color:var(--muted)}.card{background:var(--card);border:none;border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}.card h3{font-size:15px;margin-bottom:13px;font-weight:700}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:#8392ab;font-size:10px;text-transform:uppercase;padding:9px 12px;border-bottom:1px solid var(--border);letter-spacing:.8px;font-weight:700;opacity:.9;white-space:nowrap}td{padding:11px 12px;border-bottom:1px solid #eef1f6}tr:last-child td{border-bottom:none}tbody tr{transition:background .12s}tbody tr:hover td{background:#f6f8fc}.r-user{display:flex;align-items:center;gap:10px;font-weight:600}.r-avatar{width:32px;height:32px;border-radius:10px;background:linear-gradient(310deg,#dce8fd,#f0f6ff);color:var(--accent-ico);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:inset 0 0 0 1.5px #6e9bf24d}.amt-pos{color:var(--green);font-weight:700}.amt-neg{color:var(--navy);font-weight:700}.table-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:14px;margin-top:4px;border-top:1px solid var(--border);flex-wrap:wrap}.table-foot .info{color:var(--muted);font-size:12.5px}.pager{display:flex;align-items:center;gap:6px}.pager button{min-width:33px;height:33px;padding:0 8px;border-radius:10px;border:none;background:#fff;color:var(--navy);font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow);transition:transform .12s,box-shadow .12s}.pager button:hover{transform:translateY(-1px)}.pager button.cur{background:var(--grad-accent);color:#fff;box-shadow:0 6px 14px -4px #1a56db80}.pager button:disabled{opacity:.4;cursor:default;transform:none;box-shadow:none;background:transparent}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:8px;font-size:11px;font-weight:700;letter-spacing:.1px;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.75}.b-pending{background:var(--amber-soft);color:#876214}.b-approved{background:var(--green-soft);color:#20603f}.b-sent_payroll{background:var(--accent-soft);color:#1648b8}.b-paid{background:var(--violet-soft);color:#383393}.b-rejected{background:var(--red-soft);color:#97291d}.b-active{background:var(--green-soft);color:#20603f}.b-inactive{background:#eef0f4;color:#67738a}.b-in_progress{background:var(--accent-soft);color:#1648b8}.b-done,.b-completed{background:var(--green-soft);color:#20603f}.b-planned{background:var(--violet-soft);color:#383393}.btn{background:var(--grad-accent);color:#fff;border:none;padding:10px 18px;border-radius:12px;cursor:pointer;font-size:13px;font-weight:700;font-family:inherit;display:inline-flex;align-items:center;gap:7px;justify-content:center;box-shadow:0 6px 14px -4px #1a56db73;transition:transform .14s,box-shadow .14s,filter .14s}.btn:hover{transform:translateY(-1px);box-shadow:0 9px 18px -4px #1a56db8c;filter:brightness(1.04)}.btn:active{transform:none}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn.gold{background:var(--grad-gold);color:#3a2f06;box-shadow:0 6px 14px -4px #f1b91280}.btn.gold:hover{box-shadow:0 9px 18px -4px #f1b91299}.btn.outline{background:#fff;color:var(--text);border:none;box-shadow:var(--shadow)}.btn.outline:hover{box-shadow:var(--shadow-soft);filter:none}.btn.sm{padding:6px 13px;font-size:12px;border-radius:10px}.btn.green{background:var(--grad-green);box-shadow:0 6px 14px -4px #2f7d4f73}.btn.green:hover{box-shadow:0 9px 18px -4px #2f7d4f8c}.btn.red{background:var(--grad-red);box-shadow:0 6px 14px -4px #c0392b73}.btn.red:hover{box-shadow:0 9px 18px -4px #c0392b8c}.row{display:flex;gap:14px;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:17px;flex:1;min-width:200px}.field label{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.5px}input,select,textarea{padding:11px 15px;border:1px solid var(--border-strong);border-radius:12px;font-size:13.5px;font-family:inherit;background:#fff;color:var(--text);box-shadow:0 1px 2px #1e2a3a0a;transition:border-color .14s,box-shadow .14s,background .14s}input:hover,select:hover,textarea:hover{border-color:#c3cad6}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--ring)}textarea{resize:vertical;min-height:86px;line-height:1.55}select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:38px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2367738a' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;cursor:pointer}input[type=file]{padding:8px 10px;cursor:pointer;color:var(--muted)}input[type=file]::file-selector-button{font-family:inherit;font-size:12.5px;font-weight:700;color:#fff;background:var(--grad-accent);border:none;border-radius:var(--pill);padding:8px 16px;margin-right:12px;cursor:pointer;box-shadow:0 4px 10px -3px #1a56db66;transition:filter .14s}input[type=file]::file-selector-button:hover{filter:brightness(1.06)}input[type=checkbox],input[type=radio]{accent-color:var(--accent);width:16px;height:16px;box-shadow:none;cursor:pointer}input[type=date],input[type=time]{min-height:42px}.toolbar{display:flex;gap:12px;justify-content:space-between;align-items:flex-start;margin-bottom:16px;flex-wrap:wrap}.search-box{position:relative}.search-box>svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}.search-box input{padding-left:40px;width:100%;border-radius:12px}.login-split{display:grid;grid-template-columns:minmax(380px,470px) 1fr;min-height:100vh;background:var(--navy)}.ls-panel{display:flex;flex-direction:column;padding:34px 44px 26px;background:linear-gradient(165deg,#f4f6f9f7,#e8ecf2f5);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);position:relative;z-index:2;animation:ls-in .5s ease both}@keyframes ls-in{0%{transform:translate(-14px);opacity:0}to{transform:none;opacity:1}}.ls-brand{display:flex;flex-direction:column;align-items:center;align-self:center;width:fit-content;margin-bottom:8px}.ls-brand .lsb-name{font-family:Georgia,Times New Roman,serif;font-size:17px;letter-spacing:2.5px;color:var(--navy);font-weight:600}.ls-brand .lsb-rule{height:1px;width:100%;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:4px 0}.ls-brand .lsb-sub{font-family:Georgia,serif;font-size:8.5px;letter-spacing:3.5px;color:var(--muted)}.ls-body{margin:auto 0;padding:34px 0}.ls-tagline{font-size:25px;line-height:1.3;font-weight:600;color:var(--navy);letter-spacing:-.02em;margin:0 0 26px}.ls-title{font-size:38px;font-weight:800;letter-spacing:-.03em;color:var(--navy);margin-bottom:22px}.ls-label{display:block;font-size:12.5px;font-weight:600;color:var(--navy-2);margin:0 0 7px 2px}.ls-input{width:100%;padding:13px 17px;border:1px solid rgba(30,42,58,.08);border-radius:14px;background:#fff;font-size:14px;box-shadow:0 1px 2px #1e2a3a0d,0 4px 14px #1e2a3a0d;margin-bottom:16px}.ls-input:focus{border-color:var(--accent);box-shadow:var(--ring)}.ls-pw{position:relative}.ls-pw .ls-input{padding-right:48px}.ls-eye{position:absolute;right:8px;top:7px;width:34px;height:34px;border:none;background:none;color:var(--muted);cursor:pointer;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;transition:background .14s,color .14s}.ls-eye:hover{background:#eef1f6;color:var(--navy)}.ls-forgot{text-align:right;margin:-6px 2px 20px 0}.ls-forgot a{font-size:12.5px;font-weight:600;color:var(--muted);transition:color .14s}.ls-forgot a:hover{color:var(--accent)}.ls-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.ls-btn-dark{background:var(--navy);color:#fff;border:none;padding:13px 30px;border-radius:var(--pill);font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;box-shadow:0 6px 18px #1e2a3a47;transition:background .15s,transform .12s,box-shadow .15s}.ls-btn-dark:hover{background:var(--navy-2);transform:translateY(-1px);box-shadow:0 9px 24px #1e2a3a52}.ls-btn-dark:active{transform:none}.ls-btn-dark:disabled{opacity:.55;cursor:not-allowed;transform:none}.ls-btn-light{background:#fff;color:var(--navy);padding:13px 24px;border-radius:var(--pill);font-size:14px;font-weight:600;box-shadow:0 1px 2px #1e2a3a14,0 4px 14px #1e2a3a12;border:1px solid rgba(30,42,58,.06);transition:box-shadow .15s,transform .12s}.ls-btn-light:hover{transform:translateY(-1px);box-shadow:0 8px 20px #1e2a3a1f}.ls-hint{margin-top:22px;font-size:12px;color:var(--muted)}.ls-foot{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted)}.ls-foot .ls-dot{opacity:.5}.ls-visual{position:relative;overflow:hidden;background:#0a1430}.ls-top{display:flex;align-items:center;justify-content:center;min-height:13vh;padding-top:6px}.ls-mid{flex:1;display:flex;flex-direction:column;justify-content:center;padding:12px 0 12vh}.ls-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain}.ls-bottom{display:flex;flex-direction:column;gap:14px}.ls-hero-img{width:100%;height:auto;display:block;border-radius:14px;box-shadow:0 16px 40px -16px #0c173380}.ls-slide{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;opacity:0;transform:scale(1.06);transition:opacity 1.4s ease,transform 7s linear}.ls-slide.on{opacity:1;transform:scale(1)}.ls-veil{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#1e2a3a6b,#1e2a3a1a,#1e2a3a0d 60%,#1e2a3a4d),linear-gradient(0deg,rgba(30,42,58,.45) 0%,transparent 32%)}.ls-caption{position:absolute;left:36px;bottom:30px;z-index:2;color:#fff}.ls-cap-k{font-size:15px;font-weight:700;letter-spacing:.3px;text-shadow:0 2px 10px rgba(0,0,0,.35)}.ls-cap-dots{display:flex;gap:7px;margin-top:12px}.ls-cap-dots button{width:26px;height:4px;border-radius:var(--pill);border:none;background:#ffffff59;cursor:pointer;padding:0;transition:background .2s,width .2s}.ls-cap-dots button.on{background:var(--gold);width:40px}@media (max-width: 860px){.login-split{grid-template-columns:1fr;align-items:center;padding:20px 0}.ls-visual{position:fixed;top:0;right:0;bottom:0;left:0}.ls-panel{margin:auto;width:min(440px,calc(100% - 32px));min-height:0;max-height:calc(100vh - 40px);overflow-y:auto;border-radius:24px;box-shadow:var(--shadow-soft);background:#f4f6f9eb}}.err{color:var(--red);font-size:13px;margin-bottom:12px;background:var(--red-soft);border:1px solid #f3cdc8;padding:9px 12px;border-radius:var(--radius-sm)}.muted{color:var(--muted);font-size:12px}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;align-items:stretch}.course-card{background:var(--card);border:none;border-radius:var(--radius);padding:22px;display:flex;flex-direction:column;box-shadow:var(--shadow);transition:box-shadow .16s,transform .16s}.course-card:hover{box-shadow:var(--shadow-soft);transform:translateY(-3px)}.cc-head{display:flex;gap:13px;align-items:flex-start;margin-bottom:12px}.cc-icon{width:46px;height:46px;border-radius:13px;background:var(--grad-navy);color:var(--gold);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 6px 14px -4px #1e2a3a66}.cc-title{font-weight:700;font-size:15.5px;line-height:1.3;color:var(--navy)}.cc-code{color:var(--muted);font-size:11.5px;margin-top:3px;font-weight:500;letter-spacing:.3px}.cc-desc{font-size:13px;color:#515c6e;margin:4px 0 13px;line-height:1.5}.cc-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:11px}.tag{font-size:10.5px;padding:4px 11px;border-radius:8px;background:#eef1f6;color:#515c6e;font-weight:700}.tag-blue{background:var(--accent-soft);color:#1648b8}.tag-gold{background:#f6efdd;color:#876214}.cc-dur{font-size:12px;color:var(--muted);margin-bottom:14px}.cc-foot{margin-top:auto;padding-top:13px;border-top:1px solid var(--border);display:flex;align-items:center;gap:12px;flex-wrap:wrap}.cc-stat{font-size:12px;color:var(--muted)}.cc-actions{margin-left:auto;display:flex;gap:5px}.cc-actions button{position:relative;background:#fff;border:none;cursor:pointer;font-size:11.5px;color:var(--navy);min-width:33px;height:33px;padding:0 7px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow);transition:background .14s,color .14s,transform .14s}.cc-actions button:hover{background:var(--grad-accent);color:#fff;transform:translateY(-1px)}.cc-actions button.del{color:var(--red)}.cc-actions button.del:hover{background:var(--grad-red);color:#fff}.cc-actions button[title]:hover:after{content:attr(title);position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%);background:var(--navy);color:#fff;font-size:11px;font-weight:500;padding:5px 9px;border-radius:7px;white-space:nowrap;z-index:5;box-shadow:var(--shadow-soft)}.cc-actions button[title]:hover:before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--navy)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e2a3a42;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);display:flex;justify-content:center;z-index:50;padding:28px 16px;overflow-y:auto;overflow-x:hidden;animation:fade .12s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.modal{background:#fff;border-radius:20px;padding:30px 34px 26px;width:460px;max-width:100%;height:fit-content;box-shadow:var(--shadow-soft);animation:pop .16s ease;margin:auto}@keyframes pop{0%{transform:translateY(10px) scale(.99);opacity:.7}to{transform:none;opacity:1}}.modal.wide{width:660px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.modal-head h3{font-size:17px;font-weight:800}.modal .x{background:none;border:none;font-size:17px;cursor:pointer;color:var(--muted);border-radius:9px;width:30px;height:30px}.modal .x:hover{background:#f1f3f7}.content-list{list-style:none;padding:0;margin:0}.content-list li{padding:11px 0;border-bottom:1px solid var(--border);font-size:13.5px}.d-row{display:flex;gap:16px;align-items:baseline;padding:10px 4px;border-bottom:1px dashed var(--border);font-size:13.5px}.d-row:hover{background:#fafbfd}.d-k{min-width:165px;color:var(--muted);font-size:12px;font-weight:600}.d-v{flex:1;min-width:0;font-weight:600;color:var(--text);overflow-wrap:anywhere}.d-sec{margin:22px 0 8px;font-size:13px;font-weight:800;color:var(--navy);display:flex;align-items:center;gap:9px;letter-spacing:.2px}.d-sec:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--border-strong),transparent)}.d-hist{list-style:none;margin:8px 0 0;padding:0}.d-hist li{position:relative;padding:0 0 16px 28px}.d-hist li:before{content:"";position:absolute;left:7px;top:17px;bottom:-1px;width:2px;background:var(--border);border-radius:2px}.d-hist li:last-child{padding-bottom:4px}.d-hist li:last-child:before{display:none}.d-hist-dot{position:absolute;left:0;top:2px;width:16px;height:16px;border-radius:50%;background:var(--accent-soft);border:2px solid var(--accent);box-sizing:border-box}.d-hist li:first-child .d-hist-dot{background:var(--green-soft);border-color:var(--green)}.d-hist b{display:block;font-size:13px;color:var(--navy)}.d-hist-meta{color:var(--muted);font-size:12px;line-height:1.45}@media (max-width: 560px){.d-row{flex-direction:column;gap:2px}.d-k{min-width:0}}.module-row{display:flex;align-items:center;gap:14px}.mod-order{display:flex;flex-direction:column;align-items:center;color:var(--muted);font-size:12px;gap:2px}.mod-order button{background:none;border:none;cursor:pointer;color:var(--muted);font-size:10px;padding:0}.mod-order button:disabled{opacity:.25;cursor:default}.mod-icon{width:44px;height:44px;border-radius:12px;background:var(--grad-navy);color:var(--gold);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;box-shadow:0 6px 14px -4px #1e2a3a66}.mod-file{display:flex;align-items:center;gap:9px;margin-top:7px;flex-wrap:wrap}.filelink{color:var(--accent);font-size:13px;font-weight:600}.opt{padding:11px 14px;border:1px solid var(--border);border-radius:12px;margin-bottom:8px;font-size:13.5px;transition:border-color .12s,background .12s,box-shadow .12s}.opt-pick:hover{border-color:var(--border-strong);background:#f8fafc;box-shadow:var(--shadow)}.opt-sel{border-color:var(--accent);background:var(--accent-soft)}.opt-ok{border-color:var(--green);background:#eef7f1}.ok-check{color:var(--green);font-size:12px;font-weight:600;margin-left:6px}.info-banner{background:var(--accent-soft);border:none;color:#1648b8;border-radius:12px;padding:11px 15px;font-size:13px;margin-bottom:14px;box-shadow:var(--shadow)}.cert-frame{border:3px solid var(--gold);border-radius:14px;padding:16px;background:#fffdf6;box-shadow:var(--shadow)}.cert-caption{margin-top:12px;font-size:14px;line-height:1.5}.tabs{display:inline-flex;gap:4px;background:#e9edf3;padding:4px;border-radius:12px;box-shadow:var(--shadow-inset)}.tabs .tab{border:none;background:transparent;padding:8px 18px;border-radius:9px;font-weight:600;font-size:13px;color:var(--muted);cursor:pointer;font-family:inherit;transition:background .15s,color .15s,box-shadow .15s}.tabs .tab:hover{color:var(--navy)}.tabs .tab.active{background:#fff;color:var(--navy);box-shadow:var(--shadow);font-weight:700}.gps-box{border-radius:12px;padding:12px 14px;font-size:13.5px}.gps-info{background:var(--accent-soft);color:#1648b8}.gps-warn{background:var(--gold-soft);color:#876214}.gps-ok{background:#eef6f0;color:var(--navy);border:1px solid #cfe6d8}.gps-match-ok{color:var(--green);font-weight:600;margin-top:6px}.gps-match-bad{color:var(--red);font-weight:600;margin-top:6px}.gps-pill{font-size:11px;font-weight:700;padding:3px 9px;border-radius:8px;white-space:nowrap}.gps-pill-ok{background:#e7f3ec;color:var(--green)}.gps-pill-bad{background:var(--red-soft);color:var(--red)}.gps-pill-na{background:#eef1f6;color:var(--muted)}.dash-section{font-size:14px;font-weight:800;color:var(--navy);margin:6px 0 12px;letter-spacing:.2px;display:flex;align-items:center;gap:8px}.dash-section:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--border-strong),transparent)}.bar-track{background:#e9edf3;border-radius:var(--pill);height:8px;overflow:hidden;box-shadow:var(--shadow-inset)}.bar-fill{background:var(--grad-gold);height:100%;border-radius:var(--pill);transition:width .4s ease}.kb-board{display:flex;gap:14px;overflow-x:auto;padding:2px 2px 10px;align-items:flex-start}.kb-col{flex:0 0 280px;background:#eef1f6;border-radius:16px;padding:10px 10px 12px;max-height:calc(100vh - 300px);display:flex;flex-direction:column;transition:background .15s,outline-color .15s;outline:2px dashed transparent;outline-offset:-3px}.kb-col.drag-over{background:#e3eafc;outline-color:var(--accent)}.kb-col-head{display:flex;align-items:center;gap:8px;padding:4px 6px 12px;font-size:12.5px;font-weight:800;color:var(--navy);letter-spacing:.2px;text-transform:uppercase}.kb-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.kb-count{margin-left:auto;background:#fff;color:var(--muted);font-size:11px;font-weight:800;min-width:22px;text-align:center;padding:2px 8px;border-radius:999px;box-shadow:var(--shadow)}.kb-list{display:flex;flex-direction:column;gap:9px;overflow-y:auto;padding:2px;flex:1}.kb-card{position:relative;background:#fff;border-radius:12px;padding:11px 12px 11px 16px;box-shadow:var(--shadow);cursor:grab;transition:box-shadow .14s,transform .14s}.kb-card:hover{box-shadow:var(--shadow-soft);transform:translateY(-1px)}.kb-card:active{cursor:grabbing}.kb-bar{position:absolute;left:0;top:8px;bottom:8px;width:4px;border-radius:4px}.kb-card-title{font-size:13px;font-weight:700;color:var(--navy);line-height:1.32}.kb-meta{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-top:8px}.kb-chip{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:#eef1f6;color:#515c6e;white-space:nowrap}.kb-foot{display:flex;align-items:center;gap:6px;margin-top:10px}.kb-who{font-size:11px;color:var(--muted);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kb-empty{font-size:12px;color:#aab2c0;text-align:center;padding:18px 0}.row-actions{display:flex;flex-wrap:nowrap;gap:6px;align-items:center}.row-actions .btn,.nowrap,.r-user{white-space:nowrap}.cell-clip{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card:has(>table){overflow-x:auto}.row-actions .btn.sm{padding:5px 11px;font-size:11.5px}.sp-pop{position:absolute;top:calc(100% + 8px);left:0;right:0;background:#fff;border-radius:14px;box-shadow:var(--shadow-soft);padding:6px;z-index:40;max-height:340px;overflow-y:auto;animation:pop .14s ease}.sp-item{width:100%;display:flex;align-items:center;gap:10px;padding:9px 10px;border:none;background:none;border-radius:10px;cursor:pointer;font-family:inherit;font-size:13.5px;color:var(--text);text-align:left}.sp-item.hi{background:var(--accent-soft)}.sp-ico{width:28px;height:28px;border-radius:8px;background:#eef1f6;color:var(--navy);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.sp-ico.t-blue{background:var(--grad-accent);color:#fff}.sp-ico.t-gold{background:var(--grad-gold);color:#3a2f06}.sp-ico.t-green{background:var(--grad-green);color:#fff}.sp-ico.t-red{background:var(--grad-red);color:#fff}.sp-ico.t-violet{background:var(--grad-violet);color:#fff}.sp-item.hi .sp-ico{box-shadow:0 0 0 2px var(--accent)}.sp-name{font-weight:600;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sp-group{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);background:#eef1f6;padding:3px 8px;border-radius:var(--pill);flex-shrink:0}.sp-empty{padding:16px 12px;color:var(--muted);font-size:13px;text-align:center}.ntf-wrap{position:relative}.ntf-pop{position:absolute;top:calc(100% + 10px);right:0;width:360px;max-width:calc(100vw - 32px);background:#fff;border-radius:16px;box-shadow:var(--shadow-soft);z-index:40;animation:pop .14s ease;overflow:hidden}.ntf-head{display:flex;align-items:center;gap:8px;padding:14px 16px 10px;border-bottom:1px solid var(--border);font-size:14px}.ntf-count{background:var(--grad-accent);color:#fff;font-size:10.5px;font-weight:700;min-width:20px;height:20px;padding:0 6px;border-radius:var(--pill);display:inline-flex;align-items:center;justify-content:center}.ntf-list{max-height:380px;overflow-y:auto;padding:6px}.ntf-item{display:flex;gap:11px;padding:10px;border-radius:12px;align-items:flex-start;transition:background .12s}.ntf-item:hover{background:#f6f8fc}.ntf-ico{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;box-shadow:0 4px 10px -3px #1e2a3a4d}.ntf-ico.i-blue{background:var(--grad-accent)}.ntf-ico.i-gold{background:var(--grad-gold);color:#3a2f06}.ntf-ico.i-green{background:var(--grad-green)}.ntf-ico.i-red{background:var(--grad-red)}.ntf-ico.i-violet{background:var(--grad-violet)}.ntf-ico.i-navy{background:var(--grad-navy);color:var(--gold)}.ntf-body{display:flex;flex-direction:column;gap:1px;min-width:0}.ntf-text{font-size:13px;font-weight:600;color:var(--text);line-height:1.35}.ntf-meta{font-size:11.5px;color:var(--muted)}.ntf-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px 12px;color:var(--muted);font-size:13px}@media (max-width: 1024px){.content{padding:22px 24px 32px}}@media (max-width: 768px){.app{flex-direction:column}.sidebar{position:static;width:auto;height:auto;flex-direction:column;margin:8px 8px 0;border-radius:16px;padding:10px 12px}.brand{margin-bottom:6px}.nav{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:6px;padding-bottom:4px}.nav-section{display:contents}.nav-label{display:none}.nav a{flex:0 0 auto;white-space:nowrap;padding:8px 12px}.nav-foot{width:100%;margin-top:6px}.main{margin-left:0;min-width:0}.content{padding:16px 14px 28px}.topbar{padding:10px 14px;gap:10px}.topbar-search{max-width:none}.topbar .who{display:none}.course-grid{grid-template-columns:1fr}.modal,.modal.wide{width:100%;border-radius:16px;padding:20px}.card:has(>table){overflow-x:auto}.card>table{min-width:640px}.field{min-width:100%}form.card{padding:20px 16px}.toolbar{flex-direction:column;align-items:stretch;gap:10px}.toolbar .btn,.toolbar a.btn{width:100%}.stats{grid-template-columns:repeat(2,1fr);gap:10px}.stat{padding:12px 14px}.stat .num{font-size:20px}.stat-ico{width:36px;height:36px}.table-foot{justify-content:center}.row-actions .btn{flex:1}.ntf-pop{position:fixed;top:64px;left:16px;right:16px;width:auto}}@media (max-width: 420px){.stats{grid-template-columns:1fr}.tabs{width:100%}.tabs .tab{flex:1;padding:8px 10px}}
