:root{--blue:#0b5cab;--blue-dark:#084a89;--teal:#0f8b8d;--green:#18864b;--red:#c83f49;--amber:#a86b12;--ink:#17324d;--muted:#65798d;--line:#dbe5ee;--bg:#f4f7fb;--card:#fff;--shadow:0 12px 34px rgba(20,50,80,.08);--radius:18px;--header-h:76px;--bottom-h:72px}
*{box-sizing:border-box}html{font-size:16px;scroll-padding-top:calc(var(--header-h) + 18px)}body{margin:0;background:var(--bg);color:var(--ink);font-family:Poppins,Inter,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}body.modal-open{overflow:hidden}a{color:inherit}button,input,select,textarea{font:inherit}.topbar{position:fixed;inset:0 0 auto;z-index:80;height:var(--header-h);background:rgba(255,255,255,.97);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.topbar-inner{height:100%;width:min(100%,1700px);margin:auto;padding:0 22px;display:flex;align-items:center;gap:20px}.brand{display:flex;gap:11px;align-items:center;text-decoration:none;min-width:max-content}.brand-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,var(--blue),var(--teal));color:#fff;font-weight:850;letter-spacing:-.03em;box-shadow:0 8px 18px rgba(11,92,171,.2)}.brand-copy strong,.brand-copy small{display:block}.brand-copy strong{font-size:1rem}.brand-copy small{color:var(--muted);font-size:.75rem;max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.desktop-nav{display:flex;align-items:center;gap:3px;margin-left:auto;overflow-x:auto;scrollbar-width:none}.desktop-nav::-webkit-scrollbar{display:none}.nav-link{display:inline-flex;align-items:center;gap:6px;min-height:42px;padding:9px 11px;border-radius:11px;text-decoration:none;color:#53697d;font-size:.82rem;font-weight:700;white-space:nowrap}.nav-link:hover,.nav-link.active{background:#eaf3ff;color:var(--blue)}.user-menu-button{border:0;background:#f1f5f9;border-radius:13px;min-height:44px;display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;color:var(--ink)}.user-menu-button>span{width:32px;height:32px;border-radius:10px;background:var(--blue);color:#fff;display:grid;place-items:center;font-weight:800}.user-menu-button b{max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem}.app-main,.public-main{width:min(100%,1700px);margin:0 auto;padding:calc(var(--header-h) + 26px) 24px 34px}.public-main{width:min(100%,1450px)}
.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px}.page-head h1{margin:0;font-size:clamp(1.65rem,3vw,2.25rem);line-height:1.2;letter-spacing:-.025em}.page-head h2{margin:0}.page-head p{margin:.4rem 0 0;color:var(--muted)}.page-actions,.button-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;min-width:0}.card h2,.card h3{margin-top:0}.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi{display:flex;align-items:center;justify-content:space-between;min-height:132px}.kpi .value{font-size:2.2rem;font-weight:850;line-height:1}.kpi .label{font-weight:750;margin-top:8px}.kpi small{color:var(--muted)}.kpi-icon{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;background:#edf5ff;font-size:1.5rem}.kpi.green .kpi-icon{background:#e8f7ef}.kpi.red .kpi-icon{background:#fff0f1}.kpi.amber .kpi-icon{background:#fff7e7}.stat-table{width:100%;border-collapse:collapse}.stat-table th,.stat-table td{padding:13px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.stat-table th{font-size:.77rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#f8fafc;position:sticky;top:0;z-index:1}.stat-table td.num,.stat-table th.num{text-align:center;font-variant-numeric:tabular-nums}.stat-table tr:last-child td{border-bottom:0}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;max-width:100%;-webkit-overflow-scrolling:touch}
.btn{appearance:none;border:0;border-radius:12px;min-height:44px;max-width:100%;padding:10px 16px;font:inherit;font-weight:750;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#edf2f7;color:var(--ink);line-height:1.25;text-align:center;transition:transform .15s ease,filter .15s ease,box-shadow .15s ease;touch-action:manipulation}.btn:hover{filter:brightness(.98);box-shadow:0 5px 14px rgba(20,50,80,.08)}.btn:active{transform:translateY(1px)}.btn:focus-visible,.icon-btn:focus-visible,.mobile-nav-link:focus-visible{outline:3px solid rgba(11,92,171,.23);outline-offset:2px}.btn:disabled,.btn[aria-disabled="true"]{opacity:.56;cursor:not-allowed;transform:none}.btn-primary{background:var(--blue);color:#fff}.btn-success{background:var(--green);color:#fff}.btn-danger{background:var(--red);color:#fff}.btn-outline{background:#fff;border:1px solid var(--line)}.btn-sm{min-height:38px;padding:7px 11px;font-size:.86rem}.btn-block{width:100%}.icon-btn{width:42px;height:42px;border:0;border-radius:12px;background:#eef3f8;color:var(--ink);font-size:1.55rem;cursor:pointer}
label{display:block;font-weight:750;margin-bottom:7px}.field{margin-bottom:16px;min-width:0}.input,select,textarea{width:100%;min-height:46px;border:1px solid #c9d6e2;border-radius:12px;background:#fff;padding:11px 13px;color:var(--ink);outline:none}.input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(11,92,171,.12)}textarea{min-height:96px;resize:vertical}.help{color:var(--muted);font-size:.87rem;margin-top:6px}.form-status{min-height:20px;font-size:.86rem;color:var(--muted);margin-top:8px}.login-shell{min-height:calc(100dvh - var(--header-h));display:grid;place-items:center;padding:24px}.login-card{width:min(100%,470px);background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:0 24px 60px rgba(17,50,80,.13);padding:30px}.login-card h1{margin:0 0 8px}.login-card>p{color:var(--muted);margin-top:0}.login-options{display:grid;gap:12px;margin-top:22px}.login-option{display:flex;gap:14px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:15px;text-decoration:none}.login-option:hover{border-color:var(--blue);background:#f5f9ff}
.toast-region{position:fixed;right:18px;top:calc(var(--header-h) + 14px);z-index:110;width:min(390px,calc(100vw - 28px));display:grid;gap:10px}.toast{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 15px;border:1px solid;border-radius:14px;box-shadow:0 14px 35px rgba(20,50,80,.15);background:#fff;animation:toastIn .22s ease}.toast button{border:0;background:transparent;font-size:1.2rem;cursor:pointer;color:inherit}.toast-success{background:#eaf8f0;color:#176238;border-color:#bfe7ce}.toast-error{background:#fff0f1;color:#9f2430;border-color:#f2c2c7}.toast-info{background:#edf6ff;color:#13578e;border-color:#c8e1f6}@keyframes toastIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:.77rem;font-weight:800}.badge-green{background:#e8f7ef;color:#176238}.badge-red{background:#fff0f1;color:#a32935}.badge-amber{background:#fff6df;color:#8a5b11}.badge-blue{background:#eaf3ff;color:#0b5cab}.badge-gray{background:#eef2f5;color:#5a6977}
.class-card{position:relative}.class-card .class-name{font-size:1.1rem;font-weight:800}.class-card .teacher{color:var(--muted);font-size:.87rem;min-height:42px}.class-card .class-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:15px}.class-card .class-stats div,.class-stats p{background:#f6f9fc;padding:10px;border-radius:12px;text-align:center;margin:0}.class-card .class-stats strong,.class-stats strong{display:block;font-size:1.2rem}.progress{height:9px;background:#e9eef4;border-radius:999px;overflow:hidden;margin-top:14px}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--teal));border-radius:999px}.hero-dashboard{background:linear-gradient(135deg,#0b5cab,#0f8b8d);color:#fff;border-radius:26px;padding:26px;box-shadow:0 20px 45px rgba(11,92,171,.2);margin-bottom:22px}.hero-dashboard h1{margin:0;font-size:clamp(1.8rem,4vw,3rem)}.hero-dashboard p{margin:6px 0 0;color:#e2f2ff}.hero-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}.hero-meta span{background:#ffffff1c;border:1px solid #ffffff35;padding:8px 12px;border-radius:999px}
.scan-shell{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr);gap:20px;align-items:start}.scanner-toolbar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px}.scanner-toolbar .btn-primary{order:-1}.camera-box{background:#071b2d;border-radius:22px;overflow:hidden;min-height:430px;position:relative}.camera-box video{width:100%!important;height:430px!important;object-fit:cover!important}.scan-guide{position:absolute;inset:16%;border:3px solid #fff;border-radius:24px;box-shadow:0 0 0 9999px rgba(0,0,0,.26);z-index:2;pointer-events:none}.scan-status{padding:16px;border-radius:15px;background:#f4f7fb;text-align:center;min-height:60px;display:grid;place-items:center}.scan-status.success{background:#e9f8ef;color:#176238}.scan-status.error{background:#fff0f1;color:#9f2430}.qr-reader{width:100%;min-height:430px;position:relative;z-index:1}.qr-reader canvas{display:none}.qr-reader__scan_region{min-height:430px!important}.camera-placeholder{position:absolute;inset:0;z-index:3;display:grid;place-items:center;text-align:center;padding:28px;color:#dcecff;background:linear-gradient(145deg,#071b2d,#0d3352)}.camera-placeholder[hidden]{display:none}.camera-placeholder strong{font-size:1.1rem;color:#fff}.scanner-file-btn{cursor:pointer}.scanner-help{font-size:.87rem;margin:10px 0 0}.search-results{display:grid;gap:8px}.search-result{width:100%;justify-content:flex-start;text-align:left}.reason-form{display:grid;grid-template-columns:1.2fr 1.2fr auto;gap:10px;align-items:end}.reason-form .field{margin:0}.duty-row{display:grid;grid-template-columns:1.4fr 1fr auto;gap:10px;align-items:end;margin-bottom:10px}.duty-row .field{margin:0}.qr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.qr-card{border:1px dashed #8597a8;border-radius:12px;padding:12px;text-align:center;break-inside:avoid;background:#fff}.qr-card img{width:145px;height:145px}.qr-card strong{display:block;margin-top:5px}.qr-card small{display:block;color:#526778}.install-wrap{max-width:900px;margin:40px auto;padding:20px}.install-steps{display:flex;gap:8px;margin-bottom:20px}.install-steps span{flex:1;padding:10px;border-radius:10px;background:#e9eef4;text-align:center;font-size:.84rem;font-weight:700}.install-steps span.active{background:var(--blue);color:#fff}.credential-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0 20px}.credential-card{border:1px solid #d8e2ef;background:#f8fbff;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:5px}.credential-card span{font-size:13px;color:#64748b;font-weight:700}.credential-card code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;font-weight:800;color:#0b63b6;background:#eaf4ff;border-radius:8px;padding:8px 10px;overflow-wrap:anywhere}
.muted{color:var(--muted)}.text-right{text-align:right}.text-center{text-align:center}.mt-0{margin-top:0}.mt-2{margin-top:16px}.mb-0{margin-bottom:0}.nowrap{white-space:nowrap}.empty{padding:35px;text-align:center;color:var(--muted)}.status-line{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.dot{width:10px;height:10px;border-radius:50%;background:#9aa9b8}.dot.open{background:#22a060;box-shadow:0 0 0 5px #22a06020}.dot.closed{background:#d44752}.info-strip{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1px solid #c9e0f3;border-radius:14px;background:#eef7ff;color:#205b87}.info-strip strong{display:block}.file-drop{border:1px dashed #9bb0c4;border-radius:14px;padding:16px;background:#f8fbfd}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 0;border-bottom:1px solid var(--line)}.toggle-row:last-child{border:0}.switch{position:relative;width:52px;height:30px;flex:none}.switch input{position:absolute;opacity:0}.switch span{position:absolute;inset:0;border-radius:999px;background:#ccd7e1;cursor:pointer;transition:.2s}.switch span:after{content:"";position:absolute;width:24px;height:24px;left:3px;top:3px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #0002;transition:.2s}.switch input:checked+span{background:var(--green)}.switch input:checked+span:after{transform:translateX(22px)}
.modal-backdrop,.sheet-backdrop{position:fixed;inset:0;background:rgba(7,22,36,.5);z-index:130;backdrop-filter:blur(2px)}.app-modal{position:fixed;z-index:140;left:50%;top:50%;transform:translate(-50%,-50%) scale(.96);width:min(92vw,480px);background:#fff;border:1px solid var(--line);border-radius:22px;padding:25px;box-shadow:0 28px 80px rgba(7,22,36,.28);opacity:0;pointer-events:none;transition:.18s}.app-modal.open{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}.modal-icon{width:52px;height:52px;border-radius:16px;background:#eef5ff;color:var(--blue);display:grid;place-items:center;font-size:1.5rem;font-weight:850}.app-modal h2{margin:16px 0 7px}.app-modal p{margin:0;color:var(--muted);line-height:1.65}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.busy-layer{position:fixed;inset:0;z-index:180;background:rgba(244,247,251,.78);display:grid;place-items:center;backdrop-filter:blur(2px)}.busy-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px 26px;box-shadow:0 18px 55px #17324d28;display:grid;justify-items:center;gap:7px}.busy-card small{color:var(--muted)}.spinner{width:32px;height:32px;border:4px solid #d9e7f4;border-top-color:var(--blue);border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.mobile-nav,.app-sheet,.sheet-backdrop{display:none}
@media(max-width:1180px){.nav-link{padding:9px 8px;font-size:.76rem}.user-menu-button b{display:none}.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}.scan-shell{grid-template-columns:1fr}}
@media(max-width:820px){:root{--header-h:66px}.topbar-inner{padding:0 14px}.brand-mark{width:40px;height:40px}.brand-copy small{display:none}.desktop-nav,.user-menu-button{display:none}.app-main{padding:calc(var(--header-h) + 18px) 14px calc(var(--bottom-h) + 24px)}.public-main{padding:calc(var(--header-h) + 18px) 14px 24px}.mobile-nav{position:fixed;z-index:100;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;height:calc(var(--bottom-h) + env(safe-area-inset-bottom));padding:6px 6px env(safe-area-inset-bottom);background:rgba(255,255,255,.98);border-top:1px solid var(--line);box-shadow:0 -8px 25px rgba(20,50,80,.08)}.mobile-nav-link{border:0;background:transparent;text-decoration:none;display:grid;place-items:center;align-content:center;gap:2px;color:#667b8e;border-radius:12px;min-width:0;cursor:pointer;touch-action:manipulation}.mobile-nav-link span{font-size:1.14rem;line-height:1}.mobile-nav-link small{font-size:.68rem;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.mobile-nav-link.active{background:#eaf3ff;color:var(--blue)}.sheet-backdrop{display:block}.app-sheet{display:block;position:fixed;z-index:150;left:0;right:0;bottom:0;background:#fff;border-radius:24px 24px 0 0;padding:8px 16px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -25px 70px rgba(7,22,36,.28);transform:translateY(105%);transition:transform .22s ease;max-height:82dvh;overflow:auto}.app-sheet.open{transform:translateY(0)}.sheet-handle{width:44px;height:5px;border-radius:99px;background:#d6e0e8;margin:2px auto 12px}.sheet-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:12px;border-bottom:1px solid var(--line)}.sheet-head strong,.sheet-head small{display:block}.sheet-head small{color:var(--muted)}.sheet-menu{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding-top:14px}.sheet-menu a{display:flex;align-items:center;gap:10px;padding:14px;border-radius:14px;background:#f5f8fb;text-decoration:none}.sheet-menu a.active{background:#eaf3ff;color:var(--blue)}.page-head{display:block}.page-actions{margin-top:14px}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.reason-form,.duty-row{grid-template-columns:1fr}.camera-box,.camera-box video,.qr-reader,.qr-reader__scan_region{min-height:340px!important}.camera-box video{height:340px!important}.qr-grid{grid-template-columns:1fr}.login-card{padding:24px}.hero-dashboard{padding:22px}.stat-table th,.stat-table td{padding:11px 9px}.toast-region{top:calc(var(--header-h) + 10px);right:14px}.modal-actions{display:grid;grid-template-columns:1fr 1fr}.scanner-toolbar{display:grid;grid-template-columns:1fr 1fr}.scanner-toolbar .btn-primary{grid-column:1/-1}.button-row>.btn,.page-actions>.btn,.page-actions>form{flex:1 1 160px}.page-actions>form>.btn{width:100%}}
@media(max-width:520px){.card{padding:17px;border-radius:16px}.scanner-toolbar{grid-template-columns:1fr}.scanner-toolbar .btn-primary{grid-column:auto}.camera-box,.camera-box video,.qr-reader,.qr-reader__scan_region{min-height:300px!important}.camera-box video{height:300px!important}.credential-grid{grid-template-columns:1fr}.install-steps{display:grid}.modal-actions{grid-template-columns:1fr}.modal-actions .btn-primary{order:-1}.btn{width:100%}.mobile-nav-link{width:auto}.sheet-menu a{min-width:0}.table-wrap .btn{width:auto;min-width:72px}.login-card .btn{margin-top:8px}}
@media print{.topbar,.mobile-nav,.page-actions,.no-print,.toast-region,.app-sheet,.sheet-backdrop{display:none!important}.app-main,.public-main{margin:0;padding:0;width:auto}.card{box-shadow:none;border:0}.qr-grid{grid-template-columns:repeat(3,1fr)}body{background:#fff}}
.alert{padding:13px 16px;border-radius:13px;margin-bottom:18px;border:1px solid}.alert-success{background:#eaf8f0;color:#176238;border-color:#bfe7ce}.alert-error{background:#fff0f1;color:#9f2430;border-color:#f2c2c7}.alert-info{background:#edf6ff;color:#13578e;border-color:#c8e1f6}

/* Penstabilan responsif v1.2.0 */
[hidden]{display:none!important}
img,svg,video,canvas{max-width:100%}
.align-end{align-self:end}
.button-row form,.page-actions form{margin:0}
.table-actions{justify-content:flex-end;flex-wrap:nowrap}
.user-summary{cursor:default}
@media(max-width:820px){.mobile-nav{grid-template-columns:repeat(var(--mobile-items,5),minmax(0,1fr))}}
@media(max-width:520px){.align-end{align-self:stretch}.button-row{display:grid;grid-template-columns:1fr}.button-row form,.button-row form .btn{width:100%}.table-actions{display:flex;flex-wrap:nowrap}.table-actions form,.table-actions form .btn{width:auto}}
.alert-warning{background:#fff7e7;color:#825a00;border-color:#f1d998}
.input.field-invalid,select.field-invalid,textarea.field-invalid{border-color:#d44752!important;box-shadow:0 0 0 3px rgba(212,71,82,.13)!important}
input[type="file"]{max-width:100%;overflow:hidden}
@media(max-width:520px){.page-actions{display:grid;grid-template-columns:1fr;width:100%}.page-actions>form,.page-actions>.btn{width:100%}.stat-table{min-width:680px}.login-option{min-width:0}.login-option span:last-child{min-width:0}.brand-copy strong{font-size:.94rem}}

.text-link{color:var(--blue);font-weight:750;text-underline-offset:3px}.text-link:hover{text-decoration-thickness:2px}

/* SmartKehadiran v1.3.0: license and central control */
.license-banner{width:min(100%,1700px);margin:0 auto 16px;padding:14px 16px;border:1px solid;border-radius:16px;display:flex;align-items:center;justify-content:space-between;gap:14px}.license-banner>div{min-width:0}.license-banner strong,.license-banner span{display:block}.license-banner span{margin-top:3px;font-size:.9rem;line-height:1.55}.license-banner-warning{background:#fff8e6;border-color:#efd59a;color:#744b08}.license-banner-danger{background:#fff0f1;border-color:#efbbc1;color:#92232d}.license-banner .btn{flex:0 0 auto;background:#fff}.small-value{font-size:1rem!important;line-height:1.35;overflow-wrap:anywhere}.detail-list{margin:0;display:grid;gap:0}.detail-list>div{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(0,1.3fr);gap:16px;padding:13px 0;border-bottom:1px solid var(--line)}.detail-list>div:last-child{border-bottom:0}.detail-list dt{font-size:.84rem;font-weight:750;color:var(--muted)}.detail-list dd{margin:0;font-weight:750;overflow-wrap:anywhere}.detail-list code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem}.license-policy{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.license-policy h3{margin:0 0 7px}.license-policy p{margin:0;color:var(--muted);line-height:1.65}.license-token-card{border-color:#efd59a;background:#fffdf5}.license-token{display:block;padding:15px;border-radius:12px;background:#12293d;color:#fff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:800;font-size:clamp(.85rem,2vw,1.1rem);overflow-wrap:anywhere;letter-spacing:.04em}.search-bar{display:flex;gap:10px;align-items:center}.search-bar .input{flex:1}.table-sub{display:block;margin-top:4px;color:var(--muted);font-size:.76rem}.button-stack{display:grid;gap:12px}.button-stack form{display:grid;gap:8px}.soft-separator{border:0;border-top:1px solid var(--line);margin:20px 0}.info-strip.success{background:#eaf8f0;border-color:#bfe7ce;color:#176238}.info-strip.danger{background:#fff0f1;border-color:#f2c2c7;color:#9f2430}.central-screen .app-main{max-width:1700px}.central-screen .stat-table td{vertical-align:middle}.align-end{align-self:end}.license-status-inline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media(max-width:820px){.license-banner{margin:0 0 14px;align-items:flex-start}.license-banner .btn{width:auto}.detail-list>div{grid-template-columns:1fr;gap:4px}.search-bar{display:grid;grid-template-columns:1fr 1fr}.search-bar .input{grid-column:1/-1}.central-screen .stat-table{min-width:980px}}
@media(max-width:520px){.license-banner{display:grid}.license-banner .btn{width:100%}.search-bar{grid-template-columns:1fr}.search-bar .input{grid-column:auto}.license-token{font-size:.78rem}.detail-list dd{font-size:.92rem}}
@media(max-width:820px){.mobile-nav{grid-template-columns:repeat(var(--mobile-items,5),minmax(0,1fr))}}

/* SmartKehadiran v1.4.0: landing page pusat dan satu login sekolah */
.btn-lg{min-height:52px;padding:14px 22px;font-size:1rem}.btn-light{background:#fff;color:#0b5cab;border-color:#fff}.btn-light:hover{background:#f4f8fc}.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:.78rem;font-weight:850;letter-spacing:.09em;text-transform:uppercase;color:#0b5cab}.marketing-screen{background:#fff;color:#17324d}.marketing-header{position:fixed;z-index:110;left:0;right:0;top:0;height:74px;background:rgba(255,255,255,.96);border-bottom:1px solid #e2e9f0;backdrop-filter:blur(14px)}.marketing-header-inner{width:min(1180px,calc(100% - 32px));height:100%;margin:auto;display:flex;align-items:center;gap:24px}.marketing-nav{display:flex;align-items:center;justify-content:center;gap:28px;margin-left:auto}.marketing-nav a{color:#425d74;text-decoration:none;font-weight:750;font-size:.9rem}.marketing-nav a:hover{color:#0b5cab}.marketing-cta{margin-left:10px}.marketing-shell{width:min(1180px,calc(100% - 32px));margin-inline:auto}.marketing-hero{padding:142px 0 88px;background:radial-gradient(circle at 82% 20%,rgba(38,145,232,.16),transparent 34%),linear-gradient(180deg,#f5faff 0,#fff 100%)}.marketing-hero-grid{display:grid;grid-template-columns:minmax(0,1.04fr) minmax(420px,.96fr);gap:64px;align-items:center}.marketing-hero-copy h1{margin:17px 0 18px;font-size:clamp(2.45rem,5.4vw,4.7rem);line-height:1.03;letter-spacing:-.05em;max-width:760px}.marketing-hero-copy>p{margin:0;color:#5f768a;font-size:1.08rem;line-height:1.75;max-width:690px}.marketing-hero-copy .button-row{margin-top:30px}.trust-row{display:flex;flex-wrap:wrap;gap:12px 22px;margin-top:24px;color:#426177;font-size:.88rem;font-weight:750}.marketing-preview{border:1px solid #dbe6ef;background:#fff;border-radius:28px;box-shadow:0 30px 80px rgba(20,71,111,.18);overflow:hidden;transform:rotate(1deg)}.preview-top{height:52px;background:#112c44;display:flex;align-items:center;gap:7px;padding:0 18px;color:#fff}.preview-top span{width:9px;height:9px;border-radius:50%;background:#6f8798}.preview-top b{margin-left:8px;font-size:.82rem}.preview-body{padding:24px}.preview-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.preview-kpis>div{padding:15px;border-radius:16px;background:#f3f7fb}.preview-kpis small,.preview-kpis strong{display:block}.preview-kpis small{color:#718699;font-size:.72rem}.preview-kpis strong{font-size:1.65rem;margin-top:4px}.preview-scan{display:flex;align-items:center;gap:14px;margin-top:16px;padding:18px;border:1px solid #dbe7ef;border-radius:18px}.preview-camera{width:54px;height:54px;border-radius:16px;background:#0b5cab;color:#fff;display:grid;place-items:center;font-size:1.55rem}.preview-scan strong,.preview-scan small{display:block}.preview-scan small{color:#708497;margin-top:4px}.preview-bars{display:grid;gap:10px;margin-top:20px}.preview-bars span{height:10px;border-radius:99px;background:linear-gradient(90deg,#0b5cab var(--w),#eaf0f5 var(--w))}.marketing-section{padding:92px 0}.marketing-soft{background:#f5f8fb}.section-heading{max-width:750px;margin-bottom:38px}.section-heading h2{margin:12px 0 12px;font-size:clamp(2rem,4vw,3.2rem);line-height:1.12;letter-spacing:-.035em}.section-heading p{margin:0;color:#647a8d;line-height:1.7}.feature-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.feature-card{padding:24px;border:1px solid #e0e8ef;border-radius:22px;background:#fff;box-shadow:0 14px 36px rgba(28,65,95,.06)}.feature-card>span{width:48px;height:48px;border-radius:15px;background:#eaf3ff;color:#0b5cab;display:grid;place-items:center;font-size:1.25rem}.feature-card h3{margin:18px 0 8px}.feature-card p{margin:0;color:#667d90;line-height:1.65}.steps-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.steps-grid article{padding:24px;border-left:3px solid #0b5cab;background:#fff;border-radius:0 18px 18px 0}.steps-grid b{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#0b5cab;color:#fff}.steps-grid h3{margin:17px 0 8px}.steps-grid p{margin:0;color:#667d90;line-height:1.6}.pricing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;max-width:980px}.price-card{position:relative;padding:32px;border:1px solid #dfe8ef;border-radius:26px;background:#fff;box-shadow:0 18px 48px rgba(27,66,96,.08)}.price-card.featured{border:2px solid #0b5cab}.popular-label{position:absolute;right:24px;top:0;transform:translateY(-50%);background:#0b5cab;color:#fff;padding:7px 12px;border-radius:99px;font-size:.72rem;font-weight:850}.price-card h3{font-size:1.5rem;margin:0 0 8px}.price-desc{min-height:54px;color:#667d90;line-height:1.6}.price{display:flex;align-items:flex-start;gap:4px;margin:24px 0}.price span{font-weight:850;margin-top:11px}.price strong{font-size:3.6rem;line-height:1;letter-spacing:-.05em}.price small{align-self:flex-end;color:#6d8294;margin:0 0 7px 6px}.price-card ul{list-style:none;padding:0;margin:0;display:grid;gap:12px}.price-card li{position:relative;padding-left:25px;color:#405d74}.price-card li:before{content:'✓';position:absolute;left:0;color:#168253;font-weight:900}.price-note{margin-top:22px;padding:14px;border-radius:14px;background:#f4f8fb;color:#577086;font-size:.85rem}.faq-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.faq-grid article{padding:23px;border:1px solid #dfe7ee;border-radius:18px;background:#fff}.faq-grid h3{margin:0 0 8px}.faq-grid p{margin:0;color:#657b8e;line-height:1.65}.marketing-final{padding:70px 0;background:#0b5cab;color:#fff}.marketing-final .marketing-shell{display:flex;align-items:center;justify-content:space-between;gap:30px}.marketing-final .eyebrow{color:#bfe0ff}.marketing-final h2{margin:10px 0 8px;font-size:clamp(2rem,4vw,3rem)}.marketing-final p{margin:0;color:#d6eaff}.marketing-footer{padding:28px 0;background:#0c2235;color:#fff}.marketing-footer .marketing-shell{display:flex;justify-content:space-between;align-items:center}.marketing-footer strong,.marketing-footer small{display:block}.marketing-footer small{color:#9fb5c6;margin-top:4px}.marketing-footer a{color:#cce4f7;text-decoration:none;font-size:.82rem}.school-welcome{width:min(1180px,100%);margin:20px auto;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(340px,.95fr);gap:42px;align-items:center;min-height:calc(100dvh - 140px);padding:34px}.school-welcome-copy h1{font-size:clamp(2.2rem,5vw,4.2rem);line-height:1.06;letter-spacing:-.04em;margin:15px 0}.school-welcome-copy>p{max-width:680px;color:#62798d;line-height:1.75;font-size:1.03rem}.school-welcome-copy .button-row{margin-top:28px}.school-access-note{display:flex;gap:11px;align-items:flex-start;margin-top:24px;padding:15px;border:1px solid #dbe8f1;border-radius:16px;background:#f6faff}.school-access-note span{color:#168253;font-weight:900}.school-access-note p{margin:0;color:#526d82;line-height:1.55}.school-welcome-panel{display:grid;gap:14px;padding:24px;border-radius:26px;background:linear-gradient(145deg,#0d65b7,#073e72);box-shadow:0 28px 70px rgba(8,63,111,.24)}.welcome-stat{display:grid;grid-template-columns:52px 1fr;gap:4px 14px;align-items:center;padding:18px;border-radius:18px;background:rgba(255,255,255,.96)}.welcome-stat>span{grid-row:1/3;width:52px;height:52px;border-radius:16px;background:#eaf3ff;color:#0b5cab;display:grid;place-items:center;font-size:1.2rem;font-weight:850}.welcome-stat strong{font-size:1.05rem}.welcome-stat small{color:#687f91;line-height:1.45}.unified-login-shell{padding-top:22px}.unified-login-card{max-width:520px}.login-help{display:grid;gap:4px;margin-top:20px;padding:14px;border-radius:14px;background:#f4f8fb;color:#536d81;font-size:.85rem}.login-help strong{color:#17324d}
@media(max-width:980px){.marketing-nav{display:none}.marketing-header-inner{justify-content:space-between}.marketing-hero-grid{grid-template-columns:1fr;gap:48px}.marketing-preview{max-width:700px}.feature-grid,.steps-grid{grid-template-columns:repeat(2,1fr)}.school-welcome{grid-template-columns:1fr;min-height:auto}.school-welcome-panel{grid-template-columns:repeat(3,1fr)}.welcome-stat{grid-template-columns:1fr;text-align:center}.welcome-stat>span{grid-row:auto;margin:auto}.marketing-final .marketing-shell{align-items:flex-start}}
@media(max-width:680px){.marketing-header{height:66px}.marketing-header .brand-copy small{display:none}.marketing-cta{width:auto}.marketing-hero{padding:112px 0 64px}.marketing-hero-copy h1{font-size:2.55rem}.marketing-section{padding:66px 0}.feature-grid,.steps-grid,.pricing-grid,.faq-grid{grid-template-columns:1fr}.price-desc{min-height:auto}.marketing-final .marketing-shell,.marketing-footer .marketing-shell{display:grid}.marketing-footer .marketing-shell{gap:18px}.school-welcome{padding:22px 4px}.school-welcome-panel{grid-template-columns:1fr}.school-welcome-copy .button-row{display:grid}.school-welcome-copy .btn{width:100%}.trust-row{display:grid}.preview-body{padding:16px}.preview-kpis strong{font-size:1.35rem}}

/* SmartKehadiran v1.5.2 — Integrasi Hostinger dan penyediaan sekolah */
.integration-hero,.provision-summary,.provision-success{display:flex;align-items:center;justify-content:space-between;gap:20px}.integration-hero h2,.provision-summary h2,.provision-success h2{margin:.25rem 0}.integration-status{min-height:48px;display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#f8fbfe}.integration-status small{display:block;color:var(--muted);margin-top:2px}.status-dot{width:12px;height:12px;border-radius:50%;background:#9aa9b7;box-shadow:0 0 0 4px rgba(154,169,183,.14)}.status-dot.ok{background:#1f9d61;box-shadow:0 0 0 4px rgba(31,157,97,.14)}.status-dot.bad{background:#d54754;box-shadow:0 0 0 4px rgba(213,71,84,.14)}.provision-list{display:grid;gap:0}.provision-list>div{display:flex;justify-content:space-between;gap:18px;padding:12px 0;border-bottom:1px solid var(--line)}.provision-list>div:last-child{border-bottom:0}.provision-list span{color:var(--muted)}.provision-list strong{text-align:right;word-break:break-word}.provision-checks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.provision-checks>div{display:flex;align-items:flex-start;gap:10px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#f8fbfe}.provision-checks>div>span{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-weight:900;flex:0 0 auto}.provision-checks .ok>span{background:#e8f7ef;color:#176238}.provision-checks .bad>span{background:#fff0f1;color:#a32935}.provision-checks small{display:block;color:var(--muted);margin-top:4px;line-height:1.45}.provision-success{border-color:#bfe7ce;background:#f7fdf9}.modal-icon.success{background:#e8f7ef;color:#176238;flex:0 0 auto}.metric-card{padding:14px;border:1px solid var(--line);border-radius:14px;background:#f8fbfe}.metric-card span{display:block;color:var(--muted);font-size:.84rem;margin-bottom:5px}.metric-card strong{font-size:1rem;word-break:break-word}.btn[disabled]{opacity:.55;cursor:not-allowed;pointer-events:none}
@media(max-width:900px){.provision-checks{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.integration-hero,.provision-summary,.provision-success{align-items:flex-start;flex-direction:column}.integration-hero>.badge,.provision-summary>.btn,.provision-success .button-row{width:100%}.provision-checks{grid-template-columns:1fr}.provision-list>div{flex-direction:column;gap:4px}.provision-list strong{text-align:left}.button-row>form{width:100%}.button-row>form .btn{width:100%}}
.toast-warning{background:#fff6df;color:#8a5b11;border-color:#f0d79b}
