:root{--primary:#0f766e;--primary-dark:#0a5b56;--accent:#22c7b6;--ink:#17373d;--muted:#6c8388;--bg:#f2f7f6;--card:#fff;--line:#dfebe8;--soft:#edf8f6;--shadow:0 20px 55px rgba(12,65,61,.09);--sidebar:#062b2f;--sidebar-2:#0b3b3f}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#7a9095;font-weight:900}.avatar{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:#d9f2ed;color:#0b625b;font-weight:900}.logo-circle{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);font-weight:900;overflow:hidden}.logo-box img{width:100%;height:100%;object-fit:contain;display:block;border-radius:inherit;background:#fff}.btn{display:inline-flex;gap:8px;justify-content:center;align-items:center;border:1px solid transparent;border-radius:12px;padding:10px 14px;background:#fff;color:var(--ink);font-weight:800;transition:transform .15s,box-shadow .15s,background .15s,border-color .15s}.btn:hover{transform:translateY(-1px)}.btn.large{padding:13px 16px}.btn.primary{background:linear-gradient(135deg,#0f766e,#13a79a);color:#fff;box-shadow:0 10px 25px rgba(15,118,110,.18)}.btn.primary:hover{background:linear-gradient(135deg,#0b645f,#0f8f84)}.btn.secondary{background:#eef7f5;color:#0e655e}.btn.ghost{background:transparent;border-color:rgba(255,255,255,.12);color:#e7faf6}.btn.outline{border-color:var(--line);background:#fff}.btn.danger{background:#fff1f1;color:#a61b1b}.btn.small{font-size:12px;padding:7px 10px}.full{width:100%}
/* login */
.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(450px,.95fr);background:radial-gradient(circle at 90% 10%,#e8f8f5 0,#f5faf9 35%,#f2f7f6 70%)}.login-art{position:relative;overflow:hidden;background:linear-gradient(145deg,#042b2e 0%,#0a5659 44%,#10a493 100%);color:#fff;padding:58px 64px;display:flex;flex-direction:column;justify-content:space-between}.login-art:before,.login-art:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.06)}.login-art:before{width:560px;height:560px;right:-190px;top:-170px}.login-art:after{width:380px;height:380px;left:-170px;bottom:-170px}.login-brand{position:relative;z-index:2;display:flex;gap:13px;align-items:center}.login-brand strong,.login-brand span{display:block}.login-brand span{font-size:11px;opacity:.74;margin-top:4px}.hero-copy{position:relative;z-index:2;max-width:640px}.hero-copy h1{font-size:52px;line-height:1.05;letter-spacing:-.04em;margin:12px 0 18px}.hero-copy p{font-size:16px;line-height:1.8;max-width:570px;color:rgba(255,255,255,.82)}.login-features{position:relative;z-index:2;display:flex;gap:10px;flex-wrap:wrap}.login-features span{padding:9px 12px;border-radius:999px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.08);font-size:12px;font-weight:700}.login-panel{display:grid;place-items:center;padding:44px}.login-card{width:min(440px,100%);background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border:1px solid rgba(205,225,221,.9);border-radius:28px;padding:34px 36px 30px;box-shadow:0 30px 80px rgba(9,60,57,.11)}.login-card-logo{width:84px;height:84px;margin:0 auto 19px;display:grid;place-items:center}.login-card-logo .logo-circle{width:84px;height:84px;border-radius:24px;background:#fff;border:1px solid var(--line);box-shadow:0 12px 28px rgba(15,118,110,.12);color:#0f766e;font-size:25px}.login-welcome{text-align:center}.login-card h2{font-size:30px;letter-spacing:-.03em;margin:7px 0 6px}.login-form{margin-top:24px;text-align:left}.login-form label{font-size:12px;font-weight:900;display:block;margin-top:17px;color:#31545a}.login-form input{width:100%;height:49px;margin-top:8px;border:1px solid #cfe1dd;border-radius:13px;background:#fbfdfd;padding:0 14px;color:#18383d;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.login-form input:focus{border-color:#0f766e;background:#fff;box-shadow:0 0 0 4px rgba(15,118,110,.09)}.password-wrap{position:relative}.password-wrap input{padding-right:54px}.icon-btn{border:0;background:transparent;color:#657d82}.password-wrap .icon-btn{position:absolute;right:7px;top:8px;width:36px;height:34px;border-radius:8px}.password-wrap .icon-btn:hover{background:#eef7f5;color:#0f766e}.login-form .btn.full{height:49px;border-radius:13px;margin-top:25px}.install-link{margin-top:17px;text-align:center;font-size:11px;color:#72878b}.install-link a{color:#0f766e;font-weight:800;text-decoration:none}.alert{border-radius:13px;padding:12px 14px;font-size:13px;margin:17px 0}.alert.danger{background:#fff1f1;color:#9e2323;border:1px solid #ffd8d8}
/* shell */
.app-shell{min-height:100vh;display:grid;grid-template-columns:286px minmax(0,1fr)}.sidebar{background:linear-gradient(180deg,var(--sidebar),#082629);color:#dff6f1;display:flex;flex-direction:column;min-height:100vh;position:relative}.sidebar-top{padding:15px 14px}.logo-block{display:flex;gap:11px;align-items:center;padding:10px 7px 18px}.logo-block strong{display:block;color:#fff;font-size:13px}.logo-block span{display:block;color:#8fbab4;font-size:10px;margin-top:4px}.side-user{display:flex;align-items:center;gap:10px;padding:11px 10px;margin-bottom:16px;background:linear-gradient(135deg,#0b373b,#0d4245);border:1px solid rgba(255,255,255,.06);border-radius:16px}.side-user-copy{min-width:0;flex:1}.side-user b,.side-user span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-user b{font-size:12px;color:#fff}.side-user span{font-size:10px;color:#9bc5bf;margin-top:3px}.role-dot{width:8px;height:8px;border-radius:50%;background:#35d6c1;box-shadow:0 0 0 4px rgba(53,214,193,.08)}.menu-label{font-size:9px;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:#6ca39c;padding:14px 11px 7px}.nav-item{width:100%;display:flex;align-items:center;gap:11px;padding:11px 12px;margin:2px 0;border:1px solid transparent;border-radius:12px;color:#bfe0da;background:transparent;text-align:left;font-weight:800;font-size:12px;transition:background .15s,color .15s,transform .15s,border-color .15s}.nav-item:hover{background:rgba(255,255,255,.045);color:#fff;transform:translateX(2px)}.nav-item.active{background:linear-gradient(135deg,#0e5b5f,#0e4548);color:#fff;border-color:rgba(105,233,218,.12);box-shadow:inset 3px 0 0 #29c7b6,0 10px 25px rgba(0,0,0,.10)}.nav-icon{width:26px;height:26px;border-radius:9px;background:rgba(255,255,255,.035);display:grid;place-items:center;flex:0 0 26px}.nav-item.active .nav-icon{background:rgba(38,199,182,.14);color:#71e7d8}.nav-icon svg,.qa-icon svg,.hero-mark svg,.stat-icon svg,.data-icon svg,.empty-icon svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.nav-text{flex:1}.menu-badge{margin-left:auto;padding:3px 7px;border-radius:999px;background:#28b9aa;color:#062b2f;font-size:9px}.side-footer{margin-top:auto;padding:14px}.main{min-width:0}.topbar{height:86px;padding:16px 28px;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.topbar-left{display:flex;align-items:center;gap:10px}.topbar h1{margin:4px 0 0;font-size:24px;letter-spacing:-.025em}.top-actions{display:flex;align-items:center;gap:10px}.period-chip,.top-role-chip{padding:8px 11px;border-radius:999px;font-size:10px;font-weight:900}.period-chip{background:#edf8f6;color:#0c675f;border:1px solid #d6ebe7}.top-role-chip{background:#102f33;color:#e8fffa}.top-avatar{width:40px;height:40px}.content{padding:27px 28px 38px}.grid{display:grid;gap:16px}.grid.cards,.role-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:0 9px 30px rgba(12,65,61,.035)}.card h2,.card h3{margin:0 0 10px}.page-hero{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:24px 25px;margin-bottom:18px;border-radius:22px;background:linear-gradient(135deg,#0c4b4f,#0f766e);color:#fff;box-shadow:0 18px 38px rgba(11,86,82,.14);position:relative;overflow:hidden}.page-hero:after{content:"";position:absolute;right:-70px;top:-110px;width:280px;height:280px;border-radius:50%;background:rgba(255,255,255,.07)}.page-hero h2{margin:7px 0 5px;font-size:28px;letter-spacing:-.03em}.page-hero p{margin:0;max-width:720px;color:rgba(255,255,255,.78);line-height:1.65;font-size:13px}.page-hero .eyebrow{color:#a6e8df}.page-hero.compact{padding:19px 22px}.page-hero.compact h2{font-size:24px}.hero-mark{width:58px;height:58px;border-radius:19px;background:rgba(255,255,255,.12);display:grid;place-items:center;position:relative;z-index:2}.hero-mark svg{width:25px;height:25px}.dashboard-main{margin-bottom:18px}.hero-card{background:linear-gradient(135deg,#0a4f54,#0f766e);color:#fff;border:0;box-shadow:0 18px 38px rgba(7,72,70,.14)}.hero-card p{color:rgba(255,255,255,.78)}.hero-mini{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#9be6dc;font-weight:900}.hero-card h2{font-size:24px;margin:9px 0 5px}.hero-meta{margin:0}.hero-status{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-top:23px;padding-top:16px;border-top:1px solid rgba(255,255,255,.12)}.compact-stats{align-content:start}.stat{position:relative;overflow:hidden}.stat .stat-icon{width:38px;height:38px;border-radius:12px;background:#edf8f6;color:#0f766e;display:grid;place-items:center;margin-bottom:17px}.stat-label{font-size:11px;color:#74898d;font-weight:900}.stat-value{font-size:29px;font-weight:900;margin-top:6px;letter-spacing:-.03em}.stat-note{font-size:11px;color:#819497;margin-top:5px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.section-heading h3{margin:0}.section-heading p{margin:4px 0 0}.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.quick-action{border:1px solid var(--line);background:#fff;border-radius:16px;padding:14px;display:flex;align-items:center;gap:12px;text-align:left;color:var(--ink);transition:transform .15s,box-shadow .15s,border-color .15s}.quick-action:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(12,65,61,.08);border-color:#bfd9d4}.qa-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#edf8f6;color:#0f766e;flex:0 0 38px}.quick-action b,.quick-action small{display:block}.quick-action b{font-size:12px}.quick-action small{font-size:10px;color:#7b9094;margin-top:3px;line-height:1.4}.qa-arrow{margin-left:auto;font-size:18px;color:#8aa0a4}.prodi-banner{display:flex;justify-content:space-between;align-items:center;padding:21px 24px;border-radius:20px;background:#f0faf8;border:1px solid #d5ebe6;margin-bottom:17px}.prodi-banner h2{margin:7px 0 4px}.prodi-banner p{margin:0;color:#6d8488;font-size:12px}.prodi-banner .hero-mark{background:#dff4ef;color:#0f766e}.admin-access{margin-top:18px}.admin-shortcuts{margin-top:14px}.admin-data-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.admin-data-card{position:relative;overflow:hidden;cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s;text-align:left;color:var(--ink)}.admin-data-card:hover{transform:translateY(-3px);box-shadow:0 15px 34px rgba(12,65,61,.09);border-color:#c0d9d5}.admin-data-card .data-icon{width:42px;height:42px;border-radius:13px;background:#edf8f6;color:#0f766e;display:grid;place-items:center}.admin-data-card .data-count{display:block;font-size:25px;font-weight:900;margin-top:14px}.admin-data-card .data-name{display:block;font-size:11px;font-weight:900;margin-top:4px}.admin-data-card .data-link{display:block;margin-top:12px;font-size:10px;color:#0f766e;font-weight:900}.admin-data-card .data-link b{font-size:14px}.toolbar,.master-toolbar{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.toolbar .left,.toolbar .right,.master-actions{display:flex;gap:9px;flex-wrap:wrap}.master-card{padding:18px}.master-select{display:flex;align-items:center;gap:10px}.master-label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:900;color:#809297}.master-toolbar select{min-width:240px}.master-info{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:18px;padding:14px 15px;border-radius:14px;background:#f7fbfa;border:1px solid #e3eeeb}.master-info b{display:block;font-size:13px}.master-info span{font-size:10px;color:#789095;margin-top:3px;display:block}.master-search{display:flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:11px;padding:0 10px;color:#7c9296}.master-search input{border:0;background:transparent;outline:0;padding:9px 2px;min-width:210px}.master-note{margin:12px 0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid .full-col{grid-column:1/-1}.form-label{display:block;font-size:11px;font-weight:900;color:#36585d}.form-label span{display:block;margin-bottom:6px}.form-label input,.form-label select,.form-label textarea,.master-toolbar select{width:100%;padding:10px 11px;border:1px solid #d3e1de;border-radius:11px;background:#fbfdfd;color:#18383d;outline:0}.form-label input:focus,.form-label select:focus,.form-label textarea:focus,.master-toolbar select:focus{border-color:#0f766e;box-shadow:0 0 0 3px rgba(15,118,110,.08)}.form-label textarea{min-height:110px;resize:vertical}.modal{position:fixed;inset:0;background:rgba(4,24,27,.62);display:grid;place-items:center;padding:18px;z-index:100}.modal-card{width:min(960px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:22px;padding:23px;box-shadow:0 30px 80px rgba(0,0,0,.22)}.modal-form-card{padding:0}.modal-head{display:flex;justify-content:space-between;gap:14px;padding:22px 23px 15px;border-bottom:1px solid var(--line)}.modal-head h2{margin:5px 0}.modal-head p{margin:0;font-size:11px}.modal-close{width:38px;height:38px;border-radius:10px;font-size:23px}.modal-form-card form{padding:18px 23px 23px}.form-tip{display:flex;gap:12px;margin:17px 23px 0;padding:13px 14px;background:#edf8f6;border:1px solid #d6ebe7;border-radius:13px}.tip-icon{width:36px;height:36px;border-radius:10px;background:#dff4ef;color:#0f766e;display:grid;place-items:center}.tip-icon svg{width:17px;height:17px}.form-tip b,.form-tip small{display:block}.form-tip b{font-size:11px}.form-tip small{font-size:10px;color:#6c8588;line-height:1.5;margin-top:3px}.modal-foot{display:flex;justify-content:flex-end;gap:9px;margin-top:18px;padding-top:15px;border-top:1px solid var(--line)}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}.table{border-collapse:collapse;width:100%;min-width:760px}.table th,.table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:11px;vertical-align:middle}.table th{background:#f7faf9;color:#61767b;font-size:10px;text-transform:uppercase;letter-spacing:.06em;position:sticky;top:0;z-index:2}.table tr:hover td{background:#fbfefd}.table td input,.table td select{min-width:70px;padding:7px 8px;border-radius:8px}.row-actions{white-space:nowrap}.action-col{width:145px}.badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:10px;font-weight:900;background:#eef8f6;color:#0e665e}.badge.warn{background:#fff6dd;color:#8b5d00}.badge.ok{background:#e9f8ea;color:#23733a}.badge.danger{background:#fff0f0;color:#a52020}.filter-chip{padding:8px 10px;border-radius:999px;background:#eff8f6;border:1px solid #d9ebe7;color:#0d675f;font-size:10px;font-weight:900}.empty{padding:34px;text-align:center;color:#71858a}.empty-rich{display:flex;flex-direction:column;align-items:center;gap:6px}.empty-rich b{font-size:13px;color:#35555b}.empty-rich span:last-child{font-size:11px}.empty-icon{width:48px;height:48px;border-radius:15px;background:#eef8f6;color:#0f766e;display:grid;place-items:center;margin-bottom:4px}.note{padding:11px 13px;background:#f8fbfa;border:1px dashed #cfe0dc;border-radius:12px;color:#60757b;font-size:11px;line-height:1.6}.logo-setting{display:grid;grid-template-columns:130px 1fr;gap:20px;align-items:center}.logo-preview{width:130px;height:130px;border:1px dashed #c7d9d5;border-radius:18px;background:#f7fbfa;display:grid;place-items:center;overflow:hidden}.logo-preview img{width:100%;height:100%;object-fit:contain}.logo-preview .logo-fallback{font-size:30px;font-weight:900;color:#0f766e}.toast{position:fixed;right:18px;bottom:18px;z-index:150;background:#102f33;color:#fff;padding:12px 16px;border-radius:12px;box-shadow:0 15px 35px rgba(0,0,0,.18);opacity:0;transform:translateY(10px);pointer-events:none;transition:.18s;font-size:12px}.toast.show{opacity:1;transform:translateY(0)}.mobile-only{display:none}.danger-text{color:#b42318}.text-right{text-align:right}.spacer{height:4px}.section-title{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:14px}.install-link a:hover{text-decoration:underline}
@media(max-width:1080px){.app-shell{grid-template-columns:258px 1fr}.grid.cards,.role-stat-grid,.admin-data-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.login-page{grid-template-columns:1fr}.login-art{display:none}.login-panel{padding:30px 18px}}
@media(max-width:820px){.app-shell{display:block}.sidebar{position:fixed;inset:0 auto 0 0;width:286px;transform:translateX(-100%);transition:.2s;z-index:80}.sidebar.open{transform:translateX(0)}.mobile-only{display:inline-grid}.topbar{height:auto;padding:14px 16px}.content{padding:16px}.grid.two,.grid.three,.form-grid{grid-template-columns:1fr}.top-actions .period-chip,.top-actions .top-role-chip{display:none}.master-toolbar{align-items:stretch}.master-select{width:100%;align-items:stretch;flex-direction:column}.master-toolbar select{width:100%}.master-actions{width:100%}.master-actions .btn{flex:1}.master-info{align-items:stretch;flex-direction:column}.master-search input{width:100%;min-width:0}.page-hero{padding:20px}.topbar h1{font-size:20px}}
@media(max-width:560px){.login-panel{padding:14px}.login-card{padding:28px 20px 24px;border-radius:22px}.login-card-logo,.login-card-logo .logo-circle{width:74px;height:74px}.content{padding:12px}.grid.cards,.role-stat-grid,.quick-grid,.admin-data-grid{grid-template-columns:1fr}.page-hero h2{font-size:23px}.top-actions{gap:6px}.logo-setting{grid-template-columns:1fr}.logo-preview{margin:auto}.modal-card{border-radius:18px}.modal-head{padding:18px}.form-tip,.modal-form-card form{padding-left:18px;padding-right:18px;margin-left:0;margin-right:0}.form-tip{margin:16px 18px 0}}
.upload-highlight{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:0 0 16px;padding:20px 22px;border-radius:18px;background:linear-gradient(135deg,#effaf8,#ffffff);border:1px solid #d9ebe7;box-shadow:0 12px 28px rgba(12,65,61,.05)}.upload-highlight h3{margin:5px 0 4px;font-size:17px}.upload-quick-actions{display:flex;gap:9px;flex-wrap:wrap}.field-help{display:block;margin-top:5px;color:#72898d;font-size:10px;font-weight:600;line-height:1.4}.nice-form .form-label{min-height:84px}.nice-form .full-col{min-height:130px}.master-actions .btn.ghost{background:#f6faf9;color:#426066}.master-actions .btn.ghost:hover{background:#eef7f5}.master-note{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
@media(max-width:820px){.upload-highlight{align-items:flex-start;flex-direction:column}.upload-quick-actions{width:100%}.upload-quick-actions .btn{flex:1}.master-actions .btn{flex:1}}

/* v8 unified lecturer workspace + student schedule */
.student-dashboard-schedule{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:22px}
.schedule-mini-card,.schedule-card{background:#fff;border:1px solid #dfecea;border-radius:18px;padding:17px;box-shadow:0 10px 26px rgba(10,70,67,.045);transition:transform .16s,box-shadow .16s,border-color .16s}
.schedule-mini-card:hover,.schedule-card:hover{transform:translateY(-2px);box-shadow:0 16px 34px rgba(10,70,67,.08);border-color:#c7dfda}
.schedule-mini-top,.schedule-top,.lsc-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.day-pill,.class-pill,.status-chip{display:inline-flex;align-items:center;border-radius:999px;font-size:9px;font-weight:900}
.day-pill{padding:6px 9px;background:#e9f8f5;color:#0d6c64}
.class-pill{padding:6px 9px;background:#f1f4f3;color:#50696d;border:1px solid #e1e9e7}
.status-chip{padding:6px 9px;background:#e9f8ea;color:#28733d}
.schedule-mini-card h4{margin:14px 0 5px;font-size:13px;line-height:1.35}
.schedule-code,.lsc-code{font-size:10px;color:#819497;font-weight:800}
.schedule-mini-meta{display:flex;flex-direction:column;gap:5px;margin-top:12px;color:#62797d;font-size:10px}
.schedule-card h3{margin:16px 0 4px;font-size:17px;line-height:1.35}
.schedule-meta{display:grid;gap:8px;margin-top:15px}
.schedule-meta>div{padding:10px 11px;background:#f8fbfa;border-radius:11px;border:1px solid #e5efed}
.schedule-meta span,.lsc-info span{display:block;font-size:9px;color:#82979a;text-transform:uppercase;letter-spacing:.08em;font-weight:900;margin-bottom:4px}
.schedule-meta b,.lsc-info b{font-size:11px;color:#264e53}
.student-schedule-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.lecturer-schedule-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:20px}
.lecturer-schedule-card{padding:20px;border:1px solid #dceae7;border-radius:21px;background:linear-gradient(180deg,#fff 0%,#f8fcfb 100%);box-shadow:0 14px 34px rgba(10,70,67,.055);transition:transform .18s,box-shadow .18s,border-color .18s}
.lecturer-schedule-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(10,70,67,.09);border-color:#c4ded9}
.lsc-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-top:18px}
.lsc-title-row h3{font-size:20px;margin:0 0 6px;letter-spacing:-.02em}
.lsc-course-icon{width:48px;height:48px;flex:0 0 48px;border-radius:15px;background:#eaf8f5;color:#0f766e;display:grid;place-items:center}
.lsc-course-icon svg{width:22px;height:22px}
.lsc-info{display:grid;grid-template-columns:1.2fr .8fr;gap:9px;margin-top:17px}
.lsc-info>div{padding:11px 12px;border:1px solid #e4efec;border-radius:12px;background:#fff}
.lsc-info>div:last-child{grid-column:1/-1}
.lsc-actions{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:16px}
.class-action{border:1px solid #dbe9e6;background:#fff;border-radius:13px;padding:11px 8px;color:#294d52;display:flex;flex-direction:column;align-items:flex-start;gap:5px;text-align:left;cursor:pointer;min-height:82px;transition:transform .14s,box-shadow .14s,border-color .14s,background .14s}
.class-action:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(10,70,67,.07);border-color:#bfdad4;background:#fbfefd}
.class-action span{width:29px;height:29px;border-radius:9px;display:grid;place-items:center;background:#edf8f6;color:#0f766e}
.class-action span svg{width:15px;height:15px}
.class-action b{font-size:10px;line-height:1.15}.class-action small{font-size:9px;color:#829497;line-height:1.2}.class-action.primaryAction{border-color:#9edfd6;background:linear-gradient(180deg,#effbf8,#fff)}
.class-hub-hero{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;padding:22px 24px;margin-bottom:15px;border-radius:22px;background:linear-gradient(135deg,#083d41,#0f766e);color:#fff;box-shadow:0 18px 40px rgba(8,69,66,.14)}
.class-hub-main h2{margin:6px 0 5px;font-size:27px;letter-spacing:-.03em}.class-hub-main p{margin:0;color:rgba(255,255,255,.78);font-size:12px}.class-hub-mark{width:56px;height:56px;border-radius:18px;background:rgba(255,255,255,.11);display:grid;place-items:center}.class-hub-mark svg{width:25px;height:25px}.class-hub-back .btn{background:rgba(255,255,255,.10);color:#fff;border-color:rgba(255,255,255,.11)}
.class-hub-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:15px}
.class-hub-tab{border:1px solid #dceae7;border-radius:15px;background:#fff;padding:12px;text-align:left;display:grid;grid-template-columns:32px 1fr;grid-template-rows:auto auto;column-gap:9px;cursor:pointer;color:#35565b;transition:.15s;box-shadow:0 8px 20px rgba(10,70,67,.03)}
.class-hub-tab>span{grid-row:1/3;width:32px;height:32px;border-radius:10px;background:#edf8f6;color:#0f766e;display:grid;place-items:center}.class-hub-tab>span svg{width:15px;height:15px}.class-hub-tab b{font-size:10px;align-self:end}.class-hub-tab small{font-size:9px;color:#83969a;align-self:start;margin-top:2px}.class-hub-tab:hover{border-color:#c2ddd8;transform:translateY(-1px)}.class-hub-tab.active{border-color:#84d1c7;background:#effaf8;box-shadow:0 10px 24px rgba(15,118,110,.08)}
.hub-select{min-width:180px;padding:10px 12px;border:1px solid #d4e3df;border-radius:11px;background:#fff;color:#254a50}
.journal-strip{padding:11px 13px;border:1px solid #dbece8;background:#f2faf8;border-radius:12px;margin-bottom:14px}.journal-strip b{display:block;font-size:11px;margin-top:4px;color:#31555a}.attendance-table select{min-width:150px}.grades-table input{width:72px;min-width:72px}.material-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.material-hub-card{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:11px;padding:13px;border:1px solid #dfecea;border-radius:14px;background:#fbfefd}.material-hub-icon{width:40px;height:40px;border-radius:12px;background:#edf8f6;color:#0f766e;display:grid;place-items:center}.material-hub-icon svg{width:18px;height:18px}.material-hub-info b,.material-hub-info small{display:block}.material-hub-info b{font-size:11px}.material-hub-info small{font-size:9px;color:#82979a;margin-top:3px}.material-hub-actions{display:flex;gap:6px}.material-viewer-card{padding:0;overflow:hidden}.material-viewer-card .modal-head{padding:18px 20px}.material-preview{height:min(68vh,700px);background:#edf3f2}.material-preview iframe{width:100%;height:100%;border:0;background:#fff}.material-viewer-card .modal-foot{padding:12px 20px 18px;margin:0}
.task-hub-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.task-hub-card{border:1px solid #dfecea;border-radius:16px;padding:16px;background:#fff;box-shadow:0 8px 20px rgba(10,70,67,.035)}.task-hub-top,.task-hub-footer{display:flex;justify-content:space-between;align-items:center;gap:10px}.task-hub-card h3{margin:14px 0 8px;font-size:14px}.task-hub-card p{margin:0;color:#63797d;font-size:10px;line-height:1.6;min-height:48px}.task-hub-footer{margin-top:14px;padding-top:12px;border-top:1px solid #e9f0ee}.task-hub-footer .muted{font-size:9px}
@media(max-width:1100px){.student-dashboard-schedule{grid-template-columns:repeat(2,minmax(0,1fr))}.student-schedule-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lsc-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.class-hub-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){.student-dashboard-schedule,.student-schedule-grid,.lecturer-schedule-grid,.material-card-grid,.task-hub-grid{grid-template-columns:1fr}.lsc-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.class-hub-hero{grid-template-columns:1fr}.class-hub-mark{display:none}.class-hub-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.lsc-info{grid-template-columns:1fr}.lsc-info>div:last-child{grid-column:auto}.material-hub-card{grid-template-columns:40px 1fr}.material-hub-actions{grid-column:1/-1}.class-hub-back{order:2}}
@media(max-width:560px){.student-dashboard-schedule{grid-template-columns:1fr}.class-hub-tabs{grid-template-columns:1fr}.class-hub-hero{padding:18px}.lsc-actions{grid-template-columns:1fr 1fr}.lsc-title-row h3{font-size:17px}.material-preview{height:60vh}}


/* v9 academic dashboard refinements */
.compact-stats{gap:10px}.compact-stats .card{min-height:126px}
.krs-progress{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.krs-progress>div{padding:15px 16px;border:1px solid #dceae7;border-radius:15px;background:#fbfefd}.krs-progress b{display:block;font-size:28px;color:#0f766e;line-height:1}.krs-progress span{display:block;margin-top:7px;font-size:10px;color:#71888b;font-weight:800}
.dashboard-list{margin-top:13px;display:grid;gap:8px;max-height:260px;overflow:auto;padding-right:2px}.dash-student-item{display:grid;grid-template-columns:28px 1fr;gap:9px;align-items:center;padding:10px 11px;border:1px solid #e3eeeb;border-radius:12px;background:#fff}.dash-student-no{width:27px;height:27px;border-radius:9px;background:#eaf8f5;color:#0f766e;display:grid;place-items:center;font-size:10px;font-weight:900}.dash-student-item b,.dash-student-item small{display:block}.dash-student-item b{font-size:10px;color:#25494e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-student-item small{font-size:9px;color:#82979a;margin-top:2px}.dashboard-more{width:100%;margin-top:4px}
.hub-course-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.hub-course-tags span{display:inline-flex;align-items:center;gap:4px;padding:6px 9px;border-radius:999px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.10);font-size:9px;color:rgba(255,255,255,.8)}.hub-course-tags b{color:#fff}
.schedule-badges{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px}.schedule-badges>span{padding:10px 11px;border:1px solid #e1ece9;background:#fff;border-radius:11px;font-size:10px;color:#2d555a}.schedule-badges b{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.09em;color:#83979a;margin-bottom:4px}
.task-count-tools{display:flex;align-items:center;gap:9px}.task-count-tools strong{min-width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:#edf8f6;color:#0f766e;font-size:16px}.round-btn{width:34px;height:34px;border-radius:10px;border:1px solid #d5e4e1;background:#fff;color:#37585e;font-weight:900;font-size:20px;line-height:1;cursor:pointer;transition:.15s}.round-btn:hover{transform:translateY(-1px);border-color:#b9d6d1;box-shadow:0 8px 18px rgba(15,118,110,.08)}.round-btn.primary{background:#0f766e;color:#fff;border-color:#0f766e}.task-count-caption{margin:-5px 0 13px;color:#7b9195;font-size:10px}.task-slot-dots{display:flex;gap:6px;align-items:center}.task-slot-dot{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;border:1px dashed #cbded9;color:#98abad;font-size:9px;font-weight:900}.task-slot-dot.used{background:#eaf8f5;color:#0f766e;border-style:solid;border-color:#bfe0da}.task-manager-strip{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 14px;margin-bottom:13px;border:1px solid #dfebe8;background:#f8fcfb;border-radius:14px}.task-manager-strip>div:first-child{display:flex;align-items:baseline;gap:7px}.task-manager-strip b{font-size:22px;color:#0f766e}.task-manager-strip span{font-size:9px;color:#80969a;font-weight:800}.task-card-actions{display:flex;gap:7px;flex-wrap:wrap}.empty-rich .empty-icon{margin-top:2px}
.task-modal-card{width:min(820px,100%);padding:0;overflow:hidden}.task-modal-card .task-form{padding:18px 22px 22px}.task-form .form-label{margin-bottom:2px}.task-live-preview{padding:17px 18px;border-radius:17px;background:linear-gradient(135deg,#effaf8,#f8fcfb);border:1px solid #d5ebe6;margin-bottom:15px;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}.task-live-top{display:flex;justify-content:space-between;align-items:center;gap:10px;color:#7f9396;font-size:9px;font-weight:800}.task-live-preview h3{margin:13px 0 7px;font-size:18px;color:#244b50;min-height:24px}.task-live-preview p{margin:0;color:#647c80;font-size:11px;line-height:1.6;min-height:38px;white-space:pre-wrap;overflow-wrap:anywhere}.task-live-deadline{margin-top:11px;font-size:9px;color:#0f766e;font-weight:900}.task-form input,.task-form textarea,.task-form select{font-size:12px}.task-form textarea{min-height:130px}
.grades-table td{position:relative}.grades-table td input.score{display:block;position:relative;z-index:3;width:90px;min-width:90px;height:36px;padding:7px 9px;border:1px solid #cbded9;border-radius:9px;background:#fff;color:#173a3f;pointer-events:auto!important;cursor:text!important;user-select:text;outline:0;font-size:12px;box-sizing:border-box}.grades-table td input.score:focus{border-color:#0f766e;box-shadow:0 0 0 3px rgba(15,118,110,.09);background:#fff}.grades-table td input.score::-webkit-inner-spin-button,.grades-table td input.score::-webkit-outer-spin-button{opacity:1}.attendance-table select.att{width:100%;height:36px;padding:7px 9px;border-radius:9px;background:#fff;border:1px solid #cbded9;cursor:pointer}
.rekap-grade-table td:nth-child(3){min-width:150px}.rekap-grade-table th{white-space:nowrap}.number-col{width:45px;text-align:center!important;font-weight:900;color:#6f8589}.pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px;color:#71878b;font-size:10px}.pagination .btn[disabled]{opacity:.45;cursor:not-allowed}.compact-list-card .full{width:100%;margin-top:12px}
@media(max-width:820px){.krs-progress,.schedule-badges{grid-template-columns:1fr}.task-manager-strip{align-items:flex-start;flex-direction:column}.task-slot-dots{width:100%;justify-content:space-between}.pagination{flex-wrap:wrap}.grades-table td input.score{width:78px;min-width:78px}}
/* v10 interaction fixes */
.approval-search{margin-left:auto;min-width:250px}
.submission-modal-card{width:min(1180px,100%);padding:0;overflow:hidden}
.submission-modal-card .table-wrap{max-height:65vh;overflow:auto;padding:0 18px 18px}
.submission-modal-card .modal-foot{padding:12px 20px 18px}
.subScore{width:82px;height:36px;padding:7px 9px;border:1px solid #cbded9;border-radius:9px;background:#fff;box-sizing:border-box}
.subScore:focus{border-color:#0f766e;outline:none;box-shadow:0 0 0 3px rgba(15,118,110,.09)}
.admin-data-card{cursor:pointer;text-align:left;border:1px solid #dfecea;transition:.18s}
.admin-data-card:hover{transform:translateY(-2px);box-shadow:0 14px 28px rgba(10,70,67,.08);border-color:#b8d9d3}
@media(max-width:820px){.approval-search{margin-left:0;min-width:0;width:100%}.submission-modal-card .table-wrap{padding-left:10px;padding-right:10px}}

/* v11 dashboard/statistics & KHS refinements */
.stat-explainer{margin-top:16px;padding:18px 20px;background:linear-gradient(135deg,#fbfefd,#f3faf8)}
.stat-explainer-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}
.stat-explainer-grid>div{padding:12px 13px;border:1px solid #dfecea;border-radius:13px;background:#fff}
.stat-explainer-grid b,.stat-explainer-grid span{display:block}.stat-explainer-grid b{font-size:10px;color:#254b51}.stat-explainer-grid span{font-size:9px;line-height:1.5;color:#809398;margin-top:4px}
.khs-selector-card{padding:0;overflow:hidden;background:linear-gradient(180deg,#ffffff,#fbfefd)}
.khs-selector-head{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:20px 21px 15px;border-bottom:1px solid #e4eeeb}
.khs-selector-head h3{margin:6px 0 4px;font-size:17px}.khs-selector-head p{margin:0;font-size:10px}
.khs-gpa-pill{min-width:120px;padding:11px 14px;border-radius:15px;background:#eef8f6;border:1px solid #d6ebe7;text-align:center}.khs-gpa-pill span,.khs-gpa-pill b{display:block}.khs-gpa-pill span{font-size:9px;color:#749095;font-weight:800}.khs-gpa-pill b{font-size:24px;color:#0f766e;margin-top:2px}
.khs-selector-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:15px 21px 20px}.period-select-wrap{display:flex;align-items:center;gap:11px;padding:11px 12px;border:1px solid #d8e8e4;border-radius:15px;background:#fff;box-shadow:0 8px 22px rgba(15,118,110,.04)}
.period-icon{width:38px;height:38px;border-radius:11px;background:#edf8f6;color:#0f766e;display:grid;place-items:center;flex:0 0 38px}.period-icon svg{width:18px;height:18px}.period-select-copy{min-width:0;flex:1}.period-select-copy small{display:block;font-size:8px;color:#83979b;font-weight:900;text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px}.period-select-copy select{width:100%;border:0;outline:0;background:transparent;color:#244b50;font-weight:900;font-size:12px;padding:2px 24px 2px 0}.khs-pdf-btn{min-height:60px;white-space:nowrap}
.khs-pdf-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:900px){.stat-explainer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.khs-selector-row{grid-template-columns:1fr}.khs-pdf-btn{min-height:48px}}
@media(max-width:560px){.stat-explainer-grid{grid-template-columns:1fr}.khs-selector-head{align-items:flex-start;flex-direction:column}.khs-gpa-pill{width:100%}.period-select-wrap{align-items:flex-start}.khs-selector-row{padding:13px 15px 16px}.khs-selector-head{padding:16px 15px 12px}}

/* v12 admin class recap */
.admin-rekap-filter{margin-bottom:16px;padding:12px 14px}.admin-rekap-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.admin-rekap-card{padding:17px;border:1px solid #dceae7;border-radius:18px;background:linear-gradient(180deg,#fff 0%,#f8fcfb 100%);box-shadow:0 12px 28px rgba(10,70,67,.045);transition:.18s}.admin-rekap-card:hover{transform:translateY(-2px);box-shadow:0 16px 34px rgba(10,70,67,.08);border-color:#bedbd5}.admin-rekap-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.admin-rekap-course{display:flex;align-items:center;gap:12px;margin-top:15px}.admin-rekap-icon{width:44px;height:44px;border-radius:13px;background:#eaf8f5;color:#0f766e;display:grid;place-items:center;flex:0 0 44px}.admin-rekap-icon svg{width:19px;height:19px}.admin-rekap-course h3{font-size:16px;margin:0 0 4px;color:#20494e}.admin-rekap-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}.admin-rekap-meta span{padding:9px 10px;border:1px solid #e3eeeb;background:#fff;border-radius:11px;font-size:9px;color:#5f777b}.admin-rekap-meta b{display:block;text-transform:uppercase;font-size:7px;letter-spacing:.08em;color:#82979a;margin-bottom:4px}.admin-rekap-detail-toolbar{margin:12px 0 15px;flex-wrap:wrap}.admin-rekap-detail-toolbar .btn{margin-left:0}@media(max-width:1050px){.admin-rekap-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.admin-rekap-grid{grid-template-columns:1fr}.admin-rekap-meta{grid-template-columns:1fr}.admin-rekap-filter .master-search{margin-left:0!important;min-width:0!important;width:100%}}


/* v13: statistik admin ringkas dalam satu kartu */
.admin-stat-single-col .stat { min-height: 150px; }
.admin-stat-single-col .stat-label { font-size: 13px; font-weight: 700; margin-top: 10px; }
.admin-stat-single-col .stat-value { font-size: 34px; line-height: 1.05; margin-top: 4px; }
.admin-stat-single-col .stat-note { font-size: 12px; line-height: 1.45; color: var(--muted, #667085); margin-top: 7px; max-width: 320px; }
.stat-summary-note { margin-top: 16px; }
.stat-period-line { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-top:5px; }

/* v14: statistik admin selalu menampilkan keterangan dengan jelas */
.stat{display:flex;gap:14px;align-items:flex-start;min-height:150px}.stat-content{min-width:0;flex:1}.stat-label{display:block!important;visibility:visible!important}.stat-value{display:block!important;visibility:visible!important}.stat-note{display:block!important;visibility:visible!important;font-size:12px!important;line-height:1.5!important;color:#667a7f!important;margin-top:7px!important;opacity:1!important}.admin-stat-single-col .stat{min-height:154px}.admin-stat-single-col .stat-note{max-width:none}

/* v15: harden Admin statistic labels, numbers and explanations */
.admin-stat-grid-fixed{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:16px!important}
.admin-stat-card{background:#fff!important;color:#17373d!important;overflow:hidden!important}
.admin-stat-card .admin-stat-icon{width:38px!important;height:38px!important;min-width:38px!important;flex:0 0 38px!important;border-radius:12px!important;background:#edf8f6!important;color:#0f766e!important;place-items:center!important}
.admin-stat-card .admin-stat-content{display:block!important;visibility:visible!important;opacity:1!important;min-width:0!important;flex:1!important}
.admin-stat-card .admin-stat-label{display:block!important;visibility:visible!important;opacity:1!important;color:#35565c!important;font-size:13px!important;font-weight:900!important;line-height:1.35!important}
.admin-stat-card .admin-stat-value{display:block!important;visibility:visible!important;opacity:1!important;color:#17373d!important;font-size:34px!important;font-weight:900!important;line-height:1.05!important;margin-top:5px!important}
.admin-stat-card .admin-stat-note{display:block!important;visibility:visible!important;opacity:1!important;color:#667f84!important;font-size:12px!important;line-height:1.5!important;margin-top:8px!important}
.admin-stat-grid-fixed .stat{min-height:154px!important}
@media(max-width:1080px){.admin-stat-grid-fixed{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:560px){.admin-stat-grid-fixed{grid-template-columns:1fr!important}}

/* v17: robust admin statistics + button attendance */
.admin-stat-grid-v17{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:16px!important;margin:0!important}
.admin-stat-card-v17{position:relative!important;display:flex!important;align-items:flex-start!important;gap:14px!important;min-height:150px!important;padding:20px!important;background:#fff!important;color:#17373d!important;border:1px solid #dfecea!important;border-radius:20px!important;box-shadow:0 12px 30px rgba(12,65,61,.055)!important;overflow:hidden!important}
.admin-stat-card-v17:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#0f766e}
.admin-stat-icon-v17{width:42px!important;height:42px!important;min-width:42px!important;border-radius:13px!important;display:grid!important;place-items:center!important;background:#edf8f6!important;color:#0f766e!important}
.admin-stat-icon-v17 svg{width:19px!important;height:19px!important;fill:none!important;stroke:currentColor!important;stroke-width:1.8!important}
.admin-stat-body-v17{display:block!important;visibility:visible!important;opacity:1!important;min-width:0!important;flex:1!important}
.admin-stat-title-v17,.admin-stat-number-v17,.admin-stat-note-v17{display:block!important;visibility:visible!important;opacity:1!important}
.admin-stat-title-v17{margin:0!important;color:#3e5f64!important;font-size:13px!important;font-weight:900!important}
.admin-stat-number-v17{margin:6px 0 0!important;color:#123b40!important;font-size:34px!important;font-weight:900!important;line-height:1!important}
.admin-stat-note-v17{margin:8px 0 0!important;color:#6a8085!important;font-size:11px!important;font-weight:600!important;line-height:1.5!important}
.attendance-status-picker-v17{display:flex!important;gap:6px!important;flex-wrap:wrap!important}
.attendance-status-btn-v17{height:36px!important;min-width:72px!important;padding:7px 11px!important;border:1px solid #d5e4e0!important;border-radius:10px!important;background:#fff!important;color:#4d666b!important;font-size:11px!important;font-weight:900!important;cursor:pointer!important;box-sizing:border-box!important;transition:.15s!important}
.attendance-status-btn-v17:hover{border-color:#9bcfc5!important;background:#f5fbf9!important;transform:translateY(-1px)!important}
.attendance-status-btn-v17.active{background:#0f766e!important;border-color:#0f766e!important;color:#fff!important}
.attendance-status-btn-v17[data-status="I"].active{background:#c88616!important;border-color:#c88616!important}
.attendance-status-btn-v17[data-status="S"].active{background:#4076b6!important;border-color:#4076b6!important}
.attendance-status-btn-v17[data-status="A"].active{background:#b23a3a!important;border-color:#b23a3a!important}
@media(max-width:900px){.admin-stat-grid-v17{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:560px){.admin-stat-grid-v17{grid-template-columns:1fr!important}.attendance-status-btn-v17{min-width:64px!important}}

/* v18: required attendance fields */
.presensi-setup-empty{display:grid;justify-items:center;text-align:center;gap:8px;padding:42px 20px;border:1px dashed #c9dfda;border-radius:16px;background:#f7fcfb;color:#587176;margin-top:14px}
.presensi-setup-empty b{color:#24464b;font-size:13px}
.presensi-setup-empty span{font-size:11px;max-width:520px;line-height:1.6}
.compact-field{min-width:190px;margin:0}
.form-label .field-help{display:block;margin-top:4px;color:#7a9194;font-size:10px;line-height:1.35}
.warning-note{background:#fff8e8;border-color:#efdfb3;color:#735b24}
#savePresensi:disabled{opacity:.48!important;cursor:not-allowed!important;transform:none!important;box-shadow:none!important}
.attendance-status-picker-v17{min-width:290px}
@media(max-width:700px){.attendance-status-picker-v17{min-width:0}.compact-field{min-width:0}}

/* V19 - Statistik Persentase Kehadiran */
.attendance-stat-grid{margin-top:16px!important}.attendance-stat-grid .stat{min-height:132px!important}.attendance-scope-card{margin-top:16px!important}.attendance-scope-tabs{display:flex!important;gap:8px!important;flex-wrap:wrap!important}.attendance-scope-btn{appearance:none!important;border:1px solid #d8e8e4!important;background:#fff!important;color:#476168!important;border-radius:12px!important;padding:10px 15px!important;font-size:11px!important;font-weight:900!important;cursor:pointer!important;transition:.16s!important}.attendance-scope-btn:hover{border-color:#9fc9c1!important;transform:translateY(-1px)!important}.attendance-scope-btn.active{background:#0f766e!important;border-color:#0f766e!important;color:#fff!important;box-shadow:0 8px 18px rgba(15,118,110,.18)!important}.attendance-overview{padding:26px!important;border:1px solid #dcebe7!important;border-radius:18px!important;background:linear-gradient(180deg,#fbfffe,#f2faf8)!important;text-align:center!important}.attendance-main-percent{font-size:56px!important;font-weight:900!important;line-height:1!important;color:#0f766e!important;letter-spacing:-.04em!important}.attendance-main-label{font-size:12px!important;font-weight:900!important;color:#405d62!important;margin-top:8px!important}.attendance-overview .muted{margin:11px auto 0!important;max-width:760px!important;line-height:1.6!important}.attendance-progress{height:7px!important;border-radius:999px!important;background:#e8f0ee!important;overflow:hidden!important;margin-top:8px!important;min-width:88px!important}.attendance-progress span{display:block!important;height:100%!important;border-radius:999px!important;background:#0f766e!important}.attendance-stats-table td:last-child{min-width:128px!important}.table-sub{display:block!important;font-size:10px!important;color:#7b9094!important;margin-top:3px!important}@media(max-width:820px){.attendance-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}@media(max-width:560px){.attendance-stat-grid{grid-template-columns:1fr!important}.attendance-main-percent{font-size:46px!important}.attendance-scope-btn{flex:1 1 calc(50% - 8px)!important}}

/* v34 direct Excel button */
.excel-schedule-action{background:#eaf7f1!important;color:#156a4e!important;border-color:#9fd2bb!important;text-decoration:none!important;}
.excel-schedule-action:hover{background:#dff3e9!important;border-color:#77bd9c!important;}
