:root{--brand: #0B49C8;--brand-dark: #08388E;--teal: #19D5E4;--bg: #F6F8FC;--surface: #FFFFFF;--text: #20263A;--muted: #70778C;--border: #E4E8F0;--success: #2AA66F;--warning: #E6A23C;--danger: #D95050;--shadow: 0 10px 30px rgba(32, 38, 58, .08);--radius: 20px;--tap: 48px;--surface-soft: #F2F7FF;--surface-alt: var(--surface-soft)}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:radial-gradient(650px 430px at 92% 13%,rgba(75,161,255,.12),transparent 62%),radial-gradient(520px 360px at 12% 2%,rgba(255,255,255,.94),transparent 72%),linear-gradient(180deg,#f9fbff,#f3f7fd 58%,#f5f8fc)}button,input,select,textarea{font:inherit}button{cursor:pointer}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 18px #20263a0a}.detail-card{padding:15px}.page{padding:8px 16px 32px;max-width:760px;margin:0 auto}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:20px 0 10px}.section-title h2{margin:0;font-size:19px;letter-spacing:-.01em}.btn{min-height:var(--tap);border-radius:14px;border:1px solid transparent;font-weight:850;font-size:13px;letter-spacing:.02em;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn.primary{color:#fff;border:0;background:linear-gradient(120deg,var(--brand),var(--teal));box-shadow:0 10px 22px #0b49c838}.btn.ghost{background:var(--surface);border-color:var(--border);color:var(--brand-dark)}.btn.full{width:100%}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.link-btn{background:none;border:0;padding:0;color:var(--brand);font-weight:850;font-size:12.5px}.field{margin-top:14px}.field label{display:block;font-size:12px;font-weight:800;color:var(--muted)}.input{width:100%;margin-top:6px;min-height:var(--tap);border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:0 14px;font-size:15px}.input:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.field-hint{margin-top:6px;font-size:11px;color:var(--muted);line-height:1.5}.status-pill{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;font-size:10px;font-weight:850}.status-pill.green{background:#e4f6ec;color:#1c7a4f}.status-pill.amber{background:#fdf1de;color:#9a6512}.status-pill.blue{background:#e8f1fe;color:#2b5fa8}.status-pill.grey{background:#eef1f6;color:#5a6377}.avatar{width:38px;height:38px;flex:none;border-radius:12px;display:grid;place-items:center;background:var(--surface-soft);color:var(--brand-dark);font-weight:850;font-size:12px}.muted{color:var(--muted)}.stack{display:flex;flex-direction:column;gap:10px}[role=button].card{cursor:pointer;transition:border-color .18s,box-shadow .18s,transform .18s}[role=button].card:hover{border-color:#0b49c842;box-shadow:0 8px 22px #20263a14}[role=button].card:active{transform:scale(.995)}[role=button].card:focus-visible{outline:2px solid var(--brand);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{transition:none!important}}:root{--muted:#59647A;--danger:#B73743;--success:#17784A}html[data-theme=dark]{--bg:#0D1425;--surface:#172238;--surface-soft:#202F48;--text:#EDF3FF;--muted:#B2BED3;--border:#31415D;--brand:#70B1FF;--brand-dark:#94CAFF;--danger:#FF9AA3;--success:#76D7A3}html[data-theme=dark] body:before{background:radial-gradient(650px 430px at 92% 13%,#183351,transparent 62%)}a{text-decoration:none;color:var(--brand-dark)}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid var(--brand);outline-offset:3px}h1,h2,h3,p{overflow-wrap:anywhere}p{line-height:1.55}h3{margin:4px 0 10px}small{line-height:1.5}input[type=checkbox]{width:24px;height:24px;accent-color:var(--brand)}label:has(input[type=checkbox]){min-height:64px}.field-block{display:block;margin:12px 0 16px;font-size:13px;font-weight:700;color:var(--muted)}.field-block>.input{display:block}.input{min-width:0;max-width:100%}textarea.input{min-height:100px;padding-top:12px;resize:vertical}.two-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.two-columns>*{min-width:0}.row,.child-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.grow{flex:1;min-width:0}.grow strong,.grow small{display:block;overflow-wrap:anywhere}.grow small{color:var(--muted);margin:4px 0}.child-photo{width:54px;height:72px;border-radius:12px;object-fit:cover;flex:none}.card-link{color:var(--text)}.hero{border-radius:24px;padding:24px;background:linear-gradient(120deg,#112349,#0a3c78);color:#fff;margin:14px 0 18px;box-shadow:0 12px 30px #102a511a}.hero h2{font-size:26px;line-height:1.2;margin:12px 0}.hero small{font-size:11px;letter-spacing:.12em;color:#b7d8f7}.hero p{color:#d9e7f7;font-size:13px}.hero-number{display:block;font-size:56px;line-height:1.2;letter-spacing:-.04em;margin-top:8px}.hero-btn{background:#fff;color:#123970}.stat-card{display:flex;flex-direction:column;gap:8px;min-height:125px}.stat-card strong{font-size:32px;color:var(--brand-dark)}.stat-card span{font-size:13px;color:var(--muted);font-weight:650}.stack{margin:12px 0}.action-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.action-row>.btn{flex:1}.segmented{display:flex;background:var(--surface-soft);padding:5px;border:1px solid var(--border);border-radius:16px;gap:4px;margin:12px 0}.segmented button{flex:1;min-height:44px;padding:8px;border:0;border-radius:12px;background:transparent;color:var(--muted);font-weight:750;font-size:13px}.segmented .selected{background:var(--surface);color:var(--brand-dark);box-shadow:0 2px 8px #10234912}.connection{font-size:11px;color:var(--muted);text-align:right}.error{color:var(--danger)}.success-note{color:var(--success)}.alert-note{border-radius:10px;padding:10px;background:var(--surface-soft);font-size:12px;border-left:3px solid var(--warning)}.result-card{border-color:var(--success);animation:result-in .25s ease-out}.camera-frame{height:280px;position:relative;overflow:hidden;border-radius:18px;background:#101c30;color:#fff}.camera-frame video{width:100%;height:100%;object-fit:cover}.scanner-guide{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:18px}.scanner-guide>span{font-size:72px;line-height:1.2;color:#71e4ea}.scanner-guide p{font-size:12px;color:#c2d5e8}.qr-card{text-align:center}.qr-code{display:block;width:min(100%,300px);height:auto;margin:16px auto;border-radius:14px;background:#fff}.school-logo{width:48px;height:48px;object-fit:contain;flex:none}.app-header{display:flex;gap:14px;align-items:center;max-width:760px;margin:auto;padding:18px 16px 4px}.school-identity{display:flex;gap:12px;align-items:center;min-width:0;color:var(--text);flex:1}.school-identity strong{font-size:15px;line-height:1.3}.school-identity small{font-size:11px}.school-avatar{width:48px;height:48px;color:#fff;background:linear-gradient(145deg,#0b49c8,#119fc6);font-size:14px}.icon-button{width:48px;height:48px;flex:none;background:var(--surface);border:1px solid var(--border);border-radius:14px;color:var(--text);font-size:24px;display:grid;place-items:center}.live-status{max-width:760px;margin:auto;padding:6px 18px;display:flex;align-items:center;gap:6px;color:var(--muted);font-size:10px}.live-dot,.offline-dot{width:6px;height:6px;border-radius:50%;background:var(--success)}.offline-dot{background:var(--danger)}.app-page{padding-bottom:110px}.drawer-heading{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--border)}.drawer-heading h2{font-size:20px}.drawer-links{overflow:auto;flex:1;padding:10px 16px}.menu-link{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px;font-weight:700;color:var(--text)}.drawer-footer{padding:16px;display:grid;gap:10px;border-top:1px solid var(--border)}.powered{text-align:center;font-size:10px;color:var(--muted);margin:28px 0 4px}.auth-page{max-width:440px;padding-top:38px}.auth-brand{text-align:center;margin-bottom:24px}.auth-brand h1{font-size:24px}.auth-brand p{font-size:13px}.auth-page>.btn{margin-top:14px}.platform-link{display:block;font-size:11px;text-align:center;padding:18px}.wrap-anywhere{overflow-wrap:anywhere}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}summary{min-height:44px;padding:12px 0;cursor:pointer;font-size:13px;font-weight:700}.btn.full{margin-top:14px}.section-title>.btn{font-size:11px;padding:0 12px}.link-btn{min-height:44px}.status-pill{font-size:11px;white-space:nowrap}.btn.primary{background:linear-gradient(110deg,#0b49c8,#067e9c)}@keyframes result-in{0%{opacity:.4;transform:translateY(6px)}to{opacity:1;transform:none}}@media (max-width:360px){.page{padding-left:12px;padding-right:12px}.hero{padding:20px}.hero-number{font-size:48px}.section-title h2{font-size:18px}.two-columns{gap:8px}.section-title{flex-wrap:wrap}.school-identity strong{font-size:13px}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media print{.app-header,.bottom-nav,.live-status,.drawer-footer,.powered,button,.segmented{display:none!important}.app-page{padding:0}.card{box-shadow:none;break-inside:avoid}body{background:#fff;color:#000}.print-code{display:block}.qr-code{width:300px}}:root{--brand:#0B49C8;--brand-dark:#08388E;--teal:#19D5E4;--bg:#F6F8FC;--surface:#FFFFFF;--text:#20263A;--muted:#70778C;--border:#E4E8F0;--success:#2AA66F;--warning:#E6A23C;--danger:#D95050;--excused:#7859C5;--info:#3B82C4;--shadow:0 10px 30px rgba(32,38,58,.08);--radius:20px;--tap:48px;--hero-accent:#0B5FE6;--surface-soft:#F2F7FF;--surface-soft-2:#EAF3FF;--nav-surface:rgba(255,255,255,.96);--glass-border:rgba(30,74,140,.12)}:root{--ds-blue-700:#08388E;--ds-blue-600:#0B49C8;--ds-blue-500:#1E78FF;--ds-cyan-500:#19D5E4;--ds-teal-400:#2AE2C6;--ds-active-gradient:linear-gradient(90deg,#214AEC 0%,#2583FF 57%,#34DDD3 100%);--ds-bg:#F6F8FC;--ds-surface:#FFFFFF;--ds-surface-soft:#F7FAFE;--ds-surface-raised:#FFFFFF;--ds-text:#20263A;--ds-muted:#70778C;--ds-border:#E4E8F0;--ds-border-strong:#D8E2F0;--ds-shadow:0 10px 30px rgba(32,38,58,.08);--ds-shadow-soft:0 4px 18px rgba(32,38,58,.04);--ds-success:#2AA66F;--ds-warning:#E6A23C;--ds-danger:#D95050;--ds-excused:#7859C5;--ds-info:#3B82C4;--ds-r-xs:10px;--ds-r-sm:14px;--ds-r-md:18px;--ds-r-lg:22px;--ds-r-xl:28px;--ds-space-1:4px;--ds-space-2:8px;--ds-space-3:12px;--ds-space-4:16px;--ds-space-5:20px;--ds-space-6:24px;--ds-motion-fast:.18s;--ds-motion:.26s;--brand:var(--ds-blue-600);--brand-dark:var(--ds-blue-700);--teal:var(--ds-cyan-500);--bg:var(--ds-bg);--surface:var(--ds-surface);--text:var(--ds-text);--muted:var(--ds-muted);--border:var(--ds-border);--success:var(--ds-success);--warning:var(--ds-warning);--danger:var(--ds-danger);--excused:var(--ds-excused);--info:var(--ds-info);--shadow:var(--ds-shadow);--radius:var(--ds-r-lg);--hero-accent:#0B5FE6;--surface-soft:var(--ds-surface-soft);--surface-soft-2:#EAF3FF;--nav-surface:rgba(255,255,255,.96);--glass-border:rgba(30,74,140,.12);--qr-bg:linear-gradient(180deg,#FFFFFF,#F8FAFF);--qr-frame-shadow:inset 0 0 0 12px #fff}:root{--pp-cta-radius:14px;--pp-cta-radius-compact:10px;--pp-cta-height:48px;--pp-cta-height-compact:36px;--pp-cta-pad-x:16px;--pp-cta-pad-y:11px;--pp-cta-gap:8px;--pp-cta-font-size:14px;--pp-cta-font-size-compact:11px;--pp-cta-font-weight:850;--pp-cta-border:var(--ds-border);--pp-cta-shadow:var(--ds-shadow-soft);--pp-cta-primary-fill:var(--ds-active-gradient);--pp-cta-primary-text:#FFFFFF;--pp-cta-primary-border:rgba(55,118,255,.16);--pp-cta-secondary-bg:#EEF4FF;--pp-cta-secondary-text:var(--ds-blue-700);--pp-cta-secondary-border:#DCE8FB;--pp-cta-ghost-bg:var(--ds-surface);--pp-cta-ghost-text:var(--ds-text);--pp-cta-ghost-border:var(--ds-border);--pp-cta-danger-bg:#FFF0F0;--pp-cta-danger-text:#B93636;--pp-cta-success-bg:rgba(21,176,118,.14);--pp-cta-success-text:var(--success);--pp-cta-success-border:rgba(21,176,118,.28);--pp-cta-focus:0 0 0 3px rgba(11,73,200,.18)}:root{--pp-filter-bg:var(--ds-surface);--pp-filter-border:var(--ds-border);--pp-filter-text:var(--ds-muted);--pp-filter-active-bg:#20263A;--pp-filter-active-border:#20263A;--pp-filter-active-text:#FFFFFF;--pp-active-surface-renderer:internal-layer;--pp-role-active-bg:#173B9F;--pp-role-active-border:#173B9F;--pp-role-active-text:#FFFFFF;--pp-tab-active-bg:#FFFFFF;--pp-tab-active-border:#FFFFFF;--pp-tab-active-text:var(--ds-blue-700);--pp-subtab-active-text:var(--ds-blue-700);--pp-subtab-active-border:var(--ds-blue-700);--pp-switch-active-bg:#F6F8FF;--pp-switch-active-border:#B8C8F5;--pp-switch-active-text:var(--ds-text);--pp-select-active-bg:#F7F8FE;--pp-select-active-border:var(--ds-blue-700);--pp-select-active-text:var(--ds-text);--pp-menu-active-bg:#F1F5FF;--pp-menu-active-border:#DCE7FF;--pp-menu-active-text:#173B9F;--pp-side-active-bg:#EEF1FC;--pp-side-active-border:#EEF1FC;--pp-side-active-text:var(--ds-blue-700)}html[data-theme=dark]{--ds-bg:#031019;--ds-surface:rgba(7,28,45,.92);--ds-surface-soft:rgba(12,42,66,.78);--ds-surface-raised:rgba(10,35,57,.94);--ds-text:#FFFFFF;--ds-muted:#9EAFCA;--ds-border:rgba(77,130,182,.3);--ds-border-strong:rgba(86,148,208,.4);--ds-shadow:none;--ds-shadow-soft:inset 0 0 0 1px rgba(139,211,255,.04);--ds-success:#50E6A3;--ds-warning:#FFC642;--ds-danger:#FF657D;--ds-excused:#B570FF;--ds-info:#50C7FF;--brand:#19D5E4;--brand-dark:#1E78FF;--teal:#2AE2C6;--bg:var(--ds-bg);--surface:var(--ds-surface);--text:var(--ds-text);--muted:var(--ds-muted);--border:var(--ds-border);--success:var(--ds-success);--warning:var(--ds-warning);--danger:var(--ds-danger);--excused:var(--ds-excused);--info:var(--ds-info);--hero-accent:#2FD8F0;--surface-soft:var(--ds-surface-soft);--surface-soft-2:rgba(14,49,77,.82);--nav-surface:rgba(6,26,42,.88);--glass-border:rgba(79,139,194,.28);--qr-bg:linear-gradient(180deg,#F7FBFF,#E9F7FF);--qr-frame-shadow:inset 0 0 0 12px rgba(255,255,255,.96)}html[data-theme=dark]{--pp-cta-secondary-bg:rgba(16,60,104,.78);--pp-cta-secondary-text:#EAF6FF;--pp-cta-secondary-border:rgba(71,145,217,.3);--pp-cta-ghost-bg:rgba(9,33,52,.9);--pp-cta-ghost-text:#F6FBFF;--pp-cta-ghost-border:var(--ds-border);--pp-cta-success-bg:rgba(29,197,144,.14);--pp-cta-success-text:#7CFFB9;--pp-cta-success-border:rgba(29,197,144,.24);--pp-cta-primary-border:rgba(77,168,255,.22)}html[data-theme=dark]{--pp-filter-bg:rgba(8,31,59,.72);--pp-filter-border:rgba(82,133,198,.3);--pp-filter-text:#AFC1D9;--pp-filter-active-bg:linear-gradient(90deg,#1A48E5 0%,#1F7DFF 56%,#27D9D1 100%);--pp-filter-active-border:rgba(76,168,255,.34);--pp-filter-active-text:#FFFFFF;--pp-role-active-bg:linear-gradient(90deg,#1A48E5 0%,#1F7DFF 56%,#27D9D1 100%);--pp-role-active-border:rgba(76,168,255,.34);--pp-role-active-text:#FFFFFF;--pp-tab-active-bg:linear-gradient(90deg,#1A48E5 0%,#1F7DFF 56%,#27D9D1 100%);--pp-tab-active-border:rgba(76,168,255,.24);--pp-tab-active-text:#FFFFFF;--pp-subtab-active-text:#FFFFFF;--pp-subtab-active-border:#2AB4FF;--pp-switch-active-bg:rgba(18,62,101,.56);--pp-switch-active-border:rgba(82,166,218,.24);--pp-switch-active-text:#EAF6FF;--pp-select-active-bg:rgba(15,55,82,.94);--pp-select-active-border:#27BCD0;--pp-select-active-text:#F8FEFF;--pp-menu-active-bg:rgba(18,62,101,.56);--pp-menu-active-border:rgba(82,166,218,.24);--pp-menu-active-text:#6DE8F3;--pp-side-active-bg:rgba(18,62,101,.56);--pp-side-active-border:rgba(82,166,218,.24);--pp-side-active-text:#6DE8F3}.platform-logo.sm{width:22px;height:22px}.avatar.lg{width:72px;height:72px;font-size:20px}.avatar.sm{width:36px;height:36px;font-size:12px}.hero-name{color:var(--hero-accent)}.section-head{display:flex;align-items:end;justify-content:space-between;margin:24px 0 12px;gap:12px}.section-head a,.link-btn{color:var(--brand);font-weight:800;font-size:13px;text-decoration:none;background:none;border:0;padding:0}.student-card{padding:16px;position:relative;overflow:hidden;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.student-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--border);transition:background .22s ease}.student-card.in-school:before{background:var(--success)}.student-card.late:before{background:var(--warning)}.student-card.absent:before{background:var(--danger)}#parentHome .student-card{border-color:#2a56911a;box-shadow:0 10px 28px #395e9112}#parentHome .student-card .status-row{display:inline-flex;width:auto;padding:7px 11px;border-radius:999px;background:#eef2f7;margin-top:14px}#parentHome .student-card.in-school .status-row{background:#e3f8ec;color:#08783f}#parentHome .student-card.in-school .status-row .dot{box-shadow:0 0 0 5px #2aa66f14}#parentHome .student-card .insight{background:linear-gradient(135deg,#f4f8ff,#edf4ff);border:1px solid rgba(49,111,204,.06);color:#0b49c8}.quick-actions-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-action{min-height:74px!important;flex-direction:row!important;justify-content:flex-start!important;text-align:left!important;padding:13px!important;gap:10px!important;background:#ffffffeb!important}.quick-action .qa-icon{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#e8f2ff,#ddf7f9);color:#0757d8;font-size:18px;flex:0 0 auto}.ui-icon{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}.ui-icon.sm{width:18px;height:18px}.ui-icon.lg{width:23px;height:23px}.meta-line{display:flex;align-items:center;gap:9px;margin-top:8px;color:var(--muted);font-size:13px}.meta-line strong{color:var(--text)}.student-top{position:relative;padding-right:42px}.student-chevron{position:absolute;right:0;top:50%;transform:translateY(-50%);width:36px;height:36px;border:0;border-radius:50%;background:var(--surface-soft);color:var(--text);display:grid;place-items:center}.student-chevron .ui-icon{width:17px;height:17px}.icon-cta{display:flex;align-items:center;gap:10px;width:100%}.icon-cta .cta-label{flex:1;text-align:left}.icon-cta .cta-end{margin-left:auto}.history-btn{width:100%;justify-content:flex-start}.history-btn .cta-end{margin-left:auto}.link-btn.with-arrow{display:inline-flex;align-items:center;gap:5px}.quick-action{position:relative}.quick-action .qa-icon svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.quick-action .qa-end{margin-left:auto;color:var(--muted);display:grid;place-items:center}.quick-action .qa-end svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.quick-action .qa-copy{display:flex;flex-direction:column;align-items:flex-start;min-width:0}.quick-action .qa-copy strong{font-size:12px;color:var(--text)}.quick-action .qa-copy small{font-size:10px;color:var(--muted);margin-top:2px;font-weight:650}.student-top{display:flex;align-items:center;gap:12px}.student-name{font-weight:850;font-size:17px;letter-spacing:-.015em}.status-row{display:flex;align-items:center;gap:8px;margin-top:14px}.dot{width:9px;height:9px;border-radius:50%;background:var(--border);flex:0 0 auto}.dot.success{background:var(--success)}.dot.warning{background:var(--warning)}.dot.danger{background:var(--danger)}.dot.info{background:var(--info)}.dot.excused{background:var(--excused)}#parentHome .student-card.in-school .status-row .dot{animation:pulseDot 1.8s ease-out infinite}#parentHome .student-card:not(.in-school) .status-row .dot{background:var(--danger);box-shadow:0 0 0 4px #d950501a}.status{font-weight:850}.insight{margin-top:12px;padding:11px 12px;background:#f8faff;border-radius:14px;color:var(--brand-dark);font-size:13px;font-weight:700;display:flex;gap:8px;align-items:flex-start}.actions{display:flex;gap:10px;margin-top:14px}.class-row-top{display:flex;justify-content:space-between;gap:12px}.list{display:flex;flex-direction:column;gap:10px}.person-row{padding:13px 14px;display:flex;align-items:center;gap:11px}.tabs{display:grid;grid-template-columns:1fr 1fr;background:#eef1f6;border-radius:14px;padding:4px;margin:16px 0}.tab{border:0;background:transparent;border-radius:11px;padding:10px;font-weight:850;color:var(--muted);border:1px solid transparent}.tab.active{background:transparent;color:var(--pp-tab-active-text);border-color:var(--pp-tab-active-border);box-shadow:0 2px 10px #20263a14}.subtabs{display:flex;gap:20px;border-bottom:1px solid var(--border);margin-bottom:14px}.subtab{border:0;background:none;padding:10px 0 9px;color:var(--muted);font-weight:850;border-bottom:2px solid transparent}.subtab.active{color:var(--pp-subtab-active-text);border-bottom-color:var(--pp-subtab-active-border)}.student-pass{position:relative;overflow:hidden;background:linear-gradient(145deg,#07104f,#10166a 62%,#182078);color:#fff;border:0;border-radius:24px;box-shadow:0 16px 34px #0c16542e}.student-pass:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 84% 18%,rgba(25,213,228,.12),transparent 24%),radial-gradient(circle at 18% 100%,rgba(255,255,255,.07),transparent 30%);pointer-events:none}.pass-main{position:relative;z-index:1;padding:16px 16px 14px;display:grid;grid-template-columns:1fr auto;gap:14px;align-items:start}.pass-school{font-size:10px;font-weight:850;letter-spacing:.06em;text-transform:uppercase;color:#ffffffb8;margin-bottom:4px}.pass-class{font-size:12px;color:#ffffffb3;margin-bottom:16px}.student-switch{display:flex;align-items:center;gap:8px;border:0;background:transparent;color:#fff;padding:0;text-align:left;max-width:100%}.student-switch h2{font-size:22px;line-height:1.08;margin:0;letter-spacing:-.035em;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-switch .chev{width:28px;height:28px;border-radius:10px;background:#ffffff1c;display:grid;place-items:center;flex:0 0 auto;transition:transform .18s ease,background .18s ease}.student-switch:active .chev{transform:scale(.95);background:#ffffff2e}.student-switch .chev svg{width:16px;height:16px;stroke:#fff;fill:none;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}.pass-facts{display:grid;gap:8px;margin-top:16px}.pass-fact{display:grid;grid-template-columns:78px 1fr;gap:8px;align-items:center;font-size:13px}.pass-fact span:first-child{color:#ffffffb3}.pass-fact strong{font-size:14px;color:#fff}.pass-status{display:inline-flex;align-items:center;gap:7px}.pass-status i{width:9px;height:9px;border-radius:50%;background:#2fc277;box-shadow:0 0 0 4px #2fc2771f}.pass-avatar{width:88px;height:104px;border-radius:18px;background:linear-gradient(160deg,#e6eeff,#d7faf8);border:3px solid rgba(255,255,255,.18);display:grid;place-items:center;color:var(--brand-dark);font-size:28px;font-weight:900;box-shadow:0 12px 25px #0003}.pass-strip{position:relative;z-index:1;border-top:1px solid rgba(255,255,255,.16);background:#ffffff1f;padding:11px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.pass-strip strong{font-size:13px;color:#fff}.pass-strip span{font-size:11px;color:#ffffffb3}.attendance-loader{position:fixed;top:72px;right:0;bottom:76px;left:0;z-index:58;background:#f6f8fcf5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;pointer-events:none;transition:opacity .18s ease}.attendance-loader.show{opacity:1;pointer-events:auto}.attendance-loader-card{width:min(88vw,360px);background:#fff;border:1px solid var(--border);border-radius:24px;padding:24px;text-align:center;box-shadow:0 18px 50px #20263a1f}.loader-orbit{width:54px;height:54px;margin:0 auto 14px;border-radius:50%;border:4px solid #E8EEFA;border-top-color:var(--brand);border-right-color:var(--teal);animation:attendanceSpin .8s linear infinite}.attendance-loader-card strong{display:block;font-size:17px;letter-spacing:-.02em}.attendance-loader-card span{display:block;color:var(--muted);font-size:12px;line-height:1.5;margin-top:6px}.summary-row{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px}.mini-stat{padding:10px 6px;text-align:center}.mini-stat strong{display:block;font-size:17px}.mini-stat span{font-size:10px;color:var(--muted);font-weight:700}.calendar{padding:14px}.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.cal-title{font-weight:900;font-size:18px}.cal-arrow{width:38px;height:38px;border:0;background:#f3f5fa;border-radius:12px;font-size:22px}.weekdays,.days{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;text-align:center}.weekdays{font-size:11px;color:var(--muted);font-weight:800;margin-bottom:7px}.day.late{background:#fff2d8;color:#986100}.legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;font-size:10px;color:var(--muted);font-weight:700}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:7px;height:7px;border-radius:50%;display:inline-block}.timeline{display:flex;flex-direction:column;gap:0}.scanner.success .scan-frame{transform:scale(.94);border-color:#63d49d}.scanner.success .scan-line{display:none}.form-field{margin-top:14px}.form-field label{font-size:12px;font-weight:850;color:var(--muted);display:block;margin-bottom:7px}.details-grid{display:grid;gap:10px}@media (min-width: 900px){.calendar{max-width:520px}}@media (min-width: 900px){.summary-row{max-width:620px}}.role-section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:20px 0 10px}.role-section-title h2{font-size:18px}.attention-row{position:relative;overflow:hidden}.attention-row .row-icon{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:var(--surface-soft);color:var(--brand);flex:0 0 auto}.attention-row .row-icon svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.attention-row .row-chevron{color:var(--muted);display:grid;place-items:center}.attention-row .row-chevron svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.premises-side{padding:14px;display:flex;flex-direction:column;justify-content:center}.premises-side strong{font-size:20px}.premises-side span{font-size:10px;color:var(--muted);margin-top:2px}.person-row{border-color:#2a56911a;box-shadow:0 6px 18px #395e910a}.tabs{background:#eef1f6}.tab.active{background:transparent;color:var(--pp-tab-active-text);border-color:var(--pp-tab-active-border)}.status-pill.red{background:#fcecec;color:#a33}html[data-theme=dark] h1,html[data-theme=dark] h2,html[data-theme=dark] h3,html[data-theme=dark] .student-name,html[data-theme=dark] .status,html[data-theme=dark] .school-brand-copy strong,html[data-theme=dark] .inner-header h1,html[data-theme=dark] .cal-title{color:#fff}html[data-theme=dark] .muted,html[data-theme=dark] .eyebrow,html[data-theme=dark] .school-brand-copy small,html[data-theme=dark] .weekdays,html[data-theme=dark] .legend{color:var(--ds-muted)}html[data-theme=dark] .hero-name{background:linear-gradient(90deg,#fff,#70d7ff 34%,#27baff 62%,#2ce0de);-webkit-background-clip:text;background-clip:text;color:transparent}html[data-theme=dark] #parentHome .student-card{background:linear-gradient(180deg,#08233ebd,#061a2dd1);border:1px solid rgba(74,147,210,.28);border-radius:24px;box-shadow:var(--ds-shadow-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}html[data-theme=dark] #parentHome .student-card.in-school{border-color:#43e0c847}html[data-theme=dark] #parentHome .student-card:before{width:4px;background:#5a8cbf42}html[data-theme=dark] #parentHome .student-card.in-school:before{background:linear-gradient(180deg,#62f0bb,#1bd9e6)}html[data-theme=dark] #parentHome .student-chevron{background:#112d4e9e;border:1px solid rgba(82,135,190,.18);color:#e8f4ff}html[data-theme=dark] #parentHome .status-row{background:#35446094;border:1px solid rgba(101,143,177,.16);color:#f1f4f8}html[data-theme=dark] #parentHome .student-card.in-school .status-row{background:#1c714a8c;border-color:#54eea724;color:#effff7}html[data-theme=dark] #parentHome .student-card.in-school .status-row .dot{background:var(--ds-success);animation:pulseDot 1.8s ease-out infinite}html[data-theme=dark] #parentHome .student-card:not(.in-school) .status-row .dot{background:var(--ds-danger);box-shadow:0 0 0 4px #ff657d1f}html[data-theme=dark] #parentHome .meta-line{color:#c3d1e0}html[data-theme=dark] #parentHome .meta-line strong{color:#fff}html[data-theme=dark] #parentHome .insight{background:#103560b8;border:1px solid rgba(72,137,212,.28);color:#e7f1ff}html[data-theme=dark] .quick-action{background:linear-gradient(180deg,#082036e0,#06182ae0)!important;border:1px solid rgba(78,132,185,.26)!important;box-shadow:var(--ds-shadow-soft)!important;color:#fff!important}html[data-theme=dark] .quick-action .qa-icon{background:radial-gradient(circle at 30% 20%,#2cabff3d,#08416ff2);border:1px solid rgba(71,183,255,.26);color:#43d9ff}html[data-theme=dark] .quick-action .qa-copy strong{color:#fff}html[data-theme=dark] .quick-action .qa-copy small,html[data-theme=dark] .quick-action .qa-end{color:#a8b7ca}html[data-theme=dark] .student-pass{background:linear-gradient(180deg,#0a2750f5,#051b3cf7);border:1px solid rgba(99,207,255,.5);box-shadow:inset 0 0 0 1px #c4f5ff14,0 0 28px #1c97ff1a}html[data-theme=dark] .pass-school{color:#c9d9f5}html[data-theme=dark] .pass-class,html[data-theme=dark] .pass-fact span:first-child{color:#afc0db}html[data-theme=dark] .pass-avatar{background:linear-gradient(145deg,#e0eaff,#d7fbf5);color:#0b49c8;border-color:#e4fbff80;box-shadow:none}html[data-theme=dark] .student-switch .chev{background:#173f6eb8;border:1px solid rgba(88,141,214,.22)}html[data-theme=dark] .pass-strip{background:linear-gradient(180deg,#122758bd,#0d1f46c7);border-top-color:#76bfff2e}html[data-theme=dark] .tabs{background:transparent;border:0;gap:10px;padding:0}html[data-theme=dark] .tab{background:#0a2136a8;border:1px solid rgba(73,123,171,.28);color:#91a5c0;border-radius:18px}html[data-theme=dark] .mini-stat{background:linear-gradient(180deg,#091f31f0,#051625f0);border-color:var(--ds-border)}html[data-theme=dark] .mini-stat strong{color:#fff}html[data-theme=dark] .mini-stat span{color:#a1b4ce}html[data-theme=dark] .subtabs{border-bottom-color:#4d7aa55c}html[data-theme=dark] .subtab{color:#8699b6}html[data-theme=dark] .cal-arrow{background:#0b2238c2;border:1px solid rgba(72,123,171,.3);color:#f2fbff}html[data-theme=dark] .day.late{background:radial-gradient(circle at 30% 25%,#ffc63a4d,#7a540ebd);color:#ffd972;border:1px solid rgba(255,198,58,.46)}html[data-theme=dark] .status-pill.red{background:#76122861;color:#ff8ba0}@media (prefers-reduced-motion: reduce){#parentHome .student-card.in-school .status-row .dot{animation:none!important}}.alert-case{padding:16px;display:flex;flex-direction:column;gap:12px}.alert-case-top{display:flex;align-items:flex-start;gap:12px}.alert-case-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;align-items:stretch}.alert-case-actions .action-btn{width:100%;min-width:0}.alert-case.resolved{gap:8px}.alert-case.resolved .alert-case-actions{display:none!important;height:0!important;margin:0!important;padding:0!important;overflow:hidden!important}.alert-case.resolved .alert-case-top{align-items:center}.contacted-meta{display:none;font-size:11px;color:var(--success);font-weight:750;margin-top:-2px}.alert-case.resolved .contacted-meta{display:block}.alert-case-actions{grid-template-columns:1fr 1fr}.premises-list-title{align-items:center}.premises-list{gap:12px}.premises-footer-cta{padding:14px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:2px}.premises-footer-cta strong{display:block;font-size:15px;line-height:1.2;color:var(--text)}.premises-footer-cta small{display:block;margin-top:4px;font-size:11px;line-height:1.4;color:var(--muted)}.premises-footer-cta .btn{min-width:176px}html[data-theme=dark] .premises-footer-cta small{color:var(--muted)}.premises-footer-cta{flex-direction:column;align-items:stretch}.premises-footer-cta .btn{width:100%;min-width:0}.screen .page,.screen .page>*,.screen .card,.screen .role-hero,.screen .list,.screen .details-grid{box-sizing:border-box;min-width:0;max-width:100%}.topbar,.inner-header,.brand,.section-head,.student-top,.meta-line,.status-row,.actions,.profile-head,.cal-head,.sheet-head,.guardian-card,.appearance-row,.appearance-copy,.menu-head,.menu-meta,.menu-link,.drawer-theme-row,.power-chip,.role-hero-top,.role-section-title,.gate-status-strip,.scanner-action,.tenant-card,.super-brand-row,.priority-link,.class-row-top,.person-row,.kv,.pass-strip,.switch-row,.alert-case-top{min-width:0;max-width:100%}.quick-actions-grid,.head-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-row{grid-template-columns:repeat(4,minmax(0,1fr))}.tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.pass-main{grid-template-columns:minmax(0,1fr) auto}.pass-fact{grid-template-columns:minmax(64px,78px) minmax(0,1fr)}.weekdays,.days{grid-template-columns:repeat(7,minmax(0,1fr));gap:clamp(3px,1.6vw,8px)}.calendar{width:100%;max-width:100%;min-width:0}.person-row{width:100%;box-sizing:border-box}.class-row-top>div:first-child{min-width:0;flex:1}.alert-case{min-width:0;max-width:100%}.alert-case-actions{grid-template-columns:repeat(2,minmax(0,1fr));max-width:100%}.quick-action{min-width:0;padding:12px 10px}.quick-action .qa-icon{flex:0 0 auto}.quick-action .qa-copy strong{font-size:12px}.quick-action .qa-copy small{font-size:10px}.summary-row{gap:6px}.mini-stat{padding:9px 3px}.mini-stat strong{font-size:15px}.mini-stat span{font-size:9px}.calendar{padding:12px 10px}:is(.btn,.action-btn){min-height:var(--pp-cta-height);padding:var(--pp-cta-pad-y) var(--pp-cta-pad-x);border-radius:var(--pp-cta-radius);border-color:var(--pp-cta-border);font-size:var(--pp-cta-font-size);font-weight:var(--pp-cta-font-weight);display:inline-flex;align-items:center;justify-content:center;gap:var(--pp-cta-gap);box-shadow:var(--pp-cta-shadow);transition:transform .12s ease,opacity .12s ease,box-shadow .18s ease,border-color .18s ease,color .18s ease}:is(.btn,.action-btn):active{transform:scale(.98)}:is(.btn,.action-btn)[disabled]{opacity:.55;cursor:not-allowed;transform:none}:is(.btn.primary,.action-btn.primary){background:transparent!important;color:var(--pp-cta-primary-text)!important;border-color:var(--pp-cta-primary-border)!important}:is(.btn.primary,.action-btn.primary):before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:var(--pp-cta-primary-fill);z-index:-1;pointer-events:none}.btn.secondary{background:var(--pp-cta-secondary-bg)!important;color:var(--pp-cta-secondary-text)!important;border-color:var(--pp-cta-secondary-border)!important}.btn.ghost:not(.quick-action):not(.scanner-action),.action-btn.ghost{background:var(--pp-cta-ghost-bg)!important;color:var(--pp-cta-ghost-text)!important;border-color:var(--pp-cta-ghost-border)!important}.action-btn.done{background:var(--pp-cta-success-bg)!important;color:var(--pp-cta-success-text)!important;border-color:var(--pp-cta-success-border)!important}:is(button.card,.priority-link,.student-switch){box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-clip:padding-box;overflow:hidden;max-width:100%}:is(.btn,.action-btn) svg{flex:0 0 auto;stroke:currentColor;fill:none;stroke-linecap:round;stroke-linejoin:round}.action-btn svg{width:18px;height:18px;stroke-width:2}.alert-case-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:10px;width:100%}.alert-case-actions>:is(.btn,.action-btn){width:100%;min-width:0;max-width:100%}:is(.quick-action,.scanner-action){box-sizing:border-box!important;overflow:hidden!important;background-clip:padding-box!important}.alert-case-actions{grid-template-columns:1fr}:is(.btn,.action-btn){max-width:100%;min-width:0;font-size:13px;padding:10px 12px}.tab.active:before{background:var(--pp-tab-active-bg)}.register-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:6px 0 12px}.attendance-table-shell{overflow:hidden;padding:0}.attendance-table{width:100%;border-collapse:collapse;table-layout:fixed}.attendance-table th{text-align:left;padding:11px 12px;font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);background:var(--surface-alt);border-bottom:1px solid var(--border)}.attendance-table td{padding:13px 12px;border-bottom:1px solid var(--border);font-size:12px;color:var(--text);vertical-align:middle}.attendance-table tbody tr:last-child td{border-bottom:0}.attendance-table .student-cell{display:flex;align-items:center;gap:9px;min-width:0}.attendance-table .student-cell .avatar{flex:0 0 auto}.attendance-table .student-copy{min-width:0}.attendance-table .student-copy strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attendance-table .student-copy small{display:block;font-size:10px;color:var(--muted);margin-top:2px}.attendance-table .time-cell{font-variant-numeric:tabular-nums;font-weight:800}.attendance-table tr[hidden]{display:none!important}html[data-theme=dark] .attendance-table th{background:#0c2741b8}html[data-theme=dark] .attendance-table td{border-color:#5184b433}.attendance-table-shell{background:transparent;border:0;box-shadow:none;overflow:visible}.attendance-table,.attendance-table tbody{display:block}.attendance-table thead{display:none}.attendance-table tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px 12px;margin-bottom:10px;padding:13px 14px;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--ds-shadow-soft)}.attendance-table td{padding:0;border:0;min-width:0}.attendance-table td:nth-child(1){grid-column:1/-1}.attendance-table td:nth-child(2):before{content:"Class · ";color:var(--muted);font-weight:600}.attendance-table td:nth-child(3){text-align:right}.attendance-table td:nth-child(3):before{content:"Check-in · ";color:var(--muted);font-weight:600}.attendance-table td:nth-child(4){grid-column:1}.attendance-table td:nth-child(5){grid-column:2;text-align:right;color:var(--muted)}html[data-theme=dark] .attendance-table tr{background:linear-gradient(180deg,#082239eb,#05192bf0);border-color:#5184b442}.register-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 0}.register-meta strong{font-size:15px}.register-meta span{font-size:11px;color:var(--muted)}.register-meta .register-actions{display:flex;align-items:center;gap:10px}.register-pagination{display:flex;flex-direction:column;align-items:center;gap:8px;margin:4px 0 6px}.register-pagination .btn{min-width:180px}.register-pagination small{color:var(--muted);font-size:10px}.register-pagination[hidden]{display:none!important}.no-register-results{padding:28px 18px;text-align:center;color:var(--muted);display:none}.no-register-results.show{display:block}.no-register-results strong{display:block;color:var(--text);font-size:15px;margin-bottom:5px}.register-meta{align-items:flex-start}.register-meta .register-actions{flex:0 0 auto}.student-profile-context{display:none;align-items:center;gap:7px;margin-bottom:8px;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:#ffffffb8}.student-profile-context.show{display:flex}.student-profile-context .context-dot{width:7px;height:7px;border-radius:50%;background:#59e3ee;box-shadow:0 0 0 4px #59e3ee1a}#studentProfile.staff-attendance-view .student-switch{cursor:default;pointer-events:none}#studentProfile.staff-attendance-view .student-switch .chev{display:none}#studentProfile.staff-attendance-view .pass-school{margin-bottom:5px}#studentProfile.staff-attendance-view .student-pass{border-color:#48abe147}.activity-pagination{display:flex;flex-direction:column;align-items:center;gap:7px;padding-top:14px;margin-top:12px;border-top:1px solid var(--border)}.activity-pagination .btn{min-width:150px}.activity-pagination small{color:var(--muted);font-size:10px}.activity-pagination[hidden]{display:none!important}html[data-theme=dark] .activity-pagination{border-color:#5184b433}.report-analytics{display:flex;flex-direction:column;gap:14px}.analytics-hero{padding:18px;border-radius:24px;background:linear-gradient(135deg,#0b2b78,#0b49c8 58%,#12b9d1 118%);color:#fff;overflow:hidden;position:relative}.analytics-hero:after{content:"";position:absolute;width:210px;height:210px;border-radius:50%;right:-90px;top:-90px;border:28px solid rgba(255,255,255,.08)}.analytics-hero .eyebrow{color:#ffffffbd}.analytics-hero h2{color:#fff;margin:4px 0}.analytics-hero p{color:#ffffffb8;font-size:12px;max-width:330px}.rank-podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.rank-card{min-width:0;padding:14px 10px 12px;text-align:center;border-radius:18px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--ds-shadow-soft)}.rank-card .rank-medal{width:34px;height:34px;border-radius:50%;margin:0 auto 9px;display:grid;place-items:center;font-size:13px;font-weight:950;color:#fff}.rank-card.first .rank-medal{background:linear-gradient(145deg,#e8b837,#f7d96c)}.rank-card.second .rank-medal{background:linear-gradient(145deg,#94a0b4,#c6ceda)}.rank-card.third .rank-medal{background:linear-gradient(145deg,#b66c3b,#e1a16e)}.rank-card strong{display:block;font-size:12px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rank-card small{display:block;font-size:9px;color:var(--muted);margin-top:3px}.rank-card .rank-score{display:block;margin-top:8px;font-size:17px;font-weight:950;color:var(--brand)}.late-podium .rank-card .rank-score{color:var(--danger)}.class-rank-list{display:flex;flex-direction:column;gap:9px}.class-rank-row{padding:13px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.class-rank-copy{min-width:0}.class-rank-copy strong{display:block;font-size:13px}.class-rank-copy small{display:block;color:var(--muted);font-size:10px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.class-rank-value{font-size:13px;font-weight:950;color:var(--success)}.class-rank-value.late{color:var(--danger)}.analytics-toggle{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;background:var(--surface-soft);border:1px solid var(--border);border-radius:16px}.analytics-toggle button{min-height:40px;border:0;border-radius:12px;background:transparent;color:var(--muted);font-size:12px;font-weight:900}.analytics-toggle button.active{background:var(--pp-tab-active-bg);color:var(--pp-tab-active-text);border:1px solid var(--pp-tab-active-border);box-shadow:var(--ds-shadow-soft)}.report-list{margin-top:6px}.report-list .person-row{cursor:pointer}html[data-theme=dark] .rank-card{background:linear-gradient(180deg,#082239eb,#05192bf0);border-color:#5184b442}html[data-theme=dark] .rank-card .rank-score{color:#5ceaf4}html[data-theme=dark] .late-podium .rank-card .rank-score{color:#ff8898}html[data-theme=dark] .analytics-toggle{background:#081f36c7;border-color:#5184b43d}.rank-podium{gap:6px}.rank-card{padding:12px 6px}.rank-card strong{font-size:11px}.rank-card .rank-score{font-size:15px}.head-profile-summary .avatar.lg{flex:0 0 auto}.profile-field-note{margin-top:6px;color:var(--muted);font-size:10px;line-height:1.4}.profile-readonly-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--border)}.profile-readonly-row:last-child{border-bottom:0}.profile-readonly-row span{color:var(--muted);font-size:12px;min-width:0}.profile-readonly-row strong{text-align:right;font-size:12px;min-width:0;overflow-wrap:anywhere}.rank-card.analytics-clickable,.class-rank-row.analytics-clickable{cursor:pointer;position:relative;transition:transform .16s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease}.rank-card.analytics-clickable:hover,.class-rank-row.analytics-clickable:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--brand) 34%,var(--border));box-shadow:0 12px 28px #193f6c1a}.rank-card.analytics-clickable:active,.class-rank-row.analytics-clickable:active{transform:translateY(0) scale(.99)}.rank-card.analytics-clickable:focus-visible,.class-rank-row.analytics-clickable:focus-visible{outline:0;box-shadow:0 0 0 3px var(--pp-cta-focus),var(--ds-shadow-soft)}.analytics-card-hint{display:inline-flex;align-items:center;justify-content:center;gap:4px;margin-top:7px;color:var(--muted);font-size:8px;font-weight:850;letter-spacing:.03em}.analytics-card-hint svg,.class-rank-chevron svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.class-rank-row.analytics-clickable{grid-template-columns:minmax(0,1fr) auto 22px}.class-rank-chevron{width:22px;height:22px;display:grid;place-items:center;color:var(--muted)}html[data-theme=dark] .rank-card.analytics-clickable:hover,html[data-theme=dark] .class-rank-row.analytics-clickable:hover{border-color:#4ed5ea61;box-shadow:0 12px 28px #0000002e}@media (prefers-reduced-motion: reduce){.rank-card.analytics-clickable,.class-rank-row.analytics-clickable{transition:none!important}}.analytics-class-select{width:100%;height:46px;border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:0 12px;font-size:11px;font-weight:800}html[data-theme=dark] .analytics-filter-card,html[data-theme=dark] .analytics-student-result,html[data-theme=dark] .analytics-class-select{background:linear-gradient(180deg,#082239f0,#05192bf5);border-color:#5184b442}.student-analytics{display:none;flex-direction:column;gap:12px}.student-analytics.show{display:flex}.student-analytics-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.student-analytics-stat{min-width:0;padding:12px 8px;text-align:center}.student-analytics-stat strong{display:block;font-size:18px;line-height:1;letter-spacing:-.025em}.student-analytics-stat span{display:block;margin-top:6px;color:var(--muted);font-size:8px;line-height:1.2;font-weight:850}.student-analytics-chart-card{padding:16px}.student-analytics-chart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.student-analytics-chart-head h3{margin:0;font-size:16px}.student-analytics-chart-head p{margin:4px 0 0;color:var(--muted);font-size:10px}.student-analytics-period{flex:0 0 auto;min-height:27px;padding:6px 9px;border-radius:999px;border:1px solid var(--border);background:var(--surface-soft);color:var(--muted);font-size:8px;font-weight:900}.student-analytics-chart{min-height:230px;width:100%;overflow:hidden}.student-analytics-chart svg{display:block;width:100%;height:auto}.student-analytics-insight{padding:14px 15px;display:flex;align-items:flex-start;gap:10px}.student-analytics-insight-icon{flex:0 0 auto;width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:color-mix(in srgb,var(--brand) 10%,var(--surface));color:var(--brand)}.student-analytics-insight-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.student-analytics-insight-copy{min-width:0}.student-analytics-insight-copy strong{display:block;font-size:12px}.student-analytics-insight-copy p{margin:4px 0 0;color:var(--muted);font-size:10px;line-height:1.45}#studentProfile.staff-attendance-view .student-analytics-parent-note{display:none}html[data-theme=dark] .student-analytics-period{background:#0b2241b8;border-color:#5184b438}.student-analytics-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.premises-count-with-scan{display:flex!important;align-items:center;justify-content:space-between;gap:16px}.premises-count-copy{min-width:0;display:flex;flex-direction:column}.premises-count-with-scan{gap:10px}#studentProfile .tabs{display:flex!important;grid-template-columns:none!important;flex-wrap:nowrap!important;align-items:stretch;gap:7px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scrollbar-width:none;padding:4px}#studentProfile .tabs::-webkit-scrollbar{display:none}#studentProfile .tabs .tab{flex:0 0 44%;min-width:142px;max-width:210px;white-space:nowrap;scroll-snap-align:start}html[data-theme=dark] #studentProfile .tabs{gap:8px;padding:0}#studentProfile .tabs:after{content:"";flex:0 0 3px}@media (min-width: 520px){#studentProfile .tabs .tab{flex:1 1 0;min-width:0;max-width:none}}@media (min-width: 520px){#studentProfile .tabs{overflow-x:visible}}@media (min-width: 520px){#studentProfile .tabs:after{display:none}}.premises-count-with-scan .premises-count-copy{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left}#studentProfile .tabs{gap:6px!important;padding:2px!important;scroll-padding-inline:2px}#studentProfile .tabs .tab{flex:0 0 38%!important;min-width:110px!important;max-width:none!important;padding-inline:10px}#studentProfile .tabs:after{flex-basis:2px!important}.gate-activity-icon.late{color:var(--warning)}.access-request-section-title{margin-top:4px}.access-request-list{display:flex;flex-direction:column;gap:9px;margin-bottom:14px}.access-request-empty{padding:14px}.access-request-empty strong{display:block;font-size:11px}.access-request-empty span{display:block;margin-top:4px;color:var(--muted);font-size:9px}.access-request-card-head .person-main{flex:1;min-width:0}.access-request-card-actions .action-btn{flex:1}.super-access-request-top .person-main{flex:1;min-width:0}.super-access-request-actions .action-btn{flex:1}.topbar-actions{display:flex;align-items:center;gap:9px}.actor-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:999px;font-size:8.5px;font-weight:850;letter-spacing:.01em;white-space:nowrap;border:1px solid var(--border);background:var(--surface-soft);color:var(--muted)}.actor-tag svg{width:11px;height:11px;flex:none;fill:none;stroke:currentColor;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}.actor-tag.staff{color:#2b5fa8;border-color:#2b5fa842;background:#2b5fa812}.actor-tag.guardian{color:#1c7f74;border-color:#1c7f7442;background:#1c7f7412}html[data-theme=dark] .actor-tag.staff{color:#8ec2ff;border-color:#8ec2ff47;background:#8ec2ff17}html[data-theme=dark] .actor-tag.guardian{color:#68dcce;border-color:#68dcce47;background:#68dcce17}.timeline-content .actor-tag{margin-top:6px}@media (max-width:360px){.actor-tag{font-size:8px;padding:3px 6px}.actor-tag .actor-tag-label{display:none}.actor-tag{gap:0}}.school-profile-page{display:flex;flex-direction:column;gap:12px}.school-identity-card{padding:16px;display:flex;flex-direction:column;gap:14px}.school-logo-row{display:flex;align-items:center;gap:13px}.school-logo-preview{width:62px;height:62px;flex:none;border-radius:18px;display:grid;place-items:center;font-size:21px;font-weight:850;color:#fff;background:linear-gradient(145deg,#0b49c8,#119fc6);box-shadow:0 8px 20px #0b49c838}.school-logo-copy{min-width:0;flex:1}.school-logo-copy strong{display:block;font-size:14px}.school-logo-copy small{display:block;color:var(--muted);font-size:9px;margin-top:4px;line-height:1.45}.school-logo-actions{display:flex;gap:7px;flex-wrap:wrap}.school-theme-check{margin-top:2px;padding:10px 11px;border-radius:13px;background:var(--surface-soft);color:var(--muted);font-size:9px;line-height:1.5}.school-theme-check strong{color:var(--text)}.class-manager-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}.policy-grid{display:flex;flex-direction:column;gap:11px;margin-top:11px}.policy-warning{margin-top:10px;padding:11px 12px;border-radius:13px;border:1px solid rgba(214,150,40,.26);background:#d6962814;color:var(--muted);font-size:9px;line-height:1.5}.policy-warning strong{color:var(--text);display:block;margin-bottom:3px}.staff-capability-note{padding:12px 13px;border-radius:14px;background:var(--surface-soft);color:var(--muted);font-size:9px;line-height:1.5}.staff-capability-note strong{color:var(--text)}.register-add-link svg{width:14px;height:14px;flex:none;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}.register-add-link[hidden]{display:none}.enrol-page{display:flex;flex-direction:column;gap:12px}.enrol-page>.sticky-action{margin-top:78px}.enrol-form-grid{display:flex;flex-direction:column;gap:14px;margin-top:13px}.enrol-form-grid>.form-field{margin-top:0}.guardian-block .form-field{margin-top:0}.guardian-block .form-field+.form-field{margin-top:12px}.photo-field{display:flex;align-items:center;gap:14px}.photo-preview{width:66px;height:88px;flex:none;border-radius:12px;display:grid;place-items:center;overflow:hidden;background:var(--surface-soft);border:1px solid var(--border);font-size:19px;font-weight:850;color:var(--brand-dark)}.photo-meta{display:inline-flex;align-items:center;gap:5px;margin-top:7px;padding:3px 8px;border-radius:999px;border:1px solid rgba(28,127,116,.26);background:#1c7f7412;color:#1c7f74;font-size:8.5px;font-weight:850}html[data-theme=dark] .photo-meta{color:#68dcce;border-color:#68dcce47;background:#68dcce17}.photo-preview img{width:100%;height:100%;object-fit:cover;display:block}html[data-theme=dark] .photo-preview{color:#8ec2ff}.photo-field-copy{min-width:0;flex:1}.photo-field-actions{display:flex;gap:7px;flex-wrap:wrap}.photo-hint{display:block;color:var(--muted);font-size:9px;line-height:1.5;margin-top:7px}.qr-frame{margin:16px auto 14px;width:min(100%,240px);aspect-ratio:1;border-radius:22px;border:1px solid var(--border);background:var(--qr-bg);display:grid;place-items:center;box-shadow:var(--qr-frame-shadow)}.qr-frame .qr-pattern{width:72%;aspect-ratio:1;border-radius:8px;opacity:.9;mix-blend-mode:multiply;background:repeating-linear-gradient(90deg,#20263A 0 10px,transparent 10px 16px),repeating-linear-gradient(#20263a 0,#20263a 10px,#fff 10px,#fff 16px)}.record-edit-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.record-edit-head h3{margin:0}@keyframes pulseDot{0%{transform:scale(1);box-shadow:0 0 #3fe29e57}60%{transform:scale(1.02);box-shadow:0 0 0 8px #2aa66f00}to{transform:scale(1);box-shadow:0 0 #2aa66f00}}@keyframes attendanceSpin{to{transform:rotate(360deg)}}@keyframes ppLiveArrivalIn{0%{opacity:0;transform:translateY(-26px) scale(.975)}60%{opacity:1;transform:translateY(4px) scale(1.006)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ppSyncRotate{to{transform:rotate(360deg)}}.card,.bottom-nav,.icon-btn,.menu-drawer,.sheet,.input,.select-card,.student-pass,.detail-card,.calendar{transition:background .28s ease,border-color .28s ease,color .28s ease,box-shadow .28s ease}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#0f121e6b;opacity:0;pointer-events:none;transition:opacity .2s ease}.sheet-backdrop.open{opacity:1;pointer-events:auto}.sheet{position:absolute;bottom:0;left:0;right:0;background:#fff;border-radius:26px 26px 0 0;padding:10px 16px calc(18px + env(safe-area-inset-bottom));max-height:88vh;overflow:auto;transform:translateY(102%);transition:transform .28s cubic-bezier(.22,.85,.26,1);box-shadow:0 -20px 50px #0000001f}.sheet-backdrop.open .sheet{transform:translateY(0)}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:95;background:#0c121f57;opacity:0;pointer-events:none;transition:opacity .2s ease}.menu-backdrop.open{opacity:1;pointer-events:auto}.menu-drawer{position:absolute;top:0;right:0;width:min(88vw,360px);height:100%;background:var(--surface);border-radius:28px 0 0 28px;box-shadow:-18px 0 40px #0000002e;transform:translate(103%);transition:transform .28s cubic-bezier(.22,.85,.26,1);display:flex;flex-direction:column;overflow:hidden}.menu-backdrop.open .menu-drawer{transform:translate(0)}@media (min-width: 900px){.sheet{left:50%;right:auto;width:470px;bottom:22px;border-radius:24px;transform:translate(-50%,110%)}}@media (min-width: 900px){.sheet-backdrop.open .sheet{transform:translate(-50%)}}@media (min-width: 900px){.sheet-backdrop{display:grid;place-items:end center}}.menu-drawer{width:min(86vw,352px);border-radius:24px 0 0 24px}html[data-theme=dark] .menu-drawer{background:linear-gradient(180deg,#071b2b,#041522);border-left:1px solid var(--ds-border)}html[data-theme=dark] .sheet{background:linear-gradient(180deg,#071b2b,#041522);color:#fff;border:1px solid var(--ds-border)}.sheet{width:100%;max-width:100vw;min-width:0;overflow-x:hidden}.sheet>*{max-width:100%;min-width:0;box-sizing:border-box}.menu-drawer{max-width:calc(100vw - 20px);min-width:0}.screen .page-titlebar{display:none!important}.notice{padding:12px 14px;border-radius:14px;font-size:12px;line-height:1.45}.notice.info{background:#edf4fd;color:#2b5f94}.notice.warn{background:#fff6e3;color:#8c5b00}.notice.error{background:#fdeded;color:#a43838}.back{border:0;background:none;padding:0;color:var(--text);width:42px;height:42px;display:grid;place-items:center}.back svg{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:2.4}.page-titlebar{display:flex;align-items:center;gap:8px;padding:12px 12px 2px}.page-titlebar h1{font-size:22px;margin:0}.handle{width:42px;height:5px;background:#d6dae3;border-radius:999px;margin:3px auto 14px}@media (min-width: 900px){.screen .page-titlebar{display:flex!important}}@media (min-width: 900px){.page-titlebar{padding:12px 24px 2px}}html[data-theme=dark] .icon-btn,html[data-theme=dark] .back{background:linear-gradient(180deg,#08233ebd,#08233e85);border:1px solid rgba(84,154,226,.3);color:#f5fbff;box-shadow:inset 0 0 0 1px #7fcaff0d}html[data-theme=dark] .notice.info{background:#103e5e94;color:#bdeeff}.screen,.screen.active,.page,.screen .page-titlebar{max-width:100%;min-width:0}.super-brand-row>.mini-btn{flex:0 0 auto}:is(.btn,.action-btn,.mini-btn,.row-meta-btn,.review-mode-btn){box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;isolation:isolate;overflow:hidden;background-clip:padding-box;border-style:solid;border-width:1px;text-decoration:none;outline:0}:is(.btn,.action-btn):focus-visible,:is(.mini-btn,.row-meta-btn,.review-mode-btn):focus-visible{box-shadow:var(--pp-cta-focus)!important}:is(.mini-btn,.row-meta-btn){min-height:30px;padding:7px 10px;border-radius:var(--pp-cta-radius-compact);border-color:var(--pp-cta-ghost-border)!important;background:var(--pp-cta-ghost-bg)!important;color:var(--pp-cta-secondary-text)!important;font-size:11px;font-weight:var(--pp-cta-font-weight);display:inline-flex;align-items:center;justify-content:center}:is(.mini-btn,.row-meta-btn,.review-mode-btn):active{transform:scale(.98)}@media (prefers-reduced-motion: reduce){.qr-cell,.qr-auth-visual:after,.qr-auth-progress span,.qr-success-tick circle,.qr-success-tick path,.qr-auth-card.exit-down{animation:none!important}}@media (prefers-reduced-motion: reduce){.qr-auth-overlay.success .qr-success-tick{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.qr-auth-overlay.success .qr-success-tick circle,.qr-auth-overlay.success .qr-success-tick path{stroke-dashoffset:0}}.parent-access-card{margin-top:14px;padding:14px;border-radius:18px;border:1px solid var(--border);background:var(--surface-soft);text-align:left}.parent-access-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.parent-access-head>div:first-child{min-width:0}.parent-access-label{display:block;color:var(--muted);font-size:9px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.parent-access-head strong{display:block;margin-top:5px;font-size:17px;letter-spacing:.1em;line-height:1.1;font-variant-numeric:tabular-nums;word-break:break-all}.parent-access-actions{flex:0 0 auto;display:flex;gap:6px}.parent-access-actions .mini-btn{min-height:34px;padding:7px 10px;font-size:9px}.parent-access-card p{margin:10px 0 0;color:var(--muted);font-size:9px;line-height:1.45}.parent-credential-note{margin-top:10px}.parent-credential-note strong{color:var(--text)}html[data-theme=dark] .parent-access-card{background:#0a2234c2;border-color:#4f82b033}.parent-access-head{align-items:flex-start;flex-direction:column}.parent-access-actions{width:100%}.parent-access-actions .mini-btn{flex:1}.access-id-vector,.access-success-tick,.access-error-x{position:absolute;width:72px;height:72px;overflow:visible}.access-success-tick,.access-error-x{opacity:0;transform:scale(.5)}.access-success-tick circle,.access-success-tick path{fill:none;stroke:var(--success);stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.access-auth-overlay.recognised .access-success-tick,.access-auth-overlay.invalid .access-error-x{opacity:1;transform:scale(1);transition:opacity .2s ease,transform .38s cubic-bezier(.18,.89,.32,1.28)}@media (prefers-reduced-motion: reduce){.access-auth-overlay.recognised .access-success-tick,.access-auth-overlay.invalid .access-error-x{transform:none}}.my-qr-gate-link-wrap{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:12px;padding-bottom:2px}.my-qr-gate-or{color:var(--muted);font-size:10px}.my-qr-gate-link{display:inline-flex;align-items:center;gap:3px;padding:6px 2px;font-size:10px;font-weight:800;text-transform:none}.my-qr-gate-link .ui-icon{width:13px;height:13px}.register-add-link{display:inline-flex;align-items:center;gap:5px}.danger-zone .mini-btn{margin-top:10px}.head-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.head-alert-card{padding:15px 14px;text-align:left;min-height:122px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:6px}.head-alert-card .metric-icon{margin-bottom:6px}.head-alert-card .num{font-size:26px!important;line-height:1}.head-alert-card .lab{font-size:12px!important;font-weight:850;color:var(--text)}.head-alert-note{font-size:11px;color:var(--muted);line-height:1.35;margin-top:auto}.head-alert-card.urgent .num,.head-alert-card.urgent .lab{color:var(--danger)}.kpi .num{font-size:26px;font-weight:900;letter-spacing:-.04em}.kpi .lab{font-size:12px;color:var(--muted);font-weight:700;margin-top:2px}.class-list{display:flex;flex-direction:column;gap:10px}.class-row{padding:14px 15px}.progress{height:7px;background:#eef1f6;border-radius:99px;overflow:hidden;margin-top:10px}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--teal));border-radius:99px}.person-main{flex:1;min-width:0}.person-main strong{display:block;font-size:14px}.person-main small{display:block;color:var(--muted);margin-top:3px}@media (min-width: 900px){.head-kpi-grid{grid-template-columns:repeat(2,1fr)}}.metric-card{position:relative;overflow:hidden;padding:14px;border-color:#2a56911a;box-shadow:0 9px 24px #395e910f}.metric-card:after{content:"";position:absolute;right:-18px;bottom:-22px;width:70px;height:70px;border-radius:50%;background:radial-gradient(circle,rgba(25,213,228,.13),transparent 68%)}.metric-icon{width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(145deg,#eaf3ff,#dff9fb);color:#0757d8;margin-bottom:9px}.metric-icon svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.metric-card .num{font-size:24px!important}.metric-card .lab{font-size:11px!important}.class-row{border-color:#2a56911a;box-shadow:0 7px 20px #395e910d}.class-row .class-percent{font-size:18px;color:var(--brand-dark)}.class-row .class-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.class-meta span{font-size:10px;font-weight:800;padding:5px 7px;border-radius:999px;background:var(--surface-soft);color:var(--muted)}.premises-summary{display:grid;grid-template-columns:1.3fr .7fr;gap:10px;margin-bottom:12px}.premises-count{padding:16px}.premises-count strong{font-size:30px;letter-spacing:-.05em}.premises-count span{display:block;color:var(--muted);font-size:11px;font-weight:750;margin-top:2px}.person-row .person-time{font-size:10px;color:var(--muted);margin-top:4px;display:flex;gap:8px;flex-wrap:wrap}.super-grid .metric-card{min-height:102px}.card,.metric-card,.class-row,.person-row,.tenant-card,.premises-count,.premises-side,.super-brand-preview,.scanner-action,.gate-status-strip{border-radius:var(--ds-r-lg);border:1px solid var(--ds-border);background:var(--ds-surface);box-shadow:var(--ds-shadow-soft)}html[data-theme=dark] .card,html[data-theme=dark] .metric-card,html[data-theme=dark] .class-row,html[data-theme=dark] .person-row,html[data-theme=dark] .tenant-card,html[data-theme=dark] .premises-count,html[data-theme=dark] .premises-side,html[data-theme=dark] .super-brand-preview,html[data-theme=dark] .scanner-action,html[data-theme=dark] .gate-status-strip,html[data-theme=dark] .detail-card,html[data-theme=dark] .calendar,html[data-theme=dark] .profile-head,html[data-theme=dark] .attendance-loader-card{background:linear-gradient(180deg,#081d2eeb,#041422eb);border-color:var(--ds-border);box-shadow:var(--ds-shadow-soft);color:#fff}html[data-theme=dark] .metric-icon,html[data-theme=dark] .attention-row .row-icon,html[data-theme=dark] .scanner-action .qa-icon{background:radial-gradient(circle at 30% 20%,#2cabff3d,#08416ff2);color:#50dcff}html[data-theme=dark] .class-row .class-percent{color:#55dff3}html[data-theme=dark] .class-meta span{background:#1f3a52c7;color:#afc0d0}html[data-theme=dark] .progress{background:#314e647a}.alert-case-top .person-main{flex:1;min-width:0}.alert-case-top .person-main small{display:block;line-height:1.35}.role-hero-stat .stat-ratio{display:flex;align-items:baseline;gap:2px}.role-hero-stat .stat-ratio .main{font-size:17px;font-weight:900;letter-spacing:-.03em;color:#fff}.role-hero-stat .stat-ratio .denom{font-size:11px;font-weight:600;color:#ffffffad}.premises-screen{display:flex;flex-direction:column;gap:12px}.premises-hero{margin-bottom:0!important}.premises-hero .role-hero-badge{display:none}.premises-hero-title{margin-top:6px;font-size:42px;line-height:.94;letter-spacing:-.055em}.premises-hero-copy{font-size:13px;max-width:280px;line-height:1.35}.premises-summary.refined{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:0}.premises-summary.refined .premises-count{grid-column:1/-1;padding:16px 16px 14px;display:flex;flex-direction:column;gap:4px}.premises-summary.refined .premises-count strong{font-size:34px;line-height:1}.premises-summary.refined .premises-side{padding:14px 14px 13px;min-height:88px}.metric-label{display:block;font-size:10px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.premises-row{display:grid;grid-template-columns:auto 1fr auto;align-items:flex-start;gap:12px;padding:14px 14px 13px}.premises-row .avatar.sm{margin-top:2px}.premises-row .person-main strong{font-size:15px;line-height:1.2}.premises-row .person-main small{font-size:13px;color:var(--muted)}.premises-row .person-time{font-size:11px;color:var(--muted);margin-top:6px;display:flex;gap:10px;flex-wrap:wrap}.premises-row .person-time span{display:inline-flex;align-items:center;gap:4px}.premises-row-side{display:flex;flex-direction:column;align-items:flex-end;gap:9px;min-width:84px}.premises-row .status-pill{padding:8px 11px;font-size:12px}.premises-summary.refined{grid-template-columns:1fr}.premises-row{grid-template-columns:auto 1fr}.premises-row-side{grid-column:2;align-items:flex-start;flex-direction:row;flex-wrap:wrap;min-width:0}.phone-content,.screen,.page,.premises-screen{min-width:0;max-width:100%;overflow-x:hidden}.premises-screen>*{min-width:0;max-width:100%;box-sizing:border-box}.premises-hero{width:100%;max-width:100%}.premises-hero .role-hero-top,.premises-hero .role-hero-stats{min-width:0;max-width:100%}.premises-hero .role-hero-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.premises-hero .role-hero-stat{min-width:0;padding:10px 8px}.premises-hero .role-hero-stat strong,.premises-hero .role-hero-stat span{overflow-wrap:anywhere}.premises-summary.refined{width:100%;min-width:0;grid-template-columns:repeat(2,minmax(0,1fr))}.premises-summary.refined>*{min-width:0}.premises-list,.premises-row{width:100%;min-width:0}.premises-row .person-main{min-width:0}.premises-row .person-main strong,.premises-row .person-main small,.premises-row .person-time{overflow-wrap:anywhere}.premises-row-side{min-width:0}.premises-hero{padding:16px;border-radius:22px}.premises-hero-title{font-size:36px}.premises-hero .role-hero-stats{gap:7px}.premises-hero .role-hero-stat{padding:10px 7px;border-radius:14px}.premises-hero .role-hero-stat strong{font-size:16px}.premises-hero .role-hero-stat span{font-size:9px;line-height:1.2}.premises-summary.refined{gap:8px}.premises-row{grid-template-columns:auto minmax(0,1fr);align-items:start}.premises-row-side{grid-column:2;flex-direction:row;align-items:center;justify-content:flex-start;flex-wrap:wrap;width:100%}.premises-hero .role-hero-stats,.premises-summary.refined{grid-template-columns:1fr}.premises-summary.refined .premises-count{grid-column:auto}.section-head h2,.role-section-title h2,.person-main,.tenant-main,.brand-preview-copy,.menu-meta-copy,.appearance-copy>span:last-child,.quick-action .qa-copy,.switch-copy,.role-hero-top>div:first-child,.student-top>div,.profile-meta{min-width:0}.person-main strong,.person-main small,.tenant-main strong,.tenant-main small,.brand-preview-copy strong,.brand-preview-copy small,.menu-link strong,.menu-link small,.detail-card .row strong,.kv strong,.notice,.insight,.priority-link span,.role-hero h1,.role-hero p,.gate-hero h1,.gate-hero p{overflow-wrap:anywhere;word-break:normal}.quick-actions-grid,.kpi-grid,.head-kpi-grid,.summary-row,.scanner-action-row,.super-grid,.review-mode-grid,.role-hero-stats,.tabs,.pass-main,.pass-fact,.weekdays,.days{min-width:0;max-width:100%}.head-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.class-percent{flex:0 0 auto}@media (max-width: 360px){.quick-actions-grid,.scanner-action-row,.super-grid,.head-kpi-grid{grid-template-columns:1fr}}.live-number{display:inline-block;min-width:1ch;font-variant-numeric:tabular-nums;will-change:transform,opacity}.premises-row.live-arrival-enter{animation:ppLiveArrivalIn .62s cubic-bezier(.16,.84,.3,1) both;border-color:#1fcbb585;box-shadow:0 0 0 1px #1fcbb51f,0 16px 34px #11749624}.premises-row.live-arrival-enter:after{content:"Just arrived";position:absolute;right:14px;top:14px;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;background:#1fcbb524;color:#14967d;border:1px solid rgba(31,203,181,.22)}html[data-theme=dark] .premises-row.live-arrival-enter{border-color:#32e5d27a;box-shadow:0 0 0 1px #32e5d21a,0 16px 34px #0000002e}html[data-theme=dark] .premises-row.live-arrival-enter:after{background:#2cdec324;color:#75f2d5;border-color:#2cdec33d}.premises-row{position:relative}.premises-row.pp-shift{transition:transform .48s cubic-bezier(.2,.8,.2,1);will-change:transform}@media (prefers-reduced-motion: reduce){.premises-row.live-arrival-enter,.live-count-bump{animation:none!important}}@media (prefers-reduced-motion: reduce){.premises-row.pp-shift{transition:none!important}}.premises-sync-btn{position:absolute;top:18px;right:18px;z-index:4;width:44px;height:44px;border-radius:14px;border:1px solid rgba(255,255,255,.22);background:#ffffff1c;color:#fff;display:grid;place-items:center;box-shadow:inset 0 0 0 1px #ffffff08;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);cursor:pointer;transition:background .18s ease,border-color .18s ease,transform .16s ease,box-shadow .18s ease}.premises-sync-btn:hover{background:#ffffff2b;border-color:#ffffff4d}.premises-sync-btn:active{transform:scale(.96)}.premises-sync-btn:focus-visible{outline:0;box-shadow:0 0 0 3px #6be2ff47}.premises-sync-btn:disabled{cursor:default;opacity:.86}.premises-sync-btn svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.premises-sync-btn.syncing svg{animation:ppSyncRotate .78s linear infinite}.premises-sync-btn.synced{background:#3fe8bd29;border-color:#5bf5cd57;box-shadow:0 0 0 1px #5bf5cd14,0 0 18px #2ad7b824}.premises-hero .role-hero-top>div:first-child{padding-right:56px}.premises-sync-btn{top:16px;right:16px;width:42px;height:42px;border-radius:13px}.premises-hero .role-hero-top>div:first-child{padding-right:52px}@media (prefers-reduced-motion: reduce){.premises-sync-btn.syncing svg{animation:none!important}}.premises-scan-action{flex:0 0 auto;min-width:112px;min-height:82px;padding:11px 12px;border-radius:18px;border:1px solid var(--border);background:var(--surface-soft);color:var(--text);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;text-align:left;cursor:pointer;box-shadow:var(--ds-shadow-soft);transition:transform .16s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease}.premises-scan-action:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--brand) 34%,var(--border));background:color-mix(in srgb,var(--brand) 5%,var(--surface));box-shadow:0 10px 24px #1a46731a}.premises-scan-action:active{transform:scale(.985)}.premises-scan-action:focus-visible{outline:0;box-shadow:0 0 0 3px var(--pp-cta-focus)}.premises-scan-action>span:last-child strong{display:block;font-size:11px;line-height:1.1}.premises-scan-action>span:last-child small{display:block;margin-top:3px;font-size:8px;color:var(--muted);font-weight:750}html[data-theme=dark] .premises-scan-action{background:#0a27429e;border-color:#53b7e13d}.premises-scan-action{min-width:101px;min-height:76px;padding:9px 10px}@media (prefers-reduced-motion: reduce){.premises-scan-action{transition:none!important}}.premises-summary.refined .premises-count.premises-count-with-scan{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:space-between!important;gap:14px!important;width:100%;min-height:118px}.premises-count-with-scan .premises-scan-action.icon-only{flex:0 0 54px;width:54px;height:54px;min-width:54px;min-height:54px;padding:0;border-radius:17px;display:grid;place-items:center;align-self:center;border:1px solid var(--border);background:var(--surface-soft);color:var(--brand);box-shadow:none}.premises-count-with-scan .premises-scan-action.icon-only svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.premises-count-with-scan .premises-scan-action.icon-only:hover{transform:none;background:color-mix(in srgb,var(--brand) 8%,var(--surface));border-color:color-mix(in srgb,var(--brand) 30%,var(--border))}html[data-theme=dark] .premises-count-with-scan .premises-scan-action.icon-only{background:#2157842e;border-color:#53b7e142;color:#69e7f2}.premises-summary.refined .premises-count.premises-count-with-scan{gap:10px!important;min-height:110px}.premises-count-with-scan .premises-scan-action.icon-only{flex-basis:50px;width:50px;height:50px;min-width:50px;min-height:50px;border-radius:15px}.premises-count-with-scan .premises-scan-action.icon-only svg{width:23px;height:23px}.access-request-card-head .person-main,.super-access-request-top .person-main{flex:1;min-width:0}.premises-row.departure{border-left:3px solid var(--warning)}.departure-alert{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:999px;border:1px solid rgba(214,150,40,.3);background:#d6962817;color:#9a6512;font-size:8.5px;font-weight:850;white-space:nowrap}.departure-alert svg{width:11px;height:11px;flex:none;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}html[data-theme=dark] .departure-alert{color:#f0c168;border-color:#f0c1684d;background:#f0c1681a}.premises-row-side .actor-tag{margin-top:2px}.student-status-pill-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.premises-stat-grid{grid-template-columns:repeat(3,1fr)}.premises-live-list{display:flex;flex-direction:column;gap:10px;margin-top:10px}.chips{display:flex;gap:8px;overflow:auto;padding-bottom:2px}.chip{border:1px solid var(--pp-filter-border,var(--border));background:var(--pp-filter-bg,var(--surface));border-radius:999px;padding:9px 12px;font-size:12px;font-weight:800;color:var(--pp-filter-text,var(--muted));white-space:nowrap}.chip.active{background:transparent;color:var(--pp-filter-active-text,#FFFFFF);border-color:var(--pp-filter-active-border,#20263A)}.premises-chips .chip{padding:10px 14px}.premises-chips .chip{flex:0 0 auto;min-width:0}.chips{display:flex;flex-wrap:wrap;gap:8px;overflow:visible;max-width:100%}.chip{max-width:100%}.btn.compact{min-height:var(--pp-cta-height-compact)!important;padding:8px 12px!important;font-size:var(--pp-cta-font-size-compact)!important;border-radius:var(--pp-cta-radius-compact)!important}.chip.active:before{background:var(--pp-filter-active-bg)}.register-toolbar{padding:12px;display:flex;flex-direction:column;gap:12px}.register-filter-label{font-size:10px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}.register-search .input{padding-left:42px;height:48px}.students-register-page{display:flex;flex-direction:column;gap:12px}.register-toolbar.compact{padding:12px;display:flex;flex-direction:column;gap:10px}.register-search{position:relative}.register-search .input{width:100%;height:50px;padding-left:42px;padding-right:14px;border-radius:16px}.register-search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:19px;height:19px;stroke:var(--muted);fill:none;stroke-width:2;z-index:1}.advanced-filter-toggle{width:100%;min-height:44px;border:0;border-top:1px solid var(--border);background:transparent;color:var(--text);padding:11px 2px 2px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:900;cursor:pointer}.advanced-filter-toggle .filter-toggle-copy{display:flex;align-items:center;gap:8px}.advanced-filter-toggle svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .22s ease}.advanced-filter-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.advanced-filter-count{min-width:22px;height:22px;padding:0 7px;border-radius:999px;display:none;place-items:center;background:var(--pp-filter-active-bg);color:var(--pp-filter-active-text);font-size:10px;font-weight:900}.advanced-filter-count.show{display:grid}.advanced-filter-panel{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .24s ease,opacity .18s ease}.advanced-filter-panel>.advanced-filter-inner{overflow:hidden}.advanced-filter-panel.open{grid-template-rows:1fr;opacity:1}.advanced-filter-inner{display:flex;flex-direction:column;gap:14px}.register-filter-block{display:flex;flex-direction:column;gap:8px}.register-filter-label{font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.register-filter-block .chips{margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}html[data-theme=dark] .advanced-filter-toggle{border-color:#5184b438;color:#f4fbff}html[data-theme=dark] .register-toolbar.compact{background:linear-gradient(180deg,#082239eb,#05192bf0)}html[data-theme=dark] .register-search .input{background:#071f37e0;border-color:#5184b442}@media (prefers-reduced-motion: reduce){.advanced-filter-panel,.advanced-filter-toggle svg{transition:none!important}}.premises-search-sheet .chips{margin-top:12px}.register-list{display:flex;flex-direction:column;gap:10px;margin-top:10px}.register-row{display:flex;align-items:center;gap:12px;padding:14px}.register-row-main{flex:1;min-width:0}.register-row-main strong{display:block;font-size:14px}.register-row-main small{display:block;font-size:11px;margin-top:2px}.class-attendance-page{display:flex;flex-direction:column;gap:12px}.class-overview-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.class-overview-summary .summary-cell{padding:14px;min-width:0}.class-overview-summary .summary-cell strong{display:block;font-size:22px;line-height:1;letter-spacing:-.03em}.class-overview-summary .summary-cell span{display:block;margin-top:6px;font-size:10px;color:var(--muted);font-weight:800}.class-attendance-list{display:flex;flex-direction:column;gap:12px}.class-attendance-card{padding:16px;display:flex;flex-direction:column;gap:12px}.class-attendance-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.class-attendance-card-copy{min-width:0}.class-attendance-card-copy strong{display:block;font-size:17px;line-height:1.15}.class-attendance-card-copy small{display:block;margin-top:4px;color:var(--muted);font-size:12px}.class-attendance-rate{flex:0 0 auto;color:var(--brand);font-size:24px;font-weight:950;letter-spacing:-.04em}.class-attendance-progress{height:8px;border-radius:999px;background:var(--surface-soft);overflow:hidden}.class-attendance-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#185deb,#1cb9ee 58%,#29d9c8)}.class-attendance-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.class-attendance-meta{display:flex;flex-wrap:wrap;gap:7px}.class-attendance-meta span{min-height:28px;padding:6px 10px;border-radius:999px;background:var(--surface-alt);border:1px solid var(--border);color:var(--muted);font-size:11px;font-weight:850}.class-view-btn{min-height:34px;padding:7px 11px;border-radius:999px;border:1px solid var(--pp-filter-border);background:var(--pp-filter-bg);color:var(--brand);font-size:11px;font-weight:900;display:inline-flex;align-items:center;gap:5px}html[data-theme=dark] .class-attendance-rate{color:#4fe7f1}html[data-theme=dark] .class-attendance-meta span{background:#0b2241c2;border-color:#5285c63d;color:#b8c8da}html[data-theme=dark] .class-view-btn{background:#0a27429e;border-color:#53b7e142;color:#6de8f3}.class-row[role=button],.class-attendance-card[role=button],.premises-row[role=button]{cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.class-row[role=button]:hover,.class-attendance-card[role=button]:hover,.premises-row[role=button]:hover{border-color:#0b49c842;box-shadow:0 8px 22px #20263a14}.class-row[role=button]:active,.class-attendance-card[role=button]:active,.premises-row[role=button]:active{transform:scale(.995)}.class-row[role=button]:focus-visible,.class-attendance-card[role=button]:focus-visible,.premises-row[role=button]:focus-visible{outline:2px solid var(--brand);outline-offset:2px}@media (min-width:760px){.class-attendance-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:430px){.class-overview-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.class-overview-summary .summary-cell{padding:12px 10px}.class-overview-summary .summary-cell strong{font-size:19px}.class-overview-summary .summary-cell span{font-size:9px}.class-attendance-card{padding:14px}.class-attendance-footer{align-items:flex-end}}.bottom-nav{position:fixed;left:12px;right:12px;bottom:calc(6px + env(safe-area-inset-bottom));z-index:60;background:var(--nav-surface);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid var(--border);box-shadow:0 9px 22px #20263a1f;border-radius:20px;padding:3px 8px;display:grid;grid-template-columns:repeat(3,1fr);align-items:center;gap:2px;min-height:50px;overflow:hidden}.bottom-nav.parent-nav{padding-top:3px}.bottom-nav.parent-nav:before{display:none}.nav-active-orb{position:absolute;top:4px;left:16.6667%;width:calc((100% - 28px)/3);height:42px;border-radius:14px;background:linear-gradient(135deg,#08388e,#0b49c8 68%,#119fc6);box-shadow:0 7px 16px #08388e33;transform:translate(-50%);transition:left .34s cubic-bezier(.22,.85,.26,1),width .24s ease,box-shadow .24s ease,opacity .18s ease;z-index:0;pointer-events:none}.nav-btn{position:relative;z-index:1;background:none;border:0;color:#8a90a2;min-height:42px;border-radius:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:8.7px;font-weight:800;padding:3px 4px;transition:color .22s ease,transform .22s ease}.nav-icon-core{width:26px;height:20px;display:grid;place-items:center;position:relative;z-index:2}.nav-btn svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:color .22s ease,transform .22s ease}.nav-btn.active,.nav-btn.active .nav-icon-core{color:#fff}.nav-btn.active svg{transform:scale(1.03)}.bottom-nav:not(.parent-nav) .nav-btn{transition:background .24s ease,color .22s ease,transform .22s ease}.bottom-nav:not(.parent-nav) .nav-btn.active{background:transparent;color:#fff;box-shadow:0 7px 16px #0b49c829}.nav-btn .nav-indicator{display:none!important}.nav-btn.center-fab{transform:none;z-index:2;gap:2px}.nav-btn.center-fab .fab-core{width:26px;height:20px;border-radius:0;display:grid;place-items:center;background:transparent;color:inherit;box-shadow:none}.nav-btn.center-fab svg{width:18px;height:18px;stroke:currentColor}.nav-btn.center-fab span{font-size:8.7px;line-height:1;color:inherit;margin-top:0}.nav-btn.center-fab.active .fab-core{transform:none;color:#fff}@keyframes pageInRight{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@keyframes pageInLeft{0%{opacity:0;transform:translate(-18px)}to{opacity:1;transform:translate(0)}}@keyframes pageOutLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-12px)}}@keyframes pageOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(12px)}}html[data-theme=dark] .bottom-nav{background:#071c2bdb;border:1px solid rgba(80,128,170,.35);box-shadow:var(--ds-shadow-soft);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}html[data-theme=dark] .nav-btn{color:#9faecc}html[data-theme=dark] .nav-active-orb{background:var(--ds-active-gradient);box-shadow:none}html[data-theme=dark] .nav-btn.active{color:#fff}html[data-theme=dark] .bottom-nav:not(.parent-nav) .nav-btn.active{background:transparent;box-shadow:none}:is(.chip,.role-btn,.tab,.review-mode-btn,.bottom-nav:not(.parent-nav) .nav-btn){box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}:is(.chip.active,.role-btn.active,.tab.active,.review-mode-btn.active,.bottom-nav:not(.parent-nav) .nav-btn.active){position:relative;isolation:isolate;overflow:hidden;background:transparent!important;background-clip:padding-box}:is(.chip.active,.role-btn.active,.tab.active,.review-mode-btn.active,.bottom-nav:not(.parent-nav) .nav-btn.active):before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;z-index:-1;pointer-events:none}.bottom-nav:not(.parent-nav) .nav-btn.active:before{background:var(--ds-active-gradient)}@media (max-width:899px){.bottom-nav{max-width:calc(100vw - 24px);grid-template-columns:repeat(3,minmax(0,1fr))}.nav-btn{min-width:0}.nav-btn span:last-child{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.route-view.page-enter-right{animation:pageInRight .28s cubic-bezier(.22,.85,.26,1) both}.route-view.page-enter-left{animation:pageInLeft .28s cubic-bezier(.22,.85,.26,1) both}@media (prefers-reduced-motion: reduce){.route-view.page-enter-right,.route-view.page-enter-left{animation:none}}.qr-auth-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:11000;display:none;align-items:center;justify-content:center;padding:24px;background:#030f1fa3;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.qr-auth-overlay.open{display:flex}.qr-auth-card{width:min(350px,100%);padding:24px 20px 20px;border-radius:26px;border:1px solid var(--border);background:var(--surface);box-shadow:0 28px 80px #00000047;text-align:center;transform:translateY(0);opacity:1}.qr-auth-card.exit-down{animation:ppQrExitDown .52s cubic-bezier(.22,.74,.25,1) forwards}@keyframes ppQrExitDown{0%{transform:translateY(0);opacity:1}to{transform:translateY(70px);opacity:0}}.qr-auth-visual{position:relative;width:112px;height:112px;margin:0 auto 16px;border-radius:24px;border:1px solid color-mix(in srgb,var(--brand) 22%,var(--border));background:color-mix(in srgb,var(--brand) 5%,var(--surface));display:grid;place-items:center;overflow:hidden}.qr-build-grid{width:68px;height:68px;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:4px;transition:opacity .3s ease,transform .35s ease}.qr-cell{border-radius:3px;background:var(--brand);opacity:0;transform:scale(.15) rotate(-8deg);animation:ppQrCellBuild .36s ease forwards}.qr-cell.c1{animation-delay:.02s}.qr-cell.c2{animation-delay:.1s}.qr-cell.c3{animation-delay:.18s}.qr-cell.c4{animation-delay:.26s}.qr-cell.c5{animation-delay:.34s}.qr-cell.c6{animation-delay:.42s}.qr-cell.c7{animation-delay:.5s}.qr-cell.c8{animation-delay:.58s}.qr-cell.c9{animation-delay:.66s}.qr-cell.c10{animation-delay:.74s}.qr-cell.c11{animation-delay:.82s}.qr-cell.c12{animation-delay:.9s}.qr-cell.c13{animation-delay:.98s}.qr-cell.c14{animation-delay:1.06s}.qr-cell.c15{animation-delay:1.14s}.qr-cell.c16{animation-delay:1.22s}@keyframes ppQrCellBuild{0%{opacity:0;transform:scale(.15) rotate(-8deg)}68%{opacity:1;transform:scale(1.08) rotate(0)}to{opacity:1;transform:scale(1) rotate(0)}}.qr-auth-visual:after{content:"";position:absolute;left:15px;right:15px;top:50%;height:2px;border-radius:999px;background:linear-gradient(90deg,transparent,#31DDD2,transparent);box-shadow:0 0 14px #31ddd28f;animation:ppQrScanLine 1.45s ease-in-out infinite}@keyframes ppQrScanLine{0%,to{transform:translateY(-30px);opacity:.18}50%{transform:translateY(30px);opacity:1}}.qr-auth-card h3{margin:0;font-size:18px}.qr-auth-card p{margin:6px auto 0;max-width:280px;color:var(--muted);font-size:10px;line-height:1.5}.qr-auth-progress{height:5px;border-radius:999px;overflow:hidden;background:var(--surface-soft);margin-top:17px}.qr-auth-progress span{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#185deb,#1cb9ee,#29d9c8)}.qr-auth-overlay.authenticating .qr-auth-progress span{animation:ppQrAuthProgress 3s linear forwards}@keyframes ppQrAuthProgress{0%{width:0}to{width:100%}}.qr-success-tick{position:absolute;width:68px;height:68px;opacity:0;transform:scale(.45) rotate(-8deg);overflow:visible}.qr-success-tick circle,.qr-success-tick path{fill:none;stroke:var(--success);stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.qr-success-tick circle{stroke-dasharray:175;stroke-dashoffset:175}.qr-success-tick path{stroke-dasharray:45;stroke-dashoffset:45}.qr-auth-overlay.success .qr-build-grid{opacity:0;transform:scale(.68) rotate(8deg)}.qr-auth-overlay.success .qr-auth-visual:after{display:none}.qr-auth-overlay.success .qr-success-tick{opacity:1;transform:scale(1) rotate(0);transition:opacity .22s ease,transform .38s cubic-bezier(.18,.89,.32,1.28)}.qr-auth-overlay.success .qr-success-tick circle{animation:ppTickCircle .5s ease forwards}.qr-auth-overlay.success .qr-success-tick path{animation:ppTickPath .42s .3s ease forwards}@keyframes ppTickCircle{to{stroke-dashoffset:0}}@keyframes ppTickPath{to{stroke-dashoffset:0}}.qr-auth-overlay.success .qr-auth-visual{background:color-mix(in srgb,var(--success) 8%,var(--surface));border-color:color-mix(in srgb,var(--success) 26%,var(--border))}.qr-auth-overlay.success .qr-auth-progress{display:none}html[data-theme=dark] .qr-auth-card{background:#071e34;border-color:#5184b447}html[data-theme=dark] .qr-auth-visual{background:#1c5d901a;border-color:#4ccee538}@media (prefers-reduced-motion:reduce){.qr-cell,.qr-auth-visual:after,.qr-auth-progress span,.qr-success-tick circle,.qr-success-tick path,.qr-auth-card.exit-down{animation:none!important}.qr-cell{opacity:1;transform:none}.qr-auth-progress span{width:100%}.qr-auth-overlay.success .qr-success-tick{opacity:1;transform:none}.qr-auth-overlay.success .qr-success-tick circle,.qr-auth-overlay.success .qr-success-tick path{stroke-dashoffset:0}}.sheet-head{display:flex;justify-content:space-between;align-items:start;gap:12px}.sheet-close{border:0;background:#f2f4f8;width:38px;height:38px;border-radius:12px;font-size:18px}html[data-theme=dark] .sheet-close{background:#0e314dd1;color:#fff}.head-school-profile-page,.school-gate-qr-page{display:flex;flex-direction:column;gap:12px}.school-profile-identity-card{padding:16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.school-profile-identity-main{display:flex;align-items:center;gap:12px;min-width:0}.school-profile-badge{width:48px;height:48px;border-radius:15px;flex:0 0 auto}.school-profile-identity-main h2{margin:3px 0 2px;font-size:17px}.school-profile-identity-main p{margin:0;font-size:10px}.school-profile-link-card{width:100%;padding:13px;display:flex;align-items:center;gap:10px;text-align:left;color:inherit;cursor:pointer}.school-profile-link-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;flex:0 0 auto;background:var(--surface-alt)}.school-profile-link-icon svg{width:20px;height:20px;fill:none;stroke:var(--brand);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.school-profile-link-copy{flex:1;min-width:0}.school-profile-link-copy strong{display:block;font-size:12px}.school-profile-link-copy small{display:block;margin-top:3px;color:var(--muted);font-size:9px}.school-profile-note{margin-top:2px}.school-gate-qr-card{padding:16px}.school-gate-qr-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.school-gate-qr-head h2{margin:4px 0 0;font-size:18px}.school-gate-qr-frame{width:min(100%,270px);aspect-ratio:1;margin:18px auto 14px;padding:22px;border-radius:24px;border:1px solid var(--border);background:var(--qr-bg);box-shadow:var(--qr-frame-shadow);display:grid;place-items:center}.school-gate-qr-pattern{width:100%;height:100%;border-radius:8px;background:linear-gradient(90deg,#20263A 12%,transparent 12% 18%,#20263A 18% 30%,transparent 30% 37%,#20263A 37% 50%,transparent 50% 59%,#20263A 59% 72%,transparent 72% 82%,#20263A 82%),repeating-linear-gradient(#20263a 0,#20263a 10px,#fff 10px,#fff 16px);mix-blend-mode:multiply;opacity:.92}.school-gate-qr-frame.generation-alt .school-gate-qr-pattern{background:repeating-linear-gradient(90deg,#20263a 0,#20263a 8px,#fff 8px,#fff 15px),linear-gradient(#20263A 13%,transparent 13% 22%,#20263A 22% 35%,transparent 35% 43%,#20263A 43% 58%,transparent 58% 68%,#20263A 68%)}.school-gate-qr-actions{display:grid;grid-template-columns:1fr 1.25fr;gap:8px;margin-top:14px}.school-gate-qr-warning,.school-gate-qr-sheet-warning{display:flex;gap:10px;padding:13px;border-radius:15px;border:1px solid rgba(204,111,39,.22);background:#cc6f2712}.school-gate-qr-warning strong,.school-gate-qr-sheet-warning strong{display:block;color:var(--text);font-size:10px}.school-gate-qr-warning p,.school-gate-qr-sheet-warning p{margin:4px 0 0;color:var(--muted);font-size:9px;line-height:1.45}.school-gate-warning-icon{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto;background:#cc6f271c}.school-gate-warning-icon svg{width:17px;height:17px;fill:none;stroke:#b66a23;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.school-gate-qr-sheet-warning{display:block;margin-top:14px}.school-gate-qr-confirm{display:flex;align-items:flex-start;gap:9px;margin:13px 0;color:var(--muted);font-size:9px;line-height:1.45;cursor:pointer}.school-gate-qr-confirm input{margin-top:2px}html[data-theme=dark] .school-gate-qr-warning,html[data-theme=dark] .school-gate-qr-sheet-warning{background:#cc6f271f;border-color:#e89b553d}@media (max-width:390px){.school-profile-identity-card{align-items:flex-start}.school-gate-qr-actions{grid-template-columns:1fr}}.school-gate-preview-page{display:flex;flex-direction:column;gap:12px}.school-gate-preview-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.school-gate-preview-toolbar h2{margin:3px 0;font-size:17px}.school-gate-preview-toolbar p{margin:0;font-size:9px}.school-gate-poster-shell{padding:12px;border-radius:22px;background:var(--surface-alt);border:1px solid var(--border);overflow:hidden}.school-gate-poster{width:100%;max-width:520px;margin:0 auto;aspect-ratio:210 / 297;padding:18px;border-radius:14px;background:#fff;color:#132238;box-shadow:0 12px 34px #17233421;display:flex;flex-direction:column;overflow:hidden}.school-gate-poster-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.school-gate-poster-brand{display:flex;align-items:center;gap:9px;min-width:0}.school-gate-poster-logo{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;flex:0 0 auto;background:#0d2c31;color:#fff;font-size:12px;font-weight:900}.school-gate-poster-brand strong{display:block;font-size:10px;color:#132238}.school-gate-poster-brand span:not(.school-gate-poster-logo){display:block;margin-top:2px;color:#6d7a8b;font-size:7px}.school-gate-poster-active{flex:0 0 auto;padding:5px 7px;border-radius:999px;background:#eaf6ef;color:#2b7b4b;font-size:6px;font-weight:900;letter-spacing:.04em}.school-gate-poster-intro{text-align:center;margin-top:18px}.school-gate-poster-kicker{display:block;color:#0e7a89;font-size:6px;font-weight:900;letter-spacing:.12em}.school-gate-poster-intro h1{margin:5px 0;color:#0d2c31;font-size:25px;line-height:1}.school-gate-poster-intro p{max-width:330px;margin:0 auto;color:#6d7a8b;font-size:7px;line-height:1.45}.school-gate-poster-qr-wrap{position:relative;width:56%;aspect-ratio:1;margin:16px auto 12px}.school-gate-poster-qr{width:100%;height:100%;padding:9px;border-radius:14px;background:#fff;border:1px solid #DCE3E8;box-shadow:0 8px 20px #14223514}.school-gate-poster-qr-pattern{width:100%;height:100%;border-radius:4px;background:linear-gradient(90deg,#20263A 12%,transparent 12% 18%,#20263A 18% 30%,transparent 30% 37%,#20263A 37% 50%,transparent 50% 59%,#20263A 59% 72%,transparent 72% 82%,#20263A 82%),repeating-linear-gradient(#20263a 0,#20263a 7px,#fff 7px,#fff 11px);mix-blend-mode:multiply}.school-gate-poster-qr.generation-alt .school-gate-poster-qr-pattern{background:repeating-linear-gradient(90deg,#20263a 0,#20263a 6px,#fff 6px,#fff 10px),linear-gradient(#20263A 13%,transparent 13% 22%,#20263A 22% 35%,transparent 35% 43%,#20263A 43% 58%,transparent 58% 68%,#20263A 68%)}.school-gate-poster-scanline{position:absolute;left:12%;right:12%;top:50%;height:1px;background:linear-gradient(90deg,transparent,#28B6BD,transparent);opacity:.58}.school-gate-poster-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:3px}.school-gate-poster-steps div{min-width:0;padding:8px;border-radius:10px;background:#f3f8fa}.school-gate-poster-steps span{width:19px;height:19px;border-radius:7px;display:grid;place-items:center;margin-bottom:5px;background:#ddeff1;color:#0d2c31;font-size:7px;font-weight:900}.school-gate-poster-steps strong{display:block;font-size:7px;color:#132238}.school-gate-poster-steps small{display:block;margin-top:3px;color:#6d7a8b;font-size:5.5px;line-height:1.35}.school-gate-poster-footer{margin-top:auto;padding-top:9px;border-top:1px solid #E4E9EE;display:grid;grid-template-columns:1fr auto;align-items:end;gap:8px}.school-gate-poster-footer span{display:block;color:#8a95a2;font-size:5.5px}.school-gate-poster-footer strong{display:block;margin-top:2px;color:#132238;font-size:6.5px}.school-gate-poster-powered{color:#8a95a2;font-size:5.5px;text-align:right}.school-gate-preview-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:8px}.school-gate-preview-actions .btn{display:flex;align-items:center;justify-content:center;gap:6px}.school-gate-preview-note{margin-top:0}@media (max-width:390px){.school-gate-poster-shell{padding:8px}.school-gate-poster{padding:14px}.school-gate-preview-actions{grid-template-columns:1fr}}@media print{@page{size:A4 portrait;margin:0}body{background:#fff!important}body>*{visibility:hidden!important}#headSchoolGateQrPreview,#headSchoolGateQrPreview *{visibility:visible!important}#headSchoolGateQrPreview{position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important;width:210mm!important;min-height:297mm!important;margin:0!important;padding:0!important;background:#fff!important}#headSchoolGateQrPreview .page-titlebar,#headSchoolGateQrPreview .school-gate-preview-toolbar,#headSchoolGateQrPreview .school-gate-preview-actions,#headSchoolGateQrPreview .school-gate-preview-note{display:none!important}#headSchoolGateQrPreview .page,#headSchoolGateQrPreview .school-gate-poster-shell{margin:0!important;padding:0!important;border:0!important;background:#fff!important}#headSchoolGateQrPreview .school-gate-poster{width:210mm!important;height:297mm!important;max-width:none!important;aspect-ratio:auto!important;margin:0!important;padding:16mm!important;border-radius:0!important;box-shadow:none!important}}@media print{#headSchoolGateQrPreview .school-gate-poster-logo{width:18mm!important;height:18mm!important;border-radius:5mm!important;font-size:16pt!important}#headSchoolGateQrPreview .school-gate-poster-brand{gap:4mm!important}#headSchoolGateQrPreview .school-gate-poster-brand strong{font-size:17pt!important}#headSchoolGateQrPreview .school-gate-poster-brand span:not(.school-gate-poster-logo){font-size:12pt!important;margin-top:1mm!important}#headSchoolGateQrPreview .school-gate-poster-active{font-size:9pt!important;padding:2mm 3mm!important}#headSchoolGateQrPreview .school-gate-poster-intro{margin-top:12mm!important}#headSchoolGateQrPreview .school-gate-poster-kicker{font-size:10pt!important}#headSchoolGateQrPreview .school-gate-poster-intro h1{font-size:44pt!important;margin:3mm 0!important}#headSchoolGateQrPreview .school-gate-poster-intro p{font-size:13pt!important;max-width:140mm!important}#headSchoolGateQrPreview .school-gate-poster-qr-wrap{width:62%!important;margin:10mm auto 8mm!important}#headSchoolGateQrPreview .school-gate-poster-steps{gap:4mm!important}#headSchoolGateQrPreview .school-gate-poster-steps div{padding:4mm!important;border-radius:4mm!important}#headSchoolGateQrPreview .school-gate-poster-steps span{width:9mm!important;height:9mm!important;border-radius:3mm!important;font-size:12pt!important;margin-bottom:2mm!important}#headSchoolGateQrPreview .school-gate-poster-steps strong{font-size:12pt!important}#headSchoolGateQrPreview .school-gate-poster-steps small{font-size:10pt!important}#headSchoolGateQrPreview .school-gate-poster-footer span,#headSchoolGateQrPreview .school-gate-poster-powered{font-size:9pt!important}#headSchoolGateQrPreview .school-gate-poster-footer strong{font-size:11pt!important}}.tabs.three{grid-template-columns:repeat(3,minmax(0,1fr))}.tabs.three .tab{font-size:12px;padding-left:4px;padding-right:4px;white-space:nowrap}.cal-panel{display:grid;gap:10px}.cal-session{padding:15px;display:grid;gap:10px}.cal-session h2{font-size:18px;margin-top:2px}.cal-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.cal-meta{font-size:12px}.cal-term-block{display:grid;gap:10px}.cal-term{padding:14px 15px;display:grid;gap:8px}.cal-term-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.cal-term-top strong{font-size:14px}.cal-term-top small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.cal-right{display:flex;align-items:center;gap:8px}.cal-edit{width:30px;height:30px;border-radius:10px;border:1px solid var(--border);background:var(--surface,#fff);display:grid;place-items:center;color:var(--brand-dark,#08388E);padding:0;cursor:pointer}.cal-edit svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.cal-note{font-size:11px}.cal-gap{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11px;margin:0 6px}.cal-gap:before,.cal-gap:after{content:"";flex:1;border-top:1px dashed var(--border)}.cal-section-title{margin-top:10px}.cal-ex{padding:4px 15px}.cal-ex-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border)}.cal-ex-row:last-child{border-bottom:0}.cal-date{width:44px;flex:none;border-radius:12px;background:#f2f5fa;text-align:center;padding:5px 0;line-height:1.1}.cal-date b{display:block;font-size:15px;color:#20263a}.cal-date span{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.cal-ex-copy{flex:1;min-width:0}.cal-ex-copy strong{font-size:13px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-ex-copy small{font-size:11px;color:var(--muted)}.cal-help{font-size:11px;margin:0 4px}.cal-mini-terms{font-size:12px;color:var(--muted);display:grid;gap:4px;margin-top:6px}.cal-switch-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;margin-top:12px;border-top:1px solid var(--border);font-size:13px}.cal-switch{width:40px;height:24px;border-radius:99px;background:#0b49c8;position:relative;flex:none;border:0;padding:0;cursor:pointer;transition:background .2s ease}.cal-switch:after{content:"";position:absolute;top:3px;left:19px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .2s ease}.cal-switch.off{background:#d5dbe6}.cal-switch.off:after{left:3px}.cal-seg{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:#eef1f6;border-radius:14px;padding:4px}.cal-seg button{border:0;border-radius:11px;padding:10px 0;font-weight:700;font-size:12px;background:transparent;color:#5a6377;cursor:pointer}.cal-seg button.on{background:#fff;color:#08388e;box-shadow:0 2px 8px #20263a14}.cal-pick-row{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:12px 0;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;cursor:pointer}.cal-pick-row:last-child{border-bottom:0}.cal-pick-row strong{display:block;font-size:14px}.cal-pick-row small{font-size:11px}@media (prefers-reduced-motion: reduce){.cal-switch,.cal-switch:after{transition:none}}.cal-term-link{cursor:pointer}.act-month{font-size:10px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:14px 4px 6px}.act-row{display:flex;align-items:center;gap:12px;width:100%;padding:11px 0;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;cursor:pointer}.act-row:last-child{border-bottom:0}.act-row.act-done{opacity:.55;cursor:default}.act-copy{flex:1;min-width:0}.act-copy strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.act-copy small{display:block;font-size:11px;margin-top:2px}.act-tags{display:flex;gap:5px;margin-top:3px;flex-wrap:wrap}.act-tag{font-size:9px;font-weight:850;letter-spacing:.02em;padding:2px 6px;border-radius:999px;border:1px solid var(--border);color:var(--muted);background:var(--surface-soft);white-space:nowrap}.act-tag.closed{color:#a43838;border-color:#a4383840;background:#a4383812}.act-tag.parents{color:#1c7f74;border-color:#1c7f7442;background:#1c7f7412}html[data-theme=dark] .act-tag.closed{color:#ff9aa3;border-color:#ff9aa347;background:#ff9aa317}html[data-theme=dark] .act-tag.parents{color:#68dcce;border-color:#68dcce47;background:#68dcce17}.up-card{padding:13px 14px;display:flex;gap:11px;align-items:flex-start;position:relative;margin-top:14px;cursor:pointer}.up-icon{width:40px;height:40px;border-radius:13px;flex:none;display:grid;place-items:center;background:linear-gradient(145deg,#0b49c8,#119fc6);color:#fff}.up-icon .ui-icon{width:19px;height:19px}.up-copy{flex:1;min-width:0;padding-right:20px}.up-copy .eyebrow{font-size:9px}.up-copy strong{display:block;font-size:14px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.up-copy small{display:block;color:var(--muted);font-size:11.5px;margin-top:3px}.up-close{position:absolute;top:9px;right:9px;width:26px;height:26px;border-radius:9px;border:0;background:transparent;color:var(--muted);font-size:16px;line-height:1;cursor:pointer}.act-icon{width:40px;height:40px;border-radius:13px;flex:none;display:grid;place-items:center;font-size:19px;line-height:1;background:var(--surface-soft);border:1px solid var(--border)}.act-icon-lg{width:56px;height:56px;border-radius:18px;font-size:27px}.act-icon.tint-blue{background:#2c66c91a;border-color:#2c66c933}.act-icon.tint-amber{background:#c684141c;border-color:#c6841438}.act-icon.tint-red{background:#a4383817;border-color:#a4383833}.act-icon.tint-green{background:#1c7f741a;border-color:#1c7f7433}.act-icon.tint-purple{background:#7048b61a;border-color:#7048b633}.act-icon.tint-teal{background:#168aa01a;border-color:#168aa033}.act-icon.tint-grey{background:var(--surface-soft);border-color:var(--border)}.tab-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;margin-left:5px;border-radius:999px;background:var(--surface-soft);color:var(--muted);font-size:10px;font-weight:850;vertical-align:1px}.tab.active .tab-count{color:var(--pp-tab-active-text)}.tabs.compact .tab{font-size:12px;padding-left:4px;padding-right:4px;white-space:nowrap}.act-more{width:30px;height:30px;flex:none;border:0;border-radius:9px;background:transparent;color:var(--muted);cursor:pointer;display:grid;place-items:center}.act-more svg{width:18px;height:18px}.act-more:hover{background:var(--surface-soft);color:var(--text)}.act-add{margin-top:16px}.act-facts>div,.ad-facts>div{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--border);font-size:12.5px}.act-facts>div:last-child,.ad-facts>div:last-child{border-bottom:0}.act-facts span,.ad-facts span{color:var(--muted)}.act-count{display:block;text-align:right;font-size:10.5px;margin-top:4px}.act-menu-head{display:flex;gap:11px;align-items:center;min-width:0}.act-menu-head h2{margin:0;font-size:15px}.act-menu-head small{display:block;font-size:11px;margin-top:2px}.act-menu{margin-top:12px}.act-menu button{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:14px 2px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);font-size:13.5px;font-weight:650;text-align:left;cursor:pointer}.act-menu button:last-child{border-bottom:0}.act-menu button.danger{color:#a43838}html[data-theme=dark] .act-menu button.danger{color:#ff9aa3}.act-picker{margin-top:8px;max-height:46vh;overflow:auto;-webkit-overflow-scrolling:touch}.act-picker button{display:flex;align-items:center;gap:12px;width:100%;padding:10px 2px;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;cursor:pointer;color:var(--text)}.act-picker button:last-child{border-bottom:0}.act-chosen{display:flex;align-items:center;gap:12px;margin-top:12px;padding:11px;border-radius:14px;background:var(--surface-soft);border:1px solid var(--border)}.act-chosen .act-copy strong{font-size:13.5px}.ad-hero{text-align:center;padding:20px 16px 16px}.ad-hero .act-icon{margin:0 auto}.ad-hero h2{margin:11px 0 0;font-size:18px;line-height:1.25}.ad-pills{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin-top:10px}.ad-notes{margin:0;padding:12px 0;font-size:12.5px;line-height:1.55;white-space:pre-wrap}.ad-children{display:flex;flex-direction:column;gap:2px}.ad-child{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border);font-size:13px}.ad-child:last-child{border-bottom:0}.ad-status p{font-size:12.5px;margin:10px 0 12px;line-height:1.5}.ad-all{display:block;margin:16px auto 0}.up-pill{align-self:center;flex:none}.cal-page-title{font-size:19px;line-height:1.25;margin:0}.school-gate-qr-meta{margin-top:10px}.svc-on{color:var(--success)}.svc-off{color:var(--warning)}.credential-slip{margin-top:12px;padding:16px;border-radius:16px;text-align:center;background:var(--surface-soft);border:1px solid var(--border)}.credential-slip h3{margin:0;font-size:14px}.credential-slip p{margin:4px 0;font-size:12px;color:var(--muted)}.credential-slip strong{display:block;margin:10px 0;font-size:26px;letter-spacing:.14em;font-variant-numeric:tabular-nums;color:var(--brand-dark)}@media print{body *{visibility:hidden}.credential-slip,.credential-slip *{visibility:visible}.credential-slip{position:absolute;inset:24px auto auto 0;width:100%;border:0;background:#fff}.credential-slip .btn{display:none}}.svc-optional{color:var(--muted);font-weight:650}.sp-hero{border-radius:22px;overflow:hidden;margin:14px 0 4px;box-shadow:0 12px 30px #102a511a}.sp-hero-top{padding:18px;background:linear-gradient(140deg,#16225a,#0e1a4a);color:#fff;display:flex;gap:14px}.sp-hero-copy{flex:1;min-width:0}.sp-role{display:inline-flex;align-items:center;gap:6px;font-size:9.5px;font-weight:850;letter-spacing:.1em;text-transform:uppercase;color:#8fe3e8;margin-bottom:8px}.sp-role i{width:6px;height:6px;border-radius:50%;background:#3ed0d6;display:block}.sp-school{font-size:9.5px;font-weight:850;letter-spacing:.1em;text-transform:uppercase;color:#a9c0e8}.sp-class{font-size:12px;color:#c9d9f2;margin-top:2px}.sp-name{display:flex;align-items:center;gap:9px;margin:9px 0 12px}.sp-name h1{font-size:21px;line-height:1.15;margin:0;color:#fff}.sp-switch{width:26px;height:26px;border-radius:50%;border:0;background:#ffffff24;color:#fff;display:grid;place-items:center;font-size:11px;flex:none}.sp-facts div{display:flex;gap:10px;align-items:baseline;font-size:12.5px;margin-top:5px}.sp-facts span{color:#a9c0e8;width:78px;flex:none}.sp-facts b{color:#fff;font-weight:750}.sp-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);display:inline-block;margin-right:6px}.sp-dot.present{background:#35d07f}.sp-dot.departed{background:#70b1ff}.sp-dot.absent{background:#c9d9f2}.sp-photo{width:104px;height:104px;border-radius:18px;flex:none;position:relative;padding:0;border:0;background:linear-gradient(160deg,#eaf3ff,#d6e8fb);display:grid;place-items:center;font-size:30px;font-weight:850;color:#123970;letter-spacing:.02em;cursor:pointer}.sp-photo:disabled{cursor:default}.sp-photo img{width:100%;height:100%;object-fit:cover;border-radius:18px}.sp-photo-lg{width:132px;height:176px;margin:14px auto 0;display:grid}.sp-cam{position:absolute;right:-5px;bottom:-5px;width:30px;height:30px;border-radius:50%;background:var(--brand-dark);color:#fff;border:2.5px solid #16225A;display:grid;place-items:center;font-size:13px}.sp-hero-foot{padding:12px 18px;background:#2a3670;color:#fff;display:flex;justify-content:space-between;align-items:center}.sp-hero-foot strong{display:block;font-size:13px}.sp-hero-foot small{display:block;font-size:11px;color:#c9d9f2;margin-top:2px}.sp-hero-foot em{font-style:normal;font-size:11.5px;color:#c9d9f2}.sp-head{margin:0 0 4px}.sp-head h2{font-size:14px}.sp-rows>div{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border);font-size:13px}.sp-rows>div:last-child{border-bottom:0}.sp-rows span{color:var(--muted)}.sp-rows b{font-weight:750;text-align:right}.sp-link{border:0;background:transparent;padding:0;color:var(--brand-dark);font-weight:750;display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}.sp-note{font-size:11.5px;color:var(--muted);text-align:center;margin:12px 0 0;line-height:1.5}.sp-note-block{margin-top:14px}.sp-id{margin-top:10px;padding:12px}.sp-masked{letter-spacing:.22em;font-size:14px;color:var(--text);margin-top:2px}.sp-qr-frame{width:min(100%,240px);margin:10px auto 0;display:grid;place-items:center}.sp-guardian-facts{margin-top:14px;padding:14px}.sp-siblings{margin-top:10px}.sp-sibling{display:flex;align-items:center;gap:11px;width:100%;padding:10px 0;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left;cursor:pointer;color:var(--text)}.sp-sibling:last-child{border-bottom:0}.sp-sibling strong{display:block;font-size:13.5px}.sp-sibling small{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}.sp-soon{text-align:center;padding:34px 20px}.sp-soon>div{font-size:34px}.sp-soon h2{font-size:16px;margin:10px 0 6px}.sp-soon p{font-size:12.5px;margin:0;line-height:1.55}.sp-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}.sp-stat{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:10px 6px;text-align:center}.sp-stat b{display:block;font-size:17px;color:var(--text)}.sp-stat span{display:block;font-size:9.5px;color:var(--muted);margin-top:3px}.sp-month{text-align:center;font-size:14px;font-weight:800;margin-bottom:8px}.sp-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.sp-cal .h{font-size:10px;color:var(--muted);font-weight:800;padding:4px 0}.sp-cal i{font-style:normal;display:grid;place-items:center;height:34px;border-radius:50%;font-size:12.5px;font-weight:700}.d-present{background:#35d07f24;color:#12724a}.d-late{background:#c6841429;color:#8a5a0b}.d-absent{background:#a4383821;color:#a43838}.d-excused{background:#7048b621;color:#5a3b93}.d-today{box-shadow:inset 0 0 0 2px var(--brand-dark)}.sp-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;font-size:10.5px;color:var(--muted)}.sp-legend i{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:5px}.tl{display:flex;flex-direction:column;gap:0}.tl-row{display:flex;gap:12px;align-items:flex-start;position:relative;padding:0 0 18px}.tl-when{width:64px;flex:none;font-size:11px;color:var(--muted);padding-top:2px;text-align:right}.tl-rail{width:12px;flex:none;position:relative;align-self:stretch}.tl-rail:before{content:"";position:absolute;left:5px;top:16px;bottom:-18px;width:2px;background:var(--border)}.tl-row:last-of-type{padding-bottom:0}.tl-row:last-of-type .tl-rail:before{display:none}.tl-dot{position:absolute;left:0;top:4px;width:12px;height:12px;border-radius:50%}.dot-in{background:#35d07f}.dot-out{background:#1e4fd8}.dot-late{background:#e0a32e}.tl-copy{flex:1;min-width:0}.tl-copy strong{display:block;font-size:14px;line-height:1.3}.tl-copy small{display:block;font-size:12px;color:var(--muted);margin-top:4px;line-height:1.45}.tl-tag{display:inline-flex;align-items:center;gap:5px;margin-top:8px;font-size:10px;font-weight:850;padding:3px 9px;border-radius:999px;border:1px solid var(--border)}.tag-g{color:#12724a;background:#35d07f1a;border-color:#35d07f47}.tag-s{color:#1e4fd8;background:#1e4fd814;border-color:#1e4fd83d}.tl-foot{text-align:center;font-size:11px;color:var(--muted);margin-top:4px}.sp-month-nav{margin-bottom:8px}.sp-month-nav .sp-month{margin:0}.sp-month-nav .sp-switch{background:var(--surface-soft);color:var(--text)}.sp-month-nav .sp-switch:disabled{opacity:.35}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .tag-g{color:#68dcce;background:#68dcce17;border-color:#68dcce47}:root:not([data-theme=light]) .tag-s{color:#8ec2ff;background:#8ec2ff17;border-color:#8ec2ff47}}:root[data-theme=dark] .tag-g{color:#68dcce;background:#68dcce17;border-color:#68dcce47}:root[data-theme=dark] .tag-s{color:#8ec2ff;background:#8ec2ff17;border-color:#8ec2ff3d}.ph-busy{display:flex;align-items:center;justify-content:center;gap:10px;opacity:.85;cursor:default}.ph-spin{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;animation:ph-spin .7s linear infinite}@keyframes ph-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.ph-spin{animation-duration:2.4s}}.staff-chips{margin-top:10px}.staff-roles{margin:6px 0 0}.staff-roles button{min-height:44px}.staff-first-field{margin-top:14px}.staff-sheet-copy{margin:4px 0 0}.staff-note{background:#fff6e5;color:#8a5a00;border-radius:14px;padding:10px 12px;font-size:12px;line-height:1.5;margin:12px 0 0}.staff-note-tight{margin:-4px 0 12px}.staff-linkbox{background:var(--surface-soft);border:1px solid var(--border);border-radius:14px;padding:10px 12px;font-size:12px;color:var(--muted);margin-top:12px;overflow-wrap:anywhere}.staff-more{margin-left:auto}.staff-hero{display:flex;align-items:center;gap:14px;margin-top:12px}.staff-hero-text{min-width:0}.staff-hero-text h2{margin:0;font-size:20px}.staff-hero-text p{font-size:12px;margin:4px 0 8px}.staff-avatar-lg{width:64px;height:64px;border-radius:18px;font-size:20px;flex:none}.staff-row{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--border)}.staff-row.last{border-bottom:0}.staff-row span{font-size:12px}.staff-row strong{font-size:12px;text-align:right;min-width:0;overflow-wrap:anywhere}.profile-links{padding-top:2px;padding-bottom:2px}.profile-link{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:56px;padding:10px 0;border:0;border-bottom:1px solid var(--border);background:none;color:var(--text);font:inherit;text-align:left}.profile-link:last-child{border-bottom:0}.profile-link strong{display:block;font-size:13px}.profile-link small{display:block;font-size:11px;margin-top:2px;overflow-wrap:anywhere}.profile-first-field{margin-top:0}.profile-hint{margin:6px 0 4px}.profile-card{display:flex;align-items:center;gap:12px;margin:12px 16px 0;padding:12px;color:var(--text)}.profile-card strong{display:block;font-size:13.5px}.profile-card small{display:block;font-size:11px;color:var(--muted)}.dot-absence{background:#7048b6}.dot-closed{background:var(--muted)}.tag-a{color:#5a3e9b;background:#7048b617;border-color:#7048b642}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .tag-a{color:#c3aeec;background:#c3aeec1a;border-color:#c3aeec47}}:root[data-theme=dark] .tag-a{color:#c3aeec;background:#c3aeec1a;border-color:#c3aeec47}.ph-stage{position:relative;width:min(56vw,224px);aspect-ratio:3/4;margin:12px auto 0;border-radius:18px;overflow:hidden;background:var(--surface-soft);touch-action:none;cursor:grab}.ph-stage:active{cursor:grabbing}.ph-stage img{position:absolute;left:50%;top:50%;transform-origin:center;will-change:transform;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none}.ph-guides{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border-radius:18px;box-shadow:inset 0 0 0 1px #ffffff8c,inset 0 0 0 2px #1023491a}.ph-guides:before,.ph-guides:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:.34}.ph-guides:before{background:linear-gradient(to right,transparent calc(33.33% - .5px),#fff calc(33.33% - .5px),#fff calc(33.33% + .5px),transparent calc(33.33% + .5px)),linear-gradient(to right,transparent calc(66.66% - .5px),#fff calc(66.66% - .5px),#fff calc(66.66% + .5px),transparent calc(66.66% + .5px))}.ph-guides:after{background:linear-gradient(to bottom,transparent calc(33.33% - .5px),#fff calc(33.33% - .5px),#fff calc(33.33% + .5px),transparent calc(33.33% + .5px)),linear-gradient(to bottom,transparent calc(66.66% - .5px),#fff calc(66.66% - .5px),#fff calc(66.66% + .5px),transparent calc(66.66% + .5px))}.ph-guides i{position:absolute;width:20px;height:20px;border:3px solid #fff;border-radius:3px;filter:drop-shadow(0 1px 2px rgba(16,35,73,.45))}.ph-guides i:nth-child(1){top:9px;left:9px;border-right:0;border-bottom:0;border-radius:6px 0 0}.ph-guides i:nth-child(2){top:9px;right:9px;border-left:0;border-bottom:0;border-radius:0 6px 0 0}.ph-guides i:nth-child(3){bottom:9px;left:9px;border-right:0;border-top:0;border-radius:0 0 0 6px}.ph-guides i:nth-child(4){bottom:9px;right:9px;border-left:0;border-top:0;border-radius:0 0 6px}.ph-zoom{display:flex;align-items:center;gap:12px;width:min(70vw,280px);margin:12px auto 0}.ph-zoom span{font-size:17px;color:var(--muted);width:18px;text-align:center;flex:none}.ph-zoom input[type=range]{flex:1;min-width:0;height:44px;accent-color:var(--brand);background:none}.ph-hint{text-align:center;font-size:11.5px;color:var(--muted);margin:2px 0 0;line-height:1.5}.class-locked .advanced-filter-toggle,.class-locked .advanced-filter-panel{display:none}.class-scope-note{display:inline-block;background:#eef3ff;color:#0b49c8;border-radius:10px;padding:6px 10px;font-size:12px;font-weight:700;margin:0 0 10px}.sp-link:disabled{cursor:default;color:var(--text);opacity:1}.sp-link:disabled svg{display:none}.role-hero{position:relative;overflow:hidden;padding:18px;border-radius:24px;background:linear-gradient(135deg,#0b2b78,#0b49c8 55%,#12b9d1 115%);color:#fff;border:0;box-shadow:0 16px 34px #0b49c82e}.role-hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;position:relative;z-index:1}.role-hero-top h1{margin:6px 0 0;font-size:24px;letter-spacing:-.02em}.role-hero-top .eyebrow{font-size:13px;font-weight:700;color:#ffffffc7}.role-hero-top p{margin:6px 0 0;font-size:12px;color:#ffffffc7}.role-hero-badge{width:44px;height:44px;border-radius:15px;flex:none;background:#ffffff21;border:1px solid rgba(255,255,255,.18);display:grid;place-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.role-hero-badge svg{width:22px;height:22px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.role-hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px;position:relative;z-index:1}.role-hero-stat{padding:10px;border-radius:15px;background:#ffffff1a;border:1px solid rgba(255,255,255,.12);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.role-hero-stat strong{display:block;font-size:18px;letter-spacing:-.02em}.role-hero-stat span{display:block;font-size:10px;color:#ffffffb8;font-weight:700;margin-top:2px}.gate-status-strip{display:flex;align-items:center;gap:10px;padding:11px 13px;border-radius:16px;background:var(--surface);border:1px solid var(--border);box-shadow:0 6px 18px #20263a0a;margin-top:14px;font-size:12px}.gate-status-strip span:last-child{margin-left:auto;color:var(--muted);font-size:11px}.live-dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--success);box-shadow:0 0 0 5px #2aa66f14}.scanner{margin:8px 0 14px;background:#121625;border-radius:24px;min-height:430px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;color:#fff}.scanner video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scan-grid{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.08;background-image:linear-gradient(rgba(255,255,255,.6) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.6) 1px,transparent 1px);background-size:28px 28px}.scan-frame{width:220px;height:220px;border:2px solid rgba(255,255,255,.82);border-radius:28px;position:relative;box-shadow:0 0 0 999px #05070d3b;transition:transform .25s ease,border-color .25s ease}.scan-line{position:absolute;left:18px;right:18px;height:2px;top:30%;background:linear-gradient(90deg,transparent,#65D6CE,transparent);animation:scan 2.2s ease-in-out infinite}@keyframes scan{0%,to{top:26%}50%{top:72%}}.scanner-copy{position:absolute;bottom:25px;text-align:center;left:20px;right:20px;z-index:2}.scanner-copy strong{display:block;font-size:14px}.scanner-copy span{display:block;font-size:11.5px;color:#ffffffb8;margin-top:4px}.scanner-action-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.scanner-action-row.single{grid-template-columns:1fr}.scanner-action{min-height:66px;display:flex;align-items:center;gap:10px;justify-content:flex-start;text-align:left;padding:0 14px}.scanner-action small{display:block;color:var(--muted);font-weight:700;font-size:10.5px;margin-top:1px}.qa-icon{width:40px;height:40px;border-radius:50%;flex:none;display:grid;place-items:center;background:linear-gradient(145deg,#e8f2ff,#ddf7f9);color:#0757d8}.qa-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.gate-hero{padding:18px;text-align:center}.gate-hero h1{margin-top:10px;font-size:22px}.gate-hero p{margin:6px 0 0;font-size:12.5px}.school-badge{width:40px;height:40px;border-radius:14px;flex:none;background:linear-gradient(145deg,var(--brand-dark),var(--teal));display:grid;place-items:center;color:#fff;font-weight:900;letter-spacing:-.04em;box-shadow:0 8px 20px #0b49c833}.selection-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.select-card{padding:14px;display:flex;align-items:center;gap:12px;border:2px solid var(--border);border-radius:18px;background:#fff;text-align:left;width:100%;min-height:var(--tap)}.select-card.selected{border-color:var(--brand);background:#f7f8fe}.select-card:disabled{opacity:.55;cursor:not-allowed}.select-card:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.select-card .check{width:24px;height:24px;flex:none;border-radius:50%;border:2px solid var(--border);display:grid;place-items:center;font-size:13px;font-weight:900;color:#fff}.select-card.selected .check{background:var(--brand);border-color:var(--brand)}.select-card small{display:block;margin-top:2px}.sticky-action{position:sticky;bottom:64px;margin-top:18px;z-index:5;background:linear-gradient(to top,var(--bg) 70%,transparent);padding-top:12px}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px;margin-top:14px;border-radius:16px;background:var(--surface-soft);border:1px solid var(--border)}.segmented button{min-height:40px;border-radius:12px;border:0;background:transparent;font-size:12.5px;font-weight:850;color:var(--muted)}.segmented button.selected{background:var(--surface);color:var(--brand-dark);box-shadow:0 2px 8px #20263a12}.segmented button:disabled{opacity:.5}.connection{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:850;color:var(--success)}.connection.error{color:var(--danger)}.connection:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.gate-result{border-left:3px solid var(--success)}.gate-result.has-rejection{border-left-color:var(--warning)}.gate-result p{margin:6px 0 0;font-size:12.5px}
