:root{
  --primary:#8b5e34;
  --primary-dark:#5f3f22;
  --secondary:#172033;
  --success:#11965d;
  --danger:#dc2626;
  --warning:#d97706;
  --orange:#ea580c;
  --muted:#6b7280;
  --text:#111827;
  --bg:#f8f4ed;
  --card:#ffffff;
  --border:#e7dccd;
  --soft:#fff7ed;
  --shadow:0 18px 44px rgba(44,30,17,.10);
  --nav-height:78px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:smooth}
body{
  margin:0;
  color:var(--text);
  background:
    radial-gradient(circle at 12% -10%,#f7dfc0 0,#fffaf3 30%,transparent 58%),
    radial-gradient(circle at 90% 0%,#dbeafe 0,transparent 30%),
    linear-gradient(180deg,#fffaf3 0,#f8f4ed 100%);
  font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
  min-height:100vh;
}
button,input,select,textarea{font:inherit}
button{border:0;cursor:pointer}
button:disabled{opacity:.55;cursor:not-allowed}
a{color:inherit}
.app-shell{
  max-width:980px;
  min-height:100vh;
  margin:0 auto;
  padding:12px 12px calc(var(--nav-height) + 16px);
}
.topbar{
  position:sticky;
  top:0;
  z-index:40;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:12px 10px;
  background:rgba(255,250,243,.88);
  backdrop-filter:blur(18px);
  border-bottom:1px solid rgba(226,232,240,.75);
}
.brand-block{display:flex;align-items:center;gap:10px;min-width:0}
.brand-icon{
  width:42px;height:42px;border-radius:17px;
  display:grid;place-items:center;
  background:linear-gradient(135deg,#8b5e34,#c09361);
  color:white;box-shadow:0 10px 22px rgba(139,94,52,.25);
}
.brand-block h1{font-size:19px;margin:0;letter-spacing:-.04em}
.brand-block p{font-size:12px;margin:1px 0 0;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}
.topbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.user-strip{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:rgba(255,255,255,.80);
  border:1px solid rgba(226,232,240,.85);
  border-radius:22px;
  padding:10px 12px;
  margin:8px 0 12px;
  box-shadow:0 8px 20px rgba(15,23,42,.05);
}
.user-strip strong{display:block;font-size:13px;max-width:68vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mini-muted{display:block;font-size:11px;color:var(--muted);margin-top:1px}
.admin-badge{font-size:10px;font-weight:900;letter-spacing:.07em;color:#854d0e;background:#fef9c3;border:1px solid #fde68a;border-radius:999px;padding:6px 9px;white-space:nowrap}
.main-content{display:block}
.view{display:none;animation:fadeUp .2s ease both}
.view.active{display:block}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.card,.toolbar-card{
  background:rgba(255,255,255,.94);
  border:1.4px solid rgba(231,220,205,.95);
  border-radius:26px;
  box-shadow:var(--shadow);
}
.compact-card{padding:16px;margin-bottom:14px}
.toolbar-card{padding:14px 14px;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:10px}
h2{font-size:18px;margin:0 0 3px;letter-spacing:-.03em}
p{line-height:1.45}
.toolbar-card p,.section-title-row p,.compact-card>p{font-size:12px;color:var(--muted);margin:0}
.section-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.pill-btn,.mini-btn,.icon-btn,.soft-btn{
  border-radius:999px;
  font-weight:800;
  transition:transform .16s ease, box-shadow .16s ease, background .16s ease;
}
.pill-btn{padding:10px 14px;font-size:13px;color:#fff;box-shadow:0 9px 18px rgba(15,23,42,.10)}
.pill-btn:active,.mini-btn:active,.icon-btn:active,.soft-btn:active,.fab:active{transform:scale(.96)}
.primary{background:linear-gradient(135deg,var(--primary),#c09361)}
.success{background:linear-gradient(135deg,var(--success),#22c55e)}
.danger{background:linear-gradient(135deg,var(--danger),#ef4444)}
.ghost{background:#e2e8f0;color:#0f172a;box-shadow:none}
.icon-btn{width:38px;height:38px;background:#e2e8f0;color:#0f172a;display:grid;place-items:center}
.mini-btn{padding:8px 11px;background:#fff1dc;color:#7c4a1d;font-size:12px;border:1px solid #efd8ba}
.soft-btn{background:#f1f5f9;color:#0f172a;padding:12px 14px;text-align:left;border:1px solid #e2e8f0}
.danger-text{color:#b91c1c}
.hidden{display:none!important}
.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:12px}
.stat-card{
  border-radius:24px;
  padding:14px;
  min-height:96px;
  background:linear-gradient(145deg,#fff,#fffaf3);
  border:1.4px solid rgba(231,220,205,.95);
  box-shadow:0 12px 26px rgba(44,30,17,.065);
}
.stat-card strong{display:block;font-size:24px;letter-spacing:-.04em;margin-top:6px}
.stat-card span{font-size:12px;color:var(--muted);font-weight:700}
.stat-card small{display:block;margin-top:5px;color:var(--muted);font-size:10px}
.collection-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.metric-pill{background:#fffaf3;border:1.3px solid #eadcc8;border-radius:18px;padding:10px}
.metric-pill span{font-size:11px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.metric-pill strong{display:block;margin-top:3px;font-size:18px;letter-spacing:-.03em}
.mini-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:12px}
.search-box,.input,textarea.input,select.input{
  width:100%;border:1.3px solid #d6c4ae;border-radius:18px;padding:13px 13px;
  background:rgba(255,255,255,.96);outline:none;color:#0f172a;
  transition:border .15s ease, box-shadow .15s ease, transform .15s ease;
}
.search-box{margin:0 0 12px;box-shadow:0 8px 20px rgba(15,23,42,.04)}
.input:focus,.search-box:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(139,94,52,.14)}
.filter-row{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:10px}
.student-grid{display:grid;grid-template-columns:1fr;gap:10px}
.student-card,.stack-item,.record-item{
  background:rgba(255,255,255,.94);
  border:1.4px solid rgba(231,220,205,.95);
  border-radius:24px;
  padding:13px;
  box-shadow:0 10px 22px rgba(15,23,42,.055);
}
.student-card-top{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center}
.avatar{
  width:46px;height:46px;border-radius:18px;display:grid;place-items:center;
  background:linear-gradient(135deg,#dbeafe,#e0e7ff);color:#1e40af;font-weight:900;
  overflow:hidden;flex:none;border:1px solid rgba(37,99,235,.12)
}
.avatar img{width:100%;height:100%;object-fit:cover;display:block}
.avatar.large{width:66px;height:66px;border-radius:24px;font-size:22px}
.avatar.xl{width:78px;height:78px;border-radius:30px;font-size:25px;margin:0 auto 12px;background:linear-gradient(135deg,#8b5e34,#c09361);color:#fff}
.student-main h3{margin:0 0 3px;font-size:15px;letter-spacing:-.02em}
.student-main p{font-size:12px;color:var(--muted);margin:0}
.status-chip{
  border-radius:999px;padding:5px 8px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap
}
.chip-paid{background:#dcfce7;color:#166534}
.chip-due{background:#fee2e2;color:#991b1b}
.chip-partial{background:#ffedd5;color:#9a3412}
.chip-overdue{background:#7f1d1d;color:#fee2e2}
.chip-inactive{background:#e2e8f0;color:#475569}
.student-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:12px 0}
.meta-box{background:#f8fafc;border-radius:15px;padding:8px;border:1px solid #eef2f7;min-width:0}
.meta-box span{display:block;font-size:10px;color:var(--muted);font-weight:800;text-transform:uppercase}
.meta-box strong{display:block;font-size:12px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-actions,.item-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}
.action-btn{padding:8px 10px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:900}
.action-btn.green{background:#dcfce7;color:#166534}
.action-btn.orange{background:#ffedd5;color:#9a3412}
.action-btn.red{background:#fee2e2;color:#991b1b}
.stack-list,.records-list{display:grid;gap:9px}
.stack-item{display:grid;gap:8px}
.item-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.item-head h3{margin:0;font-size:15px}.item-head p{margin:2px 0 0;color:var(--muted);font-size:12px}
.progress-bar{height:8px;background:#eadcc8;border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#22c55e,#8b5e34);border-radius:999px;width:0}
.record-item{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.record-item h3{margin:0 0 3px;font-size:14px}.record-item p{font-size:12px;color:var(--muted);margin:0}
.empty-state{padding:16px;border-radius:22px;background:rgba(255,255,255,.65);color:var(--muted);font-size:13px;border:1px dashed #cbd5e1;text-align:center}
.bottom-nav{
  position:fixed;left:50%;bottom:0;transform:translateX(-50%);z-index:60;
  width:min(980px,100%);height:var(--nav-height);
  display:grid;grid-template-columns:repeat(5,1fr);gap:4px;
  padding:8px 10px max(8px,env(safe-area-inset-bottom));
  background:rgba(255,255,255,.94);backdrop-filter:blur(20px);
  border-top:1px solid rgba(226,232,240,.9);box-shadow:0 -10px 28px rgba(15,23,42,.10)
}
.nav-btn{background:transparent;border-radius:19px;color:#64748b;display:grid;place-items:center;padding:7px 4px;gap:2px;font-weight:900}
.nav-btn span{font-size:20px;line-height:1}.nav-btn small{font-size:10px}.nav-btn.active{background:#fff1dc;color:#7c4a1d}
.fab{
  position:fixed;right:16px;bottom:calc(var(--nav-height) + 14px);z-index:70;
  width:58px;height:58px;border-radius:23px;background:linear-gradient(135deg,#8b5e34,#c09361);color:#fff;
  font-size:30px;box-shadow:0 18px 35px rgba(139,94,52,.32);display:grid;place-items:center;
}
.toast{
  position:fixed;left:50%;bottom:calc(var(--nav-height) + 78px);transform:translateX(-50%);z-index:100;
  max-width:92vw;background:#0f172a;color:#fff;border-radius:999px;padding:11px 15px;font-size:13px;box-shadow:0 14px 30px rgba(15,23,42,.2)
}
.modal-sheet{border:0;background:transparent;padding:0;width:min(720px,100%);max-width:100%;max-height:100vh;margin:auto auto 0;overflow:visible}
.modal-sheet::backdrop{background:rgba(15,23,42,.42);backdrop-filter:blur(3px)}
.modal-card{
  background:#fff;border-radius:30px 30px 0 0;padding:16px;
  max-height:92vh;overflow:auto;box-shadow:0 -20px 60px rgba(15,23,42,.25);
}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px;position:sticky;top:0;background:#fff;z-index:2;padding-bottom:8px;border-bottom:1px solid #eef2f7}
.modal-head p{font-size:12px;color:var(--muted);margin:0}
.form-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:10px}
.form-grid label,.modal-card>label{display:block;font-size:12px;color:#334155;font-weight:900;margin-bottom:10px;text-transform:uppercase;letter-spacing:.03em}
.form-grid input,.form-grid select,.modal-card textarea,.modal-card>label input{margin-top:6px;text-transform:none;font-weight:500;letter-spacing:0;color:#0f172a}
.modal-actions{display:flex;justify-content:flex-end;gap:9px;flex-wrap:wrap;margin-top:14px;padding-bottom:5px}
.photo-upload-row{display:flex;align-items:center;gap:12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:22px;padding:10px;margin-bottom:12px}
.file-input{display:none}.file-label{display:inline-block;background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:9px 12px;font-weight:900;font-size:12px}
.profile-card{text-align:center;padding:20px;margin-bottom:12px}.profile-card p{font-size:13px;color:var(--muted)}
.feature-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:12px}.feature-list span{background:#f8fafc;border:1px solid #e2e8f0;border-radius:999px;padding:7px 9px;font-size:12px;font-weight:800}
.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.profile-hero{text-align:center}.profile-hero h3{margin:8px 0 3px;font-size:20px}.profile-hero p{margin:0;color:var(--muted);font-size:12px}
.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.info-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:17px;padding:10px}.info-box span{font-size:10px;color:var(--muted);font-weight:900;text-transform:uppercase}.info-box strong{display:block;margin-top:2px;font-size:13px;word-break:break-word}
.invoice-paper{background:#fff;border:1px solid #e2e8f0;border-radius:24px;padding:18px;color:#0f172a}.invoice-title{display:flex;justify-content:space-between;gap:12px;border-bottom:2px solid #0f172a;padding-bottom:12px;margin-bottom:13px}.invoice-title h2{font-size:21px}.invoice-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.invoice-row p{background:#f8fafc;border-radius:14px;padding:9px;margin:0;font-size:13px}.invoice-total{margin-top:14px;background:#eff6ff;border-radius:18px;padding:12px;text-align:right}.invoice-total strong{font-size:24px}.signatures{display:flex;justify-content:space-between;gap:18px;margin-top:36px}.signature-line{border-top:1.6px solid #0f172a;min-width:130px;text-align:center;font-size:12px;font-weight:900;padding-top:7px}
.attendance-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.att-buttons{display:flex;gap:6px}.att-btn{border-radius:999px;padding:8px 9px;font-size:11px;font-weight:900;background:#e2e8f0;color:#334155}.att-btn.active.present{background:#dcfce7;color:#166534}.att-btn.active.absent{background:#fee2e2;color:#991b1b}.att-btn.active.late{background:#fef3c7;color:#92400e}
@media(min-width:720px){
  .stats-grid{grid-template-columns:repeat(4,1fr)}
  .student-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mini-metrics,.collection-summary{grid-template-columns:repeat(4,1fr)}
  .modal-card{border-radius:30px;padding:20px;margin-bottom:20px}.modal-sheet{margin:auto}.bottom-nav{border-radius:26px 26px 0 0}
}
@media(max-width:374px){.brand-block p{max-width:130px}.pill-btn{padding:9px 11px}.stats-grid,.collection-summary,.mini-metrics{gap:7px}.stat-card strong{font-size:20px}.student-meta{grid-template-columns:1fr 1fr}.fab{width:52px;height:52px}}
@media print{
  body *{visibility:hidden!important}
  #invoiceContent,#invoiceContent *{visibility:visible!important}
  #invoiceContent{position:absolute;left:0;top:0;width:100%;padding:0;margin:0}
  .no-print{display:none!important}
  .invoice-paper{border:0;border-radius:0;box-shadow:none}
}


/* Final professional polish + login gate */
.brand-icon{display:none}
.brand-logo{width:46px;height:46px;border-radius:18px;object-fit:cover;box-shadow:0 10px 24px rgba(139,94,52,.18);border:1px solid rgba(139,94,52,.18);background:#fff}
.brand-block h1{font-size:17px;line-height:1.1;max-width:170px}
.locked .main-content,.locked .bottom-nav,.locked .fab{display:none!important}
.locked .user-strip{display:none}
.login-gate{display:none;min-height:calc(100vh - 110px);align-items:center;justify-content:center;padding:18px 4px 40px}
.locked .login-gate{display:flex}
.login-card{width:min(470px,100%);background:rgba(255,255,255,.92);border:1.4px solid rgba(231,220,205,.96);border-radius:34px;padding:26px 18px;text-align:center;box-shadow:0 24px 64px rgba(44,30,17,.14)}
.login-logo{width:104px;height:104px;border-radius:38px;object-fit:cover;box-shadow:0 18px 38px rgba(139,94,52,.22);border:1px solid #eadcc8;background:#fff;margin-bottom:14px}
.eyebrow{display:inline-flex;background:#fff7ed;color:#7c4a1d;border:1px solid #efd8ba;border-radius:999px;padding:7px 11px;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}
.login-card h2{font-size:27px;margin:4px 0 6px;letter-spacing:-.055em}
.login-card p{font-size:14px;color:#4b5563;margin:0 auto 16px;max-width:370px}
.login-card small{display:block;color:#6b7280;margin-top:12px;font-size:11px}
.login-main-btn{width:100%;max-width:310px;border-radius:999px;padding:14px 18px;background:linear-gradient(135deg,#8b5e34,#c09361);color:#fff;font-weight:900;box-shadow:0 16px 32px rgba(139,94,52,.25)}
.login-main-btn:active{transform:scale(.98)}
.clean-settings{border:1.4px solid #eadcc8;background:linear-gradient(145deg,#fff,#fffaf3)}
.settings-logo{width:96px;height:96px;border-radius:34px;object-fit:cover;box-shadow:0 18px 38px rgba(139,94,52,.18);border:1px solid #eadcc8;margin:0 auto 12px;display:block;background:#fff}
.feature-list{display:none!important}
.card,.toolbar-card,.student-card,.stack-item,.record-item{border-width:1.4px}
.student-card,.stack-item,.record-item{box-shadow:0 12px 28px rgba(44,30,17,.07)}
.action-btn{min-height:36px;padding:9px 12px;display:inline-flex;align-items:center;justify-content:center}
.attendance-row{display:block}.attendance-row>div:first-child h3{margin:0 0 2px;font-size:16px}.attendance-row>div:first-child p{margin:0 0 10px;color:var(--muted);font-size:12px}
.att-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%}
.att-btn{border-radius:18px;padding:13px 8px;font-size:13px;min-height:48px;border:1.3px solid #e2e8f0;background:#f8fafc;color:#334155;display:flex;align-items:center;justify-content:center;gap:4px}
.att-btn.present::before{content:'✓'}.att-btn.absent::before{content:'✕'}.att-btn.late::before{content:'◷'}
.att-btn.active.present{background:#dcfce7;color:#166534;border-color:#86efac}.att-btn.active.absent{background:#fee2e2;color:#991b1b;border-color:#fecaca}.att-btn.active.late{background:#fef3c7;color:#92400e;border-color:#fde68a}
.invoice-paper{border:1.4px solid #eadcc8;background:linear-gradient(180deg,#fff,#fffaf3);overflow:hidden;max-width:760px;margin:auto}.invoice-title{border-bottom:1.8px solid #8b5e34}.invoice-title p{color:#7c4a1d;font-weight:800}.invoice-total{background:#fff1dc;color:#3f2a17}.invoice-row p{word-break:break-word;background:#fff;border:1px solid #f0e3d2}.signature-line{border-top-color:#8b5e34}
@media(max-width:420px){.brand-block h1{font-size:15px;max-width:145px}.brand-logo{width:42px;height:42px;border-radius:16px}.topbar{gap:6px}.topbar-actions{gap:5px}.pill-btn{font-size:12px;padding:9px 11px}.login-card{padding:22px 14px;border-radius:30px}.login-logo{width:92px;height:92px;border-radius:32px}.login-card h2{font-size:24px}.invoice-row{grid-template-columns:1fr}.signatures{gap:28px;flex-direction:column}.signature-line{width:100%;min-width:0}}
@media print{body{background:#fff!important}.invoice-title,.invoice-row,.invoice-total,.signatures{break-inside:avoid}.invoice-paper{width:100%;max-width:100%;padding:16px!important}.invoice-row{grid-template-columns:1fr 1fr!important}.invoice-row p{font-size:12px!important}.invoice-title h2{font-size:18px!important}.invoice-total strong{font-size:22px!important}}
.class-filter{margin:-2px 0 12px}.student-class-sections{display:grid;gap:14px}.class-section{border:1.4px solid #eadcc8;border-radius:26px;background:rgba(255,255,255,.55);padding:10px;box-shadow:0 10px 26px rgba(44,30,17,.045)}.class-title{display:flex;align-items:center;justify-content:space-between;margin:2px 3px 10px}.class-title strong{font-size:14px;color:#3f2a17}.class-title span{font-size:11px;color:#7c4a1d;background:#fff1dc;border:1px solid #efd8ba;border-radius:999px;padding:5px 8px;font-weight:900}
.invoice-brand{display:flex;align-items:center;gap:10px}.invoice-brand img{width:44px;height:44px;border-radius:16px;object-fit:cover;border:1px solid #eadcc8;flex:none}.invoice-title>div:last-child{word-break:break-word;max-width:45%}@media(max-width:420px){.invoice-title{align-items:flex-start}.invoice-brand img{width:38px;height:38px}.invoice-title>div:last-child{max-width:42%;font-size:12px}}

/* Professional app-store style polish */
:root{
  --primary:#9a6a3c;
  --primary-dark:#4a2f1c;
  --secondary:#111827;
  --bg:#f7f1e8;
  --border:#dac8b2;
  --shadow:0 18px 42px rgba(53,33,18,.12);
}
body{
  background:
    radial-gradient(circle at 10% -8%, rgba(194,143,85,.25), transparent 38%),
    radial-gradient(circle at 90% 6%, rgba(15,23,42,.09), transparent 34%),
    linear-gradient(180deg,#fffaf1 0%,#f7f1e8 100%);
}
.topbar{
  border:1px solid rgba(218,200,178,.86);
  border-radius:0 0 26px 26px;
  box-shadow:0 12px 30px rgba(53,33,18,.08);
  margin:-12px -2px 0;
  padding:14px 12px;
}
.brand-logo{width:52px;height:52px;border-radius:21px;border:1.6px solid #c79c68;box-shadow:0 16px 34px rgba(90,57,30,.18)}
.brand-block h1{font-size:18px;max-width:205px;color:#1f160e;font-weight:950}
.build-badge{display:inline-flex;margin-top:4px;border:1px solid #e6d3ba;background:#fff8ed;color:#7b4a22;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:950;letter-spacing:.08em;text-transform:uppercase}
.user-strip{border:1.5px solid #dfcfba;background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(255,248,237,.94))}
.card,.toolbar-card,.student-card,.stack-item,.record-item,.class-section{
  border:1.6px solid rgba(218,200,178,.98);
  box-shadow:0 14px 34px rgba(53,33,18,.085);
}
.compact-card,.toolbar-card{position:relative;overflow:hidden}
.compact-card::before,.toolbar-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(180deg,#9a6a3c,#d0a06a)}
.stats-grid{gap:12px}
.stat-card{border:1.6px solid #dfcfba;background:linear-gradient(160deg,#fff,#fff8ed);box-shadow:0 14px 32px rgba(53,33,18,.08)}
.stat-card strong{color:#1f160e;font-weight:950}
.metric-pill{border:1.5px solid #e2d0b9;background:linear-gradient(180deg,#fff,#fffaf3)}
.stack-item h3,.record-item h3,.student-main h3{font-weight:950;color:#1f160e}
.pill-btn,.login-main-btn,.action-btn,.att-btn,.soft-btn,.mini-btn{touch-action:manipulation;user-select:none}
.login-card{border:1.7px solid #d5b994;background:linear-gradient(160deg,rgba(255,255,255,.96),rgba(255,248,237,.96));box-shadow:0 28px 76px rgba(53,33,18,.18)}
.login-card h2{color:#1f160e;font-weight:950}
.login-main-btn{background:linear-gradient(135deg,#5a381f,#b9854d);min-height:50px}
.bottom-nav{border:1.5px solid #dfcfba;background:rgba(255,250,243,.94);box-shadow:0 -10px 34px rgba(53,33,18,.11)}
.nav-btn.active{background:linear-gradient(135deg,#5a381f,#b9854d)!important;color:white;box-shadow:0 10px 20px rgba(90,56,31,.22)}
.fab{background:linear-gradient(135deg,#5a381f,#b9854d)!important;box-shadow:0 20px 40px rgba(90,56,31,.26)}
.action-btn{border:1px solid rgba(15,23,42,.05);box-shadow:0 8px 18px rgba(15,23,42,.08);border-radius:16px;font-weight:950}
.att-buttons{gap:10px}
.att-btn{border-radius:20px;min-height:58px;font-size:14px;font-weight:950;box-shadow:inset 0 0 0 1px rgba(255,255,255,.5),0 8px 18px rgba(15,23,42,.06)}
.att-btn.active.present{background:#16a34a;color:#fff;border-color:#16a34a}.att-btn.active.absent{background:#dc2626;color:#fff;border-color:#dc2626}.att-btn.active.late{background:#d97706;color:#fff;border-color:#d97706}
.invoice-paper{border:1.6px solid #d7c2a8;box-shadow:0 20px 48px rgba(53,33,18,.11)}
.invoice-title{background:#fff8ed;margin:-18px -18px 14px;padding:16px 18px 13px;border-bottom:1.8px solid #b9854d}
@media(max-width:420px){.brand-block h1{font-size:16px;max-width:170px}.brand-logo{width:48px;height:48px}.build-badge{font-size:8px}.att-btn{min-height:56px;font-size:13px}}

/* Payment ledger cleanup: no version labels, no flicker login, stronger mobile cards */
.build-badge{display:none!important}
.auth-loading .main-content,.auth-loading .bottom-nav,.auth-loading .fab,.auth-loading .user-strip,.auth-loading .login-gate{display:none!important}
.auth-loader{display:none;min-height:calc(100vh - 88px);align-items:center;justify-content:center;padding:24px 6px 44px}
.auth-loading .auth-loader{display:flex}
.loader-card{width:min(360px,100%);background:rgba(255,255,255,.92);border:1.5px solid #eadcc8;border-radius:30px;padding:26px 16px;text-align:center;box-shadow:0 22px 58px rgba(53,33,18,.14);display:grid;gap:8px;justify-items:center}
.loader-card strong{font-size:22px;letter-spacing:-.04em;color:#1f160e}.loader-card span{font-size:13px;color:#6b4b30;font-weight:700}
.locked .login-card p,.locked .login-card small{display:none!important}.locked .login-card{max-width:390px;padding:24px 16px}.eyebrow{margin-top:2px}.login-card h2{margin-bottom:16px}
#appSubtitle{font-weight:800;color:#7b4a22}.clean-settings.minimal-more p{display:none!important}.minimal-more{padding:24px 16px;text-align:center}.minimal-more h2{margin:0;color:#1f160e;font-size:22px}
.payment-class-sections,.attendance-sections{display:grid;gap:14px}.payment-section .stack-list{gap:10px}.payment-card.has-due{border-color:#fecaca;background:linear-gradient(160deg,#fff,#fff7f7)}.payment-card.has-due::before{content:"";display:block;height:4px;background:linear-gradient(90deg,#dc2626,#f97316);border-radius:999px;margin:-4px 0 10px}
.student-meta.four-cols{grid-template-columns:repeat(4,1fr)}@media(max-width:520px){.student-meta.four-cols{grid-template-columns:repeat(2,1fr)}}
.payment-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.payment-actions .action-btn{width:100%;min-height:44px}@media(max-width:360px){.payment-actions{grid-template-columns:1fr}}
.inline-records{display:grid;gap:8px;margin-top:10px}.inline-record{border:1px solid #eadcc8;background:#fffdf8;border-radius:16px;padding:9px 10px;display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center}.inline-record span{font-size:11px;color:#6b4b30;font-weight:800}.inline-record strong{font-size:13px;color:#1f160e}.inline-record div{grid-column:1/-1;display:flex;gap:8px}.tiny-link{background:#fff7ed;color:#7b4a22;border:1px solid #efd8ba;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:900}.danger-text{color:#991b1b;background:#fff5f5;border-color:#fecaca}
.billing-preview{border:1.5px solid #eadcc8;background:linear-gradient(160deg,#fff,#fff8ed);border-radius:22px;padding:12px;margin-bottom:12px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.billing-preview div{background:#fff;border:1px solid #f1e2cf;border-radius:16px;padding:8px}.billing-preview span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:#7b4a22;font-weight:900}.billing-preview strong{display:block;margin-top:3px;font-size:14px;color:#1f160e}@media(max-width:520px){.billing-preview{grid-template-columns:repeat(2,1fr)}}
.chip-advance{background:#ede9fe;color:#5b21b6}.chip-active{background:#dcfce7;color:#166534}
.attendance-row{padding:14px!important}.att-buttons{grid-template-columns:1fr;gap:9px}.att-btn{min-height:54px;font-size:15px;border-radius:18px;justify-content:flex-start;padding-left:18px}.att-btn::before{font-size:18px;width:24px;text-align:center}.att-btn.present{border-color:#bbf7d0;background:#f0fdf4}.att-btn.absent{border-color:#fecaca;background:#fff5f5}.att-btn.late{border-color:#fde68a;background:#fffbeb}@media(min-width:520px){.att-buttons{grid-template-columns:repeat(3,1fr)}.att-btn{justify-content:center;padding-left:8px}}
.student-card .card-actions{grid-template-columns:repeat(3,1fr)}@media(max-width:420px){.student-card .card-actions{grid-template-columns:1fr 1fr}.student-card .card-actions .red{grid-column:1/-1}}
.a4-invoice{width:100%;max-width:794px;min-height:1000px;padding:24px!important;background:#fff!important;border-radius:18px}.invoice-id-box{text-align:right;word-break:break-word;max-width:38%}.invoice-section-title{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#7b4a22;font-weight:950;margin:14px 0 8px}.invoice-note{font-size:13px;color:#334155;word-break:break-word}.invoice-brand img{background:#fff;object-fit:cover}.invoice-brand h2{font-size:20px;margin:0;letter-spacing:-.03em}.invoice-brand p{margin:3px 0 0;color:#7b4a22;font-weight:900}
@page{size:A4;margin:12mm}@media print{html,body{width:210mm;min-height:297mm;background:#fff!important}.modal-sheet[open]{position:static!important;display:block!important;background:#fff!important;padding:0!important}#invoiceContent{position:absolute!important;left:0!important;top:0!important;width:100%!important}.a4-invoice{width:186mm!important;max-width:none!important;min-height:273mm!important;border:0!important;border-radius:0!important;box-shadow:none!important;padding:8mm!important;margin:0 auto!important}.invoice-row{grid-template-columns:1fr 1fr!important}.invoice-title{margin:0 0 12px!important;padding:0 0 12px!important}.invoice-brand img{width:52px!important;height:52px!important}.invoice-total strong{font-size:28px!important}.invoice-note{font-size:12px!important}}
.auth-loading #loginBtn,.auth-loading #logoutBtn{display:none!important}
/* v8 admin index repair + compact ledger refinements */
.class-filter{width:100%;margin:0 0 12px!important;background:#fff;border:1.6px solid #d8c2a5;color:#2d1c10;font-weight:900}
.wide-save{width:100%;min-height:54px;margin:12px 0 16px;border-radius:20px;font-size:15px;box-shadow:0 14px 26px rgba(22,163,74,.18)}
.auto-status-field{background:#f8fafc!important;color:#1f160e!important;font-weight:900!important;border:1.5px solid #d7c2a8!important}
.payment-card.has-advance{border-color:#bbf7d0;background:linear-gradient(160deg,#fff,#f4fff8)}
.payment-card.has-advance::before{content:"";display:block;height:4px;background:linear-gradient(90deg,#16a34a,#22c55e);border-radius:999px;margin:-4px 0 10px}
.payment-actions .action-btn,.item-actions .action-btn{min-height:40px}
.attendance-row{border-width:1.5px!important}.att-buttons{display:grid!important;width:100%}.att-btn{border:1.5px solid transparent;box-shadow:0 7px 18px rgba(15,23,42,.06)}.att-btn.present::before{content:"✓"}.att-btn.absent::before{content:"✕"}.att-btn.late::before{content:"◷"}.att-btn.active{transform:translateY(-1px);box-shadow:0 10px 22px rgba(15,23,42,.1)}
@media(max-width:640px){.filter-row{grid-template-columns:1fr}.payment-class-sections .stack-list{gap:11px}.student-meta.four-cols{grid-template-columns:repeat(2,1fr)}}

/* Final v8 admin index repair */
.compact-payments{gap:10px!important}
.compact-payment-list{display:grid;gap:8px}
.payment-row{
  background:rgba(255,255,255,.97);
  border:1.45px solid #dfcfba;
  border-radius:20px;
  padding:10px;
  box-shadow:0 9px 20px rgba(53,33,18,.065);
}
.payment-row.has-due{border-color:#fecaca;background:linear-gradient(160deg,#fff,#fff8f8)}
.payment-row.has-advance{border-color:#bbf7d0;background:linear-gradient(160deg,#fff,#f6fff8)}
.pay-row-main{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:7px}
.pay-student-name{min-width:0}.pay-student-name strong{display:block;font-size:14px;font-weight:950;color:#1f160e;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:58vw}.pay-student-name span{display:block;font-size:11px;color:#7b6653;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:62vw}
.pay-mini-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:7px}
.pay-mini-grid div{background:#fffaf3;border:1px solid #eadcc8;border-radius:13px;padding:6px 6px;min-width:0}.pay-mini-grid span{display:block;font-size:9px;color:#7b4a22;font-weight:950;text-transform:uppercase;letter-spacing:.04em}.pay-mini-grid strong{display:block;font-size:12px;color:#1f160e;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pay-progress{height:5px;border-radius:999px;background:#eadcc8;overflow:hidden;margin-bottom:8px}.pay-progress i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#22c55e,#b9854d)}
.pay-actions.compact-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:0}.pay-actions.compact-actions .action-btn{min-height:36px;padding:7px 6px;border-radius:14px;font-size:11px;box-shadow:none}
.pay-actions.compact-actions .action-btn:only-child{grid-column:1/-1}.pay-actions.compact-actions .action-btn:nth-child(2):last-child{grid-column:span 2}
.selected-pay-student{border:1.5px solid #eadcc8;background:#fffaf3;border-radius:18px;padding:10px 12px;margin-bottom:10px}.selected-pay-student strong{display:block;font-size:15px;color:#1f160e}.selected-pay-student span{display:block;font-size:12px;color:#6b4b30;margin-top:2px;font-weight:700}
.inline-records.hidden{display:none!important}.inline-records{margin-top:8px;border-top:1px dashed #eadcc8;padding-top:8px}.inline-record{padding:7px 8px;border-radius:14px}.tiny-link{padding:5px 8px}
#paymentPreview.billing-preview{grid-template-columns:repeat(2,1fr);padding:10px;gap:7px}#paymentPreview.billing-preview div{padding:7px;border-radius:13px}#paymentPreview.billing-preview strong{font-size:13px}
@media(max-width:380px){.pay-mini-grid{grid-template-columns:repeat(2,1fr)}.pay-actions.compact-actions{grid-template-columns:1fr 1fr}.pay-actions.compact-actions .action-btn:last-child:nth-child(3){grid-column:1/-1}.pay-student-name strong,.pay-student-name span{max-width:52vw}}

/* Final v9 professional ledger/report polish */
.payment-row{padding:8px 9px;border-radius:18px}
.pay-mini-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-bottom:6px}
.pay-mini-grid div{padding:5px 5px;border-radius:12px}
.pay-row-main{margin-bottom:6px}.pay-progress{height:4px;margin-bottom:6px}.pay-actions.compact-actions .action-btn{min-height:34px;font-size:10.5px}
.inline-record span{font-size:10.5px}.inline-record strong{font-size:12px}
.month-filter{max-width:150px;min-width:130px;padding:10px 11px!important;border-radius:14px!important;font-weight:900}
.attendance-report{display:grid;gap:10px}.report-summary-row{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.report-summary-row div{background:#fffaf3;border:1px solid #eadcc8;border-radius:15px;padding:8px}.report-summary-row span{display:block;font-size:9px;font-weight:950;text-transform:uppercase;color:#7b4a22;letter-spacing:.04em}.report-summary-row strong{font-size:14px;color:#1f160e}.report-section{padding:8px!important}.report-table{display:grid;gap:6px}.report-row{display:grid;grid-template-columns:1.6fr .45fr .45fr .45fr .55fr;gap:5px;align-items:center;background:#fff;border:1px solid #eee1d1;border-radius:14px;padding:7px 8px;font-size:12px}.report-row span:first-child{min-width:0}.report-row b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.report-row small{display:block;color:#7b6653;font-size:10px}.report-row strong{text-align:right;color:#166534}.report-row.low-att{background:#fff7f7;border-color:#fecaca}.report-row.low-att strong{color:#991b1b}
@media(max-width:420px){.section-title-row{align-items:flex-start}.month-filter{max-width:132px;min-width:122px}.report-summary-row{grid-template-columns:1fr 1fr 1fr}.report-row{grid-template-columns:1.4fr .36fr .36fr .36fr .52fr;font-size:11px;padding:7px 6px}.pay-mini-grid strong{font-size:11px}.payment-row{padding:8px}}
.field-hint{display:block;margin-top:5px;color:#6b7280;font-size:10px;line-height:1.35;font-weight:600;text-transform:none;letter-spacing:0}

/* Final v14 UX, payment-helper polish, student shift */
.brand-block p{color:#7b4a22;font-weight:850;letter-spacing:.01em}
.small-reset{padding:8px 10px!important;font-size:11px!important;color:#3f2a17!important;background:#f3eadf!important;box-shadow:none!important;border:1px solid #eadcc8!important}
.minimal-login-card{display:flex;flex-direction:column;align-items:center;gap:8px}
.login-since{font-size:13px!important;color:#7b4a22!important;font-weight:900!important;margin:-4px 0 8px!important;letter-spacing:.02em}
.login-reset-btn{margin-top:8px;background:#f8fafc;color:#334155;border:1px solid #e2e8f0;border-radius:999px;padding:9px 13px;font-weight:900;font-size:12px}
.loader-card .login-reset-btn{margin-top:12px}
.readonly-input{background:#f8fafc!important;color:#6b7280!important}
.new-student-auto .field-hint{color:#166534!important}
.selected-pay-student small{display:block;margin-top:4px;color:#7b4a22;font-weight:800;font-size:11px;line-height:1.35}
.billing-service-note{grid-column:1/-1!important;background:#fff7ed!important;border-color:#efd8ba!important}
.billing-service-note strong{font-size:12px!important;line-height:1.35!important;color:#7b4a22!important}
.offline-card .soft-btn{justify-content:center;text-align:center;font-weight:900}
.auth-loading .small-reset{display:inline-flex!important}
@media(max-width:420px){.topbar-actions{max-width:112px}.small-reset{font-size:10px!important;padding:7px 8px!important}.brand-block h1{max-width:165px}.brand-block p{font-size:11px}}


/* Final v14 payment helper refinements */
.selected-pay-student .mini-section-label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#8b5e34;font-weight:950;margin-bottom:3px}
.selected-pay-student{background:linear-gradient(160deg,#fff,#fff8ed);}
.billing-preview{align-items:stretch}
.billing-service-note small{display:block;margin-top:5px;font-size:11px;line-height:1.35;color:#6b4b30;font-weight:800}
.billing-service-note strong{font-size:13px!important;color:#3b2412!important}
.form-grid label:has(#shift){order:5}
@media(max-width:520px){#paymentPreview.billing-preview{grid-template-columns:1fr 1fr}.billing-service-note{grid-column:1/-1!important}}


/* Final v15 smart collection and payment helper UX */
.collection-summary{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));}
.metric-pill small{display:block;margin-top:3px;color:#7b6653;font-size:10px;font-weight:800;line-height:1.25}
.metric-pill.smart-primary{background:linear-gradient(160deg,#fff7ed,#fef3c7);border-color:#e9c28b}
.metric-pill.danger-soft{background:#fff7f7;border-color:#fecaca}.metric-pill.danger-soft strong{color:#991b1b}
.metric-pill.orange-soft{background:#fff7ed;border-color:#fed7aa}.metric-pill.orange-soft strong{color:#9a3412}
.metric-pill.green-soft{background:#f0fdf4;border-color:#bbf7d0}.metric-pill.green-soft strong{color:#166534}
.payment-filter-grid{display:grid;grid-template-columns:1.35fr .9fr;gap:8px;margin:0 0 12px}
.payment-filter-grid .search-box,.payment-filter-grid .class-filter{margin:0!important;min-height:44px}
.payment-search{border:1.6px solid #d8c2a5!important;border-radius:16px!important;background:#fff!important;font-weight:800}
#paymentPreview.billing-preview{background:#fffefb;border:1.5px solid #eadcc8}
#paymentPreview .billing-service-note{padding:10px!important;border-radius:16px!important;background:linear-gradient(160deg,#fff7ed,#fffaf3)!important}
#paymentPreview .billing-service-note span{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#8b5e34;font-weight:950}
#paymentPreview .billing-service-note strong{display:block;margin-top:4px;font-size:13px!important;line-height:1.35;color:#2d1c10!important}
#paymentPreview .billing-service-note small{display:block;margin-top:6px;font-size:11px;line-height:1.35;color:#6b4b30;font-weight:850}
.selected-pay-student small{background:#fff;border:1px solid #eadcc8;border-radius:999px;padding:5px 8px;width:max-content;max-width:100%}
@media(max-width:480px){.payment-filter-grid{grid-template-columns:1fr}.collection-summary{grid-template-columns:1fr 1fr}.metric-pill small{font-size:9.5px}}


/* Final v16 one-page A4 receipt + WhatsApp share polish */
.invoice-modal-card{max-width:860px!important}
#invoiceActions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.invoice-id-box small{color:#6b7280;font-weight:700}
.a4-invoice{box-sizing:border-box!important;max-width:794px!important;min-height:0!important;margin:auto!important}.invoice-footer{display:flex;justify-content:space-between;gap:22px;margin-top:30px}.invoice-row-compact p{font-size:12px!important;line-height:1.3!important}.invoice-row-compact strong{font-size:10px!important;text-transform:uppercase;color:#6b4b2d;letter-spacing:.04em}
@page{size:A4;margin:10mm}
@media print{
  html,body{width:210mm!important;height:297mm!important;min-height:0!important;background:#fff!important;overflow:hidden!important}
  body *{visibility:hidden!important}
  #invoiceContent,#invoiceContent *{visibility:visible!important}
  #invoiceContent{position:absolute!important;left:0!important;top:0!important;width:100%!important;height:277mm!important;margin:0!important;padding:0!important;overflow:hidden!important}
  .modal-sheet[open],.modal-sheet[open]::backdrop{position:static!important;background:#fff!important;padding:0!important;overflow:hidden!important}
  .modal-card.invoice-modal-card{box-shadow:none!important;border:0!important;padding:0!important;margin:0!important;max-width:none!important;width:100%!important}
  .no-print,#invoiceActions,.modal-head{display:none!important}
  .a4-invoice{width:190mm!important;height:277mm!important;max-width:none!important;min-height:0!important;margin:0 auto!important;border:0!important;border-radius:0!important;box-shadow:none!important;padding:8mm!important;overflow:hidden!important;background:#fff!important;box-sizing:border-box!important;page-break-after:avoid!important;break-after:avoid!important}
  .invoice-title{margin:0 0 9px!important;padding:0 0 9px!important;break-inside:avoid!important}
  .invoice-brand img{width:42px!important;height:42px!important}.invoice-brand h2{font-size:18px!important}.invoice-brand p{font-size:12px!important}.invoice-id-box{font-size:11px!important;max-width:42%!important}.invoice-id-box strong{font-size:16px!important}
  .invoice-section-title{font-size:10px!important;margin:9px 0 5px!important}.invoice-row{grid-template-columns:1fr 1fr!important;gap:5px!important}.invoice-row p{padding:6px 7px!important;font-size:11px!important;line-height:1.25!important;border-radius:8px!important;background:#fff!important}.invoice-row strong{font-size:9px!important}.invoice-total{margin-top:8px!important;padding:8px 10px!important;border-radius:10px!important}.invoice-total strong{font-size:22px!important}.invoice-note{font-size:10.5px!important;margin-top:8px!important;max-height:28px!important;overflow:hidden!important}.invoice-footer{margin-top:26px!important}.signature-line{font-size:10.5px!important;padding-top:6px!important;min-width:135px!important}
}

/* ============================================================
   Final v17 — v16 logic + combined phone-frame UI polish
   ============================================================ */
:root{--frame-w:520px;--emerald:#059669;--emerald-dark:#047857;--emerald-soft:#ecfdf5;--stone-bg:#fafaf9;--stone-border:#e7e5e4;--stone-muted:#78716c;--stone-text:#1c1917;--due-red:#dc2626;--due-soft:#fee2e2;--paid-green:#10b981;--paid-soft:#d1fae5;--partial-orange:#f97316;--partial-soft:#ffedd5;--phone-nav:66px}
html,body{min-height:100%;background:linear-gradient(135deg,#ecfdf5 0%,#fafaf9 58%,#f0fdfa 100%);overscroll-behavior-y:contain;color:var(--stone-text)}
body{display:flex;justify-content:center;margin:0;font-family:Manrope,Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.app-shell{width:100%;max-width:var(--frame-w);min-height:100dvh;margin:0 auto;background:var(--stone-bg);position:relative;overflow-x:hidden;box-shadow:0 10px 34px rgba(28,25,23,.08)}
@media(min-width:600px){.app-shell{margin:24px auto;min-height:calc(100dvh - 48px);border:1px solid var(--stone-border);border-radius:32px;overflow:hidden}.modal-sheet{max-width:var(--frame-w)!important}.bottom-nav{border-radius:0 0 32px 32px}}
.main-content{padding:12px 16px calc(var(--phone-nav) + 26px + env(safe-area-inset-bottom));max-width:var(--frame-w);margin:0 auto}.view{animation:fadeUp .24s ease both}@keyframes fadeUp{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.app-topbar{height:58px;padding:calc(env(safe-area-inset-top) + 8px) 16px 8px;background:rgba(250,250,249,.88);backdrop-filter:blur(16px);border-bottom:1px solid rgba(231,229,228,.72);position:sticky;top:0;z-index:44;display:flex;align-items:center;justify-content:space-between}.greet-block{display:flex;flex-direction:column;line-height:1.12;min-width:0}.hello-text{font-size:12px;color:var(--stone-muted);font-weight:700}.greet-block strong{font-size:17px;font-weight:900;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;align-items:center;gap:8px}.user-avatar-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--stone-border);background:var(--paid-soft);color:var(--emerald-dark);font-weight:900;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(16,185,129,.08)}.large-avatar{width:54px;height:54px;font-size:18px;flex:0 0 auto}.user-strip{display:none!important}.locked .app-topbar{display:none}.locked .main-content,.locked .bottom-nav,.locked .fab{display:none!important}.auth-loading .main-content,.auth-loading .bottom-nav,.auth-loading .fab{display:none!important}
.login-gate{min-height:100dvh;padding:20px 20px 38px;background:linear-gradient(180deg,#ecfdf5 0%,#fafaf9 54%,#fff 100%);display:none!important}.locked .login-gate{display:flex!important;align-items:center;justify-content:center}.combined-login-card{background:transparent!important;border:0!important;box-shadow:none!important;padding:20px 0;text-align:center;max-width:360px;margin:auto}.combined-login-card .login-logo,.loader-card .login-logo{width:104px;height:104px;border-radius:32px;object-fit:cover;margin:0 auto 16px;box-shadow:0 18px 38px rgba(5,150,105,.20);border:1px solid #d1fae5;background:#fff}.combined-login-card h2{font-size:29px;letter-spacing:-.045em;margin:4px 0 3px;color:#1c1917}.combined-login-card .login-since{font-size:14px;font-weight:800;color:var(--emerald-dark);margin:0 0 16px}.login-features{display:grid;gap:10px;margin:16px 0 22px;text-align:left}.login-features li{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--stone-border);border-radius:18px;padding:12px 13px;color:#44403c;font-weight:800;font-size:13px;box-shadow:0 4px 12px rgba(28,25,23,.04)}.login-features li::before{content:'✓';display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--emerald-soft);color:var(--emerald-dark);font-weight:900}.login-main-btn{background:linear-gradient(135deg,#10b981,#059669)!important;box-shadow:0 10px 24px rgba(5,150,105,.28);border-radius:999px;max-width:320px}.combined-login-card small{display:block;margin-top:11px;color:#78716c;font-weight:700}.login-reset-btn{border:0;background:transparent;color:#78716c;font-weight:800;margin-top:8px}.auth-loader{position:fixed;inset:0;z-index:120;background:linear-gradient(180deg,#ecfdf5,#fafaf9);display:none;align-items:center;justify-content:center}.auth-loading .auth-loader{display:flex}.loader-card{background:transparent!important;border:0!important;box-shadow:none!important;text-align:center;display:grid;place-items:center;gap:8px}.spinner{width:26px;height:26px;border-radius:50%;border:3px solid #d1fae5;border-top-color:#059669;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.card,.toolbar-card,.student-card,.stack-item,.record-item,.payment-row{background:#fff;border:1px solid var(--stone-border);border-radius:24px;box-shadow:0 4px 14px rgba(28,25,23,.05)}.toolbar-card{padding:13px 14px}.toolbar-card h2{font-size:20px;letter-spacing:-.02em}.toolbar-card p,.section-title-row p{color:var(--stone-muted);font-size:12px}.stats-grid{gap:9px}.stat-card,.metric-pill{border:1px solid var(--stone-border);box-shadow:0 2px 8px rgba(28,25,23,.04);border-radius:20px}.stat-card strong,.metric-pill strong{letter-spacing:-.025em}.compact-filter-panel,.compact-payment-filters{display:grid;grid-template-columns:1fr 126px;gap:8px;align-items:center}.search-box,.input{border:1px solid var(--stone-border);background:#fff;border-radius:16px;min-height:44px}.class-filter{min-height:44px}.section-mini-title{font-weight:900;color:#57534e;margin:18px 4px 10px;font-size:15px}.account-card{padding:14px}.account-row{display:flex;align-items:center;gap:12px}.account-row h2{margin:0;font-size:17px}.account-row p{margin:2px 0 0;color:var(--stone-muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:330px}.settings-list{padding:0;overflow:hidden}.more-row{width:100%;border:0;background:#fff;padding:15px 16px;text-align:left;font-weight:900;color:#292524;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #f0efee}.more-row:last-child{border-bottom:0}.more-row::after{content:'›';color:#a8a29e;font-size:24px;line-height:1}.danger-row{color:#b91c1c}.muted-row{color:#78716c}.offline-mini-note{font-size:12px;color:var(--stone-muted);padding:0 4px;margin:12px 0 0}.about-doc{display:grid;gap:12px}.about-doc h3{margin:8px 0 0;font-size:16px}.about-doc p{margin:0;color:#57534e;line-height:1.65;font-size:14px}.bottom-nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:100%;max-width:var(--frame-w);height:calc(var(--phone-nav) + env(safe-area-inset-bottom));padding:7px 10px max(7px,env(safe-area-inset-bottom));background:rgba(255,255,255,.94);backdrop-filter:blur(18px);border-top:1px solid var(--stone-border);display:grid;grid-template-columns:repeat(5,1fr);gap:3px;z-index:65}.nav-btn{border:0;background:transparent;color:#78716c;display:grid;place-items:center;gap:1px;border-radius:18px;font-weight:900}.nav-btn.active{background:var(--emerald-soft);color:var(--emerald-dark)}.nav-btn small{font-size:10px}.fab{right:max(16px,calc((100vw - var(--frame-w))/2 + 16px));bottom:calc(var(--phone-nav) + 16px + env(safe-area-inset-bottom));background:linear-gradient(135deg,#10b981,#059669)!important;border-radius:999px;box-shadow:0 10px 26px rgba(5,150,105,.28)}
.student-grid{display:grid;grid-template-columns:1fr;gap:9px}.student-class-sections{display:grid;gap:14px}.class-title{padding:0 4px;margin:0 0 8px;display:flex;align-items:center;justify-content:space-between}.student-card.compact-student-card{padding:12px;cursor:pointer;display:grid;gap:7px;transition:transform .12s,box-shadow .12s}.student-card.compact-student-card:active{transform:scale(.985)}.compact-student-card .student-card-top{display:flex;align-items:center;gap:10px}.compact-student-card .avatar{width:44px;height:44px;border-radius:16px;flex:0 0 auto}.student-main h3{font-size:15px;margin:0 0 2px;line-height:1.15}.student-main p{font-size:12px;color:#57534e;margin:0;line-height:1.35}.student-due-box{text-align:right;min-width:78px;display:grid;gap:3px;justify-items:end}.student-due-box small{font-size:10px;color:#78716c}.student-due-box strong{font-size:13px}.due-red{color:#b91c1c}.paid-green{color:#047857}.status-chip{border-radius:999px;padding:5px 8px;font-size:10px;font-weight:900;white-space:nowrap}.chip-paid{background:var(--paid-soft);color:var(--emerald-dark)}.chip-due,.chip-overdue{background:var(--due-soft);color:#991b1b}.chip-partial{background:var(--partial-soft);color:#9a3412}.chip-advance{background:#ecfdf5;color:#047857}.click-hint{font-size:11px;color:#a8a29e;font-weight:800}.profile-card-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.profile-hero .avatar.large{margin:auto;width:82px;height:82px;border-radius:28px}.info-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.info-box{border-radius:17px}
.payment-tabs{display:flex;gap:7px;overflow:auto;padding:2px 0 10px;margin-top:4px;scrollbar-width:none}.payment-tabs::-webkit-scrollbar{display:none}.payment-tabs button{border:1px solid var(--stone-border);background:#fff;border-radius:999px;padding:9px 12px;font-weight:900;font-size:12px;color:#57534e;white-space:nowrap}.payment-tabs button.active{background:var(--emerald);border-color:var(--emerald);color:#fff;box-shadow:0 8px 20px rgba(5,150,105,.20)}.payment-class-sections{display:grid;gap:14px}.compact-payment-list{display:grid;gap:9px}.payment-row.compact-ledger-card{padding:12px;display:grid;gap:9px}.pay-row-main{display:flex;align-items:center;gap:10px;justify-content:space-between}.pay-person{display:flex;align-items:center;gap:10px;min-width:0}.pay-person .avatar{width:42px;height:42px;border-radius:15px;flex:0 0 auto}.pay-student-name{min-width:0}.pay-student-name strong{font-size:15px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pay-student-name span{font-size:12px;color:#57534e;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pay-status-box{text-align:right;display:grid;gap:4px;justify-items:end;min-width:84px}.pay-status-box small{font-size:10px;color:#78716c}.pay-status-box strong{font-size:13px}.pay-actions.compact-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.action-btn{min-height:37px;border-radius:999px;font-weight:900}.action-btn.green{background:#d1fae5;color:#047857}.action-btn.orange{background:#ffedd5;color:#9a3412}.inline-records{border-top:1px dashed var(--stone-border);padding-top:8px}.inline-record{display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center;padding:7px 0;border-bottom:1px solid #f5f5f4}.inline-record:last-child{border-bottom:0}.tiny-link{border:0;background:#ecfdf5;color:#047857;font-weight:900;border-radius:999px;padding:5px 8px}.danger-text{color:#b91c1c;background:#fee2e2}.selected-pay-student{background:#f8fafc;border:1px solid var(--stone-border);border-radius:18px;padding:11px;margin-bottom:10px;display:grid;gap:2px}.selected-pay-student strong{font-size:17px}.selected-pay-student span,.selected-pay-student small{color:#57534e;font-size:12px}.billing-preview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;background:#fff;border:1px solid var(--stone-border);border-radius:22px;padding:10px;margin:10px 0}.billing-preview>div{background:#fafaf9;border:1px solid #f0efee;border-radius:15px;padding:8px}.billing-preview span{font-size:10px;color:#78716c;text-transform:uppercase;font-weight:900}.billing-preview strong{display:block;margin-top:2px;font-size:13px}.billing-service-note{grid-column:1/-1;background:#ecfdf5!important;border-color:#d1fae5!important}.billing-service-note strong{font-size:13px;line-height:1.45}.billing-service-note small{display:block;color:#047857;font-weight:800;margin-top:4px}.hidden{display:none!important}
@media(max-width:380px){.compact-filter-panel,.compact-payment-filters{grid-template-columns:1fr}.stats-grid,.collection-summary,.mini-metrics{gap:7px}.pay-actions.compact-actions{grid-template-columns:1fr}.bottom-nav{padding-left:6px;padding-right:6px}.nav-btn small{font-size:9px}}
.pay-actions.two-actions{grid-template-columns:1fr 1fr}.pay-actions.three-actions{grid-template-columns:repeat(3,1fr)}
