/* ============ TOKENS ============ */
/* Palette is drawn from the institution's own paper trail — the deep
   ledger-cover green and brass-seal gold that already appear on this
   system's transcripts, testimonials and receipts — carried into the
   working screens so the software and the documents it produces read
   as one institution, not two visual languages. */
:root{
  --pine:#123328;
  --pine-dark:#0A1F18;
  --pine-tint:#E6EBE4;
  --gold:#A9782E;
  --gold-tint:#F3E7CC;
  --cream:#F5F1E4;
  --paper:#FFFFFF;
  --ink:#1C231D;
  --ink-soft:#5B675C;
  --line:#DFDACA;
  --danger:#9C3226;
  --danger-tint:#F6E7E3;
  --radius:6px;
  --radius-lg:10px;
  --shadow:0 1px 0 rgba(19,32,25,.05), 0 3px 10px rgba(19,32,25,.06);
  --font-bn:'Times New Roman','Liberation Serif','Tinos','SolaimanLipi','Nikosh','SutonnyMJ',serif;
  --font-doc:'Times New Roman','Liberation Serif','Tinos','SolaimanLipi','Nikosh','SutonnyMJ',serif;
  /* সব জায়গায় একই ফন্ট: ইংরেজি = Times New Roman,
     বাংলা = SolaimanLipi → Nikosh → SutonnyMJ (বিস্তারিত css/fonts.css-এ) */
  --font-ui:var(--font-doc);
  --font-display:var(--font-doc);
  /* Scoped to the login hero panel only — a "connected systems" blue,
     distinct from the institutional green/gold used everywhere else. */
  --net-navy:#081522;
  --net-navy2:#0F2C46;
  --net-cyan:#5AD8F0;
  --net-cyan-dim:rgba(90,216,240,.4);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--cream);
  color:var(--ink);
  font-family:var(--font-ui);
  min-height:100vh;
}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--pine-dark);margin:0 0 4px;font-weight:400;}
button{font-family:inherit;cursor:pointer;}
input,select,textarea{font-family:inherit;}
::selection{background:var(--gold-tint);}
a{color:var(--pine);}

/* ============ LOGIN ============ */
.login-wrap{
  position:relative;
  min-height:100vh;
  display:flex;
  align-items:stretch;
  justify-content:center;
}
.login-side{
  flex:1.1;
  background:
    radial-gradient(circle at 82% 8%, rgba(255,255,255,.55), rgba(90,216,240,.22) 22%, transparent 42%),
    linear-gradient(165deg,var(--net-navy2) 0%, var(--net-navy) 65%);
  color:#fff;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:64px;
  position:relative;
  overflow:hidden;
}
.login-side .net-mesh{position:absolute;inset:0;width:100%;height:100%;opacity:.55;z-index:0;}
.login-side .net-mesh line{stroke:var(--net-cyan);stroke-width:1;opacity:.28;}
.login-side .net-mesh circle{fill:var(--net-cyan);opacity:.55;}
.login-hero{position:relative;z-index:1;display:flex;align-items:center;gap:16px;margin-bottom:16px;}
.login-hero .hero-badge{
  width:78px;height:78px;flex-shrink:0;border-radius:50%;position:relative;
  display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle,rgba(90,216,240,.18),transparent 70%);
  border:1px solid rgba(90,216,240,.55);
  box-shadow:0 0 0 6px rgba(90,216,240,.07), 0 0 22px rgba(90,216,240,.25);
}
.login-hero .hero-badge svg{width:44px;height:44px;position:relative;z-index:1;}
.login-hero .hero-word{font-family:var(--font-display);font-size:19px;letter-spacing:.06em;color:#fff;}
.login-hero .hero-sub{font-size:11.5px;color:var(--net-cyan);letter-spacing:.08em;margin-top:2px;}
@media(prefers-reduced-motion:no-preference){
  .login-hero .hero-badge{animation:hero-pulse 3.2s ease-out 1;}
  @keyframes hero-pulse{
    0%{box-shadow:0 0 0 0 rgba(90,216,240,.35), 0 0 0 rgba(90,216,240,0);}
    35%{box-shadow:0 0 0 10px rgba(90,216,240,0), 0 0 30px rgba(90,216,240,.35);}
    100%{box-shadow:0 0 0 6px rgba(90,216,240,.07), 0 0 22px rgba(90,216,240,.25);}
  }
}
.login-emblem{display:none;}
.login-side h1{color:#fff;font-family:var(--font-display);font-size:33px;line-height:1.25;position:relative;z-index:1;font-weight:400;}
.login-side p{color:#B9CBD6;max-width:430px;line-height:1.45;font-size:15px;margin:8px 0 0;position:relative;z-index:1;}
.role-chain{list-style:none;margin:16px 0 0;padding:0;max-width:400px;position:relative;z-index:1;}
.role-chain li{display:flex;align-items:center;gap:12px;padding:5px 0;font-size:14px;color:#DCEAF0;}
.role-chain .rc-index{
  width:24px;height:24px;border-radius:50%;flex-shrink:0;
  border:1px solid rgba(90,216,240,.6);color:var(--net-cyan);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-display);font-size:12.5px;position:relative;
}
/* সিঁড়ির ধাঁচের গাছ (tree):
     ১ সুপার ইউজার
       ২ অ্যাডমিন
         ├ ৩ কর্মকর্তা-কর্মচারী
         │    └ ৪ ব্যবস্থাপক
         │         └ ৫ এন্ট্রি ইউজার
         └ ৬ শিক্ষার্থী
   ধাপের দূরত্ব ৩৪px: ১ = ০ ধাপ, ২ = ১ ধাপ, ৩/৬ = ২ ধাপ, ৪ = ৩ ধাপ, ৫ = ৪ ধাপ।
   গোল চিহ্নের ব্যাস ২৪px, তাই কেন্দ্র = ১২px। */
.role-chain{--rc-line:rgba(90,216,240,.4);}
.role-chain li{position:relative;}
.role-chain li:nth-child(2){margin-left:34px;}
.role-chain li:nth-child(3),
.role-chain li:nth-child(6){margin-left:68px;}
.role-chain li:nth-child(4){margin-left:102px;}
.role-chain li:nth-child(5){margin-left:136px;}
/* ১→২, ৩→৪, ৪→৫: গোল চিহ্নের নিচ থেকে নেমে পরের গোল চিহ্নের দিকে "L" রেখা */
.role-chain li:nth-child(1)::after,
.role-chain li:nth-child(3)::after,
.role-chain li:nth-child(4)::after{
  content:"";position:absolute;left:12px;top:calc(50% + 12px);
  width:22px;height:calc(100% - 12px);
  border-left:1px solid var(--rc-line);border-bottom:1px solid var(--rc-line);
  border-bottom-left-radius:8px;
}
/* অ্যাডমিন (২): নিচের সরল রেখা — এখান থেকে অ্যাডমিনের কাণ্ড (trunk) শুরু */
.role-chain li:nth-child(2)::after{
  content:"";position:absolute;left:12px;top:calc(50% + 12px);
  height:calc(50% - 12px);border-left:1px solid var(--rc-line);
}
/* অ্যাডমিনের কাণ্ড: ৩ = "├" শাখা, ৬ = "└" শেষ শাখা, ৪ ও ৫ = শুধু পাশ দিয়ে যাওয়া রেখা */
.role-chain li:nth-child(3)::before{
  content:"";position:absolute;left:-22px;top:0;width:22px;height:100%;
  border-left:1px solid var(--rc-line);
  background:linear-gradient(var(--rc-line),var(--rc-line)) no-repeat 0 50%/100% 1px;
}
.role-chain li:nth-child(6)::before{
  content:"";position:absolute;left:-22px;top:0;width:22px;height:50%;
  border-left:1px solid var(--rc-line);border-bottom:1px solid var(--rc-line);
  border-bottom-left-radius:8px;
}
.role-chain li:nth-child(4)::before{
  content:"";position:absolute;left:-56px;top:0;height:100%;
  border-left:1px solid var(--rc-line);
}
.role-chain li:nth-child(5)::before{
  content:"";position:absolute;left:-90px;top:0;height:100%;
  border-left:1px solid var(--rc-line);
}
.role-chain .rc-label{font-weight:500;}
.login-side .tagline{
  margin-top:22px;border-top:1px solid rgba(90,216,240,.25);padding-top:12px;
  font-size:12.5px;color:#8FA6B0;letter-spacing:.01em;position:relative;z-index:1;line-height:1.5;
}
.login-form-side{
  flex:1;
  display:flex;align-items:center;justify-content:center;
  background:var(--paper);
  padding:40px;
}
.login-card{width:100%;max-width:390px;}
.login-card h2{font-size:25px;margin-bottom:6px;font-weight:400;}
.login-card .sub{color:var(--ink-soft);font-size:14px;margin-bottom:24px;}
.tab-row{display:flex;border-bottom:1.5px solid var(--line);margin-bottom:26px;gap:4px;}
.tab-btn{flex:1;border:none;background:transparent;padding:10px 8px 12px;font-size:13px;font-weight:600;color:var(--ink-soft);transition:.15s;border-bottom:2.5px solid transparent;margin-bottom:-1.5px;}
.tab-btn:hover{color:var(--pine);}
.tab-btn.active{color:var(--pine-dark);border-bottom-color:var(--gold);}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px 14px;}
.form-grid .field{margin-bottom:0;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:6px;}
.field input,.field select,.field textarea{
  width:100%;box-sizing:border-box;padding:11px 13px;border:1.5px solid var(--line);border-radius:var(--radius);
  font-size:15px;background:#fff;color:var(--ink);
}
.field textarea{display:block;resize:vertical;min-height:140px;line-height:1.6;}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-tint);}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:none;border-radius:var(--radius);padding:11px 18px;font-size:14.5px;font-weight:600;
  transition:.15s;
}
.btn-primary{background:var(--pine);color:#fff;width:100%;padding:13px;font-size:15px;}
.btn-primary:hover{background:var(--pine-dark);}
.btn-gold{background:var(--gold);color:#fff;}
.btn-gold:hover{filter:brightness(1.08);}
.btn-outline{background:#fff;border:1.5px solid var(--line);color:var(--ink);}
.btn-outline:hover{border-color:var(--pine);color:var(--pine);}
.btn-danger{background:var(--danger-tint);color:var(--danger);}
.btn-danger:hover{background:var(--danger);color:#fff;}
.btn-sm{padding:6px 12px;font-size:13px;border-radius:5px;}
.login-error{background:var(--danger-tint);color:var(--danger);padding:10px 12px;border-radius:var(--radius);font-size:13.5px;margin-bottom:16px;border-left:3px solid var(--danger);}
.demo-hint{margin-top:22px;font-size:12.5px;color:var(--ink-soft);background:var(--cream);border:1px solid var(--line);padding:10px 12px;border-radius:var(--radius);line-height:1.7;}

/* ============ APP SHELL ============ */
.app-shell{display:flex;min-height:100vh;}
.sidebar{
  width:252px;background:var(--pine-dark);color:#fff;flex-shrink:0;
  display:flex;flex-direction:column;position:relative;
  border-right:3px solid var(--gold);
}
.sidebar-brand{padding:20px;display:flex;align-items:center;gap:12px;border-bottom:1px solid rgba(169,120,46,.28);}
.sidebar-brand .logo-box{
  width:42px;height:42px;border-radius:50%;background:var(--gold-tint);
  border:1.5px solid var(--gold);display:flex;align-items:center;justify-content:center;
  overflow:hidden;flex-shrink:0;
}
.sidebar-brand .logo-box img{width:100%;height:100%;object-fit:cover;}
.sidebar-brand .logo-box span{color:var(--pine-dark);font-weight:700;font-family:var(--font-display);font-size:16px;}
.sidebar-brand .name{font-size:14px;font-weight:600;line-height:1.4;font-family:var(--font-ui);}
.nav-group{padding:12px 10px;flex:1;overflow-y:auto;}
.nav-item{
  display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:0 4px 4px 0;
  color:#BFD1C4;font-size:14px;font-weight:500;margin-bottom:1px;cursor:pointer;transition:.12s;
  border-left:3px solid transparent;
}
.nav-item:hover{background:rgba(255,255,255,.05);color:#fff;}
.nav-item.active{background:rgba(169,120,46,.16);color:var(--gold-tint);font-weight:600;border-left-color:var(--gold);}
.nav-icon{width:18px;text-align:center;font-size:15px;}
.sidebar-foot{padding:16px 18px;border-top:1px solid rgba(169,120,46,.28);font-size:12.5px;color:#9AAC9F;}
.role-pill{display:inline-block;font-size:11px;background:rgba(169,120,46,.22);color:var(--gold-tint);padding:3px 10px;border-radius:999px;margin-top:5px;}

.main{flex:1;min-width:0;display:flex;flex-direction:column;}
.topbar{
  height:64px;background:#fff;border-bottom:1px solid var(--line);box-shadow:inset 0 -2px 0 var(--gold-tint);
  display:flex;align-items:center;justify-content:space-between;padding:0 26px;position:sticky;top:0;z-index:5;
}
.topbar .title{font-size:19px;font-weight:400;color:var(--pine-dark);font-family:var(--font-display);}
.topbar .user-box{display:flex;align-items:center;gap:12px;}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--pine-tint);color:var(--pine);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;border:1.5px solid var(--line);}
.content{padding:26px;flex:1;}

.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:20px;}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:10px;border-bottom:1px solid var(--line);padding-bottom:14px;}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:22px;}
.stat-card{background:#fff;border:1px solid var(--line);border-top:2.5px solid var(--gold);border-radius:0 0 var(--radius) var(--radius);padding:16px 20px 18px;box-shadow:var(--shadow);position:relative;}
.stat-card .num{font-size:30px;font-weight:400;color:var(--pine-dark);font-family:var(--font-display);}
.stat-card .lbl{font-size:13px;color:var(--ink-soft);margin-top:3px;}

table{width:100%;border-collapse:collapse;font-size:14px;}
thead th{text-align:center;background:var(--pine-tint);color:var(--pine-dark);padding:10px 12px;font-weight:700;font-size:12.5px;white-space:nowrap;border-bottom:1.5px solid var(--gold);}
thead th:first-child,tbody td:first-child{text-align:center;}
tbody td{padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:center;}
tbody tr:hover{background:var(--cream);}
.table-scroll{overflow-x:auto;}
.table-center thead th,.table-center tbody td{text-align:center;}
.table-center thead th:first-child,.table-center tbody td:first-child{text-align:center;}
.bordered-table{border-collapse:collapse;}
.bordered-table th,.bordered-table td{border:1px solid #000;text-align:center;white-space:normal;}
.bordered-table thead th:first-child,.bordered-table tbody td:first-child{text-align:center;}
.photo-thumb{width:34px;height:34px;border-radius:6px;object-fit:cover;background:var(--pine-tint);}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;}
@media(max-width:640px){.grid-2,.grid-3{grid-template-columns:1fr;}}

.badge{display:inline-block;font-size:11.5px;padding:3px 10px;border-radius:999px;font-weight:600;}
.badge-label1{background:#EEDCC0;color:#7A4A00;}
.badge-label2{background:var(--pine-tint);color:var(--pine);}
.badge-label3{background:#DCE6F0;color:#1D3E6A;}
.badge-student{background:#EEE0EC;color:#6A2472;}

.modal-bg{position:fixed;inset:0;background:rgba(10,17,13,.55);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px;}
.modal{background:#fff;border-radius:var(--radius-lg);border-top:3px solid var(--gold);max-width:640px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 50px rgba(10,17,13,.35);}
.modal.modal-wide{max-width:1100px;}
.modal-head{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;}
.modal-head h2,.modal-head h3{font-family:var(--font-display);font-weight:400;}
.modal-body{padding:22px;}
.modal-close{background:none;border:none;font-size:20px;color:var(--ink-soft);}

.search-bar{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;}
.search-bar input{flex:1;min-width:200px;padding:10px 14px;border:1.5px solid var(--line);border-radius:var(--radius);font-size:14px;}

.empty-state{text-align:center;padding:50px 20px;color:var(--ink-soft);}
.empty-state .icon{font-size:38px;margin-bottom:10px;}

.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:max-content;max-width:min(90vw,560px);text-align:center;line-height:1.6;pointer-events:none;background:var(--pine-dark);color:#fff;padding:14px 24px;border-radius:var(--radius);border-left:3px solid var(--gold);font-size:15px;box-shadow:0 10px 30px rgba(0,0,0,.35);z-index:99999;}

.upload-box{display:flex;align-items:center;gap:14px;}
.upload-preview{width:70px;height:70px;border-radius:8px;object-fit:cover;background:var(--pine-tint);border:1.5px dashed var(--line);}
.tag-list{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
.tag-chip{background:var(--pine-tint);color:var(--pine-dark);font-size:12.5px;padding:5px 10px;border-radius:999px;display:flex;align-items:center;gap:6px;}
.tag-chip button{background:none;border:none;color:var(--danger);font-size:13px;padding:0;}
.inline-add{display:flex;gap:8px;margin-top:8px;}
.inline-add input{flex:1;padding:8px 10px;border:1.5px solid var(--line);border-radius:6px;font-size:13px;}

.fee-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);}
.fee-row label{flex:1;display:flex;align-items:center;gap:10px;font-size:14.5px;cursor:pointer;}

/* ============ RECEIPT PRINT ============ */
.receipt-sheet{background:#fff;padding:26px;border:1px solid var(--line);border-radius:var(--radius);}
.receipt-copy{font-family:var(--font-doc);color:#111;padding:14px 6px;}
.receipt-copy .r-head{display:flex;align-items:center;gap:14px;border-bottom:2.5px solid var(--pine-dark);padding-bottom:10px;margin-bottom:10px;}
.receipt-copy .r-logo{width:56px;height:56px;border-radius:6px;object-fit:cover;}
.receipt-copy .r-inst{flex:1;text-align:center;}
.receipt-copy .r-inst h2{font-size:20px;margin:0;color:#111;}
.receipt-copy .r-inst .addr{font-size:12px;color:#444;}
.receipt-copy .r-title{text-align:center;font-weight:700;font-size:15px;margin:8px 0;text-decoration:underline;color:#111;}
.receipt-copy .r-meta{display:flex;justify-content:space-between;font-size:13px;margin-bottom:8px;}
.receipt-copy table{font-size:13px;width:100%;border-collapse:collapse;}
.receipt-copy th,.receipt-copy td{border:1px solid #888;padding:6px 8px;}
.receipt-copy .r-total{font-weight:700;}
.receipt-copy .r-sign{display:flex;justify-content:space-between;margin-top:90px;font-size:12.5px;}
.receipt-copy .r-sign div{border-top:1px solid #333;padding-top:6px;width:190px;text-align:center;}
.receipt-copy .r-sign .r-officer{position:relative;}
.receipt-copy .r-sign .r-officer .r-sig-img{position:absolute;left:50%;bottom:calc(100% + 2px);transform:translateX(-50%);max-width:100%;max-height:78px;object-fit:contain;}
.receipt-copy .r-sign .r-off-name{display:block;font-weight:700;}
.r-compact .receipt-copy .r-sign .r-officer .r-sig-img{max-height:54px;}
.r-tight .receipt-copy .r-sign .r-officer .r-sig-img{max-height:34px;}
.receipt-copy .r-footer{margin-top:16px;padding-top:6px;border-top:1px dashed #ccc;font-size:9px;color:#999;text-align:center;word-break:break-all;}
.copy-divider{border-top:2px dashed #999;margin:18px 0;text-align:center;position:relative;}
.copy-divider span{background:#fff;padding:0 10px;font-size:11px;color:#999;position:relative;top:-9px;}

.receipt-columns{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:stretch;}
.receipt-col-divider{border-left:2px dashed #999;position:relative;margin:0 14px;}
.receipt-col-divider span{background:#fff;padding:6px 0;font-size:11px;color:#999;writing-mode:vertical-rl;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);white-space:nowrap;}

/* auto-shrink tiers applied by JS based on number of fee items, so the whole receipt (both copies) always fits on a single A4 landscape page */
.r-compact .receipt-copy{padding:8px 6px;}
.r-compact .receipt-copy .r-head{gap:10px;padding-bottom:6px;margin-bottom:6px;}
.r-compact .receipt-copy .r-logo{width:44px;height:44px;}
.r-compact .receipt-copy .r-inst h2{font-size:17px;}
.r-compact .receipt-copy .r-inst .addr{font-size:10.5px;}
.r-compact .receipt-copy .r-title{font-size:13px;margin:5px 0;}
.r-compact .receipt-copy .r-meta{font-size:11.5px;margin-bottom:5px;}
.r-compact .receipt-copy table{font-size:11.5px;}
.r-compact .receipt-copy th,.r-compact .receipt-copy td{padding:3px 6px;}
.r-compact .receipt-copy .r-sign{margin-top:62px;font-size:11px;}
.r-compact .receipt-copy .r-sign div{width:160px;}
.r-compact .receipt-copy .r-footer{margin-top:10px;font-size:8px;}

.r-tight .receipt-copy{padding:5px 4px;}
.r-tight .receipt-copy .r-head{gap:8px;padding-bottom:4px;margin-bottom:4px;}
.r-tight .receipt-copy .r-logo{width:36px;height:36px;}
.r-tight .receipt-copy .r-inst h2{font-size:14.5px;}
.r-tight .receipt-copy .r-inst .addr{font-size:9.5px;}
.r-tight .receipt-copy .r-title{font-size:11.5px;margin:3px 0;}
.r-tight .receipt-copy .r-meta{font-size:10px;margin-bottom:3px;}
.r-tight .receipt-copy table{font-size:10px;}
.r-tight .receipt-copy th,.r-tight .receipt-copy td{padding:2px 5px;}
.r-tight .receipt-copy .r-sign{margin-top:40px;font-size:9.5px;}
.r-tight .receipt-copy .r-sign div{width:140px;}
.r-tight .receipt-copy .r-footer{margin-top:6px;font-size:7.5px;}

@media print{
  html,body{min-height:0 !important;height:auto !important;background:#fff !important;}
  body *{visibility:hidden;}
  #print-area, #print-area *{visibility:visible;}
  #app-root > *:not(.modal-bg){display:none !important;}
  .app-shell{display:none !important;}
  #print-area{position:absolute;top:0;left:0;width:var(--page-content-w, 100%);min-height:var(--page-content-h, 100%);background:#fff !important;}
  .receipt-sheet{border:none;box-shadow:none;padding:0;width:var(--page-content-w, 100%);min-height:var(--page-content-h, 100%);}
  .receipt-columns{grid-template-columns:1fr auto 1fr auto 1fr;min-height:var(--page-content-h, 100%);}
  .receipt-copy{page-break-inside:avoid;}
  .modal-bg{position:static !important;background:none !important;padding:0 !important;display:block !important;}
  .modal{position:static !important;max-width:none !important;max-height:none !important;overflow:visible !important;box-shadow:none !important;border-radius:0 !important;}
  .modal-head{display:none !important;}
  .modal-body{padding:0 !important;overflow:visible !important;}
}

/* ============ ID CARD PRINT ============ */
.idcard-sheet{background:#fff;padding:10px;}
.idcards-toolbar{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:14px;}
.idcards-toolbar .field{min-width:220px;margin:0;}
.idcards-summary{font-size:13.5px;color:var(--ink-soft);margin-bottom:10px;}
.idcards-grid{display:flex;flex-wrap:wrap;gap:6mm;}
.idcard{width:54mm;height:85.6mm;border-radius:3mm;overflow:hidden;position:relative;background:#fff;border:1px solid #ccc;box-shadow:0 1px 4px rgba(0,0,0,.12);font-family:var(--font-doc);color:#111;page-break-inside:avoid;break-inside:avoid;display:flex;flex-direction:column;}
.idcard .ic-head{background:linear-gradient(135deg,var(--pine-dark),var(--pine));color:#fff;display:flex;flex-direction:column;align-items:center;text-align:center;gap:1mm;padding:2mm 3mm 1.6mm;}
.idcard .ic-head img{width:8mm;height:8mm;border-radius:50%;object-fit:cover;background:#fff;}
.idcard .ic-head .ic-inst{width:100%;overflow:hidden;}
.idcard .ic-head .ic-inst .n{font-size:7.6px;font-weight:700;line-height:1.25;}
.idcard .ic-head .ic-inst .a{font-size:5.2px;opacity:.85;line-height:1.2;}
.idcard .ic-title{text-align:center;font-size:8.6px;font-weight:800;letter-spacing:.4px;background:var(--gold-tint);color:var(--pine-dark);padding:0.8mm 0;}
.idcard .ic-nontransfer{text-align:center;font-size:7.6px;font-weight:800;letter-spacing:.2px;color:#e0201f;text-transform:uppercase;line-height:1.3;padding:1mm 3mm 0;}
.idcard .ic-id-line{text-align:center;font-size:6.8px;font-weight:800;letter-spacing:.15px;color:#0B2A6B;padding:0.6mm 3mm 0;}
.idcard .ic-body{flex:1;display:flex;flex-direction:column;align-items:center;gap:1.2mm;padding:1.6mm 3mm 1mm;text-align:center;}
.idcard .ic-photo-wrap{position:relative;width:20mm;flex-shrink:0;}
.idcard .ic-photo{width:20mm;height:20mm;border-radius:50%;object-fit:cover;border:1px solid #ccc;display:block;}
.idcard .ic-info{width:100%;font-size:6.6px;line-height:1.48;text-align:center;}
.idcard .ic-info .ic-name{font-size:9px;font-weight:700;color:var(--pine-dark);margin-bottom:0.8mm;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.idcard .ic-info b{color:#333;}
.idcard .ic-info .ic-validity{color:#1a7a3c;font-weight:700;}
.idcard .ic-sign-row{align-self:stretch;display:flex;justify-content:space-between;align-items:flex-end;padding:0 3mm;margin-top:0.6mm;}
.idcard .ic-qr{width:7mm;height:7mm;flex-shrink:0;}
.idcard .ic-qr svg{width:100%;height:100%;display:block;}
.idcard .ic-sign{padding-top:0;width:16mm;text-align:center;font-size:4.8px;color:#666;line-height:1.2;}
.idcard .ic-sign .ic-sign-box{width:100%;height:5mm;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#fff;}
.idcard .ic-sign .ic-sign-box img{max-width:100%;max-height:100%;object-fit:contain;display:block;}
.idcard .ic-sign .ic-sign-label{border-top:1px solid #999;padding-top:0.5mm;margin-top:0.3mm;display:block;}
.idcard .ic-foot{text-align:center;padding:2mm 3mm;margin-top:1.2mm;background:var(--pine-dark);color:#fff;font-size:7px;font-weight:800;letter-spacing:.2px;flex-shrink:0;}
.idcard .ic-foot a{color:#fff;text-decoration:none;}

/* ============ TRANSCRIPT PRINT ============ */
.transcript-sheet{background:#fff;}
.transcript-doc{width:200mm;min-height:287mm;margin:0 auto 10mm;padding:9mm 11mm;background:#fff;font-family:var(--font-doc);color:#111;box-sizing:border-box;page-break-after:always;break-after:page;position:relative;}
.transcript-doc .t-inner{padding:8mm 9mm;min-height:254mm;box-sizing:border-box;}
.transcript-doc .t-head{display:flex;align-items:center;gap:14px;border-bottom:2.5px solid var(--pine-dark);padding-bottom:10px;margin-bottom:10px;}
.transcript-doc .t-logo{width:60px;height:60px;border-radius:8px;object-fit:cover;}
.transcript-doc .t-inst{flex:1;text-align:center;}
.transcript-doc .t-inst h2{font-size:21px;margin:0;color:#111;}
.transcript-doc .t-inst .addr{font-size:12px;color:#444;}
.transcript-doc .t-title{text-align:center;font-weight:700;font-size:16px;margin:8px 0 12px;text-decoration:underline;color:#111;letter-spacing:.3px;}
.transcript-doc .t-top-row{display:flex;gap:12px;align-items:stretch;margin-bottom:14px;}
.transcript-doc .t-meta{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:5px 24px;font-size:13px;padding:10px 12px;background:var(--pine-tint);border-radius:6px;align-content:start;}
.transcript-doc .t-meta div b{color:#111;}
.transcript-doc .t-gradebox{width:150px;flex-shrink:0;background:#fff;border:1.5px solid var(--pine-dark);border-radius:6px;padding:7px;}
.transcript-doc .t-gradebox .t-gs-title{text-align:center;font-weight:700;font-size:12px;color:var(--pine-dark);margin-bottom:6px;border-bottom:1px solid #ddd;padding-bottom:4px;}
.transcript-doc .t-gradebox table{width:100%;font-size:10px;border-collapse:collapse;}
.transcript-doc .t-gradebox th,.transcript-doc .t-gradebox td{padding:2.5px 4px;border:1px solid #ddd;text-align:center;}
.transcript-doc .t-gradebox th{background:#f6f6f6;font-weight:700;}
.transcript-doc .t-exam-block{margin-bottom:16px;}
.transcript-doc .t-exam-title{font-weight:700;font-size:13.5px;color:var(--pine-dark);background:var(--gold-tint);padding:5px 10px;border-radius:5px 5px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.transcript-doc table{width:100%;border-collapse:collapse;font-size:12.5px;}
.transcript-doc th,.transcript-doc td{border:1px solid #999;padding:5px 8px;}
.transcript-doc th{background:#f2f2f2;}
.transcript-doc .t-summary td{font-weight:700;background:#fafafa;}
.transcript-doc .t-nodata{font-size:12.5px;color:var(--ink-soft);padding:8px 2px;}
.transcript-doc .t-sign{display:flex;justify-content:space-between;align-items:flex-end;margin-top:34px;font-size:12.5px;}
.transcript-doc .t-sign .t-issue div{padding-top:6px;}
.transcript-doc .t-sign .t-auth{text-align:center;width:140px;}
.transcript-doc .t-sign .t-auth img{width:100%;height:11mm;object-fit:contain;}
.transcript-doc .t-sign .t-auth .t-auth-label{border-top:1px solid #333;padding-top:6px;margin-top:2px;}
.transcript-doc .t-note{margin-top:10px;padding-top:6px;border-top:1px dotted #999;font-size:10.5px;line-height:1.4;color:#555;}
.transcript-doc .t-note b{color:#d22;}
.testimonial-doc{
  width:287mm;height:200mm;margin:0 auto 10mm;
  background:#f9e6a8;font-family:var(--font-doc);color:#111;
  box-sizing:border-box;page-break-after:always;break-after:page;
  position:relative;overflow:hidden;display:flex;border-radius:0;
}
/* Reference-style left tear-off panel */
.testimonial-doc .tf-ribbon{display:none;}
.testimonial-doc .tf-left{
  flex:0 0 33.333%;padding:7mm 6mm 5mm;box-sizing:border-box;
  position:relative;z-index:0;display:flex;flex-direction:column;min-width:0;background:#f9e6a8;
}
.testimonial-doc .tf-divider{width:0;border-left:1px dashed #e6007e;margin:4mm 0;flex-shrink:0;}
.testimonial-doc .tf-right{
  flex:0 0 66.667%;padding:4mm 5mm 4mm;box-sizing:border-box;
  position:relative;z-index:0;display:flex;min-width:0;background:#f9e6a8;
}
.testimonial-doc .tf-head{text-align:center;margin-bottom:1.5mm;}
.testimonial-doc .tf-head-logos{position:relative;height:14mm;margin-bottom:.5mm;}
.testimonial-doc .tf-head-logo{position:absolute;top:0;width:14mm;height:14mm;}
.testimonial-doc .tf-head-logo img{width:14mm;height:14mm;object-fit:contain;}
.testimonial-doc .tf-head-logo-left{left:0;}
.testimonial-doc .tf-head-logo-right{right:0;}
.testimonial-doc .gov-line{font-size:10.5px;font-weight:700;margin:0;line-height:1.25;}
.testimonial-doc .office-line{font-size:10px;font-weight:600;margin:0 0 1mm;line-height:1.25;}
.testimonial-doc h2.sm{font-size:17px;color:#128a12;font-weight:800;margin:1mm 0;line-height:1.2;}
.testimonial-doc h2.lg{font-size:24px;color:#d21f17;font-weight:800;margin:1mm 0;line-height:1.2;}
.testimonial-doc .tf-addr{font-size:10.5px;color:#128a12;font-weight:700;margin-top:.5mm;}
.testimonial-doc .tf-badge{
  display:inline-block;padding:1.6mm 7mm;border-radius:30px;background:#7a0000;
  border:.9mm solid #cdae2c;color:#fff;font-weight:800;font-size:13.5px;
  white-space:nowrap;line-height:1.2;text-shadow:0 1px 1px rgba(0,0,0,.25);
}
.testimonial-doc .tf-badge-row{text-align:center;margin:1.5mm 0 2mm;}
.testimonial-doc .tf-meta-row{
  font-size:11px;margin:0 0 3mm;line-height:1.5;
  display:flex;align-items:center;justify-content:space-between;gap:3mm;
}
.testimonial-doc .tf-meta-row.center{
  font-size:11.5px;flex-wrap:wrap;margin:1.5mm 0 3mm;
}
.testimonial-doc .tf-lines{font-size:11px;flex:1;}
.testimonial-doc .tf-lines p{margin:0 0 2.4mm;line-height:1.7;}
.testimonial-doc .tf-lines .tf-row{white-space:nowrap;margin:0 0 2.25mm;line-height:1.35;}
.testimonial-doc .tf-body{position:relative;z-index:0;font-size:11.2px;line-height:1.85;text-align:justify;flex:1;margin-top:4mm;}
.testimonial-doc .tf-body p{margin:0 0 2.4mm;text-indent:0;}
.testimonial-doc .tf-body .tf-open{font-size:11.6px;}
.testimonial-doc .tf-body p.tf-linefull{display:flex;align-items:flex-end;flex-wrap:nowrap;}
.testimonial-doc .tf-body p.tf-linefull .fill{flex:1 1 auto;}
.testimonial-doc .tf-body .fill{vertical-align:baseline;}
.testimonial-doc .tf-body p.tf-wish{margin-top:4mm;}
/* Green student-information panel */
.testimonial-doc .tf-info-grid{
  display:flex;flex-wrap:wrap;column-gap:10mm;row-gap:2.6mm;margin:0 0 3.6mm;
  padding:3mm 5mm;background:rgba(18,138,18,.055);
  border-left:2.5px solid #128a12;border-radius:2px;
}
.testimonial-doc .tf-grid-label{
  flex:1 1 100%;font-size:9.5px;font-weight:700;color:#128a12;
  letter-spacing:.02em;margin:0 0 .5mm;text-transform:uppercase;
}
.testimonial-doc .tf-info-grid .tf-field{flex:1 1 40%;font-size:11px;white-space:nowrap;}
.testimonial-doc .tf-info-grid .tf-field b{color:#128a12;font-weight:700;}
/* Red examination-information panel */
.testimonial-doc .tf-exam-grid{
  display:flex;flex-wrap:wrap;column-gap:10mm;row-gap:2.6mm;margin:0 0 3.6mm;
  padding:3mm 5mm;background:rgba(210,31,23,.055);
  border-left:2.5px solid #d21f17;border-radius:2px;
}
.testimonial-doc .tf-exam-grid .tf-grid-label{color:#d21f17;}
.testimonial-doc .tf-exam-grid .tf-field{flex:1 1 28%;font-size:11px;white-space:nowrap;}
.testimonial-doc .tf-exam-grid .tf-field b{color:#d21f17;font-weight:700;}
.testimonial-doc .fill{display:inline-block;border-bottom:1px dotted #333;height:1em;line-height:1em;vertical-align:bottom;margin:0 1mm;}
.testimonial-doc .fill-val{width:auto;height:1em;line-height:1em;text-align:center;padding:0 1mm;font-weight:600;font-style:italic;white-space:nowrap;}
.testimonial-doc .tf-sign{display:flex;justify-content:space-between;align-items:flex-end;margin-top:4mm;font-size:10.5px;}
.testimonial-doc .tf-verify{white-space:nowrap;}
/* Four signature blocks at the bottom of the main certificate */
.testimonial-doc .tf-sign-right{gap:6mm;align-items:flex-start;margin-top:2.5mm;}
.testimonial-doc .tf-sign-right .tf-sign-item{flex:1 1 0;min-width:0;text-align:center;font-size:9.2px;line-height:1.12;}
.testimonial-doc .tf-sign-right .tf-sign-line{height:3.5mm;border-top:1px dotted #333;margin:0 auto .45mm;width:92%;box-sizing:border-box;}
.testimonial-doc .tf-sign-right .tf-sign-title{font-weight:600;white-space:nowrap;line-height:1.1;margin:0;}
.testimonial-doc .tf-sign-right .tf-sign-inst{font-size:8px;font-weight:600;line-height:1.1;margin-top:.35mm;}
.testimonial-doc .tf-sign-right .tf-sign-addr{font-size:7.6px;line-height:1.05;margin-top:.1mm;}
.testimonial-doc .tf-auth{
  text-align:center;line-height:1.5;border:1.3px double #128a12;border-radius:3px;
  padding:1.6mm 4mm;display:inline-block;transform:rotate(-2deg);background:rgba(18,138,18,.04);
}
.testimonial-doc .tf-auth-label{font-weight:800;}
.testimonial-doc .tf-auth-inst{color:#128a12;font-weight:700;}
.testimonial-doc .tf-auth-addr{color:#d6169c;font-weight:700;}
/* Gold decorative certificate frame, matching the reference image */
.testimonial-doc .tf-frame{
  position:relative;flex:1;border-radius:4mm;padding:4mm;box-sizing:border-box;
  background:repeating-conic-gradient(from 0deg,#f7d34a 0deg 6deg,#d99a16 6deg 12deg);
  box-shadow:0 0 0 .6mm #fff,0 0 0 1.3mm #b5860b,0 2px 6px rgba(90,60,0,.16);
}
.testimonial-doc .tf-card{
  position:relative;height:100%;background:#fffaf0;border-radius:2.5mm;
  padding:5mm 8mm;box-sizing:border-box;border:.6mm solid #cdae2c;
  box-shadow:inset 0 0 0 1px #f4e2ab;display:flex;flex-direction:column;
}
.testimonial-doc .tf-wm{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:0;pointer-events:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;color-adjust:exact;}
.testimonial-doc .tf-wm ~ *{position:relative;z-index:1;}
.testimonial-doc .tf-wm img{width:55mm;height:55mm;object-fit:contain;opacity:.12;filter:grayscale(100%);-webkit-print-color-adjust:exact;print-color-adjust:exact;color-adjust:exact;}
.testimonial-doc .tf-left .tf-wm img{width:32mm;height:32mm;}
.testimonial-doc .tf-body .tf-wm{align-items:flex-start;padding-top:2mm;}
.testimonial-doc .tf-body .tf-wm img{width:48mm;height:48mm;}
.testimonial-doc .tf-note{margin-top:2.5mm;padding-top:1.4mm;border-top:1px dotted #999;font-size:7.4px;line-height:1.35;}
.testimonial-doc .tf-note b{color:#d22;}
@media print{
  .transcript-doc{margin:0 auto;box-shadow:none;width:var(--page-content-w, 200mm);min-height:var(--page-content-h, 287mm);}
  .transcript-doc:last-child{page-break-after:auto;break-after:auto;}
  .transcript-doc .t-inner{min-height:0;}
  .transcript-doc .t-head{padding-bottom:6px;margin-bottom:6px;}
  .transcript-doc .t-title{margin:5px 0 8px;}
  .transcript-doc .t-top-row{margin-bottom:8px;}
  .transcript-doc .t-exam-block{margin-bottom:8px;}
  .transcript-doc .t-sign{margin-top:14px;}
  .testimonial-doc{margin:0 auto;box-shadow:none;width:var(--page-content-w, 287mm);height:var(--page-content-h, 200mm);-webkit-print-color-adjust:exact;print-color-adjust:exact;color-adjust:exact;}
  .testimonial-doc *{-webkit-print-color-adjust:exact;print-color-adjust:exact;color-adjust:exact;}
  .testimonial-doc:last-child{page-break-after:auto;break-after:auto;}
}

/* ============ ENGLISH TESTIMONIAL (alternate template) ============ */
.entestimonial-doc{
  width:287mm;height:200mm;margin:0 auto 10mm;background:#FFFDF8;
  color:var(--ink);box-sizing:border-box;page-break-after:always;break-after:page;
  position:relative;overflow:hidden;display:flex;
}
.entestimonial-doc .entest-left{
  flex:0 0 60mm;box-sizing:border-box;padding:6mm 5mm 5mm;
  background:#FFFDF8;border-right:1.2px dashed var(--gold);
  display:flex;flex-direction:column;gap:2.6mm;position:relative;font-family:var(--font-doc);
}
.entestimonial-doc .entest-left-head{text-align:center;margin-bottom:1mm;}
.entestimonial-doc .entest-left-head img{width:18mm;height:18mm;object-fit:contain;display:block;margin:0 auto 2mm;}
.entestimonial-doc .entest-left-head .tag{font-size:9px;font-weight:700;letter-spacing:.08em;color:var(--pine-dark);}
.entestimonial-doc .entest-left-head .sub{font-size:7.5px;color:var(--ink-soft);margin-top:1px;line-height:1.3;}
.entestimonial-doc .entest-scissor{position:absolute;right:-7px;top:50%;transform:translateY(-50%) rotate(90deg);font-size:12px;color:var(--gold);background:#FFFDF8;padding:0 2px;}
.entestimonial-doc .entest-row{display:flex;flex-direction:column;gap:1px;font-size:8.5px;}
.entestimonial-doc .entest-row span{color:var(--ink-soft);letter-spacing:.03em;font-size:7px;}
.entestimonial-doc .entest-row b{font-size:8.5px;font-weight:700;word-break:break-word;line-height:1.25;}
.entestimonial-doc .entest-right{flex:1;box-sizing:border-box;padding:5mm;position:relative;display:flex;min-width:0;}
.entestimonial-doc .entest-paper{
  width:100%;box-sizing:border-box;background:#FFFDF8;padding:6mm 9mm;
  position:relative;overflow:hidden;border:2.5mm solid var(--pine-dark);outline:1.6mm solid var(--gold);outline-offset:-5mm;
  display:flex;flex-direction:column;
}
.entestimonial-doc .entest-head-row{display:grid;grid-template-columns:16mm 1fr 16mm;align-items:center;gap:4mm;margin-bottom:2.5mm;}
.entestimonial-doc .entest-emblem{width:15mm;height:15mm;border-radius:50%;border:1px solid var(--line);background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.entestimonial-doc .entest-emblem img{width:100%;height:100%;object-fit:contain;}
.entestimonial-doc .gov-emblem-fallback{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--font-doc);font-size:5px;font-weight:700;text-align:center;line-height:1.05;color:var(--pine-dark);}
.entestimonial-doc .gov-emblem-fallback .seal{font-size:12px;line-height:1;margin-bottom:1px;}
.entestimonial-doc .entest-head-mid{text-align:center;font-family:var(--font-doc);}
.entestimonial-doc .entest-govt-line{font-size:10.5px;color:var(--pine-dark);font-weight:600;}
.entestimonial-doc .entest-inst-name{font-family:var(--font-doc);font-size:16px;font-weight:700;color:var(--pine-dark);line-height:1.2;}
.entestimonial-doc .entest-inst-web{font-size:9.5px;color:var(--ink-soft);margin-top:1px;}
.entestimonial-doc .entest-title-box{width:60mm;margin:2.4mm auto 4mm;text-align:center;border:2px solid var(--ink);border-radius:4px;font-family:var(--font-doc);font-weight:700;font-size:20px;letter-spacing:.09em;padding:2mm 1mm;color:var(--ink);box-sizing:border-box;}
.entestimonial-doc .entest-serial{font-size:9.5px;font-weight:600;margin-bottom:2.6mm;font-family:var(--font-doc);}
.entestimonial-doc .entest-serial i{font-style:italic;}
.entestimonial-doc .entest-body{position:relative;z-index:1;font-size:10.6px;line-height:1.55;flex:1;}
.entestimonial-doc .entest-line{display:flex;align-items:baseline;gap:4px;margin-bottom:2.4px;flex-wrap:nowrap;}
.entestimonial-doc .entest-lbl{white-space:nowrap;flex:0 0 auto;}
.entestimonial-doc .entest-plain{font-size:10.6px;line-height:1.55;}
.entestimonial-doc .entest-fill{display:inline-block;flex:1 1 auto;border-bottom:1px dotted var(--ink-soft);font-family:var(--font-doc);font-style:italic;font-weight:600;line-height:1;padding:0 4px 1px;text-align:center;min-width:16px;}
.entestimonial-doc .entest-fill.center-name{font-size:13.5px;}
.entestimonial-doc .entest-sign-row{display:flex;justify-content:space-between;gap:5mm;margin-top:auto;padding-top:5mm;margin-bottom:6mm;font-family:var(--font-doc);}
.entestimonial-doc .entest-sign{text-align:center;flex:1;font-size:9px;}
.entestimonial-doc .entest-sign .line{border-top:1px solid var(--ink);margin-bottom:3px;}
.entestimonial-doc .entest-sign .role{color:var(--ink-soft);}
.entestimonial-doc .entest-sign .inst-name{font-weight:700;color:var(--pine-dark);font-size:8.3px;}
.entestimonial-doc .entest-note{margin-top:2.5mm;padding-top:2mm;border-top:1px dotted var(--ink-soft);font-size:8px;line-height:1.4;color:var(--ink-soft);}
.entestimonial-doc .entest-note b{color:#d22;}
@media print{
  .entestimonial-doc{margin:0 auto;box-shadow:none;width:var(--page-content-w, 287mm);height:var(--page-content-h, 200mm);}
  .entestimonial-doc:last-child{page-break-after:auto;break-after:auto;}
}

@media print{
  .idcards-grid{gap:5mm;}
  .idcard{box-shadow:none;}
}

/* ============ CERTIFICATE (প্রত্যয়নপত্র) ============ */
.certificate{position:relative;z-index:0;width:210mm;height:297mm;margin:0 auto 10mm;background:#fff;overflow:hidden;padding:18mm 17mm 18mm;box-sizing:border-box;box-shadow:0 4px 18px rgba(0,0,0,.35);font-family:var(--font-doc);color:#111;page-break-after:always;break-after:page;}
.certificate:last-child{page-break-after:auto;break-after:auto;}
.certificate .pad-header{position:relative;height:40mm;display:flex;align-items:flex-start;justify-content:center;}
.certificate .cert-watermark{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;z-index:-1;pointer-events:none;}
.certificate .cert-watermark img{width:120mm;height:120mm;object-fit:contain;opacity:.08;filter:grayscale(100%);}
.certificate .pad-center{text-align:center;padding-top:5mm;line-height:1.5;min-width:130mm;}
.certificate .pad-center .gov{font-size:17px;}
.certificate .pad-center .office{font-size:17px;}
.certificate .pad-center .inst{font-size:20px;margin-top:2px;}
.certificate .pad-center .addr{font-size:17px;}
.certificate .pad-center .web{font-size:17px;margin-top:1px;}
.certificate .cert-title{text-align:center;font-size:25px;font-weight:800;text-decoration:underline;margin:11mm 0 10mm;}
.certificate .cert-serial{font-size:14px;font-weight:700;margin:-6mm 8mm 6mm;display:flex;justify-content:space-between;align-items:center;gap:6mm;}
.certificate .cert-body{font-size:19px;line-height:2.05;text-align:justify;margin:0 8mm;}
.certificate .cert-body p{margin:0 0 7mm;}
.certificate .inline-fill{display:inline;}
.certificate .signature{position:absolute;right:25mm;bottom:52mm;text-align:center;font-size:16px;line-height:1.55;min-width:65mm;}
.certificate .sig-line{border-top:1px dotted #222;width:60mm;margin:0 auto 2mm;}
.certificate .certificate-note{position:absolute;left:17mm;right:17mm;bottom:14mm;border-top:1px dotted #999;padding-top:3mm;font-size:12.5px;line-height:1.45;}
.certificate .certificate-note b{color:#d22;}
@media print{
  .certificate{margin:0 auto;box-shadow:none;width:var(--page-content-w, 210mm);min-height:var(--page-content-h, 297mm);}
}

/* ============ APPLICATION LETTER (দরখাস্ত) ============ */
.application-doc{position:relative;width:210mm;min-height:297mm;margin:0 auto 10mm;background:#fff;box-sizing:border-box;padding:25mm 22mm 20mm;box-shadow:0 4px 18px rgba(0,0,0,.35);font-family:var(--font-doc);color:#111;font-size:16px;line-height:1.85;}
.application-doc .app-to{margin-bottom:10mm;}
.application-doc .app-subject{margin-bottom:8mm;}
.application-doc .app-salutation{margin-bottom:6mm;}
.application-doc .app-body{text-align:justify;white-space:pre-wrap;margin-bottom:12mm;}
.application-doc .app-closing{margin-bottom:14mm;}
.application-doc .app-sender{margin-left:auto;text-align:left;max-width:80mm;}
.application-doc .app-decision{border:2px solid #333;border-radius:4px;padding:6mm 8mm;display:inline-block;min-width:70mm;}
.application-doc .app-decisions{display:flex;gap:8mm;flex-wrap:wrap;margin-top:18mm;align-items:center;}
.application-doc .app-decision-approved{border-color:#1b7a43;color:#1b7a43;}
.application-doc .app-decision-rejected{border-color:#c0392b;color:#c0392b;}
/* সিল: সবগুলো সিল সবসময় এক লাইনে থাকে — সিলের সংখ্যা (--n) অনুযায়ী প্রতিটির সাইজ ও লেখা স্বয়ংক্রিয়ভাবে ছোট-বড় হয় */
.application-doc .app-decisions-seals{container-type:inline-size;flex-wrap:nowrap;gap:4mm;justify-content:center;}
.application-doc .app-seal{--sw:min(62mm,calc((100cqw - (var(--n,1) - 1) * 4mm) / var(--n,1)));flex:0 0 auto;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:var(--sw);height:var(--sw);box-sizing:border-box;padding:calc(var(--sw) * .08);overflow:hidden;border:2.5px double currentColor;border-radius:50%;transform:rotate(-6deg);line-height:1.35;font-size:calc(var(--sw) * .056);}
.application-doc .app-seal .seal-top{font-weight:700;font-size:1.15em;letter-spacing:.3px;}
.application-doc .app-seal .seal-mid{font-weight:700;font-size:1.08em;border-top:1px solid currentColor;border-bottom:1px solid currentColor;margin:.15em 0;padding:.1em .3em;}
.application-doc .app-seal .seal-reason{font-size:.88em;margin-bottom:.1em;max-width:calc(var(--sw) * .72);}
@supports not (width:1cqw){.application-doc .app-seal{--sw:46mm;font-size:11px;}.application-doc .app-decisions-seals{flex-wrap:wrap;}}
.application-doc .app-seal-approved{color:#1b7a43;}
.application-doc .app-seal-rejected{color:#c0392b;}
@media print{.application-doc .app-seal{-webkit-print-color-adjust:exact;print-color-adjust:exact;}}
@media print{
  .application-doc{margin:0 auto;box-shadow:none;width:var(--page-content-w, 210mm);min-height:var(--page-content-h, 297mm);}
}

@media(max-width:900px){
  .sidebar{position:fixed;left:-260px;top:0;bottom:0;z-index:40;transition:.2s;}
  .sidebar.open{left:0;}
  .content{padding:16px;}
}
@media(max-width:820px){
  .login-wrap{flex-direction:column;overflow-y:auto;}
  .login-side{padding:40px 28px;flex:none;}
  .net-mesh{opacity:.35;}
  .role-chain{display:none;}
  .login-form-side{padding:32px 24px;}
}

/* =====================================================================
   মোবাইল ব্যবহার-উপযোগী স্তর (MOBILE LAYER)
   ---------------------------------------------------------------------
   * সব নিয়ম "@media screen and ..." — তাই প্রিন্ট/A4 আউটপুটে কোনো প্রভাব ফেলে না
     (A4 = ~794px, শুধু "max-width:820px" লিখলে প্রিন্টেও কাজ করত)।
   * ডেস্কটপের চেহারা অপরিবর্তিত; শুধু ছোট পর্দায় প্রযোজ্য।
   ===================================================================== */
#hamburger{display:none;}
.sidebar-backdrop{display:none;}

/* ---------- ট্যাবলেট ও ফোন (≤900px): সাইডবার = স্লাইড-ইন মেনু ---------- */
@media screen and (max-width:900px){
  #hamburger{display:inline-flex;align-items:center;justify-content:center;min-width:42px;min-height:42px;padding:0 10px;font-size:18px;line-height:1;}
  .sidebar{width:min(280px,84vw);left:-320px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;}   /* বন্ধ অবস্থায় পুরোপুরি পর্দার বাইরে */
  .sidebar.open{box-shadow:6px 0 30px rgba(0,0,0,.35);}
  .sidebar-backdrop.show{display:block;position:fixed;inset:0;background:rgba(10,17,13,.5);z-index:39;}
  .nav-item{padding-top:13px;padding-bottom:13px;}   /* আঙুলে চাপার মতো উচ্চতা */
}

/* ---------- ফোন (≤820px) ---------- */
@media screen and (max-width:820px){
  html{-webkit-text-size-adjust:100%;text-size-adjust:100%;}

  /* উপরের বার: শিরোনাম কেটে ellipsis, ইউজারের নাম লুকানো (সাইডবারের নিচে দেখা যায়) */
  .topbar{height:auto;min-height:56px;padding:7px 10px;gap:8px;}
  .topbar > div:first-child{min-width:0;flex:1 1 auto;}
  .topbar .title{font-size:16px;line-height:1.3;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .topbar .user-box{gap:8px;flex:0 0 auto;}
  .topbar .user-box > div:not(.avatar){display:none;}
  .topbar .avatar{width:32px;height:32px;font-size:13px;}
  .topbar .btn-sm{padding:6px 10px;font-size:12.5px;min-height:38px;}

  /* কনটেন্ট ও কার্ড */
  .content{padding:12px;}
  .card{padding:14px;margin-bottom:14px;}
  .card-head{gap:8px;margin-bottom:12px;padding-bottom:10px;}
  .card-head h3{font-size:17px;}
  .card-head > div{max-width:100%;}

  /* ড্যাশবোর্ডের পরিসংখ্যান: ২ কলাম, ছোট কার্ড */
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px;}
  .stat-card{padding:11px 12px 12px;}
  .stat-card .num{font-size:24px;}
  .stat-card .lbl{font-size:12px;line-height:1.35;}

  /* ফর্ম: iOS-এ ফোকাসে অটো-জুম বন্ধ (১৬px), বাটন/ইনপুট আঙুল-উপযোগী */
  input,select,textarea,.field select{font-size:16px;}
  input:not([type=checkbox]):not([type=radio]):not([type=file]),select{min-height:44px;}
  .btn{min-height:42px;}
  .btn-sm{min-height:38px;padding:7px 12px;}
  input[type=checkbox],input[type=radio]{width:20px;height:20px;}
  .idcards-toolbar{gap:10px;}
  .idcards-toolbar .field{min-width:0;flex:1 1 100%;}

  /* টেবিল: পাশে সোয়াইপ করা যায়, একটু ঘন */
  .table-scroll{-webkit-overflow-scrolling:touch;}
  .table-scroll table{font-size:13px;}
  .table-scroll thead th{padding:8px 9px;font-size:12px;}
  .table-scroll tbody td{padding:8px 9px;}

  /* মোডাল: নিচ থেকে উঠে আসা শিট */
  .modal-bg{padding:0;align-items:flex-end;}
  .modal,.modal.modal-wide{max-width:100%;max-height:94vh;max-height:94dvh;border-radius:14px 14px 0 0;}
  .modal-head{padding:12px 14px;position:sticky;top:0;background:#fff;z-index:2;}
  .modal-close{min-width:40px;min-height:40px;font-size:22px;}
  .modal-body{padding:14px;}

  /* টোস্ট বার্তা: পুরো প্রস্থে */
  .toast{max-width:90vw;font-size:14px;}

  /* ফি/সাবজেক্ট পাতার ৪-কলামের ইনলাইন গ্রিড → ১ কলাম */
  .content [style*="grid-template-columns:minmax(260px,1.5fr)"]{grid-template-columns:1fr !important;}

  /* লগইন পাতা: ফর্ম যেন স্ক্রলের অনেক নিচে চলে না যায় — হিরো অংশ ছোট */
  .login-side{padding:20px 18px 16px;}
  .login-side h1{font-size:24px;line-height:1.25;}
  .login-side p{display:none;}
  .login-hero{margin-bottom:8px;gap:12px;}
  .login-hero .hero-badge{width:58px;height:58px;}
  .login-hero .hero-badge svg{width:34px;height:34px;}
  .login-hero .hero-word{font-size:17px;}
  .login-side .tagline{margin-top:12px;padding-top:9px;font-size:11.5px;}
  .login-side .tagline[style]{font-size:12px !important;line-height:1.4 !important;}
  .login-form-side{padding:22px 16px 30px;}
}

/* ---------- ছোট ফোন (≤520px) ---------- */
@media screen and (max-width:520px){
  .field-row{grid-template-columns:1fr !important;}
  .card-head .btn-sm{flex:1 1 auto;}
}
@media screen and (max-width:420px){
  .topbar .avatar{display:none;}
  .topbar .title{font-size:15px;}
}

/* নিরাপত্তা-জাল: কার্ডের সরাসরি ভেতরের যে কোনো টেবিল (র‍্যাপার ভুলে গেলেও) পাশে স্ক্রল করবে, পেজ চওড়া করবে না */
@media screen and (max-width:820px){
  .content .card > table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
}

/* ---------- বিষয় শিক্ষকের ড্যাশবোর্ড: দুটি বড় কাজের কার্ড ---------- */
.quick-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;}
.quick-card{
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  min-height:200px;padding:22px 18px;border-radius:var(--radius-lg,10px);cursor:pointer;
  background:linear-gradient(135deg,var(--pine-dark),var(--pine));color:#fff;
  border-top:3px solid var(--gold);box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s;
}
.quick-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(10,17,13,.25);}
.quick-card:focus-visible{outline:3px solid var(--gold);outline-offset:2px;}
.quick-card .qc-icon{font-size:46px;line-height:1;margin-bottom:12px;}
.quick-card .qc-title{font-size:26px;font-weight:800;letter-spacing:.3px;line-height:1.3;}
.quick-card .qc-hint{font-size:13.5px;opacity:.9;margin-top:10px;}
@media screen and (max-width:820px){
  .quick-cards{gap:12px;}
  .quick-card{min-height:150px;padding:18px 14px;}
  .quick-card .qc-icon{font-size:38px;margin-bottom:8px;}
  .quick-card .qc-title{font-size:21px;}
}

/* শিক্ষার্থীর ড্যাশবোর্ড: ৪টি কার্ড সবসময় এক লাইনে */
.quick-cards.quick-cards-4{grid-template-columns:repeat(4,minmax(0,1fr));}
.quick-cards-4 .quick-card{min-height:170px;padding:18px 10px;}
.quick-cards-4 .quick-card .qc-title{font-size:22px;}
@media screen and (max-width:820px){
  .quick-cards.quick-cards-4{gap:8px;}
  .quick-cards-4 .quick-card{min-height:110px;padding:12px 4px;}
  .quick-cards-4 .quick-card .qc-icon{font-size:26px;margin-bottom:6px;}
  .quick-cards-4 .quick-card .qc-title{font-size:13px;}
  .quick-cards-4 .quick-card .qc-hint{display:none;}
}

/* ---------- শিক্ষার্থী হাজিরা: চেক-বক্স ---------- */
.sa-check-wrap{display:inline-flex;align-items:center;gap:10px;cursor:pointer;min-height:36px;}
.sa-check-wrap .sa-check{width:22px;height:22px;margin:0;accent-color:var(--pine);cursor:pointer;flex-shrink:0;}
.sa-check-text{font-size:13.5px;font-weight:600;}
.sa-check-text.is-present{color:var(--pine-dark);}
.sa-check-text.is-absent{color:var(--danger);}
.sa-summary{font-size:14px;margin:0 0 12px;padding:9px 12px;background:var(--pine-tint);border-radius:var(--radius);color:var(--pine-dark);line-height:1.6;}
.sa-summary .sa-hint{color:var(--ink-soft);font-size:12.5px;}

/* ফোনে হাজিরার টেবিল পাশে না কেটে পর্দায় আঁটে: আইডি ভেঙে যায়, শুধু চেক-বক্স থাকে (লেবেল উপরের গণনায় আছে) */
@media screen and (max-width:820px){
  .sa-table th,.sa-table td{padding:8px 6px !important;white-space:normal !important;word-break:break-word;}
  .sa-table td:nth-child(2){font-size:11px !important;}
  .sa-table .sa-check-text{display:none;}
  .sa-table th:last-child,.sa-table td:last-child{text-align:center;width:48px;}
}

/* Active / Inactive status badges (green / red) */
.status-badge{display:inline-block;font-size:12px;font-weight:700;padding:3px 12px;border-radius:999px;}
.status-active{background:#DDF3E4;color:#15803D;border:1px solid #86D0A0;}
.status-inactive{background:#FBE4E1;color:#C62828;border:1px solid #EFA9A3;}
.status-pending{background:#FFF3D6;color:#8A6100;border:1px solid #EBCB7A;}

/* Android app download box (login page) */
.app-dl{margin-top:22px;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;text-align:center;}
.app-dl-msg{font-size:14.5px;font-weight:600;color:var(--ink);line-height:1.6;margin-bottom:12px;}
.app-dl-btn{display:block;text-decoration:none;text-align:center;box-sizing:border-box;}
.app-dl-hint{margin-top:10px;font-size:12px;color:var(--ink-soft);line-height:1.6;}

/* আমার স্বাক্ষর — locked menu items (until the signature is uploaded) */
.nav-item.nav-locked{opacity:.4;cursor:not-allowed;pointer-events:none;}
.sig-preview{border:1px dashed var(--line);border-radius:var(--radius);background:#fff;padding:12px;display:flex;align-items:center;justify-content:center;min-height:120px;}
.sig-preview img{max-width:100%;max-height:160px;object-fit:contain;}

/* Admin dashboard: highlighted "Staff Attendance" card */
.quick-card.quick-card-highlight{
  background:linear-gradient(135deg,#B8860B,#E6B422 55%,#F3CF5B);color:#2a1f00;
  border-top:3px solid var(--pine-dark);box-shadow:0 0 0 3px rgba(230,180,34,.35),var(--shadow);
  animation:qcGlow 2.4s ease-in-out infinite;
}
.quick-card.quick-card-highlight .qc-hint{opacity:1;font-weight:600;}
@keyframes qcGlow{0%,100%{box-shadow:0 0 0 3px rgba(230,180,34,.30),var(--shadow);}50%{box-shadow:0 0 0 7px rgba(230,180,34,.18),var(--shadow);}}
@media (prefers-reduced-motion:reduce){.quick-card.quick-card-highlight{animation:none;}}

/* ============ STAFF ID CARD (কর্মকর্তা-কর্মচারী) — সরকারি টেমপ্লেট ধাঁচ ============ */
/* ===== Staff ID card (54 × 85.6 mm): deep-blue slanted header, portrait photo with a brass offset frame ===== */
.sidcard{--sic-blue:#06017f;--sic-blue2:#1126b0;--sic-brass:#d6a431;--sic-ink:#0b1448;--sic-mute:#5b6485;
  width:54mm;height:85.6mm;border-radius:3mm;overflow:hidden;position:relative;background:#fff;border:1px solid #c9cee3;box-shadow:0 1px 4px rgba(0,0,0,.12);
  font-family:var(--font-doc);color:var(--sic-ink);page-break-inside:avoid;break-inside:avoid;
  display:flex;flex-direction:column;align-items:center;text-align:center;
  -webkit-print-color-adjust:exact;print-color-adjust:exact;color-adjust:exact;}
.sidcard .sic-head{align-self:stretch;flex-shrink:0;background:linear-gradient(155deg,var(--sic-blue) 0%,var(--sic-blue2) 100%);
  padding:2.4mm 1.5mm 8mm;clip-path:polygon(0 0,100% 0,100% 86%,0 100%);display:flex;flex-direction:column;align-items:center;color:#fff;}
.sidcard .sic-emblem{width:8.2mm;height:8.2mm;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;padding:0.9mm;box-sizing:border-box;flex-shrink:0;}
.sidcard .sic-emblem img{max-width:100%;max-height:100%;object-fit:contain;display:block;}
.sidcard .sic-inst-n{margin-top:1.2mm;width:100%;font-weight:800;line-height:1.1;white-space:nowrap;overflow:hidden;text-align:center;}
.sidcard .sic-inst-n span{display:inline-block;white-space:nowrap;font-size:2.4mm;}
.sidcard .sic-inst-a{margin-top:-0.4mm;width:100%;font-weight:500;line-height:1.1;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;}
.sidcard .sic-inst-a span{white-space:nowrap;font-size:2.5mm;}
.sidcard .sic-photo{width:17mm;height:21mm;min-height:15mm;margin-top:-8mm;flex-shrink:1;position:relative;z-index:2;box-sizing:border-box;border:0.7mm solid #fff;border-radius:1.6mm;background:#fff;
  box-shadow:1.2mm 1.2mm 0 var(--sic-brass),0 0 0 0.2mm rgba(6,1,127,.28);overflow:hidden;}
.sidcard .sic-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.sidcard .sic-name{margin-top:2mm;padding:0 2.5mm;font-size:3.5mm;font-weight:800;line-height:1.2;color:var(--sic-blue);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.sidcard .sic-desig{margin-top:0.6mm;padding:0 2.5mm;font-size:2.6mm;font-weight:700;line-height:1.25;color:var(--sic-mute);}
.sidcard .sic-info{align-self:stretch;margin:1.8mm 4mm 0;flex-shrink:0;}
.sidcard .sic-line{display:flex;justify-content:center;align-items:center;gap:1.5mm;text-align:center;padding:0.6mm 0;line-height:1.25;border-bottom:0.2mm solid #d9def0;}
.sidcard .sic-line:last-child{border-bottom:0;}
.sidcard .sic-line span{font-size:2.15mm;font-weight:600;color:var(--sic-mute);white-space:nowrap;}
.sidcard .sic-line b{font-size:2.6mm;font-weight:800;color:var(--sic-ink);text-align:center;}
.sidcard .sic-line b.sic-blood{min-width:6mm;height:3.6mm;padding:0 1.5mm;border-radius:1.8mm;background:#d62839;color:#fff;font-size:2.55mm;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;}
.sidcard .sic-sign-row{align-self:stretch;display:flex;justify-content:space-between;align-items:flex-end;padding:0 4mm;margin:auto 0 1.2mm;flex-shrink:0;}
.sidcard .sic-qr{width:11mm;height:11mm;flex-shrink:0;background:#fff;padding:0.4mm;box-sizing:border-box;border:0.2mm solid #d9def0;border-radius:0.8mm;}
.sidcard .sic-qr svg{width:100%;height:100%;display:block;}
.sidcard .sic-sign{width:21mm;display:flex;flex-direction:column;align-items:center;font-size:2.4mm;font-weight:700;color:var(--sic-mute);line-height:1.1;}
.sidcard .sic-sign img{height:7.5mm;max-width:100%;object-fit:contain;display:block;}
.sidcard .sic-sign span{width:100%;border-top:0.2mm solid #9aa3c4;padding-top:0.5mm;margin-top:0.3mm;}
.sidcard .sic-foot{align-self:stretch;flex-shrink:0;text-align:center;padding:1.9mm 2mm;background:var(--sic-blue);border-top:0.5mm solid var(--sic-brass);color:#fff;font-size:2.55mm;line-height:1.2;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sidcard .sic-foot a{color:#fff;text-decoration:none;}
@media print{ .sidcard{box-shadow:none;} }

/* ============ পরীক্ষা: রুটিন / অ্যাডমিট কার্ড / আসন বিন্যাস ============ */
.exm-entry-table input,.exm-entry-table select{width:100%;min-width:90px;}
.exm-sheet{background:#fff;color:#111;font-family:var(--font-doc);padding:6px;}
.exm-head{display:flex;align-items:center;gap:12px;border-bottom:2px solid var(--pine-dark);padding-bottom:6px;margin-bottom:8px;}
.exm-head img{width:46px;height:46px;border-radius:50%;object-fit:cover;background:#fff;flex:none;}
.exm-head-t{flex:1;text-align:center;}
.exm-inst{font-size:17px;font-weight:800;color:var(--pine-dark);line-height:1.25;}
.exm-title{font-size:14px;font-weight:800;margin-top:2px;}
.exm-sub{font-size:12.5px;margin-top:2px;line-height:1.4;}
.exm-table{width:100%;border-collapse:collapse;margin:8px 0;font-size:13px;}
.exm-table th,.exm-table td{border:1px solid #444;padding:5px 7px;text-align:center;}
.exm-table th{background:#eef3ef;font-weight:800;}
.exm-table-sm{font-size:11.5px;margin:6px 0;}
.exm-table-sm th,.exm-table-sm td{padding:2px 5px;}
.exm-note{font-size:11.5px;line-height:1.45;margin:4px 0;}
.exm-sign-row{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-top:10px;}
.exm-sign{text-align:center;font-size:11.5px;min-width:120px;}
.exm-sign-box{height:34px;border-bottom:1px solid #333;margin-bottom:2px;display:flex;align-items:flex-end;justify-content:center;}
.exm-sign-box img{max-height:32px;max-width:110px;}
.exm-sheet:not(.exm-admit-sheet) .exm-sign-row{justify-content:flex-end;margin-top:26px;}
.exm-page{page-break-after:always;padding-bottom:10px;}
.exm-page:last-child{page-break-after:auto;}
.exm-card{border:1.5px solid #333;border-radius:6px;padding:8px 12px;margin:0 0 10px;page-break-inside:avoid;break-inside:avoid;box-sizing:border-box;}
.exm-card:nth-child(2n){margin-bottom:0;}
.exm-card-body{display:flex;gap:12px;align-items:flex-start;}
.exm-info{flex:1;font-size:12.5px;line-height:1.7;}
.exm-info span{color:#555;margin-right:4px;}
.exm-info span:not(.exm-blank)::after{content:":";margin-left:2px;}
.exm-info b{color:#111;}
.exm-blank{display:inline-block;min-width:44px;border-bottom:1px dotted #333;}
.exm-photo img{width:78px;height:92px;object-fit:cover;border:1px solid #888;}
@media print{
  .exm-sheet{padding:0;}
  .exm-card{border-width:1px;}
}

/* ===== Admit card: A4 landscape, 2 columns, 2 cards per page ===== */
.exm-admit-sheet{padding:0;}
.exm-admit-page{display:grid;grid-template-columns:1fr 1fr;gap:6mm;box-sizing:border-box;
  height:calc(var(--page-content-h, 194mm) - 1mm);margin-bottom:8px;
  break-after:page;page-break-after:always;}
.exm-admit-page:last-child{break-after:auto;page-break-after:auto;margin-bottom:0;}
.exm-admit-page .exm-card{margin:0;height:100%;min-width:0;display:flex;flex-direction:column;padding:6mm 7mm;}
.exm-admit-page .exm-card:nth-child(2n){margin-bottom:0;}
.exm-admit-page .exm-card-body{gap:5mm;}
.exm-admit-page .exm-info{font-size:14px;line-height:1.85;}
.exm-admit-page .exm-photo img{width:30mm;height:36mm;}
.exm-admit-page .exm-table-sm{font-size:13px;}
.exm-admit-page .exm-table-sm th,.exm-admit-page .exm-table-sm td{padding:3px 6px;}
.exm-admit-page .exm-note{font-size:12.5px;}
.exm-admit-page .exm-sign-row{margin-top:auto;padding-top:10px;}
.exm-admit-page .exm-sign{font-size:12.5px;min-width:130px;}



/* ===== Seat stickers: A4 portrait, 3 columns x 7 rows ===== */
.exm-stk-sheet{padding:0;width:var(--page-content-w, 194mm);margin:0 auto;}
.exm-stk-page{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(7,1fr);box-sizing:border-box;
  height:calc(var(--page-content-h, 281mm) - 1mm);margin-bottom:8px;break-after:page;page-break-after:always;}
.exm-stk-page:last-child{break-after:auto;page-break-after:auto;margin-bottom:0;}
.exm-stk{position:relative;overflow:hidden;box-sizing:border-box;border:1px dashed #666;padding:1.5mm 2.5mm;font-size:13px;
  display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;line-height:1.3;min-width:0;}
.exm-stk > *:not(.exm-stk-wm){position:relative;z-index:1;}
.exm-stk-line{white-space:nowrap;flex:none;}
.exm-stk-wm{position:absolute;top:50%;left:50%;height:26mm;width:26mm;object-fit:contain;transform:translate(-50%,-50%);opacity:.12;z-index:0;
  -webkit-print-color-adjust:exact;print-color-adjust:exact;}
.exm-stk-inst{font-size:.85em;font-weight:800;color:var(--pine-dark);}
.exm-stk-exam{font-size:1.05em;font-weight:900;color:#000;margin:.6mm 0;}
.exm-stk-seat{font-size:1em;margin-top:.5mm;}
.exm-stk-seat b{font-size:1.3em;}
.exm-stk-name{font-size:.96em;font-weight:800;margin-top:.5mm;}
.exm-stk-meta{font-size:.8em;}

/* ===== ফেস যাচাই: ক্যামেরা ওভারলে ===== */
.face-overlay{position:fixed;inset:0;background:rgba(10,17,13,.72);display:flex;align-items:center;justify-content:center;z-index:100000;padding:16px;}
.face-box{background:#fff;border-radius:var(--radius-lg);border-top:3px solid var(--gold);width:100%;max-width:420px;padding:16px 16px 14px;text-align:center;box-shadow:0 20px 50px rgba(0,0,0,.4);}
.face-title{font-weight:700;font-size:16px;margin-bottom:10px;}
.face-video-wrap{position:relative;width:100%;aspect-ratio:4/3;background:#0b1410;border-radius:12px;overflow:hidden;}
.face-video-wrap video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1);display:block;}
.face-ring{position:absolute;left:50%;top:50%;width:52%;height:78%;transform:translate(-50%,-50%);border:3px dashed rgba(255,255,255,.75);border-radius:50%;pointer-events:none;transition:border-color .2s;}
.face-ring[data-state="ok"]{border-color:#3ddc84;border-style:solid;}
.face-ring[data-state="blink"]{border-color:#ffd24a;border-style:solid;}
.face-msg{margin:12px 0 2px;font-size:15px;font-weight:600;line-height:1.6;min-height:24px;}
.face-sub{font-size:12.5px;color:var(--ink-soft);min-height:18px;margin-bottom:10px;}

/* ===== লগইন পেজের স্ক্রোলিং বার্তা (লগইন বোতামের নিচে) ===== */
.login-ticker{margin-top:18px;overflow:hidden;white-space:nowrap;background:#FFF8E6;border:1px solid #E6CF8E;border-left:3px solid var(--gold);border-radius:var(--radius);padding:10px 0;}
.login-ticker-text{display:inline-block;padding-left:100%;font-size:14px;font-weight:600;color:#5B4300;animation:loginTicker var(--tk-dur,20s) linear infinite;will-change:transform;}
.login-ticker:hover .login-ticker-text{animation-play-state:paused;}
@keyframes loginTicker{from{transform:translateX(0);}to{transform:translateX(-100%);}}
@media (prefers-reduced-motion: reduce){
  .login-ticker{white-space:normal;text-align:center;padding:10px 14px;}
  .login-ticker-text{animation:none;padding-left:0;}
}

/* ===== অনলাইন ভর্তি আবেদন (পাবলিক পেজ) ===== */
.adm-page{min-height:100vh;background:#F6F3EA;padding:16px 14px 48px;}
.adm-top{max-width:900px;margin:0 auto 14px;display:flex;justify-content:space-between;gap:8px;}
.adm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:4px 16px;}
.adm-grid .field input,.adm-grid .field select,.adm-grid .field textarea{width:100%;box-sizing:border-box;}
.adm-pairs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;}
@media(max-width:600px){.adm-pairs{grid-template-columns:1fr;}}
.adm-triple{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 16px;}
@media(max-width:700px){.adm-triple{grid-template-columns:1fr;}}

.adm-apply-btn:hover{background:#A93226 !important;border-color:#A93226 !important;}
