:root{--ink:#16333d;--muted:#6c7c80;--teal:#11616a;--teal-2:#0d7377;--sea:#dff2ed;--cream:#f5f2e9;--paper:#fff;--line:#dce4e1;--orange:#e8793d;--red:#c44a4a;--green:#2d7a59;--shadow:0 12px 35px rgba(23,56,59,.08);--radius:18px}
*{box-sizing:border-box}body{margin:0;background:#f5f6f2;color:var(--ink);font-family:"DM Sans",sans-serif;font-size:14px}.app-shell{display:grid;grid-template-columns:244px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#123d46;color:#eaf6f3;padding:26px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;gap:12px;align-items:center;padding:0 8px 28px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:#eaf5e5;color:#145462;font:800 21px Manrope}.brand b{font:800 18px Manrope;letter-spacing:.04em}.brand small,.public-brand small{display:block;color:#a7c5c4;font-size:10px;margin-top:2px}.module-label{color:#7ca6a5;font-size:10px;font-weight:700;letter-spacing:.16em;padding:10px 12px}.nav-item{width:100%;border:0;background:transparent;color:#bcd1d0;border-radius:10px;padding:11px 12px;display:flex;align-items:center;gap:12px;text-align:left;font:500 13px "DM Sans";cursor:pointer;margin:2px 0}.nav-item span{font-size:18px;width:19px}.nav-item em{margin-left:auto;background:#2b6670;color:#cfe5e1;border-radius:12px;padding:3px 7px;font-size:9px;font-style:normal}.nav-item:hover,.nav-item.active{background:#245661;color:white}.nav-item.active{box-shadow:inset 3px 0 #76c7ad}.sync-card{margin-top:auto;border:1px solid #38636a;background:#194852;border-radius:12px;padding:12px;display:flex;gap:10px;align-items:center}.sync-card b{font-size:11px}.sync-card small{display:block;color:#92b4b2;font-size:9px;margin-top:3px}.pulse{width:8px;height:8px;border-radius:50%;background:#73d0a8;box-shadow:0 0 0 5px rgba(115,208,168,.13)}.version{text-align:center;color:#739a9b;font-size:9px}.topbar{height:86px;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);border-bottom:1px solid #e3e7e3;display:flex;align-items:center;padding:0 34px;position:sticky;top:0;z-index:10}.topbar h1{font:700 21px Manrope;margin:3px 0 0}.eyebrow,.section-kicker{margin:0;font-size:9px;font-weight:700;letter-spacing:.14em;color:#779093}.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px}.date-chip{font-size:12px;color:#5e7074}.avatar{width:36px;height:36px;border:0;border-radius:50%;background:#dceddf;color:#17515a;font-weight:800}.menu-btn{display:none}.content{padding:28px 34px;max-width:1440px;margin:auto}.view{display:none}.view.active{display:block;animation:fade .22s ease}@keyframes fade{from{opacity:.4;transform:translateY(3px)}}.welcome{border-radius:22px;padding:30px 34px;background:linear-gradient(120deg,#155865,#147078);color:white;display:flex;align-items:end;justify-content:space-between;gap:30px;overflow:hidden;position:relative}.welcome:after{content:"";position:absolute;width:270px;height:270px;border:50px solid rgba(255,255,255,.06);border-radius:50%;right:18%;top:-160px}.pill{display:inline-flex;border-radius:20px;padding:6px 10px;background:rgba(223,242,237,.14);color:#d7efea;font-size:9px;font-weight:800;letter-spacing:.11em}.pill.teal{background:var(--sea);color:var(--teal)}.welcome h2,.opname-banner h2,.public-intro h2{font:700 27px/1.2 Manrope;margin:13px 0 8px;max-width:620px}.welcome p,.opname-banner p{color:#c3dede;margin:0;max-width:600px}.btn{border:0;border-radius:10px;padding:11px 15px;font:700 12px "DM Sans";cursor:pointer;transition:.18s;white-space:nowrap}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--teal);color:white;box-shadow:0 5px 13px rgba(17,97,106,.2)}.btn.light{background:white;color:var(--teal);position:relative;z-index:1}.btn.outline{border:1px solid #b8cbc7;background:white;color:var(--teal)}.btn.ghost{background:#eef2ef;color:#586a6d}.btn.full{width:100%}.btn.large{padding:14px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.stat{background:white;border:1px solid #e1e6e2;border-radius:14px;padding:18px;display:flex;align-items:center;gap:13px}.stat-icon{width:39px;height:39px;border-radius:11px;display:grid;place-items:center;background:var(--sea);color:var(--teal);font-size:19px}.stat:nth-child(3) .stat-icon{background:#fff0e5;color:var(--orange)}.stat b{display:block;font:800 23px Manrope}.stat small{color:var(--muted)}.grid.two-one{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:16px}.card{background:white;border:1px solid #e1e6e2;border-radius:var(--radius);padding:21px;box-shadow:0 2px 0 rgba(24,67,72,.015)}.card.flush{padding:0;overflow:hidden}.card.accent{background:#edf6f1}.card h3,.report-card h3{font:700 16px Manrope;margin:5px 0}.card-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:14px}.text-btn{border:0;background:none;color:var(--teal);font-weight:700;font-size:11px;cursor:pointer}.low-row{display:grid;grid-template-columns:1fr 90px 65px;gap:14px;align-items:center;padding:11px 0;border-bottom:1px solid #edf0ee}.low-row:last-child{border:0}.item-identity{display:flex;align-items:center;gap:10px}.item-dot{width:34px;height:34px;border-radius:9px;background:#eaf3ef;display:grid;place-items:center;color:var(--teal)}.item-identity b{display:block;font-size:12px}.item-identity small{color:var(--muted);font-size:10px}.progress{height:6px;border-radius:8px;background:#edf0ee;overflow:hidden}.progress i{display:block;height:100%;background:var(--orange);border-radius:8px}.stock-low{color:var(--red);font-weight:700;text-align:right}.qr-box{display:grid;place-items:center;margin:16px auto 8px;width:105px;height:105px;background:white;border-radius:14px;border:6px solid white;box-shadow:var(--shadow)}.fake-qr{font-size:74px;line-height:1;color:#143f47}.accent p{font-size:11px;color:#5f7777;text-align:center;line-height:1.55}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th{padding:12px 16px;color:#809093;background:#fafbf9;font-size:9px;letter-spacing:.1em;text-align:left;text-transform:uppercase;white-space:nowrap}td{padding:13px 16px;border-top:1px solid #eef1ef;font-size:12px;white-space:nowrap}.right{text-align:right}.badge{padding:4px 8px;border-radius:12px;font-size:9px;font-weight:800}.badge.in{background:#e4f3eb;color:var(--green)}.badge.out{background:#fff0e8;color:#b05a32}.badge.adjust{background:#edf0f7;color:#58627b}.badge.ok{background:#e4f3eb;color:var(--green)}.badge.low{background:#ffebe6;color:var(--red)}.plus{color:var(--green);font-weight:700}.minus{color:var(--red);font-weight:700}.action-row{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px}.search{background:white;border:1px solid #dce3df;border-radius:10px;display:flex;align-items:center;gap:8px;padding:0 12px;min-width:320px}.search input{border:0;outline:0;padding:10px 0;width:100%;font:inherit}.filter-row{display:flex;gap:8px;margin-bottom:13px}.filter{border:1px solid #dce3df;background:white;border-radius:18px;padding:7px 13px;color:#637477;font:600 11px "DM Sans";cursor:pointer}.filter.active{background:var(--ink);color:white;border-color:var(--ink)}.standalone-select,select,input,textarea{font:inherit;color:var(--ink)}.standalone-select{border:1px solid #dce3df;border-radius:10px;padding:0 12px;background:white}.split-form{display:grid;grid-template-columns:minmax(420px,620px) 300px;gap:22px;justify-content:center}.form-card h2{font:700 24px Manrope;margin:7px 0 3px}.muted{color:var(--muted)}form label{display:block;font-weight:700;font-size:11px;margin:15px 0 6px}label span{float:right;color:#94a2a3;font-weight:400;font-size:9px}input,select,textarea{width:100%;border:1px solid #d8e1dd;border-radius:9px;padding:11px 12px;background:#fff;outline:0}input:focus,select:focus,textarea:focus{border-color:#55a69e;box-shadow:0 0 0 3px rgba(56,146,137,.1)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.info-panel{align-self:start;background:#e6f1ec;border-radius:18px;padding:24px;color:#335b5e}.info-icon{width:34px;height:34px;border-radius:50%;background:#c9e5dc;display:grid;place-items:center;font-weight:800}.info-panel p,.info-panel li{font-size:11px;line-height:1.6}.info-panel ul{padding-left:17px}.mini-rule{height:1px;background:#c8ded7;margin:20px 0}.public-view{margin:-28px -34px;min-height:calc(100vh - 86px);background:#eef3ef;padding-bottom:40px}.public-top{height:64px;background:white;border-bottom:1px solid #e1e7e3;display:flex;align-items:center;justify-content:space-between;padding:0 7%}.public-brand{display:flex;align-items:center;gap:10px}.public-brand b{font:800 16px Manrope}.secure-chip{font-size:10px;color:var(--green);background:#e8f4ed;border-radius:20px;padding:7px 10px}.public-layout{display:grid;grid-template-columns:370px 480px;gap:65px;justify-content:center;padding:46px 30px}.public-intro{padding-top:35px}.public-intro p{color:#687d7e;line-height:1.6}.steps{margin-top:34px;display:grid;gap:20px}.steps div{display:flex;gap:12px;align-items:center}.steps b{width:31px;height:31px;display:grid;place-items:center;background:white;border-radius:50%;color:var(--teal);box-shadow:0 4px 15px rgba(27,74,75,.08)}.steps strong,.steps small{display:block}.steps small{font-size:10px;color:#7a8d8d;margin-top:3px}.public-form{box-shadow:var(--shadow);padding:27px}.stock-hint{background:#ecf6f2;border-radius:8px;padding:9px 11px;color:#397068;font-size:10px}.signature-wrap{position:relative;border:1px dashed #9fb7b2;border-radius:10px;background:#fbfcfa;height:130px;overflow:hidden}.signature-wrap canvas{width:100%;height:100%;touch-action:none;cursor:crosshair}.signature-wrap button{position:absolute;right:8px;top:8px;border:0;background:#edf2ef;border-radius:6px;padding:5px 8px;color:#607270;font-size:9px;cursor:pointer}.signature-wrap>span{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;color:#a4b1af;font-weight:400}.consent{display:flex;align-items:start;gap:8px!important;font-weight:400!important}.consent input{width:auto;margin-top:2px}.consent span{float:none;color:#5e7072;font-size:10px}.opname-banner{background:#173f48;color:white;padding:25px 28px;border-radius:18px 18px 0 0;display:flex;justify-content:space-between;align-items:center}.period{background:rgba(255,255,255,.1);padding:11px 16px;border-radius:10px;text-align:right}.period span{display:block;font-size:9px;color:#a8c7c5}.period b{font-size:12px}.opname-table input{min-width:95px;padding:8px}.opname-table .note-input{min-width:180px}.opname-footer{padding:17px 20px;display:flex;align-items:center;justify-content:space-between;background:#fafbf9;border-top:1px solid #e6ebe8}.report-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.report-card{background:white;border:1px solid #e1e6e2;border-radius:15px;padding:19px;display:grid;grid-template-columns:40px 1fr;gap:12px}.report-icon{width:38px;height:38px;border-radius:10px;background:var(--sea);color:var(--teal);display:grid;place-items:center;font-size:18px}.report-card p{font-size:10px;color:var(--muted);line-height:1.5;margin:0 0 12px}.report-card .btn{grid-column:2}.print-preview{margin-top:18px;min-height:300px}.print-doc{max-width:800px;margin:auto;color:#222}.print-doc .doc-head{text-align:center;border-bottom:3px double #222;padding-bottom:12px;margin-bottom:20px}.print-doc h2{font:700 18px Manrope;margin:8px}.print-doc table th{background:#eee;color:#222}.print-doc td,.print-doc th{border:1px solid #999;padding:7px}.sign-grid{display:grid;grid-template-columns:1fr 1fr;text-align:center;gap:100px;margin-top:45px}.sign-line{margin-top:65px;border-bottom:1px solid #333}.modal{position:fixed;inset:0;background:rgba(10,36,40,.48);display:none;place-items:center;z-index:50;padding:20px}.modal.open{display:grid}.modal-card{background:white;border-radius:18px;padding:24px;width:min(500px,100%);box-shadow:0 30px 80px rgba(0,0,0,.2)}.modal-head{display:flex;justify-content:space-between}.modal-head h2{margin:5px 0;font:700 21px Manrope}.close-btn{border:0;background:#edf2ef;width:30px;height:30px;border-radius:50%;font-size:19px;cursor:pointer}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.toast{position:fixed;right:25px;bottom:25px;background:#153f47;color:white;padding:13px 17px;border-radius:10px;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);pointer-events:none;transition:.25s;z-index:99}.toast.show{opacity:1;transform:translateY(0)}
@media(max-width:960px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-260px;transition:.25s;width:244px}.sidebar.open{left:0}.menu-btn{display:grid}.topbar{padding:0 18px;gap:12px}.content{padding:20px}.grid.two-one,.public-layout,.split-form{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.public-view{margin:-20px}.public-layout{max-width:560px;margin:auto;gap:10px}.public-intro{padding-top:10px}.steps{display:none}.report-grid{grid-template-columns:1fr}.date-chip{display:none}}
@media(max-width:580px){.welcome{padding:24px;display:block}.welcome .btn{margin-top:20px;width:100%}.welcome h2,.public-intro h2{font-size:23px}.stats{grid-template-columns:1fr 1fr}.stat{padding:13px;gap:8px}.stat b{font-size:19px}.action-row{flex-direction:column}.search{min-width:0}.standalone-select{height:40px}.form-grid{grid-template-columns:1fr;gap:0}.public-layout{padding:26px 15px}.public-top{padding:0 18px}.secure-chip{display:none}.opname-banner{display:block}.period{margin-top:15px;text-align:left}.topbar h1{font-size:17px}.content{padding:14px}.public-view{margin:-14px}.filter-row{overflow:auto}.report-card{grid-template-columns:35px 1fr}}
@media print{body{background:white}.sidebar,.topbar,.report-grid,.toast{display:none!important}.app-shell{display:block}.content{padding:0}.view{display:none!important}#view-reports{display:block!important}.print-preview{border:0;box-shadow:none;margin:0;padding:0}.print-doc{max-width:none}.no-print{display:none!important}}

/* Visual theme aligned with the school's attendance application */
:root{
  --ink:#0b2d50;
  --muted:#70859b;
  --teal:#1768ae;
  --teal-2:#2f86c6;
  --sea:#eaf4ff;
  --cream:#f3f7fc;
  --paper:#ffffff;
  --line:#d6e2ee;
  --orange:#ffc337;
  --red:#d54c58;
  --green:#23865f;
  --shadow:0 8px 24px rgba(12,45,80,.07);
}
body{background:#f3f7fc;color:var(--ink)}
.sidebar{background:linear-gradient(180deg,#0b2944 0%,#123e63 100%);color:#fff}
.brand-logo{display:block;width:42px;height:42px;object-fit:contain;flex:0 0 42px}
.public-brand .brand-logo{width:38px;height:38px;flex-basis:38px}
.brand small,.public-brand small{color:#a9bfd2}
.module-label{color:#6f8ba5}
.nav-item{color:#b8c9d8}
.nav-item:hover,.nav-item.active{background:#234866;color:#fff}
.nav-item.active{box-shadow:none}
.nav-item.active span{color:#ffc52f}
.nav-item em{background:#315b79;color:#dceaf4}
.sync-card{border-color:#3b5f7d;background:#234967}
.sync-card small{color:#a9c0d2}
.pulse{background:#56cda0;box-shadow:0 0 0 5px rgba(86,205,160,.13)}
.version{color:#7897af}
.topbar{background:rgba(248,250,253,.94);border-bottom-color:#d8e3ed}
.eyebrow,.section-kicker{color:#71869c}
.welcome{background:linear-gradient(115deg,#174d7b 0%,#2372ad 65%,#318bca 100%)}
.welcome p,.opname-banner p{color:#d2e5f3}
.pill{color:#fff;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.18)}
.pill.teal{background:#e8f3ff;color:#1768ae;border-color:#d2e8fb}
.btn.primary{background:linear-gradient(90deg,#174f7e,#2d83c2);box-shadow:0 7px 18px rgba(23,104,174,.2)}
.btn.outline{border-color:#bfd3e4;color:#1768ae}
.btn.ghost{background:#eef3f8;color:#536c82}
.stat,.card,.report-card{border-color:#d8e3ed;box-shadow:var(--shadow)}
.stat-icon,.report-icon,.item-dot{background:#eaf4ff;color:#1672bf}
.stat:nth-child(3) .stat-icon{background:#fff5d9;color:#c88c00}
.card.accent{background:#edf5fc}
.text-btn{color:#1768ae}
.progress{background:#edf2f6}.progress i{background:#ffc337}
.qr-box{border-color:#fff}.fake-qr{color:#0d3557}
th{background:#f7f9fc;color:#6e8499}
.badge.in,.badge.ok{background:#e8f5ef;color:#23865f}
.badge.out{background:#fff2e9;color:#bd6031}
.badge.low{background:#ffecef;color:#c64250}
.filter.active{background:#0d3353;border-color:#0d3353}
.info-panel{background:#eaf4ff;color:#244e71}
.info-icon{background:#d4e9fb;color:#1768ae}
.mini-rule{background:#cee0ef}
.public-view{background:#f1f6fb}
.public-top{border-bottom-color:#d8e3ed}
.secure-chip{background:#e8f5ef;color:#23865f}
.steps b{color:#1768ae}
.stock-hint{background:#eaf4ff;color:#2c648f}
input:focus,select:focus,textarea:focus{border-color:#438bc2;box-shadow:0 0 0 3px rgba(32,119,184,.1)}
.signature-wrap{border-color:#9fb9cf;background:#fbfdff}
.opname-banner{background:linear-gradient(110deg,#113a5d,#226fa7)}
.toast{background:#0b2d50}

/* Printable letterhead: real text and independent logo assets */
.print-doc .doc-head.letterhead{display:grid;grid-template-columns:92px 1fr 110px;align-items:center;gap:12px;padding:0 5px 7px;margin-bottom:20px;border-bottom:4px double #111;color:#111;font-family:"Times New Roman",serif;text-align:center}
.letterhead-logo{height:116px;display:flex;align-items:center;justify-content:center}
.letterhead-logo img{display:block;max-width:100%;max-height:108px;object-fit:contain}
.letterhead-logo.school img{max-height:116px}
.letterhead-copy{line-height:1.06}
.letterhead-copy p{margin:0;font-size:18px;font-weight:700}
.letterhead-copy h2{margin:5px 0 4px;font:700 25px/1.05 "Times New Roman",serif}
.letterhead-copy h3{margin:0 0 6px;font:700 18px/1.05 "Times New Roman",serif}
.letterhead-copy small{display:block;font-size:10px;line-height:1.35}
.letterhead-copy a{color:#0645ad;text-decoration:underline}
.report-filters{display:grid;grid-template-columns:170px 210px minmax(220px,1fr) auto;gap:12px;align-items:end;margin-bottom:16px;padding:16px 18px}.report-filters label{margin:0;font-size:10px}.report-filters select{margin-top:6px}.print-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:-4px 0 18px;padding:12px 14px;border-radius:10px;background:#eaf4ff;color:#174f7e}.print-toolbar span{font-size:11px}.print-toolbar .btn{padding:9px 16px}@media(max-width:860px){.report-filters{grid-template-columns:1fr 1fr}.report-filters .btn{height:40px}}@media(max-width:580px){.report-filters{grid-template-columns:1fr}}
.profile-divider{display:flex;align-items:center;justify-content:space-between}.profile-divider small{color:var(--muted);font-size:9px;font-weight:500}.official-grid{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:12px}.official-grid input[readonly]{background:#f3f6f9;color:#526b80}@media(max-width:700px){.official-grid{grid-template-columns:1fr}}
.report-grid{grid-template-columns:repeat(4,1fr)}
@media(max-width:580px){.print-doc .doc-head.letterhead{grid-template-columns:55px 1fr 62px;gap:5px}.letterhead-logo{height:78px}.letterhead-logo img,.letterhead-logo.school img{max-height:72px}.letterhead-copy p{font-size:11px}.letterhead-copy h2{font-size:14px}.letterhead-copy h3{font-size:11px}.letterhead-copy small{font-size:6px}}
@media(max-width:1100px){.report-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:580px){.report-grid{grid-template-columns:1fr}}
.profile-layout{display:grid;grid-template-columns:minmax(520px,760px) 290px;gap:22px;justify-content:center}.profile-divider{margin:22px 0 2px;padding-top:18px;border-top:1px solid var(--line);color:var(--ink)}.profile-note{margin-top:0}.document-meta{margin:12px 0 18px;line-height:1.55}.document-intro{font-family:"Times New Roman",serif;font-size:13px;line-height:1.55;margin:14px 0}.officer-identity{display:grid;grid-template-columns:28px 110px 12px 1fr;gap:3px 7px;margin:10px 0 14px 18px;font-family:"Times New Roman",serif;font-size:13px}.print-table{table-layout:fixed}.print-table th,.print-table td{white-space:normal;font-size:9px;line-height:1.2;padding:5px 4px;vertical-align:middle}.print-table td:nth-child(1){text-align:center}.doc-total td{font-weight:700;background:#f5f5f5}.signature-table{width:100%;margin-top:24px;table-layout:fixed}.signature-table td{border:0!important;padding:2px 15px!important;vertical-align:top;font:12px/1.35 "Times New Roman",serif;white-space:normal}.signature-space{height:54px}.signature-name{text-decoration:underline;font-weight:700}.document-note{margin:12px 0;font:italic 12px "Times New Roman",serif}.card-document .print-table th,.card-document .print-table td{font-size:8px;padding:4px 3px}.card-document{max-width:1000px}.card-document .letterhead{grid-template-columns:72px 1fr 86px}.card-document .letterhead-logo{height:90px}.card-document .letterhead-logo img,.card-document .letterhead-logo.school img{max-height:86px}
@media(max-width:960px){.profile-layout{grid-template-columns:1fr}}
.school-logo-upload{display:flex;align-items:center;gap:16px;margin:12px 0 4px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#f8fafc}.school-logo-preview{width:82px;height:82px;flex:0 0 82px;display:grid;place-items:center;border-radius:12px;background:#fff;border:1px solid var(--line);overflow:hidden}.school-logo-preview img{max-width:72px;max-height:72px;object-fit:contain}.school-logo-upload p{font-size:10px;margin:9px 0 0}.school-logo-upload .btn{margin-right:5px}
.history-more{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-top:1px solid var(--line);background:#fafbf9;color:var(--muted);font-size:11px}
.btn.danger{background:#fff0f1;color:#b4232f;border:1px solid #f0c3c7}.item-delete{margin-right:auto}
.auth-identity{align-items:center!important;justify-content:center!important}.auth-identity img{width:300px!important;max-width:92%!important;object-position:center!important;margin:0!important}
.auth-screen{position:fixed;inset:0;z-index:200;background:#eef4f8;display:grid;place-items:center;padding:22px;transition:.2s}.auth-screen.hidden{opacity:0;pointer-events:none}.auth-panel{width:min(880px,100%);min-height:470px;background:#fff;border:1px solid #dbe5ed;border-radius:24px;display:grid;grid-template-columns:1.05fr .95fr;overflow:hidden;box-shadow:0 24px 70px rgba(20,54,80,.14)}.auth-identity{padding:58px 48px;background:linear-gradient(145deg,#173f65,#245f8d);color:#fff;display:flex;flex-direction:column;justify-content:center}.auth-identity img{width:240px;max-width:85%;height:auto;object-fit:contain;object-position:left center;margin-bottom:35px}.auth-identity h1{font:800 30px Manrope;margin:0 0 10px}.auth-identity p{color:#d5e5f2;line-height:1.6;max-width:330px}.auth-panel form{padding:62px 48px;align-self:center}.auth-panel form label{margin-top:18px}.auth-error{min-height:18px;color:#b4232f;font-size:11px;margin:12px 0}.auth-panel button:disabled{opacity:.65;cursor:wait}.sync-card[data-state="offline"] .pulse{background:#e6a21a;box-shadow:0 0 0 5px rgba(230,162,26,.13)}.sync-card[data-state="syncing"] .pulse{animation:pulseSync 1s infinite}@keyframes pulseSync{50%{opacity:.35}}@media(max-width:700px){.auth-panel{grid-template-columns:1fr}.auth-identity{padding:30px}.auth-identity img{width:180px;margin-bottom:16px}.auth-identity h1{font-size:23px}.auth-panel form{padding:28px 30px}}
.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}.ui-icon{width:19px;height:19px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}.nav-item>svg{width:19px;height:19px}.menu-btn svg,.search svg{width:18px;height:18px}.stat-icon .ui-icon,.report-icon .ui-icon{width:21px;height:21px}.item-dot .ui-icon{width:17px;height:17px}.upload-icon .ui-icon{width:27px;height:27px}.fake-qr .ui-icon{width:72px;height:72px;stroke-width:1.25}
@media print{@page{size:A4 portrait;margin:9mm}.print-toolbar{display:none!important}.print-doc{width:100%;max-width:none}.print-table{page-break-inside:auto}.print-table tr{page-break-inside:avoid}.signature-table{page-break-inside:avoid}.card-document .letterhead{grid-template-columns:72px 1fr 86px}.card-document .letterhead-logo{height:86px}.card-document .letterhead-logo img,.card-document .letterhead-logo.school img{max-height:82px}}
.mode-tabs{display:inline-flex;background:#e5edf5;padding:4px;border-radius:11px;margin-bottom:16px}.mode-tab{border:0;background:transparent;color:#627b91;border-radius:8px;padding:10px 16px;font:700 11px "DM Sans";cursor:pointer}.mode-tab.active{background:white;color:#1768ae;box-shadow:0 3px 10px rgba(20,61,96,.1)}.incoming-mode{display:none}.incoming-mode.active{display:block}.import-card{padding:0;overflow:hidden}.upload-zone{text-align:center;padding:52px 24px;border:2px dashed #bfd2e3;margin:22px;border-radius:16px;background:#f8fbfe}.upload-zone.drag{border-color:#247bb8;background:#edf6ff}.upload-icon{width:54px;height:54px;margin:0 auto 13px;border-radius:16px;display:grid;place-items:center;background:#e5f2ff;color:#1768ae;font-size:27px}.upload-zone h2{font:700 22px Manrope;margin:0}.upload-zone p{color:var(--muted);margin:8px auto 18px;max-width:500px}.upload-zone small{display:block;color:#91a1b0;margin-top:12px}.import-status{display:none;margin:22px;padding:14px;border-radius:10px;background:#eaf4ff;color:#245e8b}.import-status.show{display:block}.import-review{display:none;padding:22px}.import-review.show{display:block}.import-review.show~*{display:none}.import-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px}.import-meta div{padding:12px;border:1px solid var(--line);border-radius:10px;background:#f8fafc}.import-meta span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase;letter-spacing:.08em}.import-meta b{display:block;margin-top:4px;font-size:11px}.import-review input,.import-review select{min-width:85px;padding:7px 8px;font-size:11px}.import-name{min-width:250px!important}.import-footer{display:flex;align-items:center;justify-content:flex-end;gap:30px;padding-top:18px}.import-footer span{display:block;color:var(--muted);font-size:9px}.import-footer b{font:800 19px Manrope}.remove-import{border:0;background:#fff0f1;color:#c6414d;border-radius:7px;padding:6px 9px;cursor:pointer}@media(max-width:760px){.import-meta{grid-template-columns:1fr 1fr}.import-footer{align-items:stretch;flex-direction:column}.import-footer .btn{width:100%}}
.teacher-card{margin-top:18px}.teacher-card h2{font:700 20px Manrope;margin:5px 0}.teacher-count{background:#eaf4ff;color:#1768ae;border-radius:20px;padding:7px 11px;font-size:10px;font-weight:800}.teacher-actions{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0 8px}.csv-hint{font-size:10px;color:var(--muted);margin-bottom:14px}.teacher-empty{text-align:center;color:var(--muted);padding:28px!important}.print-table thead th{background:#174f7e!important;color:#fff!important;border-color:#123e63!important;text-align:center}.print-table tbody tr:nth-child(even) td{background:#f1f6fb}.print-table tbody td{border-color:#9eb3c5}.print-table .doc-total td,.doc-total td{background:#fff1bd!important;color:#0b2d50}.handover-document .print-table th:nth-child(1){width:5%}.handover-document .print-table th:nth-child(2){width:12%}.handover-document .print-table th:nth-child(3){width:25%}.handover-document .print-table th:nth-child(4){width:10%}.handover-document .print-table th:nth-child(5),.handover-document .print-table th:nth-child(6){width:8%}.handover-document .print-table th:nth-child(7){width:14%}.handover-document .print-table th:nth-child(8){width:18%}.opname-document .print-table th:nth-child(1){width:6%}.opname-document .print-table th:nth-child(2){width:30%}.opname-document .print-table th:nth-child(3){width:9%}.opname-document .print-table th:nth-child(4){width:10%}.opname-document .print-table th:nth-child(5){width:14%}.opname-document .print-table th:nth-child(6){width:17%}.opname-document .print-table th:nth-child(7){width:14%}.inventory-document .print-table th:nth-child(1){width:5%}.inventory-document .print-table th:nth-child(2){width:10%}.inventory-document .print-table th:nth-child(3){width:27%}.inventory-document .print-table th:nth-child(4){width:12%}.inventory-document .print-table th:nth-child(5){width:9%}.inventory-document .print-table th:nth-child(6){width:8%}.inventory-document .print-table th:nth-child(7){width:13%}.inventory-document .print-table th:nth-child(8){width:16%}.card-document .print-table th:nth-child(1){width:9%}.card-document .print-table th:nth-child(2){width:11%}.card-document .print-table th:nth-child(3){width:20%}.card-document .print-table th:nth-child(4),.card-document .print-table th:nth-child(5),.card-document .print-table th:nth-child(6){width:6%}.card-document .print-table th:nth-child(7){width:10%}.card-document .print-table th:nth-child(8),.card-document .print-table th:nth-child(9),.card-document .print-table th:nth-child(10){width:9%}
.public-access-mode .sidebar,.public-access-mode .topbar{display:none!important}.public-access-mode .app-shell{display:block}.public-access-mode .content{padding:0}.public-access-mode .view{display:none!important}.public-access-mode #view-public{display:block!important;min-height:100vh;margin:0}.public-access-mode .public-top{max-width:1100px;margin:auto;padding-top:22px}.public-form-state{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;color:#60788c}.public-form-state b{font:700 18px Manrope;color:#173f65;margin-bottom:8px}.public-form-state span{max-width:360px;line-height:1.6}.public-form-state.error b{color:#a8323e}.public-form button:disabled{opacity:.65;cursor:wait}
.fake-qr canvas,.fake-qr img{display:block!important;width:112px!important;height:112px!important}.fake-qr:has(canvas){padding:9px;background:#fff;border-radius:8px}
