:root{--navy:#0b1f3a;--navy2:#102c52;--blue:#2563eb;--blue2:#0ea5e9;--cyan:#22d3ee;--bg:#f4f7fb;--panel:#fff;--text:#12213a;--muted:#69758a;--line:#e4eaf2;--success:#0f9f67;--danger:#d14343;--shadow:0 14px 40px rgba(17,39,73,.07);--radius:18px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}button,input,select,textarea{font:inherit}.icon{flex:0 0 auto}.app-body{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:272px;background:linear-gradient(180deg,var(--navy),#08172d);color:#dce7f7;display:flex;flex-direction:column;z-index:50;overflow:hidden}.sidebar-brand{flex:0 0 auto}.sidebar-brand{display:flex;gap:12px;align-items:center;padding:22px 18px 18px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-brand img{width:46px;height:46px;object-fit:contain;background:#fff;border-radius:13px;padding:4px}.sidebar-brand div{min-width:0}.sidebar-brand strong{display:block;color:#fff;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-brand span{display:block;font-size:11px;color:#91a8c8;margin-top:3px}.sidebar-nav{padding:14px 10px;display:flex;flex-direction:column;gap:3px;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}.sidebar-nav::-webkit-scrollbar{width:7px}.sidebar-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:999px}.sidebar-nav::-webkit-scrollbar-track{background:transparent}.nav-section{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:#7086a5;padding:18px 12px 7px}.nav-item{display:flex;align-items:center;gap:11px;min-height:43px;padding:9px 11px;border-radius:11px;color:#c8d7ec;text-decoration:none;font-size:13px;transition:.18s}.nav-item:hover{background:rgba(255,255,255,.06);color:#fff}.nav-item.active{background:linear-gradient(100deg,rgba(37,99,235,.78),rgba(14,165,233,.48));color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}.nav-item span{flex:1}.nav-item small{font-size:9px;background:rgba(255,255,255,.09);padding:3px 6px;border-radius:999px}.nav-item.disabled{opacity:.52;cursor:not-allowed}.sidebar-footer{flex:0 0 auto;margin-top:0;padding:13px 20px 15px;border-top:1px solid rgba(255,255,255,.07);font-size:10px;color:#778dab;display:flex;justify-content:space-between;background:#08172d}.main-shell{margin-left:272px;min-height:100vh;display:flex;flex-direction:column}.topbar{height:74px;position:sticky;top:0;z-index:30;background:rgba(255,255,255,.94);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 26px}.topbar-left{display:flex;align-items:center;gap:12px}.topbar h1{font-size:17px;margin:0}.topbar p{font-size:11px;color:var(--muted);margin:3px 0 0}.topbar-user{display:flex;align-items:center;gap:10px}.topbar-user>div:not(.avatar){display:flex;flex-direction:column}.topbar-user strong{font-size:12px}.topbar-user span{font-size:10px;color:var(--muted);margin-top:2px}.avatar{width:36px;height:36px;border-radius:11px;background:linear-gradient(135deg,var(--blue),var(--blue2));color:#fff;display:grid;place-items:center;font-weight:800}.icon-button{width:38px;height:38px;border:1px solid var(--line);background:#fff;border-radius:11px;display:grid;place-items:center;color:#4d5d74;cursor:pointer}.icon-button:hover{color:var(--blue);border-color:#c8d8fb}.content-area{padding:26px;flex:1}.app-footer{padding:15px 26px 20px;color:#8590a1;font-size:10px;display:flex;justify-content:space-between}.alert{padding:12px 14px;border-radius:12px;margin-bottom:16px;border:1px solid;font-size:13px}.alert.success{background:#edfdf6;border-color:#b7efd6;color:#08764b}.alert.danger{background:#fff4f4;border-color:#ffd1d1;color:#a52f2f}.page-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}.page-intro.compact{margin-bottom:16px}.page-intro h2{font-size:24px;line-height:1.25;margin:6px 0 7px}.page-intro p{color:var(--muted);font-size:13px;line-height:1.65;max-width:780px;margin:0}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.14em}.eyebrow.blue{color:var(--blue)}.status-pill{display:inline-flex;gap:7px;align-items:center;background:#edfdf6;color:#08764b;border:1px solid #c4f0dc;border-radius:999px;padding:8px 11px;font-size:10px;font-weight:800;white-space:nowrap}.status-pill i{width:7px;height:7px;background:#18b879;border-radius:50%;box-shadow:0 0 0 4px rgba(24,184,121,.12)}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}.metric-card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.metric-card{padding:18px}.metric-card span{display:block;color:var(--muted);font-size:11px}.metric-card strong{display:block;font-size:26px;margin:8px 0}.metric-card small{color:#91a0b4;font-size:10px}.dashboard-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:16px;margin-bottom:16px}.panel{padding:20px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.panel-head h3{font-size:15px;margin:0 0 4px}.panel-head p{font-size:11px;color:var(--muted);margin:0}.tag{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;background:#f0f3f7;color:#69758a;font-size:9px;font-weight:800}.tag.success{background:#eafaf3;color:#0c8b5b}.readiness-list{display:grid;gap:0}.readiness-list>div,.detail-list>div{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid #eef2f7;font-size:12px}.readiness-list>div:last-child,.detail-list>div:last-child{border-bottom:0}.readiness-list span{color:var(--success);font-weight:700}.detail-list{margin:0 0 14px}.detail-list dt{color:var(--muted)}.detail-list dd{margin:0;font-weight:700;text-align:right}.roadmap{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.roadmap span{background:#f7f9fc;border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center;font-size:15px;font-weight:800;color:#8390a4}.roadmap small{font-size:9px;font-weight:600}.roadmap .done{background:#ecf4ff;border-color:#bfd5ff;color:#1c5bcc}.btn{border:0;border-radius:11px;padding:10px 14px;font-weight:750;font-size:12px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn.primary{background:linear-gradient(135deg,var(--blue),#1b7dea);color:#fff;box-shadow:0 8px 18px rgba(37,99,235,.18)}.btn.secondary{background:#eef4ff;color:#205fc9}.btn.text{background:transparent;color:var(--blue);padding:7px 9px}.btn.large{min-height:46px;width:100%}.btn:disabled{opacity:.65;cursor:wait}.form-panel{padding:22px}.form-grid{display:grid;gap:15px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:span 2}.form-stack{display:flex;flex-direction:column;gap:14px}label{font-size:11px;font-weight:750;color:#46556c;display:flex;flex-direction:column;gap:7px}input,select,textarea{width:100%;border:1px solid #dbe3ee;border-radius:11px;background:#fff;color:var(--text);padding:10px 11px;outline:none;transition:.15s;font-size:12px}input:focus,select:focus,textarea:focus{border-color:#8ab2ff;box-shadow:0 0 0 3px rgba(37,99,235,.09)}textarea{resize:vertical}.divider{height:1px;background:#eef2f7;margin:22px 0}.branding-grid{display:grid;grid-template-columns:.7fr 1.3fr;gap:14px}.upload-card{border:1px dashed #cdd9e8;border-radius:14px;padding:13px;display:flex;gap:12px;align-items:center;background:#fafcff}.upload-card img{width:72px;height:72px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:12px;padding:4px}.upload-card.photo img{width:120px;object-fit:cover}.upload-card div{flex:1}.upload-card b,.upload-card small{display:block}.upload-card b{font-size:12px}.upload-card small{font-size:10px;color:var(--muted);margin:4px 0 8px}.upload-card input{padding:7px;font-size:10px}.form-actions{display:flex;justify-content:flex-end;margin-top:20px}.split-layout{display:grid;grid-template-columns:320px minmax(0,1fr);gap:16px}.panel.narrow{align-self:start}.table-wrap{overflow:auto;margin:0 -4px}table{width:100%;border-collapse:collapse;font-size:11px}th,td{padding:11px 10px;border-bottom:1px solid #edf1f6;text-align:left;white-space:nowrap}th{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:#7a8799;background:#fbfcfe}td.right{text-align:right}.inline-form{display:inline}.cell-sub{display:block;color:var(--muted);font-size:9px;margin-top:3px}.empty-state{min-height:55vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.empty-icon{font-size:44px;font-weight:900;color:#c2ccda}.empty-state h2{margin:8px 0}.empty-state p{color:var(--muted);font-size:13px}.login-body{min-height:100vh;background:#edf3fb;display:grid;place-items:center;padding:22px}.login-shell{width:min(1080px,100%);min-height:650px;background:#fff;border-radius:24px;overflow:hidden;display:grid;grid-template-columns:1.15fr .85fr;box-shadow:0 28px 80px rgba(18,43,79,.16);border:1px solid #dfe7f2}.login-visual{position:relative;min-height:650px;overflow:hidden}.login-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.login-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,24,49,.12),rgba(6,24,49,.88))}.login-visual-content{position:absolute;inset:auto 44px 42px;color:#fff}.login-visual-content h1{font-size:30px;line-height:1.25;margin:10px 0}.login-visual-content p{max-width:500px;line-height:1.65;color:#d9e6f7}.visual-badge{display:inline-flex;margin-top:13px;border:1px solid rgba(255,255,255,.24);background:rgba(255,255,255,.1);backdrop-filter:blur(10px);border-radius:999px;padding:8px 11px;font-size:10px}.login-panel{display:grid;place-items:center;padding:36px}.login-card{width:min(360px,100%)}.login-logo-row{display:flex;align-items:center;gap:12px;margin-bottom:40px}.login-logo-row img{width:52px;height:52px;object-fit:contain;border-radius:13px;border:1px solid var(--line);padding:4px}.login-logo-row strong{display:block;font-size:14px}.login-logo-row span{display:block;font-size:9px;color:var(--muted);margin-top:4px}.login-heading h2{font-size:25px;margin:0 0 7px}.login-heading p{font-size:12px;line-height:1.6;color:var(--muted);margin:0 0 22px}.password-wrap{position:relative}.password-wrap input{padding-right:72px}.password-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);border:0;background:#eef4ff;color:#225fc7;border-radius:8px;padding:6px 8px;font-size:9px;font-weight:800;cursor:pointer}.login-meta{display:flex;justify-content:space-between;color:#9aa6b7;font-size:9px;margin-top:22px}.mobile-only{display:none}.sidebar-backdrop{display:none}
@media(max-width:1050px){.metric-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.roadmap{grid-template-columns:repeat(3,1fr)}.split-layout{grid-template-columns:1fr}.panel.narrow{width:100%}}
@media(max-width:820px){.sidebar{transform:translateX(-100%);transition:.2s}.main-shell{margin-left:0}.mobile-only{display:grid}.sidebar-open .sidebar{transform:none}.sidebar-backdrop{position:fixed;inset:0;background:rgba(5,19,40,.42);z-index:40}.sidebar-open .sidebar-backdrop{display:block}.login-shell{grid-template-columns:1fr;min-height:auto}.login-visual{min-height:240px}.login-visual-content{inset:auto 24px 22px}.login-visual-content h1{font-size:23px}.login-panel{padding:30px 22px}.login-logo-row{margin-bottom:26px}.branding-grid{grid-template-columns:1fr}.form-grid.two{grid-template-columns:1fr}.span-2{grid-column:span 1}.topbar{padding:0 15px}.content-area{padding:18px}.topbar-user>div:not(.avatar){display:none}.app-footer{padding:14px 18px;flex-direction:column;gap:4px}.page-intro{flex-direction:column}}
@media(max-width:560px){.metric-grid{grid-template-columns:1fr}.roadmap{grid-template-columns:repeat(2,1fr)}.login-body{padding:0}.login-shell{border-radius:0;border:0;min-height:100vh}.login-visual{min-height:210px}.login-panel{align-items:start}.panel{padding:16px}.upload-card{align-items:flex-start}.upload-card.photo img{width:86px}.topbar h1{font-size:15px}}
@media print{.sidebar,.topbar,.app-footer{display:none!important}.main-shell{margin:0}.content-area{padding:0}.panel{box-shadow:none}}
/* V1.0 Final Release — Kesiswaan */
.action-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.filter-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.filter-bar input[type=search]{min-width:220px;flex:1}.filter-bar select{width:auto;min-width:120px}.filter-students select{min-width:108px}.list-head{margin-top:2px}.status-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:9px;font-weight:800;border:1px solid transparent}.status-badge.success{background:#eafaf3;color:#08764b;border-color:#c5eedc}.status-badge.info{background:#edf5ff;color:#1f5da8;border-color:#cfe2fb}.status-badge.warning{background:#fff8e8;color:#a76508;border-color:#f4deb2}.status-badge.muted{background:#f0f3f7;color:#738096;border-color:#e0e6ed}.mini-empty{padding:28px;text-align:center;color:var(--muted);font-size:12px}.table-actions{display:flex;gap:2px}.sort-link{color:inherit;text-decoration:none}.sort-link:hover{color:var(--blue)}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:6px;padding-top:16px}.pagination a{min-width:32px;height:32px;padding:0 8px;border:1px solid var(--line);border-radius:9px;display:grid;place-items:center;text-decoration:none;color:#536179;font-size:11px}.pagination a.active{background:var(--blue);color:#fff;border-color:var(--blue)}.pagination span{font-size:10px;color:var(--muted);margin-left:6px}.section-title{margin-bottom:14px}.section-title h3{margin:0 0 4px;font-size:15px}.section-title p{margin:0;color:var(--muted);font-size:11px}.info-box{margin-top:16px;padding:13px;border-radius:12px;background:#f7faff;border:1px solid #dce9fb}.info-box strong{font-size:11px}.info-box p{font-size:10px;line-height:1.6;color:var(--muted);margin:5px 0 0}.timeline-list{display:flex;flex-direction:column}.timeline-item{display:grid;grid-template-columns:18px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid #edf1f6}.timeline-item:last-child{border-bottom:0}.timeline-dot{width:11px;height:11px;margin:4px 0 0 2px;border-radius:50%;background:#c8d2df;box-shadow:0 0 0 4px #f1f4f8}.timeline-dot.current{background:var(--success);box-shadow:0 0 0 4px #e0f8ee}.timeline-item strong{font-size:12px}.timeline-item p{font-size:10px;color:var(--muted);margin:4px 0}.timeline-item small{font-size:10px;color:#64748b}.check-inline{display:flex;flex-direction:row;align-items:center;gap:7px}.check-inline input,.student-check input{width:auto}.student-select-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.student-check{display:flex;flex-direction:row;align-items:center;gap:10px;border:1px solid var(--line);padding:10px 11px;border-radius:11px;background:#fbfcfe;cursor:pointer}.student-check:has(input:checked){border-color:#8ab2ff;background:#f0f6ff}.student-check span{display:flex;flex-direction:column;gap:2px}.student-check strong{font-size:11px}.student-check small{font-size:9px;color:var(--muted)}.card-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.student-card-mini{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:14px;background:linear-gradient(135deg,#fff,#f7faff)}.student-card-mini img{width:54px;height:54px;object-fit:contain}.student-card-mini>div{flex:1;min-width:0}.student-card-mini strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-card-mini span{display:block;font-size:9px;color:var(--muted);margin:3px 0 6px}.barcode-svg{width:100%;height:34px;fill:#111}.ajax-loading{opacity:.55;pointer-events:none;position:relative}.ajax-loading:after{content:'Memuat…';position:absolute;right:12px;top:12px;padding:5px 8px;border-radius:8px;background:#fff;border:1px solid var(--line);font-size:9px;color:var(--muted);box-shadow:var(--shadow)}
@media(max-width:1050px){.student-select-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.filter-bar>*{width:100%!important;min-width:0!important}.student-select-grid,.card-preview-grid{grid-template-columns:1fr}.pagination{justify-content:center}.table-actions{flex-direction:column}.action-row{width:100%}.page-intro .action-row .btn{flex:1}.placement-panel .form-grid.two{grid-template-columns:1fr}}
/* V1.0 Final Release — Master Keuangan */
.nav-item.sub{min-height:34px;margin-left:28px;padding:6px 10px 6px 14px;font-size:11px;color:#9fb4d1;position:relative}.nav-item.sub:before{content:'';position:absolute;left:2px;width:6px;height:6px;border-radius:50%;background:#47617f}.nav-item.sub:hover,.nav-item.sub.active{color:#fff}.nav-item.sub.active:before{background:var(--cyan)}
.metric-link{text-decoration:none;color:inherit;transition:.18s}.metric-link:hover{transform:translateY(-2px);border-color:#c8d9fa;box-shadow:0 18px 42px rgba(17,39,73,.11)}
.finance-module-list{display:flex;flex-direction:column}.finance-module-list>a{display:grid;grid-template-columns:34px minmax(0,1fr) 20px;gap:12px;align-items:center;padding:13px 4px;border-bottom:1px solid #edf1f6;text-decoration:none;color:var(--text)}.finance-module-list>a:last-child{border-bottom:0}.finance-module-list>a>.icon:first-child{color:var(--blue);background:#eef4ff;border-radius:10px;padding:5px;width:34px;height:34px}.finance-module-list>a>.icon:last-child{color:#9aa8ba}.finance-module-list a:hover b{color:var(--blue)}.finance-module-list b{display:block;font-size:12px}.finance-module-list span{display:block;font-size:10px;color:var(--muted);margin-top:3px;line-height:1.45}
.finance-master-metrics .metric-card strong{font-size:24px}.finance-master-metrics .metric-card{min-height:112px}
@media(max-width:820px){.nav-item.sub{margin-left:22px}.finance-module-list>a{grid-template-columns:34px minmax(0,1fr) 18px}}
/* V1.0 Final Release — Billing Engine */
.metric-money{font-size:20px!important;letter-spacing:-.025em}.billing-flow{display:flex;flex-direction:column}.billing-flow>div{display:grid;grid-template-columns:145px minmax(0,1fr);gap:12px;padding:12px 0;border-bottom:1px solid #edf1f6}.billing-flow>div:last-child{border-bottom:0}.billing-flow b{font-size:11px}.billing-flow span{font-size:10px;color:var(--muted);line-height:1.55}.billing-split{grid-template-columns:minmax(320px,.72fr) minmax(0,1.45fr)}.billing-generate-grid{grid-template-columns:minmax(350px,.85fr) minmax(0,1.15fr)}.billing-metrics .metric-card{min-height:104px}.field-help{display:block;color:var(--muted);font-size:9px;line-height:1.45;margin-top:5px}.warning-box{padding:13px 14px;border:1px solid #f3d59a;background:#fff9e9;border-radius:12px}.warning-box strong{display:block;font-size:11px;color:#8a5a04}.warning-box p{font-size:10px;line-height:1.55;color:#8b6d33;margin:4px 0 0}.money-discount{color:var(--success);font-weight:700}.billing-year-filter{margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #edf1f6}.billing-split .panel.narrow{position:sticky;top:92px}.billing-split select,.billing-generate-grid select{min-width:0}
@media(max-width:1050px){.billing-split,.billing-generate-grid{grid-template-columns:1fr}.billing-split .panel.narrow{position:static}}
@media(max-width:700px){.billing-flow>div{grid-template-columns:1fr;gap:3px}.metric-money{font-size:18px!important}}
/* V1.0 Final Release — Payment Engine */
.payment-search-panel{padding:16px 18px;margin-bottom:16px}.payment-search-top{display:grid;grid-template-columns:190px minmax(0,1fr);gap:12px;align-items:end}.payment-year-form label{margin:0}.payment-search-box{height:42px;border:1px solid var(--line);background:#fff;border-radius:12px;display:flex;align-items:center;gap:9px;padding:0 10px;box-shadow:0 5px 18px rgba(22,49,89,.04)}.payment-search-box>span{color:var(--blue);display:grid;place-items:center}.payment-search-box input{border:0!important;outline:0!important;box-shadow:none!important;padding:0!important;height:auto!important;flex:1;background:transparent!important}.payment-search-box kbd{font-size:8px;color:#8090a6;background:#f3f6fa;border:1px solid #dfe5ed;border-radius:6px;padding:3px 5px}.payment-search-results{margin-top:10px;min-height:22px}.payment-search-empty{padding:10px 4px;font-size:10px;color:var(--muted)}.payment-search-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.payment-search-list>a{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:9px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:8px 10px;text-decoration:none;color:var(--text);background:#fbfcfe}.payment-search-list>a:hover{border-color:#a9c4f3;background:#f4f8ff}.payment-search-avatar,.payment-student-avatar{display:grid;place-items:center;border-radius:50%;font-weight:900;background:#eaf2ff;color:#225bb8}.payment-search-avatar{width:32px;height:32px;font-size:12px}.payment-search-main{min-width:0}.payment-search-main b,.payment-search-main small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.payment-search-main b{font-size:11px}.payment-search-main small{font-size:9px;color:var(--muted);margin-top:3px}.payment-empty-state{min-height:280px;border:1px dashed #cfd9e8;border-radius:16px;background:#fbfcfe;display:grid;place-items:center;align-content:center;text-align:center;padding:28px}.payment-empty-state .empty-icon{width:58px;height:58px;border-radius:16px;background:#edf4ff;color:var(--blue);display:grid;place-items:center}.payment-empty-state h3{font-size:15px;margin:12px 0 5px}.payment-empty-state p{max-width:540px;font-size:10px;line-height:1.65;color:var(--muted);margin:0}.payment-student-strip{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:14px;align-items:center;background:linear-gradient(135deg,#123d78,#1f69c7);color:#fff;border-radius:15px;padding:15px 18px;margin-bottom:14px;box-shadow:0 12px 30px rgba(22,62,119,.15)}.payment-student-avatar{width:54px;height:54px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.22);color:#fff;font-size:21px}.payment-student-id>span{font-size:8px;letter-spacing:.12em;opacity:.72}.payment-student-id h3{font-size:17px;margin:3px 0}.payment-student-id p{font-size:9px;margin:0;opacity:.84}.payment-student-metrics{display:flex;gap:20px}.payment-student-metrics>div{min-width:86px;text-align:right}.payment-student-metrics span,.payment-student-metrics b{display:block}.payment-student-metrics span{font-size:8px;opacity:.72;margin-bottom:3px}.payment-student-metrics b{font-size:13px}.payment-workspace{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:14px;align-items:start}.payment-bill-column{display:flex;flex-direction:column;gap:14px;min-width:0}.payment-bill-panel{padding:15px}.payment-checkout-panel{position:sticky;top:88px;padding:16px}.checkout-title>span{font-size:8px;font-weight:900;letter-spacing:.12em;color:var(--blue)}.checkout-title h3{font-size:16px;margin:4px 0}.checkout-title p{font-size:9px;line-height:1.55;color:var(--muted);margin:0 0 12px}.checkout-summary{border:1px solid #dce5f2;border-radius:12px;background:#f8fbff;margin-bottom:13px;overflow:hidden}.checkout-summary>div{display:flex;justify-content:space-between;align-items:center;padding:9px 11px;font-size:10px}.checkout-summary>div+div{border-top:1px solid #e3eaf3}.checkout-summary .total{background:#eef5ff}.checkout-summary .total b{font-size:14px;color:#145cc1}.checkout-form{gap:10px}.checkout-change{display:flex;align-items:center;justify-content:space-between;border-radius:10px;background:#f4f7fb;padding:9px 11px;font-size:10px}.checkout-change b{font-size:13px}.checkout-change b.negative{color:#b42318}.checkout-pay{width:100%;justify-content:center;gap:7px;margin-top:2px}.btn.danger{background:#b42318;color:#fff;border-color:#b42318}.btn.small{padding:6px 8px;font-size:9px}.spp-grid-wrap{overflow:auto}.spp-grid{min-width:980px}.spp-grid th,.spp-grid td{padding:5px;vertical-align:top}.spp-grid thead th{text-align:center;font-size:8px;white-space:nowrap}.spp-grid .spp-fee-name{text-align:left;min-width:125px;position:sticky;left:0;background:#fff;z-index:2}.spp-fee-name b,.spp-fee-name small{display:block}.spp-fee-name b{font-size:9px}.spp-fee-name small{font-size:8px;color:var(--muted);margin-top:2px}.spp-cell{display:flex;min-height:76px;min-width:72px;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:1px solid #e0e6ee;border-radius:9px;padding:6px;background:#f7f8fa;position:relative}.spp-cell.unpaid{background:#fff1f1;border-color:#f0c9c9}.spp-cell.partial{background:#fff8e7;border-color:#efdba7}.spp-cell.paid{background:#ecf9f2;border-color:#c8e8d7}.spp-cell.empty{min-height:64px;color:#a9b1bd}.spp-cell.clickable{cursor:pointer}.spp-cell.clickable:hover,.spp-cell.selected{outline:2px solid #6ba1ef;outline-offset:-1px}.spp-cell>input[type=checkbox]{position:absolute;left:5px;top:5px;width:auto}.spp-status-dot{width:6px;height:6px;border-radius:50%;background:#9aa4b2}.spp-cell.unpaid .spp-status-dot{background:#d04444}.spp-cell.partial .spp-status-dot{background:#d1931c}.spp-cell.paid .spp-status-dot{background:#209765}.spp-cell>b{font-size:8px}.spp-cell>small{font-size:7px;color:#69778a;text-align:center}.allocation-input{width:100%;min-height:26px!important;height:26px!important;padding:3px 5px!important;text-align:right;font-size:8px!important;margin-top:2px}.inline-money{min-width:105px}.table-sub{display:block;font-size:8px;color:var(--muted);margin-top:3px}.payment-recent-panel{margin-top:14px}.payment-history-filter input[type=date]{width:auto;min-width:135px}.metric-date{font-size:15px!important}.payment-detail-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,.65fr);gap:14px;margin-bottom:14px}.payment-detail-money .money-stack{display:flex;flex-direction:column}.money-stack>div{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid #edf1f6}.money-stack span{font-size:10px;color:var(--muted)}.money-stack b{font-size:13px}.money-stack .change b{color:#1769d5}.void-panel{margin-top:14px;border-color:#f0d2d2}.payment-intro{align-items:center}
@media(max-width:1150px){.payment-workspace{grid-template-columns:1fr}.payment-checkout-panel{position:static}.payment-detail-grid{grid-template-columns:1fr}.payment-student-strip{grid-template-columns:52px 1fr}.payment-student-metrics{grid-column:1/-1;justify-content:flex-start;border-top:1px solid rgba(255,255,255,.16);padding-top:10px}.payment-student-metrics>div{text-align:left}}
@media(max-width:760px){.payment-search-top{grid-template-columns:1fr}.payment-search-list{grid-template-columns:1fr}.payment-student-strip{grid-template-columns:44px 1fr;padding:13px}.payment-student-avatar{width:42px;height:42px;font-size:16px}.payment-student-metrics{gap:10px;display:grid;grid-template-columns:repeat(3,1fr)}.payment-student-metrics>div{min-width:0}.payment-student-metrics b{font-size:11px}.payment-workspace{display:block}.payment-checkout-panel{margin-top:14px}.payment-history-filter input[type=date]{width:100%}.spp-grid{min-width:920px}}
/* V1.0 Final Release — Cash & Transactions */
.cash-metrics .metric-card{min-height:108px}.cash-action-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:16px}.cash-action-card{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;text-decoration:none;color:var(--text);box-shadow:var(--shadow);transition:.16s}.cash-action-card>.icon{color:var(--blue);background:#eef4ff;border-radius:11px;padding:6px;width:36px;height:36px}.cash-action-card b,.cash-action-card span{display:block}.cash-action-card b{font-size:12px}.cash-action-card span{font-size:9px;color:var(--muted);line-height:1.5;margin-top:4px}.cash-action-card:hover{transform:translateY(-1px);border-color:#bfd4f7}.cash-transaction-layout{grid-template-columns:330px minmax(0,1fr)}.money-in{color:#0d8f5e!important}.money-out{color:#b42318!important}.ledger-reversal{background:#fff8f4}.ledger-reversal td{opacity:.9}.cash-transaction-layout .panel.narrow{position:sticky;top:92px}.cash-transaction-layout .filter-bar{align-items:end}.cash-transaction-layout input[type=date]{min-width:130px}
@media(max-width:1180px){.cash-action-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.cash-transaction-layout{grid-template-columns:1fr}.cash-transaction-layout .panel.narrow{position:static}}
@media(max-width:760px){.cash-action-grid{grid-template-columns:1fr 1fr}.cash-action-card{padding:13px}.cash-transaction-layout input[type=date]{min-width:0}}
@media(max-width:520px){.cash-action-grid{grid-template-columns:1fr}}

/* V1.0 Final Release — Student Savings */
.roadmap{grid-template-columns:repeat(7,1fr)}
.savings-action-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:16px;margin-bottom:16px}.savings-search-panel{min-height:220px}.savings-student-results{display:grid;gap:7px;padding-top:8px}.savings-student-results>a{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:var(--text);background:#fff}.savings-student-results>a:hover{border-color:#b9cef2;background:#f8fbff}.savings-student-results small{display:block;color:var(--muted);font-size:9px;margin-top:3px}.savings-student-results strong{font-size:11px;color:#0d8f5e}.savings-student-strip{margin-bottom:16px}.savings-account-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(310px,.55fr);gap:16px}.savings-transaction-panel{align-self:start;position:sticky;top:92px}.savings-metrics .metric-money{font-size:21px}.table-link{color:#245fbd;text-decoration:none}.table-link:hover{text-decoration:underline}.status-badge.warning{background:#fff5df;color:#9a5c00}.metric-card .money-in{color:#0d8f5e!important}.metric-card .money-out{color:#b42318!important}
@media(max-width:1180px){.roadmap{grid-template-columns:repeat(4,1fr)}.savings-action-grid,.savings-account-layout{grid-template-columns:1fr}.savings-transaction-panel{position:static}}
@media(max-width:760px){.roadmap{grid-template-columns:repeat(2,1fr)}.savings-student-results>a{grid-template-columns:34px minmax(0,1fr)}.savings-student-results>a>strong{grid-column:2}.savings-account-layout .payment-student-metrics{grid-template-columns:1fr}}
/* V1.0 Final Release — Reporting Engine */
.roadmap{grid-template-columns:repeat(8,minmax(0,1fr))}.report-print-head{display:none}.report-year-switch{display:flex;align-items:end;gap:18px;margin-bottom:16px;padding:15px 18px}.report-year-switch label{width:220px}.report-year-switch>div{display:flex;flex-direction:column;gap:3px}.report-year-switch b{font-size:11px}.report-year-switch span{font-size:9px;color:var(--muted)}.report-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-bottom:16px}.report-card{display:flex;gap:13px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:16px;padding:17px;text-decoration:none;color:var(--text);box-shadow:var(--shadow);transition:.17s}.report-card>.icon{width:40px;height:40px;padding:7px;border-radius:12px;background:#eef4ff;color:#2264c7}.report-card b,.report-card span{display:block}.report-card b{font-size:12px}.report-card span{font-size:9px;line-height:1.55;color:var(--muted);margin-top:4px}.report-card:hover{transform:translateY(-1px);border-color:#bdd2f5}.report-highlight{display:flex;align-items:center;justify-content:space-between;gap:15px}.report-highlight>div{display:flex;flex-direction:column}.report-highlight span{font-size:10px;color:var(--muted)}.report-highlight strong{font-size:22px;margin-top:5px}.report-filter{align-items:end}.report-filter input[type=date]{width:auto;min-width:132px}.report-filter-panel{padding:15px 18px;margin-bottom:16px}.report-filter-panel .filter-bar{margin:0}.report-two-col{display:grid;grid-template-columns:1.1fr .9fr;gap:16px}.realization-bars{display:flex;flex-direction:column;gap:12px}.realization-row{display:grid;grid-template-columns:110px minmax(120px,1fr) 160px;gap:12px;align-items:center}.realization-label{display:flex;justify-content:space-between;gap:6px;align-items:center}.realization-label b{font-size:10px}.realization-label span{font-size:9px;color:var(--blue);font-weight:800}.progress-track{height:8px;border-radius:999px;background:#e7edf5;overflow:hidden}.progress-track i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--blue2));border-radius:inherit}.progress-track.large{height:10px;margin:3px 0 14px}.realization-money{text-align:right}.realization-money span,.realization-money small{display:block}.realization-money span{font-size:10px;font-weight:800;color:var(--success)}.realization-money small{font-size:8px;color:var(--muted);margin-top:2px}.report-student-search{margin-bottom:16px}.report-student-search .filter-bar{margin:0}.report-student-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.report-student-results>a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;text-decoration:none;color:var(--text);background:#fbfcfe}.report-student-results b{font-size:11px}.report-student-results span{grid-column:1;font-size:9px;color:var(--muted)}.report-student-results strong{grid-column:2;grid-row:1/3;align-self:center;color:var(--blue);font-size:9px}.report-student-strip{margin-top:0}.report-class-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.report-class-card{padding:17px}.report-class-card .panel-head h3{margin-top:4px}.report-rate{font-size:20px;color:var(--blue)}.report-class-card .detail-list{margin-bottom:3px}.report-class-card .detail-list>div{padding:8px 0}.report-kpis .metric-card{min-height:112px}
@media(max-width:1180px){.roadmap{grid-template-columns:repeat(4,1fr)}.report-card-grid,.report-class-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.report-two-col{grid-template-columns:1fr}.realization-row{grid-template-columns:100px minmax(100px,1fr) 145px}}
@media(max-width:760px){.roadmap{grid-template-columns:repeat(2,1fr)}.report-card-grid,.report-class-grid,.report-student-results{grid-template-columns:1fr}.report-year-switch{align-items:stretch;flex-direction:column}.report-year-switch label{width:100%}.report-filter input[type=date]{width:100%}.realization-row{grid-template-columns:1fr}.realization-label{justify-content:flex-start}.realization-money{text-align:left;display:flex;gap:6px;align-items:baseline}.report-highlight{align-items:flex-start;flex-direction:column}}
@media print{body{background:#fff}.report-print-head{display:flex!important;gap:14px;align-items:center;border-bottom:2px solid #17243a;padding:0 0 12px;margin:0 0 16px}.report-print-head img{width:58px;height:58px;object-fit:contain}.report-print-head div{display:flex;flex-direction:column}.report-print-head strong{font-size:16px}.report-print-head span{font-size:10px;margin-top:3px}.report-print-head small{font-size:9px;margin-top:2px}.page-intro .action-row,.report-filter,.report-filter-panel,.report-student-search,.btn,.pagination{display:none!important}.content-area{padding:12mm!important}.metric-grid{grid-template-columns:repeat(4,1fr)!important}.metric-card,.panel{break-inside:avoid;border-color:#ccd3dd}.report-card-grid{display:none}.report-two-col{grid-template-columns:1fr!important}.report-class-grid{grid-template-columns:repeat(2,1fr)!important}.table-wrap{overflow:visible}table{font-size:9px}th,td{white-space:normal;padding:6px}.realization-row{grid-template-columns:90px 1fr 125px}}
/* V1.0 Final Release — Excel Center */
.excel-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px;background:linear-gradient(135deg,#fff,#f3f8ff)}.excel-hero h3{font-size:18px;margin:5px 0 6px}.excel-hero p{font-size:11px;color:var(--muted);line-height:1.6;max-width:760px;margin:0}.excel-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.excel-import-layout{grid-template-columns:340px minmax(0,1fr)}.excel-template-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.excel-template-list a{border:1px solid var(--line);border-radius:13px;padding:12px;text-decoration:none;color:var(--text);background:#fbfcfe}.excel-template-list a:hover{border-color:#b9cef2;background:#f7faff}.excel-template-list b,.excel-template-list span{display:block}.excel-template-list b{font-size:11px}.excel-template-list span{font-size:9px;color:var(--muted);line-height:1.5;margin-top:4px}.excel-result{margin-top:16px;margin-bottom:16px}.excel-result .metric-grid{margin-bottom:12px}
@media(max-width:1000px){.excel-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.excel-import-layout{grid-template-columns:1fr}.excel-hero{align-items:flex-start;flex-direction:column}.excel-template-list{grid-template-columns:1fr}}
@media(max-width:680px){.excel-card-grid{grid-template-columns:1fr}}

/* V1.0 Final Release — komponen antarmuka */
.roadmap{grid-template-columns:repeat(10,minmax(0,1fr))}
@media(max-width:1050px){.roadmap{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:620px){.roadmap{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V1.0 Final Release — Financial Command Center */
.fc-intro{margin-bottom:16px}.fc-filter{margin-bottom:16px;padding:16px 18px}.fc-filter-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:13px}.fc-filter-head>div:first-child{display:flex;flex-direction:column;gap:3px}.fc-filter-head b{font-size:12px}.fc-filter-head span{font-size:9px;color:var(--muted);line-height:1.5}.fc-filter-grid{display:grid;grid-template-columns:1.15fr .8fr 1.15fr 1fr .9fr .9fr;gap:10px}.fc-filter-grid label{font-size:9px}.fc-scope-note{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 13px;margin-bottom:13px;background:#eef5ff;border:1px solid #d5e5ff;border-radius:12px;color:#245eae}.fc-scope-note>span{display:flex;align-items:center;gap:7px;font-size:10px}.fc-scope-note small{font-size:9px;color:#6681a9}.fc-kpi-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:16px}.fc-kpi{padding:16px;min-height:112px;position:relative;overflow:hidden}.fc-kpi:after{content:'';position:absolute;right:-25px;top:-32px;width:85px;height:85px;border-radius:50%;background:rgba(37,99,235,.04)}.fc-kpi.primary{border-top:3px solid var(--blue)}.fc-kpi.success{border-top:3px solid var(--success)}.fc-kpi.danger{border-top:3px solid var(--danger)}.fc-kpi strong{font-size:20px;margin:7px 0}.fc-kpi small{line-height:1.4}.fc-main-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(340px,.7fr);gap:16px;margin-bottom:16px}.fc-secondary-grid,.fc-class-grid,.fc-data-grid,.fc-cash-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.fc-chart-legend{display:flex;gap:14px;justify-content:flex-end;margin:-5px 0 8px;font-size:9px;color:var(--muted)}.fc-chart-legend span{display:flex;align-items:center;gap:5px}.fc-chart-legend i{width:8px;height:8px;border-radius:2px}.fc-chart-legend .target{background:#d7e2f1}.fc-chart-legend .realized{background:linear-gradient(180deg,var(--blue2),var(--blue))}.fc-month-chart{height:245px;display:grid;grid-template-columns:repeat(12,minmax(34px,1fr));gap:7px;align-items:end;padding-top:5px;overflow-x:auto}.fc-month-col{min-width:34px;height:100%;display:grid;grid-template-rows:minmax(0,1fr) auto auto;gap:4px;text-align:center}.fc-bars{height:100%;display:flex;gap:3px;align-items:end;justify-content:center;border-bottom:1px solid #e7edf5}.fc-bars i{width:36%;min-height:0;border-radius:5px 5px 1px 1px}.fc-bars .target{background:#dce5f1}.fc-bars .realized{background:linear-gradient(180deg,var(--blue2),var(--blue))}.fc-month-col b{font-size:9px}.fc-month-col small{font-size:8px;color:var(--muted)}.fc-donut-grid{display:grid;grid-template-columns:1fr;gap:12px}.fc-donut-card{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;align-items:center;padding:12px;border:1px solid #edf1f6;border-radius:14px;background:#fbfcfe}.fc-donut{width:88px;height:88px;border-radius:50%;background:conic-gradient(var(--blue) calc(var(--pct)*1%),#e6edf6 0);display:grid;place-items:center}.fc-donut:before{content:'';grid-area:1/1;width:66px;height:66px;border-radius:50%;background:#fff}.fc-donut>div{grid-area:1/1;z-index:1;text-align:center}.fc-donut strong,.fc-donut span{display:block}.fc-donut strong{font-size:16px}.fc-donut span{font-size:8px;color:var(--muted);margin-top:2px}.fc-donut-copy b,.fc-donut-copy span,.fc-donut-copy small{display:block}.fc-donut-copy b{font-size:11px}.fc-donut-copy span{font-size:9px;color:var(--muted);margin:4px 0 7px}.fc-donut-copy small{font-size:8px;line-height:1.6;color:#718096}.dot{display:inline-block!important;width:6px;height:6px;border-radius:50%;margin:0 3px 0 5px}.dot:first-child{margin-left:0}.dot.paid{background:var(--success)}.dot.partial{background:#f3a323}.dot.unpaid{background:var(--danger)}.fc-alert-strip{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:9px;align-items:center;margin-top:12px;padding:11px 12px;border-radius:12px}.fc-alert-strip.warning{background:#fff8e9;border:1px solid #f2d89d;color:#8b5e09}.fc-alert-strip.success{background:#edfdf6;border:1px solid #c5eedc;color:#08764b}.fc-alert-strip b,.fc-alert-strip span{display:block}.fc-alert-strip b{font-size:9px}.fc-alert-strip span{font-size:8px;opacity:.82;margin-top:2px}.fc-alert-strip a{font-size:8px;font-weight:800;color:inherit;text-decoration:none}.fc-daily-chart{height:165px;display:grid;grid-template-columns:repeat(14,minmax(20px,1fr));gap:5px;align-items:end;overflow-x:auto}.fc-day{height:100%;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:5px;text-align:center;min-width:23px}.fc-day>div{height:100%;display:flex;align-items:flex-end;justify-content:center;border-bottom:1px solid #e7edf5}.fc-day i{display:block;width:60%;background:linear-gradient(180deg,var(--cyan),var(--blue));border-radius:5px 5px 1px 1px}.fc-day b{font-size:7px;color:#748096;white-space:nowrap}.fc-inline-stats{display:flex;gap:20px;margin-top:12px;padding-top:11px;border-top:1px solid #edf1f6}.fc-inline-stats span{font-size:8px;color:var(--muted)}.fc-inline-stats b{display:block;font-size:11px;color:var(--text);margin-bottom:2px}.fc-progress-list{display:flex;flex-direction:column;gap:13px}.fc-progress-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;align-items:center}.fc-progress-row>div:first-child b,.fc-progress-row>div:first-child span{display:block}.fc-progress-row b{font-size:10px}.fc-progress-row span{font-size:8px;color:var(--muted);margin-top:2px}.fc-progress-row strong{font-size:9px}.fc-progress-row .progress-track{grid-column:1}.fc-progress-row small{font-size:8px;color:var(--blue);text-align:right}.fc-ranking{display:flex;flex-direction:column}.fc-rank-row{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #edf1f6}.fc-rank-row:last-child{border-bottom:0}.fc-rank-row em{width:25px;height:25px;border-radius:8px;background:#edf4ff;color:#2563eb;display:grid;place-items:center;font-size:9px;font-style:normal;font-weight:900}.fc-ranking.risk .fc-rank-row em{background:#fff1ef;color:#c64638}.fc-rank-row b,.fc-rank-row span{display:block}.fc-rank-row b{font-size:10px}.fc-rank-row span{font-size:8px;color:var(--muted);margin:2px 0 5px}.fc-rank-row strong{font-size:10px}.fc-rank-row .progress-track{height:6px}.fc-debtors{display:flex;flex-direction:column}.fc-debtors>div{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #edf1f6}.fc-debtors>div:last-child{border-bottom:0}.avatar.sm{width:32px;height:32px;border-radius:9px;font-size:11px}.fc-debtors b,.fc-debtors span,.fc-debtors strong,.fc-debtors small{display:block}.fc-debtors b{font-size:10px}.fc-debtors span{font-size:8px;color:var(--muted);margin-top:2px}.fc-debtors strong{font-size:10px;color:var(--danger);text-align:right}.fc-debtors small{font-size:7px;color:#a56862;margin-top:2px}.fc-recent-table table{font-size:9px}.fc-recent-table td small{display:block;font-size:7px;color:var(--muted);margin-top:2px}.text-right{text-align:right!important}.text-center{text-align:center!important}.muted{color:var(--muted)}.empty-state.compact{min-height:120px;font-size:10px;color:var(--muted);padding:18px}.fc-cash-accounts{display:flex;flex-direction:column}.fc-cash-accounts>div{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #edf1f6}.fc-cash-accounts>div:last-child{border-bottom:0}.fc-cash-accounts>div>span{font-size:8px;font-weight:800;color:var(--blue);background:#edf4ff;border-radius:8px;padding:5px 6px;text-align:center}.fc-cash-accounts b,.fc-cash-accounts small{display:block}.fc-cash-accounts b{font-size:10px}.fc-cash-accounts small{font-size:8px;color:var(--muted);margin-top:2px}.fc-cash-accounts strong{font-size:10px}.fc-cash-flow{display:grid;grid-template-columns:1fr;gap:9px}.fc-cash-flow>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px;border:1px solid #edf1f6;border-radius:12px;background:#fbfcfe}.fc-cash-flow span{font-size:9px;color:var(--muted)}.fc-cash-flow strong{font-size:12px}.fc-quick-actions{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.fc-quick-actions>a{display:grid;grid-template-columns:34px minmax(0,1fr);grid-template-rows:auto auto;gap:2px 9px;border:1px solid var(--line);border-radius:13px;padding:12px;text-decoration:none;color:var(--text);background:#fbfcfe}.fc-quick-actions>a>.icon{grid-row:1/3;width:34px;height:34px;padding:6px;border-radius:10px;background:#edf4ff;color:var(--blue)}.fc-quick-actions b{font-size:10px}.fc-quick-actions span{font-size:8px;color:var(--muted);line-height:1.4}.fc-quick-actions>a:hover{border-color:#bad0f5;background:#f6faff}.roadmap{grid-template-columns:repeat(10,minmax(0,1fr))}
@media(max-width:1320px){.fc-filter-grid{grid-template-columns:repeat(3,1fr)}.fc-kpi-grid{grid-template-columns:repeat(3,1fr)}.fc-quick-actions{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1050px){.fc-main-grid{grid-template-columns:1fr}.fc-secondary-grid,.fc-class-grid,.fc-data-grid,.fc-cash-grid{grid-template-columns:1fr}.roadmap{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:760px){.fc-filter-head{flex-direction:column}.fc-filter-head .action-row{width:100%}.fc-filter-head .action-row .btn{flex:1}.fc-filter-grid{grid-template-columns:1fr 1fr}.fc-kpi-grid{grid-template-columns:1fr 1fr}.fc-scope-note{align-items:flex-start;flex-direction:column}.fc-month-chart{grid-template-columns:repeat(12,42px)}.fc-daily-chart{grid-template-columns:repeat(14,30px)}.fc-quick-actions{grid-template-columns:1fr 1fr}.roadmap{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.fc-filter-grid,.fc-kpi-grid,.fc-quick-actions{grid-template-columns:1fr}.fc-kpi{min-height:auto}.fc-donut-card{grid-template-columns:82px minmax(0,1fr)}.fc-donut{width:76px;height:76px}.fc-donut:before{width:56px;height:56px}.fc-alert-strip{grid-template-columns:22px minmax(0,1fr)}.fc-alert-strip a{grid-column:2}.fc-debtors>div{grid-template-columns:32px minmax(0,1fr)}.fc-debtors strong{grid-column:2;text-align:left}.fc-cash-accounts>div{grid-template-columns:50px minmax(0,1fr)}.fc-cash-accounts strong{grid-column:2}}
@media print{.fc-filter,.fc-quick-panel,.roadmap-panel{display:none!important}.fc-kpi-grid{grid-template-columns:repeat(3,1fr)!important}.fc-main-grid,.fc-secondary-grid,.fc-class-grid,.fc-data-grid,.fc-cash-grid{grid-template-columns:1fr!important}.fc-monthly-panel{break-inside:avoid}.fc-month-chart{height:180px}}

/* V1.0 Final Release — Audit & Security Hardening */
.system-filter{margin-bottom:16px}.audit-detail pre{max-width:560px;max-height:180px;overflow:auto;white-space:pre-wrap;background:#f7f9fc;border:1px solid var(--line);border-radius:9px;padding:9px;font-size:9px}.danger-tag{background:#fff1f1!important;color:#ba3838!important}.security-event-list{display:flex;flex-direction:column;max-height:520px;overflow:auto}.security-event-list>div{display:grid;grid-template-columns:66px 1fr;gap:10px;padding:11px 0;border-bottom:1px solid #edf1f6}.security-event-list p{font-size:9px;color:#52637b;margin:4px 0}.security-event-list small{font-size:8px;color:var(--muted)}.severity{display:inline-flex;align-items:center;justify-content:center;align-self:start;border-radius:999px;padding:5px 8px;font-size:8px;font-weight:900}.severity.info,.severity.healthy{background:#eafaf3;color:#0c8b5b}.severity.warning{background:#fff7e8;color:#9a6512}.severity.critical{background:#fff0f0;color:#b63b3b}.health-score{width:96px;height:72px;border-radius:18px;display:flex;align-items:baseline;justify-content:center;padding-top:16px;font-size:29px;font-weight:900}.health-score small{font-size:10px}.health-score.healthy{background:#eafaf3;color:#0c8b5b}.health-score.warning{background:#fff7e8;color:#9a6512}.health-score.critical{background:#fff0f0;color:#b63b3b}.health-summary{display:grid;grid-template-columns:1fr 1fr auto;align-items:center;gap:14px;margin-bottom:16px}.health-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:16px}.health-item{background:#fff;border:1px solid var(--line);border-radius:14px;padding:13px;display:grid;grid-template-columns:10px 1fr auto;gap:10px}.health-dot{width:8px;height:8px;border-radius:50%;margin-top:4px}.health-item.ok .health-dot{background:var(--success)}.health-item.warning .health-dot{background:#efa62b}.health-item.critical .health-dot{background:var(--danger)}.health-item b{font-size:10px}.health-item p{font-size:9px;color:#52637b;margin:3px 0}.health-item small{font-size:7px;color:#95a0b0}.health-item>strong{font-size:8px}.gal-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}.gal-entry{border:1px solid var(--line);border-radius:12px;background:#fbfcfe}.gal-entry summary{display:grid;grid-template-columns:44px 150px 1fr auto;gap:9px;align-items:center;padding:11px;cursor:pointer}.gal-entry>div{border-top:1px solid var(--line);padding:10px 14px}.gal-entry p{font-size:9px}.system-note{display:flex;gap:10px;align-items:flex-start;margin-top:16px}.system-note b{font-size:10px}.system-note span{font-size:9px;color:var(--muted)}.mono{font-family:ui-monospace,monospace}.action-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.danger-text{color:var(--danger)!important}.restore-pop{position:relative}.restore-pop>summary{cursor:pointer;list-style:none}.restore-form{position:absolute;right:0;z-index:20;width:310px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:0 18px 45px rgba(12,31,57,.16)}.restore-form p{font-size:9px;color:var(--muted)}@media(max-width:800px){.health-grid,.health-summary{grid-template-columns:1fr}.gal-entry summary{grid-template-columns:44px 1fr}.restore-form{position:fixed;left:16px;right:16px;bottom:16px;width:auto}}.roadmap{grid-template-columns:repeat(11,minmax(0,1fr))}


/* V1.0 Final Release — rilis final */
.center-cell{text-align:center;padding:18px}.portal-share-panel{margin-top:16px}.portal-link-box{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:12px;border:1px dashed #b9cae4;border-radius:12px;background:#f8fbff}.portal-link-box code{font-size:9px;word-break:break-all;color:#284b78}.smart-assistant{position:fixed;right:22px;bottom:22px;z-index:90}.assistant-fab{width:52px;height:52px;border:0;border-radius:18px;background:linear-gradient(135deg,#1769e0,#10a6d8);color:#fff;font-size:24px;font-weight:900;box-shadow:0 16px 34px rgba(23,105,224,.3);cursor:pointer}.assistant-panel{position:absolute;right:0;bottom:64px;width:360px;max-height:520px;background:#fff;border:1px solid #dce5f1;border-radius:18px;box-shadow:0 24px 60px rgba(13,38,72,.22);display:none;overflow:hidden}.smart-assistant.open .assistant-panel{display:flex;flex-direction:column}.assistant-panel header{display:flex;justify-content:space-between;align-items:center;padding:13px 14px;background:#0d2f62;color:#fff}.assistant-panel header strong,.assistant-panel header span{display:block}.assistant-panel header strong{font-size:11px}.assistant-panel header span{font-size:8px;opacity:.8;margin-top:2px}.assistant-panel header button{border:0;background:transparent;color:#fff;font-size:22px;cursor:pointer}.assistant-messages{padding:14px;overflow:auto;min-height:160px;max-height:290px;background:#f7f9fc;display:flex;flex-direction:column;gap:8px}.assistant-bubble{max-width:86%;padding:9px 11px;border-radius:12px;font-size:9px;line-height:1.55}.assistant-bubble.bot{align-self:flex-start;background:#fff;border:1px solid #dce5f1}.assistant-bubble.user{align-self:flex-end;background:#1769e0;color:#fff}.assistant-bubble.loading{opacity:.65}.assistant-suggestions{display:flex;gap:6px;padding:10px 12px 0;overflow:auto}.assistant-suggestions button{white-space:nowrap;border:1px solid #cfdcec;background:#fff;color:#245b9e;border-radius:999px;padding:6px 9px;font-size:8px;font-weight:800;cursor:pointer}.assistant-form{display:grid;grid-template-columns:1fr auto;gap:7px;padding:10px 12px 12px}.assistant-form input{min-width:0}.assistant-form button{border:0;border-radius:10px;background:#1769e0;color:#fff;font-weight:800;padding:0 13px;cursor:pointer}.portal-body{margin:0;background:#eef3f9;font-family:Inter,Arial,sans-serif;color:#18243a}.parent-portal{max-width:1120px;margin:24px auto;padding:0 18px 32px}.portal-brand{display:flex;align-items:center;gap:14px;background:#0d2f62;color:#fff;border-radius:18px;padding:18px 20px}.portal-brand img{width:56px;height:56px;object-fit:contain;background:#fff;border-radius:14px;padding:5px}.portal-brand h1{font-size:18px;margin:0}.portal-brand p{font-size:9px;margin:4px 0 0;opacity:.82}.portal-profile{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(3,minmax(130px,.7fr));gap:12px;margin:14px 0}.portal-card{background:#fff;border:1px solid #dce5f1;border-radius:14px;padding:14px}.portal-card span,.portal-card b{display:block}.portal-card span{font-size:8px;color:#6f7d91;text-transform:uppercase;letter-spacing:.06em}.portal-card b{font-size:14px;margin-top:5px}.portal-profile .student-card b{font-size:18px}.portal-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:14px}.portal-section{background:#fff;border:1px solid #dce5f1;border-radius:16px;padding:15px;margin-bottom:14px}.portal-section h2{font-size:13px;margin:0 0 3px}.portal-section>p{font-size:9px;color:#6d7b90;margin:0 0 12px}.portal-table-wrap{overflow:auto}.portal-table{width:100%;border-collapse:collapse;font-size:9px}.portal-table th,.portal-table td{padding:9px 7px;border-bottom:1px solid #edf1f6;text-align:left;white-space:nowrap}.portal-table th{font-size:8px;color:#66758b;background:#f8fafc}.portal-table .right{text-align:right}.portal-status{display:inline-flex;border-radius:999px;padding:4px 7px;font-size:7px;font-weight:900}.portal-status.paid{background:#e8f8f0;color:#08764b}.portal-status.partial{background:#fff4df;color:#96600b}.portal-status.unpaid{background:#fff0ef;color:#b64338}.portal-empty{text-align:center;padding:24px;color:#748096;font-size:10px}.portal-foot{text-align:center;color:#8190a5;font-size:8px;padding:12px}.portal-invalid{max-width:620px;margin:90px auto;background:#fff;border:1px solid #dce5f1;border-radius:18px;padding:26px;text-align:center}.portal-invalid img{width:72px;height:72px;object-fit:contain}.portal-invalid h1{font-size:18px}.portal-invalid p{font-size:10px;color:#6c7b90;line-height:1.6}.roadmap{grid-template-columns:repeat(12,minmax(0,1fr))}@media(max-width:900px){.portal-profile{grid-template-columns:1fr 1fr}.portal-grid{grid-template-columns:1fr}.assistant-panel{width:min(360px,calc(100vw - 28px))}.smart-assistant{right:14px;bottom:14px}}@media(max-width:560px){.portal-profile{grid-template-columns:1fr}.parent-portal{margin-top:12px;padding:0 10px 24px}.portal-brand{border-radius:14px}.portal-link-box{align-items:flex-start;flex-direction:column}.portal-link-box .action-row{width:100%}.portal-link-box .btn{flex:1}.roadmap{grid-template-columns:repeat(2,1fr)}}@media print{.smart-assistant{display:none!important}}
