:root{--primary:#813529;--accent:#bea15a;--side1:#4a1b15;--side2:#3c150f;--head:#5e1f17;--bg:#f4f3f1;--card:#fff;--line:#e8e2dc;--text:#2a201d;--muted:#8a817c;--serif:Marcellus,Georgia,'Times New Roman',serif;--ok:#2e9e5b;--err:#d9534f;--warn:#e39b2d;--r:10px;--side:250px}
*{box-sizing:border-box}
html,body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}
a{color:var(--primary);text-decoration:none}
h1,h2,h3,.stat-t,.lh-name,legend,.login-card h2,.brand #brandName{font-family:var(--serif);font-weight:400;color:var(--head)}h1{font-size:28px;margin:0}h2{font-size:21px}h3{font-size:17px;margin:0}
.hide{display:none!important}.muted{color:var(--muted)}.small{font-size:12px}.r{text-align:right}.num{font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.err{color:var(--err)}.grow{flex:1}
.ico{width:18px;height:18px;fill:currentColor;flex:none}

/* ----- layout ----- */
#app{display:flex;min-height:100vh}
#side{width:var(--side);background:linear-gradient(180deg,var(--side1),var(--side2));color:#fff;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:30;overflow:hidden}
.brand{display:flex;gap:12px;align-items:center;padding:18px 14px;margin:0 10px;border-bottom:1px solid rgba(190,161,90,.35)}
.brand img{width:52px;height:52px;border-radius:50%;background:#fff;object-fit:contain;padding:2px;border:2px solid var(--accent)}
#brandName{color:#fff!important;line-height:1.2;font-size:18px}.brand .muted{color:var(--accent)!important;font-size:13px}
.side-search{padding:10px 12px}.side-search input{width:100%;border:0;border-radius:8px;padding:8px 10px;background:rgba(255,255,255,.14);color:#fff}.side-search input::placeholder{color:rgba(255,255,255,.65)}
#nav{flex:1;overflow-y:auto;padding:4px 8px 20px}
.nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;color:#fff;border:0;background:none;font:inherit;border-radius:8px;cursor:pointer;text-align:left;opacity:.92}
.nav-item:hover{background:rgba(255,255,255,.08);opacity:1}.nav-item.on{background:rgba(255,255,255,.12);opacity:1;box-shadow:inset 3px 0 0 var(--accent)}
.nav-item i{margin-left:auto;font-style:normal;transition:.2s}
.nav-group.open>.grp i{transform:rotate(90deg)}
.nav-sub{display:none;padding:2px 0 6px 38px}.nav-group.open .nav-sub{display:block}
.nav-sub a{display:block;color:rgba(255,255,255,.82);padding:6px 8px;border-radius:6px;font-size:13px}
.nav-sub a:hover{color:#fff;background:rgba(255,255,255,.08)}.nav-sub a.on{color:#fff;background:rgba(255,255,255,.12);font-weight:600;box-shadow:inset 3px 0 0 var(--accent)}
.side-foot{padding:10px 14px;color:rgba(255,255,255,.6)!important}
#wrap{margin-left:var(--side);flex:1;min-width:0;display:flex;flex-direction:column}
#top{height:58px;background:#fff;color:var(--text);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 18px;position:sticky;top:0;z-index:20}
#burger{display:none;background:none;border:0;color:var(--head);font-size:22px;cursor:pointer}
.gsearch{position:relative;flex:1;max-width:520px}
#gsearch{width:100%;border:1px solid var(--line);border-radius:20px;padding:9px 16px;background:#faf8f6;color:var(--text);font:inherit}
#gresults{position:absolute;top:44px;left:0;right:0;background:#fff;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.18);max-height:420px;overflow:auto;color:var(--text)}
#gresults a{display:flex;flex-direction:column;padding:9px 14px;border-bottom:1px solid var(--line);color:var(--text);position:relative}
#gresults a span{color:var(--muted);font-size:12px}#gresults a:hover{background:#f6f8fa}
#gresults em{position:absolute;right:12px;top:12px;font-style:normal;background:var(--accent);color:#fff;font-size:12px;padding:3px 8px;border-radius:12px}
.top-right{margin-left:auto;display:flex;align-items:center;gap:12px}
#top .pill{background:#faf4e5;color:var(--head);border:1px solid #eadcb6}
.user-menu{position:relative}
#userBtn{background:none;border:0;color:var(--text);display:flex;align-items:center;gap:8px;cursor:pointer;font:inherit}
#userInitial{width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:700}
#userDrop{position:absolute;right:0;top:44px;background:#fff;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.18);min-width:180px;overflow:hidden}
#userDrop a{display:block;padding:10px 14px;color:var(--text)}#userDrop a:hover{background:#f4f6f8}
#quick{background:var(--primary);display:flex;gap:4px;padding:0 18px;overflow-x:auto;justify-content:center}
#quick a{color:#fff;padding:10px 14px;white-space:nowrap;font-weight:500}#quick a:hover{background:rgba(0,0,0,.15);color:#f3e3b5}#quick .home{font-size:18px;padding:6px 12px}
main{padding:22px;max-width:1500px;width:100%}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.page-head .sub{color:var(--muted);margin-top:4px}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.loading{padding:60px;text-align:center;color:var(--muted)}

/* ----- controls ----- */
.btn{border:1px solid var(--line);background:#fff;color:var(--text);padding:8px 14px;border-radius:8px;font:inherit;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;text-decoration:none}
.btn:hover{border-color:#c7d0da;background:#fafbfc}
.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary);border-radius:10px}.btn.primary:hover{filter:brightness(1.08)}
.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn.danger{background:var(--err);color:#fff;border-color:var(--err)}.danger-t{color:var(--err)!important}
.btn.ok{background:var(--ok);color:#fff;border-color:var(--ok)}
.btn.ghost{background:transparent}.btn.sm{padding:4px 9px;font-size:12.5px}.btn.block{width:100%;justify-content:center;padding:11px}
.btn:disabled{opacity:.55;cursor:wait}
input,select,textarea{font:inherit;color:inherit;border:1px solid #cfd7e0;border-radius:8px;padding:8px 10px;background:#fff;min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 50%,transparent);border-color:var(--primary)}
input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary)}
.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.toolbar input[type=search]{min-width:200px}
.form .grid,.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px 14px}
.fld{display:flex;flex-direction:column;gap:5px}.fld>span{font-size:12.5px;font-weight:600;color:#47525e}.fld small{color:var(--muted);font-size:11.5px}
.fld.span2{grid-column:span 2}
fieldset{border:1px solid var(--line);border-radius:var(--r);padding:12px 14px 16px;margin:0 0 14px}legend{font-weight:700;color:var(--primary);padding:0 6px}
.chk{display:flex;gap:8px;align-items:center;font-weight:500}
.months{display:flex;flex-wrap:wrap;gap:6px}.months label{display:flex;gap:4px;align-items:center;border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:12.5px}
.img-in{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.img-in.wide img{width:100%;height:auto;max-height:140px;object-fit:contain}.img-in img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.pill{display:inline-block;padding:2px 9px;border-radius:12px;background:#eef1f4;font-size:12px;font-weight:600;color:#47525e}
.pill.ok{background:#e3f4ea;color:#1d7a44}.pill.err{background:#fbe7e6;color:#b33a36}.pill.warn{background:#fdf1df;color:#a3650c}.pill.info{background:#e4eefb;color:#2c5ea8}
.swatch{display:inline-block;width:18px;height:18px;border-radius:4px;vertical-align:middle;border:1px solid var(--line)}
.note{background:#faf4e5;border:1px solid #eadcb6;border-left:4px solid var(--accent);padding:10px 14px;border-radius:8px;margin-bottom:14px}
.note.warn{background:#fdf5e8;border-color:var(--accent)}.note.err{background:#fdeeed;border-color:var(--err)}
.empty{padding:40px;text-align:center;color:var(--muted);background:#fff;border:1px dashed var(--line);border-radius:var(--r)}.empty.sm{padding:16px;border:0}
.tabs{display:flex;gap:4px;border-bottom:2px solid var(--line);margin-bottom:14px;overflow-x:auto}
.tabs a,.tabs button{padding:9px 14px;color:var(--muted);font-weight:600;border:0;background:none;border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap;cursor:pointer;font:inherit}
.tabs a.on,.tabs button.on{color:var(--primary);border-color:var(--accent)}

/* ----- cards / tables ----- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin-bottom:16px}
.card-h{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.tbl-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:var(--r)}
.tbl{width:100%;border-collapse:collapse}
.tbl th{background:#f7f3ee;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:#56616d;padding:9px 10px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1;white-space:nowrap}
.tbl td{padding:8px 10px;border-bottom:1px solid #eef1f4;vertical-align:middle}
.tbl tbody tr:hover{background:#f9fbfc}.tbl tfoot td{font-weight:700;background:#f7f3ee;padding:9px 10px}
.tbl td .btn+.btn{margin-left:4px}
.tbl input,.tbl select{padding:5px 7px}
.kv{display:grid;grid-template-columns:160px 1fr;gap:6px 12px}.kv div:nth-child(odd){color:var(--muted)}
.row{display:flex;gap:16px;flex-wrap:wrap}.row>*{flex:1;min-width:260px}
.av{width:36px;height:36px;border-radius:50%;background:var(--primary);color:#fff;display:inline-grid;place-items:center;font-weight:700;flex:none}
.photo{width:36px;height:36px;border-radius:50%;object-fit:cover;vertical-align:middle}

/* ----- dashboard ----- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-bottom:16px}
.stat{border-radius:var(--r);color:#fff;padding:16px 16px 12px;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.stat.c1{background:linear-gradient(135deg,#8f3c2f,#6a251c)}.stat.c2{background:linear-gradient(135deg,#c9ad68,#a98a43)}
.stat-top{display:flex;gap:10px;align-items:flex-start}.stat-top .ico{width:26px;height:26px;opacity:.9;margin-top:3px}
.stat-t{color:#fff!important;letter-spacing:.05em;font-size:15px;opacity:.95}.stat-big{font-size:26px;font-weight:700}
.stat-rows{margin:10px 0}.stat-rows div{display:flex;justify-content:space-between;padding:6px 2px;border-top:1px solid rgba(255,255,255,.25)}
.stat-btns{display:grid;grid-template-columns:1fr 1fr;gap:6px}.stat-btns a{background:rgba(0,0,0,.14);color:#fff;text-align:center;padding:8px;border-radius:6px;font-weight:600;font-size:13px}.stat-btns a:hover{background:rgba(0,0,0,.24)}
.dash-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}.dash-grid .card{margin:0}
.alerts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.alert{padding:8px 12px;border-radius:8px;font-size:13px;font-weight:500;color:var(--text)}
.alert.warn{background:#fdf1df}.alert.danger{background:#fbe1df;color:#a3302c}.alert.info{background:#e4eefb}
.cal{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.cal-h{background:#f7f3ee;font-weight:600;text-align:center;padding:6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px}
.cal-d{min-height:78px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.cal-d .n{text-align:right;font-weight:600;font-size:12px}.cal-d.off{background:#faf7f3}.cal-d.today{background:#fff8ec;box-shadow:inset 0 0 0 2px var(--accent)}
.cal-d .tag{font-size:10.5px;color:var(--primary);background:#f6ece9;border-radius:4px;padding:1px 4px;align-self:flex-start}
.ev{font-size:11px;color:#fff;background:var(--primary);border-radius:4px;padding:2px 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev.Holiday{background:#d9534f}.ev.Exam{background:#7b4fd6}.ev.PTM{background:#2e9e5b}.ev.Activity{background:var(--accent)}
.bday-list{display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto}
.bday{display:flex;gap:10px;align-items:center;padding:6px;border-radius:8px;color:var(--text)}.bday:hover{background:#f6f8fa}
.bday img{width:38px;height:38px;border-radius:50%;object-fit:cover}.bday div{flex:1;display:flex;flex-direction:column}.bday span{font-size:12px;color:var(--muted)}.bday em{font-style:normal;font-size:12px;color:var(--accent);font-weight:600}
.notice{padding:8px 0;border-bottom:1px solid #eef1f4}
.chart{width:100%;height:160px;display:block}
.chart-x{display:flex;font-size:10px;color:var(--muted);margin-top:2px}.chart-x span{text-align:center;overflow:hidden;white-space:nowrap}
.span2{grid-column:span 1}

/* ----- fee collect ----- */
.fee-grid{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start}
.month-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.mcard{border:1.5px solid var(--line);border-radius:10px;padding:8px 10px;cursor:pointer;background:#fff;user-select:none}
.mcard.paid{background:#eef8f2;border-color:#bfe3cc;cursor:default;opacity:.8}.mcard.part{border-color:var(--accent)}.mcard.sel{border-color:var(--primary);background:#eaf3f7;box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 30%,transparent)}
.mcard .m{font-weight:700;display:flex;justify-content:space-between}.mcard .d{font-size:12px;color:var(--muted)}
.summary-box{position:sticky;top:120px}
.summary-box .line{display:flex;justify-content:space-between;padding:5px 0}.summary-box .tot{font-size:22px;font-weight:700;color:var(--primary);border-top:2px solid var(--line);padding-top:8px;margin-top:6px}
.stu-head{display:flex;gap:14px;align-items:center}.stu-head img,.stu-head .av{width:64px;height:64px;border-radius:12px;object-fit:cover;font-size:24px}

/* attendance */
.att-row{display:flex;gap:4px}.att-row label{border:1.5px solid var(--line);border-radius:6px;padding:4px 9px;cursor:pointer;font-weight:700;font-size:12.5px}
.att-row input{display:none}.att-row input:checked+span{color:#fff}
.att-row label:has(input:checked){border-color:transparent}
.reg td,.reg th{padding:4px 3px!important;text-align:center;font-size:11.5px}.reg td:nth-child(2),.reg th:nth-child(2){text-align:left;white-space:nowrap}
.reg .P{color:#1d7a44;font-weight:700}.reg .A{color:#fff;background:#e57b77}.reg .L{background:#fdf1df}.reg .H,.reg .W{background:#f1f3f5;color:#999}

/* login */
#login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,var(--side1),var(--side2));padding:20px}
.login-card{background:#fff;border-top:4px solid var(--accent);border-radius:16px;padding:32px;width:100%;max-width:380px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.login-card form{text-align:left;display:flex;flex-direction:column;gap:12px;margin-top:16px}
.login-logo{width:96px;height:96px;object-fit:contain;border-radius:50%;border:3px solid var(--accent);padding:3px}.login-mark{font-size:48px}

/* modal / toast */
.modal-wrap{position:fixed;inset:0;background:rgba(15,23,32,.45);display:flex;align-items:flex-start;justify-content:center;z-index:100;padding:40px 14px;overflow-y:auto}
.modal{background:#fff;border-radius:14px;width:100%;max-width:520px;box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal.wide{max-width:900px}.modal.xwide{max-width:1200px}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}
.modal-head .x{border:0;background:none;font-size:24px;cursor:pointer;color:var(--muted)}
.modal-body{padding:16px 18px;max-height:calc(100vh - 200px);overflow-y:auto}
.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line)}
#toasts{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:200}
.toast{background:#1f2a37;color:#fff;padding:11px 16px;border-radius:10px;box-shadow:0 6px 20px rgba(0,0,0,.25);transition:.3s;max-width:380px}
.toast.ok{background:#1d7a44}.toast.err{background:#b33a36}.toast.warn{background:#a3650c}.toast.out{opacity:0;transform:translateY(10px)}

/* ----- print ----- */
#print-area{display:none}
body.printing #app,body.printing #toasts,body.printing .modal-wrap{display:none!important}
body.printing #print-area{display:block}
@media print{html,body{background:#fff!important}#app,.modal-wrap,#toasts{display:none!important}#print-area{display:block!important}}
.lh{display:flex;align-items:center;gap:16px;border-bottom:3px solid var(--primary);padding-bottom:8px;margin-bottom:10px}
.lh-left{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:96px}.lh-logo{width:84px;height:84px;object-fit:contain}.lh-udise{font-size:10.5px;white-space:nowrap}
.lh-txt{flex:1;text-align:center}.lh-name{font-family:Arial,Helvetica,sans-serif!important;font-weight:800!important;font-size:26px;color:var(--primary)!important;text-transform:uppercase;letter-spacing:.01em;line-height:1.1}
.lh-trust{display:inline-block;background:var(--primary);color:#fff;font-weight:700;font-size:12px;padding:2px 12px;border-radius:5px;margin:4px 0 2px}
.lh-addr{font-size:12px;margin-top:2px}.lh-addr i{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:var(--primary);color:#fff;font-style:normal;font-size:9px;margin-right:5px;vertical-align:middle}
.lh-tag{font-style:italic;font-size:11px}.lh.compact .lh-logo{width:58px;height:58px}.lh.compact .lh-name{font-size:19px}.lh.compact .lh-left{min-width:70px}
.lh-img{width:100%;display:block;margin-bottom:8px}
.pdoc{font-family:Inter,Arial,sans-serif;color:#111;font-size:12.5px;page-break-after:always;break-after:page}
.pdoc:last-child{page-break-after:auto;break-after:auto}
.pdoc table.pt{width:100%;border-collapse:collapse}.pdoc .pt th,.pdoc .pt td{border:1px solid #444;padding:4px 6px}.pdoc .pt th{background:#eee}
.pdoc .ttl{text-align:center;font-weight:800;font-size:15px;margin:6px 0;letter-spacing:.05em}
.receipt-pair{display:grid;grid-template-columns:1fr 1fr;gap:8mm}.receipt-pair .receipt+.receipt{border-left:1px dashed #999;padding-left:4mm}
.receipt{padding:2px}.rc-top{display:grid;grid-template-columns:1fr 1fr 1fr;border:1.5px solid #222;background:#f2f2f2;font-weight:800;font-size:12.5px}.rc-top div{padding:6px 8px;border-right:1px solid #222}.rc-top div:last-child{border:0;text-align:right}.rc-top div:nth-child(2){text-align:center}
.rc-info{border:1.5px solid #222;border-top:0;padding:6px 8px;display:grid;grid-template-columns:auto 1fr auto 1fr;gap:4px 10px;font-size:12.5px}.rc-info b{font-weight:700}
.rc-tbl{width:100%;border-collapse:collapse;font-size:12.5px}.rc-tbl td,.rc-tbl th{border:1.5px solid #222;padding:5px 8px;text-align:left}.rc-tbl th{background:#f2f2f2}.rc-tbl td:last-child,.rc-tbl th:last-child{width:26%;white-space:nowrap}
.sign-row{display:flex;justify-content:space-between;margin-top:40px;font-weight:600}
.cert-page{border:6px double var(--primary);padding:24px 30px;min-height:260mm;position:relative}
.cert-table{width:100%;border-collapse:collapse;font-size:14px}.cert-table td{padding:6px 4px;border-bottom:1px dotted #999}.cert-table td:first-child{width:45%}
.idcards{display:grid;grid-template-columns:repeat(3,54mm);gap:5mm;justify-content:center}
.idc{width:54mm;height:86mm;border-radius:3mm;overflow:hidden;border:1px solid #bbb;font-size:8.5pt;display:flex;flex-direction:column;break-inside:avoid;background:#fff}
.idc-top{color:#fff;text-align:center;padding:2mm 2mm 6mm}.idc-top img{width:9mm;height:9mm;background:#fff;border-radius:50%;object-fit:contain}.idc-top b{display:block;font-size:8.5pt;line-height:1.15}
.idc-ph{width:22mm;height:26mm;object-fit:cover;border:2px solid #fff;border-radius:2mm;margin:-6mm auto 1mm;display:block;background:#eee}
.idc-name{text-align:center;font-weight:800;font-size:10pt}.idc-body{padding:1mm 3mm;flex:1}.idc-body div{display:flex;gap:2mm}.idc-body span{color:#666;min-width:15mm}
.idc-foot{text-align:center;font-size:7pt;color:#fff;padding:1.2mm}

@media (max-width:1100px){.dash-grid{grid-template-columns:1fr}.fee-grid{grid-template-columns:1fr}.summary-box{position:static}}
@media (min-width:1101px){.dash-grid .span2{grid-column:span 1}}
@media (max-width:860px){
  #side{transform:translateX(-100%);transition:.25s}body.nav-open #side{transform:none;box-shadow:0 0 40px rgba(0,0,0,.4)}
  #wrap{margin-left:0}#burger{display:block}main{padding:14px}#sessName,#userName{display:none}#quick{justify-content:flex-start}
  .fld.span2{grid-column:auto}.kv{grid-template-columns:120px 1fr}
}

/* ===================== v4 : CampusCover-style layout ===================== */
#quick{background:var(--accent);padding:0 10px;overflow:visible;position:sticky;top:58px;z-index:19;gap:0;flex-wrap:wrap}
#quick>a,#quick .qd>span{color:#2a1410;padding:9px 13px;font-weight:600;font-size:13.5px;cursor:pointer;display:block;white-space:nowrap}
#quick>a:hover,#quick .qd:hover>span{background:rgba(0,0,0,.08);color:#2a1410}
#quick .qd{position:relative}#quick .qd>span::after{content:' ▾';font-size:10px}
#quick .qdm{display:none;position:absolute;left:0;top:100%;background:#fff;min-width:210px;box-shadow:0 10px 26px rgba(0,0,0,.18);border-radius:0 0 8px 8px;padding:4px 0;z-index:40}
#quick .qd:hover>.qdm,#quick .qsub:hover>.qdm{display:block}
#quick .qdm a,#quick .qsub>span{display:block;padding:7px 14px;color:var(--text);font-size:13px;white-space:nowrap;cursor:pointer}
#quick .qdm a:hover,#quick .qsub:hover>span{background:#f7f0e4;color:var(--primary)}
#quick .qsub{position:relative}#quick .qsub>span::after{content:'›';float:right;margin-left:14px}
#quick .qsub>.qdm{left:100%;top:0;border-radius:0 8px 8px 0}
.nav-sub .nh{display:block;color:var(--accent);font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:8px 8px 2px;font-weight:700}
.page-head.cc{display:block;margin-bottom:12px}
.page-head.cc h1{text-align:center;font-size:19px;text-transform:uppercase;letter-spacing:.04em;margin:2px 0 10px}
.cc-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;background:#f3ece2;border:1px solid #e7dccb;border-radius:8px;padding:7px 10px;flex-wrap:wrap}
.cc-bar>b{font-size:13px;color:var(--head)}.cc-bar .actions .btn{padding:6px 11px;font-size:12.5px}
.page-head.cc .sub{text-align:center;margin:-6px 0 8px}
.ccf{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-bottom:12px;align-items:end}
.ccf .fld>span{font-size:11px;text-transform:uppercase;color:#7a6c62}
/* take student fees */
.tsf{display:grid;grid-template-columns:1.35fr 1fr;gap:14px}
.tsf .card{margin-bottom:0}
.tsf .lrow{display:grid;grid-template-columns:130px 1fr 1fr;gap:8px;align-items:center;margin-bottom:8px}
.tsf .lrow>label{font-weight:600;color:#47525e;font-size:13px}
.mbox{display:grid;grid-template-columns:110px 1fr;gap:8px;background:#f3f1ee;border-radius:8px;padding:10px;margin-top:10px;align-items:center}
.mbox.tr{background:#dff3e3}
.mbox .sa{text-align:center;font-weight:600;font-size:12.5px}
.mchk{display:grid;grid-template-columns:repeat(4,1fr);gap:6px 10px}
.mchk label{display:flex;gap:6px;align-items:center;font-size:13px;padding:3px 6px;border-radius:6px;cursor:pointer}
.mchk label.paid{color:var(--ok);font-weight:600}.mchk label.part{background:#fdf1df;color:#a3650c;font-weight:600}
.mchk label.nofee{opacity:.4;cursor:default}.mchk label.due input:checked+span{color:var(--primary);font-weight:700}
.mchk label small{display:block;font-size:10.5px;color:var(--muted);font-weight:400}
.sd .kv2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.sd .fld>span{font-size:12px}
.sd .stu{display:flex;gap:10px;align-items:center;margin-bottom:10px}.sd .stu img,.sd .stu .av{width:56px;height:56px;border-radius:10px;object-fit:cover}
.subh{color:var(--primary);text-align:center;font-weight:600;margin:8px 0 4px;font-size:13px}
.ttabs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0 8px}
.ttabs button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px;font:inherit;font-weight:600;cursor:pointer}
.ttabs button.on{background:var(--accent);color:#2a1410;border-color:var(--accent)}
.paybox .lr{display:grid;grid-template-columns:160px 1fr;gap:8px;align-items:center;margin-bottom:8px}
.paybox .lr input[readonly]{background:#f1efec}
.paybox .ap{color:var(--err);font-size:17px;font-weight:700;font-family:var(--serif)}
.collect-btn{background:var(--primary);color:#fff;border:0;border-radius:8px;padding:12px;font:inherit;font-weight:700;width:100%;cursor:pointer;font-size:15px}
.collect-btn small{display:block;font-weight:400;font-size:11px;opacity:.85}
.qlinks{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.qlinks a{border:1px solid var(--line);border-radius:8px;padding:8px 10px;color:var(--text);font-size:12.5px;background:#fff}
.qlinks a b{display:block;font-size:13px;color:var(--head)}
.rhist td small{display:block;color:var(--muted);font-size:11px}
.sess-row td{text-align:center;font-weight:700;background:#f7f3ee}
.ac-list{position:absolute;z-index:30;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 24px rgba(0,0,0,.15);max-height:300px;overflow:auto;width:100%}
.ac-list div{padding:7px 10px;cursor:pointer;font-size:13px}.ac-list div:hover,.ac-list div.on{background:#f7f0e4}
.acwrap{position:relative}
/* slide panel */
.slide{position:fixed;top:0;right:0;bottom:0;width:min(520px,100%);background:#fff;z-index:60;box-shadow:-10px 0 30px rgba(0,0,0,.2);overflow:auto;padding:18px;transform:translateX(100%);transition:.25s}
.slide.on{transform:none}.slide-bg{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:59}
/* attendance */
.pal{display:inline-flex;border:1px solid var(--line);border-radius:20px;overflow:hidden}
.pal button{border:0;background:#fff;padding:6px 14px;font:inherit;font-weight:600;cursor:pointer;font-size:12.5px}
.pal button.on.P{background:var(--ok);color:#fff}.pal button.on.A{background:var(--err);color:#fff}.pal button.on.L{background:var(--warn);color:#fff}.pal button.on.H{background:#6b7c93;color:#fff}
.asheet td,.asheet th{text-align:center;padding:4px 3px!important;font-size:11.5px;min-width:44px}
.asheet td:first-child,.asheet th:first-child{text-align:left;min-width:170px;position:sticky;left:0;background:#fff;z-index:2}
.ab{display:inline-block;border-radius:4px;padding:1px 5px;font-weight:700;font-size:11px;color:#fff}
.ab.P{background:var(--ok)}.ab.A{background:var(--err)}.ab.L{background:var(--warn)}.ab.H{background:#9aa5b1}.ab.HD{background:#7c6bb0}
.asheet .hol{color:#c0392b;font-size:10px;font-weight:600}
.asheet .it{display:block;font-size:9.5px;color:var(--muted)}
/* cards grid */
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.cgrid .card{margin:0}
.ledger td.g{background:#d9f0dc}
.bar-h{height:10px;border-radius:6px;background:linear-gradient(90deg,var(--primary),var(--accent))}
@media(max-width:900px){.tsf{grid-template-columns:1fr}.mchk{grid-template-columns:repeat(3,1fr)}.ttabs{grid-template-columns:1fr 1fr}}
@media print{#quick{display:none!important}}
.acwrap input{width:100%}
.ccf .btn{white-space:normal;justify-content:center;line-height:1.2}
/* v6: phone screens (≤600px) — nothing wider than the screen */
@media (max-width:600px){
  .dash-grid{grid-template-columns:minmax(0,1fr)!important}
  .dash-grid>*,.card{min-width:0}
  .row>*{min-width:100%}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px}
  .mchk{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .ttabs{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .card>table.tbl,.card>form>table.tbl,#g>table.tbl{display:block;overflow-x:auto}
  .lvrow{grid-template-columns:1fr 1fr!important}
}
