@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');
:root{--ink:#18304b;--muted:#7c8ba0;--surface:#fff;--bg:#f4f7fb;--navy:#13243c;--blue:#345bd6;--line:#e8edf4;--mint:#e3f6ef;--shadow:0 10px 38px rgba(26,48,80,.045)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.6 'DM Sans',Arial,sans-serif}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:'Plus Jakarta Sans',Arial,sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:#365bd2;text-decoration:none}a:hover{text-decoration:underline}.app-shell{min-height:100vh;display:flex}.sidebar{width:245px;background:var(--navy);color:#fff;flex:0 0 245px;min-height:100vh;padding:30px 15px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;padding:0 10px 38px}.brand-icon{background:linear-gradient(145deg,#7d9bff,#4763cb);color:white;border-radius:13px;display:grid;place-items:center;font-size:25px;width:42px;height:42px;box-shadow:0 5px 16px #314cb266}.brand b{font:800 17px 'Plus Jakarta Sans',sans-serif;letter-spacing:-.6px}.brand em{font-style:normal;color:#9eb8ff}.brand small{display:block;color:#92a5c3;font-size:10px;letter-spacing:.6px}.side-label{font-size:10px;letter-spacing:2px;color:#8297b4;margin:0 14px 12px;font-weight:700}.sidebar nav{display:grid;gap:5px}.nav-link{color:#a9b8cb;padding:11px 13px;border-radius:10px;display:flex;gap:12px;align-items:center;font-weight:600;font-size:13px}.nav-link span{font-size:19px;width:22px;text-align:center}.nav-link:hover,.nav-link.active{color:#fff;text-decoration:none;background:#294367}.nav-link.active{box-shadow:inset 3px 0 #a1b8ff}.side-bottom{margin-top:auto;border-top:1px solid #31445e;padding:20px 12px 0;color:#c1ccdd;font-size:12px}.side-bottom small{color:#899db8}.online-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#61d0a2;margin-right:6px}.main{min-width:0;flex:1}.topbar{height:71px;background:white;display:flex;justify-content:space-between;align-items:center;padding:0 37px;border-bottom:1px solid var(--line)}.crumb{font-weight:700;font-size:10px;letter-spacing:1.4px;color:#7b8ba1}.crumb span{margin:0 8px;color:#c4cfde}.top-right{display:flex;align-items:center;gap:19px}.mini-school{font-size:10px;letter-spacing:1px;color:#71809a;font-weight:700}.logout{background:transparent;border:0;color:#475a76;font-weight:700}.content{max-width:1650px;margin:auto;padding:31px 35px 22px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 26px}.eyebrow{color:#5674b4;font-size:10px;font-weight:800;letter-spacing:1.4px}.line{display:inline-block;background:#b8c8e6;height:1px;width:23px;vertical-align:middle;margin:0 6px}.page-heading h1{font-size:27px;letter-spacing:-1px;margin:4px 0}.page-heading p{color:var(--muted);font-size:12px}.heading-actions{display:flex;gap:9px;flex-wrap:wrap}.btn{border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:9px;font-size:12px;font-weight:800;min-height:37px;padding:9px 15px;white-space:nowrap;text-decoration:none;transition:transform .15s,background .15s}.btn:hover{transform:translateY(-1px);text-decoration:none}.btn.primary{background:#3c5dd1;color:white;box-shadow:0 4px 11px #345bd522}.btn.outline{border-color:#dfe6f0;background:white;color:#456085}.btn.danger{background:#fff1ef;color:#bb4d43;border-color:#f8d8d3}.btn.small{padding:6px 10px;min-height:29px;font-size:11px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}.stat-card,.panel,.paper{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:13px}.stat-card{padding:19px 20px;position:relative;overflow:hidden}.stat-card:after{content:'';position:absolute;right:-13px;top:-18px;width:70px;height:70px;border-radius:50%;background:#f0f4ff}.stat-card span{font-size:11px;color:#788aa3;font-weight:700}.stat-card strong{display:block;font:800 29px 'Plus Jakarta Sans',sans-serif;margin:6px 0 0;color:#264270}.stat-card small{font-size:10px;color:#9aa7b8}.panel{padding:22px;margin:0 0 17px}.panel-header{display:flex;justify-content:space-between;align-items:start;gap:20px;margin:0 0 19px}.panel-header h2{font-size:15px;letter-spacing:-.4px}.panel-header p{color:#8191a5;font-size:11px;margin:4px 0 0}.pill{background:#eaf0ff;color:#4863ad;font-size:10px;font-weight:800;letter-spacing:.8px;padding:5px 11px;border-radius:20px;white-space:nowrap}.filter-row{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.filter-row label{min-width:255px}.toggle-bar{border-top:1px dashed #e2e8f1;margin-top:19px;padding-top:14px;display:flex;gap:10px 18px;flex-wrap:wrap;align-items:center}.toggle-bar>span{font-size:11px;font-weight:800;margin-right:8px;color:#6f819b}.toggle{font-size:11px;color:#50617b;display:inline-flex;align-items:center;gap:5px;cursor:pointer}.toggle input{accent-color:#3f62cf;width:14px;height:14px}label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:800;color:#667994}input:not([type=checkbox]):not([type=hidden]),select,textarea{width:100%;min-height:40px;border:1px solid #dce4ee;border-radius:8px;background:#fff;color:#263b54;padding:9px 11px;outline:none;max-width:100%}input:focus,select:focus,textarea:focus{border-color:#5c7be0;box-shadow:0 0 0 3px #dbe5ff}textarea{resize:vertical}.paper{padding:24px 24px 22px;margin:0 0 17px}.paper-masthead{display:flex;align-items:center;justify-content:center;text-align:center;gap:18px;border-bottom:2px solid #294260;padding-bottom:14px}.school-logo{width:65px;height:65px;object-fit:contain}.masthead-overline{font-size:10px;font-weight:700;letter-spacing:.4px}.paper-masthead h2{font-size:17px;letter-spacing:.1px;margin:3px}.masthead-caption{font-size:9px;color:#72839b;letter-spacing:.4px}.paper-title{text-align:center;padding:17px 0 23px}.paper-title>span,.overline{font-size:9px;font-weight:800;letter-spacing:1.6px;color:#4c68ad}.paper-title h2{font-size:16px;letter-spacing:.1px;margin-top:5px}.paper-title p{font-size:12px;letter-spacing:.7px;font-weight:800}.sheet-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:10px}.sheet-heading h3{font-size:16px;margin-top:2px}.sheet-meta{font-size:10px;color:#8c9cb1;font-weight:800;letter-spacing:1px}.table-scroll{overflow:auto;width:100%}.schedule-table,.data-table{width:100%;border-collapse:separate;border-spacing:0;min-width:560px}.schedule-table{border:1px solid #dfe7ef;font-size:11px}.schedule-table th{background:#edf3ff;color:#42628e;font-weight:800;font-size:10px;letter-spacing:.4px}.schedule-table td,.schedule-table th{border-right:1px solid #e5ebf2;border-bottom:1px solid #e9eef5;padding:9px 10px;text-align:center;vertical-align:middle}.schedule-table tr>:last-child{border-right:none}.schedule-table tbody tr:last-child>:last-child{border-bottom:none}.schedule-table tbody tr:nth-child(even){background:#fafcff}.schedule-table tbody tr:hover{background:#f0f5ff}.schedule-table .number{width:40px;color:#8898ac}.schedule-table .teacher-name{text-align:left;min-width:190px;font-weight:700;color:#2b405e}.schedule-table th.teacher-name{color:#42628e}.session-head{min-width:98px}.session-head span,.session-head small,.room-table th small,.overview-table th small{display:block}.session-head small,.room-table th small,.overview-table th small{font-size:9px;color:#7e91b3;font-weight:500;letter-spacing:0}.assignment-cell strong{font-size:12px;color:#284b86}.code-chip{display:inline-block;border-radius:5px;padding:2px 7px;background:#eaf1ff;color:#3a61a7;font-size:10px;font-weight:800}.dash{color:#bbc6d2}.swap-marker{display:block;font-size:10px;color:#aa6c1e;font-weight:800}.status{display:inline-block;border-radius:99px;white-space:nowrap;padding:3px 9px;font-size:10px;font-weight:800}.status.hadir{background:#dff7e9;color:#178350}.status.tidak_hadir{background:#fde8e8;color:#ba4850}.status.izin{background:#fff0d3;color:#97620e}.status.none{background:#eef1f6;color:#8390a3}.sheet-note{font-size:10px;color:#8697aa;margin-top:12px}.room-table{min-width:420px}.room-table th:first-child{text-align:left}.room-table td{min-width:95px}.overview-table{width:max-content;min-width:100%}.overview-table th,.overview-table td{min-width:65px}.overview-table .teacher-name{min-width:220px;position:sticky;left:0;background:#fff;z-index:1}.overview-table thead .teacher-name{background:#edf3ff}.empty-state{padding:38px 14px;text-align:center;color:#8493a5;border:1px dashed #dce5f1;border-radius:10px}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:16px}.form-grid .full{grid-column:1/-1}.form-grid>.btn{justify-self:start}.inline-check{flex-direction:row;align-items:center}.item-list{display:grid;gap:9px;margin-top:22px;max-height:430px;overflow:auto}.list-item{border:1px solid #e6edf4;border-radius:9px;padding:10px 12px;display:flex;justify-content:space-between;gap:8px;align-items:center}.list-item strong{font-size:12px;display:block}.list-item small{display:block;color:#8797aa;font-size:10px}.list-actions{display:flex;gap:6px}.room-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:23px}.room-chip{background:#f6f9fe;border:1px solid #e5ebf6;border-radius:8px;padding:7px 8px;display:flex;align-items:center;gap:9px}.room-chip b{color:#35588c;font-size:12px}.room-chip small{font-size:9px;color:#8b9aac;display:block}.room-chip button{background:none;border:0;color:#607caa;font-size:11px;padding:4px}.room-chip .chip-delete{color:#cf6565;font-size:18px}.accent-panel{background:#f8faff;border-color:#dce7ff}.assign-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.assign-grid .btn{grid-column:1/-1}.data-table{font-size:11px}.data-table th{background:#f4f7fc;color:#7b8ba0;font-size:10px;letter-spacing:1px;font-weight:800;white-space:nowrap;text-align:left}.data-table td,.data-table th{border-bottom:1px solid #edf1f6;padding:12px 13px;vertical-align:middle}.data-table tbody tr:hover{background:#fafcff}.data-table td form{display:inline}.mode-tabs{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:18px}.mode{background:#f4f7fc;color:#637899;border:1px solid #e7edf6;border-radius:8px;padding:8px 13px;font-size:12px;font-weight:700}.mode.active{background:#3a5ccf;border-color:#3a5ccf;color:#fff}.hidden{display:none!important}.audit-detail{max-width:550px;overflow:auto}.audit-detail pre{font-size:10px;background:#f6f8fc;padding:8px;border-radius:6px;white-space:pre-wrap;overflow-wrap:anywhere}.alert{padding:12px 15px;border-radius:9px;margin-bottom:17px;font-size:12px;font-weight:700;overflow-wrap:anywhere}.alert.ok{background:#e7f8ee;color:#218052}.alert.error{background:#fff0ee;color:#b14e44}.footer{display:flex;justify-content:space-between;color:#99a5b6;padding:15px 2px;font-size:10px}.login-page{display:grid;place-items:center;min-height:100vh}.login-card{width:min(400px,calc(100% - 30px));padding:38px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;display:grid;gap:20px}.login-card .brand-icon{width:50px;height:50px}.login-card h1{font-size:22px}.login-card p{color:var(--muted);font-size:12px;margin-top:-16px}.login-card .btn{width:100%}
@media(max-width:1180px){.sidebar{width:205px;flex-basis:205px}.content{padding:24px 20px}.stat-grid{grid-template-columns:repeat(2,1fr)}.two-column{grid-template-columns:1fr}.assign-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:740px){.app-shell{display:block}.sidebar{height:auto;min-height:0;width:auto;position:static;padding:12px}.brand{padding:0 0 11px}.sidebar nav{display:flex;overflow:auto;gap:5px}.nav-link{flex:0 0 auto;font-size:11px;padding:7px 9px}.side-label,.side-bottom{display:none}.topbar{height:auto;padding:12px 14px}.mini-school{display:none}.content{padding:18px 12px}.page-heading{align-items:start;display:block}.page-heading h1{font-size:23px}.heading-actions{margin-top:15px}.stat-grid{gap:8px}.stat-card{padding:14px}.panel,.paper{padding:14px}.form-grid,.assign-grid{grid-template-columns:1fr}.filter-row label{min-width:100%;width:100%}.paper-title h2{font-size:12px}.masthead-overline{font-size:8px}.paper-masthead h2{font-size:12px}.school-logo{width:45px;height:45px}.sheet-heading h3{font-size:13px}.footer{display:block}}
@page{size:A4 landscape;margin:10mm}@media print{*{-webkit-print-color-adjust:exact;print-color-adjust:exact}body{background:#fff;font-size:10px}.app-shell{display:block;min-height:0}.main{width:100%}.no-print,.sidebar,.topbar,.page-heading,.stat-grid,.toggle-bar,.filter-row,.footer,.btn{display:none!important}.content{padding:0;max-width:none}.paper,.panel{padding:7px 0;margin:0 0 10px;box-shadow:none;border:0;border-radius:0;break-inside:auto}.paper-title{padding:9px 0}.paper-title h2{font-size:13px}.paper-masthead{padding-bottom:8px}.sheet-heading{margin:4px 0}.table-scroll{overflow:visible}.schedule-table{font-size:9px;min-width:0;width:100%;border-color:#556070}.schedule-table th,.schedule-table td{padding:4px 5px;border-color:#8a97a5}.schedule-table th{background:#e9eef5!important}.schedule-table .teacher-name{min-width:120px}.schedule-table .session-head{min-width:0}.room-table td{min-width:0}.overview-table{width:100%}.overview-table .teacher-name{position:static;min-width:120px}.status{font-size:8px;padding:1px 4px}.panel-header{margin:6px 0}.panel-header p{display:none}.pill{display:none}.sheet-note{font-size:8px}.data-table td,.data-table th{padding:5px}.data-table{min-width:0}tr{break-inside:avoid}a{color:#123}}

/* Kontrol publikasi dua halaman */
.publish-panel{border:1px solid #cfdef8;background:linear-gradient(140deg,#fff 70%,#f3f7ff)}.publish-days{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:9px;margin:12px 0 19px}.publish-day{display:flex;flex-direction:row;align-items:center;gap:12px;border:1px solid #e2e9f3;border-radius:10px;padding:12px;background:#fff;cursor:pointer}.publish-day input{accent-color:#3f62cf;width:18px;height:18px;flex-shrink:0}.publish-day span{flex:1;min-width:0}.publish-day strong{display:block;font-size:12px;color:#2c4369}.publish-day small{display:block;font-size:10px;color:#8b9bad;margin-top:3px}.publish-day em{font-size:9px;color:#23649c;font-style:normal;letter-spacing:.4px}.publish-panel .panel-header p{max-width:850px;font-size:12px;line-height:1.7}.publish-panel .panel-header a{color:#315bb1}
