:root{--ink:#101828;--ink-soft:#3f4b63;--muted:#6b7280;--paper:#f4f5f7;--card:#fff;--line:#e2e5ea;--danger:#c0392b;--danger-soft:#fdecea;--font:-apple-system, "Segoe UI", system-ui, Roboto, Helvetica, Arial, sans-serif;--r-sm:8px;--r-md:12px;--r-lg:18px;--r-pill:999px;--shadow-sm:0 1px 2px #1018280f, 0 1px 6px #1018280d;--shadow-md:0 12px 28px #10182824;--shadow-lg:0 24px 60px #10182842;--ease:cubic-bezier(.22, .61, .36, 1)}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}body{min-height:100vh;font-family:var(--font);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.55}img{max-width:100%;display:block}.icon,.brand-mark{object-fit:contain;flex:none}.icon--empty,.brand-mark--empty{background:repeating-linear-gradient(45deg,#e5e7eb,#e5e7eb 4px,#f3f4f6 4px 8px);border-radius:4px;display:inline-block}.brand-mark--empty{border-radius:8px}button,input{font:inherit;color:inherit}input{background:0 0;border:none}input::-ms-reveal{display:none}input::-ms-clear{display:none}button{cursor:pointer;background:0 0;border:none}ul{list-style:none}a{color:inherit}:focus-visible{outline-offset:2px;border-radius:4px;outline:3px solid #2f6fd6}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;position:absolute;overflow:hidden}.btn{border-radius:var(--r-pill);transition:border-color .18s var(--ease), background-color .18s var(--ease), color .18s var(--ease), transform .18s var(--ease), box-shadow .18s var(--ease);border:1.5px solid #0000;justify-content:center;align-items:center;gap:8px;padding:11px 20px;font-size:14px;font-weight:600;display:inline-flex}.btn:disabled{cursor:not-allowed;opacity:.7}.btn:not(:disabled):active{transform:scale(.98)}.btn--ghost{color:var(--ink-soft);background:var(--card);border-color:var(--line)}.btn--ghost:not(:disabled):hover{color:#2f6fd6;border-color:#2f6fd6}.btn--block{width:100%}.spinner{border:2px solid;border-top-color:#0000;border-radius:50%;flex:none;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.spinner--lg{border-width:3px;width:30px;height:30px}.data-badge{z-index:90;color:#fff;background:#0f172ae0;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;font-weight:700;display:inline-flex;position:fixed;bottom:14px;left:14px;box-shadow:0 4px 14px #0f172a40}.data-badge__dot{background:#f59e0b;border-radius:50%;width:8px;height:8px}.data-badge--live .data-badge__dot{background:#22c55e}.data-badge button{color:#0f172a;background:#fde68a;border-radius:999px;padding:2px 8px;font-size:11.5px;font-weight:800}@media print{.data-badge{display:none}}.session-notice{z-index:95;color:#7c2d12;background:#ffedd5;border:1px solid #fdba74;border-radius:12px;align-items:center;gap:14px;max-width:min(560px,100vw - 32px);padding:12px 16px;font-size:13.5px;font-weight:600;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #0f172a2e}.session-notice button{color:inherit;flex:none;font-weight:800}[data-locked=true]{-webkit-user-select:none;user-select:none;position:relative}[data-locked=true]:after{content:"";z-index:40;animation:fade-in .18s var(--ease) both;background:#02061794;position:absolute;inset:0}.route-loader{z-index:190;color:#fff;animation:fade-in .15s var(--ease) both;background:#101828;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:fixed;inset:0}.route-loader p{color:#ffffffd9;font-size:14px}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.skeleton{vertical-align:middle;opacity:.16;background:currentColor;border-radius:5px;animation:1.6s ease-in-out infinite skeleton-pulse;display:inline-block}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.crop-backdrop{z-index:200;background:#0f172a8c;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.crop-panel{width:min(500px,100%);max-height:calc(100vh - 32px);color:var(--ink);background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);overflow:auto}.crop-panel__head{color:#fff;background:#2563eb;justify-content:space-between;align-items:center;padding:12px 16px;font-size:14px;font-weight:700;display:flex}.crop-panel__head button{color:#fff;border-radius:50%;place-items:center;width:24px;height:24px;display:grid}.crop-panel__body{flex-direction:column;gap:14px;padding:16px;display:flex}.crop-note,.crop-error{margin:0;font-size:13px;line-height:1.5}.crop-error{color:var(--danger)}.crop-row{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:16px;display:flex}.crop-stage{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:var(--r-md);background:#0f172a;flex:none;max-width:100%;position:relative;overflow:hidden}.crop-stage:active{cursor:grabbing}.crop-stage:focus-visible{outline-offset:3px;outline:3px solid #2563eb}.crop-image{pointer-events:none;max-width:none;position:absolute}.crop-guide{pointer-events:none;border:1.5px solid #fffffff2;position:absolute;overflow:hidden;box-shadow:0 0 0 999px #0f172a99}.crop-guide__circle{border:2px dashed #fffffff2;border-radius:50%;position:absolute;inset:0;box-shadow:0 0 0 999px #0f172a59}.crop-preview{flex-direction:column;align-items:center;gap:6px;display:flex}.crop-preview__label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:800}.crop-preview__frame{box-shadow:0 0 0 3px var(--line);background:#0f172a;position:relative;overflow:hidden}.crop-preview__frame--circle{border-radius:50%}.crop-zoom{align-items:center;gap:10px;display:flex}.crop-zoom input{accent-color:#2563eb;flex:1}.crop-zoom button{width:32px;height:32px;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:50%;flex:none;font-size:18px;font-weight:800}.crop-zoom button:disabled{opacity:.4}.crop-panel__actions{justify-content:flex-end;gap:10px;padding:0 16px 16px;display:flex}.crop-panel__save{color:#fff;background:#2563eb}.setpw{background:var(--paper);place-items:center;min-height:100vh;padding:24px 16px;display:grid}.setpw__card{background:var(--card);border-radius:var(--r-lg);width:min(420px,100%);box-shadow:var(--shadow-md);flex-direction:column;gap:12px;padding:28px 24px;display:flex}.setpw__card h1{margin:4px 0 0;font-size:20px}.setpw__card>p{color:var(--ink-soft);margin:0;font-size:14px;line-height:1.5}.setpw__field{flex-direction:column;gap:4px;font-size:13px;font-weight:600;display:flex}.setpw__field input{font:inherit;border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;font-weight:400}.setpw__hint{color:var(--muted);margin:0;font-size:12px}.setpw__error{color:var(--danger);background:var(--danger-soft);border-radius:var(--r-sm);margin:0;padding:8px 10px;font-size:13px;font-weight:600}.setpw__submit{color:#fff;background:#2563eb}.setpw__logout{color:var(--muted);align-self:center;font-size:13px;text-decoration:underline}.count-badge{color:#fff;background:#dc2626;border-radius:999px;flex:none;place-items:center;min-width:19px;height:19px;margin-left:auto;padding:0 5px;font-size:11px;font-weight:800;line-height:1;display:inline-grid;box-shadow:0 0 0 2px #ffffffd9}.er-tab .count-badge,h2 .count-badge,.sa-notif .count-badge{vertical-align:middle;margin-left:6px}.ad-icon-btn{position:relative}.count-badge--corner{margin:0;position:absolute;top:-4px;right:-4px}.account-id{font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--muted);opacity:.8;margin:2px 0 0;font-size:11px}.th-user-menu__id{padding:6px 12px 4px}.vq-mark{flex:none;display:block}.vq-signature{opacity:.6;-webkit-user-select:none;user-select:none;pointer-events:none;align-items:center;gap:8px;margin:auto 14px 0 2px;padding:8px 10px;display:flex;position:sticky;bottom:16px}.vq-signature--dark{color:#e5e7f8}.vq-signature__name{letter-spacing:.14em;font-size:12px;font-weight:800}.vq-signature__version{opacity:.75;font-size:11px}.vq-powered{font:inherit;color:inherit;opacity:.8;background:0 0;border:none;align-items:center;gap:6px;font-size:12px;display:inline-flex}button.vq-powered{cursor:pointer}button.vq-powered:hover{opacity:1}.vq-powered strong{letter-spacing:.1em;font-weight:800}.route-loader__mark{opacity:.95}.route-loader__brand{letter-spacing:.28em;color:#ffffff73;font-size:11px;font-weight:800;position:absolute;bottom:28px}.vq-about__backdrop{z-index:210;background:#0f172a8c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.vq-about{color:#1f2937;background:#fff;border-radius:16px;width:min(460px,100%);max-height:calc(100vh - 40px);padding:26px 26px 22px;position:relative;overflow-y:auto;box-shadow:0 24px 60px #0f172a4d}.vq-about__close{color:#6b7280;border-radius:8px;width:30px;height:30px;font-size:20px;line-height:1;position:absolute;top:10px;right:12px}.vq-about__close:hover{color:#111827;background:#f3f4f6}.vq-about__head{align-items:center;gap:14px;margin-bottom:14px;display:flex}.vq-about__head h2{letter-spacing:.16em;color:#1e3a8a;margin:0;font-size:22px;font-weight:800}.vq-about__head p{color:#6b7280;margin:2px 0 0;font-size:12.5px}.vq-about__intro{margin:0 0 12px;font-size:14px;line-height:1.55}.vq-about__list{flex-direction:column;gap:8px;margin:0 0 16px;padding:0;font-size:13.5px;line-height:1.5;list-style:none;display:flex}.vq-about__list li{border-left:3px solid #318ce7;padding-left:14px}.vq-about__foot{color:#6b7280;border-top:1px solid #e5e7eb;margin:0;padding-top:12px;font-size:12px}.landing{--lp-navy:#0f1533;--lp-blue:#1d4ed8;--lp-glow:#7fa8ff;--lp-gutter:clamp(16px, 5vw, 72px);background:var(--lp-navy);flex-direction:column;min-height:100vh;display:flex;position:relative}.lp-shell{width:100%;max-width:1200px;margin-inline:auto;padding-inline:28px}.lp-header{z-index:10;-webkit-backdrop-filter:blur(14px)saturate(1.1);background:#0f1533db;transition:background-color .35s,box-shadow .35s;position:fixed;top:0;left:0;right:0}.lp-header:after{content:"";pointer-events:none;background:linear-gradient(#0f153399,#0000);height:56px;transition:opacity .35s;position:absolute;top:100%;left:0;right:0}.lp-header.is-scrolled{background-color:#0f1533f5;box-shadow:0 10px 30px -18px #000c}.lp-header.is-scrolled:after{opacity:0}.lp-header__row{justify-content:space-between;align-items:center;gap:20px;max-width:none;min-height:76px;padding-inline:clamp(12px,1.6vw,24px);display:flex}.lp-brand{align-items:center;gap:12px;min-width:0;display:flex}.lp-brand__name{color:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:700;overflow:hidden}.lp-login-btn{color:#fff;white-space:nowrap;background:var(--lp-blue);border-color:var(--lp-blue);flex:none}.lp-login-btn:hover{border-color:#fff;box-shadow:0 0 0 3px #7fa8ff59}.lp-hero{isolation:isolate;background:var(--lp-navy);align-items:center;min-height:100svh;padding:96px 0 56px;display:flex;position:relative;overflow:hidden}.lp-hero:before{content:"";z-index:-2;filter:brightness(1.12)contrast(1.06)saturate(1.1);background:url(/background.jpg) 50%/cover no-repeat;animation:2.4s cubic-bezier(.22,.61,.36,1) both hero-settle,26s ease-in-out 2.4s infinite alternate hero-drift;position:absolute;inset:0}.lp-hero:after{content:"";z-index:-1;background:linear-gradient(to bottom, transparent 82%, var(--lp-navy) 100%), radial-gradient(ellipse 46% 44% at 80% 50%, #0f1533e6 0%, #0f1533bf 38%, #0f153366 68%, transparent 100%), linear-gradient(270deg, #0f153359 0%, #0f15331a 50%, transparent 100%);position:absolute;inset:0}.lp-hero__inner{max-width:640px;margin-left:auto;margin-right:var(--lp-gutter);text-align:right;padding-right:26px;position:relative}.lp-hero__inner .lp-hero__tagline{align-items:flex-end}.lp-hero__inner:before{content:"";background:linear-gradient(to bottom, var(--lp-glow), var(--lp-blue));transform-origin:top;border-radius:4px;width:4px;animation:.8s cubic-bezier(.22,.61,.36,1) .2s both rule-draw;position:absolute;top:0;bottom:0;right:0;box-shadow:0 0 14px #7fa8ff8c}.lp-hero__tagline{letter-spacing:-.01em;color:#fff;text-shadow:0 2px 22px #050819b3,0 1px 3px #05081980;flex-direction:column;font-size:40px;font-weight:800;line-height:1.28;animation:.7s cubic-bezier(.22,.61,.36,1) .35s both hero-rise;display:flex}.lp-hero__tagline-accent{color:var(--lp-glow);text-shadow:0 0 24px #7fa8ff73,0 2px 18px #00000059;animation:.7s cubic-bezier(.22,.61,.36,1) .5s both hero-rise}.lp-hero__welcome{letter-spacing:.04em;text-transform:uppercase;color:#ffffffd9;text-shadow:0 1px 12px #0000008c;margin-top:22px;font-size:15px;font-weight:600;animation:.7s cubic-bezier(.22,.61,.36,1) .65s both hero-rise}@keyframes hero-settle{0%{opacity:.4;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@keyframes hero-drift{0%{transform:scale(1)}to{transform:scale(1.06)translate(-1%)}}@media (prefers-reduced-motion:reduce){.lp-hero:before{animation:none}}@keyframes rule-draw{0%{transform:scaleY(0)}}@keyframes hero-rise{0%{opacity:0;transform:translateY(18px)}}.lp-footer{background:var(--lp-navy);color:#c7cdf0;position:relative}.lp-footer__row{max-width:none;padding-block:22px;padding-inline:var(--lp-gutter);justify-content:space-between;align-items:center;gap:30px;display:flex}.lp-footer__details p{-webkit-user-select:text;user-select:text;align-items:center;gap:8px;margin-top:8px;font-size:13.5px;line-height:1.6;display:flex}.lp-footer__details p:first-child{margin-top:0}.lp-footer__social-row{gap:10px;display:flex}.lp-social-icon{color:#fff;background:#ffffff14;border:1px solid #ffffff1f;border-radius:50%;place-items:center;width:44px;height:44px;display:grid}.lp-footer__baseline{width:auto;max-width:none;margin-inline:var(--lp-gutter);text-align:center;color:#8f9ad6;border-top:1px solid #ffffff14;padding-block:14px;padding-inline:0;font-size:12px}.lp-secret-key{color:#fff;opacity:.15;place-items:center;width:20px;height:20px;display:grid;position:absolute;bottom:13px;right:14px}@media (width<=640px){.lp-hero__inner{margin-left:var(--lp-gutter);padding-right:18px}.lp-hero:after{background:linear-gradient(to bottom, transparent 82%, var(--lp-navy) 100%), radial-gradient(ellipse 95% 42% at 62% 50%, #0f1533e6 0%, #0f1533b8 45%, transparent 100%)}.lp-hero__tagline{font-size:28px}.lp-hero__welcome{font-size:13px}.lp-footer__row{flex-direction:column;align-items:flex-start}}.lp-hero__system{letter-spacing:.02em;color:#ffffffb8;text-shadow:0 1px 10px #0000008c;margin-top:10px;font-size:13px;animation:.7s cubic-bezier(.22,.61,.36,1) .8s both hero-rise}.lp-hero__system button{font:inherit;letter-spacing:.14em;color:#fff;cursor:pointer;border-bottom:1px dotted #ffffff80;padding:0;font-weight:800}.lp-hero__system button:hover{border-bottom-style:solid}.lp-footer__baseline{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 18px;display:flex}.lp-footer__powered{color:#c9cff3}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fade-in .18s var(--ease) both;--spring:cubic-bezier(.34, 1.56, .64, 1);--lg-accent:#0f1533;--lg-accent-2:#24307a;--lg-field:#f2f4f9;--lg-line:#e1e5f0;--lg-ink:#0f1533;--lg-muted:#6b7393;background:#0f15338c;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{width:min(820px,100%);height:min(540px,100vh - 40px);animation:modal-pop .42s var(--spring) both;background:#fff;border-radius:30px;position:relative;overflow:hidden;box-shadow:0 30px 70px -20px #0f15338c,0 0 0 1px #fff9}.modal__form{z-index:1;width:50%;height:100%;color:var(--lg-ink);text-align:center;background:#fff;flex-direction:column;justify-content:center;padding:40px;transition:right .6s ease-in-out 1.2s,visibility 0s 1s;display:flex;position:absolute;top:0;right:0;overflow-y:auto}.modal.is-active .modal__form{right:50%}.modal__form--login,.modal.is-active .modal__form--roles{visibility:hidden}.modal.is-active .modal__form--login{visibility:visible}.modal__toggle{pointer-events:none;position:absolute;inset:0}.modal__toggle:before{content:"";z-index:2;background:radial-gradient(#ffffff17 1.2px, transparent 1.7px) 0 0 / 22px 22px, linear-gradient(120deg, var(--lg-accent) 0%, var(--lg-accent-2) 45%, var(--lg-accent) 75%, #1a2357 100%);border-radius:150px;width:300%;height:100%;transition:left 1.8s ease-in-out;position:absolute;top:0;left:-250%;box-shadow:0 0 40px #0f153359}.modal.is-active .modal__toggle:before{left:50%}.modal__panel{z-index:2;color:#fff;text-align:center;pointer-events:auto;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:50%;height:100%;padding:40px;transition:left .6s ease-in-out,right .6s ease-in-out;display:flex;position:absolute;top:0}.modal__panel h2{margin-top:14px;font-size:30px;font-weight:800;line-height:1.2;position:relative}.modal__panel p{letter-spacing:.16em;text-transform:uppercase;color:#ffffffb8;align-items:center;gap:10px;margin-bottom:22px;font-size:12px;font-weight:600;display:inline-flex;position:relative}.modal__panel p:before,.modal__panel p:after{content:"";background:#ffffff73;width:22px;height:1.5px}.modal__panel-btn{position:relative}.modal__badge{background:#fff;border-radius:50%;place-items:center;width:96px;height:96px;animation:4s ease-in-out infinite badge-float;display:grid;position:relative;box-shadow:0 10px 30px -8px #00000073,0 0 0 6px #ffffff1f}.modal__badge:before,.modal__badge:after{content:"";border:1.5px solid #ffffff8c;border-radius:50%;animation:3s ease-out infinite ripple;position:absolute;inset:0}.modal__badge:after{animation-delay:1.5s}.modal__decor{pointer-events:none;position:absolute;inset:0}.modal__panel--right .modal__decor{transform:scaleX(-1)}.modal__ring,.modal__dot{border-radius:50%;position:absolute}.modal__ring{border:1.5px solid #ffffff24;animation:9s ease-in-out infinite drift}.modal__ring--a{width:120px;height:120px;top:7%;left:7%}.modal__ring--b{border-style:dashed;border-color:#ffffff38;width:64px;height:64px;animation:18s linear infinite spin-slow;bottom:8%;left:34%}.modal__dot{background:#ffffff80;animation:3.4s ease-in-out infinite twinkle}.modal__dot--a{width:7px;height:7px;top:20%;right:30%}.modal__dot--b{width:5px;height:5px;animation-delay:-1.2s;bottom:27%;left:13%}.modal__dot--c{width:4px;height:4px;animation-delay:-2.3s;top:58%;right:16%}.modal__panel--left{transition-delay:1.2s;left:0}.modal.is-active .modal__panel--left{transition-delay:.6s;left:-50%}.modal__panel--right{transition-delay:.6s;right:-50%}.modal.is-active .modal__panel--right{transition-delay:1.2s;right:0}.modal__panel-btn{color:#fff;border-radius:var(--r-pill);width:160px;height:46px;transition:background-color .2s var(--ease), color .2s var(--ease), box-shadow .2s var(--ease);background:0 0;border:2px solid #ffffffd9;justify-content:center;align-items:center;gap:8px;font-size:15px;font-weight:600;display:inline-flex}.modal__panel-btn:hover{box-shadow:0 8px 22px -8px #00000080}.modal__panel-btn .icon{filter:brightness(0)invert();transition:filter .2s var(--ease), transform .25s var(--spring)}.modal__panel-btn:hover{color:var(--lg-accent);background:#fff}.modal__panel-btn:hover .icon{filter:none;transform:translate(-3px)}.modal__close{z-index:3;border:1.5px solid var(--lg-line);width:34px;height:34px;transition:border-color .18s var(--ease), transform .25s var(--spring), background-color .18s var(--ease);background:#fff;border-radius:50%;place-items:center;display:grid;position:absolute;top:16px;right:16px;box-shadow:0 4px 12px -4px #0f153359}.modal__close .icon{filter:brightness(0);opacity:.7}.modal__close:hover{border-color:var(--lg-accent);transform:rotate(90deg)}.modal__title{color:var(--lg-ink);margin-bottom:4px;font-size:34px;font-weight:800}.modal__title:after{content:"";background:linear-gradient(90deg, var(--lg-accent), var(--lg-accent-2));border-radius:var(--r-pill);transform-origin:50%;width:46px;height:4px;animation:bar-in .6s var(--ease) backwards;animation-delay:calc(var(--base,0s) + .35s);margin:10px auto 0;display:block}.modal__subtitle{color:var(--lg-muted);margin-bottom:22px;font-size:14px}.role-grid{grid-template-columns:1fr 1fr;gap:16px;margin-top:26px;display:grid}.role-card{border:1.5px solid var(--lg-line);transition:border-color .2s var(--ease), transform .3s var(--spring), box-shadow .25s var(--ease);background:#fff;border-radius:14px;flex-direction:column;align-items:center;gap:12px;padding:24px 12px 22px;display:flex;position:relative;overflow:hidden;box-shadow:0 6px 16px -12px #0f153366}.role-card:before{content:"";pointer-events:none;background:linear-gradient(115deg,#0000 35%,#24307a14 50%,#0000 65%);position:absolute;inset:0;transform:translate(-110%)}.role-card:hover:before{transition:transform .75s var(--ease);transform:translate(110%)}.role-card:after{content:"";background:linear-gradient(90deg, var(--lg-accent), var(--lg-accent-2));height:4px;transition:transform .35s var(--ease);position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.role-card:hover:after,.role-card:focus-visible:after{transform:scaleX(1)}.role-card:hover,.role-card:focus-visible{border-color:var(--lg-accent);outline:none;transform:translateY(-5px);box-shadow:0 18px 30px -16px #0f15338c}.role-card:active{transform:translateY(-1px)scale(.97)}.role-card__icon{background:var(--lg-field);width:82px;height:82px;transition:box-shadow .3s var(--ease), background-color .3s var(--ease);border-radius:50%;place-items:center;display:grid;box-shadow:0 0 #0f153300}.role-card:hover .role-card__icon{box-shadow:0 0 0 3px var(--lg-accent), 0 0 0 8px #0f153314;background:#fff}.role-card--teacher:hover .role-card__icon .icon{animation:icon-hop .6s var(--spring)}.role-card--admin:hover .role-card__icon .icon{animation:icon-turn .7s var(--spring)}.role-card__name{color:var(--lg-ink);transition:color .2s var(--ease);font-size:16px;font-weight:700}.role-card:hover .role-card__name{color:var(--lg-accent)}.field{text-align:left;margin-bottom:20px}.field__control{position:relative}.field__input{width:100%;height:50px;color:var(--lg-ink);background:var(--lg-field);transition:border-color .2s var(--ease), background-color .2s var(--ease), box-shadow .2s var(--ease);border:2px solid #0000;border-radius:8px;padding:16px 50px 4px 20px;font-size:15px;font-weight:500}.field__input:focus{border-color:var(--lg-accent);background:#fff;outline:none;box-shadow:0 0 0 4px #0f153314}.field__input::placeholder{color:#a3aac2;opacity:0;transition:opacity .2s var(--ease)}.field__input:focus::placeholder{opacity:1}.field__label{color:var(--lg-muted);pointer-events:none;transition:top .2s var(--ease), font-size .2s var(--ease), color .2s var(--ease);font-size:15px;font-weight:500;position:absolute;top:50%;left:20px;transform:translateY(-50%)}:-webkit-any(.field__input:focus~.field__label,.field__input:not(:placeholder-shown)~.field__label,.field__input:-webkit-autofill~.field__label){color:var(--lg-accent);font-size:11px;font-weight:600;top:13px}:is(.field__input:focus~.field__label,.field__input:not(:placeholder-shown)~.field__label,.field__input:autofill~.field__label){color:var(--lg-accent);font-size:11px;font-weight:600;top:13px}.field__line{display:none}.field__icon{pointer-events:none;display:grid;position:absolute;top:50%;right:20px;transform:translateY(-50%)}.field__reveal{color:#6b7280;border-radius:8px;place-items:center;width:34px;height:34px;display:grid;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.field__reveal:hover{color:#111827;background:var(--lg-line)}.field__reveal .icon{transition:transform .25s var(--spring)}.field__reveal:hover .icon{transform:scale(1.15)}.remember{color:var(--lg-ink);cursor:pointer;align-items:center;gap:9px;margin:-4px 0 20px;font-size:14px;display:flex}.remember__input{opacity:0;width:0;height:0;position:absolute}.remember__box{background:var(--lg-field);width:19px;height:19px;transition:background-color .15s var(--ease), border-color .15s var(--ease);border:1.5px solid #c7cddd;border-radius:5px;place-items:center;display:grid}.remember__box .icon{opacity:0;filter:brightness(0)invert();transition:opacity .15s var(--ease)}.remember:hover .remember__box{border-color:var(--lg-accent)}.remember__input:focus-visible+.remember__box{box-shadow:0 0 0 3px #0f153333}.remember__input:checked+.remember__box{background:var(--lg-accent);border-color:var(--lg-accent);animation:check-pop .32s var(--spring)}.remember__input:checked+.remember__box .icon{opacity:1}.modal__submit{letter-spacing:.02em;color:#fff;background:linear-gradient(90deg, var(--lg-accent), var(--lg-accent-2), var(--lg-accent));height:48px;transition:background-position .6s var(--ease), box-shadow .25s var(--ease), transform .18s var(--ease);background-size:200% 100%;border:none;border-radius:10px;font-size:16px;font-weight:600;position:relative;overflow:hidden;box-shadow:0 10px 22px -12px #0f1533b3}.modal__submit:after{content:"";pointer-events:none;background:linear-gradient(110deg,#0000 30%,#ffffff47 50%,#0000 70%);position:absolute;inset:0;transform:translate(-100%)}.modal__submit:not(:disabled):hover{background-position:100% 0;transform:translateY(-2px);box-shadow:0 16px 28px -12px #0f1533bf}.modal__submit:not(:disabled):hover:after{transition:transform .7s var(--ease);transform:translate(100%)}.auth-error{text-align:left;color:var(--danger);background:var(--danger-soft);animation:shake .45s var(--ease) both;border-radius:8px;margin-bottom:16px;padding:10px 12px;font-size:13px}.demo-hint{color:var(--lg-muted);margin-top:16px;font-size:12.5px}.demo-hint code{color:var(--lg-ink)}.reveal{animation:rise-in .5s var(--ease) backwards;animation-delay:calc(var(--base,0s) + var(--i,0) * 70ms + 80ms)}.modal__form--login,.modal.has-returned .modal__form--roles{--base:1.2s}@media (width<=650px){.modal{border-radius:24px;height:calc(100vh - 40px)}.modal__form{justify-content:flex-start;width:100%;height:70%;padding:24px 22px;transition:bottom .6s ease-in-out 1.2s,visibility 0s 1s;top:auto;bottom:0}.modal.is-active .modal__form{bottom:30%;right:0}.modal__toggle:before{border-radius:20vw;width:100%;height:300%;transition:top 1.8s ease-in-out;top:-270%;left:0}.modal.is-active .modal__toggle:before{top:70%;left:0}.modal__panel{gap:2px;width:100%;height:30%;padding:16px;transition:top .6s ease-in-out,bottom .6s ease-in-out}.modal__panel h2{margin-top:4px;font-size:21px}.modal__panel p{margin-bottom:8px;font-size:11px}.modal__badge,.modal__ring--a{display:none}.modal__ring--b{top:14%;bottom:auto;left:8%}.modal__panel--left{top:0}.modal.is-active .modal__panel--left{top:-30%;left:0}.modal__panel--right{top:auto;bottom:-30%;right:0}.modal.is-active .modal__panel--right{bottom:0}.modal__title{font-size:28px}.role-grid{margin-top:18px}}@keyframes badge-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes ripple{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.7)}}@keyframes drift{0%,to{transform:translate(0)}50%{transform:translate(12px,14px)}}@keyframes spin-slow{to{transform:rotate(360deg)}}@keyframes twinkle{0%,to{opacity:.25;transform:scale(.8)}50%{opacity:.9;transform:scale(1.2)}}@keyframes bar-in{0%{transform:scaleX(0)}}@keyframes icon-hop{0%{transform:translateY(0)rotate(0)}40%{transform:translateY(-8px)rotate(-8deg)scale(1.08)}70%{transform:translateY(0)rotate(4deg)scale(.98)}to{transform:none}}@keyframes icon-turn{0%{transform:rotate(0)scale(1)}50%{transform:rotate(60deg)scale(1.08)}to{transform:none}}@keyframes modal-pop{0%{opacity:0;transform:translateY(18px)scale(.94)}to{opacity:1;transform:none}}@keyframes check-pop{0%{transform:scale(.7)}60%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(2px)}}@media (prefers-reduced-motion:reduce){.modal__form,.modal__panel,.modal__close,.modal__toggle:before,.modal.is-active .modal__form,.modal.is-active .modal__panel,.modal.is-active .modal__close{transition-delay:0s!important}.modal__form--login,.modal.has-returned .modal__form--roles{--base:0s}.modal__badge,.modal__badge:before,.modal__badge:after,.modal__ring,.modal__dot{animation:none}.modal__badge:before,.modal__badge:after{display:none}.modal-backdrop{-webkit-backdrop-filter:none;backdrop-filter:none}}.sa-backdrop{z-index:110;animation:fade-in .18s var(--ease) both;background:#03050cb8;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.sa-modal{text-align:center;border-radius:var(--r-lg);width:min(452px,100%);max-height:calc(100vh - 40px);box-shadow:0 0 0 1px #60a5fa2e, 0 0 22px #3b82f647, var(--shadow-lg);animation:rise-in .22s var(--ease) both;background:#141419;border:1px solid #60a5fa8c;padding:28px 32px;position:relative;overflow-y:auto}.sa-close{color:#fff9;width:38px;height:38px;transition:border-color .18s var(--ease), color .18s var(--ease);border:1.5px solid #ffffff29;border-radius:50%;place-items:center;display:grid;position:absolute;top:12px;right:12px}.sa-close:hover{color:#fff;border-color:#60a5fa99}.sa-step{animation:rise-in .28s var(--ease) both}.sa-title{color:#fff;margin-bottom:18px;font-size:19px;font-weight:700}.sa-title__accent{color:#facc15}.sa-email{color:#fff;margin-top:-14px;margin-bottom:16px;font-size:12px}.sa-approve{color:#facc15;margin-bottom:6px;font-size:14.5px;font-weight:700}.sa-otp-hint{color:#fff9;margin-bottom:18px;font-size:12.5px}.sa-label{text-align:left;color:#facc15;margin-bottom:7px;font-size:12.5px;font-weight:700;display:block}.sa-error{text-align:left;color:#fca5a5;border-radius:var(--r-sm);background:#dc262626;border:1px solid #dc262659;margin-bottom:14px;padding:10px 12px;font-size:13px}.sa-field{border-radius:var(--r-md);transition:border-color .18s var(--ease);background:#fff;border:1.5px solid #0000;align-items:center;gap:10px;margin-bottom:13px;padding:0 12px;display:flex}.sa-field:focus-within{border-color:#60a5fa}.sa-field__icon{color:#6b7280;flex:none}.sa-field__divider{background:#d8dce3;flex:none;align-self:stretch;width:1px}.sa-field__input{color:#111827;background:0 0;border:none;flex:1;min-width:0;padding:10px 0}.sa-field__input:focus{outline:none}.sa-field__reveal{color:#6b7280;border-radius:6px;flex:none;place-items:center;width:26px;height:26px;display:grid}.sa-field__reveal:hover{color:#111827}.sa-submit{color:#fff;border-radius:var(--r-pill);transition:box-shadow .18s var(--ease), background-color .18s var(--ease), color .18s var(--ease), opacity .18s var(--ease);background:#2563eb;border:1.5px solid #2563eb;justify-content:center;align-items:center;gap:8px;margin-top:6px;padding:12px 38px;font-size:14px;font-weight:700;display:inline-flex}.sa-submit:not(:disabled):hover{box-shadow:0 0 0 3px #60a5fa4d}.sa-submit:disabled{color:#fff6;cursor:not-allowed;background:#ffffff14;border-color:#0000}.sa-otp-row{justify-content:center;align-items:center;gap:12px;margin-bottom:22px;display:flex}.sa-otp-boxes{gap:7px;display:flex}.sa-otp-box{text-align:center;color:#111827;border-radius:var(--r-sm);width:36px;height:48px;transition:border-color .18s var(--ease);background:#fff;border:1.5px solid #0000;font-size:18px;font-weight:700}.sa-otp-box:focus{border-color:#60a5fa;outline:none}.sa-send{color:#60a5fa;flex:none;font-size:13px;font-weight:700}.sa-send:hover{color:#93c5fd;text-decoration:underline}.sa-send:disabled{color:#ffffff73;cursor:default;text-decoration:none}.sa-switch{color:#93c5fd;margin:12px auto 0;font-size:12.5px;font-weight:600;display:block}.sa-switch:hover{text-decoration:underline}.sa-backup-input{letter-spacing:.12em;text-transform:uppercase;font-family:ui-monospace,Consolas,monospace}.teacher-app{--th-header-bg:#1e1b4b;--th-header-ink:#fff;--th-header-hover-bg:#ffffff1f;--th-header-hover-border:#ffffff8c;--th-sidebar-bg:#25225c;--th-sidebar-ink:#d3dbf7;--th-sidebar-hover-bg:#ffffff1f;--th-sidebar-hover-ink:#fff;--th-sidebar-active-bg:#eef1f9;--th-sidebar-active-ink:#16234f;--th-canvas:#eef1f9;--th-canvas-ink:#101828;--th-table-head:#1e3a8a;--th-table-head-ink:#fff;--th-today-head:#3b82f6;--th-time-bg:#f4f6fc;--th-time-ink:#26305c;--th-grid:#5b6475;--th-break-bg:#fef3c7;--th-break-ink:#92400e;--th-grey:#e5e7eb;--th-grey-ink:#6b7280;--th-active:#dbeafe;--th-active-border:#2563eb;--th-active-ink:#1e3a8a;--th-accent:#2563eb;--th-bg:#eef1f9;--th-card:#fff;--th-ink:#101828;--th-line:#e1e5f2;--th-chart-rate:#2563eb;--th-chart-absent:#dc2626;--th-chart-late:#a16207;--th-chart-grid:#e5e9f2;--th-risk-track:#fee2e2;background:var(--th-canvas);min-height:100vh;color:var(--th-ink);font-family:"Plus Jakarta Sans", var(--font);flex-direction:column;display:flex}.teacher-app[data-theme=dark]{--th-header-bg:#0e1836;--th-header-ink:#f4f6ff;--th-header-hover-bg:#ffffff1f;--th-header-hover-border:#ffffff8c;--th-sidebar-bg:#1c2a5a;--th-canvas:#0e1836;--th-canvas-ink:#f4f6ff;--th-sidebar-ink:#a9b5e6;--th-sidebar-hover-bg:#ffffff1a;--th-sidebar-hover-ink:#fff;--th-sidebar-active-bg:#0e1836;--th-sidebar-active-ink:#f4f6ff;--th-table-head:#26386f;--th-table-head-ink:#eef2ff;--th-today-head:#4f7dff;--th-time-bg:#1c2448;--th-time-ink:#c7d2ff;--th-grid:#3d4a7a;--th-break-bg:#78350f;--th-break-ink:#fde68a;--th-grey:#2b2f3a;--th-grey-ink:#9aa1b1;--th-active:#164e63;--th-active-border:#38bdf8;--th-active-ink:#bae6fd;--th-accent:#5b8dff;--th-bg:#0b0f22;--th-card:#161d3a;--th-ink:#e7e9ee;--th-line:#262f56;--th-chart-rate:#7aa2ff;--th-chart-absent:#f87171;--th-chart-late:#facc15;--th-chart-grid:#2a3358;--th-risk-track:#f871712e}.teacher-app[data-theme=semidark]{--th-header-bg:#1c1a36;--th-header-ink:#f1effb;--th-header-hover-bg:#c4bcff1f;--th-header-hover-border:#c4bcff80;--th-sidebar-bg:#29274f;--th-canvas:#23243b;--th-canvas-ink:#f1effb;--th-sidebar-ink:#c3bfe6;--th-sidebar-hover-bg:#c4bcff1a;--th-sidebar-hover-ink:#fff;--th-sidebar-active-bg:#23243b;--th-sidebar-active-ink:#f4f2ff;--th-table-head:#3b3878;--th-table-head-ink:#f4f2ff;--th-today-head:#7266e6;--th-time-bg:#2a2b47;--th-time-ink:#dad7f6;--th-grid:#4a4c76;--th-break-bg:#4b3b24;--th-break-ink:#f8e2ab;--th-grey:#37385a;--th-grey-ink:#b0b1cf;--th-active:#312c66;--th-active-border:#a497ff;--th-active-ink:#e4deff;--th-accent:#7266e6;--th-bg:#1f2035;--th-card:#2d2e4d;--th-ink:#ecebf8;--th-line:#3d3f66;--muted:#a6a7c8;--ink-soft:#cbcbe3;--shadow-sm:0 1px 2px #0a081e59, 0 4px 14px #0a081e38;--shadow-md:0 14px 32px #0a081e73;--th-chart-rate:#a99cff;--th-chart-absent:#f59e9e;--th-chart-late:#f3d071;--th-chart-grid:#3d3f66;--th-risk-track:#f59e9e2e;background:radial-gradient(1200px 520px at 70% -120px, #7c6cf029, transparent 70%), var(--th-canvas)}.th-header{color:var(--th-header-ink);background:var(--th-header-bg);border-bottom:1px solid var(--th-line);justify-content:space-between;align-items:center;gap:16px;padding:13px 26px;display:flex}.th-header__brand{align-items:center;gap:10px;min-width:0;font-size:14.5px;font-weight:700;display:flex}.th-header__brand span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.th-header__actions{align-items:center;gap:8px;display:flex}.th-header__name{max-width:220px;color:var(--th-header-ink);text-overflow:ellipsis;white-space:nowrap;margin-left:18px;font-size:14px;font-weight:700;overflow:hidden}.th-icon-btn{width:36px;height:36px;color:var(--th-header-ink);transition:border-color .18s var(--ease), background-color .18s var(--ease);border:1.5px solid #0000;border-radius:50%;place-items:center;display:grid}.th-icon-btn:hover{border-color:var(--th-header-hover-border);background:var(--th-header-hover-bg)}.th-user-menu{position:relative}.th-avatar-btn{width:46px;height:46px;color:var(--th-header-ink);transition:border-color .18s var(--ease), background-color .18s var(--ease);background:#ffffff1f;border:1.5px solid #ffffff59;border-radius:50%;place-items:center;display:grid;position:relative}.th-avatar-btn:hover,.th-avatar-btn[aria-expanded=true]{background:#fff3;border-color:#ffffffb3}.th-avatar-btn__caret{color:#16234f;border:1.5px solid var(--th-header-bg);background:#fff;border-radius:50%;place-items:center;width:16px;height:16px;display:grid;position:absolute;bottom:0;right:0}.th-user-menu__panel{z-index:60;background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--r-md);min-width:170px;box-shadow:var(--shadow-md);animation:rise-in .14s var(--ease) both;flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 10px);right:0}.th-user-menu__item{width:100%;color:var(--th-ink);text-align:left;border-radius:var(--r-sm);transition:background-color .15s var(--ease), color .15s var(--ease);padding:9px 12px;font-size:13.5px;font-weight:600}.th-user-menu__item:hover{background:var(--th-bg)}.th-user-menu__item--danger{color:#dc2626;border-top:1px solid var(--th-line);border-radius:0 0 var(--r-sm) var(--r-sm);margin-top:4px}.th-user-menu__item--danger:hover{color:#fff;background:#dc2626}.th-body{flex:1;min-height:0;display:flex}.th-sidebar{background:var(--th-sidebar-bg);flex:none;width:220px;padding:26px 0 26px 14px}.th-nav{flex-direction:column;gap:26px;display:flex}.th-nav-item{color:var(--th-ink);border-radius:var(--r-pill);transition:color .18s var(--ease), background-color .18s var(--ease);align-items:center;gap:10px;padding:12px 16px 12px 14px;font-size:14px;font-weight:600;display:flex;position:relative}.th-nav-item:hover{background:var(--th-bg)}.th-nav-item.is-active{color:var(--th-accent);background:var(--th-bg);box-shadow:var(--shadow-sm)}.th-sidebar .th-nav-item{color:var(--th-sidebar-ink);margin-right:14px}.th-sidebar .th-nav-item:hover{color:var(--th-sidebar-hover-ink);background:var(--th-sidebar-hover-bg)}.th-sidebar .th-nav-item.is-active,.th-sidebar .th-nav-item.is-active:hover{color:var(--th-sidebar-active-ink);background:var(--th-sidebar-active-bg);border-radius:var(--r-pill) 0 0 var(--r-pill);box-shadow:var(--shadow-sm);margin-right:0}.th-sidebar .th-nav-item.is-active:before,.th-sidebar .th-nav-item.is-active:after{content:"";width:18px;height:18px;position:absolute;right:0}.th-sidebar .th-nav-item.is-active:before{background:radial-gradient(circle at 0 0, transparent 18px, var(--th-sidebar-active-bg) 18.5px);top:-18px}.th-sidebar .th-nav-item.is-active:after{background:radial-gradient(circle at 0 100%, transparent 18px, var(--th-sidebar-active-bg) 18.5px);bottom:-18px}.th-main{flex:1;min-width:0;padding:26px 30px;overflow:auto}.th-dash{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:22px;display:grid}.th-dash__main{flex-direction:column;gap:22px;min-width:0;display:flex}.th-totals{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.th-total-box{color:#fff;border-radius:var(--r-lg);min-height:132px;transition:transform .2s var(--ease), box-shadow .2s var(--ease);background:linear-gradient(90deg,#1e3a8a 45%,#fff 220%);flex-direction:column;justify-content:space-between;gap:14px;padding:20px 22px;display:flex;box-shadow:0 0 0 1px #60a5fa47,0 0 14px #3b82f647}.th-total-box:hover{transform:translateY(-3px);box-shadow:0 0 0 1px #60a5fa66,0 0 20px #3b82f666}.th-total-box__label{letter-spacing:.02em;color:#ffffffe0;font-size:15px;font-weight:700}.th-total-box__value{font-size:40px;font-weight:800;line-height:1}.th-schedule-card{padding:22px 22px 24px}.th-schedule-card__welcome{color:var(--th-ink);margin-bottom:18px;font-size:24px;font-weight:800}.th-schedule-card__empty{color:var(--muted);margin:-8px 0 14px;font-size:13px}.th-class-box__subject{opacity:.85;font-size:10.5px;font-weight:500}.th-rightbar{flex-direction:column;gap:18px;display:flex}.th-side-card{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.th-side-card__head{border-bottom:1px solid var(--th-line);align-items:center;gap:9px;padding:13px 16px;display:flex}.th-side-card__title{color:var(--th-ink);flex:1;font-size:14px;font-weight:700}.th-side-card__body{padding:14px 16px 16px}.th-side-card__add{color:#fff;background:var(--th-accent);width:28px;height:28px;transition:box-shadow .18s var(--ease), transform .18s var(--ease);border-radius:8px;flex:none;place-items:center;display:grid}.th-side-card__add:hover{transform:translateY(-1px);box-shadow:0 0 0 3px #2563eb38}.th-cal__nav{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.th-cal__month{color:var(--th-ink);font-size:13px;font-weight:700}.th-cal__arrow{width:26px;height:26px;color:var(--muted);transition:background-color .18s var(--ease), color .18s var(--ease);border-radius:6px;place-items:center;display:grid}.th-cal__arrow:hover{color:var(--th-ink);background:var(--th-bg)}.th-cal__grid{text-align:center;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;display:grid}.th-cal__weekday{color:var(--muted);text-transform:uppercase;padding:4px 0 6px;font-size:10.5px;font-weight:700}.th-cal__day{aspect-ratio:1;color:var(--th-ink);border-radius:50%;place-items:center;font-size:12.5px;font-weight:600;display:grid}.th-cal__day.is-today{color:#fff;background:var(--th-accent);font-weight:800;box-shadow:0 0 0 3px #2563eb33}.th-todo-list{flex-direction:column;gap:8px;display:flex}.th-todo-item{background:var(--th-bg);border-radius:var(--r-sm);align-items:flex-start;gap:10px;padding:9px 10px;display:flex}.th-todo-item__check{width:15px;height:15px;accent-color:var(--th-accent);flex:none;margin-top:2px}.th-todo-item__text{min-width:0;color:var(--th-ink);white-space:pre-wrap;word-break:break-word;flex:1;font-size:13px;line-height:1.45}.th-todo-item.is-done .th-todo-item__text{color:var(--muted);text-decoration:line-through}.th-todo-item__remove{opacity:.6;width:20px;height:20px;transition:opacity .18s var(--ease), background-color .18s var(--ease);border-radius:5px;flex:none;place-items:center;display:grid}.th-todo-item__remove:hover{opacity:1;background:#dc26261f}.th-todo-empty{color:var(--muted);text-align:center;padding:14px 0;font-size:12.5px}.th-todo-popup__field{width:100%;min-height:96px;color:var(--th-ink);background:var(--th-bg);border:1.5px solid var(--th-line);border-radius:var(--r-sm);resize:vertical;padding:10px 12px;font-family:inherit;font-size:13.5px}.th-todo-popup__field:focus{border-color:var(--th-accent);outline:none}.th-card{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:18px}.th-schedule{border-collapse:collapse;width:100%;font-size:13px}.th-schedule th,.th-schedule td{border:1px solid var(--th-grid)}.th-schedule th{letter-spacing:.06em;text-transform:uppercase;color:var(--th-table-head-ink);background:var(--th-table-head);padding:12px 10px;font-size:11px;font-weight:700}.th-schedule th.is-today{color:#fff;background:var(--th-today-head)}.th-time-col{white-space:nowrap;text-align:center;color:var(--th-time-ink);background:var(--th-time-bg);padding:8px 12px;font-size:12px;font-weight:700}.th-schedule td{height:56px;padding:5px}.th-class-box{text-align:center;border:1.5px solid #0000;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:1px;width:100%;height:100%;min-height:44px;padding:6px;font-size:11.5px;font-weight:600;display:flex}.th-class-box.is-past{color:var(--th-grey-ink);background:var(--th-grey)}.th-class-box.is-active{color:var(--th-active-ink);background:var(--th-active);border-color:var(--th-active-border);cursor:pointer;transition:transform .18s var(--ease), box-shadow .18s var(--ease)}.th-class-box.is-active:hover{box-shadow:var(--shadow-sm);transform:translateY(-2px)}.th-break-cell{text-align:center;color:var(--th-break-ink);background:var(--th-break-bg);font-size:12px;font-weight:700}.th-blank{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--r-lg);min-height:440px}.th-attendance-head{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:18px;display:flex}.th-attendance-head h1{color:var(--th-canvas-ink);font-size:24px}.th-attendance-head__section{color:var(--th-accent);font-size:16.5px;font-weight:700}.th-attendance-top{grid-template-columns:minmax(0,1fr) 220px;gap:16px;margin-bottom:16px;display:grid}.th-card-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:11px;font-weight:700;display:block}.th-class-card{color:#fff;background:#16234f;border-color:#16234f;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:24px 48px;padding:22px 26px;display:grid}.th-class-card__half{flex-direction:column;min-width:0;display:flex}.th-class-card__eyebrow{letter-spacing:.1em;text-transform:uppercase;color:#a5b4fc;font-size:11px;font-weight:700}.th-class-card__headline{color:#fff;margin-top:4px;font-size:28px;font-weight:800;line-height:1.15}.th-class-card__headline--subject{color:#fde68a}.th-class-card__headline small{color:#c7d2fe;margin-left:6px;font-size:14px;font-weight:600}.th-class-card__bar{border-radius:var(--r-pill);background:#ffffff24;height:6px;margin-top:10px;overflow:hidden}.th-class-card__bar span{border-radius:inherit;height:100%;transition:width .3s var(--ease);background:#60a5fa;display:block}.th-class-card__facts{grid-template-columns:104px minmax(0,1fr);gap:7px 12px;margin-top:16px;font-size:13px;display:grid}.th-class-card__facts div{display:contents}.th-class-card__facts dt{color:#a5b4fc;font-weight:600}.th-class-card__facts dd{color:#fff;flex-wrap:wrap;align-items:center;gap:0 6px;min-width:0;display:flex}.th-class-card__facts small{color:#a5b4fc;font-size:12px}.th-class-card__reader{background:#9ca3af;border-radius:50%;flex:none;width:8px;height:8px}@media (width<=700px){.th-class-card{grid-template-columns:minmax(0,1fr);padding:18px}}.th-legend-card{padding:14px 16px}.th-legend-card ul{flex-direction:column;gap:7px;display:flex}.th-legend-card li{align-items:center;gap:8px;font-size:13px;display:flex}.th-legend-card__label{flex:1;min-width:0}.th-legend-card li strong{font-variant-numeric:tabular-nums;font-size:13.5px}.th-legend-card__edited{border-top:1px solid var(--th-line);margin-top:3px;padding-top:8px}.th-legend-card__star{text-align:center;width:10px;color:var(--th-accent);font-size:15px;font-weight:800;line-height:10px}.th-dot{border-radius:50%;flex:none;width:10px;height:10px}.th-attendance-actions{justify-content:flex-end;gap:12px;margin-bottom:16px;display:flex}.th-update-btn{color:#fff;background:var(--th-accent);border-color:var(--th-accent)}.th-update-btn:hover{border-color:#fbbf24;box-shadow:0 0 0 3px #fbbf2452}.th-attendance-table{border-collapse:collapse;width:100%;font-size:13px}.th-attendance-table th,.th-attendance-table td{border:1px solid var(--th-grid);text-align:center;height:48px;padding:10px 12px}.th-attendance-table .th-attendance-table__name,.th-attendance-table .th-attendance-table__remarks{text-align:left}.th-attendance-table th{letter-spacing:.06em;text-transform:uppercase;color:var(--th-table-head-ink);background:var(--th-table-head);font-size:11px;font-weight:700}.th-attendance-table tbody tr:hover td{background:var(--th-bg)}.th-attendance-actions{align-items:center}.th-attendance-hint{max-width:560px;color:var(--muted);margin-right:auto;font-size:12.5px;line-height:1.5}.th-attendance-table th.th-attendance-table__today{background:var(--th-today-head)}.th-attendance-table td.th-attendance-table__today-cell{background:color-mix(in srgb, var(--th-today-head) 7%, transparent)}.th-attendance-table__name{white-space:nowrap;font-weight:600}.th-attendance-table__tap{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--muted)}.th-attendance-table__remarks{min-width:220px;font-size:12.5px;line-height:1.45}.th-attendance-table__remarks small{color:var(--muted);font-size:11.5px;display:block}.th-attendance-table__auto{color:var(--muted);font-size:12px}.th-status-chip{white-space:nowrap;color:var(--th-ink);background:color-mix(in srgb, var(--chip) 14%, transparent);border:1.5px solid color-mix(in srgb, var(--chip) 55%, transparent);border-radius:var(--r-pill);align-items:center;gap:6px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-flex}.th-status-chip.is-locked{opacity:.8}.th-status-chip__edited{color:var(--th-accent);font-size:14px;line-height:1}.th-status-btn{color:var(--muted);border-radius:var(--r-pill);transition:box-shadow .15s var(--ease), color .15s var(--ease);align-items:center;gap:6px;padding:2px;display:inline-flex}.th-status-btn:hover,.th-status-btn:focus-visible{color:var(--th-accent);box-shadow:0 0 0 2px var(--th-accent);outline:none}.th-confirm-panel.th-correct-panel{flex-direction:column;width:min(460px,100%);max-height:calc(100vh - 40px);display:flex}.th-correct-panel__body{overscroll-behavior:contain;min-height:0;color:var(--th-ink);flex-direction:column;flex:1;gap:12px;padding:16px;font-size:13px;display:flex;overflow-y:auto}.th-correct-panel__body>*{flex-shrink:0}.th-correct-panel .th-confirm-panel__actions{border-top:1px solid var(--th-line);flex:none;padding-top:12px}.th-correct-panel__student{flex-direction:column;gap:2px;display:flex}.th-correct-panel__student strong{font-size:15px}.th-correct-panel__student span,.th-correct-panel__audit{color:var(--muted);font-size:12px}.th-correct-panel__scope{color:#92400e;border-radius:var(--r-sm);background:#fef3c7;padding:8px 10px;font-size:12.5px;line-height:1.5}.th-correct-panel__rfid{align-items:center;gap:8px;display:flex}.th-correct-panel__group{border:none;margin:0;padding:0}.th-correct-panel__group legend,.th-correct-panel__note{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:11.5px;font-weight:700}.th-correct-panel em{text-transform:none;letter-spacing:0;font-style:normal;font-weight:600}.th-correct-panel__statuses{flex-wrap:wrap;gap:6px;display:flex}.th-status-option{border:1.5px solid var(--th-line);border-radius:var(--r-pill);cursor:pointer;align-items:center;gap:6px;padding:6px 11px;font-size:12.5px;font-weight:600;display:inline-flex;position:relative}.th-status-option input{opacity:0;pointer-events:none;position:absolute}.th-status-option.is-selected{background:color-mix(in srgb, var(--chip) 16%, transparent);border-color:var(--chip)}.th-status-option:has(input:focus-visible){box-shadow:0 0 0 2px var(--th-accent)}.th-correct-panel__reasons{flex-direction:column;gap:6px;display:flex}.th-correct-panel__reasons label{cursor:pointer;align-items:center;gap:8px;display:flex}.th-correct-panel textarea{width:100%;font:inherit;color:var(--th-ink);background:var(--th-card);border:1.5px solid var(--th-line);border-radius:var(--r-sm);resize:vertical;padding:8px 10px;font-size:13px}.th-correct-panel textarea:focus{border-color:var(--th-accent);outline:none}.th-confirm-panel__leave:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.th-records{flex-direction:column;gap:18px;display:flex}.th-records__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.th-records__head h1{color:var(--th-canvas-ink);font-size:24px}.th-records__sub{color:var(--muted);margin-top:2px;font-size:13px}.th-records__controls{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.th-records__control{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);flex-direction:column;gap:5px;font-size:11.5px;font-weight:700;display:flex}.th-records__input{letter-spacing:0;text-transform:none;min-width:170px;color:var(--th-ink);background:var(--th-card);border:1.5px solid var(--th-line);border-radius:var(--r-sm);padding:8px 10px;font-size:13.5px;font-weight:600}.th-records__input:focus{border-color:var(--th-accent);outline:none}.th-records__print{white-space:nowrap}.th-records__tabs{background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--r-pill);flex-wrap:wrap;align-self:flex-start;gap:6px;padding:5px;display:flex}.th-records__tab{color:var(--muted);border-radius:var(--r-pill);transition:background-color .18s var(--ease), color .18s var(--ease);padding:8px 16px;font-size:13px;font-weight:700}.th-records__tab:hover{color:var(--th-ink);background:var(--th-bg)}.th-records__tab.is-active{color:#fff;background:var(--th-accent)}.th-records__panel{flex-direction:column;gap:14px;display:flex}.th-records__panel-head h2{color:var(--th-ink);font-size:16px}.th-records__panel-head span{color:var(--muted);margin-top:3px;font-size:12.5px;line-height:1.5;display:block}.th-records__panel-head--figure{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 16px;display:flex}.th-panel-figure{color:var(--muted);flex-direction:column;align-items:flex-end;font-size:12px;display:flex}.th-panel-figure strong{font-variant-numeric:tabular-nums;color:var(--th-ink);font-size:26px;font-weight:800;line-height:1.1}.th-records__panel-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.th-records__empty{color:var(--muted);text-align:center;padding:18px 8px;font-size:13px}.th-records__list{border-collapse:collapse;width:100%;font-size:13px}.th-records__list th,.th-records__list td{text-align:left;border-bottom:1px solid var(--th-line);padding:10px 12px}.th-records__list th{letter-spacing:.05em;text-transform:uppercase;color:var(--th-table-head-ink);background:var(--th-table-head);font-size:11px;font-weight:700}.th-records__analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.th-sample-badge{letter-spacing:.06em;text-transform:uppercase;color:#92400e;vertical-align:middle;border-radius:var(--r-pill);background:#fef3c7;margin-left:8px;padding:2px 8px;font-size:10.5px;font-weight:800;display:inline-block}.th-sample-note{color:var(--muted);margin-top:-6px;font-size:12.5px}.th-overview{grid-template-columns:280px minmax(0,1fr);align-items:start;gap:18px;display:grid}.th-student-list{flex-direction:column;gap:12px;padding:16px;display:flex}.th-student-list__head{border-bottom:1px solid var(--th-line);justify-content:space-between;align-items:center;gap:10px;padding-bottom:10px;display:flex}.th-student-list__head h2{color:var(--th-ink);font-size:15px}.th-student-list__master input,.th-student-list__row input{accent-color:#318ce7;cursor:pointer;flex:none;width:16px;height:16px}.th-student-list__rows{flex-direction:column;gap:6px;max-height:460px;display:flex;overflow-y:auto}.th-student-list__row{color:var(--th-ink);background:var(--th-bg);border-radius:var(--r-sm);cursor:pointer;transition:background-color .15s var(--ease), color .15s var(--ease), border-color .15s var(--ease);border:1.5px solid #0000;align-items:center;gap:10px;padding:9px 12px;font-size:13px;font-weight:600;display:flex}.th-student-list__row:hover{border-color:#318ce7}.th-student-list__row.is-selected{color:#fff;background:#318ce7}.th-student-list__row.is-selected input{accent-color:#fff}.th-overview__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.th-pill-toggle{background:var(--th-bg);border-radius:var(--r-pill);gap:4px;padding:4px;display:inline-flex}.th-pill-toggle__btn{color:var(--muted);border-radius:var(--r-pill);transition:background-color .15s var(--ease), color .15s var(--ease);padding:6px 14px;font-size:12.5px;font-weight:700}.th-pill-toggle__btn.is-active{color:#fff;background:var(--th-accent)}.th-trend-legend{flex-wrap:wrap;gap:6px 16px;display:flex}.th-trend-legend__item{color:var(--th-ink);transition:opacity .15s var(--ease), background-color .15s var(--ease);border-radius:6px;align-items:center;gap:7px;padding:3px 6px;font-size:12.5px;font-weight:600;display:inline-flex}.th-trend-legend__item:hover{background:var(--th-bg)}.th-trend-legend__item.is-off{opacity:.4;text-decoration:line-through}.th-trend{position:relative}.th-trend__line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.th-trend__hit{fill:#0000;cursor:crosshair;outline:none}.th-chart__crosshair{stroke:var(--muted);stroke-width:1px;vector-effect:non-scaling-stroke}.th-chart__axis-title{fill:var(--muted);font-size:12px;font-weight:600}.th-trend__tooltip{z-index:5;color:#fff;pointer-events:none;min-width:128px;box-shadow:var(--shadow-md);background:#101828;border-radius:8px;flex-direction:column;gap:3px;padding:8px 10px;font-size:12px;display:flex;position:absolute;top:6px;transform:translate(-50%)}.th-trend__tooltip-title{color:#ffffffbf;margin-bottom:2px;font-weight:700}.th-trend__tooltip-row{align-items:center;gap:7px;display:flex}.th-trend__tooltip-row strong{font-variant-numeric:tabular-nums;min-width:18px}.th-trend__tooltip-row span{color:#fffc}.th-overview__totals{border-top:1px solid var(--th-line);grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding-top:12px;display:grid}.th-overview__total{flex-direction:column;gap:4px;display:flex}.th-overview__total-label{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.th-overview__total strong{font-size:22px;font-weight:800;line-height:1.1}.teacher-app[data-theme=dark] .th-overview__total strong,.teacher-app[data-theme=semidark] .th-overview__total strong{color:var(--th-ink)!important}.th-chart{width:100%;height:auto;display:block}.th-chart__grid{stroke:var(--th-chart-grid);stroke-width:1px;vector-effect:non-scaling-stroke}.th-chart__tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.th-chart__line{fill:none;stroke:var(--th-chart-rate);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.th-chart__dot{fill:var(--th-chart-rate);stroke:var(--th-card);stroke-width:2px;transition:r .15s var(--ease)}.th-chart__hit{fill:#0000}.th-chart__point{outline:none}.th-chart__point:hover .th-chart__dot,.th-chart__point:focus-visible .th-chart__dot{r:6}.th-chart__value{fill:var(--th-ink);font-size:14px;font-weight:700}.th-columns{gap:10px;height:200px;display:flex}.th-columns__slot{border-radius:6px;outline:none;flex:1;grid-template-rows:minmax(0,1fr) auto;justify-items:center;min-width:0;display:grid;position:relative}.th-columns__plot{border-bottom:1px solid var(--th-chart-grid);flex-direction:column;justify-content:flex-end;align-items:center;width:100%;display:flex}.th-columns__value{min-height:18px;color:var(--th-ink);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700}.th-columns__bar{background:var(--th-chart-absent);width:min(24px,60%);min-height:2px;transition:filter .15s var(--ease);border-radius:4px 4px 0 0}.th-columns__label{color:var(--muted);padding-top:6px;font-size:12px;font-weight:600}.th-columns__slot:hover .th-columns__bar,.th-columns__slot:focus-visible .th-columns__bar{filter:brightness(1.15)}.th-hbars{flex-direction:column;gap:8px;display:flex}.th-hbars__row{border-radius:6px;outline:none;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:10px;font-size:12.5px;display:grid;position:relative}.th-hbars__label{color:var(--th-ink);font-weight:600}.th-hbars__track{align-items:center;gap:6px;height:16px;display:flex}.th-hbars__bar{background:var(--th-chart-late);height:14px;transition:filter .15s var(--ease);border-radius:0 4px 4px 0}.th-hbars__value{color:var(--muted);font-variant-numeric:tabular-nums;font-weight:700}.th-hbars__row:hover .th-hbars__bar,.th-hbars__row:focus-visible .th-hbars__bar{filter:brightness(1.15)}.th-columns__slot:hover:after,.th-columns__slot:focus-visible:after,.th-hbars__row:hover:after,.th-hbars__row:focus-visible:after{content:attr(data-tip);z-index:5;white-space:nowrap;color:#fff;pointer-events:none;background:#101828;border-radius:6px;padding:5px 9px;font-size:11.5px;font-weight:700;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.th-risk-list{flex-direction:column;gap:14px;display:flex}.th-risk-list__row{justify-content:space-between;gap:10px;margin-bottom:6px;font-size:13px;display:flex}.th-risk-list__name{color:var(--th-ink);font-weight:700}.th-risk-list__count{color:var(--muted);font-variant-numeric:tabular-nums}.th-risk-list__meter{background:var(--th-risk-track);border-radius:var(--r-pill);height:8px;display:block;overflow:hidden}.th-risk-list__meter span{background:var(--th-chart-absent);border-radius:inherit;height:100%;display:block}.th-chart-table summary{color:var(--th-accent);cursor:pointer;font-size:12.5px;font-weight:600}.th-chart-table table{border-collapse:collapse;width:100%;color:var(--th-ink);margin-top:8px;font-size:12.5px}.th-chart-table th,.th-chart-table td{text-align:left;border-bottom:1px solid var(--th-line);padding:6px 8px}.th-chart-table th{text-transform:uppercase;color:var(--muted);font-size:11px}.th-chart-table th:last-child,.th-chart-table td:last-child{text-align:right;font-variant-numeric:tabular-nums}.th-records__sms{flex-direction:column;gap:18px;display:flex}.th-records__sms-preview{background:var(--th-bg);border-left:3px solid var(--th-accent);border-radius:var(--r-sm);padding:14px 16px}.th-records__sms-preview p{color:var(--th-ink);margin:6px 0;font-size:13.5px;line-height:1.55}.th-records__sms-label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700}.th-records__sms-note{color:var(--muted);font-size:12px}.th-records__status-legend{flex-wrap:wrap;gap:8px;display:flex}.th-records__status{border-radius:var(--r-pill);padding:3px 10px;font-size:11.5px;font-weight:700;display:inline-block}.th-records__status--delivered{color:#166534;background:#dcfce7}.th-records__status--pending{color:#92400e;background:#fef3c7}.th-records__status--failed{color:#991b1b;background:#fee2e2}.sf2{flex-direction:column;gap:12px;display:flex}.sf2-toolbar{flex-wrap:wrap;align-items:center;gap:10px 14px;display:flex}.sf2-toolbar__views{background:var(--th-bg);border:1px solid var(--th-line);border-radius:var(--r-pill);padding:3px;display:inline-flex}.sf2-view{color:var(--muted);border-radius:var(--r-pill);padding:6px 14px;font-size:13px;font-weight:700}.sf2-view.is-active{color:#fff;background:var(--th-accent)}.sf2-week{color:var(--muted);align-items:center;gap:8px;font-size:12.5px;font-weight:700;display:inline-flex}.sf2-week select{font:inherit;color:var(--th-ink);background:var(--th-card);border:1.5px solid var(--th-line);border-radius:var(--r-sm);padding:6px 8px;font-size:13px}.sf2-toolbar .th-records__print{margin-left:auto}.sf2-note{color:var(--muted);font-size:12px}.sf2-sheet{color:#000;background:#fff;border:1px solid #d1d5db;min-width:980px;padding:16px;font-family:Arial,Helvetica,sans-serif}.sf2-head{align-items:center;gap:16px;margin-bottom:10px;display:flex}.sf2-head__title{text-align:center;flex:1}.sf2-head__title h2{font-size:19px;font-weight:800}.sf2-head__title p{font-size:11px;font-style:italic}.sf2-fields{grid-template-columns:auto 1fr auto 1.2fr auto 1fr;align-items:center;gap:6px 8px;margin-bottom:10px;font-size:12.5px;display:grid}.sf2-fields__label{text-align:right}.sf2-fields__box{text-align:center;border:1px solid #000;min-height:26px;padding:4px 8px}.sf2-grid{border-collapse:collapse;width:100%;font-size:10.5px}.sf2-grid th,.sf2-grid td{border:1px solid #000;padding:2px 3px}.sf2-grid th{text-align:center;font-weight:700}.sf2-name--head{vertical-align:top;min-width:220px;font-size:12px;text-align:left!important}.sf2-name--head span{font-size:11px;display:block}.sf2-caption{font-size:9.5px}.sf2-date,.sf2-day{width:22px;min-width:22px}.sf2-day{font-size:8.5px}.sf2-total-head,.sf2-num-head{font-size:9.5px}.sf2-remarks-head{width:190px;font-size:9px}.sf2-index{text-align:center;width:22px}.sf2-name{white-space:nowrap;min-width:200px}.sf2-name--empty{color:#6b7280;font-style:italic}.sf2-cell{text-align:center;height:19px;font-weight:700}.sf2-cell--late{background:linear-gradient(#9ca3af 50%,#0000 50%)}.sf2-cell--cutting{background:linear-gradient(#0000 50%,#9ca3af 50%)}.sf2-num{text-align:center;background:#f3f4f6;width:46px;font-weight:700}.sf2-remarks{font-size:9.5px}.sf2-total td{background:#f3f4f6;font-weight:700}.sf2-total-label{text-align:center}.sf2-total--combined td{background:#e5e7eb}.sf2-footer{grid-template-columns:1.15fr .9fr 1.1fr;gap:16px;margin-top:14px;font-size:10.5px;line-height:1.45;display:grid}.sf2-footer h3{margin-bottom:4px;font-size:11px;font-weight:800}.sf2-guidelines ol{padding-left:16px;list-style:decimal}.sf2-guidelines li{margin-bottom:3px}.sf2-formula{padding-left:10px;display:block}.sf2-small{font-size:10px;font-style:italic}.sf2-codes{border:1px solid #000;padding:8px}.sf2-codes p{margin-bottom:6px}.sf2-code-samples{flex-wrap:wrap;gap:6px 12px;margin-bottom:8px;display:flex}.sf2-code-samples span{align-items:center;gap:5px;display:inline-flex}.sf2-swatch{border:1px solid #000;place-items:center;width:16px;height:16px;font-style:normal;font-weight:700;display:inline-grid}.sf2-reasons{flex-direction:column;margin-bottom:3px;display:flex}.sf2-reasons span{padding-left:8px}.sf2-summary{border-collapse:collapse;width:100%;font-size:10.5px}.sf2-summary th,.sf2-summary td{border:1px solid #000;padding:3px 5px}.sf2-summary td:nth-child(n+2){text-align:center;width:42px}.sf2-summary td:first-child{font-style:italic}.sf2-sign{text-align:center;flex-direction:column;align-items:center;gap:2px;margin-top:12px;display:flex}.sf2-sign .sf2-small{align-self:flex-start;margin-top:6px}.sf2-sign strong{border-bottom:1px solid #000;width:80%;min-height:18px;padding-top:8px;font-size:11.5px}.sf2-sign span{font-size:10px}.sf2-stamp{color:#4b5563;margin-top:10px;font-size:9.5px;font-style:italic}.sf2-note--info{color:var(--th-ink);background:var(--th-bg);border-radius:var(--r-sm);padding:9px 12px;font-size:12.5px}.sf2-flow{background:var(--th-bg);border-radius:var(--r-md);flex-direction:column;gap:10px;padding:14px 16px;display:flex}.sf2-flow__head{flex-wrap:wrap;align-items:center;gap:10px 18px;display:flex}.sf2-flow__chip{border-radius:var(--r-pill);padding:4px 11px;font-size:12px;font-weight:800}.sf2-flow__chip--muted{color:#374151;background:#e5e7eb}.sf2-flow__chip--info{color:#1e40af;background:#dbeafe}.sf2-flow__chip--warn{color:#92400e;background:#fef3c7}.sf2-flow__chip--ok{color:#166534;background:#dcfce7}.sf2-flow__steps{color:var(--muted);flex-wrap:wrap;gap:6px 16px;font-size:12.5px;font-weight:600;list-style:none;display:flex}.sf2-flow__steps li{align-items:center;gap:6px;display:inline-flex}.sf2-flow__steps li span{width:20px;height:20px;color:var(--muted);background:var(--th-card);border:1.5px solid var(--th-line);border-radius:50%;place-items:center;font-size:11px;font-weight:800;display:inline-grid}.sf2-flow__steps li.is-done{color:var(--th-ink)}.sf2-flow__steps li.is-done span{color:#fff;background:#16a34a;border-color:#16a34a}.sf2-flow__text{color:var(--th-ink);font-size:13px;line-height:1.5}.sf2-flow__note{color:#92400e;border-radius:var(--r-sm);background:#fef3c7;padding:8px 12px;font-size:13px}.sf2-flow__warn{color:#991b1b;border-radius:var(--r-sm);background:#fee2e2;padding:8px 12px;font-size:12.5px}.sf2-flow__actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;display:flex}.sf2-flow__certify{color:var(--th-ink);cursor:pointer;align-items:center;gap:8px;font-size:13px;font-weight:600;display:inline-flex}.sf2-flow__certify input{width:16px;height:16px;accent-color:var(--th-accent)}.sf2-flow__certify.is-disabled{color:var(--muted);cursor:not-allowed}.sf2-flow__actions .btn:disabled{opacity:.5;box-shadow:none}.sf2-flow__hint{color:var(--muted);font-size:12px}.sf2-flow__history{color:var(--th-ink);font-size:12.5px}.sf2-flow__history summary{color:var(--th-accent);cursor:pointer;font-weight:700}.sf2-flow__history ol{flex-direction:column;gap:4px;margin-top:8px;padding-left:18px;display:flex}.sf2-flow__history span{color:var(--muted)}@media print{@page{size:A4 landscape;margin:8mm}.th-header,.th-sidebar,.th-records__head,.th-records__controls,.th-records__tabs,.th-records__print,.sf2-toolbar,.sf2-note,.sf2-flow,.sf2r-panel,.th-toast{display:none!important}.teacher-app,.th-main{background:#fff!important}.th-main{padding:0;overflow:visible}.sf2{box-shadow:none;border:none;padding:0}.sf2-sheet{min-width:0}.table-scroll{overflow:visible}.sf2-grid tr,.sf2-footer{break-inside:avoid}.sf2 *{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.th-bell,.th-notif{position:relative}.th-notif__panel{z-index:60;width:min(360px,100vw - 32px);max-height:420px;color:var(--th-ink);background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--r-md);box-shadow:var(--shadow-md);animation:rise-in .14s var(--ease) both;padding:10px;position:absolute;top:calc(100% + 10px);right:0;overflow-y:auto}.th-notif__title{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:2px 6px 8px;font-size:11px;font-weight:800}.th-notif__empty{color:var(--muted);padding:10px 6px;font-size:13px}.th-notif__list{flex-direction:column;gap:4px;list-style:none;display:flex}.th-notif__item{border-radius:var(--r-sm);flex-direction:column;gap:2px;padding:8px 10px;font-size:13px;line-height:1.45;display:flex}.th-notif__item small{color:var(--muted);font-size:11px}.th-notif__item--alert{background:#fef3c7}.th-notif__item--alert,.th-notif__item--alert small{color:#92400e}.th-notif__item--alert button{font:inherit;text-align:left;color:inherit;font-weight:700}.th-notif__item--alert button:hover{text-decoration:underline}.th-notif__item--activity,.th-notif__item--system{background:var(--th-bg)}.th-attendance-lock{color:#92400e;border-radius:var(--r-sm);background:#fef3c7;align-items:center;gap:8px;margin:-6px 0 14px;padding:9px 12px;font-size:12.5px;font-weight:600;display:flex}.th-attendance-error{color:#991b1b;border-radius:var(--r-sm);background:#fee2e2;margin:-6px 0 10px;padding:9px 12px;font-size:13px;font-weight:600}.th-correct-panel__hint{color:var(--muted);font-size:12.5px}.th-attendance-lock--quiet{color:var(--muted);background:var(--th-bg)}.th-attendance-table__unsaved{color:#b45309;font-weight:700;display:block}.th-bell__count{text-align:center;color:#fff;border-radius:var(--r-pill);background:#dc2626;min-width:18px;height:18px;padding:0 5px;font-size:10.5px;font-weight:800;line-height:18px;position:absolute;top:-4px;right:-4px}.th-dismissal{border-left:4px solid #f59e0b;flex-direction:column;gap:22px;margin-bottom:18px;display:flex}.th-dismissal__section{flex-direction:column;gap:10px;display:flex}.th-dismissal__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 16px;display:flex}.th-dismissal__eyebrow{letter-spacing:.08em;text-transform:uppercase;color:#b45309;font-size:11px;font-weight:800}.th-dismissal__head h2{color:var(--th-ink);margin-top:2px;font-size:18px;font-weight:800}.th-dismissal__head p{color:var(--muted);margin-top:2px;font-size:12.5px}.th-dismissal__count{color:#92400e;border-radius:var(--r-pill);background:#fef3c7;padding:4px 11px;font-size:12px;font-weight:800}.th-dismissal__held{color:#991b1b;border-radius:var(--r-sm);background:#fee2e2;padding:9px 12px;font-size:12.5px;line-height:1.5}.th-dismissal__done{color:var(--muted);font-size:13px}.th-dismissal__table{border-collapse:collapse;width:100%;font-size:13px}.th-dismissal__table th{letter-spacing:.05em;text-transform:uppercase;text-align:left;color:var(--muted);padding:6px 10px;font-size:11px;font-weight:700}.th-dismissal__table td{color:var(--th-ink);vertical-align:middle;background:var(--th-bg);padding:8px 10px}.th-dismissal__table tr td:first-child{border-radius:var(--r-sm) 0 0 var(--r-sm)}.th-dismissal__table tr td:last-child{border-radius:0 var(--r-sm) var(--r-sm) 0}.th-dismissal__table tbody tr+tr td{border-top:4px solid var(--th-card)}.th-dismissal__name{white-space:nowrap;font-weight:700}.th-dismissal__actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.th-dismissal__btn{white-space:nowrap;color:var(--th-ink);background:var(--th-card);border:1.5px solid var(--th-line);border-radius:var(--r-sm);transition:border-color .15s var(--ease);padding:6px 11px;font-size:12.5px;font-weight:700}.th-dismissal__btn:hover{border-color:var(--th-accent)}.th-dismissal__btn--primary{color:#fff;background:var(--th-accent);border-color:var(--th-accent)}.th-dismissal__btn--primary:hover{box-shadow:0 0 0 3px #2563eb40}.th-tapout{border-radius:var(--r-sm);flex-direction:column;align-items:center;gap:1px;padding:3px 9px;font-size:12px;line-height:1.3;display:inline-flex}.th-tapout strong{white-space:nowrap;font-weight:800}.th-tapout small{opacity:.85;font-size:10.5px;font-weight:600}.th-tapout--gray{color:#4b5563;background:#e5e7eb}.th-tapout--amber{color:#92400e;background:#fef3c7}.th-tapout--blue{color:#1e40af;background:#dbeafe}.th-tapout--green{color:#166534;background:#dcfce7}.th-dismissal .th-tapout{align-items:flex-start}.th-notify p{color:var(--th-ink);font-size:13px;line-height:1.5}.th-notify__sms{color:var(--th-ink);white-space:pre-wrap;background:var(--th-bg);border-radius:var(--r-sm);margin:10px 0;padding:10px 12px;font-size:13px;line-height:1.5}.th-notify .th-notify__note{color:var(--muted);font-size:12px}.th-avatar-btn{overflow:hidden}.th-avatar-btn__photo{object-fit:cover;border-radius:50%;width:100%;height:100%}.pf-layout{--pf-nav-bg:#fff;--pf-nav-ink:#1f2937;--pf-nav-muted:#6b7280;--pf-nav-hover:#f3f6fc;--pf-nav-active-bg:#e0ecff;--pf-nav-active-ink:#1e40af;--pf-nav-active-muted:#3b5bb5;--pf-nav-bar:#2563eb;grid-template-columns:240px minmax(0,1fr);align-items:start;gap:40px;margin-left:10px;display:grid}.teacher-app[data-theme=dark] .pf-layout,.teacher-app[data-theme=semidark] .pf-layout{--pf-nav-bg:var(--th-card);--pf-nav-ink:var(--th-ink);--pf-nav-muted:var(--muted);--pf-nav-hover:#ffffff0f;--pf-nav-active-bg:#6d93f233;--pf-nav-active-ink:#dbe6ff;--pf-nav-active-muted:#b3c6f5;--pf-nav-bar:#7ea2ff}.teacher-app[data-theme=semidark] .pf-layout{--pf-nav-active-bg:#8b7cf638;--pf-nav-active-ink:#ebe6ff;--pf-nav-active-muted:#c9c0fa;--pf-nav-bar:#a99cff}.pf-nav{background:var(--pf-nav-bg);border:1px solid var(--th-line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);flex-direction:column;gap:4px;padding:14px 10px;display:flex;position:sticky;top:0}.pf-nav__title{letter-spacing:.08em;text-transform:uppercase;color:var(--pf-nav-muted);padding:4px 12px 10px;font-size:11px;font-weight:800}.pf-nav__item{text-align:left;color:var(--pf-nav-ink);border-radius:var(--r-md);transition:background-color .15s var(--ease), color .15s var(--ease);flex-direction:column;gap:1px;padding:10px 12px 10px 16px;display:flex;position:relative}.pf-nav__item strong{font-size:14px;font-weight:700}.pf-nav__item span{color:var(--pf-nav-muted);font-size:12px}.pf-nav__item:hover{background:var(--pf-nav-hover)}.pf-nav__item.is-active{color:var(--pf-nav-active-ink);background:var(--pf-nav-active-bg)}.pf-nav__item.is-active span{color:var(--pf-nav-active-muted)}.pf-nav__item.is-active:before{content:"";background:var(--pf-nav-bar);border-radius:999px;width:4px;position:absolute;top:10px;bottom:10px;left:4px}.pf-nav__item:focus-visible{outline-offset:1px;outline:3px solid #2563eb66}.pf-content{flex-direction:column;gap:30px;min-width:0;padding-top:4px;display:flex}.pf-split{grid-template-columns:minmax(0,1fr) minmax(260px,340px);align-items:start;gap:32px 48px;display:grid}.pf-split__main{flex-direction:column;gap:30px;min-width:0;display:flex}.pf-side{flex-direction:column;gap:24px;display:flex}.pf-photo-card{text-align:center;background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);flex-direction:column;align-items:center;gap:6px;padding:26px 22px 22px;display:flex}.pf-photo-card .pf-photo{margin-bottom:10px}.pf-photo-card h2{color:var(--th-ink);font-size:18px;font-weight:800}.pf-photo-card__role{color:var(--muted);font-size:13px}.pf-photo-card .pf-tips{text-align:left;align-self:stretch;margin-top:14px}.pf-photo-card .pf-note{text-align:left}.pf-tips{color:var(--th-ink);background:var(--th-bg);border-radius:var(--r-sm);flex-direction:column;gap:6px;padding:12px 14px 12px 30px;font-size:12.5px;line-height:1.45;display:flex}.pf-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 28px;display:grid}.pf-stats div{flex-direction:column;gap:4px;display:flex}.pf-stats dt{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:700}.pf-stats dd{color:var(--th-ink);font-size:20px;font-weight:800}.pf-table{border-collapse:collapse;width:100%;font-size:14px}.pf-table th{letter-spacing:.05em;text-align:left;text-transform:uppercase;color:var(--muted);border-bottom:1.5px solid var(--th-line);padding:8px 12px;font-size:11.5px;font-weight:700}.pf-table td{color:var(--th-ink);border-bottom:1px solid var(--th-line);padding:12px}.pf-table__strong{font-weight:700}.pf-tag{color:#1e40af;vertical-align:middle;background:#dbeafe;border-radius:999px;margin-left:8px;padding:1px 8px;font-size:11px;font-weight:800;display:inline-block}.pf-activity{flex-direction:column;list-style:none;display:flex}.pf-activity li{color:var(--th-ink);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 24px;padding:12px 0;font-size:14px;display:flex}.pf-activity li+li{border-top:1px solid var(--th-line)}.pf-activity time{color:var(--muted);flex:none;font-size:12.5px}.pf-themes{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.pf-theme{cursor:pointer;background:var(--th-card);border:2px solid var(--th-line);border-radius:var(--r-lg);transition:border-color .15s var(--ease), box-shadow .15s var(--ease);flex-direction:column;gap:10px;padding:10px;display:flex;position:relative}.pf-theme:hover{border-color:var(--th-accent)}.pf-theme input{opacity:0;pointer-events:none;position:absolute}.pf-theme:has(input:focus-visible){box-shadow:0 0 0 3px #2563eb59}.pf-theme.is-active{border-color:var(--th-accent);box-shadow:0 0 0 3px #2563eb2e}.pf-theme__text{flex-direction:column;gap:2px;padding:0 4px 4px;display:flex}.pf-theme__text strong{color:var(--th-ink);font-size:14px}.pf-theme__text small{color:var(--muted);font-size:12px}.pf-theme__check{color:#fff;background:var(--th-accent);border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:none;position:absolute;top:16px;right:16px}.pf-theme.is-active .pf-theme__check{display:grid}.pf-theme__preview{aspect-ratio:16/10;border-radius:var(--r-md);display:block;position:relative;overflow:hidden}.pf-theme__half{clip-path:polygon(55% 0,100% 0,100% 100%,45% 100%);position:absolute;inset:0}.pf-sketch{display:block;position:absolute;inset:0}.pf-sketch__top{height:16%;position:absolute;inset:0 0 auto}.pf-sketch__side{width:22%;position:absolute;top:16%;bottom:0;left:0}.pf-sketch__card{border:1px solid;border-radius:4px;flex-direction:column;gap:8%;padding:8%;display:flex;position:absolute;inset:28% 8% 14% 30%}.pf-sketch__card span{border-radius:2px;width:80%;height:10%;min-height:3px;display:block}.pf-pane-head h1{color:var(--th-ink);font-size:24px;font-weight:800}.pf-pane-head p{color:var(--muted);margin-top:4px;font-size:13.5px}.pf-photo{flex:none;position:relative}.pf-avatar{object-fit:cover;box-shadow:0 0 0 4px var(--th-card), 0 0 0 5px var(--th-line);border-radius:50%;flex:none;place-items:center;display:grid}.pf-avatar--initials{color:#fff;background:linear-gradient(135deg,#25225c,#4f46e5);font-weight:800}.pf-photo__edit{border:1.5px solid var(--th-line);width:32px;height:32px;transition:transform .15s var(--ease), border-color .15s var(--ease);background:#fff;border-radius:50%;place-items:center;display:grid;position:absolute;bottom:2px;right:0;box-shadow:0 2px 6px #0f172a2e}.pf-photo__edit:hover{border-color:var(--th-accent);transform:scale(1.08)}.pf-photo__edit:focus-visible{outline-offset:2px;outline:3px solid #2563eb66}.pf-link{color:#dc2626;margin-top:6px;padding:0;font-size:12.5px;font-weight:700}.pf-link:hover{text-decoration:underline}.pf-block{flex-direction:column;gap:10px;display:flex}.pf-block h3{color:var(--th-ink);font-size:15px;font-weight:800}.pf-rows{grid-template-columns:150px minmax(0,1fr);gap:10px 18px;font-size:14px;display:grid}.pf-rows div{display:contents}.pf-rows dt{color:var(--muted)}.pf-rows dd{color:var(--th-ink);overflow-wrap:anywhere;font-weight:600}.pf-inline{flex-wrap:wrap;gap:10px;display:flex}.pf-inline .pf-input{flex:220px;max-width:320px}.pf-input,.pf-field input{font:inherit;color:var(--th-ink);background:var(--th-card);border:1.5px solid var(--th-line);border-radius:var(--r-sm);transition:border-color .15s var(--ease), box-shadow .15s var(--ease);padding:10px 12px;font-size:14px;font-weight:500}.pf-input:focus,.pf-field input:focus{border-color:var(--th-accent);outline:none;box-shadow:0 0 0 3px #2563eb26}.pf-input[aria-invalid=true]{border-color:#dc2626}.pf-inline .btn:disabled{opacity:.5;box-shadow:none;cursor:not-allowed}.pf-list{flex-direction:column;list-style:none;display:flex}.pf-list li{color:var(--th-ink);flex-wrap:wrap;align-items:baseline;gap:2px 12px;padding:11px 0;font-size:14px;display:flex}.pf-list li+li{border-top:1px solid var(--th-line)}.pf-list li>span{color:var(--muted)}.pf-list__meta{flex-basis:100%;font-size:12px}.pf-list li>.pf-list__text{color:var(--th-ink)}.pf-note{color:var(--muted);font-size:12.5px;line-height:1.5}.pf-form{flex-direction:column;gap:10px;display:flex}.pf-field{color:var(--muted);flex-direction:column;gap:5px;font-size:12.5px;font-weight:700;display:flex}.pf-field input{max-width:360px}.pf-form__actions{align-items:center;gap:12px;display:flex}.pf-form__actions .btn:disabled{opacity:.5;box-shadow:none;cursor:not-allowed}.pf-unsaved{color:#b45309;font-size:12px;font-weight:700}.pf-error{color:#dc2626;font-size:12.5px;font-weight:600}.pf-check{color:var(--th-ink);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:inline-flex}.pf-check input{accent-color:var(--th-accent)}.pf-strength{color:var(--muted);align-items:center;gap:10px;margin-top:-4px;font-size:12px;font-weight:700;display:flex}.pf-strength__bar{background:var(--th-line);border-radius:999px;flex:1;height:6px;overflow:hidden}.pf-strength__bar span{border-radius:inherit;width:0;height:100%;transition:width .2s var(--ease), background-color .2s var(--ease);display:block}.pf-strength--1 .pf-strength__bar span{background:#dc2626;width:25%}.pf-strength--2 .pf-strength__bar span{background:#f59e0b;width:50%}.pf-strength--3 .pf-strength__bar span{background:#65a30d;width:75%}.pf-strength--4 .pf-strength__bar span{background:#16a34a;width:100%}.pf-toggle>span:first-child{flex-direction:column;gap:2px;display:flex}.pf-toggle small{color:var(--muted);font-size:12.5px;font-weight:500}.pf-toggle{max-width:480px;color:var(--th-ink);cursor:pointer;justify-content:space-between;align-items:center;gap:12px;font-size:14px;font-weight:600;display:flex}.pf-toggle input{opacity:0;width:1px;height:1px;position:absolute}.pf-toggle__track{background:var(--th-line);width:44px;height:24px;transition:background-color .18s var(--ease);border-radius:999px;flex:none;position:relative}.pf-toggle__knob{width:18px;height:18px;transition:transform .18s var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.pf-toggle input:checked+.pf-toggle__track{background:var(--th-accent)}.pf-toggle input:checked+.pf-toggle__track .pf-toggle__knob{transform:translate(20px)}.pf-toggle input:focus-visible+.pf-toggle__track{box-shadow:0 0 0 3px #2563eb4d}.th-confirm-panel.pf-crop{width:min(470px,100vw - 32px)}.pf-crop__body{flex-direction:column;gap:14px;display:flex}.pf-crop__row{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:16px;display:flex}.pf-crop__stage{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:var(--r-md);background:#0f172a;flex:none;position:relative;overflow:hidden}.pf-crop__stage:active{cursor:grabbing}.pf-crop__stage:focus-visible{outline:3px solid var(--th-accent);outline-offset:3px}.pf-crop__image{pointer-events:none;max-width:none;position:absolute}.pf-crop__guide{pointer-events:none;border:2px dashed #ffffffe6;border-radius:50%;position:absolute;inset:0;box-shadow:0 0 0 999px #0f172a9e}.pf-crop__preview{flex-direction:column;align-items:center;gap:6px;display:flex}.pf-crop__preview-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:800}.pf-crop__preview-circle{width:88px;height:88px;box-shadow:0 0 0 3px var(--th-line);background:#0f172a;border-radius:50%;position:relative;overflow:hidden}.pf-crop__zoom{align-items:center;gap:10px;display:flex}.pf-crop__zoom input{accent-color:var(--th-accent);flex:1}.pf-crop__zoom button{width:32px;height:32px;color:var(--th-ink);background:var(--th-bg);border:1.5px solid var(--th-line);border-radius:50%;flex:none;font-size:18px;font-weight:800}.pf-crop__zoom button:disabled{opacity:.4}@media (width<=1240px){.pf-split{grid-template-columns:minmax(0,1fr)}.pf-photo-card{order:-1;max-width:420px}.pf-themes,.pf-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=900px){.pf-layout{grid-template-columns:minmax(0,1fr);gap:18px;margin-left:0}.pf-nav{flex-direction:row;padding:8px;position:static;overflow-x:auto}.pf-nav__title,.pf-nav__item span{display:none}.pf-nav__item{flex:none}}@media (width<=420px){.pf-rows{grid-template-columns:minmax(0,1fr);gap:2px}.pf-rows dd{margin-bottom:8px}}.th-toast{color:#fff;border-radius:var(--r-pill);box-shadow:var(--shadow-md);animation:rise-in .2s var(--ease) both;background:#101828;padding:12px 22px;font-size:13.5px;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}.th-confirm-backdrop{z-index:150;animation:fade-in .15s var(--ease) both;background:#0f172a80;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.th-confirm-panel{background:var(--th-card);border-radius:var(--r-lg);width:min(360px,100%);box-shadow:var(--shadow-lg);animation:rise-in .18s var(--ease) both;overflow:hidden}.th-confirm-panel__head{color:#fff;background:#dc2626;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;font-size:13.5px;font-weight:700;display:flex}.th-confirm-panel__head--accent{background:var(--th-accent)}.th-confirm-panel__head button{color:#fff;width:22px;height:22px;transition:background-color .18s var(--ease);border-radius:50%;place-items:center;display:grid}.th-confirm-panel__head button:hover{background:#ffffff38}.th-confirm-panel__body{color:var(--th-ink);padding:16px;font-size:13.5px;line-height:1.6}.th-confirm-panel__actions{justify-content:flex-end;gap:10px;padding:0 16px 16px;display:flex}.th-confirm-panel__leave{color:#fff;background:var(--th-accent);border-color:var(--th-accent)}.th-confirm-panel__leave:hover{border-color:#fbbf24;box-shadow:0 0 0 3px #fbbf2452}.th-menu-backdrop{z-index:120;animation:fade-in .15s var(--ease) both;background:#0f172a66;position:fixed;inset:0}.th-menu-panel{background:var(--th-card);width:min(300px,86vw);height:100%;color:var(--th-ink);box-shadow:var(--shadow-lg);animation:slide-in .22s var(--ease) both;flex-direction:column;gap:22px;padding:60px 22px 24px;display:flex;position:absolute;top:0;right:0}@keyframes slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.th-menu-close{width:32px;height:32px;color:var(--th-ink);border:1.5px solid var(--th-line);border-radius:50%;place-items:center;display:grid;position:absolute;top:16px;right:16px}.th-menu-title{color:var(--th-ink);font-size:18px;font-weight:800}.th-toggle-row{cursor:pointer;justify-content:space-between;align-items:center;font-size:14px;font-weight:600;display:flex}.th-toggle-input{opacity:0;width:0;height:0;position:absolute}.th-toggle-track{border-radius:var(--r-pill);width:42px;height:24px;transition:background-color .18s var(--ease);background:#d1d5db;position:relative}.th-toggle-knob{width:18px;height:18px;transition:transform .18s var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0000004d}.th-toggle-input:checked+.th-toggle-track{background:var(--th-accent)}.th-toggle-input:checked+.th-toggle-track .th-toggle-knob{transform:translate(18px)}@media (width<=1180px){.th-dash{grid-template-columns:minmax(0,1fr)}.th-rightbar{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;display:grid}}@media (width<=1000px){.th-records__analytics-grid,.th-overview{grid-template-columns:minmax(0,1fr)}.th-student-list__rows{max-height:260px}}@media (width<=700px){.th-rightbar,.th-totals{grid-template-columns:minmax(0,1fr)}.th-overview__totals{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=860px){.th-sidebar{width:76px}.th-sidebar .th-nav-item__label{display:none}.th-attendance-top{grid-template-columns:1fr}}@media (width<=600px){.th-sidebar{display:none}.th-header{padding:12px 16px}.th-header__name{display:none}.th-main{padding:18px 16px}}.mc-progress{color:var(--th-canvas-ink);flex-direction:column;gap:4px;font-size:14px;display:flex}.mc-progress p span{color:var(--muted);margin:0 6px}.mc-progress strong{font-size:18px}.mc-progress__note{color:var(--muted);font-size:12.5px}.mc-tabs{border-bottom:2px solid var(--th-line);gap:4px;display:flex}.mc-tab{color:var(--muted);border-bottom:2px solid #0000;margin-bottom:-2px;padding:9px 16px;font-size:13.5px;font-weight:700}.mc-tab:hover{color:var(--th-canvas-ink)}.mc-tab.is-active{color:var(--th-canvas-ink);border-bottom-color:var(--th-accent)}.mc-grid-card,.mc-form{flex-direction:column;gap:14px;display:flex}.mc-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px 16px;display:flex}.mc-toolbar p{max-width:720px;color:var(--muted);font-size:12.5px;line-height:1.6}.mc-toolbar kbd{color:var(--th-ink);border:1px solid var(--th-line);border-radius:4px;padding:0 5px;font-family:inherit;font-size:11px;font-weight:700}.mc-toolbar__actions{gap:8px;display:flex}.mc-grid{border-collapse:collapse;width:100%;font-size:13px}.mc-grid th,.mc-grid td{border:1px solid var(--th-line)}.mc-grid th{letter-spacing:.04em;text-align:left;text-transform:uppercase;white-space:nowrap;color:var(--th-table-head-ink);background:var(--th-table-head);padding:8px 10px;font-size:11px;font-weight:700}.mc-grid td{white-space:nowrap;height:36px;padding:0 8px}.mc-grid td.mc-grid__cell{padding:0}.mc-grid__cell input,.mc-grid__cell select{width:100%;height:36px;font:inherit;color:var(--th-ink);background:0 0;border:2px solid #0000;border-radius:0;padding:0 8px;font-size:13px}.mc-grid__cell input:focus,.mc-grid__cell select:focus{background:var(--th-card);border-color:var(--th-accent);outline:none}.mc-grid__cell [aria-invalid=true]{background:#ef444414;border-color:#ef4444}.mc-grid__index{width:40px;color:var(--muted);text-align:center!important}.mc-grid__mono{font-variant-numeric:tabular-nums}.mc-grid__locked td{color:var(--muted);background:var(--th-bg)}.mc-grid__blank .mc-grid__index{opacity:.6}.mc-grid__lock{color:var(--muted);display:inline-flex}.mc-status{white-space:nowrap;border-radius:var(--r-pill);padding:2px 9px;font-size:11.5px;font-weight:700;display:inline-block}.mc-status--draft{color:#475569;background:#e2e8f0}.mc-status--returned{color:#92400e;background:#fef3c7}.mc-status--submitted{color:#1d4ed8;background:#dbeafe}.mc-status--verified{color:#166534;background:#dcfce7}.mc-status--printed{color:#5b21b6;background:#ede9fe}.mc-row-btn{color:var(--th-accent);border:1px solid var(--th-line);border-radius:var(--r-pill);padding:3px 10px;font-size:12px;font-weight:700}.mc-row-btn:hover{border-color:var(--th-accent)}.mc-row-btn--remove{color:var(--muted);padding:0 8px;font-size:16px;line-height:22px}.mc-row-btn--remove:hover{color:#dc2626;border-color:#dc2626}.mc-returned,.mc-problems{border-radius:var(--r-sm);flex-direction:column;gap:4px;padding:10px 14px;font-size:12.5px;line-height:1.5;display:flex}.mc-returned{color:#92400e;background:#fef3c7}.mc-problems{color:#b91c1c;background:#ef444414}.mc-footer{border-top:1px solid var(--th-line);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;padding-top:12px;display:flex}.mc-footer__count{color:var(--muted);margin-right:auto;font-size:12.5px}.mc-unsaved{color:#92400e;border-radius:var(--r-pill);background:#fef3c7;padding:2px 9px;font-size:11.5px;font-weight:700}.mc-footer .th-update-btn:disabled,.mc-footer .btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.mc-form__title-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.mc-form__title{color:var(--th-ink);font-size:15px;font-weight:800}.mc-form__grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 16px;display:grid}.mc-form__wide{grid-column:span 2}.mc-field{flex-direction:column;gap:5px;display:flex}.mc-field>span,.mc-copy>span{color:var(--muted);font-size:12px;font-weight:700}.mc-field input,.mc-field select,.mc-copy select{width:100%;font:inherit;color:var(--th-ink);background:var(--th-card);border:1.5px solid var(--th-line);border-radius:var(--r-sm);padding:9px 10px;font-size:13.5px}.mc-field input:focus,.mc-field select:focus,.mc-copy select:focus{border-color:var(--th-accent);outline:none}.mc-field.has-error input,.mc-field.has-error select{border-color:#ef4444}.mc-field small,.mc-form__error{color:#dc2626;font-size:11.5px;font-weight:600}.mc-form__divider{border:none;border-top:1px solid var(--th-line)}.mc-copy{align-items:center;gap:8px;display:flex}.mc-copy select{width:auto;padding:6px 8px}.mc-check{color:var(--th-ink);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.mc-form__row{flex-wrap:wrap;align-items:flex-start;gap:12px 16px;display:flex}.mc-field--grow{flex:200px;min-width:0}.mc-field--lrn{flex:0 190px}.mc-field--sex{flex:0 0 130px}.mc-field--date{flex:0 190px}.mc-field--mi{flex:0 0 76px}.mc-field--suffix{flex:0 0 104px}.mc-field--phone{flex:0 200px}.mc-field--address{flex:3 340px;min-width:0}.mc-field--city{flex:180px;max-width:300px}.mc-field textarea{width:100%;min-height:64px;font:inherit;border-radius:var(--r-sm);resize:vertical;padding:9px 10px;font-size:13.5px;line-height:1.45}@media (width<=560px){.mc-field--lrn,.mc-field--date,.mc-field--phone,.mc-field--city{flex:100%;max-width:none}}@media (width<=860px){.mc-form__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.mc-form__grid{grid-template-columns:minmax(0,1fr)}.mc-form__wide{grid-column:auto}}.mc-panel{margin-bottom:14px;padding:14px 16px}.mc-panel h2{align-items:center;gap:8px;margin:0 0 8px;font-size:15px;display:flex}.mc-panel h2 .count-badge{margin-left:0}.mc-panel--returned{background:#fff7f7;border:2px solid #fca5a5}[data-theme=dark] .mc-panel--returned,[data-theme=semidark] .mc-panel--returned{background:#dc26261f}.mc-panel--waiting{border:2px solid #bfdbfe}.mc-panel ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.mc-panel li{flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:13.5px;display:flex}.mc-panel li span{color:var(--th-grey-ink)}.mc-panel li .mc-row-btn{margin-left:auto}.mc-panel__count{text-align:center;color:#1e3a8a;background:#dbeafe;border-radius:999px;min-width:22px;padding:1px 7px;font-size:12px;font-weight:800}.mc-panel__hint{color:var(--th-grey-ink);margin:8px 0 0;font-size:12px}.th-notif__todo{text-align:left;background:#dc26260f;border-radius:8px;align-items:flex-start;gap:8px;width:100%;margin-bottom:8px;padding:8px;display:flex}.th-notif__todo .count-badge{margin:1px 0 0}.th-notif__todo span{flex-direction:column;gap:2px;font-size:13px;display:flex}.th-notif__todo small{opacity:.7}.th-nav-item .count-badge{margin-left:auto}.teacher-app{--th-field-bg:#fff;--th-field-border:#8d97aa;--th-field-muted:#f1f3f6;--th-field-muted-border:#c3c9d4}.teacher-app[data-theme=dark]{--th-field-bg:#0b1230;--th-field-border:#5a6896;--th-field-muted:#121a3a;--th-field-muted-border:#323e6a}.teacher-app[data-theme=semidark]{--th-field-bg:#1f2036;--th-field-border:#6f7199;--th-field-muted:#292a45;--th-field-muted-border:#474970}.teacher-app :is(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden],[type=color],[type=button],[type=submit],[type=reset],[type=image]),select,textarea){color:var(--th-ink);background-color:var(--th-field-bg);border:1.5px solid var(--th-field-border)}.teacher-app :is(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden],[type=color],[type=button],[type=submit],[type=reset],[type=image]),select,textarea):focus{border-color:var(--th-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--th-accent) 25%, transparent);outline:none}.teacher-app :is(input,textarea):read-only:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden],[type=color],[type=button],[type=submit],[type=reset],[type=image]),.teacher-app :is(input,select,textarea):disabled:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden],[type=color],[type=button],[type=submit],[type=reset],[type=image]){color:var(--th-grey-ink);background-color:var(--th-field-muted);border-color:var(--th-field-muted-border);box-shadow:none}.teacher-app [aria-invalid=true]:is(input,select,textarea){border-color:#ef4444}.teacher-app .mc-grid__cell :is(input,select){background-color:var(--th-field-bg);box-shadow:none;border:2px solid #0000}.teacher-app .mc-grid__cell :is(input,select):focus{border-color:var(--th-accent)}.teacher-app .mc-grid__cell [aria-invalid=true]{background-color:#ef444414;border-color:#ef4444}.th-schedule th.is-off{color:var(--th-grey-ink);background:var(--th-grey)}.th-schedule__off{letter-spacing:.02em;text-transform:none;margin-top:2px;font-size:9.5px;font-weight:600;display:block}.th-off-cell{background:repeating-linear-gradient(135deg, transparent 0 6px, color-mix(in srgb, var(--th-grey-ink) 14%, transparent) 6px 7px)}.sf2-date--off{background:repeating-linear-gradient(135deg,#fff 0 4px,#d1d5db 4px 5px)}.sf2-offdays{margin-top:6px}.th-confirm-panel.mc-review{flex-direction:column;width:min(900px,100%);max-height:calc(100vh - 40px);display:flex}.mc-review__body{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow-y:auto}.mc-review__warn{color:#92400e;background:#fef3c7;border-radius:8px;padding:10px 12px}.teacher-app[data-theme=dark] .mc-review__warn,.teacher-app[data-theme=semidark] .mc-review__warn{color:#fde68a;background:#fbbf2424}.mc-review__note{color:var(--th-grey-ink);font-size:12.5px}.mc-review__table{border:1px solid var(--th-line);border-radius:8px;overflow:auto}.mc-review__table table{border-collapse:collapse;width:100%;min-width:640px;font-size:13px}.mc-review__table th,.mc-review__table td{text-align:left;border-bottom:1px solid var(--th-line);white-space:nowrap;padding:7px 10px}.mc-review__table th{letter-spacing:.04em;text-transform:uppercase;color:var(--th-table-head-ink);background:var(--th-table-head);font-size:11px;font-weight:700;position:sticky;top:0}.mc-review__name{font-weight:700}.mc-review__tick{border:1.5px solid var(--th-accent);border-radius:8px;padding:10px 12px;font-weight:600}.th-confirm-panel__leave:disabled{border-color:var(--th-accent)}.th-birthdays{flex-direction:column;gap:8px;padding:14px 16px;display:flex}.th-birthdays h2{color:var(--th-ink);font-size:14px;font-weight:800}.th-birthdays ul{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.th-birthdays li{color:var(--th-ink);grid-template-columns:82px minmax(0,1fr);align-items:baseline;gap:8px;font-size:13px;display:grid}.th-birthdays__when{color:var(--th-grey-ink);font-size:12px;font-weight:700}.th-birthdays li.is-today .th-birthdays__when{color:#db2777}.th-birthdays__who small{color:var(--th-grey-ink)}.th-notif__birthday{color:var(--th-ink);background:#db27771a;border-radius:8px;align-items:flex-start;gap:8px;margin:0 0 8px;padding:8px 10px;font-size:13px;line-height:1.4;display:flex}.mc-discard{color:#b91c1c;border-color:#fca5a5}.mc-tab:disabled{opacity:.5;cursor:not-allowed}.th-sidebar{flex-direction:column;display:flex}.th-sidebar .vq-signature{color:var(--th-sidebar-ink)}.pf-about{max-width:640px;color:var(--th-ink);background:var(--th-card);border:1px solid var(--th-line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:26px 28px 22px}.pf-about .vq-about__head h2{color:var(--th-accent)}.pf-about .vq-about__head p,.pf-about .vq-about__foot{color:var(--muted)}.pf-about .vq-about__list li{border-left-color:var(--th-accent)}.pf-about .vq-about__foot{border-top-color:var(--th-line)}.pf-nav__item--about{margin-top:8px}.pf-nav__item--about:after{content:"";border-top:1px solid var(--th-line);position:absolute;top:-5px;left:12px;right:12px}@media (width<=960px){.th-sidebar .vq-signature__name,.th-sidebar .vq-signature__version{display:none}}.admin-app{min-height:100vh;color:var(--ink);background:#eef2f9;flex-direction:column;display:flex}.ad-topinfo{color:#cbd5f5;text-align:right;background:#0f1533;padding:6px 26px;font-size:12px;font-weight:600}.ad-header{color:#fff;background:#1e1b4b;justify-content:space-between;align-items:center;gap:16px;padding:14px 26px;display:flex}.ad-header__brand{align-items:center;gap:10px;min-width:0;font-size:14.5px;font-weight:700;display:flex}.ad-header__brand span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ad-menu-toggle{color:#fff;width:34px;height:34px;transition:border-color .18s var(--ease), background-color .18s var(--ease);border:1.5px solid #0000;border-radius:50%;flex:none;place-items:center;display:none}.ad-menu-toggle:hover{background:#ffffff1f;border-color:#ffffff80}.ad-header__actions{align-items:center;gap:10px;display:flex}.ad-icon-btn{color:#fff;width:36px;height:36px;transition:border-color .18s var(--ease), background-color .18s var(--ease);border:1.5px solid #0000;border-radius:50%;place-items:center;display:grid}.ad-icon-btn:hover{background:#ffffff1f;border-color:#ffffff80}.ad-dropdown{position:relative}.ad-dropdown__panel{z-index:30;width:220px;color:var(--ink);text-align:left;background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-md);animation:rise-in .16s var(--ease) both;padding:14px;font-size:13px;position:absolute;top:calc(100% + 10px);right:0}.ad-dropdown__name{font-weight:700}.ad-dropdown__role{color:var(--muted);margin-bottom:10px}.ad-logout{color:#fff;background:#dc2626;border-color:#dc2626}.ad-logout:hover{border-color:#fecaca;box-shadow:0 0 0 3px #dc262640}.ad-body{flex:1;min-height:0;display:flex}.ad-sidebar{--ad-sidebar-active-bg:#eef2f9;background:#25225c;flex-direction:column;flex:none;gap:18px;width:232px;padding:26px 0 26px 14px;display:flex}.ad-sidebar .ad-nav{gap:20px}.ad-sidebar .ad-nav-item{color:#d4d7f5;border-radius:var(--r-pill);border:none;margin-right:14px;padding:12px 16px 12px 14px;font-size:14px;position:relative}.ad-sidebar .ad-nav-item:hover{color:#fff;background:#ffffff1f}.ad-sidebar .ad-nav-item.is-active,.ad-sidebar .ad-nav-item.is-active:hover{color:#1e1b4b;background:var(--ad-sidebar-active-bg);border-radius:var(--r-pill) 0 0 var(--r-pill);box-shadow:var(--shadow-sm);margin-right:0}.ad-sidebar .ad-nav-item .icon:not(.icon--empty),.ad-menu-panel .ad-nav-item .icon:not(.icon--empty){filter:brightness(0)invert();opacity:.92}.ad-sidebar .ad-nav-item.is-active .icon:not(.icon--empty){filter:brightness(0);opacity:.85}.ad-sidebar .ad-nav-item.is-active:before,.ad-sidebar .ad-nav-item.is-active:after{content:"";pointer-events:none;width:18px;height:18px;position:absolute;right:0}.ad-sidebar .ad-nav-item.is-active:before{background:radial-gradient(circle at 0 0, transparent 18px, var(--ad-sidebar-active-bg) 18.5px);top:-18px}.ad-sidebar .ad-nav-item.is-active:after{background:radial-gradient(circle at 0 100%, transparent 18px, var(--ad-sidebar-active-bg) 18.5px);bottom:-18px}.ad-nav{flex-direction:column;gap:4px;display:flex}.ad-nav-item{color:#c7cdf0;text-align:left;border-radius:var(--r-md);transition:color .18s var(--ease), background-color .18s var(--ease), border-color .18s var(--ease);border:1.5px solid #0000;align-items:center;gap:11px;padding:10px 12px;font-size:13.5px;font-weight:600;display:flex}.ad-nav-item:hover{color:#fff;border-color:#ffffff29}.ad-nav-item.is-active{color:#fff;background:#ffffff1f;border-color:#ffffff38}.ad-main{flex:1;min-width:0;padding:26px 30px;overflow:auto}.ad-blank{border-radius:var(--r-lg);background:#f6f8fc;border:1px solid #dbe1ee;min-height:460px}.ad-welcome{margin-bottom:20px}.ad-welcome h1{font-size:23px}.ad-welcome p{color:var(--muted);margin-top:3px;font-size:13.5px}.ad-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px;display:grid}.ad-stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.ad-stat__head{color:#fff;justify-content:space-between;align-items:center;gap:8px;padding:10px 16px;font-size:12px;font-weight:700;display:flex}.ad-stat--blue .ad-stat__head{background:#318ce7}.ad-stat--green .ad-stat__head{background:#4caf50}.ad-stat--orange .ad-stat__head{background:#ff9800}.ad-stat--coral .ad-stat__head{background:#e57373}.ad-live{letter-spacing:.04em;align-items:center;gap:5px;font-size:10.5px;font-weight:700;display:inline-flex}.ad-live__dot{background:#fff;border-radius:50%;width:6px;height:6px;animation:1.6s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.ad-stat__body{padding:14px 16px 16px}.ad-stat__value{font-size:26px;font-weight:700}.ad-stat__label{color:var(--muted);margin-top:2px;font-size:12px}.ad-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);margin-bottom:18px;padding:18px}.ad-card__title{margin-bottom:14px;font-size:15.5px}.table-scroll{overflow-x:auto}.ad-table{border-collapse:collapse;width:100%;font-size:13px}.ad-table th,.ad-table td{text-align:left;border-bottom:1px solid var(--line);padding:10px 12px}.ad-table th{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:#eaf0f6;font-size:11px;font-weight:700}.ad-table--bordered th,.ad-table--bordered td{border:1px solid #d7dee6}.ad-badge{border-radius:var(--r-pill);padding:4px 12px;font-size:11.5px;font-weight:700;display:inline-block}.ad-badge--in{color:#166534;background:#dcfce7}.ad-badge--out{color:#4b3f66;background:#e8e5f0}.ad-card--beige{background:#faf6ee}.ad-overview__head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;display:flex}.ad-overview__head .ad-card__title{margin-bottom:0}.ad-filter-group{border-radius:var(--r-pill);background:#f1f3f8;gap:6px;padding:4px;display:flex}.ad-filter{color:var(--muted);border-radius:var(--r-pill);transition:background-color .18s var(--ease), color .18s var(--ease);padding:6px 14px;font-size:12.5px;font-weight:600}.ad-filter.is-active{color:#1e1b4b;box-shadow:var(--shadow-sm);background:#fff}.ad-legend{color:var(--muted);gap:20px;margin-bottom:4px;font-size:12.5px;display:flex}.ad-legend span{align-items:center;gap:7px;display:inline-flex}.ad-dot{border-radius:50%;width:9px;height:9px}.ad-chart{margin-top:10px;position:relative}.ad-chart__svg{width:100%;height:220px;display:block}.ad-chart__gridline{stroke:#e5e9f0;stroke-width:1px}.ad-chart__tick{fill:var(--muted);font-size:10px}.ad-chart__empty{color:var(--muted);text-align:center;pointer-events:none;justify-content:center;align-items:center;padding:0 40px;font-size:12.5px;display:flex;position:absolute;inset:0}.ad-weekly-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:16px;display:grid}.ad-weekly-card{border:1px solid var(--line);border-radius:var(--r-md);background:#fff;border-left:4px solid;flex-direction:column;gap:6px;padding:14px 16px;display:flex}.ad-weekly-card__label{letter-spacing:.05em;text-transform:uppercase;font-size:11px;font-weight:700}.ad-weekly-card__subtitle{color:var(--muted);align-items:center;gap:5px;font-size:11.5px;display:flex}.ad-weekly-card__value{font-size:24px;font-weight:800;line-height:1.1}.ad-chart__table{margin-top:8px;font-size:12.5px}.ad-chart__table summary{cursor:pointer;color:var(--muted)}.ad-chart__table .ad-table{margin-top:6px}.ad-alert__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:16px;display:flex}.ad-alert__title{color:#b91c1c;align-items:center;gap:8px;font-size:15.5px;font-weight:700;display:flex}.ad-alert__student{align-items:center;gap:10px;display:flex}.ad-alert__avatar{background:#e5e9f0;border-radius:50%;flex:none;width:30px;height:30px}.ad-alert__lrn{margin-top:3px}.ad-alert__dates{gap:6px;display:flex}.ad-alert__empty-row{color:var(--muted);text-align:center;padding:20px}.ad-pill{border-radius:var(--r-pill);padding:3px 10px;display:inline-flex}.ad-pill--blue{background:#e3f0fd}.ad-pill--coral{background:#fbe4e2}.ad-total-badge{border-radius:var(--r-sm);background:#f1f3f8;place-items:center;min-width:26px;height:22px;padding:0 6px;display:inline-grid}.ad-status{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:600;display:inline-flex}.ad-status__dot{background:#9aa1b1;border-radius:50%;width:7px;height:7px}.ad-status--sent{color:#2e7d32}.ad-status--sent .ad-status__dot{background:#4caf50}.ad-alert-btn{border-radius:var(--r-pill);transition:background-color .18s var(--ease), color .18s var(--ease);padding:6px 14px;font-size:11.5px;font-weight:700}.ad-alert-btn--pending{color:#e57373;background:#fff;border:1.5px solid #e57373}.ad-alert-btn--pending:hover{color:#fff;background:#e57373}.ad-alert-btn--sent{color:#2e7d32;background:#c8e6c9;display:inline-block}@media (width<=640px){.ad-weekly-grid{grid-template-columns:1fr}}.ad-menu-backdrop{z-index:120;animation:fade-in .15s var(--ease) both;background:#0f172a66;position:fixed;inset:0}.ad-menu-panel{width:min(260px,82vw);height:100%;animation:slide-in-left .22s var(--ease) both;background:#25225c;flex-direction:column;gap:18px;padding:60px 14px 24px;display:flex;position:absolute;top:0;left:0}@keyframes slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}.ad-menu-close{color:#fff;border:1.5px solid #ffffff4d;border-radius:50%;place-items:center;width:32px;height:32px;display:grid;position:absolute;top:16px;right:16px}.superadmin-app{background:#e2eafa}.superadmin-app .ad-blank{background:#eef4fd;border-color:#cddaf0}.superadmin-app .ad-topinfo{text-align:left;color:#3f1d00;background:#f59e0b}.superadmin-app .ad-nav-item:hover{color:#fff;background:#60a5fa29;border-color:#60a5fa59}.superadmin-app .ad-nav-item.is-active{color:#fff;background:#60a5fa52;border-color:#60a5fa8c}.superadmin-app .ad-sidebar{--ad-sidebar-active-bg:#e2eafa}.superadmin-app .ad-sidebar .ad-nav-item:hover{background:#60a5fa29}.superadmin-app .ad-sidebar .ad-nav-item.is-active,.superadmin-app .ad-sidebar .ad-nav-item.is-active:hover{color:#1e1b4b;background:var(--ad-sidebar-active-bg)}.sad-toprow{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.sad-toprow h1{color:#1e1b4b;font-size:21px}.sad-section-title{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:26px 0 14px;font-size:12px;font-weight:700}.tag-pill{border-radius:var(--r-pill);align-items:center;padding:3px 10px;font-size:10.5px;font-weight:700;display:inline-flex}.tag-pill--neutral{color:#6b7280;background:#eef0f4}.sad-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:8px;display:grid}.sad-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:16px}.sad-card__head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.sad-card__icon{border-radius:10px;place-items:center;width:36px;height:36px;display:grid}.sad-card__icon--purple{color:#7c3aed;background:#ede9fe}.sad-card__icon--green{color:#16a34a;background:#dcfce7}.sad-card__icon--orange{color:#ea580c;background:#ffedd5}.sad-card__primary{justify-content:space-between;align-items:center;gap:10px;display:flex}.sad-card__label{color:var(--muted);margin-top:4px;font-size:12px}.sad-card__footer{color:var(--muted);align-items:center;gap:6px;margin-top:10px;font-size:11.5px;display:flex}.sad-expand{color:#4338ca;align-items:center;gap:4px;font-size:11px;font-weight:700;display:inline-flex}.sad-breakdown{flex-direction:column;gap:6px;margin-top:12px;display:flex}.sad-breakdown li{color:var(--ink-soft);justify-content:space-between;align-items:center;font-size:12.5px;display:flex}.sad-distribution{border-radius:var(--r-pill);background:#eef0f4;gap:2px;height:7px;margin-top:12px;display:flex;overflow:hidden}.sad-distribution__segment{opacity:.35;flex:1}.sad-legend{flex-wrap:wrap;gap:10px;margin-top:8px;display:flex}.sad-legend__item{color:var(--muted);align-items:center;gap:5px;font-size:10.5px;display:inline-flex}.sad-legend__dot{border-radius:50%;width:7px;height:7px}.sad-tag{color:var(--ink-soft);align-items:center;gap:6px;margin-top:10px;font-size:11.5px;font-weight:600;display:inline-flex}.sad-tag__dot{background:#9ca3af;border-radius:50%;width:7px;height:7px}.sad-chip{background:#f3f4f6;border-radius:6px;padding:2px 8px;display:inline-flex}.sad-panels{grid-template-columns:1fr 1fr;gap:16px;display:grid}.sad-panel__head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.sad-panel__head h3{color:#1e1b4b;font-size:14.5px}.sad-panel__meta{color:var(--muted);font-size:11px}.sad-log,.sad-backups{flex-direction:column;gap:10px;display:flex}.sad-log li,.sad-backups li{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding-bottom:10px;display:flex}.sad-log li:last-child,.sad-backups li:last-child{border-bottom:none;padding-bottom:0}.sad-log__desc{flex:1}.sad-table{border-collapse:collapse;width:100%;font-size:12.5px}.sad-table th,.sad-table td{text-align:left;border-bottom:1px solid var(--line);padding:9px 8px}.sad-table th{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:10.5px;font-weight:700}.sad-role{border-radius:var(--r-pill);padding:3px 9px;font-size:10.5px;font-weight:700;display:inline-block}.sad-role--admin{color:#7c3aed;background:#ede9fe}.sad-role--principal{color:#d97706;background:#fef3c7}.sad-role--teacher{color:#2563eb;background:#dbeafe}.sad-online-dot{background:#d1d5db;border-radius:50%;width:8px;height:8px;display:inline-block}.sad-uptime-bar{border-radius:var(--r-pill);background:#eef0f4;height:8px;margin-bottom:16px;overflow:hidden}.sad-uptime-bar__fill{border-radius:inherit;background:#2563eb;height:100%;display:block}.sad-specs{flex-direction:column;gap:12px;display:flex}.sad-specs>div{justify-content:space-between;align-items:center;gap:12px;display:flex}.sad-specs dt{color:var(--muted);font-size:12px}.sad-specs dd{color:var(--ink-soft);align-items:center;gap:8px;font-size:12.5px;font-weight:600;display:flex}.sad-mono{color:var(--muted);font-family:ui-monospace,Consolas,monospace;font-size:12px}.sad-mini-bar{border-radius:var(--r-pill);background:#eef0f4;width:60px;height:6px;display:inline-block;overflow:hidden}.sad-mini-bar span{border-radius:inherit;background:#2563eb;height:100%;display:block}.sad-actions{flex-wrap:wrap;gap:10px;display:flex}.tag-pill--info{color:#7c3aed;background:#ede9fe}.sad-return{margin-bottom:16px}.sad-expanded-row{grid-template-columns:minmax(280px,1fr) minmax(260px,1fr);align-items:stretch;gap:16px;margin-bottom:16px;display:grid}.sad-pie-card{flex-direction:column;display:flex}.sad-pie-card__title{color:#1e1b4b;margin-bottom:16px;font-size:14.5px}.sad-pie-body{flex:1;align-items:center;gap:24px;display:flex}.sad-pie{opacity:.4;border-radius:50%;flex:none;width:128px;height:128px}.sad-legend--stacked{flex-direction:column;align-items:flex-start;gap:8px}.sad-pie-card__note{color:var(--muted);margin-top:14px;font-size:11.5px}.sad-grid-table-card{padding:0;overflow:hidden}.sad-grid-table{border-collapse:collapse;width:100%;font-size:13px}.sad-grid-table th,.sad-grid-table td{text-align:left;border:1px solid #9aa1b1;padding:11px 16px}.sad-grid-table th{color:#1e1b4b;background:#f4f5f8;font-weight:700}.sad-grid-table td{height:40px}@media (width<=760px){.sad-expanded-row{grid-template-columns:1fr}.sad-pie-body{flex-direction:column;align-items:flex-start}}.um-shell{border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow-sm);overflow:hidden}.um-banner{color:#fff;background:#4a4a4a;justify-content:space-between;align-items:center;gap:16px;padding:14px 20px;display:flex}.um-banner h2{font-size:15.5px}.um-banner-search{align-items:center;gap:8px;display:flex}.um-banner-search__label{color:#ffffffd9;font-size:12.5px}.um-banner-search__input{width:210px;color:var(--ink);border-radius:var(--r-sm);background:#fff;padding:7px 10px;font-size:12.5px}.um-banner-search__btn{color:#fff;border-radius:var(--r-sm);transition:background-color .18s var(--ease);background:#4caf50;padding:7px 16px;font-size:12.5px;font-weight:700}.um-banner-search__btn:hover{background:#43a047}.um-body{background:var(--card);display:flex}.um-subnav{background:#cfd2d6;border-right:1px solid #9a9ea3;flex-direction:column;flex:none;width:150px;padding:14px 0;display:flex}.um-subnav-item{color:#fff;text-align:center;transition:background-color .18s var(--ease), color .18s var(--ease);background:gray;border:1px solid #00000047;border-radius:0;justify-content:center;align-items:center;padding:10px 14px;font-size:13px;font-weight:700;display:flex}.um-subnav-item--create{margin-bottom:38px}.um-subnav-divider{background:#4a4a4a;border:none;width:100%;height:3px;margin:28px 0}.um-subnav-item:hover{background:#8f8f8f}.um-subnav-item--create.is-active{color:#fff;background:#318ce7}.um-subnav-item--create.is-active:hover{background:#2980b9}.um-subnav-item--update.is-active{color:#2b2b1a;background:#d4e157}.um-subnav-item--update.is-active:hover{background:#cddc39}.um-subnav-item--view.is-active{color:#fff;background:#4caf50}.um-subnav-item--view.is-active:hover{background:#43a047}.um-panel{flex:1;min-width:0;padding:22px 26px}.um-form{flex-direction:column;gap:16px;max-width:640px;display:flex}.um-row{gap:14px;display:flex}.um-row--names .um-field:nth-child(2),.um-row--names .um-field:nth-child(3){flex:2}.um-row--names .um-field.um-field--title{flex:0 0 84px}.um-input--position{max-width:260px}.um-field{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.um-field--narrow{flex:0 0 90px}.um-label{color:var(--ink-soft);font-size:12.5px;font-weight:600}.um-input,.um-select{width:100%;color:var(--ink);border-radius:var(--r-sm);transition:border-color .18s var(--ease), background-color .18s var(--ease);background:#eceff3;border:1.5px solid #0000;padding:10px 12px;font-size:13.5px}.um-input:focus,.um-select:focus{background:#fff;border-color:#2980b9;outline:none}.um-textarea{resize:vertical;min-height:64px;font-family:inherit}.um-input-control{position:relative}.um-input-control .um-input{padding-right:42px}.um-reveal{width:30px;height:30px;color:#6b7280;border-radius:6px;place-items:center;display:grid;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.um-reveal:hover{color:#2980b9;background:#e3ecf7}.um-radio-row{gap:18px;display:flex}.um-radio{color:var(--ink-soft);align-items:center;gap:7px;font-size:13px;display:inline-flex}.um-radio input{accent-color:#2980b9;width:15px;height:15px}.um-readonly{color:var(--muted);border-radius:var(--r-sm);background:#e5e7eb;align-items:center;gap:8px;padding:10px 12px;display:flex}.um-readonly__suffix{color:var(--muted);font-size:12.5px}.um-submit-row{justify-content:flex-end;margin-top:4px;display:flex}.um-submit{color:#fff;background:#2980b9;border-color:#2980b9}.um-submit:hover{box-shadow:0 0 0 3px #2980b947}.um-accounts-stack{flex-direction:column;gap:18px;display:flex}.um-account-panel{border-radius:var(--r-sm);background:#2e2350;padding:10px}.um-account-panel__head{color:#fff;border-radius:calc(var(--r-sm) - 2px) calc(var(--r-sm) - 2px) 0 0;background:#3b2e63;padding:10px 14px;font-size:13px;font-weight:700}.um-account-panel__body{border-radius:0 0 calc(var(--r-sm) - 2px) calc(var(--r-sm) - 2px);background:#f1ecfb;padding:12px}.um-role-filter{align-items:center;gap:10px;margin-bottom:14px;display:flex}.um-select{border-color:#141414;width:auto}.um-select:focus{border-color:#2980b9}.um-table{table-layout:fixed;border-collapse:collapse;background:#fff;width:100%;font-size:12.5px}.um-table th,.um-table td{text-align:left;border:1px solid #9aa1b1;padding:9px 10px}.um-table th:last-child,.um-table td:last-child{width:116px}.um-table th{letter-spacing:.04em;text-transform:uppercase;color:#fff;background:#000;font-size:11px;font-weight:700}.um-table td{text-overflow:ellipsis;white-space:nowrap;height:34px;overflow:hidden}.um-badge{border-radius:var(--r-pill);margin-right:8px;padding:3px 10px;font-size:10.5px;font-weight:700;display:inline-block}.um-badge--inactive{color:#b91c1c;background:#fee2e2}.um-change-btn{color:#fff;border-radius:var(--r-sm);transition:background-color .18s var(--ease);background:gray;padding:4px 12px;font-size:11px;font-weight:700}.um-change-btn:hover{background:#6b6b6b}@media (width<=760px){.um-body{flex-direction:column}.um-subnav{flex-direction:row;width:100%}.um-subnav-item,.um-subnav-item--create{flex:1;margin:0}.um-subnav-divider{width:3px;height:auto;margin:0 20px}.um-row{flex-direction:column}.um-field--narrow{flex:1}}@media (width<=1200px){.sad-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=900px){.sad-panels{grid-template-columns:1fr}}@media (width<=560px){.sad-metrics{grid-template-columns:1fr}}.rfid-shell{border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow-sm);overflow:hidden}.rfid-banner{color:#fff;background:#4a4a4a;justify-content:space-between;align-items:center;gap:16px;padding:14px 20px;display:flex}.rfid-banner h2{font-size:15.5px}.rfid-search{align-items:center;gap:8px;display:flex}.rfid-search__input{width:220px;color:var(--ink);border-radius:var(--r-sm);background:#fff;padding:7px 10px;font-size:12.5px}.rfid-search__btn{color:#fff;border-radius:var(--r-sm);transition:background-color .18s var(--ease);background:#4caf50;padding:7px 16px;font-size:12.5px;font-weight:700}.rfid-search__btn:hover{background:#43a047}.rfid-empty-card{background:#f6f6f5;min-height:320px}.rfid-editor{background:#fff;padding:22px 26px}.rfid-editor__head{margin-bottom:18px}.rfid-editor__head h3{color:#1e1b4b;font-size:15px}.rfid-editor__head p{color:var(--muted);margin-top:3px;font-size:12px}.rfid-editor__grid{gap:28px;margin-bottom:20px;display:flex}.rfid-editor__fields{flex-direction:column;flex:1;gap:4px;min-width:0;max-width:480px;display:flex}.rfid-field{border-bottom:1px solid #f0f0ee;align-items:flex-start;gap:14px;padding:7px 0;display:flex}.rfid-field__label{color:#333;flex:0 0 168px;padding-top:2px;font-size:12.5px;font-weight:700}.rfid-field__value{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.rfid-field__text{color:var(--ink);word-break:break-word;flex:1;font-size:13px}.rfid-field__input{min-width:0;color:var(--ink);background:#eceff3;border:1.5px solid #2980b9;border-radius:6px;flex:1;padding:6px 9px;font-family:inherit;font-size:13px}.rfid-field__input:focus{outline:none}.rfid-field__input--area{resize:vertical}.rfid-field__edit{width:24px;height:24px;color:var(--muted);transition:color .18s var(--ease), background-color .18s var(--ease);border-radius:6px;flex:none;place-items:center;display:grid}.rfid-field__edit:hover{color:#2980b9;background:#e3ecf7}.rfid-divider{background:#4a4a4a;border:none;height:2px;margin:14px 0}.rfid-photo{flex:none;width:168px}.rfid-photo__frame{color:#9aa1b1;border:1px solid var(--line);border-radius:var(--r-sm);background:#f2f3f5;justify-content:center;align-items:center;width:168px;height:168px;display:flex;position:relative;overflow:hidden}.rfid-photo__img{object-fit:cover;width:100%;height:100%}.rfid-photo__edit{color:#fff;width:28px;height:28px;box-shadow:var(--shadow-sm);transition:background-color .18s var(--ease);background:#2980b9;border-radius:50%;place-items:center;display:grid;position:absolute;bottom:8px;right:8px}.rfid-photo__edit:hover{background:#1f6592}.rfid-editor__footer{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-top:16px;display:flex}.rfid-status{align-items:center;gap:10px;display:flex}.rfid-status__label{color:#333;font-size:12.5px;font-weight:700}.rfid-badge{color:#fff;border-radius:var(--r-pill);opacity:.4;padding:5px 14px;font-size:11.5px;font-weight:700}.rfid-badge.is-current{opacity:1}.rfid-badge--activated{background:#4caf50}.rfid-badge--inactive{background:#fb8c00}.rfid-status__change{color:#fff;border-radius:var(--r-pill);transition:background-color .18s var(--ease);background:#757575;padding:5px 14px;font-size:11.5px;font-weight:700}.rfid-status__change:hover{background:#616161}.rfid-actions{gap:10px;display:flex}.rfid-btn{border-radius:var(--r-sm);transition:background-color .18s var(--ease), box-shadow .18s var(--ease);padding:9px 20px;font-size:12.5px;font-weight:700}.rfid-btn--purple{color:#fff;background:#5c6bc0}.rfid-btn--purple:hover{background:#4c5aad}.rfid-btn--gray{color:#333;background:#e0e0e0}.rfid-btn--gray:hover{background:#d2d2d2}.rfid-btn--cyan{color:#00363a;background:#b2ebf2}.rfid-btn--cyan:hover{background:#93dee7}.rfid-btn--blue{color:#fff;background:#3f51b5}.rfid-btn--blue:hover{background:#34409a}.rfid-preview{background:#f6f6f5;padding:20px 26px 26px}.rfid-preview__actions{justify-content:flex-end;gap:10px;margin-bottom:22px;display:flex}.rfid-cards{flex-wrap:wrap;justify-content:center;gap:40px;display:flex}.rfid-card-col{flex-direction:column;align-items:center;gap:10px;display:flex}.rfid-card{width:230px;height:360px;box-shadow:var(--shadow-md);border-radius:18px;flex-direction:column;display:flex;overflow:hidden}.rfid-card--front{background:linear-gradient(#bbdefb,#90caf9);align-items:center;gap:10px;padding:16px 14px}.rfid-card__header{text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.rfid-card__header span{color:#0d3c61;text-transform:uppercase;font-size:9.5px;font-weight:700;line-height:1.3}.rfid-card__photo{color:#6b8cae;width:92px;height:92px;box-shadow:var(--shadow-sm);background:#fff;border-radius:4px;place-items:center;display:grid;overflow:hidden}.rfid-card__photo img{object-fit:cover;width:100%;height:100%}.rfid-card__details{text-align:center;flex-direction:column;gap:2px;margin-top:auto;display:flex}.rfid-card__details p{color:#0d3c61;font-size:10.5px}.rfid-card__name{font-size:12.5px;font-weight:800}.rfid-card__sy{margin-top:4px;font-weight:600}.rfid-card--back{background:#eef7fa;padding:0}.rfid-card__emergency-head{color:#00363a;text-transform:uppercase;background:#26c6da;padding:12px 14px;font-size:10px;font-weight:700;line-height:1.3}.rfid-card__emergency-body{text-align:center;padding:12px 14px 0}.rfid-card__emergency-body p{color:#1f2430;font-size:10.5px}.rfid-card__emergency-name{font-weight:700}.rfid-card__compliance{color:#1f2430;text-align:center;background:#ede7f6;border-radius:10px;margin:12px 14px;padding:10px;font-size:8.5px;line-height:1.5}.rfid-card__footer{text-align:center;margin-top:auto;padding:0 14px 14px}.rfid-card__footer p{color:#1f2430;font-size:9px}.rfid-card__footer p:first-child{font-weight:700}.rfid-card__label{color:var(--muted);font-size:11.5px;font-weight:700}.rfid-batch{background:#f6f6f5;padding:20px 26px 26px}.rfid-batch__head{border-radius:var(--r-sm);background:#f7f1e3;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;padding:12px 16px;display:flex}.rfid-batch__class{color:#6b5b2a;font-size:13.5px;font-weight:700}.rfid-batch__count{color:#8a7a4a;font-size:12.5px}.rfid-batch__table{border-collapse:collapse;background:#fff;width:100%;font-size:12.5px}.rfid-batch__table th,.rfid-batch__table td{text-align:left;border-bottom:1px solid var(--line);padding:9px 10px}.rfid-batch__table th{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:10.5px;font-weight:700}.rfid-batch__actions-col{width:150px}.rfid-batch__actions-cell{text-align:right;white-space:nowrap}.rfid-batch__remove{font:inherit;color:#b91c1c;cursor:pointer;background:#fff;border:1px solid #fecaca;border-radius:6px;align-items:center;gap:5px;padding:5px 10px;font-size:12.5px;font-weight:600;display:inline-flex}.rfid-batch__remove:hover{background:#fef2f2}.rfid-batch__remove--yes{color:#fff;background:#dc2626;border-color:#dc2626}.rfid-batch__remove--yes:hover{background:#b91c1c}.rfid-batch__confirm{color:#374151;align-items:center;gap:6px;font-size:12.5px;font-weight:600;display:inline-flex}.rfid-row-menu{display:inline-block;position:relative}.rfid-row-menu__trigger{width:26px;height:26px;color:var(--muted);transition:color .18s var(--ease), background-color .18s var(--ease);border-radius:6px;place-items:center;display:grid}.rfid-row-menu__trigger:hover{color:var(--ink);background:#eceff3}.rfid-row-menu__panel{z-index:20;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);min-width:120px;box-shadow:var(--shadow-md);animation:rise-in .14s var(--ease) both;padding:4px;position:absolute;top:calc(100% + 4px);right:0}.rfid-row-menu__item{width:100%;color:var(--ink-soft);text-align:left;transition:background-color .15s var(--ease), color .15s var(--ease);border-radius:4px;align-items:center;gap:8px;padding:7px 10px;font-size:12.5px;font-weight:600;display:flex}.rfid-row-menu__item--danger{color:#b91c1c}.rfid-row-menu__item--danger:hover{color:#fff;background:#dc2626}.rfid-pill{color:#6b5b2a;border-radius:var(--r-pill);background:#f0e6d2;padding:3px 12px;font-size:11px;font-weight:600;display:inline-block}.rfid-pill--success{color:#1b4d1e;background:#81c784}.rfid-batch__add-row{justify-content:flex-end;align-items:center;gap:12px;margin-top:18px;display:flex}.rfid-batch__active-name{color:var(--ink);border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;padding:9px 16px;font-size:12.5px}@media (width<=760px){.rfid-editor__grid{flex-direction:column}.rfid-field{flex-direction:column;gap:4px}.rfid-field__label{flex:none}.rfid-cards{flex-direction:column;align-items:center}}.reg-shell{border:1px solid #ccc}.reg-banner{background:#4a4a4a;padding:14px 20px}.reg-banner h2{color:#d4e157;font-size:15.5px;font-weight:700}.reg-body{background:#f3f2ef;padding:24px 26px}.reg-top-grid{gap:28px;display:flex}.reg-fields{flex-direction:column;flex:1;gap:16px;min-width:0;display:flex}.reg-row{gap:14px;display:flex}.reg-row--name .reg-field:first-child,.reg-row--name .reg-field:nth-child(2){flex:2}.reg-field{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.reg-field--narrow{flex:0 0 70px}.reg-field--suffix{flex:0 0 140px}.reg-field--short{flex:0 0 210px}.reg-field--tiny{flex:0 0 80px}.reg-label{color:#333;font-size:12.5px;font-weight:700}.reg-input{color:#1f2430;width:100%;transition:border-color .18s var(--ease);background:#fff;border:1px solid #ccc;border-radius:0;padding:9px 11px;font-size:13.5px;box-shadow:inset 0 1px 3px #0000001a}.reg-input:focus{border-color:#00a8e8;outline:none}.reg-input:disabled{color:#9aa1b1;background:#eceeef}.reg-textarea{resize:vertical;min-height:72px;font-family:inherit}.reg-select-wrap{position:relative}.reg-select{appearance:none;padding-right:28px}.reg-select-wrap:after{content:"▾";color:#4a4a4a;pointer-events:none;font-size:11px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.reg-checkbox{color:#555;cursor:pointer;align-items:center;gap:6px;margin-top:6px;font-size:11.5px;display:flex}.reg-checkbox__input{opacity:0;width:0;height:0;position:absolute}.reg-checkbox__box{color:#0000;width:15px;height:15px;transition:background-color .15s var(--ease), color .15s var(--ease), border-color .15s var(--ease);background:#fff;border:1px solid #ccc;border-radius:0;place-items:center;display:grid}.reg-checkbox__input:checked+.reg-checkbox__box{color:#fff;background:#00a8e8;border-color:#00a8e8}.reg-photo{flex:none;width:168px}.reg-photo__drop{color:#6b7280;width:168px;height:168px;transition:border-color .18s var(--ease);background:#fff;border:1px solid #ccc;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex;overflow:hidden;box-shadow:inset 0 1px 3px #0000001a}.reg-photo__drop:hover{border-color:#00a8e8}.reg-photo__drop span{font-size:11.5px;font-weight:600}.reg-photo__preview{object-fit:contain;width:100%;height:100%}.reg-divider{background:#4a4a4a;border:none;height:2px;margin:24px 0}.reg-submit-row{justify-content:flex-end;margin-top:22px;display:flex}.reg-submit{color:#fff;transition:background-color .18s var(--ease);background:#00a8e8;border:1px solid #00a8e8;border-radius:0;padding:11px 32px;font-size:13.5px;font-weight:700}.reg-submit:hover{background:#009688;border-color:#009688}@media (width<=760px){.reg-top-grid{flex-direction:column}.reg-photo{align-self:flex-start}.reg-row{flex-direction:column}.reg-field--narrow,.reg-field--suffix{flex:1}}@media (width<=1100px){.ad-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=860px){.ad-sidebar{width:76px}.ad-sidebar .ad-nav-item__label{display:none}}@media (width<=600px){.ad-menu-toggle{display:grid}.ad-sidebar{display:none}.ad-header{padding:12px 16px}.ad-main{padding:18px 16px}}@media (width<=480px){.ad-stats{grid-template-columns:1fr}.ad-overview__head{flex-wrap:wrap}}.ss-page{flex-direction:column;gap:22px;display:flex;position:relative}.ss-page__head h1{color:#1e1b4b;font-size:22px;font-weight:800}.ss-page__head p{max-width:720px;color:var(--muted);margin-top:4px;font-size:13.5px;line-height:1.55}.ss-toast{z-index:200;color:#fff;border-radius:var(--r-md);min-width:280px;box-shadow:var(--shadow-lg);animation:rise-in .2s var(--ease) both;background:#4caf50;align-items:center;gap:12px;padding:12px 18px;display:flex;position:fixed;top:22px;left:50%;transform:translate(-50%)}.ss-toast__icon{color:#4caf50;background:#fff;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:14px;font-weight:800;display:grid}.ss-toast strong{font-size:14.5px}.ss-toast p{opacity:.95;font-size:13px}.ss-layout{grid-template-columns:180px minmax(0,1fr);align-items:start;gap:32px;display:grid}.ss-nav{border-left:2px solid #d5dcea;flex-direction:column;gap:2px;padding-left:2px;display:flex;position:sticky;top:12px}.ss-nav__item{color:var(--muted);text-align:left;transition:color .15s var(--ease), border-color .15s var(--ease);border-left:2px solid #0000;margin-left:-4px;padding:8px 12px;font-size:13.5px;font-weight:600}.ss-nav__item:hover{color:var(--ink)}.ss-nav__item.is-active{color:#1e1b4b;border-left-color:#318ce7}.ss-content{flex-direction:column;gap:36px;min-width:0;padding-bottom:72px;display:flex}.ss-section{scroll-margin-top:16px}.ss-section__head{margin-bottom:12px}.ss-section__head h2{color:#1e1b4b;font-size:17px;font-weight:800}.ss-section__head p{color:var(--muted);margin-top:3px;font-size:13px;line-height:1.5}.ss-list{background:var(--card);border-radius:var(--r-md);border:1px solid #dde3ee;padding:0 20px}.ss-row{transition:opacity .18s var(--ease);border-bottom:1px solid #eef1f6;justify-content:space-between;align-items:center;gap:24px;padding:16px 0;display:flex}.ss-row:last-child{border-bottom:none}.ss-row.is-locked{opacity:.45}.ss-row__text{min-width:0;max-width:540px}.ss-row__text strong{color:var(--ink);font-size:13.5px}.ss-row__text p{color:var(--muted);margin-top:2px;font-size:12.5px;line-height:1.5}.ss-row__control{flex:none;align-items:center;gap:12px;display:flex}.ss-input{min-width:170px;color:var(--ink);border:1.5px solid var(--line);border-radius:var(--r-sm);background:#f6f7fb;padding:8px 12px;font-size:13.5px;font-weight:600}.ss-input:focus{border-color:#318ce7;outline:none}.ss-input--time{font-variant-numeric:tabular-nums;min-width:140px}.ss-time-pair{color:var(--muted,#6b7280);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.ss-time-pair .ss-input--time{min-width:128px}.ss-days{flex-wrap:wrap;gap:6px;display:flex}.ss-day{min-width:46px;color:var(--muted);border:1.5px solid var(--line);border-radius:var(--r-pill);transition:background-color .15s var(--ease), color .15s var(--ease), border-color .15s var(--ease);background:#f1f3f8;padding:6px 10px;font-size:12.5px;font-weight:700}.ss-day:hover{border-color:#318ce7}.ss-day.is-on{color:#fff;background:#318ce7;border-color:#318ce7}.ss-counter{border:1.5px solid var(--line);border-radius:var(--r-sm);align-items:center;display:inline-flex;overflow:hidden}.ss-counter button{width:34px;height:34px;color:var(--ink-soft);transition:background-color .15s var(--ease), color .15s var(--ease);background:#f6f7fb;font-size:17px;font-weight:700}.ss-counter button:hover:not(:disabled){color:#fff;background:#318ce7}.ss-counter button:disabled{opacity:.4;cursor:not-allowed}.ss-counter span{min-width:70px;color:var(--ink);text-align:center;font-variant-numeric:tabular-nums;font-size:13.5px;font-weight:700}.ss-status{text-align:center;border-radius:var(--r-pill);min-width:34px;padding:2px 8px;font-size:11px;font-weight:800}.ss-status--on{color:#166534;background:#dcfce7}.ss-status--off{color:#6b7280;background:#eef0f4}.ss-switch{cursor:pointer;display:inline-block;position:relative}.ss-switch input{opacity:0;width:0;height:0;position:absolute}.ss-switch__track{border-radius:var(--r-pill);width:44px;height:24px;transition:background-color .2s var(--ease);background:#cfd4dd;display:block}.ss-switch__knob{width:18px;height:18px;transition:transform .2s var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.ss-switch input:checked+.ss-switch__track{background:#4caf50}.ss-switch input:checked+.ss-switch__track .ss-switch__knob{transform:translate(20px)}.ss-switch input:focus-visible+.ss-switch__track{box-shadow:0 0 0 3px #318ce759}.ss-switch input:disabled+.ss-switch__track{cursor:not-allowed}.ss-timeline{margin-top:18px}.ss-timeline__title{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:12px;font-size:11px;font-weight:800;display:block}.ss-timeline__track{gap:2px;display:flex}.ss-timeline__segment{flex-direction:column;flex-basis:0;gap:6px;min-width:22%;display:flex}.ss-timeline__bar{height:14px;display:block}.ss-timeline__segment:first-child .ss-timeline__bar{border-radius:7px 0 0 7px}.ss-timeline__segment:last-child .ss-timeline__bar{border-radius:0 7px 7px 0}.ss-timeline__segment--present .ss-timeline__bar{background:#4caf50}.ss-timeline__segment--late .ss-timeline__bar{background:#ff9800}.ss-timeline__segment--absent .ss-timeline__bar{background:#e57373}.ss-timeline__marker{color:var(--ink);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700}.ss-timeline__label{color:var(--muted);font-size:11.5px}.ss-savebar{z-index:10;color:#fff;border-radius:var(--r-md);box-shadow:var(--shadow-lg);animation:rise-in .18s var(--ease) both;background:#1e293b;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px 12px 20px;display:flex;position:sticky;bottom:14px}.ss-savebar>span{font-size:13.5px;font-weight:600}.ss-savebar__actions{gap:10px;display:flex}.ss-btn{border-radius:var(--r-sm);transition:background-color .15s var(--ease), border-color .15s var(--ease), box-shadow .15s var(--ease);padding:9px 18px;font-size:13.5px;font-weight:700}.ss-btn:disabled{opacity:.45;cursor:not-allowed}.ss-btn--ghost{color:var(--ink-soft);background:var(--card);border:1.5px solid var(--line)}.ss-btn--ghost:hover:not(:disabled){border-color:#6b7280}.ss-savebar .ss-btn--ghost{color:#e2e8f0;background:0 0;border-color:#ffffff4d}.ss-savebar .ss-btn--ghost:hover{border-color:#fff}.ss-btn--primary{color:#1e293b;background:#fff;border:1.5px solid #fff}.ss-btn--primary:hover:not(:disabled){box-shadow:0 0 0 3px #ffffff4d}.ss-page__head--actions{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:14px 24px;display:flex}.ss-head-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ss-head-actions__state{color:var(--muted);font-size:12.5px;font-weight:600}.ss-head-actions__state.is-dirty{color:#b45309}.ss-btn--solid{color:#fff;background:#318ce7;border:1.5px solid #318ce7}.ss-btn--solid:hover:not(:disabled){box-shadow:0 0 0 3px #318ce747}.ss-lock-note{color:#92400e;border-radius:var(--r-sm);background:#fef3c7;align-items:center;gap:8px;margin-top:-10px;padding:9px 12px;font-size:12.5px;font-weight:600;display:flex}.ss-confirm{width:min(500px,100%)}.ss-confirm__changes{border-radius:var(--r-sm);background:#f3f6fb;flex-direction:column;max-height:260px;padding:4px 12px;font-size:13px;list-style:none;display:flex;overflow-y:auto}.ss-confirm__changes li{flex-wrap:wrap;justify-content:space-between;gap:4px 16px;padding:8px 0;display:flex}.ss-confirm__changes li+li{border-top:1px solid #e3e8f1}.ss-confirm__changes li>span:first-child{color:var(--ink);font-weight:600}.ss-confirm__diff{color:var(--muted);white-space:nowrap}.ss-confirm__diff strong{color:var(--ink)}.ss-confirm__ack{color:var(--ink);cursor:pointer;align-items:flex-start;gap:8px;font-size:13px;display:flex}.ss-confirm__ack input{accent-color:#318ce7;flex:none;width:16px;height:16px;margin-top:2px}.ss-confirm__danger{color:#fff;background:#dc2626;border:1.5px solid #dc2626}.ss-confirm__danger:hover:not(:disabled){box-shadow:0 0 0 3px #dc262640}@media (width<=900px){.ss-layout{grid-template-columns:minmax(0,1fr);gap:16px}.ss-nav{border-bottom:2px solid #d5dcea;border-left:none;flex-flow:wrap;padding-left:0;position:static}.ss-nav__item{border-bottom:2px solid #0000;border-left:none;margin:0 0 -2px}.ss-nav__item.is-active{border-bottom-color:#318ce7}}@media (width<=760px){.ss-row{flex-direction:column;align-items:flex-start;gap:10px}.ss-timeline__segment{min-width:30%}}.dbm-page{flex-direction:column;gap:20px;display:flex}.dbm-page__title{color:#1e1b4b;font-size:22px;font-weight:800}.dbm-page code{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px}.dbm-strip{background:var(--card);border-radius:var(--r-sm);border:1px solid #dde3ee;border-left:4px solid #9aa1b1;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px 28px;padding:14px 20px;display:flex}.dbm-strip.is-connected{border-left-color:#22c55e}.dbm-strip__title{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.dbm-strip__title strong{color:#1e1b4b;font-size:14.5px}.dbm-strip__dot{background:#9aa1b1;border-radius:50%;flex:none;width:9px;height:9px}.dbm-strip.is-connected .dbm-strip__dot{background:#22c55e;box-shadow:0 0 0 4px #22c55e33}.dbm-cloud-badge{color:#c2410c;border-radius:var(--r-pill);border:1.5px solid #e57373;padding:1px 9px;font-size:11px;font-weight:700}.dbm-strip__meta{color:var(--muted);word-break:break-word;margin-top:4px;font-size:12px}.dbm-strip__stats{flex-wrap:wrap;display:flex}.dbm-strip__stats>div{border-left:1px solid #e3e8f1;padding:0 18px}.dbm-strip__stats>div:first-child{border-left:none;padding-left:0}.dbm-strip__stats dt{color:var(--muted);font-size:11.5px;font-weight:600}.dbm-strip__stats dd{color:var(--ink);font-variant-numeric:tabular-nums;font-size:18px;font-weight:800}.dbm-tabs{border-bottom:2px solid #d5dcea;gap:4px;display:flex}.dbm-tabs__tab{color:var(--muted);transition:color .15s var(--ease), border-color .15s var(--ease);border-bottom:2px solid #0000;margin-bottom:-2px;padding:10px 18px;font-size:14px;font-weight:700}.dbm-tabs__tab:hover{color:var(--ink)}.dbm-tabs__tab.is-active{color:#1e1b4b;border-bottom-color:#318ce7}.dbm-panel{flex-direction:column;gap:12px;display:flex}.dbm-panel__head h2{color:#1e1b4b;font-size:17px;font-weight:800}.dbm-panel__head p{color:var(--muted);margin-top:3px;font-size:13px;line-height:1.5}.dbm-panel__columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.dbm-subhead{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:4px 0 8px;font-size:11px;font-weight:800;display:block}.dbm-options{flex-direction:column;gap:8px;display:flex}.dbm-option{background:var(--card);border-radius:var(--r-sm);cursor:pointer;transition:border-color .15s var(--ease), background-color .15s var(--ease);border:1.5px solid #dde3ee;align-items:center;gap:12px;padding:11px 14px;display:flex}.dbm-option:hover{border-color:#9ec5f2}.dbm-option.is-checked{background:#eef5fe;border-color:#318ce7}.dbm-option input{accent-color:#318ce7;flex:none;width:16px;height:16px}.dbm-option__text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.dbm-option__text strong{color:var(--ink);word-break:break-word;font-size:13px}.dbm-option__text span{color:var(--muted);font-size:12px}.dbm-tag,.dbm-type{border-radius:var(--r-pill);flex:none;padding:2px 9px;font-size:11px;font-weight:700}.dbm-tag--core{color:#1d4ed8;background:#dbeafe}.dbm-tag--staff{color:#7c3aed;background:#ede9fe}.dbm-type--auto{color:#166534;background:#dcfce7}.dbm-type--manual{color:#92400e;background:#fef3c7}.dbm-type--oci{color:#1d4ed8;background:#dbeafe}.dbm-file,.dbm-path{color:#1e1b4b;background:#eef0f6;border-radius:5px;padding:1px 7px;display:inline-block}.dbm-file{margin-left:6px}.dbm-panel__footer{border-top:1px solid #dde3ee;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-top:14px;display:flex}.dbm-storage{color:var(--muted);word-break:break-all;font-size:12.5px}.dbm-action{color:#fff;border-radius:var(--r-sm);transition:background-color .15s var(--ease), box-shadow .15s var(--ease);background:#318ce7;border:1.5px solid #318ce7;align-items:center;gap:8px;padding:10px 18px;font-size:13.5px;font-weight:700;display:inline-flex}.dbm-action:hover:not(:disabled){box-shadow:0 0 0 3px #318ce747}.dbm-action:disabled{opacity:.45;cursor:not-allowed}.dbm-action-note{color:var(--muted);text-align:right;font-size:12px}.dbm-empty{color:var(--muted);text-align:center;border-radius:var(--r-sm);border:1.5px dashed #d5dcea;padding:18px 16px;font-size:13px}.dbm-danger{border-radius:var(--r-sm);background:#fff7f7;border:1.5px solid #f3b4b4;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-top:10px;padding:16px 18px;display:flex}.dbm-danger strong{color:#b91c1c;font-size:14px}.dbm-danger p{color:#7f1d1d;max-width:520px;margin-top:3px;font-size:12.5px;line-height:1.5}.dbm-danger__btn{color:#fff;border-radius:var(--r-sm);transition:box-shadow .15s var(--ease);background:#dc2626;border:1.5px solid #dc2626;padding:10px 18px;font-size:13.5px;font-weight:700}.dbm-danger__btn:hover:not(:disabled){box-shadow:0 0 0 3px #dc262640}.dbm-danger__btn:disabled{opacity:.45;cursor:not-allowed}.dbm-confirm-backdrop{z-index:150;animation:fade-in .15s var(--ease) both;background:#0f172a80;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.dbm-confirm{background:var(--card);border-radius:var(--r-md);width:min(420px,100%);box-shadow:var(--shadow-lg);animation:rise-in .18s var(--ease) both;border-top:4px solid #dc2626;flex-direction:column;gap:12px;padding:22px;display:flex}.dbm-confirm h2{color:#b91c1c;font-size:17px}.dbm-confirm p{color:var(--ink-soft);font-size:13px;line-height:1.55}.dbm-confirm__input{color:var(--ink);border:1.5px solid var(--line);border-radius:var(--r-sm);background:#f6f7fb;padding:9px 12px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:13px}.dbm-confirm__input:focus{border-color:#dc2626;outline:none}.dbm-confirm__actions{justify-content:flex-end;gap:10px;display:flex}.dbm-log-section{flex-direction:column;gap:12px;padding-top:8px;display:flex}.dbm-log{border-collapse:collapse;width:100%;font-size:13px}.dbm-log th,.dbm-log td{text-align:left;border-bottom:1px solid #dde3ee;padding:10px 12px}.dbm-log th{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);border-bottom-width:2px;font-size:11px;font-weight:700}.dbm-log__when{white-space:nowrap;font-variant-numeric:tabular-nums;align-items:center;gap:8px;display:inline-flex}.dbm-log__dot{background:#318ce7;border-radius:50%;width:8px;height:8px}.dbm-log__empty{color:var(--muted);text-align:center!important;padding:24px 12px!important}@media (width<=900px){.dbm-panel__columns{grid-template-columns:minmax(0,1fr)}.dbm-strip__stats>div{padding:0 12px}}.ma-page{flex-direction:column;gap:16px;display:flex}.ma-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.ma-head h1{color:#1e1b4b;font-size:22px;font-weight:800}.ma-head p{max-width:640px;color:var(--muted);margin-top:4px;font-size:13.5px;line-height:1.55}.ma-sample{letter-spacing:.06em;text-transform:uppercase;color:#92400e;border-radius:var(--r-pill);background:#fef3c7;margin-left:6px;padding:1px 8px;font-size:10.5px;font-weight:800;display:inline-block}.ma-filter{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);flex-direction:column;gap:5px;font-size:11.5px;font-weight:700;display:flex}.ma-filter select,.ma-field select{letter-spacing:0;text-transform:none;min-width:200px;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:8px 10px;font-size:13.5px;font-weight:600}.ma-filter select:focus,.ma-field select:focus{border-color:#318ce7;outline:none}.ma-summary{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:10px 24px;font-size:13px;display:flex}.ma-legend{color:var(--muted);flex-wrap:wrap;gap:14px;margin-left:auto;font-size:12px;display:flex}.ma-legend li{align-items:center;gap:6px;display:inline-flex}.ma-swatch{border-radius:4px;width:14px;height:14px}.ma-swatch--assigned{background:#dbeafe;border:1.5px solid #318ce7}.ma-swatch--open{background:#fff;border:1.5px dashed #9aa6bb}.ma-swatch--off{background:repeating-linear-gradient(45deg,#e8ebf1,#e8ebf1 3px,#f4f6f9 3px 6px)}.ma-table-wrap{background:var(--card);border-radius:var(--r-md);border:1px solid #dde3ee;overflow-x:auto}.ma-table{border-collapse:collapse;width:100%;min-width:860px;font-size:12.5px}.ma-table th,.ma-table td{border:1px solid #e3e8f1}.ma-table th{color:#fff;text-align:center;background:#1e1b4b;padding:10px 8px;font-size:12px;font-weight:700}.ma-session{color:#b8c0e8;margin-top:2px;font-size:10.5px;font-weight:600;display:block}.ma-table__time{z-index:1;white-space:nowrap;color:#26305c;background:#f4f6fc;min-width:140px;padding:8px 12px;font-size:12px;font-weight:700;position:sticky;left:0;text-align:left!important}.ma-table th.ma-table__time{z-index:2;color:#fff;background:#1e1b4b}.ma-cell{height:60px;padding:4px}.ma-cell--off{background:repeating-linear-gradient(45deg,#eef1f6,#eef1f6 4px,#f7f8fb 4px 8px)}.ma-break{letter-spacing:.08em;color:#92400e;text-align:center;text-transform:uppercase;background:#fef3c7;font-size:12px;font-weight:700}.ma-slot{text-align:center;width:100%;height:100%;min-height:50px;transition:background-color .15s var(--ease), border-color .15s var(--ease), opacity .15s var(--ease), transform .15s var(--ease);border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 6px;display:flex}.ma-slot--open{color:#6b7a93;background:#fff;border:1.5px dashed #c3ccda}.ma-slot--open:hover{color:#318ce7;background:#f1f7fe;border-color:#318ce7}.ma-slot__plus{font-size:12px;font-weight:700}.ma-slot--assigned{color:#1e3a8a;background:#eaf3fe;border:1.5px solid #9ec5f2}.ma-slot--assigned:hover{border-color:#318ce7;transform:translateY(-1px)}.ma-slot--assigned strong{font-size:12.5px}.ma-slot--assigned span{color:#475a82;font-size:11px}.ma-slot.is-dimmed{opacity:.35}.ma-slot.is-highlighted{color:#fff;background:#318ce7;border-color:#318ce7}.ma-slot.is-highlighted span{color:#e3eefc}.ma-dialog-backdrop{z-index:150;animation:fade-in .15s var(--ease) both;background:#0f172a80;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.ma-dialog{background:var(--card);border-radius:var(--r-md);width:min(440px,100%);box-shadow:var(--shadow-lg);animation:rise-in .18s var(--ease) both;flex-direction:column;gap:14px;padding:22px;display:flex}.ma-dialog h2{color:#1e1b4b;font-size:18px}.ma-dialog__slot{color:#318ce7;margin-top:-8px;font-size:13px;font-weight:600}.ma-field{color:var(--ink-soft);flex-direction:column;gap:6px;font-size:12.5px;font-weight:700;display:flex}.ma-field select{width:100%}.ma-warning{color:#92400e;border-radius:var(--r-sm);background:#fef3c7;padding:9px 12px;font-size:12.5px;line-height:1.5}.ma-note{color:var(--muted);font-size:12px}.ma-confirm{border-radius:var(--r-sm);border:1px solid #e3e8f1;flex-direction:column;display:flex}.ma-confirm>div{border-bottom:1px solid #eef1f6;justify-content:space-between;gap:16px;padding:10px 14px;font-size:13px;display:flex}.ma-confirm>div:last-child{border-bottom:none}.ma-confirm dt{color:var(--muted)}.ma-confirm dd{color:var(--ink);text-align:right;font-weight:700}.ma-dialog__actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.ma-btn{border-radius:var(--r-sm);transition:box-shadow .15s var(--ease), border-color .15s var(--ease);padding:9px 16px;font-size:13.5px;font-weight:700}.ma-btn:disabled{opacity:.45;cursor:not-allowed}.ma-btn--ghost{color:var(--ink-soft);background:var(--card);border:1.5px solid var(--line)}.ma-btn--ghost:hover{border-color:#6b7280}.ma-btn--primary{color:#fff;background:#318ce7;border:1.5px solid #318ce7}.ma-btn--primary:hover:not(:disabled){box-shadow:0 0 0 3px #318ce747}.ma-btn--danger-link{color:#dc2626;margin-right:auto;padding-left:0}.ma-btn--danger-link:hover{text-decoration:underline}.ma-toast{z-index:200;color:#fff;border-radius:var(--r-md);box-shadow:var(--shadow-lg);animation:rise-in .2s var(--ease) both;background:#4caf50;align-items:center;gap:10px;padding:12px 20px;font-size:14px;font-weight:700;display:flex;position:fixed;top:22px;left:50%;transform:translate(-50%)}.er-tabs{border-bottom:2px solid #dde3ee;gap:4px;display:flex}.er-tab{color:var(--muted);transition:color .15s var(--ease), border-color .15s var(--ease);border-bottom:2px solid #0000;align-items:center;gap:8px;margin-bottom:-2px;padding:10px 16px;font-size:13.5px;font-weight:700;display:inline-flex}.er-tab:hover{color:var(--ink)}.er-tab.is-active{color:#1e1b4b;border-bottom-color:#318ce7}.er-tab__count{color:#1d4ed8;text-align:center;border-radius:var(--r-pill);background:#dbeafe;min-width:20px;padding:1px 7px;font-size:11px}.er-card{background:var(--card);border-radius:var(--r-md);border:1px solid #dde3ee;flex-direction:column;gap:16px;padding:20px 22px;display:flex}.er-card__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px;display:flex}.er-card__head h2{color:#1e1b4b;font-size:17px;font-weight:800}.er-card__sub{color:var(--muted);margin-top:3px;font-size:12.5px}.er-controls{flex-wrap:wrap;gap:12px;display:flex}.er-controls input[type=date]{font:inherit;letter-spacing:0;text-transform:none;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:7px 10px;font-size:13.5px;font-weight:600}.er-controls input[type=date]:focus{border-color:#318ce7;outline:none}.er-search{width:min(420px,100%);color:var(--muted);border:1.5px solid var(--line);border-radius:var(--r-sm);align-items:center;gap:8px;padding:4px 4px 4px 12px;display:flex}.er-search:focus-within{border-color:#318ce7}.er-search input{font-variant-numeric:tabular-nums;letter-spacing:.04em;min-width:0;color:var(--ink);background:0 0;border:none;outline:none;flex:1;padding:6px 0;font-size:14px}.er-empty{color:var(--muted);text-align:center;border-radius:var(--r-sm);border:1.5px dashed #d5dcea;flex-direction:column;gap:4px;padding:28px 16px;font-size:13.5px;display:flex}.er-empty span{font-variant-numeric:tabular-nums;font-size:12px}.er-empty--warn{color:#92400e;background:#fffbeb;border-color:#fcd34d}.er-form h3{letter-spacing:.02em;color:#1e1b4b;margin-bottom:12px;font-size:14px;font-weight:800}.er-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 28px;display:grid}.er-field{flex-direction:column;gap:5px;display:flex}.er-field label{color:var(--ink-soft);font-size:12px;font-weight:700}.er-field__row{align-items:center;gap:8px;display:flex}.er-field__row input{min-width:0;color:var(--ink);border-radius:var(--r-sm);background:#f4f6fa;border:1.5px solid #0000;flex:1;padding:9px 12px;font-size:13.5px}.er-field__row input:read-only{cursor:default}.er-field__row input:read-only:focus{outline:none}.er-field__row input.is-editing{background:var(--card);border-color:#318ce7;outline:none}.er-field__row input[aria-invalid=true]{border-color:#dc2626}.er-field__error{color:#dc2626;font-size:11.5px;font-weight:600}.er-pencil{color:#475a82;border:1.5px solid var(--line);border-radius:var(--r-sm);width:34px;height:34px;transition:color .15s var(--ease), border-color .15s var(--ease), background-color .15s var(--ease);flex:none;place-items:center;display:grid}button.er-pencil:hover,.er-pencil.is-active{color:#fff;background:#318ce7;border-color:#318ce7}.er-pencil--locked{color:#9aa6bb;border-style:dashed}.er-locked-note{color:var(--muted);align-items:center;gap:6px;margin-top:12px;font-size:12px;display:flex}.er-divider{border:none;border-top:1px solid #dde3ee;margin:20px 0}.er-form__foot{border-top:1px solid #eef1f6;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;margin-top:22px;padding-top:16px;display:flex}.er-last-edit{color:var(--muted);margin-right:auto;font-size:12.5px}.er-table{border-collapse:collapse;width:100%;min-width:760px;font-size:13px}.er-table caption{color:#1e1b4b;text-align:left;padding:12px 14px;font-size:13px;font-weight:700}.er-table th,.er-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #e8ecf3;padding:10px 14px}.er-table th{letter-spacing:.05em;text-transform:uppercase;color:#fff;background:#1e1b4b;font-size:11px;font-weight:700}.er-table tbody tr:hover td{background:#f7f9fd}.er-table__name{white-space:nowrap;font-weight:700}.er-table__mono{font-variant-numeric:tabular-nums;color:var(--ink-soft)}.er-table__muted{color:var(--muted);font-size:12.5px}.er-table__note{display:block}.er-table__action{white-space:nowrap;align-items:center;gap:6px;padding:6px 12px;font-size:12.5px;display:inline-flex}.er-chip{white-space:nowrap;color:var(--ink);background:color-mix(in srgb, var(--chip) 14%, #fff);border:1.5px solid color-mix(in srgb, var(--chip) 55%, #fff);border-radius:var(--r-pill);align-items:center;gap:6px;padding:2px 9px;font-size:12px;font-weight:700;display:inline-flex}.er-chip__dot{background:var(--chip);border-radius:50%;width:8px;height:8px}.er-change{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.er-role{letter-spacing:.04em;text-transform:uppercase;border-radius:var(--r-pill);margin-left:8px;padding:1px 8px;font-size:10.5px;font-weight:800;display:inline-block}.er-role--teacher{color:#166534;background:#dcfce7}.er-role--admin{color:#7c3aed;background:#ede9fe}.er-dialog__rfid{color:var(--ink-soft);align-items:center;gap:8px;font-size:13px;display:flex}.er-textarea{font:inherit;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);resize:vertical;padding:8px 10px;font-size:13px;font-weight:500}.er-textarea:focus{border-color:#318ce7;outline:none}@media (width<=760px){.er-grid{grid-template-columns:minmax(0,1fr)}.er-card{padding:16px}.er-tab{padding:10px;font-size:12.5px}}.rp-filters__title{color:#1e1b4b;align-items:center;gap:8px;font-size:16px;font-weight:800;display:flex}.rp-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 18px;display:grid}.rp-field{flex-direction:column;gap:6px;min-width:0;display:flex}.rp-field--wide{grid-column:span 2}.rp-field>span{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:11.5px;font-weight:700}.rp-field select,.rp-field input,.rp-tools input,.rp-tools select{width:100%;font:inherit;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:9px 10px;font-size:13.5px;font-weight:600}.rp-field select:focus,.rp-field input:focus,.rp-tools input:focus,.rp-tools select:focus{border-color:#318ce7;outline:none}.rp-field select:disabled{color:var(--muted);cursor:not-allowed;background:#f4f6fa}.rp-field small{color:var(--muted);font-size:11.5px}.rp-filters__foot{border-top:1px solid #eef1f6;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;padding-top:14px;display:flex}.rp-filters__hint,.rp-filters__error{color:var(--muted);margin-right:auto;font-size:12.5px}.rp-filters__error{color:#b91c1c;font-weight:600}.rp-results{animation:rp-expand .35s var(--ease) both;flex-direction:column;gap:16px;scroll-margin-top:16px;display:flex}@keyframes rp-expand{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.rp-stale{color:#92400e;border-radius:var(--r-sm);background:#fef3c7;border:1px solid #fcd34d;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.rp-stale button{color:#1d4ed8;font-weight:800;text-decoration:underline}.rp-note{color:var(--muted);font-size:12.5px}.rp-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.rp-card{background:var(--card);border:1px solid #dde3ee;border-top:4px solid var(--accent);border-radius:var(--r-md);flex-direction:column;gap:4px;padding:16px 18px;display:flex}.rp-card__label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:700}.rp-card__value{font-variant-numeric:tabular-nums;font-size:32px;font-weight:800;line-height:1.1}.rp-card__pct{color:var(--ink-soft);font-size:13px}.rp-card small{color:var(--muted);font-size:12px}.rp-table-card__head{flex-wrap:wrap;align-items:center;gap:10px 14px;display:flex}.rp-table-card__head h2,.rp-subhead{color:#1e1b4b;font-size:16px;font-weight:800}.rp-subhead+*{margin-top:-6px}.rp-count{font-weight:700}.rp-tools{gap:8px;margin-left:auto;display:flex}.rp-tools input{width:200px}.rp-tools select{width:auto}.rp-table{min-width:900px}.rp-num{font-variant-numeric:tabular-nums;text-align:right!important}.rp-num--present{color:#2e7d32;font-weight:700}.rp-num--absent{color:#c62828;font-weight:700}.rp-num--late{color:#c2410c;font-weight:700}.rp-nowrap{white-space:nowrap}.rp-muted{color:var(--muted)}.rp-empty-row{color:var(--muted);text-align:center!important;padding:28px 14px!important}.rp-rate{align-items:center;gap:8px;display:inline-flex}.rp-rate__track{border-radius:var(--r-pill);background:#e8ecf3;width:80px;height:8px;overflow:hidden}.rp-rate__fill{border-radius:var(--r-pill);background:#318ce7;height:100%;display:block}.rp-rate__label{font-variant-numeric:tabular-nums;text-align:right;min-width:46px;font-size:12.5px;font-weight:700}.rp-standing{white-space:nowrap;border-radius:var(--r-pill);padding:2px 10px;font-size:11.5px;font-weight:700;display:inline-block}.rp-standing--good{color:#166534;background:#dcfce7}.rp-standing--attention{color:#854d0e;background:#fef08a}.rp-standing--risk{color:#991b1b;background:#fee2e2}.rp-rules{color:var(--muted);font-size:12px;line-height:1.6}.rp-pager{color:var(--muted);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;font-size:12.5px;display:flex}.rp-pager span{margin-right:auto}.rp-sf2{border-collapse:collapse;width:100%;font-size:12px}.rp-sf2 th,.rp-sf2 td{text-align:center;border:1px solid #d5dcea;min-width:28px;padding:6px 4px}.rp-sf2 thead th{color:#fff;background:#1e1b4b;font-weight:700}.rp-sf2 .rp-sf2__weekday{color:#cbd5f5;font-size:10.5px;font-weight:600}.rp-sf2 .rp-sf2__name{text-align:left;white-space:nowrap;background:var(--card);min-width:190px;padding:6px 10px;position:sticky;left:0}.rp-sf2 thead .rp-sf2__name{background:#1e1b4b}.rp-sf2 tfoot td{background:#f4f6fa;font-weight:700}.rp-sf2__mark{font-weight:800}.rp-sf2__mark--absent{color:#b91c1c;background:#fee2e2}.rp-sf2__mark--late{color:#854d0e;background:#fef9c3}.rp-sf2__mark--leftEarly{color:#9a3412;background:#ffedd5}.rp-sf2__mark--excused{color:#4338ca;background:#e0e7ff}.rp-sf2-summary{flex-wrap:wrap;gap:10px 28px;display:flex}.rp-sf2-summary dt{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:11.5px;font-weight:700}.rp-sf2-summary dd{color:var(--ink);font-size:18px;font-weight:800}.rp-student__info{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px 20px;display:grid}.rp-student__info div,.rp-student__rate{flex-direction:column;gap:2px;display:flex}.rp-student__info span,.rp-student__rate>span{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:11.5px;font-weight:700}.rp-student__info strong{color:var(--ink);font-size:14px}.rp-student__stats{border-top:1px solid #eef1f6;flex-wrap:wrap;align-items:stretch;gap:10px;padding-top:14px;display:flex}.rp-student__rate{border-right:1px solid #eef1f6;align-items:flex-start;margin-right:6px;padding-right:18px}.rp-student__rate strong{color:#1e1b4b;font-size:28px;font-weight:800}.rp-student__stat{border-radius:var(--r-sm);border:1px solid #e3e8f1;align-items:center;gap:8px;padding:10px 14px;font-size:13px;display:flex}.rp-student__stat strong{font-variant-numeric:tabular-nums;font-size:18px}.rp-legend{color:var(--ink-soft);flex-wrap:wrap;gap:8px 14px;margin-left:auto;font-size:12px;display:flex}.rp-legend li{align-items:center;gap:6px;display:inline-flex}.rp-months{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px 22px;display:grid}.rp-month h3{color:#1e1b4b;margin-bottom:6px;font-size:13px;font-weight:800}.rp-month__grid{gap:3px;display:grid}.rp-month__weekday{color:var(--muted);text-align:center;font-size:10.5px;font-weight:700}.rp-day{color:#1f2937;border-radius:5px;place-items:center;height:32px;font-size:11px;font-weight:800;display:grid;position:relative}.rp-day b{color:#1f2937a6;font-size:8.5px;font-weight:600;position:absolute;top:2px;left:4px}.rp-day--swatch{width:22px;height:22px}.rp-day--present{background:#dcfce7}.rp-day--late{background:#fef08a}.rp-day--leftEarly{background:#fed7aa}.rp-day--absent{color:#7f1d1d;background:#fecaca}.rp-day--excused{color:#312e81;background:#e0e7ff}.rp-day--blank{background:0 0}.rp-print-head,.rp-signatures{display:none}.rp-print-head{border-bottom:2px solid #1e1b4b;align-items:center;gap:14px;padding-bottom:12px}.rp-print-head div{color:#374151;flex-direction:column;gap:1px;font-size:12px;display:flex}.rp-print-head strong{color:#1e1b4b;font-size:16px}.rp-signatures{justify-content:space-around;gap:40px;margin-top:36px}.rp-signatures span{text-align:center;border-top:1px solid #111827;min-width:180px;padding-top:6px;font-size:12px}.rp-footer{background:var(--card);border-radius:var(--r-md);border:1px solid #dde3ee;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:16px 20px;display:flex}.rp-footer p{color:var(--ink-soft);font-size:13px}.rp-footer small{color:var(--muted);font-size:12px}.rp-footer__actions{flex-wrap:wrap;gap:10px;display:flex}.rp-export{color:#1e3a8a;border-color:#9ec5f2;align-items:center;gap:8px;display:inline-flex}.rp-export:hover:not(:disabled){border-color:#318ce7;box-shadow:0 0 0 3px #318ce72e}@media (width<=1000px){.rp-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=700px){.rp-grid,.rp-cards{grid-template-columns:minmax(0,1fr)}.rp-field--wide{grid-column:auto}.rp-tools{width:100%;margin-left:0}.rp-tools input{flex:1;width:auto}}@media print{.rp-head,.rp-filters,.rp-stale,.rp-tools,.rp-pager,.rp-footer,.rp-note,.ma-toast{display:none!important}.admin-app:has(.rp-page) .ad-topinfo{display:none!important}.admin-app:has(.rp-page) .ad-header{display:none!important}.admin-app:has(.rp-page) .ad-sidebar{display:none!important}.admin-app:has(.rp-page){background:#fff!important}.admin-app:has(.rp-page) .ad-main{background:#fff!important}.admin-app:has(.rp-page) .ad-main{padding:0;overflow:visible}.rp-results{animation:none}.rp-print-head,.rp-signatures{display:flex!important}.rp-page .er-card,.rp-page .ma-table-wrap,.rp-card{box-shadow:none;border-color:#d1d5db;overflow:visible}.rp-table,.rp-sf2{min-width:0}.rp-page tr,.rp-month{break-inside:avoid}.rp-page *{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.sm-strip{background:var(--card);border-radius:var(--r-md);border:1px solid #dde3ee;border-left:4px solid #9aa6bb;flex-wrap:wrap;align-items:center;gap:12px 0;padding:12px 18px;display:flex}.sm-strip>div{border-right:1px solid #e3e8f1;flex-direction:column;gap:2px;padding:0 20px;display:flex}.sm-strip>div:first-child{padding-left:0}.sm-strip span{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700}.sm-strip strong{color:var(--ink);font-size:14px}.sm-strip__off{color:#b45309!important}.sm-strip button{margin-left:auto}.sm-banner{color:#92400e;border-radius:var(--r-sm);background:#fef3c7;border:1px solid #fcd34d;padding:10px 14px;font-size:13px;font-weight:600}.sm-office{background:var(--card);border-radius:var(--r-md);border:1px solid #dde3ee;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:14px 18px;display:flex}.sm-office label{flex-direction:column;flex:280px;gap:2px;display:flex}.sm-office strong{color:#1e1b4b;font-size:14px}.sm-office label span{color:var(--muted);font-size:12.5px}.sm-office input{width:260px;max-width:100%;font:inherit;color:var(--ink);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:9px 12px;font-size:14px}.sm-office input:focus{border-color:#318ce7;outline:none}.sm-list{flex-direction:column;gap:18px;display:flex}.sm-card{background:var(--card);border-radius:var(--r-md);animation:rise-in .2s var(--ease) both;border:1px solid #dde3ee;flex-direction:column;gap:14px;padding:20px 22px;display:flex}.sm-card__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.sm-card__head h3{color:#111827;font-size:17px;font-weight:800}.sm-card__head h3 span{color:var(--muted);margin-left:4px;font-size:13px;font-weight:600}.sm-card__trigger{color:var(--ink-soft);margin-top:3px;font-size:12.5px}.sm-card__locked{color:var(--muted);align-items:center;gap:6px;margin-top:-6px;font-size:12px;display:flex}.sm-card.is-off .sm-panel,.sm-card.is-off .sm-phone{opacity:.55}.sm-switch{cursor:pointer;flex:none;align-items:center;gap:8px;display:inline-flex;position:relative}.sm-switch input{opacity:0;pointer-events:none;position:absolute}.sm-switch__track{border-radius:var(--r-pill);width:42px;height:24px;transition:background-color .18s var(--ease);background:#cbd2de;position:relative}.sm-switch__knob{width:18px;height:18px;transition:transform .18s var(--ease);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0f172a4d}.sm-switch input:checked+.sm-switch__track{background:#22c55e}.sm-switch input:checked+.sm-switch__track .sm-switch__knob{transform:translate(18px)}.sm-switch input:focus-visible+.sm-switch__track{box-shadow:0 0 0 3px #318ce759}.sm-switch input:disabled~*{cursor:not-allowed}.sm-switch input:disabled+.sm-switch__track{opacity:.6}.sm-switch__label{min-width:24px;color:var(--ink-soft);font-size:13px;font-weight:700}.sm-card__body{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:18px;display:grid}.sm-panel{border-radius:var(--r-md);background:#8a94a6;flex-direction:column;gap:10px;padding:14px;display:flex}.sm-box{white-space:pre-wrap;color:#f3f4f6;border-radius:var(--r-sm);background:#1f2937;border:2px solid #22c55e;width:100%;min-height:150px;margin:0;padding:14px 16px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:13.5px;line-height:1.6}.sm-box--editing{resize:vertical;border-color:#4ade80;outline:none;box-shadow:0 0 0 3px #4ade8059}.sm-token{color:#bbf7d0;background:#22c55e38;border-radius:4px;padding:0 3px}.sm-tokens{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sm-tokens span{color:#fff;font-size:12px;font-weight:700}.sm-tokens button{color:#14532d;border-radius:var(--r-pill);transition:background-color .15s var(--ease);background:#dcfce7;border:1px solid #86efac;padding:4px 9px;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:11.5px}.sm-tokens button:hover{background:#bbf7d0}.sm-phone{background:#f1f4f9;border:1px solid #dde3ee;border-radius:18px;flex-direction:column;gap:8px;padding:14px;display:flex}.sm-phone__sender{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-align:center;font-size:11px;font-weight:700}.sm-phone__bubble{white-space:pre-wrap;overflow-wrap:anywhere;color:#111827;background:#fff;border:1px solid #e3e8f1;border-radius:14px 14px 14px 4px;align-self:flex-start;max-width:100%;padding:10px 12px;font-size:12.5px;line-height:1.5}.sm-phone__meta{font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:12px}.sm-phone small{color:var(--muted);font-size:11px}.sm-warn{color:#92400e;background:#fef3c7;border-radius:6px;padding:6px 9px;font-size:11.5px;line-height:1.45}.sm-error{color:#b91c1c;margin-top:-4px;font-size:12.5px;font-weight:600}.sm-card__foot{border-top:1px solid #eef1f6;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;padding-top:12px;display:flex}.sm-card__edited{color:var(--muted);margin-right:auto;font-size:12.5px}.sm-link{color:#1d4ed8;font-size:13px;font-weight:700}.sm-link:hover:not(:disabled){text-decoration:underline}.sm-link:disabled{color:var(--muted);cursor:not-allowed}.sm-btn{border-radius:var(--r-sm);transition:box-shadow .15s var(--ease), filter .15s var(--ease);padding:9px 18px;font-size:13.5px;font-weight:700}.sm-btn:disabled{opacity:.45;cursor:not-allowed}.sm-btn--edit{color:#2b1d00;background:#daa520;border:1.5px solid #daa520}.sm-btn--edit:hover{box-shadow:0 0 0 3px #daa5204d}.sm-btn--update{color:#fff;background:#1e88e5;border:1.5px solid #1e88e5}.sm-btn--update:hover:not(:disabled){box-shadow:0 0 0 3px #1e88e54d}@media (width<=900px){.sm-card__body{grid-template-columns:minmax(0,1fr)}.sm-strip>div{padding:0 14px}}@media (width<=600px){.sm-card{padding:16px}.sm-strip>div{border-right:none;padding:0 14px 0 0}.sm-strip button{margin-left:0}}.ma-advisers__table{min-width:720px}.ma-advisers__select{width:100%;min-width:220px;font:inherit;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:7px 10px;font-size:13.5px;font-weight:600}.ma-advisers__select:focus{border-color:#318ce7;outline:none}.ma-advisers__warn,.sr-warn{color:#b45309;font-size:12.5px;font-weight:600}.sr-progress{min-width:760px}.sr-progress tr.is-selected td{background:#eef5fe}.sr-pending{color:#1d4ed8}.sr-search{min-width:200px;font:inherit;letter-spacing:0;text-transform:none;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:8px 10px;font-size:13.5px;font-weight:600}.sr-search:focus{border-color:#318ce7;outline:none}.sr-bulk{flex-wrap:wrap;gap:10px;display:flex}.sr-bulk__export{align-items:center;gap:6px;margin-left:auto;display:inline-flex}.sr-status{white-space:nowrap;border-radius:var(--r-pill);padding:2px 9px;font-size:11.5px;font-weight:700;display:inline-block}.sr-status--draft{color:#475569;background:#e2e8f0}.sr-status--submitted{color:#1d4ed8;background:#dbeafe}.sr-status--verified{color:#166534;background:#dcfce7}.sr-status--printed{color:#5b21b6;background:#ede9fe}.sr-actions{white-space:nowrap}.sr-actions .er-table__action+.sr-link{margin-left:10px}.sr-link{color:#b91c1c;font-size:12.5px;font-weight:700}.sr-link:hover{text-decoration:underline}.dm-times{color:var(--muted);margin:-4px 0 12px;font-size:12.5px}.dm-held{color:#991b1b;border-radius:var(--r-sm);background:#fee2e2;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;margin-bottom:12px;padding:10px 14px;font-size:13px;line-height:1.5;display:flex}.dm-held p{flex:420px}.dm-empty{text-align:center;padding:18px 0}.dm-chip{border-radius:var(--r-sm);flex-direction:column;gap:1px;padding:3px 9px;font-size:12px;line-height:1.3;display:inline-flex}.dm-chip strong{white-space:nowrap;font-weight:800}.dm-chip small{opacity:.85;font-size:10.5px;font-weight:600}.dm-chip--gray{color:#4b5563;background:#e5e7eb}.dm-chip--amber{color:#92400e;background:#fef3c7}.dm-chip--blue{color:#1e40af;background:#dbeafe}.dm-chip--green{color:#166534;background:#dcfce7}.dm-actions{white-space:nowrap}.dm-actions .ma-btn+.ma-btn{margin-left:6px}.dm-sms{color:var(--ink);white-space:pre-wrap;border-radius:var(--r-sm);background:#f3f6fb;padding:10px 12px;font-size:13px;line-height:1.5}.sf2r-sheet{--th-accent:#318ce7;--th-bg:#f3f6fb;--th-card:#fff;--th-ink:#1f2937;--th-line:#dde3ee}.sf2r-month{font:inherit;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:7px 10px;font-size:13.5px;font-weight:600}.sf2r-month:focus{border-color:#318ce7;outline:none}.sf2r-changed{color:#991b1b;border-radius:var(--r-pill);background:#fee2e2;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:800;display:inline-block}.sf2r-panel{background:var(--th-bg);border-radius:var(--r-md);flex-direction:column;gap:10px;padding:14px 16px;display:flex}.sf2r-panel__row{flex-wrap:wrap;align-items:center;gap:10px 14px;display:flex}.sf2r-panel__who{color:var(--muted);font-size:12.5px}.sf2r-panel__actions{gap:10px;margin-left:auto;display:flex}.sf2r-input{width:100%;font:inherit;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:9px 11px;font-size:14px;font-weight:500}.sf2r-input:focus{border-color:#318ce7;outline:none}.sf2r-check{color:var(--ink);cursor:pointer;align-items:flex-start;gap:8px;font-size:13px;display:flex}.sf2r-check input{accent-color:#318ce7;flex:none;width:16px;height:16px;margin-top:2px}@media print{:is(.admin-app:has(.sf2r-page) .ad-topinfo,.admin-app:has(.sf2r-page) .ad-header,.admin-app:has(.sf2r-page) .ad-sidebar,.sf2r-page .ma-head){display:none!important}.admin-app:has(.sf2r-page){padding:0;overflow:visible;background:#fff!important}.admin-app:has(.sf2r-page) .ad-main{padding:0;overflow:visible;background:#fff!important}}.rfid-empty-card{text-align:center;place-items:center;padding:24px;display:grid}.rfid-empty-card p{color:#4b5563;max-width:460px;font-size:14px;line-height:1.55}.sec-form{background:#f8fafc;border:1px solid #e2e5ea;gap:10px;max-width:460px;margin:0 0 18px;padding:16px;display:grid}.sec-form h3{margin:0;font-size:15px}.sec-form .ma-field{color:#374151}.sec-form .ma-field input,.sec-form .ma-field select{box-sizing:border-box;width:100%;min-width:0;font:inherit;color:#111827;background:#fff;border:1.5px solid #9ca3af;border-radius:6px;padding:9px 11px;font-size:14px;font-weight:600}.sec-form .ma-field input:focus,.sec-form .ma-field select:focus{border-color:#318ce7;outline:none;box-shadow:0 0 0 3px #318ce72e}.sec-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.rfid-gate{background:#fff;border:1px solid #e2e5ea;margin-top:16px;padding:16px 20px}.rfid-gate header{flex-wrap:wrap;align-items:baseline;gap:6px 14px;display:flex}.rfid-gate h3{margin:0;font-size:15px}.rfid-gate__stats{color:#6b7280;font-size:13px}.rfid-gate p{color:#3f4b63;margin:8px 0 0;font-size:13px;line-height:1.55}.rfid-gate__warn{color:#b42318}.rfid-gate__actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.rfid-gate__actions a{text-decoration:none}.rfid-gate__confirm{color:#92400e;font-size:13px;font-weight:600}.rfid-gate__message{font-weight:600}.rfid-notice{color:#92400e;background:#fef3c7;justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.rfid-notice button{color:inherit;flex:none;font-weight:800}.rfid-info{flex:1;grid-template-columns:170px minmax(0,1fr);gap:9px 16px;min-width:0;font-size:13.5px;display:grid}.rfid-info div{display:contents}.rfid-info dt{color:#6b7280}.rfid-info dd{color:#1f2937;overflow-wrap:anywhere;font-weight:600}.rfid-info__mono{font-variant-numeric:tabular-nums;letter-spacing:.03em}.rfid-info__gap dt,.rfid-info__gap dd{border-top:1px dashed #e5e7eb;padding-top:12px}.rfid-photo__note{text-align:center;color:#6b7280;margin-top:6px;font-size:11.5px;display:block}.rfid-cardbox{border-radius:var(--r-md);background:#f5f6fb;border:1px solid #e1e4f0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;margin-bottom:14px;padding:14px 16px;display:flex}.rfid-cardbox__main{flex-wrap:wrap;align-items:center;gap:6px 12px;display:flex}.rfid-cardbox__label{letter-spacing:.08em;text-transform:uppercase;color:#6b7280;font-size:11px;font-weight:800}.rfid-cardbox__main strong{color:#1e1b4b;font-variant-numeric:tabular-nums;font-size:15px}.rfid-cardbox__meta{color:#6b7280;flex-basis:100%;font-size:12.5px}.rfid-history{color:#374151;margin-bottom:14px;font-size:13px}.rfid-history summary{color:#4c5aad;cursor:pointer;font-weight:700}.rfid-history ul{flex-direction:column;gap:4px;margin-top:8px;padding-left:18px;display:flex}.rfid-btn:disabled{opacity:.45;cursor:not-allowed}.rfid-preview__card{color:#1e1b4b;border-radius:var(--r-pill);background:#eef0fb;margin-right:auto;padding:6px 12px;font-size:12.5px;font-weight:700}.rfid-batch__problem{color:#b45309;font-size:12.5px;font-weight:700}.rfid-tap{width:min(480px,100%)}.rfid-tap__steps{color:#9ca3af;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;font-weight:600;list-style:none;display:flex}.rfid-tap__steps li{align-items:center;gap:6px;display:inline-flex}.rfid-tap__steps li span{border:1.5px solid;border-radius:50%;place-items:center;width:20px;height:20px;font-size:11px;font-weight:800;display:inline-grid}.rfid-tap__steps li.is-current{color:#4c5aad}.rfid-tap__steps li.is-done{color:#16a34a}.rfid-tap__wait{text-align:center;border-radius:var(--r-md);background:#f5f6fb;border:1.5px dashed #c7cbe6;flex-direction:column;align-items:center;gap:8px;padding:22px 14px;display:flex}.rfid-tap__wait strong{color:#1e1b4b;font-size:15px}.rfid-tap__wait span{color:#6b7280;font-size:12.5px;line-height:1.5}.rfid-tap__pulse{background:#5c6bc0;border-radius:50%;width:18px;height:18px;animation:1.4s ease-out infinite rfid-pulse;box-shadow:0 0 #5c6bc080}@keyframes rfid-pulse{to{box-shadow:0 0 0 16px #5c6bc000}}@media (prefers-reduced-motion:reduce){.rfid-tap__pulse{animation:none}}.rfid-tap__reasons{flex-direction:column;gap:6px;display:flex}.rfid-tap__reason{color:var(--ink);cursor:pointer;border:1.5px solid var(--line);border-radius:var(--r-sm);align-items:center;gap:10px;padding:10px 12px;font-size:13.5px;font-weight:600;display:flex}.rfid-tap__reason input{accent-color:#5c6bc0}.rfid-tap__reason.is-active{background:#eef0fb;border-color:#5c6bc0}.rfid-tap__review{border-radius:var(--r-sm);background:#f5f6fb;grid-template-columns:100px minmax(0,1fr);gap:8px 14px;padding:12px 14px;font-size:13.5px;display:grid}.rfid-tap__review div{display:contents}.rfid-tap__review dt{color:#6b7280}.rfid-tap__review dd{color:var(--ink);font-weight:700}.rfid-tap__message{color:#991b1b;border-radius:var(--r-sm);background:#fee2e2;padding:9px 12px;font-size:12.5px;line-height:1.5}.sr-bulk__hint{color:#b45309;align-self:center;font-size:12.5px;font-weight:600}@media (width<=640px){.rfid-info{grid-template-columns:minmax(0,1fr);gap:2px}.rfid-info dd{margin-bottom:8px}}.tag-pill--ok{color:#166534;background:#dcfce7}.tag-pill--danger{color:#991b1b;background:#fee2e2}.sad-card__text-value{color:#1e1b4b;font-size:22px;font-weight:800}.dbm-page__top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.dbm-select-all{flex-wrap:wrap;align-items:center;gap:4px 14px;margin-bottom:4px;display:flex}.dbm-select-all .dbm-subhead{margin:0}.dbm-link{color:#318ce7;padding:0;font-size:12.5px;font-weight:700}.dbm-link:hover{text-decoration:underline}.dbm-groups{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px 20px;display:grid}.dbm-group{min-width:0}.dbm-result{border-radius:var(--r-sm);padding:9px 12px;font-size:13px;font-weight:600}.dbm-result--ok{color:#166534;background:#dcfce7}.dbm-result--error{color:#991b1b;background:#fee2e2}.dbm-facts{color:var(--ink);flex-direction:column;gap:10px;padding-left:18px;font-size:13.5px;line-height:1.55;display:flex}.dbm-log__tables{max-width:420px;color:var(--ink-soft);font-size:12.5px}.rfid-photo__error{text-align:center;color:#b42318;max-width:180px;margin-top:4px;font-size:11.5px;font-weight:600;display:block}.dbm-layout{grid-template-columns:minmax(0,1fr) minmax(280px,360px);align-items:start;gap:20px;display:grid}@media (width<=1180px){.dbm-layout{grid-template-columns:minmax(0,1fr)}}.dbm-unlocked{color:#166534;background:#dcfce7;border-radius:999px;align-items:center;gap:6px;margin-left:auto;margin-right:10px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.act-panel{background:#f3f4f6;border:2px solid #facc15;border-radius:10px;flex-direction:column;gap:10px;max-height:calc(100vh - 32px);padding:16px;display:flex;position:sticky;top:16px}@media (width<=1180px){.act-panel{max-height:none;position:static}}.act-panel__head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.act-panel__head h2{margin:0;font-size:15px}.act-panel__head p{color:#4b5563;margin:4px 0 0;font-size:12px}.act-panel__filters{gap:6px;display:flex}.act-panel__filters select,.act-panel__filters input{min-width:0;font:inherit;background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:6px 8px;font-size:12.5px}.act-panel__filters input{flex:1}.act-panel__error{color:#b42318;margin:0;font-size:12.5px;font-weight:600}.act-panel__empty,.act-panel__count{color:#6b7280;margin:0;font-size:12px}.act-list{flex:1;margin:0;padding:0;list-style:none;overflow-y:auto}.act-list li{background:#fff;border-left:3px solid #d1d5db;border-radius:4px;margin-bottom:6px;padding:8px 10px}.act-list li.is-warn{background:#fef2f2;border-left-color:#dc2626}.act-list__top{flex-wrap:wrap;align-items:baseline;gap:6px;font-size:13px;display:flex}.act-list__area{letter-spacing:.04em;text-transform:uppercase;color:#854d0e;background:#fef9c3;border-radius:999px;padding:1px 7px;font-size:10.5px;font-weight:800}.act-list__detail{color:#374151;overflow-wrap:anywhere;margin:4px 0 0;font-size:12px}.act-list__meta{color:#6b7280;margin:4px 0 0;font-size:11.5px}.db-verify__demo{color:#fde68a;background:#facc151f;border:1px dashed #facc1599;border-radius:6px;margin:10px 0 0;padding:8px 10px;font-size:12.5px}.db-verify__demo code{letter-spacing:.15em;color:#fff;font-size:15px;font-weight:800}.sr-waiting{background:#fff7f7;border:2px solid #fca5a5}.sa-notif{text-align:left;border-radius:8px;align-items:flex-start;gap:8px;width:100%;padding:8px;display:flex}.sa-notif:hover{background:#f3f4f6}.sa-notif .count-badge{margin:1px 0 0}.sa-notif span{flex-direction:column;gap:2px;font-size:13px;display:flex}.sa-notif small{color:#6b7280}.um-msg{border-radius:6px;margin:8px 0;padding:8px 12px;font-size:13px;font-weight:600}.um-msg--ok{color:#166534;background:#dcfce7}.um-msg--error{color:#b42318;background:#fee2e2}.um-hint{color:#6b7280;margin:4px 0 0;font-size:12px}.um-empty{color:#4b5563;text-align:center;padding:24px;font-size:14px}.um-update__head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.um-update__head strong{font-size:16px}.um-update__meta{color:#6b7280;width:100%;font-size:12.5px}.um-reset{border-top:1px dashed #d1d5db;margin-top:22px;padding-top:16px}.um-reset h3{margin:0;font-size:14px}.um-badge--active{color:#166534;background:#dcfce7}.um-badge--pending{color:#92400e;background:#fef3c7;margin-left:6px}.um-role-filter .um-search{flex:1;min-width:160px}.um-table__sub{color:#6b7280;font-size:11.5px}.um-table__empty{text-align:center;color:#6b7280;padding:14px}.um-table__actions{white-space:nowrap}.um-table--users .um-col--name{width:auto}.um-table--users .um-col--id{width:110px}.um-table--users .um-col--role{width:170px}.um-table--users .um-col--login{width:175px}.um-table--users .um-col--actions{width:172px}.um-table--users th:last-child,.um-table--users td:last-child{width:auto}.um-table--users td.um-table__name{white-space:normal;overflow-wrap:anywhere;font-weight:600}.um-table--users td.um-table__name .um-table__sub{font-weight:400}.um-table--users .um-table__actions .um-badge{margin-right:6px}.um-update__role{color:#4b5563;font-size:12.5px;font-weight:600}@media (width<=760px){.um-account-panel__body{overflow-x:auto}.um-table--users{min-width:680px}}.um-table__actions .um-change-btn+.um-change-btn{margin-left:6px}.dbm-danger{background:#fff7f7;border:1px solid #fecaca}.dbm-danger__btn{color:#fff;background:#dc2626}.dbm-danger__btn:not(:disabled):hover{background:#b91c1c}.dbm-danger__confirm{flex-wrap:wrap;align-items:center;gap:8px;font-weight:600;display:flex}.ma-section-pick{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.ma-section-pick__btn{color:#374151;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:600;display:inline-flex}.ma-section-pick__btn span{color:#4b5563;background:#fff;border-radius:999px;min-width:20px;padding:0 6px;font-size:11px}.ma-section-pick__btn.is-active{color:#fff;background:#318ce7;border-color:#318ce7}.ma-section-pick__btn.is-active span{color:#1e3a8a}.ma-times__time{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600}.ma-times__actions{white-space:nowrap;text-align:right}.ma-times__actions .ma-btn+.ma-btn{margin-left:6px}.ma-time-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.sad-card__value{color:#1e1b4b;font-size:30px;font-weight:800;line-height:1}.sad-breakdown li strong{color:#1e1b4b;font-weight:700}.sad-distribution.is-live .sad-distribution__segment,.sad-pie.is-live{opacity:1}.sad-log__time{color:#6b7280;font-variant-numeric:tabular-nums;flex:none;min-width:128px;font-size:11.5px}.sad-panel__empty{color:#6b7280;font-size:12.5px}.sad-panel__more{color:#6b7280;margin-top:8px;font-size:11.5px}.subj-grades{flex-wrap:wrap;gap:6px;margin:4px 0 16px;display:flex}.subj-grade{font:inherit;color:#374151;cursor:pointer;background:#fff;border:1.5px solid #d1d5db;border-radius:6px;align-items:center;gap:8px;padding:7px 12px;font-size:13px;font-weight:600;display:inline-flex}.subj-grade:hover{border-color:#9ca3af}.subj-grade.is-active{color:#fff;background:#1e3a8a;border-color:#1e3a8a}.subj-grade__count{text-align:center;min-width:20px;color:inherit;background:#00000014;border-radius:999px;padding:1px 6px;font-size:11.5px}.subj-grade.is-active .subj-grade__count{background:#ffffff38}.subj-add{flex-wrap:wrap;align-items:flex-end;gap:10px;max-width:560px;margin-bottom:12px;display:flex}.subj-add .ma-field{color:#374151}.subj-add{align-items:flex-start}.subj-add__field{flex:260px;min-width:0}.subj-add>.ma-btn{margin-top:21px}.subj-suggest{background:#f8fafc;border:1px solid #e2e5ea;border-radius:6px;margin-top:6px;padding:8px}.subj-suggest__title{color:#6b7280;margin:0 0 6px 2px;font-size:11.5px;display:block}.subj-suggest ul{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.subj-suggest__item{font:inherit;color:#111827;cursor:pointer;background:#fff;border:1px solid #c7cdd6;border-radius:999px;align-items:baseline;gap:6px;padding:5px 10px;font-size:13px;display:inline-flex}.subj-suggest__item:hover,.subj-suggest__item:focus-visible{border-color:#318ce7;outline:none}.subj-suggest__item span{color:#6b7280;font-size:11px}.subj-suggest__here{color:#92400e;margin:6px 0 0 2px;font-size:12px}.subj-add .ma-field input,.subj-rename{box-sizing:border-box;width:100%;font:inherit;color:#111827;background:#fff;border:1.5px solid #9ca3af;border-radius:6px;padding:8px 10px;font-size:14px}.subj-add .ma-field input:focus,.subj-rename:focus{border-color:#318ce7;outline:none;box-shadow:0 0 0 3px #318ce72e}.subj-table td:nth-child(2){width:190px}.um-lock-note{margin:8px 0 0}.admin-app :is(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden],[type=color],[type=button],[type=submit],[type=reset],[type=image]),select,textarea){color:#111827;background-color:#fff;border:1.5px solid #8d97aa}.admin-app :is(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden],[type=color],[type=button],[type=submit],[type=reset],[type=image]),select,textarea):focus{border-color:#318ce7;outline:none;box-shadow:0 0 0 3px #318ce733}.admin-app :is(input,textarea):read-only:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden],[type=color],[type=button],[type=submit],[type=reset],[type=image]),.admin-app :is(input,select,textarea):disabled:not([type=checkbox],[type=radio],[type=range],[type=file],[type=hidden],[type=color],[type=button],[type=submit],[type=reset],[type=image]){color:#4b5563;box-shadow:none;background-color:#f1f3f6;border-color:#c3c9d4}.admin-app [aria-invalid=true]:is(input,select,textarea){border-color:#dc2626}.admin-app .er-search{background-color:#fff;border-color:#8d97aa}.admin-app .er-search input,.admin-app .er-search input:focus,.admin-app .sa-field input,.admin-app .sa-field input:focus{box-shadow:none;background-color:#0000;border:none}.time-select{background:#eef1f5;border:1.5px solid #8d97aa;border-radius:8px;align-items:center;gap:4px;width:max-content;padding:4px;display:inline-flex}.time-select:focus-within{border-color:#318ce7;box-shadow:0 0 0 3px #318ce733}.admin-app .time-select select,.admin-app .ma-field .time-select select{width:auto;min-width:58px;font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;border-color:#c3c9d4;border-radius:6px;padding:6px 8px;font-size:14px;font-weight:600}.admin-app .time-select select:focus{box-shadow:none;border-color:#318ce7}.time-select__colon{color:#374151;font-weight:700}.ma-time-row{flex-wrap:wrap;gap:10px 18px;display:flex}.ma-time-row .ma-field{flex:none}.ad-noclass{color:#92400e;background:#fef3c7;border-radius:6px;margin-top:8px;padding:6px 10px;font-size:13px;display:inline-block}.ss-cal{background:#fff;border:1px solid #e2e5ea;border-radius:10px;flex-direction:column;gap:12px;padding:16px;display:flex}.ss-cal__form{flex-wrap:wrap;align-items:flex-end;gap:10px 12px;display:flex}.ss-cal__field{color:#374151;flex-direction:column;gap:5px;font-size:12px;font-weight:700;display:flex}.ss-cal__field select,.ss-cal__field input{font:inherit;border-radius:6px;padding:8px 10px;font-size:13.5px;font-weight:500}.ss-cal__field--note{flex:260px;min-width:0}.ss-cal__field--note input{box-sizing:border-box;width:100%}.ss-cal__hint{color:#92400e;font-size:12.5px}.ss-cal__confirm{color:#1f2937;background:#fffbeb;border:1.5px solid #f59e0b;border-radius:8px;flex-direction:column;gap:8px;padding:12px 14px;font-size:13px;line-height:1.5;display:flex}.ss-cal__note{color:#4b5563}.ss-cal__actions,.ss-cal__row-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.ss-cal__msg{font-size:13px}.ss-cal__msg--ok{color:#166534}.ss-cal__msg--error{color:#b91c1c}.ss-cal__empty{color:#6b7280;font-size:13px}.ss-cal__list{overflow-x:auto}.ss-cal__table{border-collapse:collapse;width:100%;min-width:620px;font-size:13px}.ss-cal__table th,.ss-cal__table td{text-align:left;border-bottom:1px solid #e5e7eb;padding:8px 10px}.ss-cal__table th{letter-spacing:.04em;text-transform:uppercase;color:#6b7280;font-size:11px;font-weight:700}.ss-cal__date{white-space:nowrap;font-weight:600}.ss-cal__by{color:#6b7280;white-space:nowrap}.ss-cal__type{white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:700;display:inline-block}.ss-cal__type--suspension{color:#9a3412;background:#ffedd5}.ss-cal__type--holiday{color:#6b21a8;background:#f3e8ff}.ss-cal__type--classDay{color:#166534;background:#dcfce7}.ss-cal__type--online{color:#075985;background:#e0f2fe}.idc{color:#1f1f2e;width:230px;height:364px;box-shadow:var(--shadow-md);-webkit-print-color-adjust:exact;print-color-adjust:exact;background:linear-gradient(160deg,#fff 0%,#f1f5f8 55%,#e8eef3 100%);border-radius:12px;flex-direction:column;flex:none;align-items:center;padding:14px 16px 12px 12px;font-family:Montserrat,Plus Jakarta Sans,Arial,sans-serif;display:flex;position:relative;overflow:hidden}.idc>:not(.idc__stripes){z-index:1;position:relative}.idc__stripes{z-index:0;width:100%;height:100%;position:absolute;inset:0}.idc__head{align-self:stretch;align-items:center;gap:8px;display:flex}.idc__logo{object-fit:contain;flex:none}.idc__head p{letter-spacing:.01em;font-size:8.6px;font-weight:800;line-height:1.25}.idc__photo{color:#9aa7b8;background:#fff;place-items:center;width:124px;height:124px;margin:14px 0 12px;display:grid;overflow:hidden}.idc__photo img{object-fit:cover;width:100%;height:100%}.idc__bar{text-align:center;overflow-wrap:anywhere;background:#ffffffe0;border-radius:3px;align-self:stretch;margin-top:6px;padding:3px 4px}.idc__bar--last{letter-spacing:.03em;font-size:17px;font-weight:800}.idc__bar--given{font-size:12px;font-weight:700}.idc__bar--grade{font-size:13px;font-weight:700}.idc__bar--long{font-size:10.5px}.idc__bar--id{align-self:center;margin-top:auto;padding:2px 12px;font-size:9.5px;font-weight:800}.idc__bar--id span{margin-right:6px}.idc--back{padding-top:12px}.idc__title{text-align:center;font-size:10px;font-weight:800;line-height:1.25}.idc__contact{text-align:center;text-transform:uppercase;background:#ffffffe6;border-radius:4px;align-self:stretch;margin:8px 6px 8px 0;padding:7px 6px}.idc__contact-name{font-size:11px;font-weight:800}.idc__contact-phone{letter-spacing:.04em;margin-top:2px;font-size:10.5px;font-weight:800}.idc__contact-address{margin-top:3px;font-size:8.5px;font-weight:600;line-height:1.3}.idc__terms{text-align:justify;margin:0 8px 0 0;font-family:Times New Roman,Georgia,serif;font-size:8.6px;line-height:1.3}.idc__title--return{margin-top:8px;font-size:8.8px}.idc__school{text-align:center;margin-top:6px;font-size:8.8px;font-weight:800;line-height:1.2}.idc__address{text-align:center;margin-top:3px;font-family:Times New Roman,Georgia,serif;font-size:7.8px;line-height:1.2}.idc__phone{text-align:center;font-size:7.8px;font-weight:800}.idc__sign{flex:1;min-height:14px}.idc__principal{text-align:center;font-size:9.5px;font-weight:800}.idc__role{text-align:center;font-size:8.5px;font-weight:800}.rfid-print-sheet{display:none}.rfid-batch__tip{color:#4b5563;margin:-6px 0 12px;font-size:12.5px;line-height:1.5}@page idcard{size:54mm 85.6mm;margin:0}@media print{body.rfid-printing>:not(.rfid-print-sheet){display:none!important}body.rfid-printing{background:#fff!important;margin:0!important}body.rfid-printing .rfid-print-sheet{display:block}.rfid-print-face{page:idcard;break-after:page;width:54mm;height:85.6mm;overflow:hidden}.rfid-print-face:last-child{break-after:auto}.rfid-print-face .idc{zoom:.8874;box-shadow:none;border-radius:0}.rfid-print-face .idc *{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.ss-sms__gateways{border:none;flex-wrap:wrap;gap:10px;margin:0;padding:0;display:flex}.ss-sms__gateways legend{color:#374151;margin-bottom:6px;font-size:12.5px;font-weight:700}.ss-sms__gateway{cursor:pointer;border-radius:var(--r-md);background:#fff;border:1.5px solid #e5e7eb;flex:220px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.ss-sms__gateway.is-on{background:#eff6ff;border-color:#2563eb}.ss-sms__gateway input{accent-color:#2563eb;margin-top:3px}.ss-sms__gateway span{flex-direction:column;gap:2px;font-size:13.5px;display:flex}.ss-sms__gateway small{color:#6b7280;font-size:12px}.ss-sms__backup{color:#374151;cursor:pointer;align-items:flex-start;gap:10px;font-size:13px;line-height:1.45;display:flex}.ss-sms__backup input{accent-color:#2563eb;margin-top:3px}.ss-sms__backup.is-disabled{color:#9ca3af;cursor:default}.ss-sms__backup small{color:#b45309}.ss-sms__setup-tabs{border-bottom:1px solid #e5e7eb;gap:6px;display:flex}.ss-sms__setup-tab{font:inherit;color:#6b7280;cursor:pointer;background:0 0;border:none;border-bottom:2.5px solid #0000;padding:8px 12px;font-size:13px;font-weight:600}.ss-sms__setup-tab.is-on{color:#1e3a8a;border-bottom-color:#2563eb}.ss-sms__setup{flex-direction:column;gap:12px;display:flex}.ss-account{margin-top:6px}.ss-account__show{color:#4b5563;align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.ss-otp-codes{border-radius:var(--r-sm);background:#fffbeb;border:1px solid #fcd34d;flex-direction:column;gap:10px;padding:12px 14px;font-size:13px;display:flex}.ss-otp-codes ol{letter-spacing:.06em;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 24px;margin:0;padding-left:22px;font-family:ui-monospace,Consolas,monospace;font-size:15px;display:grid}.ss-sms__senders{border-radius:var(--r-md);background:#f8fafc;border:1px solid #e5e7eb;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.ss-sms__senders-head{color:#374151;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;font-size:13px;display:flex}.ss-sms__sender-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.ss-sms__sender-list li{border-radius:var(--r-sm);background:#fff;border:1px solid #e5e7eb;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;display:flex}.ss-sms__in-use{color:#166534;margin-left:auto;font-size:12.5px;font-weight:700}.ss-sms__waiting{color:#92400e;margin-left:auto;font-size:12.5px}.ss-sms__sender-list .ss-btn{margin-left:auto}.ss-sms__manual summary{color:#6b7280;cursor:pointer;font-size:12.5px}.ss-sms__manual .ss-cal__form{margin-top:8px}.ss-sms__facts{flex-wrap:wrap;gap:10px 28px;margin:0;display:flex}.ss-sms__facts dt{letter-spacing:.04em;text-transform:uppercase;color:#6b7280;font-size:11px;font-weight:700}.ss-sms__facts dd{color:#111827;margin:2px 0 0;font-size:13.5px;font-weight:600}.ss-sms__pill{border-radius:999px;padding:2px 10px;font-size:12px;font-weight:800;display:inline-block}.ss-sms__pill--on{color:#166534;background:#dcfce7}.ss-sms__pill--off{color:#6b7280;background:#e5e7eb}.ss-sms__balance{color:#166534;align-self:center;font-size:13px;font-weight:700}.ss-sms__switch{color:#374151;border-top:1px solid #e5e7eb;flex-wrap:wrap;align-items:center;gap:10px;padding-top:10px;font-size:13px;display:flex}.ss-sms__switch>p{flex:260px}.ss-sms__switch .ss-cal__confirm{flex:100%}.sm-log__status{border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:700;display:inline-block}.sm-log__status--sent{color:#166534;background:#dcfce7}.sm-log__status--queued{color:#1d4ed8;background:#dbeafe}.sm-log__status--held{color:#92400e;background:#fef3c7}.sm-log__status--failed{color:#b91c1c;background:#fee2e2}.sm-log__status--cancelled{color:#6b7280;background:#e5e7eb}.sm-log__error{color:#b91c1c;margin-top:3px;font-size:11.5px;display:block}.rfid-browse{grid-template-columns:minmax(260px,320px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.rfid-browse__main{min-width:0}.rfid-roster{background:#fff;border:1px solid #e2e5ea;border-radius:10px;flex-direction:column;gap:10px;padding:14px;display:flex}.rfid-roster h3{color:#111827;margin:0;font-size:14px}.rfid-roster__pickers{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.rfid-roster__pickers label{color:#374151;flex-direction:column;flex:100px;gap:4px;font-size:12px;font-weight:700;display:flex}.rfid-roster__pickers select{width:100%;font:inherit;border-radius:6px;padding:7px 8px;font-size:13px}.rfid-roster__pickers .rfid-btn{flex:100%}.rfid-roster__title{color:#111827;margin:4px 0 0;font-size:13px;font-weight:700}.rfid-roster__filters{flex-wrap:wrap;gap:5px;display:flex}.rfid-roster__filter{font:inherit;color:#374151;cursor:pointer;background:#fff;border:1px solid #c7cdd6;border-radius:999px;padding:4px 9px;font-size:11.5px;font-weight:600}.rfid-roster__filter.is-on{color:#fff;background:#1e3a8a;border-color:#1e3a8a}.rfid-roster__list{border:1px solid #e5e7eb;border-radius:8px;flex-direction:column;max-height:460px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.rfid-roster__list li+li{border-top:1px solid #eef0f3}.rfid-roster__item{width:100%;font:inherit;text-align:left;cursor:pointer;background:#fff;border:none;grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;padding:8px 10px;display:grid}.rfid-roster__item:hover{background:#f5f7fb}.rfid-roster__item.is-active{background:#eef4ff;box-shadow:inset 3px 0 #318ce7}.rfid-roster__name{color:#111827;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.rfid-roster__lrn{color:#6b7280;font-variant-numeric:tabular-nums;grid-column:1;font-size:11.5px}.rfid-roster__status{white-space:nowrap;border-radius:999px;grid-area:1/2/span 2;align-self:center;padding:2px 8px;font-size:11px;font-weight:700}.rfid-roster__status--none{color:#92400e;background:#fef3c7}.rfid-roster__status--card{color:#1d4ed8;background:#dbeafe}.rfid-roster__status--printed{color:#166534;background:#dcfce7}.rfid-roster__empty,.rfid-roster__note{color:#6b7280;padding:10px;font-size:12.5px}.rfid-roster__note{padding:0}@media (width<=900px){.rfid-browse{grid-template-columns:minmax(0,1fr)}}.tt-scroll{border:1px solid #e2e5ea;border-radius:10px;overflow-x:auto}.tt{background:#fff;min-width:max-content;display:grid}.tt__corner,.tt__head{z-index:2;color:#fff;text-align:center;background:#1e3a8a;padding:10px 8px;font-size:12px;font-weight:700;position:sticky;top:0}.tt__gutter,.tt__col{border-left:1px solid #e5e7eb;position:relative}.tt__gutter{background:#f8fafc;border-left:none}.tt__hour{color:#6b7280;white-space:nowrap;font-size:10.5px;font-weight:600;position:absolute;right:6px;transform:translateY(-50%)}.tt__hour:first-child{transform:none}.tt__line{border-top:1px dashed #e5e7eb;position:absolute;left:0;right:0}.tt__class{font:inherit;text-align:left;color:#111827;cursor:pointer;border:1px solid #1118272e;border-radius:6px;flex-direction:column;gap:1px;padding:4px 6px;transition:opacity .15s,box-shadow .15s;display:flex;position:absolute;left:4px;right:4px;overflow:hidden}.tt__class:hover{box-shadow:0 2px 8px #0f172a2e}.tt__class strong{font-size:12px;line-height:1.2}.tt__class span,.tt__class small{color:#374151;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.2;overflow:hidden}.tt__class.is-dim{opacity:.25}.tt__class.is-hit{border-color:#1e3a8a;box-shadow:0 0 0 2px #1e3a8a}.tt-loads__list{flex-direction:column;gap:3px;margin:0;padding:0;font-size:12.5px;list-style:none;display:flex}.tt-loads tr.is-selected td{background:#eef4ff}.er-lookup{width:min(460px,100%);position:relative}.er-lookup .er-search{width:100%}.er-suggest{z-index:20;background:#fff;border:1px solid #c7cdd6;border-radius:8px;max-height:320px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #0f172a24}.er-suggest button{width:100%;font:inherit;text-align:left;cursor:pointer;border-radius:6px;grid-template-columns:minmax(0,1fr) auto;gap:1px 10px;padding:7px 9px;display:grid}.er-suggest button:hover,.er-suggest button:focus-visible{background:#eef4ff;outline:none}.er-suggest strong{color:#111827;font-size:13px}.er-suggest span{color:#4b5563;grid-column:1;font-size:12px}.er-suggest small{color:#6b7280;font-variant-numeric:tabular-nums;grid-area:1/2/span 2;align-self:center;font-size:11.5px}.ad-dropdown__item{width:100%;font:inherit;text-align:left;color:#374151;border-radius:6px;margin:6px 0 8px;padding:7px 8px;font-size:13.5px;font-weight:600;display:block}.ad-dropdown__item:hover{color:#1e3a8a;background:#f3f4f6}.ad-icon-btn--photo{padding:0;overflow:hidden}.ad-icon-btn__photo{object-fit:cover;border-radius:50%;width:100%;height:100%}.ad-profile{--th-canvas:#eef1f9;--th-card:#fff;--th-ink:#101828;--th-line:#e1e5f2;--th-accent:#2563eb;font-family:"Plus Jakarta Sans", var(--font);color:var(--th-ink);margin-left:0}.ad-menu-panel .vq-signature{color:#374151;margin-top:24px}@media (width<=960px){.ad-sidebar .vq-signature__name,.ad-sidebar .vq-signature__version{display:none}}.rp-print-brand{display:none}@media print{.rp-print-brand{text-align:center;color:#6b7280;margin-top:18px;font-size:10px;display:block}}.rfid-editor__head--row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.rfid-editor__head--row .rfid-btn{flex:none;align-items:center;gap:6px;display:inline-flex}.rfid-info__muted{color:#6b7280;font-weight:500}.rfid-card__name{letter-spacing:.02em;font-size:14px}.rfid-card__given{margin-top:-2px;font-size:11px;font-weight:600}.sd-dialog{width:min(620px,100%);max-height:calc(100vh - 40px);overflow-y:auto}.sd-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.sd-field{color:#374151;flex-direction:column;gap:4px;font-size:12px;font-weight:700;display:flex}.sd-field small{color:#6b7280;font-weight:500}.sd-field--wide{grid-column:span 2}.sd-field--reason{margin-top:4px}.sd-field :is(input,select){width:100%;min-width:0;font:inherit;border-radius:var(--r-sm);padding:8px 10px;font-size:13.5px;font-weight:500}.sd-hint{color:#6b7280;font-size:12px;line-height:1.5}.sd-changes{border-collapse:collapse;width:100%;font-size:13px}.sd-changes th{text-align:left;color:#6b7280;border-bottom:1px solid #e5e7eb;padding:6px 8px;font-size:11.5px}.sd-changes td{border-bottom:1px solid #f1f2f5;padding:8px}.sd-changes__old{color:#b91c1c;text-decoration:line-through}.sd-changes__new{color:#166534;font-weight:700}.sd-history summary{color:#374151;cursor:pointer;font-size:12.5px;font-weight:700}.sd-history ul{flex-direction:column;gap:8px;margin-top:8px;padding-left:0;font-size:12.5px;list-style:none;display:flex}.sd-history small{color:#6b7280;display:block}@media (width<=560px){.sd-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.gate{--gate-in:#15803d;--gate-in-soft:#e8f6ec;--gate-out:#1d5fbf;--gate-out-soft:#e8f0fc;--gate-bad:#b42318;--gate-bad-soft:#fdecea;background:var(--paper);min-height:100vh;color:var(--ink);font-family:var(--font);flex-direction:column;display:flex}.gate__head{background:var(--card);border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:16px clamp(16px,4vw,40px);display:flex}.gate__head>div:nth-child(2){flex-direction:column;display:flex}.gate__head>div:nth-child(2) span,.gate__clock span{color:var(--muted);font-size:.9rem}.gate__clock{text-align:right;flex-direction:column;align-items:flex-end;margin-left:auto;display:flex}.gate__clock strong{font-variant-numeric:tabular-nums;font-size:clamp(1.4rem,3vw,2rem)}.gate__main{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:28px;padding:24px 16px 40px;display:flex}.gate__card{border-radius:var(--r-lg);background:var(--card);border:2px solid var(--line);width:min(720px,100%);box-shadow:var(--shadow-md);text-align:center;animation:gate-pop .25s var(--ease);padding:clamp(28px,5vw,56px) clamp(20px,4vw,48px)}.gate__card h1{overflow-wrap:anywhere;margin:8px 0 4px;font-size:clamp(1.8rem,5vw,3.2rem);line-height:1.15}.gate__card p{color:var(--ink-soft);margin:6px 0 0;font-size:clamp(1rem,2.4vw,1.35rem)}.gate__card--in{border-color:var(--gate-in);background:var(--gate-in-soft)}.gate__card--out{border-color:var(--gate-out);background:var(--gate-out-soft)}.gate__card--bad{border-color:var(--gate-bad);background:var(--gate-bad-soft)}.gate__card--muted{border-color:var(--line)}.gate__badge{border-radius:var(--r-pill);letter-spacing:.06em;color:#fff;background:var(--muted);padding:6px 18px;font-size:clamp(1rem,2.4vw,1.4rem);font-weight:800;display:inline-block}.gate__card--in .gate__badge{background:var(--gate-in)}.gate__card--out .gate__badge{background:var(--gate-out)}.gate__card--bad .gate__badge{background:var(--gate-bad)}.gate__section{font-weight:600}.gate__time{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink)!important;font-size:clamp(1.4rem,3.4vw,2rem)!important}.gate__card--idle p{color:var(--muted)}.gate__pulse{background:var(--gate-out);opacity:.25;border-radius:50%;width:64px;height:64px;margin:0 auto 8px;animation:1.6s ease-in-out infinite gate-pulse;display:block}.gate__recent{gap:6px;width:min(720px,100%);margin:0;padding:0;list-style:none;display:grid}.gate__recent li{border-radius:var(--r-md);background:var(--card);border:1px solid var(--line);align-items:center;gap:12px;min-width:0;padding:10px 14px;display:flex}.gate__recent li>span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.gate__dir{border-radius:var(--r-pill);text-align:center;color:#fff;min-width:44px;padding:2px 8px;font-size:.8rem;font-weight:800}.gate__dir--in{background:var(--gate-in)}.gate__dir--out{background:var(--gate-out)}.gate__recent-time{color:var(--muted);font-variant-numeric:tabular-nums}@keyframes gate-pop{0%{opacity:.4;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes gate-pulse{0%,to{opacity:.2;transform:scale(.85)}50%{opacity:.4;transform:scale(1)}}@media (width<=560px){.gate__head{flex-wrap:wrap}.gate__clock{text-align:left;align-items:flex-start;width:100%;margin-left:0}}@media (prefers-reduced-motion:reduce){.gate__card,.gate__pulse{animation:none}}.gate__powered{color:var(--muted);position:fixed;bottom:14px;right:18px}
