@property --sidebar{syntax:"<color>";inherits:true;initial-value:#eef3f5}@property --background{syntax:"<color>";inherits:true;initial-value:#fafbfc}@property --card{syntax:"<color>";inherits:true;initial-value:#fff}@property --border{syntax:"<color>";inherits:true;initial-value:#e1e7ea}@property --border-control{syntax:"<color>";inherits:true;initial-value:#7a8691}@property --foreground{syntax:"<color>";inherits:true;initial-value:#2b3138}@property --muted-foreground{syntax:"<color>";inherits:true;initial-value:#65707a}@property --primary{syntax:"<color>";inherits:true;initial-value:#3b444c}@property --primary-foreground{syntax:"<color>";inherits:true;initial-value:#fff}@property --accent{syntax:"<color>";inherits:true;initial-value:#dcebf1}@property --accent-border{syntax:"<color>";inherits:true;initial-value:#c3dfe9}@property --accent-foreground{syntax:"<color>";inherits:true;initial-value:#276579}@property --ring{syntax:"<color>";inherits:true;initial-value:#468ca3}@property --brand{syntax:"<color>";inherits:true;initial-value:#4e5a63}@property --success-bg{syntax:"<color>";inherits:true;initial-value:#e3f2ea}@property --success-fg{syntax:"<color>";inherits:true;initial-value:#1f6a48}@property --success-dot{syntax:"<color>";inherits:true;initial-value:#3e9a72}@property --warning-bg{syntax:"<color>";inherits:true;initial-value:#fbf0dc}@property --warning-fg{syntax:"<color>";inherits:true;initial-value:#83540a}@property --warning-dot{syntax:"<color>";inherits:true;initial-value:#b47f21}@property --danger-bg{syntax:"<color>";inherits:true;initial-value:#fbe8e6}@property --danger-fg{syntax:"<color>";inherits:true;initial-value:#a1352c}@property --danger-dot{syntax:"<color>";inherits:true;initial-value:#d0564b}@property --neutral-bg{syntax:"<color>";inherits:true;initial-value:#edf1f3}@property --neutral-fg{syntax:"<color>";inherits:true;initial-value:#4a535b}:root{--brand-sky:#78c7d4;--sidebar:#eef3f5;--background:#fafbfc;--card:#fff;--border:#e1e7ea;--border-control:#7a8691;--nav-count-bg:#d6dfe4;--foreground:#2b3138;--muted-foreground:#65707a;--primary:#3b444c;--primary-foreground:#fff;--accent:#dcebf1;--accent-border:#c3dfe9;--accent-foreground:#276579;--ring:#468ca3;--brand:#4e5a63;--success-bg:#e3f2ea;--success-fg:#1f6a48;--success-dot:#3e9a72;--warning-bg:#fbf0dc;--warning-fg:#83540a;--warning-dot:#b47f21;--danger-bg:#fbe8e6;--danger-fg:#a1352c;--danger-dot:#d0564b;--danger-solid:#a1352c;--danger-solid-fg:#fff;--qr-surface:#fff;--neutral-bg:#edf1f3;--neutral-fg:#4a535b;--brand-charcoal:var(--foreground);--text-muted:var(--muted-foreground);--surface:var(--card);--surface-page:var(--background);--surface-muted:var(--sidebar);--surface-sky:var(--accent);--surface-sky-strong:var(--accent);--border-sky:var(--accent-border);--charcoal-hover:var(--primary);--theme-scheme:light;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--border-control:var(--border);--nav-count-bg:var(--neutral-bg);--sidebar:#14181b;--background:#181d21;--card:#1e2429;--border:#2a3238;--foreground:#e8edf0;--muted-foreground:#98a5af;--accent:#1f3640;--accent-border:#2e4c58;--accent-foreground:#8ccadb;--ring:#6fa9bc;--primary:#e6ebee;--primary-foreground:#1b2024;--success-bg:#17332a;--success-fg:#8ad1ae;--success-dot:#4fb48a;--warning-bg:#3a2e14;--warning-fg:#f0c674;--warning-dot:#e0ae4e;--danger-bg:#3d1f1d;--danger-fg:#f2a29b;--danger-dot:#e27a70;--neutral-bg:#262e34;--neutral-fg:#b4bfc7;--theme-scheme:dark;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.scanner-dialog video{background:#14181b}.teacher-ui .skip-link{background:var(--card);color:var(--foreground);z-index:50}:root[data-theme-animated]{transition:--sidebar .24s,--background .24s,--card .24s,--border .24s,--border-control .24s,--foreground .24s,--muted-foreground .24s,--primary .24s,--primary-foreground .24s,--accent .24s,--accent-border .24s,--accent-foreground .24s,--ring .24s,--brand .24s,--success-bg .24s,--success-fg .24s,--success-dot .24s,--warning-bg .24s,--warning-fg .24s,--warning-dot .24s,--danger-bg .24s,--danger-fg .24s,--danger-dot .24s,--neutral-bg .24s,--neutral-fg .24s}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-mono:var(--font-mono);--radius-sm:var(--radius-sm);--radius-md:var(--radius-md);--radius-lg:var(--radius-lg);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-app);--default-mono-font-family:var(--font-mono);--text-12:var(--text-12);--text-13:var(--text-13);--text-14:var(--text-14);--text-16:var(--text-16);--text-20:var(--text-20);--text-24:var(--text-24);--text-32:var(--text-32);--radius-full:var(--radius-full)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.block{display:block}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--font-app:"Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-12:12px;--text-13:13px;--text-14:14px;--text-16:16px;--text-20:20px;--text-24:24px;--text-32:32px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-full:999px;accent-color:var(--brand-charcoal);font-family:var(--font-app);color:var(--brand-charcoal);background:var(--surface-page);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{background:var(--surface-page)}body{background:var(--surface-page);min-width:320px;color:var(--brand-charcoal);margin:0}button,input,select,textarea{font:inherit}button{color:inherit}input::placeholder,textarea::placeholder{color:var(--text-muted);opacity:1}a{color:inherit}:focus-visible{outline:3px solid var(--brand-charcoal);outline-offset:3px}::selection{background:var(--surface-sky-strong);color:var(--brand-charcoal)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.skip-link{z-index:2;background:var(--card);color:var(--foreground);padding:12px;position:absolute;top:-80px;left:20px}.skip-link:focus{top:12px}.eyebrow{font-size:var(--text-12);letter-spacing:2px;color:var(--brand-charcoal);align-items:center;gap:10px;margin:0 0 28px;font-weight:600;display:flex}.eyebrow span{background:var(--brand-sky);border-radius:var(--radius-full);width:7px;height:7px}.site-footer{border-top:1px solid var(--border);min-height:77px;font-size:var(--text-12);color:var(--text-muted);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;padding:12px 0;display:grid}.footer-copyright{text-align:center}.footer-github{border-radius:var(--radius-md);justify-self:end;place-items:center;width:44px;height:44px;display:grid}.footer-github:hover{background:var(--surface-sky)}@media (width<=760px){.eyebrow{margin-bottom:22px}.site-footer{font-size:var(--text-12);grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:12px 0 20px}.footer-copyright{grid-area:2/1/auto/-1}.footer-github{grid-area:1/2}}form{margin-top:26px}label{font-size:var(--text-12);margin:18px 0 8px;font-weight:600;display:block}input,textarea{border:1px solid var(--border-control);background:var(--surface);border-radius:var(--radius-sm);width:100%;color:var(--brand-charcoal);font-size:var(--text-14);min-height:46px;padding:12px 13px}input:disabled{background:var(--surface-muted)}textarea{resize:vertical;line-height:1.65}.password-field{position:relative}.password-field input{padding-right:82px}.password-field button{height:100%;font-size:var(--text-12);cursor:pointer;background:0 0;border:0;font-weight:600;position:absolute;top:0;right:12px}.button{border-radius:var(--radius-sm);font-size:var(--text-13);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:12px;min-height:44px;padding:12px 18px;font-weight:600;text-decoration:none;transition:background .15s;display:inline-flex}.button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--brand-charcoal);color:var(--surface)}.primary:hover:enabled{background:var(--charcoal-hover)}.secondary{background:var(--surface);border-color:var(--border-control);color:var(--brand-charcoal)}.secondary:hover:enabled{background:var(--surface-sky)}.login-submit>svg{color:var(--brand-sky)}.login-submit{justify-content:space-between;width:100%;margin-top:24px}.login-help a{text-underline-offset:3px;text-decoration:underline}.login-help a:hover{color:var(--charcoal-hover)}.feedback{border-radius:var(--radius-md);line-height:1.65;font-size:var(--text-13);margin:18px 0;padding:16px 18px}.feedback p{margin:0}.feedback h3{font-size:var(--text-14);margin:0 0 5px;font-weight:600}.feedback .button{margin-top:14px}.error{background:var(--danger-bg);color:var(--danger-fg);border:1px solid var(--danger-fg)}.notice{background:var(--warning-bg);color:var(--warning-fg);border:1px solid color-mix(in srgb, var(--warning-fg) 25%, transparent)}.success{background:var(--surface-sky);color:var(--brand-charcoal);border:1px solid var(--border-sky)}.empty-state{text-align:center;color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:64px 24px;display:flex}.empty-state>span,.empty-state>svg{color:var(--brand-sky)}.empty-state h3{font-size:var(--text-16);color:var(--brand-charcoal);margin:0;font-weight:600}.empty-state p{font-size:var(--text-13);margin:0}@keyframes spin{to{transform:rotate(360deg)}}.ecic-status-pill{background:var(--surface-sky);color:var(--brand-charcoal);border:1px solid var(--border);border-radius:var(--radius-full);font-size:var(--text-12);align-items:center;gap:8px;padding:8px 12px;font-weight:600;display:inline-flex}.export-dialog{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);width:min(1180px,100% - 32px);max-height:calc(100dvh - 40px);color:var(--brand-charcoal);margin:auto;padding:26px;overflow:auto;box-shadow:0 24px 80px #363f433d}.export-dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1c2a3073}.export-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.export-heading .eyebrow{font-size:var(--text-12);margin:0 0 10px}.export-heading h2{font-size:var(--text-24);letter-spacing:-.04em;margin:0}.export-heading button{min-width:42px;min-height:42px}.export-description,.export-note{color:var(--text-muted);font-size:var(--text-13);line-height:1.6}.export-summary{font-size:var(--text-12);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:24px;display:flex}.export-note{font-size:var(--text-12)}.export-table-scroll{border:1px solid var(--border);border-radius:var(--radius-lg);max-height:48dvh}.export-table{width:100%}.export-table th{z-index:1;background:var(--surface-muted);position:sticky;top:0}.export-table td:last-child{white-space:pre-wrap;overflow-wrap:anywhere;min-width:240px;max-width:380px}.export-actions{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;margin-top:24px;padding-top:20px;display:flex}.export-actions>span{font-size:var(--text-12);color:var(--text-muted);margin-right:auto}@media (width<=600px){.export-dialog{padding:18px}.export-actions>span{width:100%}.export-actions .button{font-size:var(--text-12);white-space:nowrap;flex:1;padding:12px 10px}}.ecic-ghost-button{border:1px solid var(--border);background:var(--surface);color:var(--brand-charcoal);border-radius:var(--radius-md);font-size:var(--text-12);cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:9px 12px;font-weight:600;display:inline-flex;box-shadow:0 1px 2px #00000005}.ecic-ghost-button:disabled{opacity:.5;cursor:not-allowed}.ecic-table{border-collapse:collapse;width:100%}.ecic-table th{background:var(--surface-muted);color:var(--text-muted);text-align:left;font-size:var(--text-12);letter-spacing:.12em;border-bottom:1px solid var(--border);padding:14px 18px}.ecic-table td{border-bottom:1px solid var(--border);color:var(--brand-charcoal);font-size:var(--text-12);padding:16px 18px}.ecic-table tbody tr:hover{background:color-mix(in srgb, var(--brand-sky) 6%, transparent)}@media (width<=760px){.ecic-ghost-button{min-height:40px}}.page-heading{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:26px;display:flex}.page-heading p:not(.eyebrow){color:var(--text-muted);margin:0}.page-heading .eyebrow{margin-bottom:14px}.report-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px;box-shadow:0 1px 3px #00000005}.muted,.report-card .section-title .muted{color:var(--text-muted)}.section-title{justify-content:space-between;align-items:center;gap:14px;display:flex}.section-title h2{font-size:var(--text-16);margin:0}.badge{border-radius:var(--radius-full);background:var(--surface-muted);width:fit-content;color:var(--text-muted);font-size:var(--text-12);align-items:center;padding:6px 9px;font-weight:600;display:inline-flex}.badge.green{background:var(--surface-sky);color:var(--brand-charcoal)}.badge.amber{background:var(--warning-bg);color:var(--warning-fg)}.table-scroll{border:1px solid var(--border);border-radius:var(--radius-lg);margin-top:18px;overflow-x:auto}.table-scroll table{min-width:760px}.table-scroll table:not(.ecic-table){border-collapse:collapse;width:100%}.table-scroll th{text-align:left;color:var(--text-muted);font-size:var(--text-12);letter-spacing:.08em;background:var(--surface-muted);border-bottom:1px solid var(--border);padding:12px 14px}.table-scroll td{border-bottom:1px solid var(--border);font-size:var(--text-12);vertical-align:top;padding:14px}.table-scroll tr:last-child td{border-bottom:0}.table-scroll td small{color:var(--text-muted);margin-top:3px;display:block}.pager{color:var(--text-muted);font-size:var(--text-12);justify-content:space-between;align-items:center;gap:16px;margin-top:18px;display:flex}.pager-buttons,.teacher-actions{flex-wrap:wrap;gap:8px;display:flex}.action-block p{color:var(--text-muted);font-size:var(--text-12);margin:0}.action-block{border-top:1px solid var(--border);margin-top:22px;padding-top:22px}.action-block h3{font-size:var(--text-16);margin:0 0 8px}.action-block .button,.action-block form .button{margin-top:16px}.teacher-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;display:grid}.teacher-checkbox{align-items:center;gap:8px;display:flex}.teacher-checkbox input{width:auto;min-height:0}.teacher-editor{margin-bottom:22px}.notification-icon{border-radius:var(--radius-full);background:var(--warning-bg);width:30px;height:30px;color:var(--warning-fg);place-items:center;font-weight:600;display:grid}.scanner-overlay{z-index:20;background:#5a5d6094;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.scanner-dialog{border-radius:var(--radius-lg);background:var(--surface);width:min(100%,460px);max-height:min(680px,90vh);padding:20px;position:relative;overflow:auto}.scanner-dialog video{object-fit:cover;border-radius:var(--radius-lg);background:var(--charcoal-hover);width:100%;max-height:52vh;display:block}.scanner-camera{border-radius:var(--radius-lg);position:relative;overflow:hidden}.scanner-region{border:3px solid var(--brand-sky);border-radius:var(--radius-md);pointer-events:none;position:absolute;box-shadow:0 0 0 1px #00000059,0 0 0 999px #00000059}.danger-text{color:var(--danger-fg)}.teacher-row-actions{gap:8px;display:flex}.teacher-icon{border-radius:var(--radius-md);cursor:pointer;border:1px solid;flex:0 0 44px;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.teacher-icon:hover:not(:disabled){filter:brightness(.94)}.teacher-icon:disabled{opacity:.45;cursor:not-allowed}.teacher-back{margin-bottom:22px}.teacher-detail-heading h1{overflow-wrap:anywhere}.teacher-account-actions{margin-bottom:20px}@media (width<=760px){.page-heading{margin-bottom:20px;display:block}.page-heading>.button{width:100%;margin-top:16px}.report-card{border-radius:var(--radius-lg);padding:16px}.section-title{align-items:flex-start}.section-title h2{font-size:var(--text-16)}.pager{gap:12px;display:grid}.pager-buttons{grid-template-columns:1fr 1fr;display:grid}.pager .button{width:100%}.teacher-fields{grid-template-columns:1fr}.teacher-actions{grid-template-columns:1fr;display:grid}.teacher-actions .button{width:100%}}.teacher-ui{color:var(--foreground);background:var(--sidebar);font:var(--text-14)/1.5 var(--font-app);color-scheme:var(--theme-scheme)}.teacher-ui :focus-visible{outline:2px solid var(--accent-foreground);outline-offset:2px}.teacher-ui h1{font-size:var(--text-32);letter-spacing:-.025em;margin:0 0 6px;font-weight:600;line-height:1.25}.teacher-ui h2{font-size:var(--text-16);margin:0;font-weight:600;line-height:1.5}.teacher-ui h3{font-size:var(--text-14);font-weight:600}.teacher-ui p{margin:0}.teacher-ui small,.teacher-ui .muted{color:var(--muted-foreground)}.teacher-ui button,.teacher-ui a,.teacher-ui input{-webkit-tap-highlight-color:transparent}.teacher-ui .button{border-radius:var(--radius-sm);gap:8px;min-height:40px;padding:8px 14px;font-weight:500}.teacher-ui .primary,.teacher-ui .primary:hover:enabled{background:var(--primary);color:var(--primary-foreground)}.teacher-ui .secondary{background:var(--card);border-color:var(--border);color:var(--foreground)}.teacher-ui .icon-button{border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;flex-shrink:0;place-items:center;width:36px;height:36px;padding:0;display:inline-grid}.teacher-ui .icon-button:hover,.teacher-ui .secondary:hover:enabled{background:var(--accent)}.teacher-ui .page-heading{justify-content:space-between;align-items:center;gap:16px;margin:0;display:flex}.teacher-ui .page-heading p{color:var(--muted-foreground);font-size:var(--text-13)}.teacher-ui .ui-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);min-width:0;padding:20px;box-shadow:0 1px 2px #1018200d}.teacher-ui .ui-badge{border-radius:var(--radius-full);font-size:var(--text-12);white-space:nowrap;background:var(--neutral-bg);color:var(--neutral-fg);align-items:center;gap:6px;padding:3px 9px;font-weight:500;display:inline-flex}.teacher-ui .tone-success{background:var(--success-bg);color:var(--success-fg)}.teacher-ui .tone-warning{background:var(--warning-bg);color:var(--warning-fg)}.teacher-ui .tone-danger{background:var(--danger-bg);color:var(--danger-fg)}.teacher-ui .tone-accent{background:var(--accent);color:var(--accent-foreground)}.teacher-ui time,.teacher-ui .numeric{font-variant-numeric:tabular-nums}.teacher-ui .mono,.kpi-value,.date-trigger{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.teacher-ui .mono small{font-family:var(--font-app)}.teacher-ui .feedback{margin:0}.teacher-ui .feedback.error{background:var(--danger-bg);color:var(--danger-fg);border-color:var(--danger-fg)}.teacher-ui .feedback.notice{background:var(--warning-bg);color:var(--warning-fg)}.teacher-ui .feedback.success{background:var(--success-bg);color:var(--success-fg)}.teacher-ui .skeleton{background:var(--neutral-bg);border:1px solid var(--border);border-radius:var(--radius-lg);height:130px}.teacher-ui .panel-placeholder{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);gap:12px;padding:20px;display:grid}.teacher-ui .panel-placeholder-heading{width:min(280px,60%);height:22px}.teacher-ui .panel-placeholder-subheading{width:min(420px,85%);height:14px}.teacher-ui .panel-placeholder-rows{gap:8px;margin-top:8px;display:grid}.teacher-ui .panel-placeholder-row{height:54px}.teacher-ui .panel-placeholder.detail .panel-placeholder-row{height:72px}.teacher-ui .skeleton.schedule{height:270px}.teacher-ui .toast{z-index:100;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--card);color:var(--foreground);max-width:calc(100% - 32px);padding:14px 18px;position:fixed;bottom:24px;right:24px}.teacher-ui .refreshing{animation:.6s linear spin}@media (prefers-reduced-motion:reduce){.teacher-ui *,.teacher-ui :before,.teacher-ui :after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.teacher-shell{grid-template-rows:minmax(0,1fr);grid-template-columns:256px minmax(0,1fr);height:100dvh;display:grid;overflow:hidden}.teacher-shell>[role=status]{z-index:100;position:fixed}.teacher-sidebar{flex-direction:column;min-width:0;min-height:0;padding:24px 16px 16px;display:flex;overflow-y:auto}.teacher-brand{align-items:center;gap:10px;margin-bottom:30px;display:flex}.teacher-brand img{border-radius:var(--radius-md)}.teacher-brand strong{white-space:nowrap;font-weight:600}.teacher-brand small{font-size:var(--text-12);display:block}.teacher-menu-label{font-size:var(--text-12);color:var(--muted-foreground);padding:0 12px 10px}.teacher-sidebar nav{gap:4px;display:grid}.teacher-sidebar nav a,.teacher-bottom-nav a{border-radius:var(--radius-md);color:var(--muted-foreground);align-items:center;gap:10px;padding:10px 12px;text-decoration:none;display:flex}.teacher-sidebar nav a.active,.teacher-bottom-nav a.active{background:var(--accent);color:var(--accent-foreground);font-weight:500}.teacher-sidebar-footer{margin-top:auto;padding:16px 8px 0}.teacher-identity{align-items:center;gap:10px;display:flex}.teacher-identity strong{overflow-wrap:anywhere;font-weight:500}.teacher-identity small{font-size:var(--text-12);display:block}.teacher-avatar{border-radius:var(--radius-full);background:var(--accent);width:36px;height:36px;color:var(--accent-foreground);border:0;flex-shrink:0;place-items:center;font-weight:600;display:grid}.teacher-ui .teacher-logout{min-height:36px;font-size:var(--text-13);gap:6px;margin-top:12px;padding:6px 12px}.teacher-frame{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--background);flex-direction:column;min-width:0;min-height:0;margin:8px 8px 8px 0;display:flex;overflow:hidden}.teacher-topbar{border-bottom:1px solid var(--border);background:var(--card);flex-shrink:0;align-items:center;gap:12px;height:56px;padding:0 20px;display:flex}.teacher-desktop-title{align-items:center;gap:12px;display:flex}.topbar-separator{background:var(--border);width:1px;height:18px}.teacher-date{font-size:var(--text-12);color:var(--muted-foreground);margin-left:auto}.teacher-content{flex:1;padding:28px;overflow:auto}.teacher-content-inner{gap:20px;max-width:1120px;margin:auto;display:grid}.teacher-mobile-brand,.teacher-account-toggle,.teacher-bottom-nav{display:none}.teacher-account{background:var(--card);color:var(--foreground);border:1px solid var(--border);border-radius:var(--radius-lg);margin:0;padding:20px;position:fixed;inset:64px 16px auto auto}.sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)}.sidebar-collapsed .teacher-sidebar{visibility:hidden}.sidebar-collapsed .teacher-frame{margin-left:8px}@media (width<=1100px){.teacher-date{white-space:nowrap;text-overflow:ellipsis;max-width:230px;overflow:hidden}}@media (width<=900px){.teacher-shell{display:block}.teacher-sidebar,.teacher-desktop-title,.teacher-date{display:none}.teacher-frame,.sidebar-collapsed .teacher-frame{border:0;border-radius:0;height:100dvh;margin:0}.teacher-topbar{padding:0 16px}.teacher-mobile-brand{align-items:center;gap:8px;margin-right:auto;display:flex}.teacher-account-toggle{cursor:pointer;display:grid}.teacher-content{padding:20px 16px calc(76px + env(safe-area-inset-bottom))}.teacher-content-inner{gap:16px}.teacher-bottom-nav{background:var(--card);border-top:1px solid var(--border);padding:4px 12px calc(4px + env(safe-area-inset-bottom));z-index:20;grid-template-columns:repeat(3,1fr);display:grid;position:fixed;inset:auto 0 0}.teacher-bottom-nav a{min-height:52px;font-size:var(--text-12);text-align:center;flex-direction:column;justify-content:center;gap:2px;padding:4px;line-height:1.25}.teacher-ui h1{font-size:var(--text-24)}.teacher-ui .toast{bottom:calc(80px + env(safe-area-inset-bottom));right:16px}}.jornada-kpis{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:16px;display:grid}.jornada-alert{border:1px solid var(--accent-border);border-radius:var(--radius-lg);align-items:center;gap:12px;padding:16px 20px;display:flex}.jornada-alert>svg{flex-shrink:0}.jornada-alert strong{font-weight:600}.jornada-alert p{font-size:var(--text-13);margin-top:3px}.jornada-alert .button{flex-shrink:0;align-self:center;margin-left:auto}.kpi-heading{justify-content:space-between;align-items:center;gap:8px;display:flex}.teacher-ui .kpi-heading h2{font-size:var(--text-13);align-items:center;gap:8px;display:flex}.kpi-heading svg{color:var(--muted-foreground)}.kpi-value{font-size:var(--text-32);letter-spacing:-.03em;margin:20px 0 6px;font-weight:600;line-height:1.2}.kpi-value>span{font-size:var(--text-16);color:var(--muted-foreground)}.kpi-value.kpi-empty{font-family:var(--font-app);font-size:var(--text-16);letter-spacing:0;color:var(--muted-foreground);font-weight:500}.jornada-kpi p,.schedule-description,.jornada-window p,.jornada-lock{font-size:var(--text-13);color:var(--muted-foreground)}.teacher-ui .schedule-description{margin-top:4px}.day-timeline{margin:48px 0 20px}.timeline-track{background:var(--neutral-bg);border-radius:var(--radius-sm);height:10px;position:relative}.timeline-window{border-radius:var(--radius-sm);background:var(--ring);height:10px;position:absolute}.timeline-marker{border-left:2px solid var(--foreground);height:18px;position:absolute;top:-4px}.timeline-marker>span{font-size:var(--text-12);background:var(--primary);color:var(--primary-foreground);border-radius:var(--radius-sm);padding:2px 6px;position:absolute;bottom:24px}.timeline-ticks{font-size:var(--text-12);color:var(--muted-foreground);justify-content:space-between;margin-top:9px;display:flex}.jornada-window{border-top:1px solid var(--border);align-items:center;gap:14px;padding:18px 0;display:flex}.window-icon{border-radius:var(--radius-md);background:var(--accent);width:38px;height:38px;color:var(--accent-foreground);flex-shrink:0;place-items:center;display:grid}.teacher-ui .jornada-window h3{margin:0 0 2px}.jornada-window strong{font-size:var(--text-16);font-weight:600}.jornada-window .ui-badge{margin-left:auto}.jornada-lock{border-top:1px solid var(--border);align-items:center;gap:8px;padding-top:16px;display:flex}.jornada-lock svg{flex-shrink:0}.no-jornada .timeline-window{border:1px dashed var(--ring);background:0 0}.no-jornada .jornada-window{opacity:.85}.teacher-ui .attendance-actions .action-block{border:0;margin:0;padding:0}.teacher-ui .attendance-actions form{margin:0}.teacher-ui .attendance-actions textarea{color:var(--foreground)}@media (width<=900px){.jornada-alert{flex-wrap:wrap}.jornada-alert>div{flex:1}.jornada-alert .button{flex-basis:100%;min-height:44px;margin-left:0}.teacher-ui .page-heading{flex-wrap:wrap;align-items:flex-start}}.teacher-history{gap:20px;display:grid}.teacher-ui .history-summary{padding:16px 0 0;overflow:hidden}.history-summary-skeleton{height:108px}.history-stats{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px 0;margin:0;display:grid}.history-stat{border-left:1px solid var(--border);min-width:0;padding:0 20px}.history-stat:first-child{border-left:0}.history-stat dt{font-size:var(--text-12);color:var(--muted-foreground);white-space:nowrap;align-items:center;gap:6px;display:flex}.history-stat dt svg{flex-shrink:0}.history-stat dd{margin:4px 0 0}.history-stat-value{font-size:var(--text-24);letter-spacing:-.02em;font-weight:600;line-height:1.25;display:block}.history-stat-value small{font-size:var(--text-13);color:var(--muted-foreground);letter-spacing:0;font-weight:400}.stat-dot{border-radius:var(--radius-full);flex-shrink:0;width:6px;height:6px;display:inline-block}.stat-0{background:var(--success-dot)}.stat-1{background:var(--warning-dot)}.stat-2{background:var(--danger-dot)}.stat-3{background:var(--muted-foreground)}.history-summary .summary-bar{background:var(--neutral-bg);gap:2px;height:4px;margin-top:16px;display:flex;overflow:hidden}@media (width<=1100px){.history-stat{padding:0 14px}}@media (width<=900px){.teacher-ui .history-summary{padding-top:12px}.history-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.history-stat{padding:0 12px}.history-stat:nth-child(3n+1){border-left:0}.history-stat-value{font-size:var(--text-20)}.history-summary .summary-bar{margin-top:12px}}.teacher-ui .data-panel{padding:0;overflow:hidden}.data-panel-heading{justify-content:space-between;align-items:center;gap:16px;padding:20px;display:flex}.data-panel-heading p,.data-panel-actions>span{font-size:var(--text-12);color:var(--muted-foreground)}.data-panel-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;margin-left:auto;display:flex}.data-panel-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:0;padding:0 20px 16px;display:flex}.data-panel>.sr-only:first-child+.data-panel-toolbar{padding-top:20px}.data-panel-toolbar .history-presets{margin:0}.data-panel-toolbar .search-field{flex:220px;min-width:200px}.teacher-ui .data-panel-toolbar .filter-error{flex-basis:100%;margin:0}.data-panel-loading{gap:8px;padding:0 20px 20px;display:grid}.teacher-ui .data-panel-loading .skeleton{height:56px}.data-panel-body{padding:0 20px 20px}.teacher-ui .data-panel .empty-state{border-top:1px solid var(--border)}.teacher-ui .data-panel .empty-state>svg{background:var(--neutral-bg);color:var(--muted-foreground);border-radius:var(--radius-md);width:40px;height:40px;padding:8px}.teacher-ui .data-panel .pager{border-top:1px solid var(--border);margin:0;padding:16px 20px}.teacher-ui .data-panel .pager .button{min-height:36px;padding:6px 12px}.history-dates{flex-wrap:wrap;gap:12px;display:flex}.history-dates .date-trigger{width:140px}@media (width<=900px){.data-panel-heading{flex-wrap:wrap}.data-panel-toolbar{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}.data-panel-toolbar .history-presets{scrollbar-width:none;flex-wrap:nowrap;justify-self:start;max-width:100%;display:flex;overflow-x:auto}.data-panel-toolbar .history-presets button{white-space:nowrap;flex-shrink:0}.data-panel-toolbar .search-field{min-width:0}.teacher-ui .data-panel .pager .button,.teacher-ui .pager .button{min-height:44px}.history-dates{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.history-dates>div{min-width:0}.history-dates .date-trigger{width:100%;height:44px}}.teacher-ui .filter-error{color:var(--danger-fg);font-size:var(--text-13);margin-top:12px}.teacher-ui .history-desktop-table{overflow-x:auto}.teacher-ui .history-desktop-table table{border-collapse:collapse;width:100%;min-width:650px}.teacher-ui .history-desktop-table th{background:var(--background);text-transform:none;letter-spacing:0;color:var(--muted-foreground);font-size:var(--text-13);font-weight:500}.teacher-ui .history-desktop-table td,.teacher-ui .history-desktop-table th{border-top:1px solid var(--border);font-size:var(--text-13);white-space:nowrap;text-align:left;border-bottom:0;padding:14px 16px}.teacher-ui .history-desktop-table td:last-child,.teacher-ui .history-desktop-table th:last-child{text-align:right}.teacher-ui .history-desktop-table small{font-size:var(--text-13);margin-top:4px;display:block}.teacher-ui .history-justification{min-height:36px;color:var(--accent-foreground);font-size:var(--text-12);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:6px 0;text-decoration:underline}.history-mobile-list{display:none}.teacher-ui .history-dialog{background:var(--card);width:min(520px,100% - 32px);max-height:85dvh;color:var(--foreground);border:1px solid var(--border);border-radius:var(--radius-lg);margin:auto;padding:24px}.history-dialog::backdrop{background:#00000073}.dialog-heading{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.justification-details{border-block:1px solid var(--border);grid-template-columns:1fr 1fr;gap:16px;margin:16px 0;padding:20px 0;display:grid}.justification-details dt{font-size:var(--text-12);color:var(--muted-foreground);margin-bottom:4px}.justification-details dd{font-variant-numeric:tabular-nums;margin:0}.justification-body{white-space:pre-wrap;overflow-wrap:anywhere}.teacher-ui .export-dialog{background:var(--card);color:var(--foreground);border-color:var(--border)}.teacher-ui .export-dialog .eyebrow{text-transform:none;letter-spacing:0}.teacher-ui .export-dialog th{background:var(--background);color:var(--muted-foreground)}@media (width<=900px){.teacher-history{gap:16px}.history-desktop-table{display:none}.history-mobile-list{display:grid}.history-mobile-list article{border-top:1px solid var(--border);padding:20px}.history-mobile-heading{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.history-mobile-heading strong{font-size:var(--text-13);font-weight:500}.history-mobile-heading small{font-size:var(--text-12);display:block}.history-mobile-list dl{grid-template-columns:1fr 1fr 1fr;gap:8px;margin:20px 0 6px;display:grid}.history-mobile-list dt{font-size:var(--text-12);color:var(--muted-foreground)}.history-mobile-list dd{font-variant-numeric:tabular-nums;margin:5px 0 0}.teacher-ui .history-dialog{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:none;padding-bottom:calc(24px + env(safe-area-inset-bottom));margin:0;position:fixed;inset:auto 0 0}}.history-presets{flex-wrap:wrap;gap:4px;margin-bottom:20px;display:flex}.history-presets button{min-height:36px;font-size:var(--text-13);border-radius:var(--radius-sm);cursor:pointer;color:var(--muted-foreground);background:0 0;border:1px solid #0000;padding:6px 12px}.history-presets button[aria-pressed=true]{background:var(--accent);border-color:var(--accent-border);color:var(--accent-foreground)}.date-trigger{width:100%;height:42px;font-size:var(--text-13);cursor:pointer;justify-content:flex-start;align-items:center;gap:10px;padding:8px 12px;display:flex}.date-trigger[aria-invalid=true]{border-color:var(--danger-fg)}.date-trigger svg{color:var(--neutral-fg);flex-shrink:0}.teacher-ui .date-dialog{border-radius:var(--radius-lg);border:1px solid var(--border);width:min(340px,100% - 32px);color:var(--foreground);background:var(--card);margin:auto;padding:16px}.date-dialog::backdrop{background:#0000004d}.calendar-month{justify-content:space-between;align-items:center;margin:12px 0;display:flex}.calendar-month strong{font-weight:500}.calendar-weekdays,.calendar-days{text-align:center;grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.calendar-weekdays{font-size:var(--text-12);color:var(--muted-foreground);margin-bottom:8px}.calendar-days button{border-radius:var(--radius-sm);cursor:pointer;font-variant-numeric:tabular-nums;background:0 0;border:0;min-width:0;height:38px}.calendar-days button:hover{background:var(--accent)}.calendar-days button.selected{background:var(--primary);color:var(--primary-foreground)}.calendar-days button.other-month{color:var(--muted-foreground)}.teacher-sidebar{padding:12px 8px}.teacher-brand{margin-bottom:0;padding:6px 8px 14px}.teacher-brand small{font-size:var(--text-12);line-height:1.3}.teacher-brand strong{line-height:1.2;display:block}.teacher-ui .teacher-menu-label{padding:8px 10px 6px}.teacher-sidebar nav{gap:2px}.teacher-sidebar nav a{height:36px;color:var(--foreground);padding:0 10px;font-weight:500}.teacher-sidebar-footer{border-top:1px solid var(--border);padding-top:8px}.teacher-identity{padding:8px 0}.teacher-identity strong{font-size:var(--text-14);font-weight:600}.teacher-avatar{border-radius:var(--radius-md)}.teacher-topbar{padding-inline:16px}.teacher-ui .kpi-heading h2{color:var(--muted-foreground);font-weight:500}.kpi-value{margin-top:12px}.teacher-ui .ui-badge:before{content:"";border-radius:var(--radius-full);background:currentColor;flex-shrink:0;width:6px;height:6px}.jornada-alert{align-items:flex-start;padding:14px 16px}.jornada-alert>svg{margin-top:2px}.teacher-ui .jornada-alert strong{color:var(--foreground)}.teacher-ui .jornada-alert p{color:var(--foreground);font-weight:400}.jornada-windows{grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:12px;margin-top:20px;display:grid}.jornada-window{border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;align-items:flex-start;gap:12px;padding:14px}.jornada-window>div{flex:1;min-width:130px}.window-icon{width:32px;height:32px}.teacher-ui .jornada-lock{border:0;padding-top:16px}.no-jornada .jornada-window{opacity:1;background:var(--background)}.history-presets{background:var(--neutral-bg);border-radius:var(--radius-md);gap:2px;padding:3px;display:inline-flex}.history-presets button{padding:6px 10px}.history-presets button[aria-pressed=true]{background:var(--card);color:var(--foreground);border-color:#0000}.teacher-ui .justification-body{border:1px dashed var(--border);border-radius:var(--radius-md);font-size:var(--text-13);padding:12px}@media (width<=900px){.teacher-topbar{padding-top:env(safe-area-inset-top);height:calc(56px + env(safe-area-inset-top))}}.teacher-ui .page-heading>.button{flex-shrink:0;width:auto}.history-presets button{color:var(--neutral-fg)}.history-mobile-list dd small{font-size:var(--text-12);display:block}.teacher-ui .word-count.invalid{color:var(--danger-fg)}.justification-list{margin:0;padding:0;list-style:none}.justification-list>li{border-top:1px solid var(--border);padding:16px 20px}.justification-item-heading{justify-content:space-between;align-items:start;gap:16px;display:flex}.justification-item-heading h2{font-size:var(--text-16);margin:6px 0}.justification-item-heading p{color:var(--muted-foreground);margin:0}.justification-list summary{cursor:pointer;color:var(--accent-foreground);padding:8px 0}.justification-list small{margin-top:12px;display:block}.create-justification-dialog{width:min(580px,100% - 32px)}.create-justification-dialog fieldset{border:0;min-width:0;margin:20px 0 0;padding:0}.create-justification-dialog legend{margin-bottom:12px;font-weight:600}.justification-options{border-radius:var(--radius-md);background:var(--neutral-bg);grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;padding:3px;display:grid}.teacher-ui .justification-options label{border-radius:var(--radius-sm);min-height:36px;font-size:var(--text-13);color:var(--neutral-fg);cursor:pointer;justify-content:center;align-items:center;margin:0;padding:6px 10px;font-weight:500;display:flex;position:relative}.teacher-ui .justification-options label:has(input:checked){background:var(--card);color:var(--foreground);box-shadow:0 1px 2px #10182014}.teacher-ui .justification-options label:has(input:focus-visible){outline:2px solid var(--accent-foreground);outline-offset:2px}.teacher-ui .justification-options input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.create-justification-dialog fieldset:disabled .justification-options label{cursor:not-allowed;opacity:.65}.create-justification-dialog .justification-form-actions{background:var(--card);border-top:1px solid var(--border);margin:20px -24px -24px;padding:14px 24px 24px;position:sticky;bottom:-24px}.date-placeholder{color:var(--neutral-fg)}.calendar-days button:disabled{color:var(--muted-foreground);opacity:.4;cursor:not-allowed}.calendar-days button:disabled:hover{background:0 0}.calendar-footer{border-top:1px solid var(--border);justify-content:flex-end;margin-top:12px;padding-top:12px;display:flex}.justification-form-fields{grid-template-columns:1fr 1fr;gap:16px;margin-top:20px;display:grid}.justification-form-fields input{width:100%;min-width:0}.justification-window{background:var(--muted);border-radius:var(--radius-md);font-size:var(--text-13);padding:12px}.justification-form-actions{justify-content:flex-end;gap:12px;margin-top:20px;display:flex}@media (width<=640px){.justification-item-heading{flex-direction:column;gap:8px}.justification-form-fields{grid-template-columns:1fr}}.search-field{min-width:0}.teacher-ui .search-field label{margin:0 0 6px}.search-field-control{position:relative}.search-field-icon{color:var(--neutral-fg);pointer-events:none;position:absolute;top:50%;left:12px;translate:0 -50%}.teacher-ui .search-field input{height:42px;min-height:42px;font-size:var(--text-13);margin:0;padding:8px 68px 8px 36px}.search-field input::-webkit-search-cancel-button{appearance:none}.teacher-ui .search-field input:placeholder-shown{padding-right:12px}.search-field-busy{color:var(--muted-foreground);margin-top:-8px;animation:1s linear infinite spin;position:absolute;top:50%;right:42px}.teacher-ui .search-field-clear{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--muted-foreground);cursor:pointer;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute;top:50%;right:6px;translate:0 -50%}.teacher-ui .search-field-clear:hover{background:var(--card);color:var(--foreground)}@media (width<=900px){.teacher-ui .search-field input{height:44px;min-height:44px;font-size:var(--text-16);padding-right:84px}.teacher-ui .search-field input:placeholder-shown{padding-right:12px}.teacher-ui .search-field-clear{width:40px;height:40px;right:2px}.search-field-busy{right:48px}}.topbar-breadcrumb{align-items:center;gap:8px;display:flex}.topbar-breadcrumb a{color:var(--muted-foreground);text-decoration:none}.topbar-breadcrumb a:hover{color:var(--foreground);text-decoration:underline}.topbar-breadcrumb [aria-hidden]{color:var(--muted-foreground)}.teacher-ui .data-panel-actions .button{min-height:36px;font-size:var(--text-13);gap:6px;padding:6px 12px}.teacher-shell :is(.date-trigger,.search-field input,.data-panel-actions .button,.teacher-topbar .refresh-button,.teacher-logout,input:not([type=checkbox],[type=radio]),select,textarea){background:var(--neutral-bg);border-radius:var(--radius-md);box-shadow:none;border:1px solid #0000}.teacher-shell :is(.date-trigger,.search-field input,input:not([type=checkbox],[type=radio]),select,textarea){color:var(--foreground)}.teacher-shell :is(.data-panel-actions .button,.teacher-topbar .refresh-button,.teacher-logout){color:var(--neutral-fg)}.teacher-shell :is(.date-trigger,.data-panel-actions .button,.teacher-topbar .refresh-button,.teacher-logout,select):hover:enabled{background:color-mix(in srgb, var(--neutral-bg), var(--foreground) 6%);color:var(--foreground)}.teacher-shell :is(.date-trigger,input:not([type=checkbox],[type=radio]),select,textarea):is([aria-invalid=true],:user-invalid){border-color:var(--danger-fg)}.teacher-shell :is(input:not([type=checkbox],[type=radio]),select,textarea):disabled{opacity:.65}.teacher-shell form :is(input:not([type=checkbox],[type=radio],[type=search]),select){min-height:42px;font-size:var(--text-14);padding:8px 12px}.teacher-shell form .password-field input{padding-right:82px}.teacher-shell :is(input,textarea)::placeholder{color:var(--neutral-fg)}.public-shell{min-height:100dvh;padding:8px}.public-frame{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--background);flex-direction:column;min-height:calc(100dvh - 16px);display:flex;overflow:hidden}.public-topbar{border-bottom:1px solid var(--border);background:var(--card);justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:12px 24px;display:flex}.public-brand{align-items:center;gap:10px;min-width:0;text-decoration:none;display:flex}.public-brand img{border-radius:var(--radius-md);flex-shrink:0}.public-brand strong{font-weight:600;line-height:1.3;display:block}.public-brand small{font-size:var(--text-12);display:block}.public-clock{color:var(--muted-foreground);flex-shrink:0;align-items:center;gap:10px;display:flex}.public-clock span{font-size:var(--text-12);display:block}.public-clock time{font-size:var(--text-13);color:var(--foreground);display:block}.public-content{flex:1;justify-content:center;align-items:center;width:100%;padding:48px 24px;display:flex}.public-shell .site-footer{min-height:64px;font-size:var(--text-12);margin:0 24px}.public-shell .ui-card{width:100%;max-width:420px;padding:28px}.public-shell h1{font-size:var(--text-24);line-height:1.3}.auth-symbol{border-radius:var(--radius-md);background:var(--accent);width:44px;height:44px;color:var(--accent-foreground);flex-shrink:0;place-items:center;margin-bottom:20px;display:inline-grid}.auth-card>p,.loading-state p,.access-message{font-size:var(--text-13);color:var(--muted-foreground);line-height:1.6}.auth-card form{margin-top:24px}.auth-card label{font-size:var(--text-13);margin:18px 0 6px;font-weight:500}.auth-card label:first-child{margin-top:0}.auth-card input{min-height:44px;font-size:var(--text-16);border-radius:var(--radius-sm);border-color:var(--border-control);background:var(--background);padding:10px 12px}.auth-card input:disabled{opacity:.65}.auth-card .password-field input{padding-right:48px}.auth-card .password-field button{border-radius:var(--radius-sm);width:44px;color:var(--muted-foreground);place-items:center;display:grid;right:0}.auth-card .password-field button:hover{color:var(--foreground)}.auth-card .login-submit{justify-content:center;width:100%;min-height:44px;margin-top:24px}.auth-card .login-submit svg{color:inherit}.auth-card .feedback{margin-top:16px}.auth-card .login-help{border-top:1px solid var(--border);font-size:var(--text-12);margin-top:24px;padding-top:20px}.auth-card .login-help a{color:var(--accent-foreground)}.auth-card .login-help strong{font-weight:500}.mfa-card .mfa-enrollment{margin-top:20px}.mfa-card .mfa-enrollment p,.mfa-card #mfa-code-help{color:var(--muted-foreground);font-size:var(--text-13);line-height:1.6}.mfa-qr{background:var(--qr-surface);border-radius:var(--radius-md);max-width:100%;height:auto;margin:16px auto;padding:12px;display:block}.mfa-enrollment summary{cursor:pointer;font-size:var(--text-13)}.mfa-secret{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;margin-top:12px;display:block}.mfa-logout{width:100%;margin-top:16px}.access-card{text-align:center}.access-card .access-symbol{background:var(--warning-bg);color:var(--warning-fg)}.public-shell .access-message{margin-top:10px}.access-actions{gap:10px;margin-top:24px;display:grid}.access-actions .button{min-height:44px}.access-card .feedback{text-align:left;margin-top:16px}.loading-state{text-align:center;color:var(--foreground);flex-direction:column;justify-content:center;align-items:center;padding:32px 20px;display:flex}.loading-state strong{font-size:var(--text-16);margin-bottom:6px;font-weight:600}.access-card .loading-state{padding:8px 0}.loading-spinner{animation:1s linear infinite spin}.loading-meter{align-items:center;gap:12px;width:min(260px,100%);margin-top:24px;display:flex}.loading-progress{border-radius:var(--radius-sm);background:var(--neutral-bg);flex:1;height:6px;overflow:hidden}.loading-progress span{border-radius:inherit;background:var(--ring);height:100%;transition:width .12s linear;display:block}.loading-percentage{text-align:right;min-width:4ch;font-size:var(--text-13);font-variant-numeric:tabular-nums;color:var(--muted-foreground)}@media (prefers-reduced-motion:reduce){.loading-progress span{transition:none}}@media (width<=600px){.public-shell{padding:0}.public-frame{border:0;border-radius:0;min-height:100dvh}.public-topbar{padding:calc(12px + env(safe-area-inset-top)) 16px 12px}.public-brand small{display:none}.public-clock{gap:6px}.public-clock>svg{display:none}.public-content{padding:32px 16px}.public-shell .ui-card{padding:24px}.public-shell h1{font-size:var(--text-20)}.public-shell .site-footer{padding-bottom:calc(16px + env(safe-area-inset-bottom));margin:0 16px}}.public-topbar-actions{flex-shrink:0;align-items:center;gap:16px;display:flex}@media (width<=380px){.public-topbar,.public-topbar-actions{gap:8px}.public-brand{gap:6px}.public-brand strong{font-size:var(--text-12)}.public-brand img{width:28px;height:28px}}:root{--ease-soft:cubic-bezier(.22, 1, .36, 1);--palette-transition:box-shadow .16s ease}html,body,.teacher-ui,.teacher-ui *,.teacher-ui :before,.teacher-ui :after{transition:var(--palette-transition)}.teacher-ui .theme-toggle{background:var(--neutral-bg);border-radius:var(--radius-md);color:var(--accent-foreground);border:1px solid #0000}.teacher-ui .theme-toggle:hover{background:color-mix(in srgb, var(--neutral-bg), var(--foreground) 6%)}.theme-toggle-icon{place-items:center;display:grid}.theme-toggle-icon>svg{grid-area:1/1}.theme-toggle-sun{opacity:0;transform:rotate(-30deg)scale(.85)}.theme-toggle-moon,:root[data-theme=dark] .theme-toggle-sun{opacity:1;transform:none}:root[data-theme=dark] .theme-toggle-moon{opacity:0;transform:rotate(30deg)scale(.85)}:root[data-theme-animated] .theme-toggle-icon>svg{transition:opacity .24s ease, transform .24s var(--ease-soft)}.teacher-ui button{transition:var(--palette-transition), scale .16s var(--ease-soft)}.teacher-ui button:active:enabled{scale:.97}.teacher-ui .loading-progress span{transition:var(--palette-transition), width .12s linear}.teacher-ui .summary-bar>span{transition:var(--palette-transition), width .35s var(--ease-soft)}@media (width>=901px){.teacher-shell{transition:var(--palette-transition), grid-template-columns .36s var(--ease-soft)}.teacher-sidebar{clip-path:inset(0);width:256px;transition:var(--palette-transition), transform .36s var(--ease-soft), opacity .24s ease, visibility 0s;overflow-x:hidden}.teacher-frame{transition:var(--palette-transition), margin-left .36s var(--ease-soft);position:relative}.sidebar-collapsed .teacher-sidebar{opacity:0;visibility:hidden;transition:var(--palette-transition), transform .36s var(--ease-soft), opacity .24s ease, visibility 0s .36s;transform:translate(-24px)}}.teacher-content-inner>:not(dialog):not(.scanner-overlay),.teacher-editor,.attendance-actions .action-block,.teacher-ui .feedback,.teacher-ui .filter-error,.teacher-ui .toast,.teacher-ui .empty-state,.teacher-ui .history-desktop-table,.teacher-ui .history-mobile-list,.teacher-ui .scanner-dialog{animation:soft-reveal .28s var(--ease-soft)}.teacher-ui dialog[open]{animation:dialog-in .26s var(--ease-soft)}.teacher-ui dialog[open]::backdrop,.scanner-overlay{animation:.24s fade-in}.teacher-ui dialog[data-closing=true]{animation:.18s forwards dialog-out}.teacher-ui dialog[data-closing=true]::backdrop,.scanner-overlay[data-closing=true]{animation:.18s forwards fade-out}.teacher-editor[data-closing=true],.scanner-overlay[data-closing=true] .scanner-dialog{animation:.18s forwards dialog-out}.teacher-ui .teacher-account{opacity:0;transform-origin:100% 0;transition:var(--palette-transition), opacity .18s ease, transform .22s var(--ease-soft), display .22s allow-discrete, overlay .22s allow-discrete;transform:translateY(-6px)scale(.98)}.teacher-ui .teacher-account:popover-open{opacity:1;transform:none}@starting-style{.teacher-ui .teacher-account:popover-open{opacity:0;transform:translateY(-6px)scale(.98)}}@keyframes soft-reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes dialog-in{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:none}}@keyframes dialog-out{to{opacity:0;transform:translateY(8px)scale(.98)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{to{opacity:0}}@media (width<=900px){.teacher-ui .history-dialog[open]{animation-name:sheet-in}.teacher-ui .history-dialog[data-closing=true]{animation-name:sheet-out}}@keyframes sheet-in{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}@keyframes sheet-out{to{opacity:0;transform:translateY(24px)}}@media (prefers-reduced-motion:reduce){:root[data-theme-animated]{transition:none!important}html,body,.teacher-ui,.teacher-ui *,.teacher-ui :before,.teacher-ui :after,.teacher-ui dialog::backdrop{scroll-behavior:auto!important;transition:none!important;animation:none!important}.teacher-ui button:active:enabled{scale:1}}
