:root{--navy:#0b2345;--navy2:#123760;--cyan:#18b9cd;--cyan-soft:#e7f9fc;--bg:#f4f7fb;--text:#172238;--muted:#6c7890;--line:#e2e8f0;--white:#fff;--green:#15a66d;--red:#e15463;--amber:#e5a62d;--shadow:0 12px 35px rgba(19,44,78,.08);font-family:Vazirmatn,Tahoma,"Segoe UI",Arial,sans-serif;color:var(--text)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}
.login-page{min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr;background:var(--white);direction:ltr}.login-brand{grid-column:1;grid-row:1;direction:rtl;background:radial-gradient(circle at 10% 10%,#1c5584 0,transparent 36%),linear-gradient(145deg,#061a35,#0d315a);color:white;padding:9vw;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.login-brand:after{content:"";position:absolute;width:420px;height:420px;border:1px solid #ffffff25;border-radius:50%;left:-190px;bottom:-180px;box-shadow:0 0 0 55px #ffffff08,0 0 0 120px #ffffff06}.brand-mark{width:44px;height:44px;border-radius:13px;background:linear-gradient(135deg,var(--cyan),#5bdddf);color:#07304c;display:grid;place-items:center;font-weight:900;font-size:24px}.login-brand>span{font-size:18px;margin-top:12px;color:#a9dce7}.login-brand h1{font-size:clamp(32px,4vw,58px);line-height:1.45;max-width:600px;margin:50px 0 18px}.login-brand p{font-size:17px;line-height:2;color:#c5d4e4;max-width:560px}.login-points{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px}.login-points span{background:#ffffff10;border:1px solid #ffffff18;border-radius:30px;padding:10px 15px;color:#d9edf2}.login-card{grid-column:2;grid-row:1;direction:rtl;width:min(430px,82%);margin:auto}.login-card h2{font-size:30px;margin:25px 0 8px}.login-card>p{color:var(--muted);margin-bottom:30px}.login-card label,.form-grid label{display:flex;flex-direction:column;gap:8px;margin:15px 0;font-size:13px;font-weight:700}.login-card input,.form-grid input,.form-grid select,.form-grid textarea,.toolbar input,.toolbar select{border:1px solid var(--line);background:#fbfdff;border-radius:11px;padding:13px 14px;outline:none;color:var(--text);width:100%}.login-card input:focus,.form-grid input:focus,.form-grid select:focus{border-color:var(--cyan);box-shadow:0 0 0 3px #18b9cd15}.password{display:flex;position:relative}.password button{position:absolute;left:8px;top:7px;border:0;background:transparent;color:var(--navy);padding:7px}.primary{border:0;background:linear-gradient(135deg,var(--navy2),var(--navy));color:white;padding:12px 18px;border-radius:10px;font-weight:700}.wide{width:100%;margin-top:10px;padding:15px}.secondary{border:1px solid var(--line);background:white;color:var(--navy);padding:10px 15px;border-radius:10px}.demo-box{margin-top:20px;padding:13px 15px;background:var(--cyan-soft);border-radius:11px;color:var(--navy);display:flex;flex-direction:column;gap:6px;font-size:12px}.mobile-logo{display:none;align-items:center;gap:10px}
.shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{background:var(--navy);color:white;padding:20px 14px;position:fixed;right:0;top:0;bottom:0;width:260px;display:flex;flex-direction:column;z-index:10}.logo{display:flex;align-items:center;gap:12px;padding:4px 8px 25px}.logo strong{font-size:17px}.logo small{display:block;color:#8fa8c3;font-size:10px;margin-top:4px}nav{overflow:auto}nav button{width:100%;display:flex;gap:13px;align-items:center;border:0;background:transparent;color:#b8c8da;border-radius:10px;padding:11px 13px;margin:3px 0;text-align:right}nav button:hover,nav button.active{background:#ffffff10;color:white}nav button.active{box-shadow:inset -3px 0 var(--cyan)}nav .ico{font-size:17px;width:22px;text-align:center}.nav-section{color:#66819f;font-size:10px;padding:17px 13px 7px;display:block}.sidebar-foot{border-top:1px solid #ffffff12;margin-top:auto;padding:16px 6px 2px;display:grid;grid-template-columns:36px 1fr 30px;align-items:center;gap:9px}.mini-avatar{width:36px;height:36px;border-radius:50%;background:#d9f8fb;color:var(--navy);display:grid;place-items:center;font-weight:bold}.sidebar-foot strong{font-size:12px;display:block}.sidebar-foot small{font-size:10px;color:#8fa8c3}.sidebar-foot button{border:0;background:transparent;color:#8fa8c3;font-size:20px}.main{grid-column:2;min-width:0}header{height:88px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 30px;gap:16px;position:sticky;top:0;z-index:5}header h1{font-size:20px;margin:0 0 6px}header p{font-size:11px;color:var(--muted);margin:0}.header-actions{margin-right:auto;display:flex;gap:11px;align-items:center}.icon-btn{border:1px solid var(--line);background:white;border-radius:10px;padding:9px 11px}.date-chip{background:var(--cyan-soft);color:var(--navy);border-radius:10px;padding:10px 13px;font-size:11px;font-weight:700}#menu{display:none}main{padding:28px;max-width:1500px;margin:auto}.hero{background:linear-gradient(110deg,var(--navy),#174d77);border-radius:18px;padding:26px 30px;color:white;display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow);overflow:hidden;position:relative}.hero:after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;border:45px solid #ffffff09;left:6%;top:-110px}.hero h2{margin:0 0 10px;font-size:23px}.hero p{margin:0;color:#bdd0e1}.hero-badge{padding:10px 15px;background:#ffffff12;border:1px solid #ffffff1c;border-radius:10px;font-size:12px;z-index:1}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:15px;margin:20px 0}.stat-card,.card{background:white;border:1px solid #e8edf3;border-radius:15px;box-shadow:0 5px 18px rgba(19,44,78,.035)}.stat-card{padding:18px}.stat-card .stat-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:11px}.stat-icon{width:37px;height:37px;border-radius:10px;background:var(--cyan-soft);display:grid;place-items:center}.stat-card strong{display:block;font-size:24px;margin-top:14px}.stat-card small{font-size:10px;color:var(--green)}.grid-2{display:grid;grid-template-columns:1.5fr 1fr;gap:18px}.card{padding:20px}.card-head,.page-head,.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px}.card h3{font-size:15px;margin:0}.card-head{margin-bottom:18px}.link-btn{border:0;background:none;color:#0b89a2;font-size:11px}.announcement{padding:14px 0;border-bottom:1px solid var(--line)}.announcement:last-child{border:0}.announcement strong{font-size:13px}.announcement p{font-size:11px;color:var(--muted);line-height:1.8;margin:6px 0}.announcement small{font-size:9px;color:#96a0b2}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick{border:1px solid var(--line);background:#fbfdff;padding:17px 10px;border-radius:12px;text-align:center;color:var(--navy)}.quick span{display:block;font-size:20px;margin-bottom:8px}.quick small{font-weight:700}.page-head{margin-bottom:18px}.page-head h2{font-size:20px;margin:0 0 6px}.page-head p{margin:0;color:var(--muted);font-size:11px}.toolbar{background:white;padding:12px;border:1px solid var(--line);border-radius:13px;margin-bottom:15px}.toolbar input{max-width:300px}.toolbar select{max-width:210px}.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:14px}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:right;padding:14px 16px;border-bottom:1px solid #edf0f4;font-size:12px}th{color:var(--muted);font-size:10px;background:#fbfcfe}tr:last-child td{border-bottom:0}.tag{padding:5px 9px;border-radius:20px;background:#eef3f8;font-size:10px}.tag.green{background:#e8f8f1;color:#087c51}.tag.red{background:#fff0f1;color:#b93645}.tag.amber{background:#fff7e6;color:#9b6811}.empty{text-align:center;padding:50px 20px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.form-grid .full{grid-column:1/-1}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.muted{color:var(--muted)}dialog{border:0;border-radius:18px;padding:25px;width:min(650px,92vw);box-shadow:0 25px 90px #071b3866}dialog::backdrop{background:#06162d99;backdrop-filter:blur(3px)}.modal-close{position:absolute;left:15px;top:13px;border:0;background:#f1f4f8;border-radius:8px;width:31px;height:31px;font-size:19px}.modal-title{margin:0 0 22px;font-size:19px}.attendance-row{display:grid;grid-template-columns:1.4fr 1fr 1.4fr;gap:10px;align-items:center;padding:10px;border-bottom:1px solid var(--line)}.attendance-row select,.attendance-row input{padding:9px;border:1px solid var(--line);border-radius:8px;width:100%}.score{width:85px!important}.report-head{display:flex;justify-content:space-between;padding:20px;background:var(--navy);color:white;border-radius:13px;margin-bottom:15px}.report-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.report-summary div{background:#f5f8fb;border-radius:10px;padding:13px;text-align:center}.report-summary strong{display:block;font-size:18px}.money{font-weight:700;color:var(--navy)}.toast{position:fixed;left:24px;bottom:24px;background:var(--navy);color:white;border-radius:10px;padding:13px 18px;z-index:100;opacity:0;transform:translateY(15px);pointer-events:none;transition:.25s;box-shadow:var(--shadow)}.toast.show{opacity:1;transform:none}.toast.error{background:#a72e3b}
.head-actions{display:flex;gap:9px}.field-help{font-weight:400;color:var(--muted)}.child-picker{border:1px solid var(--line);border-radius:12px;padding:13px;margin:12px 0}.child-picker legend{font-size:12px;font-weight:700;padding:0 7px}.child-picker label{display:flex;flex-direction:row;align-items:center;gap:10px;margin:5px 0;padding:9px;background:#f8fafc;border-radius:8px}.child-picker input{width:auto}.child-picker small{color:var(--muted);margin-right:5px}.schedule-days{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.schedule-day{background:white;border:1px solid var(--line);border-radius:14px;padding:14px;min-height:180px}.schedule-day h3{display:flex;justify-content:space-between;margin:0 0 12px;font-size:14px}.schedule-day h3 span{font-size:9px;color:var(--muted);font-weight:400}.schedule-item{position:relative;border:1px solid #dfe8ef;border-right:3px solid var(--cyan);border-radius:10px;padding:11px 12px;margin:8px 0;background:#fbfdff;display:grid;gap:5px}.schedule-item strong{font-size:12px}.schedule-item span,.schedule-item small{font-size:10px;color:var(--muted)}.schedule-period{position:absolute;left:8px;top:8px;background:var(--cyan-soft);color:#08778a;padding:4px 7px;border-radius:10px;font-size:8px}.delete-schedule{position:absolute;left:7px;bottom:7px;border:0;background:#fff0f1;color:#b93645;border-radius:6px;width:23px;height:23px}.schedule-empty{display:grid;place-items:center;min-height:110px;color:#a1aabc;font-size:10px;border:1px dashed var(--line);border-radius:10px}
@media(max-width:1100px){.stats{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:1fr}.shell{grid-template-columns:220px 1fr}.sidebar{width:220px}.schedule-days{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.login-page{display:block;padding:30px 0}.login-brand{display:none}.login-card{width:88%}.mobile-logo{display:flex}.shell{display:block}.sidebar{transform:translateX(105%);transition:.25s;width:270px}.sidebar.open{transform:none}.main{width:100%}header{padding:0 15px;height:75px}#menu{display:block}.header-actions .icon-btn{display:none}main{padding:15px}.stats{grid-template-columns:1fr 1fr}.hero{align-items:flex-start;flex-direction:column;gap:18px;padding:22px}.hero h2{font-size:19px}.page-head{align-items:flex-start}.head-actions{flex-direction:column}.form-grid{display:block}.toolbar{align-items:stretch;flex-direction:column}.toolbar input,.toolbar select{max-width:none}.attendance-row{grid-template-columns:1fr 1fr}.attendance-row input{grid-column:1/-1}.report-summary{grid-template-columns:1fr 1fr}.schedule-days{grid-template-columns:1fr}}
.row-actions,.schedule-actions{display:flex;gap:6px;align-items:center}.schedule-actions{position:absolute;left:7px;bottom:7px}.schedule-actions .delete-schedule,.schedule-actions .edit-schedule{position:static;border:0;border-radius:6px;width:23px;height:23px}.schedule-actions .delete-schedule{background:#fff0f1;color:#b93645}.schedule-actions .edit-schedule{background:#e7f9fc;color:#08778a}.otp-hint{font-size:11px;line-height:1.8;color:#08778a;background:var(--cyan-soft);padding:9px;border-radius:8px}.settings-form{padding:24px}.official-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid var(--navy);padding-bottom:15px;margin-bottom:18px}.official-head h2{margin:0 0 7px}.official-head p,.official-head small{display:block;color:var(--muted);font-size:11px}.print-only{display:none}.printable footer{text-align:center;border-top:1px solid var(--line);padding-top:15px;margin-top:20px;color:var(--muted);font-size:10px}.role-stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}
@media print{body{background:white}.sidebar,header,.no-print,.page-head,.toast,dialog{display:none!important}.shell,.main{display:block!important}.main{grid-column:auto}.main main{padding:0;max-width:none}.printable,.table-wrap,.card{box-shadow:none;border-color:#bbb}.print-only{display:block}.report-head,.official-head{print-color-adjust:exact;-webkit-print-color-adjust:exact}.schedule-days{grid-template-columns:repeat(3,1fr)}button{display:none!important}table{white-space:normal}th,td{padding:8px;font-size:10px}}
.jalali-picker{position:fixed;inset:0;background:#06162d88;display:none;place-items:center;z-index:200;backdrop-filter:blur(3px)}.jalali-picker.open{display:grid}.jalali-picker-card{width:min(360px,92vw);background:white;border-radius:18px;padding:18px;box-shadow:0 25px 80px #06162d77}.jalali-picker-head,.jalali-picker-foot{display:flex;justify-content:space-between;align-items:center}.jalali-picker-head button,.jalali-picker-foot button{border:0;background:var(--cyan-soft);color:var(--navy);border-radius:9px;padding:9px 12px}.jalali-picker-head strong{font-size:15px}.jalali-week,.jalali-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;text-align:center}.jalali-week{margin:18px 0 8px;color:var(--muted);font-size:10px}.jalali-grid{min-height:250px}.jalali-day{border:0;background:#f6f8fb;border-radius:9px;color:var(--text)}.jalali-day:hover,.jalali-day.active{background:var(--navy);color:white}.jalali-picker-foot{border-top:1px solid var(--line);padding-top:13px;margin-top:13px}.form-grid input[name$="_jalali"],#attendance-date,#report-from,#report-to{background:#fbfdff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23123760' stroke-width='2'%3E%3Crect x='3' y='4' width='18' height='17' rx='2'/%3E%3Cpath d='M8 2v4M16 2v4M3 10h18'/%3E%3C/svg%3E") no-repeat 12px center;padding-left:40px;cursor:pointer}.schedule-grid{display:grid;grid-template-columns:95px repeat(6,minmax(155px,1fr));background:white;border:1px solid var(--line);border-radius:15px;overflow:auto;box-shadow:var(--shadow)}.schedule-corner,.schedule-grid-head,.schedule-grid-period{background:#f5f8fb;font-weight:700;padding:13px;border-left:1px solid var(--line);border-bottom:1px solid var(--line);position:sticky;z-index:2}.schedule-grid-head{top:0;text-align:center;color:var(--navy)}.schedule-corner{top:0;right:0;z-index:3}.schedule-grid-period{right:0;display:grid;gap:4px}.schedule-grid-period small{font-weight:400;color:var(--muted)}.schedule-grid-cell{min-height:105px;padding:6px;border-left:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.schedule-slot{border-right:3px solid var(--cyan);background:#f4fbfd;border-radius:9px;padding:9px;display:grid;gap:4px;position:relative;margin-bottom:5px}.schedule-slot strong{font-size:11px}.schedule-slot span,.schedule-slot small{font-size:9px;color:var(--muted)}.schedule-slot .schedule-actions{position:static;margin-top:5px}.schedule-add-slot{width:100%;min-height:90px;border:1px dashed #ccd8e4;background:transparent;border-radius:9px;color:#9ba9b9;font-size:20px}.schedule-add-slot:hover{background:var(--cyan-soft);color:var(--cyan)}.assignment-summary,.finance-kpis,.grade-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-bottom:16px}.assignment-summary>div,.finance-kpis>div,.grade-kpis>div{background:white;border:1px solid var(--line);border-radius:14px;padding:17px}.assignment-summary strong,.finance-kpis strong,.grade-kpis strong{font-size:20px;display:block;margin-bottom:7px}.assignment-summary span,.finance-kpis small,.grade-kpis small{color:var(--muted);font-size:10px}.finance-kpis{grid-template-columns:repeat(4,1fr)}.cell-sub{display:block;color:var(--muted);font-size:9px;margin-top:5px}.check-line{flex-direction:row!important;align-items:center}.check-line input{width:auto!important}.file-drop{border:2px dashed #cbd8e6;border-radius:15px;padding:25px;display:grid;place-items:center;gap:8px;margin:18px 0;cursor:pointer;background:#fafdff}.file-drop:hover{border-color:var(--cyan);background:var(--cyan-soft)}.file-drop span{font-weight:700;color:var(--navy)}.file-drop small,.import-guide p{color:var(--muted);font-size:11px}.import-guide{display:flex;justify-content:space-between;align-items:center;gap:15px;background:var(--cyan-soft);padding:13px;border-radius:11px}.import-summary{display:flex;gap:8px;margin:13px 0}.import-errors{color:var(--red);font-size:10px;white-space:normal}.payment-context{background:var(--navy);color:white;border-radius:12px;padding:15px;display:flex;gap:12px;align-items:center}.payment-context small{margin-right:auto;color:#c4d6e6}.news-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.news-card{background:white;border:1px solid var(--line);border-radius:15px;padding:20px;box-shadow:var(--shadow)}.news-card.pinned{border-top:4px solid var(--cyan)}.news-card h3{margin:17px 0 10px}.news-card p{color:var(--muted);line-height:2;font-size:12px;white-space:pre-wrap}.news-meta,.news-card footer{display:flex;gap:9px;align-items:center;color:var(--muted);font-size:10px}.news-meta b{color:#08778a}.news-card footer{border-top:1px solid var(--line);padding-top:13px;margin-top:18px}.news-card footer .link-btn{margin-right:auto}.message-layout{display:grid;grid-template-columns:1fr 1fr;gap:16px}.message-item{border:1px solid var(--line);border-radius:11px;padding:13px;margin:9px 0;display:flex;justify-content:space-between;gap:15px;cursor:pointer}.message-item.unread{border-right:4px solid var(--cyan);background:#f4fbfd}.message-item p{margin:7px 0 0;color:var(--muted);font-size:11px;line-height:1.7}.message-item aside{display:grid;text-align:left;gap:5px;min-width:135px;color:var(--muted);font-size:9px}.assistant-shell{max-width:850px;margin:auto;background:white;border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:var(--shadow)}.assistant-intro{text-align:center;padding:15px}.assistant-intro>span{width:52px;height:52px;display:grid;place-items:center;margin:auto;background:var(--cyan-soft);border-radius:16px;font-size:25px;color:var(--navy)}.assistant-intro p,.assistant-safe{color:var(--muted);font-size:11px}.assistant-prompts{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.assistant-chat{max-height:360px;overflow:auto;display:grid;gap:10px;padding:15px 0}.chat{padding:13px 16px;border-radius:14px;max-width:80%;line-height:1.9;font-size:12px}.chat.user{background:var(--navy);color:white;margin-right:auto;border-bottom-left-radius:4px}.chat.bot{background:#f1f5f9;margin-left:auto;border-bottom-right-radius:4px}.assistant-shell form{display:flex;gap:9px;border-top:1px solid var(--line);padding-top:15px}.assistant-shell form input{flex:1;border:1px solid var(--line);border-radius:11px;padding:13px}.report-card-modern{background:white;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:var(--shadow)}.report-brand{display:flex;align-items:center;gap:13px;border-bottom:3px solid var(--navy);padding-bottom:17px}.report-brand h2{margin:0 0 5px}.report-brand p{margin:0;color:var(--muted);font-size:10px}.report-badge{margin-right:auto;background:var(--cyan-soft);color:var(--navy);padding:9px 14px;border-radius:20px;font-weight:700}.student-identity,.attendance-band{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}.student-identity>div,.attendance-band>div{background:#f6f8fb;border-radius:11px;padding:13px}.student-identity small,.attendance-band small{display:block;color:var(--muted);font-size:9px;margin-bottom:6px}.attendance-band{text-align:center}.report-signatures{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:60px;text-align:center;color:var(--muted);font-size:10px}.report-signatures span{border-top:1px solid #aab5c2;padding-top:8px}
@media(max-width:900px){.schedule-grid{grid-template-columns:80px repeat(6,minmax(135px,1fr))}.finance-kpis{grid-template-columns:1fr 1fr}.news-grid,.message-layout{grid-template-columns:1fr}.assignment-summary{grid-template-columns:1fr 1fr}.student-identity{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.finance-kpis,.assignment-summary,.grade-kpis{grid-template-columns:1fr}.payment-context{align-items:flex-start;flex-direction:column}.payment-context small{margin:0}.assistant-shell form{align-items:stretch;flex-direction:column}.report-card-modern{padding:14px}.report-brand{align-items:flex-start}.report-badge{font-size:10px}.attendance-band{grid-template-columns:1fr 1fr}}
.report-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.report-columns section{min-width:0}@media(max-width:800px){.report-columns{grid-template-columns:1fr}}
@media print{.schedule-grid{grid-template-columns:70px repeat(6,1fr);box-shadow:none}.schedule-grid-cell{min-height:80px}.schedule-slot{padding:5px}.report-card-modern{border:0;padding:0}.report-signatures{margin-top:45px}.news-grid{grid-template-columns:1fr 1fr}}
.export-link{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.result-count{margin-right:auto;color:var(--muted);font-size:11px;white-space:nowrap}
.global-search{position:relative;margin-right:auto;width:min(420px,35vw)}.global-search>span{position:absolute;right:13px;top:9px;color:var(--muted);font-size:20px}.global-search>input{width:100%;border:1px solid var(--line);background:#f7f9fc;border-radius:12px;padding:11px 40px 11px 13px;outline:none}.global-search>input:focus{background:white;border-color:var(--cyan);box-shadow:0 0 0 3px #18b9cd15}.search-results{position:absolute;top:48px;right:0;left:0;background:white;border:1px solid var(--line);border-radius:13px;box-shadow:0 20px 60px #102a4b24;padding:7px;max-height:420px;overflow:auto;z-index:50}.search-results button{width:100%;border:0;background:white;text-align:right;border-radius:9px;padding:10px;display:grid;grid-template-columns:auto 1fr;gap:3px 9px}.search-results button:hover{background:var(--cyan-soft)}.search-results button strong{font-size:12px}.search-results button small{grid-column:2;color:var(--muted);font-size:9px}.search-kind{grid-row:1/3;background:#eef3f8;color:var(--navy);border-radius:8px;padding:5px;font-size:8px;align-self:center}.search-wait{padding:20px;text-align:center;color:var(--muted);font-size:11px}
.homework-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.homework-card{background:white;border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow)}.homework-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.homework-top h3{margin:12px 0 0}.homework-card>p{color:var(--muted);font-size:12px;line-height:2;white-space:pre-wrap}.homework-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:13px;background:#f7f9fc;border-radius:11px;font-size:10px;color:var(--muted)}.homework-meta strong{color:var(--text)}.resource-link{display:inline-block;margin-top:12px;color:#08778a;text-decoration:none;font-size:11px}.submission-summary{border-top:1px solid var(--line);margin-top:15px;padding-top:14px;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:11px}.submission-summary>div{display:grid;gap:7px}.submission-summary span{color:var(--muted)}.submission-answer{background:#f6f8fb;border-right:4px solid var(--cyan);padding:15px;border-radius:10px;line-height:2;white-space:pre-wrap;font-size:12px}.export-center{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}.export-center a{background:white;border:1px solid var(--line);border-radius:14px;padding:17px;text-decoration:none;color:var(--text);display:grid;grid-template-columns:42px 1fr;gap:3px 10px;box-shadow:0 5px 18px rgba(19,44,78,.035)}.export-center a:hover{border-color:var(--cyan);transform:translateY(-1px)}.export-center a>span{grid-row:1/3;width:42px;height:42px;background:var(--cyan-soft);border-radius:11px;display:grid;place-items:center;color:var(--navy);font-size:19px}.export-center strong{font-size:12px}.export-center small{font-size:9px;color:var(--muted)}
@media(max-width:1000px){.global-search{width:min(330px,32vw)}.homework-grid{grid-template-columns:1fr}}
@media(max-width:760px){header>div:nth-of-type(1){min-width:0}header h1{white-space:nowrap}.global-search{width:auto;flex:1;margin-right:0}.global-search input{font-size:11px}.header-actions{display:none}.export-center{grid-template-columns:1fr 1fr}.submission-summary{align-items:flex-start;flex-direction:column}}
@media(max-width:480px){.global-search{display:none}.export-center{grid-template-columns:1fr}}

/* v0.7: grouped navigation, mirrored desktop login and communication center */
.nav-group{margin:3px 0}.nav-group summary{list-style:none;display:flex;justify-content:space-between;align-items:center;color:#7892ae;font-size:10px;padding:10px 13px;cursor:pointer;user-select:none}.nav-group summary::-webkit-details-marker{display:none}.nav-group summary span{transition:transform .2s}.nav-group[open] summary span{transform:rotate(180deg)}.nav-group:not([open]){border-bottom:1px solid #ffffff08}.nav-group button{animation:nav-in .15s ease-out}@keyframes nav-in{from{opacity:0;transform:translateY(-3px)}}
.channel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-bottom:18px}.channel-card{display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center;background:white;border:1px solid var(--line);border-radius:15px;padding:16px;box-shadow:var(--shadow)}.channel-card.ready{border-top:3px solid var(--green)}.channel-card.pending{border-top:3px solid var(--amber)}.channel-icon{width:44px;height:44px;border-radius:12px;background:var(--cyan-soft);color:var(--navy);display:grid;place-items:center;font-size:19px;font-weight:900}.channel-card h3{margin:0 0 6px;font-size:13px}.channel-card p{margin:0 0 5px;color:var(--muted);font-size:9px;line-height:1.7}.channel-card small{color:#08778a;font-size:9px}.communication-note{background:#f5f8fb;border-right:3px solid var(--cyan);padding:12px;border-radius:9px;color:var(--muted);font-size:10px;line-height:1.8}.contact-list{display:flex;flex-wrap:wrap;gap:7px;border-top:1px solid var(--line);padding-top:15px;margin-top:18px}
@media(max-width:1000px){.channel-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.channel-grid{grid-template-columns:1fr}.channel-card{grid-template-columns:44px 1fr}.channel-card>.tag{grid-column:2}}

/* v0.8: direct receipts and clearer finance workspace */
.finance-kpis.modern{grid-template-columns:repeat(5,1fr)}.finance-kpis.modern>div{position:relative;overflow:hidden}.finance-kpis.modern>div:after{content:"";position:absolute;width:55px;height:55px;border-radius:50%;background:var(--cyan-soft);left:-20px;bottom:-24px}.finance-kpis.modern .attention{background:linear-gradient(145deg,var(--navy),#174d77);color:white;border:0}.finance-kpis.modern .attention small{color:#c2d4e5}.finance-tabs{display:flex;gap:7px;background:#eaf0f6;border-radius:13px;padding:5px;width:max-content;margin-bottom:13px}.finance-tabs button{border:0;background:transparent;color:var(--muted);border-radius:9px;padding:10px 16px;font-weight:700}.finance-tabs button span{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:12px;background:#dce5ee;font-size:9px;margin-right:6px}.finance-tabs button.active{background:white;color:var(--navy);box-shadow:0 3px 12px #102a4b12}.section-export{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#f7f9fc;border:1px solid var(--line);border-radius:12px;padding:10px 13px;margin-bottom:10px}.section-export span{font-size:10px;color:var(--muted)}.direct-payment-guide{background:linear-gradient(135deg,var(--navy),#174d77);color:white;border-radius:13px;padding:15px 17px;display:grid;gap:6px;margin-bottom:12px}.direct-payment-guide strong{font-size:13px}.direct-payment-guide span{font-size:10px;color:#c7d8e7;line-height:1.8}.direct-receipt{padding:8px}.receipt-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:3px solid var(--navy);padding-bottom:18px}.receipt-head>div{display:grid;grid-template-columns:46px 1fr;gap:2px 12px}.receipt-head .brand-mark{grid-row:1/3}.receipt-head h2{margin:0;font-size:20px}.receipt-head p{margin:5px 0 0;color:var(--muted);font-size:10px}.receipt-head>strong{background:var(--cyan-soft);color:var(--navy);padding:9px 12px;border-radius:10px}.receipt-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:20px 0}.receipt-grid>div{background:#f6f8fb;border-radius:10px;padding:13px;display:grid;gap:7px}.receipt-grid small{color:var(--muted);font-size:9px}.receipt-note{background:#f7f9fc;border-right:3px solid var(--cyan);padding:12px;border-radius:9px;font-size:11px;line-height:1.9}.receipt-signatures{display:grid;grid-template-columns:1fr 1fr;gap:70px;margin:65px 25px 25px;text-align:center}.receipt-signatures span{border-top:1px solid #9daaba;padding-top:9px;color:var(--muted);font-size:10px}.receipt-disclaimer{text-align:center;color:var(--muted);font-size:9px;border-top:1px dashed var(--line);padding-top:12px}.receipt-modal{width:min(720px,92vw)}
@media(max-width:1100px){.finance-kpis.modern{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.finance-kpis.modern{grid-template-columns:1fr 1fr}.finance-tabs{width:100%}.finance-tabs button{flex:1}.section-export{align-items:flex-start;flex-direction:column}.receipt-grid{grid-template-columns:1fr}}
@media(max-width:460px){.finance-kpis.modern{grid-template-columns:1fr}}
@media print{body.receipt-print .shell,body.receipt-print>#login,body.receipt-print>#toast{display:none!important}body.receipt-print #modal.receipt-modal{display:block!important;position:static;width:100%;max-height:none;box-shadow:none;border-radius:0;padding:0}body.receipt-print #modal::backdrop{display:none}body.receipt-print #modal .direct-receipt{display:block!important}}

/* v0.6: top-layer calendar, compact modals and in-page reports */
dialog:not(.jalali-picker){max-height:calc(100vh - 40px);overflow:auto}
dialog.jalali-picker{border:0;background:transparent;padding:0;width:min(360px,92vw);height:max-content;max-height:none;overflow:visible}dialog.jalali-picker[open]{display:block}
dialog.jalali-picker::backdrop{background:#06162d88;backdrop-filter:blur(3px)}
dialog.jalali-picker .jalali-picker-card{width:100%}
.jalali-jump{display:flex;gap:7px;align-items:center}.jalali-jump select{width:auto;min-width:105px;border:1px solid var(--line);border-radius:9px;background:white;padding:8px;color:var(--navy);font:inherit}.jalali-jump select[data-select="year"]{min-width:86px;direction:ltr}.picker-search{margin:5px 0 8px}.searchable-picker #guardian-student-list{max-height:290px;overflow:auto;padding-left:4px}.form-error{background:#fff1f2;border:1px solid #fecdd3;color:#b42334;border-radius:10px;padding:11px;line-height:1.8}.account-notice{background:var(--cyan-soft);border:1px solid #cdeff4;color:var(--navy);border-radius:11px;padding:12px;line-height:1.8;font-size:11px}.period-settings{display:grid;gap:9px;margin:16px 0}.period-setting-row{display:grid;grid-template-columns:75px minmax(130px,1fr) minmax(145px,1fr) minmax(145px,1fr) 34px;gap:9px;align-items:end;background:#f7f9fc;border:1px solid var(--line);border-radius:12px;padding:11px}.period-setting-row>strong{align-self:center}.period-setting-row label{font-size:10px}.period-setting-row input{width:100%;border:1px solid var(--line);border-radius:9px;padding:10px}.period-remove{border:0;background:#fff0f1;color:#b93645;border-radius:8px;height:38px;font-size:18px}
.period-summary{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.period-summary span{background:#f5f8fb;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:10px;color:var(--muted)}.period-summary strong{color:var(--navy);margin-left:5px}
@media(max-width:760px){.jalali-jump{gap:4px}.jalali-jump select{min-width:90px;padding:7px 5px}.jalali-jump select[data-select="year"]{min-width:75px}.period-setting-row{grid-template-columns:1fr 1fr}.period-setting-row>strong,.period-setting-row>input{grid-column:1/-1}.period-remove{grid-column:1/-1}}
.export-center button{background:white;border:1px solid var(--line);border-radius:14px;padding:17px;color:var(--text);display:grid;grid-template-columns:42px 1fr;gap:3px 10px;box-shadow:0 5px 18px rgba(19,44,78,.035);text-align:right}
.export-center button:hover{border-color:var(--cyan);transform:translateY(-1px)}
.export-center button>span{grid-row:1/3;width:42px;height:42px;background:var(--cyan-soft);border-radius:11px;display:grid;place-items:center;color:var(--navy);font-size:19px}
.export-center button strong{font-size:12px}.export-center button small{font-size:9px;color:var(--muted)}
.report-preview-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.money-preview{font-size:11px;color:var(--muted);margin-top:-7px}
.settings-sections{display:grid;gap:18px}.academic-year-list{display:flex;flex-wrap:wrap;gap:9px}
.academic-year-item{border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:#fbfdff;display:flex;align-items:center;gap:8px}.academic-year-item.active{border-color:var(--cyan);background:var(--cyan-soft)}

/* v0.9: auditable tuition contracts, allocations, reversals and daily cashbox */
.finance-tabs-wide{max-width:100%;overflow-x:auto}.finance-tabs-wide button{white-space:nowrap}.finance-control-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}.cashbox-summary{background:linear-gradient(145deg,#f4fbfd,#eef4f9);border:1px solid var(--line);border-radius:14px;padding:20px;display:grid;gap:9px}.cashbox-summary span,.cashbox-summary small{color:var(--muted);font-size:10px}.cashbox-summary strong{font-size:24px;color:var(--navy)}.finance-warning{background:#fff7e6;border-right:4px solid var(--amber);color:#79510d;border-radius:11px;padding:13px 15px;font-size:11px;line-height:1.9;margin-bottom:12px}.channel-picker{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;border:1px solid var(--line);border-radius:12px;padding:13px}.channel-picker legend{font-size:12px;font-weight:700;padding:0 7px}.channel-picker label{margin:0;padding:10px;background:#f7f9fc;border-radius:9px}.channel-disabled{opacity:.55}.finance-control-grid .table-wrap{box-shadow:none}.finance-control-grid .card{min-width:0}.finance-kpis.modern strong{font-size:clamp(14px,1.4vw,20px)}
@media(max-width:900px){.finance-control-grid{grid-template-columns:1fr}.finance-tabs-wide{width:100%}.finance-tabs-wide button{flex:0 0 auto}}
@media(max-width:600px){.channel-picker{grid-template-columns:1fr}.finance-tabs-wide{border-radius:11px}.finance-tabs-wide button{padding:9px 11px}}

/* v0.10: role dashboards, educational structure and mobile app navigation */
.app-icon,.nav-icon,.mobile-nav-icon{width:24px;height:24px;display:block}.nav-icon{width:19px;height:19px}.sidebar nav .ico{display:grid;place-items:center}.mobile-bottom-nav{display:none}.role-dashboard{display:grid;gap:18px}.role-profile{min-height:150px;background:radial-gradient(circle at 12% 20%,#2370a166 0,transparent 34%),linear-gradient(125deg,var(--navy),#174d77);color:white;border-radius:20px;padding:25px 28px;display:flex;justify-content:space-between;align-items:center;gap:25px;box-shadow:var(--shadow);overflow:hidden;position:relative}.role-profile:after{content:"";position:absolute;width:220px;height:220px;border:42px solid #ffffff08;border-radius:50%;left:-80px;bottom:-155px}.role-profile-main{display:flex;align-items:center;gap:16px;position:relative;z-index:1}.role-profile-main small{color:#9ec8dc}.role-profile-main strong{display:block;font-size:20px;margin:5px 0}.role-profile-main p{margin:0;color:#c8d8e6;font-size:11px}.role-avatar{width:66px;height:66px;border-radius:20px;background:#ffffff14;border:1px solid #ffffff22;display:grid;place-items:center;color:#80e2ec}.role-avatar .app-icon{width:33px;height:33px}.profile-highlight{min-width:180px;background:#ffffff10;border:1px solid #ffffff1f;border-radius:15px;padding:14px;display:grid;grid-template-columns:30px 1fr;gap:3px 9px;position:relative;z-index:1}.profile-highlight .app-icon{grid-row:1/3;color:#72dae7}.profile-highlight span{color:#a9c6d9;font-size:9px}.profile-highlight strong{font-size:12px}.child-switcher{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;position:relative;z-index:1}.child-switcher button{border:1px solid #ffffff20;background:#ffffff0f;color:white;border-radius:13px;padding:11px 14px;display:grid;gap:5px;text-align:right;min-width:145px}.child-switcher button.active,.child-switcher button:hover{background:white;color:var(--navy)}.child-switcher small{font-size:9px;color:inherit;opacity:.7}.dashboard-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:13px}.dashboard-metrics article{background:white;border:1px solid var(--line);border-radius:16px;padding:17px;display:flex;align-items:center;gap:13px;box-shadow:0 5px 18px rgba(19,44,78,.035)}.metric-icon{width:45px;height:45px;border-radius:13px;background:var(--cyan-soft);color:#087b91;display:grid;place-items:center;flex:none}.metric-icon .app-icon{width:23px;height:23px}.dashboard-metrics small{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.dashboard-metrics strong{font-size:18px;color:var(--navy)}.role-launcher{background:white;border:1px solid var(--line);border-radius:18px;padding:21px;box-shadow:var(--shadow)}.section-title h3{margin:0 0 5px}.section-title p{margin:0 0 17px;color:var(--muted);font-size:10px}.role-action-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}.role-action-grid button{position:relative;border:1px solid var(--line);background:#fbfdff;color:var(--text);border-radius:15px;padding:16px 10px;display:grid;justify-items:center;gap:8px;text-align:center;min-height:135px}.role-action-grid button:hover{border-color:var(--cyan);background:#f3fcfd;transform:translateY(-2px);box-shadow:0 10px 25px #102a4b10}.role-action-icon{width:48px;height:48px;border-radius:15px;background:linear-gradient(145deg,var(--cyan-soft),#d9f3f7);color:var(--navy);display:grid;place-items:center}.role-action-icon .app-icon{width:25px;height:25px}.role-action-grid strong{font-size:12px}.role-action-grid small{font-size:9px;color:var(--muted);line-height:1.6}.action-badge{position:absolute;top:9px;left:9px;min-width:21px;height:21px;padding:0 5px;border-radius:12px;background:var(--red);color:white;display:grid;place-items:center;font-size:9px}.dashboard-news .announcement{display:flex;gap:12px}.news-icon{width:36px;height:36px;flex:none;border-radius:11px;background:var(--cyan-soft);color:var(--navy);display:grid;place-items:center}.news-icon .app-icon{width:19px;height:19px}.dashboard-news .announcement>div{min-width:0}.education-structure-picker{border:1px solid var(--line);border-radius:15px;padding:16px;margin:12px 0}.education-structure-picker legend{font-weight:800;padding:0 8px}.education-structure-picker>p{margin:0 0 12px;color:var(--muted);font-size:10px;font-weight:400}.education-structure-picker>div{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.education-structure-picker label{margin:0;padding:12px;background:#f7f9fc;border:1px solid transparent;border-radius:11px;display:grid;grid-template-columns:auto 1fr;gap:3px 9px;cursor:pointer}.education-structure-picker label:has(input:checked){border-color:var(--cyan);background:var(--cyan-soft)}.education-structure-picker input{width:auto;grid-row:1/3;align-self:center}.education-structure-picker small{font-size:8px;color:var(--muted);font-weight:400}.education-structure-picker .link-btn{margin-top:10px}.coverage-strip{display:flex;align-items:center;gap:12px;background:var(--cyan-soft);border:1px solid #ccecf1;border-radius:13px;padding:12px 15px;margin-bottom:14px;color:var(--navy)}.coverage-strip>.app-icon{width:27px;height:27px}.coverage-strip div{display:grid;gap:4px}.coverage-strip strong{font-size:11px}.coverage-strip span{font-size:9px;color:var(--muted)}.coverage-strip.compact{margin-bottom:10px}
/* v0.12.2: a restrained school-friendly palette for faster visual scanning. */
.role-action-grid button[data-action="students"] .role-action-icon,.dashboard-metrics article[data-metric="students"] .metric-icon{background:#e3f1ff;color:#1767a6}
.role-action-grid button[data-action="schedule"] .role-action-icon,.dashboard-metrics article[data-metric="schedule"] .metric-icon{background:#def8fb;color:#087f91}
.role-action-grid button[data-action="attendance"] .role-action-icon,.dashboard-metrics article[data-metric="attendance"] .metric-icon{background:#def6e9;color:#137a50}
.role-action-grid button[data-action="grades"] .role-action-icon,.dashboard-metrics article[data-metric="grades"] .metric-icon{background:#e1f7f1;color:#137964}
.role-action-grid button[data-action="homework"] .role-action-icon,.dashboard-metrics article[data-metric="homework"] .metric-icon{background:#fff0cf;color:#9a6100}
.role-action-grid button[data-action="reports"] .role-action-icon{background:#ffe8d9;color:#a94d16}
.role-action-grid button[data-action="finance"] .role-action-icon,.dashboard-metrics article[data-metric="finance"] .metric-icon{background:#eee7ff;color:#6742ad}
.role-action-grid button[data-action="analytics"] .role-action-icon{background:#e8eaff;color:#4b55ad}
.role-action-grid button[data-action="messages"] .role-action-icon,.dashboard-metrics article[data-metric="messages"] .metric-icon{background:#ffe2e8;color:#b52f4b}
.role-action-grid button[data-action="announcements"] .role-action-icon{background:#ffe9e1;color:#b64524}
.role-action-grid button[data-action="classes"] .role-action-icon,.dashboard-metrics article[data-metric="classes"] .metric-icon{background:#e8efff;color:#3e62a7}
.role-action-grid button[data-action="users"] .role-action-icon,.dashboard-metrics article[data-metric="users"] .metric-icon{background:#f4e6fb;color:#80439b}
.role-action-grid button:hover .role-action-icon{filter:saturate(1.12);box-shadow:0 7px 16px rgba(19,44,78,.12)}
@media(max-width:1100px){.role-action-grid{grid-template-columns:repeat(3,1fr)}.education-structure-picker>div{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){body:has(#shell:not(.hidden)){padding-bottom:76px}.mobile-bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);right:0;left:0;bottom:0;height:68px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -10px 30px #102a4b12;z-index:40;overflow:visible;padding:5px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom))}.mobile-bottom-nav button{width:auto;margin:0;padding:4px 2px;border:0;background:transparent;color:#7b889b;display:grid;justify-items:center;align-content:center;gap:3px;border-radius:10px;text-align:center}.mobile-bottom-nav button.active{color:var(--navy);background:var(--cyan-soft);box-shadow:none}.mobile-bottom-nav span{font-size:8px}.mobile-nav-icon{width:21px;height:21px}.role-dashboard{gap:14px}.role-profile{min-height:0;align-items:stretch;flex-direction:column;padding:18px;border-radius:18px}.role-profile-main strong{font-size:17px}.role-avatar{width:54px;height:54px;border-radius:17px}.profile-highlight{min-width:0}.child-switcher{justify-content:stretch;flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px}.child-switcher button{min-width:145px}.dashboard-welcome h2{font-size:18px}.dashboard-metrics{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:9px;margin:0 -15px;padding:0 15px 4px;scrollbar-width:none}.dashboard-metrics::-webkit-scrollbar{display:none}.dashboard-metrics article{flex:0 0 145px;min-height:68px;padding:11px;gap:9px;scroll-snap-align:start}.metric-icon{width:36px;height:36px;border-radius:11px}.dashboard-metrics strong{font-size:13px;white-space:nowrap}.role-launcher{padding:15px 12px;border-radius:17px}.section-title h3{font-size:14px}.section-title p{margin-bottom:14px}.role-action-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 8px}.role-action-grid button{min-width:0;min-height:104px;padding:11px 4px 9px;border-radius:18px;background:#fff;gap:7px;box-shadow:0 5px 16px rgba(19,44,78,.055)}.role-action-grid button:active{transform:scale(.97);background:#f3fcfd}.role-action-grid button small{display:none}.role-action-grid strong{max-width:100%;font-size:10px;line-height:1.55;white-space:normal}.role-action-icon{width:50px;height:50px;border-radius:17px}.role-action-icon .app-icon{width:26px;height:26px}.role-action-grid button[data-action="attendance"] .role-action-icon,.role-action-grid button[data-action="grades"] .role-action-icon{background:#eaf8f0;color:#14805a}.role-action-grid button[data-action="homework"] .role-action-icon,.role-action-grid button[data-action="reports"] .role-action-icon{background:#fff4df;color:#9b6811}.role-action-grid button[data-action="finance"] .role-action-icon{background:#f1edff;color:#6546a8}.role-action-grid button[data-action="messages"] .role-action-icon,.role-action-grid button[data-action="announcements"] .role-action-icon{background:#fff0f2;color:#b93645}.action-badge{top:7px;left:7px;min-width:20px;height:20px;border:2px solid #fff;font-weight:800}.education-structure-picker>div{grid-template-columns:1fr}.sidebar{z-index:45}.toast{bottom:84px}}
@media(max-width:420px){.role-action-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 6px}.role-action-grid button{min-height:98px}.role-action-icon{width:46px;height:46px}.dashboard-metrics article{flex-basis:136px}.dashboard-news{padding:15px}}
@media print{.mobile-bottom-nav{display:none!important}.role-profile{background:white;color:var(--text);border:1px solid #bbb}.role-profile-main p,.role-profile-main small{color:var(--muted)}}

/* Keep feedback readable above modal dialogs and their blurred backdrops. */
.toast{top:auto;right:auto;left:24px;margin:0;border:1px solid #ffffff2e;max-width:min(480px,calc(100vw - 32px));z-index:10000;border-radius:12px;padding:14px 18px;line-height:1.9;text-align:right;font-weight:700;transition:opacity .2s,transform .2s;box-shadow:0 18px 50px #071b3855}
.toast.error{background:#991b2d;border-color:#ffb5c0;box-shadow:0 18px 55px #500a1770}
@media(max-width:760px){.toast{right:16px;left:16px;max-width:none}}

/* Consistent interface icons and login-safe mobile navigation. */
.icon-btn svg,.sidebar-foot button svg{width:20px;height:20px;display:block}
.mobile-bottom-nav:empty{display:none!important}
.role-profile{flex-wrap:wrap}.dashboard-welcome{width:100%;flex-basis:100%;position:relative;z-index:1}.dashboard-welcome h2{margin:0 0 6px;font-size:21px}.dashboard-welcome p{margin:0;color:#bed1df;font-size:10px}

/* Login value proposition: clearer hierarchy, shorter scan path, credible benefits. */
.login-brand h1{max-width:680px;letter-spacing:-1.2px;margin-bottom:20px}
.login-brand h1>span{display:block;color:#b9eef3;font-size:.82em;font-weight:750;margin-top:2px}
.login-brand>p{max-width:650px;font-size:16px;line-height:2.05;margin:0}
.login-points{gap:10px;margin-top:28px}
.login-points span{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#ffffff0d;border-color:#ffffff20;font-size:13px}
.login-points span:before{content:"";width:7px;height:7px;border-radius:50%;background:#54d6e1;box-shadow:0 0 0 4px #54d6e118;flex:none}

/* Unified brand axis and reusable vector mark. */
.brand-mark{display:block;object-fit:contain;background:none;color:inherit;font-size:0}
.brand-mark:not(img){background:url('/logo-mark.svg') center/contain no-repeat}
.login-brand{align-items:center;text-align:center}
.login-brand>.brand-mark{width:56px;height:56px;border-radius:17px}
.login-brand h1,.login-brand>p{margin-right:auto;margin-left:auto;text-align:center}
.login-points{justify-content:center}
.class-study-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.class-study-fields[hidden],.study-area-field[hidden]{display:none}.class-title-preview{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border:1px solid #b9eaf1;border-radius:15px;background:#eefbfc}.class-title-preview small,.class-title-preview span{color:#58718e}.class-title-preview strong{font-size:1.15rem;color:#0b315f}
.study-group-field[hidden]{display:none}
@media(max-width:760px){.class-study-fields{grid-template-columns:1fr}}

/* v0.11.7: ordered educational setup workflow */
.education-workflow{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 16px}.education-workflow button{position:relative;display:flex;align-items:center;gap:10px;min-width:0;padding:13px;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--text);text-align:right}.education-workflow button>span{width:32px;height:32px;display:grid;place-items:center;flex:none;border-radius:10px;background:#edf3f8;color:var(--navy);font-weight:800}.education-workflow button>div{display:grid;gap:3px;min-width:0}.education-workflow strong{font-size:11px}.education-workflow small{font-size:8px;color:var(--muted);white-space:nowrap}.education-workflow i{position:absolute;left:-9px;color:#a7b5c5;font-style:normal;z-index:2}.education-workflow button.done>span{background:#dcf7ed;color:#087754}.education-workflow button.active{border-color:var(--cyan);background:var(--cyan-soft);box-shadow:0 0 0 2px #25bed51a}.education-workflow button.active>span{background:var(--navy);color:#fff}.setup-warning{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:15px 17px;border:1px solid #f2d28c;border-radius:14px;background:#fff9e8}.setup-warning>div{display:flex;align-items:center;gap:11px}.setup-warning .app-icon{width:25px;color:#a26908}.setup-warning span{display:grid;gap:4px}.setup-warning strong{font-size:11px}.setup-warning small,.modal-lead{font-size:9px;color:var(--muted)}button:disabled{cursor:not-allowed;opacity:.52}
@media(max-width:900px){.education-workflow{grid-template-columns:1fr 1fr}.education-workflow i{display:none}}
@media(max-width:600px){.education-workflow{display:flex;overflow-x:auto;padding-bottom:4px}.education-workflow button{min-width:170px}.setup-warning{align-items:stretch;flex-direction:column}.setup-warning>button{width:100%}}

/* Keep the refreshed palette authoritative over older mobile-only colors. */
.role-dashboard .role-action-grid button[data-action="attendance"] .role-action-icon{background:#def6e9;color:#137a50}
.role-dashboard .role-action-grid button[data-action="grades"] .role-action-icon{background:#e1f7f1;color:#137964}
.role-dashboard .role-action-grid button[data-action="homework"] .role-action-icon{background:#fff0cf;color:#9a6100}
.role-dashboard .role-action-grid button[data-action="reports"] .role-action-icon{background:#ffe8d9;color:#a94d16}
.role-dashboard .role-action-grid button[data-action="finance"] .role-action-icon{background:#eee7ff;color:#6742ad}
.role-dashboard .role-action-grid button[data-action="messages"] .role-action-icon{background:#ffe2e8;color:#b52f4b}
.role-dashboard .role-action-grid button[data-action="announcements"] .role-action-icon{background:#ffe9e1;color:#b64524}

/* v0.13.0: staff attendance with short-lived dynamic QR */
.staff-attendance-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}.staff-self-card,.staff-qr-card,.staff-report-card,.staff-settings-card{overflow:hidden}.staff-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}.staff-kpis>div{display:grid;gap:5px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#f8fbfd}.staff-kpis small{color:var(--muted)}.staff-kpis strong{font-size:16px;color:var(--navy)}.staff-scan-help{padding:14px 16px;border:1px solid #b9eaf1;border-radius:14px;background:#eefbfc}.staff-scan-help p{margin:6px 0 0;color:var(--muted);line-height:1.9}.staff-qr-wrap{display:grid;grid-template-columns:360px minmax(0,1fr);align-items:center;gap:24px}.staff-qr-wrap img{display:block;width:min(100%,360px);aspect-ratio:1;border:1px solid var(--line);border-radius:18px;background:#fff;padding:10px}.staff-qr-wrap p{color:var(--muted);line-height:2}.staff-report-card .toolbar{margin-bottom:14px}.staff-settings-card{max-width:760px}
@media(max-width:760px){.staff-kpis{grid-template-columns:1fr 1fr}.staff-qr-wrap{grid-template-columns:1fr}.staff-qr-wrap img{margin:auto}.staff-report-card .toolbar{align-items:stretch}.staff-report-card .toolbar>*{width:100%}}
/* v0.13.1: checkout confirmation and auditable manual corrections */
.attendance-confirmation{display:grid;gap:8px;padding:14px 16px;margin:10px 0 18px;border:1px solid var(--line);border-radius:14px;background:#f8fbfd;line-height:1.9}.attendance-confirmation p{margin:0}.attendance-confirmation strong{color:var(--navy);font-size:16px}
/* v0.13.3: checkout confirmation must look unmistakably different from ordinary dialogs. */
.checkout-warning{display:flex;align-items:center;gap:14px;margin:-25px -25px 18px;padding:20px 25px 18px;background:linear-gradient(135deg,#fff8e8,#fff2d5);border-bottom:1px solid #f0d28f;border-radius:18px 18px 0 0}.checkout-warning-icon{width:48px;height:48px;display:grid;place-items:center;flex:none;border-radius:50%;background:#f4a11a;color:#fff;font-size:28px;font-weight:900;box-shadow:0 8px 20px #c8791640}.checkout-warning-kicker{display:inline-block;margin-bottom:3px;color:#946008;font-size:10px;font-weight:900;letter-spacing:.02em}.checkout-warning-title{margin:0 0 5px!important;color:#6f4300}.checkout-warning-lead{margin:0;color:#7d6542;font-size:11px;line-height:1.8}.checkout-confirmation{background:#fffdf8;border-color:#f1d8a3;gap:13px}.checkout-time-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #f0ddb6;border-radius:12px;background:white}.checkout-time-card small{color:var(--muted);font-size:10px}.checkout-time-card strong{font-size:20px;color:var(--navy);direction:ltr}.checkout-question{font-weight:800;color:#493617}.checkout-scan-hint{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:10px;background:#fff4dc;color:#8a5b0c}.checkout-scan-hint span{width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:#ffe0a1;font-size:15px;font-weight:900}.checkout-scan-hint small{font-size:10px;line-height:1.7}.checkout-actions{justify-content:space-between;align-items:stretch}.checkout-actions button{min-height:46px}.checkout-confirm-button{border:0;border-radius:10px;padding:10px 18px;background:#c86d0b;color:#fff;font-weight:800;box-shadow:0 6px 15px #9d56072b}.checkout-confirm-button:hover:not(:disabled){background:#ad5c06}.checkout-confirm-button:disabled{opacity:1;background:#e5d2b4;color:#705f47;box-shadow:none;cursor:wait}.checkout-confirm-button:focus-visible{outline:3px solid #ffd28c;outline-offset:2px}.checkout-actions .cancel-staff-checkout{font-weight:800}
@media(max-width:560px){.checkout-warning{align-items:flex-start}.checkout-warning-icon{width:42px;height:42px}.checkout-actions{display:grid;grid-template-columns:1fr}.checkout-actions .cancel-staff-checkout{order:1}.checkout-actions .confirm-staff-checkout{order:2}}

/* v0.14.0: personnel work profiles, leave/mission workflow and monthly work summary */
.staff-kpis-6{grid-template-columns:repeat(6,minmax(0,1fr))}.staff-request-card,.staff-request-review-card,.staff-monthly-card,.staff-profiles-card{overflow:hidden}.table-scroll{overflow-x:auto}.inline-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.staff-work-days{border:1px solid var(--line);border-radius:14px;padding:14px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.staff-work-days legend{font-weight:800;padding:0 8px}.staff-work-days label{margin:0;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:#f8fbfd;display:flex;align-items:center;gap:8px}.staff-work-days input{width:auto}.staff-hourly-field[hidden]{display:none!important}.attendance-legal-note{margin:12px 0 14px;padding:11px 13px;border-right:4px solid #d5a22d;border-radius:10px;background:#fff9e8;color:#735715;font-size:10px;line-height:1.9}.danger{border:0;border-radius:10px;padding:10px 16px;background:#a82236;color:#fff;font-weight:800}.danger:hover{background:#8e1b2d}.staff-monthly-card .table-wrap,.staff-profiles-card .table-wrap,.staff-request-card .table-wrap,.staff-request-review-card .table-wrap{min-width:760px}.staff-profiles-card .table-wrap{min-width:680px}
@media(max-width:1100px){.staff-kpis-6{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.staff-kpis-6{grid-template-columns:1fr 1fr}.staff-work-days{grid-template-columns:1fr 1fr}.staff-monthly-card .toolbar,.staff-request-card .card-head,.staff-request-review-card .card-head{align-items:stretch}.staff-request-card .card-head,.staff-request-review-card .card-head{flex-direction:column}.staff-request-card .card-head button{width:100%}}

/* v0.15.0: school work calendar and secure QR-only display */
.staff-calendar-card,.staff-display-card{overflow:hidden}.calendar-legend{display:flex;gap:14px;flex-wrap:wrap;margin:4px 0 14px;color:var(--muted);font-size:10px}.calendar-legend span{display:flex;align-items:center;gap:6px}.calendar-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.calendar-dot.holiday{background:#d5a22d}.calendar-dot.closure{background:#b9374c}.calendar-dot.working{background:#278260}.secure-display-note{margin:8px 0 16px;padding:13px 15px;border:1px solid #b9eaf1;border-radius:14px;background:#eefbfc}.secure-display-note p{margin:5px 0 0;color:var(--muted);line-height:1.9}.display-pairing{display:grid;grid-template-columns:300px minmax(0,1fr);gap:22px;align-items:center;margin:16px 0}.display-pairing img{width:min(100%,300px);border:1px solid var(--line);border-radius:18px;padding:8px;background:#fff}.display-pairing p{line-height:1.9;color:var(--muted)}.display-pairing input{width:100%;direction:ltr;text-align:left;font-size:10px}
@media(max-width:760px){.display-pairing{grid-template-columns:1fr}.display-pairing img{margin:auto}.calendar-legend{gap:9px}}
.staff-display-page{margin:0;min-height:100vh;background:linear-gradient(145deg,#082d55,#0b416a);color:#0c294b;overflow:auto}.staff-display-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto;padding:clamp(14px,2vw,28px);box-sizing:border-box}.staff-display-head{display:flex;align-items:center;justify-content:space-between;color:#fff;gap:16px}.staff-display-brand{display:flex;align-items:center;gap:12px}.staff-display-brand img{width:52px;height:52px;background:#4bd2df;border-radius:15px;padding:7px}.staff-display-brand strong{display:block;font-size:18px}.staff-display-brand span{font-size:11px;color:#bde8ef}.staff-display-fullscreen{border:1px solid #ffffff55;background:#ffffff14;color:#fff;border-radius:12px;padding:10px 16px;font-weight:800;cursor:pointer}.staff-display-content{align-self:center;justify-self:center;width:min(920px,96vw);display:grid;grid-template-columns:minmax(280px,520px) minmax(250px,1fr);grid-template-areas:"qr school" "qr instruction";gap:22px;align-items:center;background:#fff;border-radius:30px;padding:clamp(20px,3vw,38px);box-shadow:0 28px 80px #001c3970}.staff-display-school{grid-area:school}.staff-display-school span{display:inline-block;color:#0b8798;background:#e5f9fb;border-radius:20px;padding:7px 12px;font-weight:800}.staff-display-school h1{font-size:clamp(24px,3vw,40px);margin:14px 0 8px}.staff-display-school p{color:#69788d;margin:0;font-weight:700}.staff-display-qr-frame{grid-area:qr;position:relative;background:#fff;border:1px solid #dfe9f2;border-radius:24px;padding:14px}.staff-display-qr-frame img{display:block;width:100%;aspect-ratio:1}.staff-display-pulse{display:flex;justify-content:center;align-items:center;gap:8px;color:#557187;font-size:11px;margin-top:6px}.staff-display-pulse i{width:9px;height:9px;border-radius:50%;background:#32b7c6;box-shadow:0 0 0 5px #32b7c622}.staff-display-instruction{grid-area:instruction;padding:18px;border-radius:18px;background:#f3f8fb;border:1px solid #e1ebf3}.staff-display-instruction strong{display:block;font-size:18px;margin-bottom:8px}.staff-display-instruction span{color:#657489;line-height:1.9}.staff-display-footer{text-align:center;color:#bce3e9;font-size:10px;padding-top:16px}.staff-display-loading,.staff-display-error{grid-column:1/-1;text-align:center;padding:60px 20px}.staff-display-error span{display:grid;place-items:center;width:64px;height:64px;margin:auto;border-radius:50%;background:#fff1db;color:#d67a00;font-size:36px;font-weight:900}.staff-display-error h1{margin:18px 0 8px}.staff-display-error p{color:#8b3b43}.staff-display-error small{color:#69788d;line-height:1.9}.staff-display-loading{color:#52687e;font-size:18px}
@media(max-width:720px){.staff-display-shell{padding:10px}.staff-display-head{padding:4px}.staff-display-brand img{width:42px;height:42px}.staff-display-content{grid-template-columns:1fr;grid-template-areas:"school" "qr" "instruction";margin:14px 0;border-radius:22px;padding:18px}.staff-display-school{text-align:center}.staff-display-qr-frame{width:min(88vw,480px);justify-self:center}.staff-display-fullscreen{font-size:10px;padding:8px 10px}}

/* v0.16.0: personnel dashboard shortcut, live attendance stream, official-holiday import */
.role-action-grid button[data-action="staff-attendance"] .role-action-icon{background:#e5f7ff;color:#126d9a}.live-attendance-badge{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid #b8e7d3;border-radius:20px;background:#eefbf5;color:#197451;font-size:9px;font-weight:800;white-space:nowrap}.live-attendance-badge i{width:8px;height:8px;border-radius:50%;background:#29a56f;box-shadow:0 0 0 4px #29a56f1f;animation:attendance-live-pulse 1.8s infinite}.live-attendance-badge.offline{border-color:#ead7aa;background:#fff8e9;color:#8b6516}.live-attendance-badge.offline i{background:#d59d26;box-shadow:none;animation:none}@keyframes attendance-live-pulse{50%{box-shadow:0 0 0 7px #29a56f0d}}.calendar-import-note{margin:8px 0 18px;padding:14px 16px;border:1px solid #cce8f1;border-radius:14px;background:#f2fbfe}.calendar-import-note strong{color:var(--navy)}.calendar-import-note p{margin:6px 0 0;color:var(--muted);line-height:1.9;font-size:10px}
@media(max-width:760px){.staff-report-card .card-head{align-items:flex-start}.live-attendance-badge{font-size:8px}.role-action-grid button[data-action="staff-attendance"] .role-action-icon{background:#e5f7ff;color:#126d9a}}

/* v0.16.1: richer secure attendance display */
.staff-display-clock{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:#69788d!important;margin:0!important;font-weight:700}.staff-display-clock strong{color:#0c294b;font-size:16px}.staff-display-clock span{padding-inline:9px;border-inline:1px solid #dce6ee}.staff-display-clock b{font-size:18px;direction:ltr;font-variant-numeric:tabular-nums;color:#0b8798}.staff-display-pulse span{font-variant-numeric:tabular-nums}
@media(max-width:720px){.staff-display-clock{justify-content:center}.staff-display-clock strong{font-size:14px}.staff-display-clock b{font-size:16px}}


/* v0.16.2: compact staff dashboard greeting on phones */
@media(max-width:760px){
  .role-dashboard.role-admin .role-profile,
  .role-dashboard.role-deputy .role-profile,
  .role-dashboard.role-teacher .role-profile,
  .role-dashboard.role-accountant .role-profile{
    min-height:auto;
    padding:14px 16px;
    gap:0;
    border-radius:16px;
    justify-content:flex-start;
  }
  .role-dashboard.role-admin .role-profile-main,
  .role-dashboard.role-deputy .role-profile-main,
  .role-dashboard.role-teacher .role-profile-main,
  .role-dashboard.role-accountant .role-profile-main,
  .role-dashboard.role-admin .profile-highlight,
  .role-dashboard.role-deputy .profile-highlight,
  .role-dashboard.role-teacher .profile-highlight,
  .role-dashboard.role-accountant .profile-highlight{
    display:none;
  }
  .role-dashboard.role-admin .dashboard-welcome,
  .role-dashboard.role-deputy .dashboard-welcome,
  .role-dashboard.role-teacher .dashboard-welcome,
  .role-dashboard.role-accountant .dashboard-welcome{
    width:100%;
    flex:0 0 auto;
  }
  .role-dashboard.role-admin .dashboard-welcome h2,
  .role-dashboard.role-deputy .dashboard-welcome h2,
  .role-dashboard.role-teacher .dashboard-welcome h2,
  .role-dashboard.role-accountant .dashboard-welcome h2{
    margin:0;
    font-size:16px;
    line-height:1.7;
  }
  .role-dashboard.role-admin .dashboard-welcome p,
  .role-dashboard.role-deputy .dashboard-welcome p,
  .role-dashboard.role-teacher .dashboard-welcome p,
  .role-dashboard.role-accountant .dashboard-welcome p{
    display:none;
  }
  .role-dashboard.role-admin .role-profile:after,
  .role-dashboard.role-deputy .role-profile:after,
  .role-dashboard.role-teacher .role-profile:after,
  .role-dashboard.role-accountant .role-profile:after{
    width:120px;
    height:120px;
    border-width:24px;
    left:-52px;
    bottom:-88px;
  }
}

/* v0.16.3: in-app staff QR scan entry and camera modal */
.staff-scan-entry{display:flex;align-items:center;justify-content:space-between;gap:16px}.staff-scan-entry>div{min-width:0}.staff-scan-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;white-space:nowrap}.button-icon{width:20px;height:20px}.staff-scanner-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}.staff-scanner-head p{margin:5px 0 0;color:var(--muted);line-height:1.8}.staff-scanner-icon{width:44px;height:44px;display:grid;place-items:center;flex:none;border-radius:14px;background:#e6f8fb;color:#087e92}.staff-scanner-icon svg{width:24px;height:24px}.staff-qr-reader{overflow:hidden;border:1px solid var(--line);border-radius:16px;background:#071b2e;min-height:160px}.staff-qr-reader video{border-radius:14px}.staff-qr-scan-status{margin:10px 0;padding:10px 12px;border-radius:12px;background:#eef9fb;color:#176577;font-size:12px;line-height:1.8}.staff-scan-fallback{margin-top:12px;padding:14px;border:1px dashed #b8d8df;border-radius:14px;background:#fbfdfe}.staff-scan-fallback p{margin:5px 0 10px;color:var(--muted);font-size:11px;line-height:1.8}.staff-camera-capture{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.staff-camera-capture input{position:absolute;inline-size:1px;block-size:1px;opacity:0;pointer-events:none}
@media(max-width:600px){.staff-scan-entry{display:grid}.staff-scan-button{width:100%}.staff-qr-reader{min-height:220px}.staff-camera-capture{width:100%;justify-content:center;min-height:46px}}


/* v0.16.5: mobile dashboard metrics — compact two-column grid, no horizontal clipping */
@media(max-width:760px){
  .role-dashboard .dashboard-metrics{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:9px;
    margin:0;
    padding:0;
    overflow:visible;
    scroll-snap-type:none;
  }
  .role-dashboard .dashboard-metrics article{
    min-width:0;
    min-height:72px;
    padding:11px 12px;
    gap:9px;
    flex:auto;
    scroll-snap-align:none;
  }
  .role-dashboard .dashboard-metrics article>div:last-child{min-width:0}
  .role-dashboard .dashboard-metrics small{
    font-size:9px;
    white-space:normal;
    line-height:1.45;
  }
  .role-dashboard .dashboard-metrics strong{
    font-size:14px;
    white-space:normal;
    overflow-wrap:anywhere;
  }
}
@media(max-width:340px){
  .role-dashboard .dashboard-metrics{grid-template-columns:1fr}
}


/* v0.16.7: mobile quick actions are part of the dashboard, not a boxed sub-panel */
@media(max-width:760px){
  .role-dashboard .role-launcher{
    background:transparent;
    border:0;
    box-shadow:none;
    padding:0;
    border-radius:0;
  }
  .role-dashboard .role-launcher .section-title{
    padding:0 2px 2px;
  }
  .role-dashboard .role-launcher .section-title h3{
    margin:0 0 8px;
    font-size:13px;
    color:var(--navy);
  }
  .role-dashboard .role-launcher .section-title p{display:none}
  .role-dashboard .role-action-grid{gap:10px 8px}
  .role-dashboard .role-action-grid button{
    border-color:#e4ebf2;
    box-shadow:0 6px 18px rgba(19,44,78,.055);
  }
}


/* Student behavior & discipline */
.behavior-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}.behavior-summary article{background:#fff;border:1px solid var(--line,#e4eaf1);border-radius:18px;padding:16px;display:flex;align-items:center;justify-content:space-between}.behavior-summary small{color:#64748b}.behavior-summary strong{font-size:1.55rem}.behavior-summary .positive strong{color:#047857}.behavior-summary .warning strong{color:#b45309}.behavior-summary .danger strong{color:#b91c1c}.behavior-filters{margin-bottom:16px}.behavior-list{display:grid;gap:14px}.behavior-event{background:#fff;border:1px solid #e4eaf1;border-right:5px solid #94a3b8;border-radius:18px;padding:18px}.behavior-event.severity-positive{border-right-color:#10b981}.behavior-event.severity-medium{border-right-color:#f59e0b}.behavior-event.severity-high{border-right-color:#f97316}.behavior-event.severity-critical{border-right-color:#dc2626}.behavior-event header,.behavior-event footer{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.behavior-event header>div{display:grid;gap:4px}.behavior-event header strong{font-size:1.08rem}.behavior-event header small,.behavior-event footer small{color:#64748b}.behavior-type{font-size:.78rem;color:#0f766e;font-weight:800}.behavior-severity{font-size:.8rem;border:1px solid #e2e8f0;border-radius:999px;padding:5px 10px;white-space:nowrap}.behavior-event>p{line-height:1.9;margin:14px 0}.behavior-action{background:#f8fafc;border-radius:12px;padding:10px 12px;margin-bottom:14px}.behavior-event footer>div:first-child{display:flex;align-items:center;flex-wrap:wrap;gap:7px}.behavior-privacy-note{background:#eff6ff;color:#1e3a8a;border-radius:12px;padding:12px}.behavior-history{display:grid;gap:8px;max-height:220px;overflow:auto;margin-bottom:16px}.behavior-history article{display:grid;gap:3px;border:1px solid #e5e7eb;border-radius:12px;padding:10px}.behavior-history small{color:#64748b}
@media(max-width:700px){.behavior-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.behavior-event header,.behavior-event footer{flex-direction:column}.behavior-event footer .row-actions{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.behavior-event footer .row-actions button{width:100%}.behavior-filters .toolbar{display:grid;grid-template-columns:1fr 1fr}.behavior-filters .toolbar button{grid-column:1/-1}}


/* v0.17.1: focused behavior follow-up card on staff dashboards */
.dashboard-behavior-attention{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:15px 17px;border:1px solid #dbe7ef;border-radius:16px;background:#fff;box-shadow:0 5px 18px rgba(19,44,78,.035)}.dashboard-behavior-attention.open{border-color:#f0c987;background:linear-gradient(135deg,#fffaf0,#fff)}.dashboard-behavior-attention.clear{background:#f8fbfc}.behavior-attention-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:#fff0d8;color:#9a6100}.dashboard-behavior-attention.clear .behavior-attention-icon{background:#e5f6ef;color:#177657}.behavior-attention-icon .app-icon{width:25px;height:25px}.dashboard-behavior-attention>div{min-width:0;display:grid;gap:3px}.dashboard-behavior-attention small{font-size:9px;color:var(--muted)}.dashboard-behavior-attention strong{font-size:13px;color:var(--navy)}.dashboard-behavior-attention p{margin:0;font-size:9px;color:var(--muted);line-height:1.7}.dashboard-behavior-attention button{white-space:nowrap}
@media(max-width:600px){.dashboard-behavior-attention{grid-template-columns:auto 1fr;padding:13px;gap:11px}.dashboard-behavior-attention button{grid-column:1/-1;width:100%}.behavior-attention-icon{width:44px;height:44px}.dashboard-behavior-attention strong{font-size:12px}}


/* v0.19.0: notification center and daily action cockpit */
.notification-bell{position:relative}.notification-bell svg{width:20px;height:20px}.notification-badge{position:absolute;top:-7px;left:-7px;min-width:21px;height:21px;padding:0 5px;border-radius:999px;background:#d9364f;color:#fff;border:2px solid #fff;display:grid;place-items:center;font-size:9px;font-weight:900}.notification-bell.has-urgent{border-color:#efb25b;box-shadow:0 0 0 3px #fff5df}.notification-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:14px}.notification-summary article{background:#fff;border:1px solid var(--line);border-radius:15px;padding:15px;display:flex;align-items:center;justify-content:space-between}.notification-summary small{color:var(--muted)}.notification-summary strong{font-size:22px}.notification-summary .urgent{background:#fff8f0;border-color:#f3d29d}.notification-summary .urgent strong{color:#b45309}.notification-filters{display:flex;gap:8px;overflow:auto;margin-bottom:14px;padding-bottom:2px}.notification-filters button{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:999px;padding:8px 13px;white-space:nowrap}.notification-filters button.active{background:var(--navy);color:#fff;border-color:var(--navy)}.notification-list{display:grid;gap:11px}.notification-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:13px;align-items:center;background:#fff;border:1px solid var(--line);border-right:4px solid #8bbec8;border-radius:16px;padding:15px;box-shadow:0 5px 18px rgba(19,44,78,.03)}.notification-item.priority-warning{border-right-color:#e7a938}.notification-item.priority-urgent{border-right-color:#d9364f;background:linear-gradient(135deg,#fff7f8,#fff)}.notification-item.state-done{opacity:.68;border-right-color:#9aa7b5}.notification-item-icon{width:44px;height:44px;border-radius:14px;background:#eaf8fb;color:#087f98;display:grid;place-items:center}.priority-warning .notification-item-icon{background:#fff3dc;color:#9b6811}.priority-urgent .notification-item-icon{background:#ffe8eb;color:#b93645}.notification-item-icon .app-icon{width:23px;height:23px}.notification-item-body{min-width:0}.notification-item-body>strong{display:block;font-size:13px;margin:5px 0}.notification-item-body p{margin:0;color:var(--muted);font-size:10px;line-height:1.8}.notification-item-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:9px;color:var(--muted)}.notification-priority{font-weight:800;color:#7b4e00}.priority-urgent .notification-priority{color:#b42338}.notification-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.notification-actions button{white-space:nowrap}.notification-settings-list{display:grid;gap:12px}.notification-settings-list fieldset{border:1px solid var(--line);border-radius:14px;padding:12px}.notification-settings-list legend{padding:0 7px;font-weight:800}.notification-settings-list p{font-size:10px;color:var(--muted);margin:2px 0 10px}.notification-role-options{display:flex;gap:10px;flex-wrap:wrap}.notification-role-options label{display:flex;gap:5px;align-items:center;background:#f7fafc;border-radius:8px;padding:7px 9px;font-size:10px}.dashboard-today{background:linear-gradient(135deg,#f7fbfd,#fff);border:1px solid #dce9ef;border-radius:17px;padding:16px}.today-action-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.today-action-grid button{border:1px solid #e3eaf0;background:#fff;border-radius:14px;padding:12px 8px;display:grid;place-items:center;gap:5px;color:var(--navy)}.today-action-grid button.has-action{border-color:#efd09b;background:#fffaf1}.today-action-grid button.clear{opacity:.72}.today-action-grid span{width:34px;height:34px;border-radius:10px;background:#eef7f9;color:#087f98;display:grid;place-items:center}.today-action-grid .app-icon{width:19px;height:19px}.today-action-grid small{font-size:9px;color:var(--muted);text-align:center}.today-action-grid strong{font-size:16px}
@media(max-width:760px){.notification-summary{grid-template-columns:repeat(3,1fr)}.notification-item{grid-template-columns:auto 1fr;padding:13px}.notification-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.notification-actions button:first-child:last-child{grid-column:1/-1}.notification-actions button{width:100%}.today-action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.today-action-grid button:last-child:nth-child(odd){grid-column:1/-1}.dashboard-today{padding:13px}.notification-settings-list fieldset{padding:10px}.notification-role-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}


/* v0.20.0: management intelligence report */
.intelligence-controls{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:14px}.intelligence-presets{display:flex;gap:6px;flex-wrap:wrap}.intelligence-presets button{border:1px solid var(--line);background:#f8fafc;color:var(--navy);padding:9px 13px;border-radius:9px;font:inherit;font-size:11px;font-weight:700}.intelligence-presets button.active{background:var(--navy);color:#fff;border-color:var(--navy)}.intelligence-custom{display:flex;align-items:end;gap:8px}.intelligence-custom label{font-size:10px;color:var(--muted);display:grid;gap:4px}.intelligence-custom input{width:132px;padding:8px}.intelligence-hero{border:1px solid var(--line);background:linear-gradient(120deg,#0b2345,#174d77);color:#fff;border-radius:18px;padding:22px 24px;display:flex;justify-content:space-between;align-items:center;gap:20px;box-shadow:var(--shadow);margin-bottom:15px}.intelligence-hero>div:first-child{display:grid;grid-template-columns:auto auto;align-items:end;column-gap:10px}.intelligence-hero>div:first-child small{grid-column:1/-1;color:#bdd0e1}.intelligence-hero>div:first-child strong{font-size:44px;line-height:1}.intelligence-hero>div:first-child span{font-size:12px;margin-bottom:4px}.intelligence-hero.status-good{background:linear-gradient(120deg,#0b4a3b,#13705b)}.intelligence-hero.status-action{background:linear-gradient(120deg,#6a2a34,#9b3f4d)}.intelligence-period{text-align:left;display:grid;gap:5px}.intelligence-period b{font-size:13px}.intelligence-period small{color:#d6e3ee;font-size:10px}.intelligence-period em{font-size:9px;font-style:normal;color:#a9dce4}.intelligence-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:15px}.intelligence-kpis article{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;min-width:0;position:relative}.intelligence-kpis article>span:first-child{width:32px;height:32px;border-radius:9px;background:var(--cyan-soft);display:grid;place-items:center;color:var(--navy);margin-bottom:10px}.intelligence-kpis article>span svg{width:18px}.intelligence-kpis small{display:block;color:var(--muted);font-size:9px}.intelligence-kpis strong{display:block;font-size:20px;margin:5px 0 2px}.intelligence-kpis article>b{font-size:8px;color:var(--muted);font-weight:400}.intel-change{display:block;margin-top:7px;font-size:8px;font-weight:700}.intel-change.good{color:#087c51}.intel-change.bad{color:#b93645}.intel-change.neutral{color:#8c98a8}.intelligence-layout{display:grid;grid-template-columns:1.25fr .75fr;gap:14px;margin-bottom:14px}.intelligence-insight{width:100%;border:0;border-right:4px solid #98a5b5;background:#f8fafc;border-radius:10px;padding:11px 12px;margin-bottom:8px;display:grid;grid-template-columns:76px 1fr 18px;align-items:center;text-align:right;gap:10px;color:var(--text)}.intelligence-insight>span{font-size:9px;font-weight:800}.intelligence-insight strong{font-size:11px}.intelligence-insight p{font-size:9px;color:var(--muted);margin:3px 0 0;line-height:1.7}.intelligence-insight.severity-urgent{border-color:#c44755;background:#fff7f8}.intelligence-insight.severity-warning{border-color:#d69b28;background:#fffaf0}.intelligence-insight.severity-positive{border-color:#15956d;background:#f3fcf8}.intelligence-actions>button{width:100%;border:1px solid var(--line);background:#fff;border-radius:10px;margin-bottom:8px;padding:10px;display:grid;grid-template-columns:34px 1fr;gap:9px;text-align:right}.intelligence-actions>button>span{width:34px;height:34px;border-radius:9px;background:#eef3f8;display:grid;place-items:center;font-weight:800}.intelligence-actions>button.priority-urgent>span{background:#fff0f1;color:#b93645}.intelligence-actions>button.priority-warning>span{background:#fff7e6;color:#9b6811}.intelligence-actions strong{font-size:10px;display:block}.intelligence-actions small{font-size:8px;color:var(--muted)}.intelligence-clear{padding:18px;border:1px dashed #cdd8e3;background:#f9fbfd;border-radius:11px;color:#637184;font-size:10px;text-align:center}.intelligence-trend-card{margin-bottom:14px}.intelligence-trend{display:grid;grid-template-columns:repeat(auto-fit,minmax(50px,1fr));gap:7px;align-items:end;min-height:175px;border-bottom:1px solid var(--line);padding:12px 0 8px;overflow:auto}.intelligence-trend article{height:145px;min-width:42px;display:grid;grid-template-rows:18px 1fr 20px;gap:5px;text-align:center}.intelligence-trend time,.intelligence-trend small{font-size:8px;color:var(--muted);white-space:nowrap}.trend-bars{display:flex;gap:3px;align-items:end;justify-content:center}.trend-bars span{width:10px;height:var(--bar);min-height:4px;border-radius:5px 5px 2px 2px;transition:.2s}.trend-bars .absence,.trend-legend .absence{background:#d06b75}.trend-bars .late,.trend-legend .late{background:#d8a23c}.trend-legend{display:flex;gap:18px;justify-content:center;padding-top:10px;font-size:9px;color:var(--muted)}.trend-legend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-left:5px}.intelligence-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.table-sub{display:block;color:var(--muted);font-size:8px;margin-top:3px}.empty.compact{padding:22px}.finance-intel-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.finance-intel-summary div{background:#f7fafc;border-radius:10px;padding:12px}.finance-intel-summary small{display:block;color:var(--muted);font-size:9px}.finance-intel-summary strong{display:block;margin-top:5px;font-size:13px}.legacy-report-center{margin-top:22px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:0 16px 16px}.legacy-report-center>summary{cursor:pointer;padding:16px 0;font-weight:800;color:var(--navy)}
@media(max-width:1100px){.intelligence-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.intelligence-controls{align-items:stretch;flex-direction:column}.intelligence-presets{display:grid;grid-template-columns:1fr 1fr}.intelligence-custom{display:grid;grid-template-columns:1fr 1fr}.intelligence-custom button{grid-column:1/-1}.intelligence-custom input{width:100%}.intelligence-hero{align-items:flex-start;flex-direction:column;padding:18px}.intelligence-period{text-align:right}.intelligence-kpis{grid-template-columns:1fr 1fr}.intelligence-layout,.intelligence-detail-grid{grid-template-columns:1fr}.intelligence-insight{grid-template-columns:62px 1fr 14px;padding:10px 8px}.intelligence-trend{grid-template-columns:repeat(7,minmax(42px,1fr));justify-content:start}.finance-intel-summary{grid-template-columns:1fr}.legacy-report-center{padding:0 10px 10px}}

/* v0.21.0: tuition collection follow-up and payment promises */
.collection-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-bottom:14px}.collection-summary article{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;display:grid;gap:4px}.collection-summary small{color:var(--muted);font-size:9px}.collection-summary strong{font-size:16px;color:var(--navy)}.collection-summary span{font-size:9px;color:var(--muted)}.collection-summary .danger{background:#fff8f8;border-color:#efd0d4}.collection-summary .danger strong{color:#b93645}.collection-summary .warning{background:#fffaf1;border-color:#ecd8ad}.collection-summary .warning strong{color:#9b6811}.collection-aging{margin-bottom:14px}.aging-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.aging-grid div{padding:12px;border-radius:11px;background:#f7fafc;border:1px solid #e7edf2}.aging-grid small{display:block;color:var(--muted);font-size:8px;margin-bottom:5px}.aging-grid strong{font-size:12px}.aging-grid .danger{background:#fff5f6;border-color:#efd0d4;color:#ad3344}.collection-overdue{color:#b93645;font-weight:800}.collection-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;padding-bottom:14px;border-bottom:1px solid var(--line)}.collection-detail-head small{color:var(--muted)}.collection-detail-head h3{margin:3px 0}.collection-detail-head p{margin:0;color:var(--muted);font-size:10px}.collection-balance{display:grid;justify-items:end;font-size:21px;font-weight:900;color:var(--navy);white-space:nowrap}.collection-balance small{font-size:8px;font-weight:500}.collection-modal-actions{display:flex;gap:8px;margin:14px 0}.collection-detail-section{margin-top:16px}.collection-detail-section h4{margin:0 0 9px;font-size:12px}.collection-followup{border:1px solid var(--line);border-radius:12px;padding:11px;margin-bottom:8px;background:#fbfdfe}.collection-followup>div{display:flex;justify-content:space-between;gap:10px}.collection-followup>div span{font-size:8px;color:var(--muted)}.collection-followup p{margin:7px 0;font-size:10px;line-height:1.8}.collection-followup>small{font-size:8px;color:var(--muted)}.collection-message-check{display:flex!important;align-items:center;gap:8px;background:#f7fafc;border-radius:11px;padding:11px!important}.collection-message-check input{width:auto!important;margin:0}
@media(max-width:760px){.collection-summary{grid-template-columns:1fr 1fr}.aging-grid{grid-template-columns:1fr 1fr}.aging-grid>div:last-child{grid-column:1/-1}.collection-detail-head{flex-direction:column}.collection-balance{justify-items:start}.collection-modal-actions{display:grid;grid-template-columns:1fr 1fr}.collection-modal-actions button{width:100%}}

/* v0.22.0 — communication automation & SMS controls */
.communication-control-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 16px}.communication-control-grid article{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:5px;box-shadow:var(--shadow)}.communication-control-grid small{color:var(--muted);font-size:10px}.communication-control-grid strong{font-size:18px}.communication-control-grid span{color:var(--muted);font-size:9px;line-height:1.6}.automation-overview{margin-bottom:16px}.automation-policy-summary{display:flex;flex-wrap:wrap;gap:8px}.policy-pill{display:flex;flex-direction:column;gap:3px;border:1px solid var(--line);border-radius:12px;padding:9px 11px;background:#fff}.policy-pill.active{border-right:3px solid var(--green)}.policy-pill.off{opacity:.65;border-right:3px solid var(--muted)}.policy-pill strong{font-size:10px}.policy-pill small{font-size:9px;color:var(--muted)}.communication-settings-form .communication-master{background:#f7fafc;border:1px solid var(--line);border-radius:12px;padding:12px}.communication-master small,.school-sms-credentials small{display:block;color:var(--muted);font-size:9px;line-height:1.7;margin-top:5px}.school-sms-credentials{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;background:#f8fbff;border:1px dashed var(--line);border-radius:12px;padding:12px}.communication-policy-editor{display:grid;gap:10px;border-top:1px solid var(--line);padding-top:14px}.communication-policy-editor>h4{margin:0}.communication-policy-editor>p{margin:0}.communication-policy-editor fieldset{border:1px solid var(--line);border-radius:12px;padding:11px;display:grid;grid-template-columns:minmax(150px,.6fr) 1fr;gap:10px;align-items:center}.communication-policy-editor fieldset legend{padding:0 6px}.communication-policy-editor fieldset p{grid-column:1/-1;margin:0;color:var(--muted);font-size:9px;line-height:1.6}.event-channel-options{display:flex;flex-wrap:wrap;gap:10px}.communication-budget-note{background:#fff8e8;border-right:4px solid var(--amber);padding:11px 13px;border-radius:10px;font-size:10px;line-height:1.8}.channel-disabled{opacity:.48}.communication-settings-form .hidden{display:none!important}
@media(max-width:900px){.communication-control-grid{grid-template-columns:1fr 1fr}.communication-policy-editor fieldset{grid-template-columns:1fr}.communication-policy-editor fieldset p{grid-column:auto}}
@media(max-width:560px){.communication-control-grid{grid-template-columns:1fr 1fr;gap:8px}.communication-control-grid article{padding:11px}.communication-control-grid strong{font-size:15px}.school-sms-credentials{grid-template-columns:1fr}.automation-policy-summary{display:grid;grid-template-columns:1fr 1fr}.communication-policy-editor fieldset{padding:9px}.event-channel-options{display:grid;grid-template-columns:1fr 1fr}}

/* v0.22.2 — sender auto/default fallback & simpler SMS setup */
.sms-readiness{border:1px solid var(--line);border-right:4px solid var(--amber);border-radius:12px;padding:12px 14px;margin:10px 0 14px;background:#fffaf0;display:grid;gap:9px}.sms-readiness.ready{border-right-color:var(--green);background:#f4fbf7}.sms-readiness>strong{font-size:13px}.sms-readiness-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.sms-readiness-grid span{border-radius:10px;padding:8px 10px;font-size:10px;font-weight:700;background:#fff;border:1px solid var(--line)}.sms-readiness-grid .ok{color:var(--green)}.sms-readiness-grid .bad{color:var(--red)}.sms-readiness small{font-size:9px;color:var(--muted);line-height:1.7}.communication-settings-form.simple{gap:14px}.communication-simple-section{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff;display:grid;gap:10px}.communication-simple-section h4,.communication-policy-editor.simple h4{margin:0;font-size:13px}.master-switch{display:flex;gap:11px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:12px;cursor:pointer;background:#f9fbfd}.master-switch input{margin-top:4px}.master-switch span{display:grid;gap:4px}.master-switch strong{font-size:11px}.master-switch small{font-size:9px;line-height:1.7;color:var(--muted)}.form-grid.compact{gap:10px}.communication-advanced,.policy-advanced{border:1px dashed var(--line);border-radius:10px;padding:0 10px;background:#fbfcfe}.communication-advanced summary,.policy-advanced summary{cursor:pointer;padding:10px 0;font-size:10px;font-weight:700}.communication-advanced[open],.policy-advanced[open]{padding-bottom:10px}.sms-test-btn{justify-self:start}.communication-policy-editor.simple{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff}.communication-policy-editor.simple>.muted{margin-bottom:2px}.simple-policy{grid-template-columns:1fr!important;gap:8px!important;padding:12px!important}.simple-policy p{grid-column:auto!important}.event-channel-options{align-items:center}.field-title{font-size:10px;font-weight:700;margin-left:4px}.channel-choice{display:flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#f9fbfd;font-size:10px;cursor:pointer}.channel-choice:has(input:checked){border-color:#9fc7e8;background:#eff7fd}.policy-advanced{width:100%}
@media(max-width:560px){.sms-readiness-grid{grid-template-columns:1fr}.communication-simple-section{padding:11px}.event-channel-options{display:flex;flex-wrap:wrap}.channel-choice{flex:1 1 120px}.sms-test-btn{width:100%}}

/* v0.23.0 targeted communication campaigns */
.campaign-overview{margin-bottom:16px}.campaign-step{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff;display:grid;gap:10px}.campaign-step h4{margin:0;font-size:13px}.campaign-preview{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#f4f9fc;border:1px solid #cfe5ef;border-radius:12px;padding:11px 13px}.campaign-preview strong{font-size:12px}.campaign-preview span{font-size:10px;color:var(--muted);line-height:1.7}.radio-card{display:flex!important;flex-direction:row!important;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:11px;background:#f9fbfd;cursor:pointer}.radio-card:has(input:checked){border-color:#9fc7e8;background:#eff7fd}.radio-card input{margin-top:3px}.radio-card span{display:grid;gap:3px}.radio-card strong{font-size:11px}.radio-card small{font-size:9px;color:var(--muted)}.campaign-form .hidden{display:none!important}
@media(max-width:700px){.campaign-preview{align-items:flex-start;flex-direction:column}.campaign-overview .table-wrap{overflow-x:auto}.campaign-step{padding:11px}}

.campaign-jalali-schedule{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.7fr);gap:12px;align-items:end}
.campaign-jalali-schedule label{margin:0}
.campaign-jalali-schedule input[readonly]{cursor:pointer;background:#fff}
@media(max-width:720px){.campaign-jalali-schedule{grid-template-columns:1fr}}

/* v0.23.3: grouped recipient picker, Persian scheduling controls and automatic dependent views. */
.auto-refresh-hint{display:inline-flex;align-items:center;gap:6px;border:1px solid #cfe5ef;background:#f4f9fc;color:#477184;border-radius:20px;padding:8px 11px;font-size:9px;white-space:nowrap}
.auto-refresh-hint:before{content:"↻";font-size:13px;color:#0b89a2}
.campaign-user-picker{border:1px solid var(--line);border-radius:13px;padding:12px;background:#fbfdff;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;align-items:end}
.campaign-user-picker>label{margin:0}.campaign-select-all{align-self:center!important;margin:0!important;padding:10px 12px;background:#f2f7fb;border-radius:10px}
.campaign-user-list{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:260px;overflow:auto;padding:4px}
.campaign-user-list>label{display:flex!important;flex-direction:row!important;align-items:center;gap:9px;margin:0!important;padding:10px;background:white;border:1px solid var(--line);border-radius:10px;cursor:pointer;font-weight:400!important}
.campaign-user-list>label:has(input:checked){border-color:#9fc7e8;background:#eff7fd}.campaign-user-list input{width:auto!important;flex:none}.campaign-user-list span{display:grid;gap:2px;min-width:0}.campaign-user-list strong{font-size:11px}.campaign-user-list small{font-size:9px;color:var(--muted)}
.campaign-time-field{display:flex;flex-direction:column;gap:8px;font-size:13px;font-weight:700}.campaign-time-picker{display:grid;grid-template-columns:1fr auto 1fr;gap:7px;align-items:center}.campaign-time-picker select{font-family:Vazirmatn,Tahoma,"Segoe UI",Arial,sans-serif;text-align:center;direction:rtl}.campaign-time-picker b{font-size:18px;color:var(--muted)}
@media(max-width:700px){.campaign-user-picker{grid-template-columns:1fr}.campaign-user-list{grid-template-columns:1fr}.campaign-time-picker{grid-template-columns:1fr auto 1fr}}

/* v0.24.0 — اتصال مستقیم بله و ارتباطات شخصی */
.sidebar-foot{grid-template-columns:1fr 30px}.sidebar-account{display:grid!important;grid-template-columns:36px 1fr;align-items:center;gap:9px;text-align:right!important;width:100%;padding:0!important;color:inherit!important;font-size:inherit!important;min-width:0}.sidebar-account:hover .sidebar-account-text strong{color:#fff}.sidebar-account-text{min-width:0}.sidebar-account-text strong,.sidebar-account-text small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-foot>#logout{grid-column:2;width:30px;height:30px;display:grid;place-items:center;padding:0}
.bale-status-card{border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:6px;background:#f8fbff}.bale-status-card.ready{border-right:4px solid var(--green);background:#f0fbf6}.bale-status-card.pending{border-right:4px solid var(--amber);background:#fffaf0}.bale-status-card strong{font-size:13px}.bale-status-card span{font-size:11px;color:var(--muted)}
.bale-link-success{border:1px solid #bde7d4;background:#f0fbf6;border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:7px}.bale-link-success strong{color:#087c51;font-size:15px}.bale-link-success span{font-weight:700}.bale-link-success small{color:var(--muted);line-height:1.8}.bale-link-steps{border:1px solid var(--line);border-radius:14px;padding:17px;background:#fbfdff}.bale-link-steps>strong{display:block;margin-bottom:8px}.bale-link-steps ol{margin:8px 18px 16px 0;padding:0;line-height:2;color:var(--muted);font-size:11px}.bale-link-code-box{display:grid;gap:6px;text-align:center;border:1px dashed #8bc8d6;background:var(--cyan-soft);padding:14px;border-radius:12px;margin:12px 0}.bale-link-code-box strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:24px;letter-spacing:2px;color:var(--navy);direction:ltr}.bale-link-code-box span,.bale-link-code-box small{font-size:10px;color:var(--muted)}
@media(max-width:560px){.bale-link-code-box strong{font-size:21px}}


/* v0.24.1 — اتصال یک‌کلیکی و QR بله */
.bale-link-easy>p{margin:0 0 14px;color:var(--muted);font-size:11px;line-height:1.9}.bale-quick-link{display:grid;gap:14px}.bale-link-loading{display:block;text-align:center;padding:18px;border:1px dashed var(--line);border-radius:12px;color:var(--muted)}.bale-quick-actions{display:grid;gap:8px;text-align:center}.bale-open-link{display:inline-flex;align-items:center;justify-content:center;min-height:46px;text-decoration:none;border-radius:10px;padding:0 18px}.bale-auto-status{font-size:10px;color:var(--muted)}.bale-qr-wrap{display:grid;justify-items:center;gap:8px;border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px}.bale-qr-wrap img{width:min(260px,72vw);height:auto;border-radius:8px}.bale-qr-wrap small{color:var(--muted);font-size:10px}.bale-manual-fallback{border:1px solid var(--line);border-radius:12px;padding:10px 12px}.bale-manual-fallback summary{cursor:pointer;font-weight:800;font-size:11px}.bale-manual-fallback>small{display:block;color:var(--muted);line-height:1.8;margin:10px 0}.bale-manual-fallback>strong{display:block;text-align:center;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:20px;letter-spacing:2px;color:var(--navy)}
@media(max-width:560px){.bale-qr-wrap{display:none}.bale-open-link{width:100%}.bale-manual-fallback>strong{font-size:18px}}

/* v0.25.0 — موتور هوشمند چندکاناله */
.smart-delivery-mode{display:grid;gap:6px;padding:12px;border:1px solid var(--line,#d9e1ea);border-radius:14px;background:var(--soft,#f7f9fc)}
.smart-delivery-mode small,.policy-delivery-mode small{display:block;margin-top:5px;color:var(--muted,#667085);line-height:1.8}
.policy-delivery-mode{display:grid;gap:6px;margin-top:10px;padding:10px 12px;border-radius:12px;background:#f8fafc;border:1px dashed #d7dee8}
.campaign-report-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}
.campaign-report-kpis span{display:grid;gap:4px;padding:12px;border:1px solid var(--line,#d9e1ea);border-radius:14px;background:#fff}
.campaign-report-kpis small{color:var(--muted,#667085)}
.campaign-report-kpis strong{font-size:1.25rem}
.delivery-attempt{display:inline-flex;align-items:center;margin:2px 3px;padding:4px 8px;border-radius:999px;font-size:.82rem;background:#eef2f6}
.delivery-attempt.sent{background:#e8f7ef;color:#17663b}.delivery-attempt.failed{background:#fff0f0;color:#9f2424}.delivery-attempt.skipped{background:#fff7e6;color:#8a5a00}
.campaign-report-table{max-height:55vh;overflow:auto}
@media(max-width:720px){.campaign-report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.campaign-report-table{overflow-x:auto}}

/* v0.26.0 — مرکز حرفه‌ای ارتباطات */
.communication-dashboard-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 0 16px}.communication-dashboard-kpis article{background:var(--surface,#fff);border:1px solid var(--border,#dfe7ef);border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:6px}.communication-dashboard-kpis small,.communication-dashboard-kpis span{color:var(--muted,#68788b)}.communication-dashboard-kpis strong{font-size:1.45rem}.communication-health-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.communication-health-item{display:flex;align-items:center;gap:12px;border:1px solid var(--border,#dfe7ef);border-radius:15px;padding:13px}.communication-health-item>span{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:800}.communication-health-item.ready>span{background:#e8f8ef}.communication-health-item.pending>span{background:#fff4dd}.communication-health-item div{display:flex;flex-direction:column;gap:3px}.coverage-meter{min-width:120px;height:9px;background:#edf2f7;border-radius:99px;overflow:hidden}.coverage-meter i{display:block;height:100%;background:#2f78d4;border-radius:inherit}.campaign-template-picker small,.template-variable-head small,.campaign-attachment-box small{display:block;color:var(--muted,#68788b);margin-top:5px}.template-variable-panel{border:1px dashed var(--border,#dfe7ef);border-radius:14px;padding:13px}.template-variable-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px}.template-variable-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.template-variable-grid label{display:flex;flex-direction:column;gap:5px}.template-variable-grid small{color:var(--muted,#68788b)}.template-variable-empty{color:var(--muted,#68788b)}.campaign-attachment-box{border:1px dashed var(--border,#dfe7ef);border-radius:14px;padding:14px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.campaign-attachment-box>div:first-child{flex:1;min-width:220px}.campaign-attachment-current{display:flex;gap:8px;align-items:center;background:#f6f9fc;padding:8px 10px;border-radius:10px}.file-button{cursor:pointer}.campaign-preview-summary{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.campaign-channel-previews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.campaign-channel-previews article{border:1px solid var(--border,#dfe7ef);border-radius:12px;padding:11px;background:#fff}.campaign-channel-previews article b{display:block;margin-bottom:7px}.campaign-channel-previews article strong{display:block;font-size:.95rem}.campaign-channel-previews article p{white-space:pre-wrap;margin:6px 0;font-size:.9rem}.communication-template-list{display:grid;gap:16px;max-height:62vh;overflow:auto;padding-left:4px}.communication-template-list section>h4{margin:0 0 8px}.communication-template-card{border:1px solid var(--border,#dfe7ef);border-radius:14px;padding:13px;display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:8px}.communication-template-card>div:first-child{min-width:0}.communication-template-card small{display:block;color:var(--muted,#68788b);margin-top:3px}.communication-template-card p{margin:7px 0 0;color:var(--muted,#68788b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:650px}.template-manager-actions{margin-bottom:12px}.template-token-help{border:1px dashed var(--border,#dfe7ef);border-radius:14px;padding:12px}.template-token-help>div{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.template-token{border:1px solid var(--border,#dfe7ef);background:#f7f9fc;border-radius:999px;padding:5px 9px;cursor:pointer}.message-attachment{display:inline-flex;align-items:center;gap:5px;margin-top:8px;padding:6px 9px;border:1px solid var(--border,#dfe7ef);border-radius:9px;text-decoration:none}.campaign-report-actions{flex-wrap:wrap}
@media(max-width:900px){.communication-dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.communication-health-grid,.campaign-channel-previews{grid-template-columns:1fr}.template-variable-grid{grid-template-columns:1fr}.communication-template-card{align-items:flex-start;flex-direction:column}.coverage-meter{min-width:80px}}

/* v0.26.1: compact paginated delivery history */
.delivery-history-card{overflow:hidden}
.delivery-history-size label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.delivery-history-size select{min-width:76px;padding:8px 10px}
#delivery-history-table{overflow:auto}
.table-pager{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 4px 2px;flex-wrap:wrap}
.table-pager span{font-size:13px;color:var(--muted)}
.table-pager button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:720px){.delivery-history-size{width:100%}.delivery-history-size label{justify-content:flex-start}.table-pager{justify-content:space-between}.table-pager span{order:-1;width:100%;text-align:center}}

/* v0.27.0 — ثبت‌نام یکپارچه دانش‌آموز و والدین */
dialog:has(#enrollment-form){width:min(850px,94vw)}
.enrollment-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.enrollment-head p{margin:5px 0 0}.enrollment-progress{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.enrollment-progress span{padding:10px;text-align:center;border-radius:11px;background:#f1f4f7;color:var(--muted);font-size:11px;font-weight:800}.enrollment-progress span.active{background:var(--cyan-soft);color:var(--navy);box-shadow:inset 0 -3px #0b89a2}.enrollment-step{display:none}.enrollment-step.active{display:block}.enrollment-note{margin:0 0 12px;padding:10px 12px;border-radius:10px;background:#f4f9fc;color:var(--muted);font-size:10px;line-height:1.8}.enrollment-guardian{border:1px solid var(--line);border-radius:14px;padding:16px;margin:0 0 14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 18px;background:#fbfdff}.enrollment-guardian legend{padding:0 8px;font-weight:800}.enrollment-guardian>label,.guardian-new-fields>label{display:flex;flex-direction:column;gap:8px;margin:0;font-size:13px;font-weight:700;min-width:0}.enrollment-guardian input,.enrollment-guardian select{width:100%;min-height:61px;padding:13px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--navy);font:inherit;outline:none;transition:border-color .2s,box-shadow .2s,background .2s}.enrollment-guardian input:focus,.enrollment-guardian select:focus{border-color:#78b9d2;box-shadow:0 0 0 3px rgba(11,137,162,.1);background:#fff}.guardian-new-fields{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 18px}.guardian-new-fields[hidden],.guardian-existing-field[hidden]{display:none}.enrollment-review{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}.enrollment-review article{display:grid;gap:5px;border:1px solid var(--line);border-radius:13px;padding:14px;background:#fbfdff}.enrollment-review small,.enrollment-review span{color:var(--muted)}.enrollment-actions{margin-top:16px}
@media(max-width:650px){.enrollment-head{flex-direction:column}.enrollment-head button{width:100%}.enrollment-progress span{font-size:9px;padding:9px 4px}.enrollment-guardian,.guardian-new-fields,.enrollment-review{grid-template-columns:1fr}.enrollment-actions button{flex:1}}

/* v0.28.0 — پرونده جامع دانش‌آموز */
.student-name-link{border:0;background:none;padding:0;color:var(--navy);font:inherit;font-weight:800;cursor:pointer;text-align:right}.student-name-link:hover{color:#0b89a2;text-decoration:underline}.student-profile-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.student-profile-hero{position:relative;overflow:hidden;display:grid;grid-template-columns:auto minmax(220px,.8fr) minmax(380px,1.2fr);gap:20px;align-items:center;padding:24px;border:1px solid #cfdee9;border-radius:22px;background:linear-gradient(135deg,#f1fbfd 0%,#fff 58%,#f4f8fc 100%);box-shadow:0 12px 30px rgba(25,58,82,.07)}.student-profile-hero:after{content:"";position:absolute;left:-55px;top:-70px;width:190px;height:190px;border-radius:50%;background:rgba(11,137,162,.08)}.student-profile-avatar{position:relative;z-index:1;width:82px;height:82px;border-radius:24px;display:grid;place-items:center;background:linear-gradient(145deg,#123f68,#0b89a2);color:#fff;font-size:26px;font-weight:900;box-shadow:0 10px 24px rgba(18,63,104,.2)}.student-profile-identity{position:relative;z-index:1;display:grid;gap:5px}.student-profile-identity>small{color:#0b89a2;font-weight:800}.student-profile-identity h2{margin:0;font-size:24px}.student-profile-identity p{margin:0 0 5px;color:var(--muted)}.student-profile-identity>div{display:flex;gap:6px;flex-wrap:wrap}.student-profile-details{position:relative;z-index:1;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.student-profile-details>div{padding:11px 13px;border:1px solid rgba(207,222,233,.85);border-radius:13px;background:rgba(255,255,255,.78)}.student-profile-details dt{font-size:9px;color:var(--muted);margin-bottom:4px}.student-profile-details dd{margin:0;font-size:11px;font-weight:800}.student-profile-actions{display:flex;gap:8px;overflow-x:auto;padding:12px 2px 4px;scrollbar-width:thin}.student-profile-actions button{flex:0 0 auto;display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--navy);padding:9px 13px;cursor:pointer;font:inherit;font-weight:800}.student-profile-actions button:hover{border-color:#8fc9da;background:var(--cyan-soft)}.student-profile-actions svg{width:18px;height:18px;color:#0b89a2}.student-profile-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px;margin:15px 0}.student-profile-kpis article{display:flex;align-items:flex-start;gap:10px;min-width:0;padding:14px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 5px 18px rgba(25,58,82,.04)}.student-profile-kpis>article>span{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:11px;background:var(--cyan-soft);color:#0b89a2}.student-profile-kpis svg{width:18px;height:18px}.student-profile-kpis div{min-width:0;display:grid;gap:2px}.student-profile-kpis small{color:var(--muted);font-size:9px}.student-profile-kpis strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-profile-kpis em{font-size:9px;color:var(--muted);font-style:normal}.student-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.student-profile-card{min-width:0;border:1px solid var(--line);border-radius:18px;background:#fff;padding:16px;box-shadow:0 6px 22px rgba(25,58,82,.04)}.student-profile-card.wide{grid-column:1/-1}.student-profile-card-head{display:flex;align-items:center;gap:10px;border-bottom:1px solid #edf1f5;padding-bottom:12px;margin-bottom:12px}.student-profile-card-head>span{width:37px;height:37px;display:grid;place-items:center;border-radius:12px;background:#f0f7fb;color:#0b89a2}.student-profile-card-head svg{width:19px;height:19px}.student-profile-card-head h3{font-size:13px;margin:0}.student-profile-card-head small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.student-guardian-list,.student-record-list,.student-timeline{display:grid;gap:8px}.student-guardian-list article{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;border:1px solid #e7edf2;border-radius:13px;padding:10px;background:#fbfdff}.student-guardian-avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#e8f5f8;color:#08768b;font-weight:900}.student-guardian-list article>div{display:grid;gap:2px}.student-guardian-list small{color:var(--muted);font-size:9px}.student-record-list article{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid #edf1f4;border-radius:12px;padding:10px 11px;background:#fcfdfe}.student-record-list article>div{min-width:0;display:grid;gap:3px}.student-record-list strong{font-size:11px}.student-record-list small{font-size:9px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-record-list b{flex:none;font-size:10px;color:var(--navy)}.student-timeline article{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center}.student-timeline article>div{display:grid;gap:2px}.student-timeline small{font-size:9px;color:var(--muted)}.timeline-dot{width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 4px #f1f4f7}.timeline-dot.success{background:var(--green)}.timeline-dot.danger{background:var(--red)}.timeline-dot.warning{background:var(--amber)}.student-profile-empty{padding:22px 12px;text-align:center;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:10px;background:#fbfdff}
@media(max-width:1100px){.student-profile-hero{grid-template-columns:auto 1fr}.student-profile-details{grid-column:1/-1}.student-profile-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.student-profile-topbar{align-items:stretch}.student-profile-topbar>div{display:flex}.student-profile-topbar button{flex:1}.student-profile-hero{grid-template-columns:auto 1fr;padding:17px;gap:14px}.student-profile-avatar{width:62px;height:62px;border-radius:18px;font-size:20px}.student-profile-identity h2{font-size:19px}.student-profile-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.student-profile-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.student-profile-grid{grid-template-columns:1fr}.student-profile-card{padding:13px}.student-profile-actions{margin-inline:-2px}.student-profile-actions button{padding:9px 11px}.student-record-list article{align-items:flex-start}.student-record-list small{white-space:normal}}
@media(max-width:430px){.student-profile-hero{grid-template-columns:1fr;text-align:center}.student-profile-avatar{margin:auto}.student-profile-identity>div{justify-content:center}.student-profile-details{grid-template-columns:1fr 1fr;text-align:right}.student-profile-kpis{grid-template-columns:1fr 1fr}.student-profile-kpis article{padding:11px;gap:7px}.student-profile-kpis>article>span{width:30px;height:30px}.student-profile-kpis strong{font-size:12px}.student-guardian-list article{grid-template-columns:auto 1fr}.student-guardian-list button{grid-column:1/-1;width:100%}}

/* Professional assessment & grade workflow */
.grade-workflow-note{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#f5fbfc;border:1px solid #d7edf1;border-radius:14px;padding:12px 14px;margin-bottom:14px;font-size:11px}.grade-workflow-note strong{color:var(--navy)}.grade-workflow-note span{background:white;border:1px solid #dce8ee;border-radius:999px;padding:6px 10px}.grade-workflow-note small{width:100%;color:var(--muted);line-height:1.8}.form-guidance{background:#f5fbfc;border:1px solid #d7edf1;border-radius:12px;padding:10px 12px;color:#416477;font-size:11px;line-height:1.8;margin:-8px 0 16px}.danger-button{border:1px solid #efc9ce;background:#fff5f6;color:#a72e3b;border-radius:9px;padding:9px 12px;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.danger-button:hover{background:#ffe9ec}.danger-panel{background:#fff7f8;border:1px solid #efcfd4;border-radius:13px;padding:13px 14px;margin-bottom:16px}.danger-panel strong{color:#8f2937}.danger-panel p{margin:6px 0 0;color:#72545a;font-size:11px;line-height:1.8}.grade-modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.grade-modal-head .modal-title{margin-bottom:5px}.grade-modal-head p{margin:0 0 16px;color:var(--muted);font-size:10px;line-height:1.8}.professional-grade-row{grid-template-columns:1.35fr .85fr 1.4fr 70px}.grade-row-action{text-align:center}.grade-delete{border:1px solid #efc9ce;background:#fff7f8;color:#a72e3b;border-radius:8px;padding:7px 9px;font-size:10px;cursor:pointer}.grade-change-reason{display:grid;grid-template-columns:minmax(180px,.4fr) minmax(260px,1fr);gap:5px 12px;align-items:center;margin-top:14px;padding:12px;background:#fbfcfe;border:1px solid var(--line);border-radius:12px;font-size:11px;font-weight:700}.grade-change-reason input{padding:9px;border:1px solid var(--line);border-radius:8px}.grade-change-reason small{grid-column:2;color:var(--muted);font-weight:400}
@media(max-width:760px){.grade-workflow-note{align-items:stretch}.grade-workflow-note span{flex:1 1 100%}.professional-grade-row{grid-template-columns:1fr 1fr}.professional-grade-row .grade-note{grid-column:1/-1}.professional-grade-row .grade-row-action{grid-column:1/-1;text-align:left}.grade-change-reason{grid-template-columns:1fr}.grade-change-reason small{grid-column:1}.grade-modal-head{flex-direction:column}.grade-modal-head>.tag{align-self:flex-start}}

/* v0.28.4: fixed dashboard navigation + school readiness center */
.logo[role="button"]{cursor:pointer;border-radius:12px;transition:.18s}.logo[role="button"]:hover,.logo[role="button"]:focus-visible{background:#ffffff0b;outline:none}.nav-dashboard-fixed{margin:0 0 8px!important;background:#ffffff0c!important;color:#fff!important;border:1px solid #ffffff10!important;font-weight:800}.nav-dashboard-fixed.active{background:#ffffff16!important}.dashboard-readiness{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(320px,1.8fr) auto;gap:14px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px 18px;box-shadow:0 5px 18px rgba(19,44,78,.035)}.dashboard-readiness.needs-attention{border-color:#f0cdd2;background:#fffafb}.readiness-score{display:flex;align-items:center;gap:12px}.readiness-score>span{width:58px;height:58px;border-radius:18px;background:var(--cyan-soft);color:var(--navy);display:grid;place-items:center;font-size:16px;font-weight:900}.dashboard-readiness.needs-attention .readiness-score>span{background:#fff0f1;color:#a72e3b}.readiness-score small{display:block;color:var(--muted);font-size:9px;margin-bottom:4px}.readiness-score strong{font-size:12px}.readiness-top{display:grid;gap:6px}.readiness-top button{display:flex;align-items:center;gap:9px;border:0;background:#f8fafc;border-radius:10px;padding:8px 10px;text-align:right;color:var(--text)}.readiness-top button:hover{background:#f0f7f9}.readiness-top button>div{display:grid;gap:2px}.readiness-top strong{font-size:10px}.readiness-top small{font-size:8px;color:var(--muted)}.readiness-top p{margin:0;color:var(--green);font-size:11px}.readiness-dot{width:9px;height:9px;border-radius:50%;flex:none}.severity-critical .readiness-dot,.readiness-dot.severity-critical{background:#c83c4c}.severity-warning .readiness-dot,.readiness-dot.severity-warning{background:#d79620}.severity-info .readiness-dot,.readiness-dot.severity-info{background:#2489a0}.readiness-hero{display:flex;align-items:center;gap:22px;background:linear-gradient(120deg,#0c3158,#174d77);color:white;border-radius:20px;padding:22px 25px;margin-bottom:18px;box-shadow:var(--shadow)}.readiness-hero h3{margin:0 0 7px;font-size:17px}.readiness-hero p{margin:0;color:#c6d8e6;font-size:10px;line-height:1.8}.readiness-ring{--score:0;width:92px;height:92px;flex:none;border-radius:50%;display:grid;place-items:center;align-content:center;background:radial-gradient(circle closest-side,#0d355d 78%,transparent 80% 100%),conic-gradient(#63d6e2 calc(var(--score)*1%),#ffffff22 0);border:1px solid #ffffff18}.readiness-ring strong{font-size:19px}.readiness-ring small{font-size:8px;color:#b9d1e2}.readiness-summary-tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.readiness-summary-tags span{background:#ffffff12;border:1px solid #ffffff18;padding:5px 8px;border-radius:999px;font-size:8px}.readiness-summary-tags .critical{background:#b9364530}.readiness-summary-tags .warning{background:#d69a2330}.readiness-summary-tags .info{background:#2aa3bd30}.readiness-section{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;margin-bottom:14px}.readiness-list{display:grid;gap:10px}.readiness-item{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:13px;background:#fbfdff}.readiness-item.severity-critical{border-color:#f1ccd1;background:#fffafb}.readiness-item.severity-warning{border-color:#f2dfba;background:#fffdf8}.readiness-item.state-resolved{opacity:.7;background:#f8fbfa}.readiness-item.state-snoozed{background:#fafbfd}.readiness-item-icon{width:42px;height:42px;border-radius:12px;background:#eef5f8;color:var(--navy);display:grid;place-items:center}.readiness-item.severity-critical .readiness-item-icon{background:#fff0f1;color:#a72e3b}.readiness-item.severity-warning .readiness-item-icon{background:#fff7e6;color:#9b6811}.readiness-item-body{min-width:0}.readiness-item-body strong{font-size:12px}.readiness-item-body p{margin:5px 0 0;color:var(--muted);font-size:9px;line-height:1.8}.readiness-item-meta{display:flex;gap:7px;margin-bottom:5px}.readiness-item-meta span{font-size:8px;padding:3px 6px;border-radius:999px;background:#eef3f8;color:#65758a}.readiness-item-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.readiness-item-actions button{white-space:nowrap}.readiness-archive{background:white;border:1px solid var(--line);border-radius:15px;margin:10px 0}.readiness-archive summary{cursor:pointer;padding:14px 17px;font-size:11px;font-weight:800}.readiness-archive .readiness-list{padding:0 14px 14px}.compact-empty{padding:20px}.readiness-open{white-space:nowrap}
@media(max-width:900px){.dashboard-readiness{grid-template-columns:1fr auto}.readiness-top{grid-column:1/-1;order:3}.readiness-item{grid-template-columns:auto 1fr}.readiness-item-actions{grid-column:1/-1;justify-content:flex-start;padding-right:54px}}
@media(max-width:760px){.nav-dashboard-fixed{display:flex!important}.dashboard-readiness{grid-template-columns:1fr;padding:14px}.readiness-score>span{width:50px;height:50px;border-radius:15px}.readiness-open{width:100%}.readiness-top{grid-column:auto}.readiness-hero{align-items:flex-start;padding:18px}.readiness-ring{width:76px;height:76px}.readiness-item{grid-template-columns:auto 1fr;padding:11px}.readiness-item-actions{padding-right:0}.readiness-item-actions button{flex:1 1 130px}.readiness-section{padding:13px}}

/* v0.28.5: pinned management access + setup wizard */
.nav-quick-stack{display:grid;gap:6px;margin:0 0 10px;padding-bottom:10px;border-bottom:1px solid #ffffff12}.nav-quick-fixed{margin:0!important;background:#ffffff09!important;color:#eaf5ff!important;border:1px solid #ffffff0d!important;font-weight:800}.nav-quick-fixed:hover{background:#ffffff12!important}.nav-quick-fixed.active{background:#ffffff18!important;color:#fff!important;border-color:#ffffff1c!important}.nav-quick-dashboard{background:#ffffff10!important}.nav-quick-analytics .ico{color:#79d7e3}.nav-quick-readiness .ico{color:#f0c778}
.manager-mobile-shortcuts{display:none}.dashboard-setup-progress{display:flex;align-items:center;justify-content:space-between;gap:18px;border:1px solid #cde4ee;background:#f5fbfd;border-radius:16px;padding:14px 16px}.dashboard-setup-progress>div{display:flex;align-items:center;gap:12px}.dashboard-setup-progress>div>span{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#e1f3f7;color:var(--navy)}.dashboard-setup-progress small{display:block;color:var(--muted);font-size:9px}.dashboard-setup-progress strong{display:block;margin:3px 0;font-size:12px}.dashboard-setup-progress p{margin:0;color:var(--muted);font-size:9px}
.setup-wizard-shell{display:grid;grid-template-columns:260px minmax(0,1fr);gap:18px;align-items:start}.setup-wizard-steps,.setup-wizard-main{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 5px 18px rgba(19,44,78,.035)}.setup-wizard-steps{padding:14px;display:grid;gap:7px;position:sticky;top:14px}.setup-progress-head{padding:5px 5px 12px;border-bottom:1px solid var(--line);margin-bottom:3px}.setup-progress-head small{color:var(--muted);font-size:9px}.setup-progress-head strong{float:left;color:var(--navy);font-size:13px}.setup-progress-head>div{clear:both;height:6px;background:#edf2f6;border-radius:999px;overflow:hidden;margin-top:9px}.setup-progress-head>div span{display:block;height:100%;background:#27a3b6;border-radius:inherit}.setup-wizard-steps>button{display:grid;grid-template-columns:30px 1fr;align-items:center;gap:9px;border:1px solid transparent;background:transparent;text-align:right;padding:9px;border-radius:12px;color:var(--text)}.setup-wizard-steps>button:hover{background:#f7fafc}.setup-wizard-steps>button.active{background:#eef7fb;border-color:#d5e8f0}.setup-wizard-steps>button>span{width:28px;height:28px;border-radius:9px;background:#edf2f6;display:grid;place-items:center;font-size:10px;font-weight:900}.setup-wizard-steps>button.ready>span{background:#e8f7ef;color:var(--green)}.setup-wizard-steps>button.reviewed>span{background:#fff5df;color:#966410}.setup-wizard-steps strong{display:block;font-size:10px}.setup-wizard-steps small{display:block;color:var(--muted);font-size:8px;margin-top:2px}.setup-wizard-main{padding:22px;min-height:440px}.setup-step-status{display:flex;align-items:center;gap:10px;border-radius:13px;padding:11px 13px;margin-bottom:20px}.setup-step-status>span{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;font-weight:900}.setup-step-status.ready{background:#f0faf5;border:1px solid #cbe9d8}.setup-step-status.ready>span{background:#dff4e8;color:var(--green)}.setup-step-status.pending{background:#fff9ec;border:1px solid #efdcae}.setup-step-status.pending>span{background:#fff0c7;color:#93620e}.setup-step-status strong{display:block;font-size:10px}.setup-step-status small{display:block;color:var(--muted);font-size:8px;margin-top:2px}.setup-step-copy h3{margin:0 0 6px;font-size:18px}.setup-step-copy p{margin:0;color:var(--muted);font-size:10px;line-height:1.9}.setup-metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:20px 0}.setup-metric{border:1px solid var(--line);border-radius:13px;padding:13px;background:#fbfdff}.setup-metric small{display:block;color:var(--muted);font-size:8px;margin-bottom:5px}.setup-metric strong{font-size:11px}.setup-metric.needs-action{border-color:#efdcae;background:#fffdf7}.setup-step-links{display:flex;gap:8px;flex-wrap:wrap;padding:2px 0 20px}.setup-wizard-actions{border-top:1px solid var(--line);padding-top:16px;margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:10px}.setup-wizard-actions>div{display:flex;gap:8px;flex-wrap:wrap}.settings-setup-card{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#f5fbfd;border-color:#cde4ee}.settings-setup-card>div{display:flex;align-items:center;gap:11px}.settings-setup-card>div:first-child>span{width:42px;height:42px;border-radius:12px;background:#e1f3f7;color:var(--navy);display:grid;place-items:center}.settings-setup-card h3{margin:0 0 4px;font-size:13px}.settings-setup-card p{margin:0;color:var(--muted);font-size:9px}.settings-setup-card>div:last-child strong{font-size:14px;color:var(--navy)}
@media(max-width:760px){.nav-quick-stack{margin-top:2px}.manager-mobile-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:9px}.manager-mobile-shortcuts button{border:1px solid var(--line);background:#fff;border-radius:14px;padding:11px;display:flex;align-items:center;gap:9px;text-align:right;color:var(--text);box-shadow:0 4px 14px rgba(19,44,78,.03)}.manager-mobile-shortcuts button>span{width:36px;height:36px;border-radius:11px;background:#eef7fb;color:var(--navy);display:grid;place-items:center}.manager-mobile-shortcuts strong{display:block;font-size:9px}.manager-mobile-shortcuts small{display:block;color:var(--muted);font-size:7px;margin-top:2px}.dashboard-setup-progress{align-items:stretch;flex-direction:column}.dashboard-setup-progress>button{width:100%}.setup-wizard-shell{grid-template-columns:1fr}.setup-wizard-steps{position:static;display:flex;overflow-x:auto;gap:6px;scrollbar-width:thin}.setup-progress-head{min-width:150px;border-bottom:0;border-left:1px solid var(--line);margin:0;padding:6px 4px 6px 12px}.setup-wizard-steps>button{min-width:145px}.setup-wizard-main{padding:15px;min-height:0}.setup-metric-grid{grid-template-columns:1fr}.setup-wizard-actions{align-items:stretch;flex-direction:column}.setup-wizard-actions>div{display:grid;grid-template-columns:1fr}.setup-wizard-actions button{width:100%}.settings-setup-card{align-items:stretch;flex-direction:column}.settings-setup-card>div:last-child{justify-content:space-between}.settings-setup-card>div:last-child button{flex:1}}

/* v0.28.6: publish confirmation sheet + guardian notification */
.decision-sheet-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.32);backdrop-filter:blur(2px);display:grid;place-items:center;padding:20px;z-index:1200}.decision-sheet{width:min(560px,calc(100vw - 26px));background:#fff;border:1px solid #d9e5ee;border-radius:24px;box-shadow:0 28px 65px rgba(15,23,42,.22);padding:24px;position:relative;display:grid;grid-template-columns:auto 1fr;gap:16px}.decision-sheet.danger{border-color:#efc9ce;background:linear-gradient(180deg,#fff8f9,#fff)}.decision-sheet-close{position:absolute;top:12px;left:12px;border:0;background:#f3f6f9;color:var(--muted);width:34px;height:34px;border-radius:11px;cursor:pointer;font:inherit;font-size:20px;line-height:1}.decision-sheet-close:hover{background:#e9eef3;color:var(--navy)}.decision-sheet-icon{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;background:#eef6fb;color:var(--navy)}.decision-sheet-icon.success{background:#ebf8f0;color:#188d54}.decision-sheet-icon.warning{background:#fff5e2;color:#a76700}.decision-sheet-icon svg{width:28px;height:28px}.decision-sheet-body h3{margin:0 0 8px;font-size:18px}.decision-sheet-lead,.decision-sheet-message{margin:0;color:var(--muted);font-size:12px;line-height:1.9}.decision-sheet-message{margin-top:6px}.decision-sheet-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}.decision-sheet-summary article{border:1px solid var(--line);border-radius:14px;padding:12px;background:#fbfdff}.decision-sheet-summary small{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.decision-sheet-summary strong{font-size:13px}.decision-sheet-option{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1px solid #d5e8f0;background:#f5fbfd;border-radius:14px;font-size:12px;font-weight:700;margin-bottom:16px;cursor:pointer}.decision-sheet-option input{margin-top:2px}.decision-sheet-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}
@media(max-width:640px){.decision-sheet{grid-template-columns:1fr;padding:18px;gap:12px}.decision-sheet-icon{width:48px;height:48px;border-radius:15px}.decision-sheet-summary{grid-template-columns:1fr}.decision-sheet-actions{display:grid;grid-template-columns:1fr}.decision-sheet-actions button{width:100%}.decision-sheet-close{top:10px;left:10px}}

/* 0.28.6 R2: confirmation must be a modal dialog so it stays above the grade dialog */
.decision-sheet-dialog{border:0;padding:0;background:transparent;max-width:none;max-height:none;overflow:visible;color:inherit}
.decision-sheet-dialog::backdrop{background:rgba(15,23,42,.36);backdrop-filter:blur(3px)}
.decision-sheet-dialog .decision-sheet{margin:auto}

/* v0.28.7: academic year close, archive and bulk promotion */
.year-end-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;background:linear-gradient(135deg,#0d3157,#174c75);color:#fff;border-radius:20px;padding:22px 24px;margin-bottom:16px;box-shadow:var(--shadow)}.year-end-hero small{color:#bcd3e3}.year-end-hero h2{margin:4px 0 6px;font-size:24px}.year-end-hero p{margin:0;color:#d4e2ec;font-size:10px}.year-end-hero>span{width:60px;height:60px;border-radius:18px;background:#ffffff12;display:grid;place-items:center}.year-end-hero svg{width:30px;height:30px}.year-end-config{margin-bottom:14px}.year-new-row{display:flex;align-items:flex-end;gap:10px;max-width:560px}.year-new-row label{display:grid;gap:7px;flex:1;font-weight:800;font-size:11px}.year-new-row input{border:1px solid var(--line);border-radius:11px;padding:11px 13px;font:inherit}.year-end-notice{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:8px 12px;align-items:center;margin-top:14px;padding:11px 13px;border:1px solid #d9e7ee;background:#f7fbfd;border-radius:12px;font-size:9px}.year-end-notice strong{color:var(--navy)}.year-end-notice span{color:var(--muted)}.year-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.year-summary-grid article{background:#fff;border:1px solid var(--line);border-radius:15px;padding:14px;display:grid;gap:5px}.year-summary-grid article.warning{background:#fff9ed;border-color:#efd8a2}.year-summary-grid small{color:var(--muted);font-size:9px}.year-summary-grid strong{font-size:18px}.year-student-table select{min-width:150px;border:1px solid var(--line);border-radius:9px;padding:8px;background:#fff;color:var(--text);font:inherit}.year-student-table .year-target{min-width:190px}.year-finalize{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#fff9ec;border:1px solid #efdcae;border-radius:17px;padding:17px 18px;margin:14px 0}.year-finalize h3{margin:0 0 5px;font-size:13px}.year-finalize p{margin:0;color:var(--muted);font-size:9px;line-height:1.8}.year-history-list{display:grid;gap:9px}.year-history-card{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid var(--line);border-radius:14px;padding:13px 14px;background:#fbfdff}.year-history-card h4{margin:3px 0 5px;font-size:12px}.year-history-card p,.year-history-card small{margin:0;color:var(--muted);font-size:9px}.year-history-card>div:last-child{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.settings-year-end-card{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#fffaf0;border-color:#ead9ae}.settings-year-end-card>div{display:flex;align-items:center;gap:11px}.settings-year-end-card>div>span{width:42px;height:42px;border-radius:12px;background:#fff0c9;color:#9b6811;display:grid;place-items:center}.settings-year-end-card h3{margin:0 0 4px;font-size:13px}.settings-year-end-card p{margin:0;color:var(--muted);font-size:9px}
@media(max-width:900px){.year-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.year-end-notice{grid-template-columns:1fr 1fr}.year-history-card{align-items:flex-start;flex-direction:column}.year-history-card>div:last-child{width:100%}}
@media(max-width:650px){.year-end-hero{padding:17px}.year-end-hero h2{font-size:20px}.year-new-row,.year-finalize,.settings-year-end-card{align-items:stretch;flex-direction:column}.year-new-row button,.year-finalize button,.settings-year-end-card>button{width:100%}.year-summary-grid{grid-template-columns:1fr 1fr}.year-end-notice{grid-template-columns:1fr}.year-student-table{overflow-x:auto}.year-student-table table{min-width:820px}.year-history-card>div:last-child{display:grid;grid-template-columns:1fr 1fr}.year-history-card>div:last-child .tag{grid-column:1/-1}}

/* v0.28.8: mobile-first teacher and parent experience */
.mobile-role-home{display:none}.success-text{color:#168255!important}.danger-text{color:#b93645!important}
@media(max-width:760px){
  body[data-role="teacher"] .role-dashboard .dashboard-metrics,
  body[data-role="teacher"] .role-dashboard .role-launcher,
  body[data-role="parent"] .role-dashboard .dashboard-metrics,
  body[data-role="parent"] .role-dashboard .role-launcher{display:none}
  body[data-role="teacher"] .role-profile,
  body[data-role="parent"] .role-profile{padding:13px 14px;border-radius:16px;background:linear-gradient(135deg,#0c3158,#174d77);color:#fff}
  body[data-role="teacher"] .role-profile .dashboard-welcome p,
  body[data-role="teacher"] .role-profile .role-profile-main p,
  body[data-role="teacher"] .role-profile .role-profile-main small,
  body[data-role="parent"] .role-profile .dashboard-welcome p,
  body[data-role="parent"] .role-profile .role-profile-main p,
  body[data-role="parent"] .role-profile .role-profile-main small{color:#c9d9e6}
  body[data-role="teacher"] .role-profile .profile-highlight,
  body[data-role="parent"] .role-profile .profile-highlight{background:#ffffff10;border-color:#ffffff18;color:#fff}
  body[data-role="teacher"] .role-profile .child-switcher,
  body[data-role="parent"] .role-profile .child-switcher{display:none}
  .mobile-role-home{display:block;background:#fff;border:1px solid var(--line);border-radius:20px;padding:14px;box-shadow:0 8px 24px rgba(19,44,78,.055)}
  .mobile-home-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}.mobile-home-head small{display:block;color:var(--muted);font-size:9px;margin-bottom:3px}.mobile-home-head h3{margin:0;font-size:16px}.mobile-icon-action{position:relative;width:42px;height:42px;border-radius:13px;border:1px solid var(--line);background:#f7fbfd;color:var(--navy);display:grid;place-items:center}.mobile-icon-action svg{width:21px;height:21px}.mobile-icon-action b{position:absolute;top:-5px;left:-5px;min-width:19px;height:19px;border-radius:999px;background:#d9364f;color:#fff;border:2px solid #fff;font-size:8px;display:grid;place-items:center}
  .mobile-child-tabs{display:flex;gap:7px;overflow-x:auto;margin:0 -14px 12px;padding:0 14px 3px;scrollbar-width:none}.mobile-child-tabs::-webkit-scrollbar{display:none}.mobile-child-tabs button{flex:0 0 auto;min-width:132px;border:1px solid var(--line);background:#fbfdff;border-radius:13px;padding:9px 11px;text-align:right;color:var(--text)}.mobile-child-tabs button.active{border-color:#80c8d8;background:#edfafd;box-shadow:0 0 0 2px #dff5fa}.mobile-child-tabs strong{display:block;font-size:10px}.mobile-child-tabs small{display:block;color:var(--muted);font-size:8px;margin-top:3px}
  .parent-child-panel{display:none}.parent-child-panel.active{display:block}.mobile-child-name{display:flex;align-items:center;gap:10px;margin-bottom:11px}.mobile-child-name>span{width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#0b89a2,#174d77);color:#fff;display:grid;place-items:center;font-size:16px;font-weight:900}.mobile-child-name strong{display:block;font-size:12px}.mobile-child-name small{display:block;color:var(--muted);font-size:9px;margin-top:2px}
  .mobile-focus-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mobile-focus-grid>button{min-width:0;border:1px solid #e3eaf0;background:#fbfdff;border-radius:14px;padding:11px;text-align:right;color:var(--text);display:grid;gap:4px}.mobile-focus-grid small{font-size:8px;color:var(--muted)}.mobile-focus-grid strong{font-size:12px;line-height:1.55;overflow-wrap:anywhere}.mobile-focus-grid strong em{font-size:8px;font-style:normal;font-weight:500;color:var(--muted)}.mobile-focus-grid>button>em{font-size:8px;color:var(--muted);font-style:normal}
  .mobile-primary-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:11px}.mobile-primary-actions button{min-width:0;padding:10px 5px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:5px;font-size:9px}.mobile-primary-actions svg{width:17px;height:17px}.mobile-primary-actions b{background:#d9364f;color:#fff;border-radius:999px;padding:1px 5px;font-size:7px}
  .teacher-mobile-alerts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:11px}.teacher-mobile-alerts button{border:1px solid var(--line);background:#fbfdff;border-radius:14px;padding:10px;display:flex;align-items:center;gap:9px;text-align:right;color:var(--text)}.teacher-mobile-alerts button>span{width:34px;height:34px;border-radius:10px;background:#eaf8fb;color:#087f98;display:grid;place-items:center}.teacher-mobile-alerts svg{width:18px;height:18px}.teacher-mobile-alerts small{display:block;color:var(--muted);font-size:8px}.teacher-mobile-alerts strong{display:block;font-size:11px;margin-top:2px}
  .teacher-today-list{display:grid;gap:9px}.teacher-today-card{border:1px solid var(--line);border-right:4px solid #a7b4c1;border-radius:15px;padding:11px;background:#fff;display:grid;grid-template-columns:auto 1fr;gap:8px 11px}.teacher-today-card.state-current{border-right-color:#168255;background:#f7fcf9}.teacher-today-card.state-upcoming{border-right-color:#278ca2}.teacher-today-card.state-done{opacity:.72;background:#fafbfc}.teacher-period{min-width:72px}.teacher-period strong{display:block;font-size:9px;color:var(--navy)}.teacher-period small{display:block;font-size:8px;color:var(--muted);margin-top:3px}.teacher-class-info{min-width:0}.teacher-class-info>strong{display:block;font-size:12px}.teacher-class-info span{display:block;font-size:9px;color:var(--muted);margin:3px 0}.teacher-class-info small{display:block;font-size:8px;color:#6d7b8d}.teacher-class-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.teacher-class-actions button{padding:8px 4px;border-radius:10px;font-size:8px;display:flex;align-items:center;justify-content:center;gap:4px}.teacher-class-actions svg{width:15px;height:15px}
  .mobile-empty-state{border:1px dashed var(--line);border-radius:14px;padding:22px 12px;text-align:center;color:var(--muted);display:grid;gap:6px}.mobile-empty-state strong{color:var(--text);font-size:11px}.mobile-empty-state span{font-size:9px}.mobile-empty-state button{margin-top:6px}
  body[data-role="teacher"] #modal,body[data-role="parent"] #modal{width:calc(100vw - 14px);max-width:none;max-height:calc(100dvh - 14px);padding:19px 14px;border-radius:20px}
  body[data-role="teacher"] .page-head,body[data-role="parent"] .page-head{gap:8px}.page-head h2{font-size:17px}.page-head p{font-size:9px;line-height:1.7}
  body[data-role="teacher"] .head-actions,body[data-role="parent"] .head-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.head-actions>*{min-width:0;text-align:center}
  body[data-role="teacher"] .toolbar,body[data-role="parent"] .toolbar{padding:9px;border-radius:12px}
}
@media(max-width:390px){.mobile-focus-grid{grid-template-columns:1fr}.mobile-primary-actions{grid-template-columns:1fr 1fr}.mobile-primary-actions button:last-child:nth-child(odd){grid-column:1/-1}.teacher-class-actions{grid-template-columns:1fr}.teacher-mobile-alerts{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.mobile-install-card{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;border:1px solid #cce4ed;background:linear-gradient(135deg,#f2fbfd,#fff);border-radius:16px;padding:11px 12px}.mobile-install-card>span{width:38px;height:38px;border-radius:11px;background:#def4f8;color:#0b7890;display:grid;place-items:center}.mobile-install-card svg{width:20px;height:20px}.mobile-install-card strong{display:block;font-size:9px}.mobile-install-card small{display:block;color:var(--muted);font-size:7px;line-height:1.7;margin-top:2px}.mobile-install-card .primary{padding:8px 11px;font-size:8px}.mobile-install-card .link-btn{grid-column:2/4;justify-self:start;font-size:8px}}

/* v0.28.8 R1: compact parent dashboard on mobile */
@media(max-width:760px){
  body[data-role="parent"] .role-profile{min-height:auto;padding:11px 14px;gap:0;border-radius:15px;justify-content:flex-start}
  body[data-role="parent"] .role-profile-main{display:none}
  body[data-role="parent"] .role-profile .dashboard-welcome{width:100%;flex:0 0 auto}
  body[data-role="parent"] .role-profile .dashboard-welcome h2{margin:0;font-size:15px;line-height:1.65}
  body[data-role="parent"] .role-profile .dashboard-welcome p{display:none}
  body[data-role="parent"] .role-profile:after{width:105px;height:105px;border-width:21px;left:-48px;bottom:-76px}
  body[data-role="parent"] .role-dashboard{gap:10px}
  body[data-role="parent"] .parent-mobile-home{padding:11px;border-radius:17px}
  body[data-role="parent"] .parent-mobile-home .mobile-home-head{margin-bottom:9px}
  body[data-role="parent"] .parent-mobile-home .mobile-home-head h3{font-size:14px}
  body[data-role="parent"] .parent-mobile-home .mobile-icon-action{width:36px;height:36px;border-radius:11px}
  body[data-role="parent"] .parent-mobile-home .mobile-icon-action svg{width:18px;height:18px}
  body[data-role="parent"] .mobile-child-tabs{margin:0 -11px 8px;padding:0 11px 2px;gap:6px}
  body[data-role="parent"] .mobile-child-tabs button{min-width:118px;padding:7px 9px;border-radius:11px}
  body[data-role="parent"] .mobile-child-tabs strong{font-size:9px}
  body[data-role="parent"] .mobile-child-tabs small{font-size:7px;margin-top:2px}
  body[data-role="parent"] .mobile-child-name{gap:8px;margin-bottom:8px}
  body[data-role="parent"] .mobile-child-name>span{width:34px;height:34px;border-radius:11px;font-size:13px}
  body[data-role="parent"] .mobile-child-name strong{font-size:11px}
  body[data-role="parent"] .mobile-child-name small{font-size:8px}
  body[data-role="parent"] .mobile-focus-grid{gap:6px}
  body[data-role="parent"] .mobile-focus-grid>button{padding:8px 9px;border-radius:11px;gap:2px}
  body[data-role="parent"] .mobile-focus-grid small{font-size:7px}
  body[data-role="parent"] .mobile-focus-grid strong{font-size:10px;line-height:1.45}
  body[data-role="parent"] .mobile-focus-grid>button>em{font-size:7px}
  body[data-role="parent"] .mobile-primary-actions{gap:6px;margin-top:8px}
  body[data-role="parent"] .mobile-primary-actions button{padding:8px 4px;border-radius:10px;font-size:8px}
  body[data-role="parent"] .mobile-primary-actions svg{width:15px;height:15px}
  body[data-role="parent"] .dashboard-news{padding:13px}
  body[data-role="parent"] .dashboard-news .card-head{margin-bottom:8px}
  body[data-role="parent"] .dashboard-news .announcement{padding-block:8px}
  body[data-role="parent"] .mobile-install-card{padding:9px 10px;border-radius:13px}
}

/* v0.28.10: external-service resilience and diagnostics */
.tag.blue{background:#eaf6fb;color:#0b7188}.tag.gray{background:#eef2f6;color:#657487}
.system-services-card{overflow:hidden}.system-service-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.system-service-item{border:1px solid var(--line);border-radius:13px;padding:12px;background:#fbfdff;min-width:0}.system-service-item.status-healthy{background:#f7fcf9;border-color:#cfe9da}.system-service-item.status-degraded,.system-service-item.status-warning{background:#fffaf0;border-color:#ead9ae}.system-service-item.status-error{background:#fff7f8;border-color:#f0cdd2}.system-service-title{display:flex;align-items:center;justify-content:space-between;gap:7px}.system-service-title strong{font-size:11px}.system-service-item p{font-size:9px;color:var(--muted);line-height:1.8;margin:8px 0 5px}.system-service-item>small{display:block;color:#7e8b9a;font-size:8px;line-height:1.7}.system-service-item details{margin-top:6px}.system-service-item details summary{font-size:8px;color:#8a5d0d;cursor:pointer}.system-service-item details small{display:block;margin-top:5px;font-size:8px;line-height:1.7;overflow-wrap:anywhere}.system-services-foot{display:flex;justify-content:space-between;gap:12px;align-items:center;border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.system-services-foot span{font-size:9px;font-weight:800}.system-services-foot small{font-size:8px;color:var(--muted)}
@media(max-width:1100px){.system-service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.system-services-card .card-head{align-items:flex-start;flex-direction:column}.system-services-card .card-head button{width:100%}.system-service-grid{grid-template-columns:1fr}.system-services-foot{align-items:flex-start;flex-direction:column}}

/* v0.28.10 R1: Persian numerals + direct service-health access */
.dashboard-services-shortcut{display:flex;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(135deg,#f7fbff,#f4fbfa);border:1px solid #cfe5ec;border-radius:16px;padding:13px 16px;box-shadow:0 5px 18px rgba(19,44,78,.03)}
.dashboard-services-shortcut>div:first-child{display:flex;align-items:center;gap:12px;min-width:0}.dashboard-services-shortcut>div:first-child>span{width:42px;height:42px;border-radius:13px;background:#e1f3f7;color:var(--navy);display:grid;place-items:center;flex:none}.dashboard-services-shortcut small{display:block;color:var(--muted);font-size:9px}.dashboard-services-shortcut strong{display:block;margin:2px 0;font-size:12px;color:var(--navy)}.dashboard-services-shortcut p{margin:0;color:var(--muted);font-size:9px}.dashboard-services-actions{display:flex;gap:8px;flex:none}
.role-action-grid button[data-action="services"] .role-action-icon{background:#e4f5f3;color:#176e68}
@media(max-width:760px){.dashboard-services-shortcut{align-items:stretch;flex-direction:column;padding:12px}.dashboard-services-actions{display:grid;grid-template-columns:1fr 1fr}.dashboard-services-actions button{width:100%}}

/* MadreseSoft 0.29.0 — SaaS tenancy readiness */
.login-card label.tenant-locked input[name="schoolCode"]{background:#f2f7fb;color:#35536d;cursor:not-allowed}
.saas-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:24px 28px;margin-bottom:18px;border:1px solid #dbe7f1;border-radius:20px;background:linear-gradient(135deg,#f7fbff,#eef8fb)}
.saas-hero small,.saas-grid small{color:#60758a}.saas-hero h3{font-size:1.7rem;margin:6px 0}.saas-hero p{margin:0;color:#47647c;direction:ltr;text-align:right}
.saas-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}.saas-grid .card{margin:0;min-height:135px}.saas-grid strong{display:block;font-size:1.25rem;margin:8px 0}.saas-grid p{margin:0;color:#66798a;line-height:1.8}
.saas-checks{display:grid;gap:10px}.saas-checks article{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border:1px solid #e3ebf2;border-radius:14px;background:#fbfdff}.saas-checks article .tag{min-width:88px;text-align:center}.saas-checks strong{display:block;margin-bottom:4px}.saas-checks p{margin:0;color:#64788b;line-height:1.8}
@media(max-width:760px){.saas-hero{padding:18px;align-items:flex-start;flex-direction:column}.saas-grid{grid-template-columns:1fr}.saas-checks article{flex-direction:column}.saas-checks article .tag{min-width:0}}

/* v0.29.1: PostgreSQL migration foundation */
.postgres-migration-card{margin-bottom:18px}
.postgres-migration-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:14px}
.postgres-migration-grid article{padding:16px;border:1px solid #e3ebf2;border-radius:15px;background:#fbfdff;min-height:118px}
.postgres-migration-grid small,.postgres-migration-grid span{display:block;color:#64788b}.postgres-migration-grid strong{display:block;font-size:1.16rem;margin:8px 0}.postgres-migration-grid span{font-size:.82rem;line-height:1.8}
.postgres-migration-note{display:flex;align-items:flex-start;gap:9px;margin-top:14px;padding:13px 15px;border:1px solid #d9e8f3;border-radius:14px;background:#f4faff;line-height:1.9}.postgres-migration-note strong{white-space:nowrap}.postgres-migration-note span{color:#587186}
.postgres-latest{display:flex;align-items:center;gap:12px;margin-top:12px;padding:12px 14px;border:1px solid #dcebe3;border-radius:14px;background:#f7fcf9}.postgres-latest div{min-width:0}.postgres-latest strong,.postgres-latest small{display:block}.postgres-latest strong{direction:ltr;text-align:right;overflow-wrap:anywhere}.postgres-latest small{margin-top:3px;color:#66798a}
@media(max-width:1050px){.postgres-migration-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.postgres-migration-card .card-head{align-items:stretch;flex-direction:column}.postgres-migration-card #postgres-export-bundle{width:100%}.postgres-migration-grid{grid-template-columns:1fr}.postgres-migration-note{flex-direction:column}.postgres-migration-note strong{white-space:normal}.postgres-latest{align-items:flex-start;flex-direction:column}}

/* v0.29.2: PostgreSQL runtime + safe cutover */
