:root{--brand-primary:#0861ac;--brand-secondary:#08aca3;--brand-bg:#0a1628;--brand-bg-accent:#12263f;--brand-text:#f4f7fb;--font-display:"Archivo", system-ui, sans-serif;--font-body:"Sora", system-ui, sans-serif;--danger:#e85d4c;--ok:#3ecf8e;--radius:clamp(.5rem, 1.2vmin, 1.25rem);--pad:clamp(1.25rem, 4vmin, 4rem)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}body{font-family:var(--font-body);color:var(--brand-text);background:var(--brand-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}button,input{font:inherit}a{color:var(--brand-secondary)}.tv-boot,.tv-error{min-height:100%;padding:var(--pad);text-align:center;background:radial-gradient(ellipse 80% 60% at 50% 0%, color-mix(in srgb, var(--brand-primary) 35%, transparent), transparent), var(--brand-bg);place-content:center;gap:.75rem;display:grid}.tv-error h1,.tv-boot p{font-family:var(--font-display);margin:0}.tv-error-hint{opacity:.7;font-size:clamp(.9rem,2vmin,1.25rem)}.tenant-list{flex-wrap:wrap;justify-content:center;gap:1rem;margin:1rem 0;padding:0;list-style:none;display:flex}.tenant-list a{border:1px solid color-mix(in srgb, var(--brand-text) 25%, transparent);border-radius:var(--radius);padding:.75rem 1.25rem;font-size:clamp(1.1rem,2.5vmin,1.6rem);text-decoration:none}.login-page{min-height:100%;padding:var(--pad);background:linear-gradient(145deg, color-mix(in srgb, var(--brand-primary) 28%, transparent), transparent 55%), linear-gradient(320deg, color-mix(in srgb, var(--brand-secondary) 18%, transparent), transparent 50%), var(--brand-bg);place-items:center;display:grid}.login-panel{border-radius:calc(var(--radius) * 1.4);background:color-mix(in srgb, var(--brand-bg-accent) 88%, black);border:1px solid color-mix(in srgb, var(--brand-text) 12%, transparent);width:min(36rem,100%);padding:clamp(1.5rem,4vmin,3rem)}.login-logo{object-fit:contain;width:auto;height:clamp(3rem,8vmin,5rem);margin-bottom:1.25rem;display:block}.login-eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--brand-secondary);margin:0;font-size:clamp(.75rem,1.6vmin,.95rem)}.login-title{font-family:var(--font-display);margin:.35rem 0 .5rem;font-size:clamp(1.75rem,4.5vmin,2.75rem);font-weight:700;line-height:1.1}.login-sub{opacity:.75;margin:0 0 1.75rem;font-size:clamp(.95rem,2vmin,1.15rem)}.login-form{gap:.65rem;display:grid}.login-label{opacity:.85;font-size:clamp(.95rem,2vmin,1.1rem)}.login-input{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--brand-text) 22%, transparent);background:color-mix(in srgb, var(--brand-bg) 70%, black);width:100%;min-height:clamp(3rem,7vmin,4rem);color:var(--brand-text);outline:none;padding:.75rem 1rem}.login-input--password{padding-right:clamp(3.25rem,8vmin,4.25rem)}.login-password-wrap{display:grid;position:relative}.login-eye{border-radius:calc(var(--radius) * .8);min-width:clamp(2.75rem,6.5vmin,3.5rem);min-height:clamp(2.75rem,6.5vmin,3.5rem);color:color-mix(in srgb, var(--brand-text) 75%, transparent);cursor:pointer;background:0 0;border:0;place-items:center;display:grid;position:absolute;top:50%;right:.35rem;transform:translateY(-50%)}.login-eye:hover,.login-eye:focus-visible{color:var(--brand-secondary);outline:2px solid color-mix(in srgb, var(--brand-secondary) 50%, transparent);outline-offset:1px}.login-input:focus{border-color:var(--brand-secondary);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand-secondary) 35%, transparent)}.login-error{color:#ffb4a8;margin:.25rem 0 0;font-size:clamp(.95rem,2vmin,1.1rem)}.login-submit{border-radius:var(--radius);background:var(--brand-primary);color:#fff;cursor:pointer;border:0;min-height:clamp(3.25rem,7.5vmin,4.25rem);margin-top:.85rem;font-size:clamp(1.05rem,2.4vmin,1.35rem);font-weight:600}.login-submit:disabled{opacity:.65;cursor:wait}.login-submit:focus-visible{outline:3px solid var(--brand-secondary);outline-offset:3px}.display-root{background:var(--brand-bg);height:100%;min-height:100%;position:relative;overflow:hidden}.display-root>.idle-screen,.display-root>.mosaic-board{padding-top:clamp(4rem,9vmin,5.5rem)}.tv-banner-error{z-index:5;background:color-mix(in srgb, var(--danger) 85%, black);text-align:center;padding:.75rem 1rem;font-size:clamp(.85rem,1.8vmin,1.1rem);position:absolute;top:0;left:0;right:0}.display-toolbar{z-index:6;padding:clamp(.75rem, 2vmin, 1.25rem) var(--pad);pointer-events:none;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:absolute;top:0;left:0;right:0}.display-tenant{opacity:.55;letter-spacing:.04em;font-size:clamp(.85rem,1.8vmin,1.1rem)}.display-menu{pointer-events:auto;z-index:8;position:relative}.menu-toggle{border:1px solid color-mix(in srgb, var(--brand-text) 28%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--brand-bg-accent) 92%, black);width:clamp(2.75rem,6.5vmin,3.5rem);height:clamp(2.75rem,6.5vmin,3.5rem);color:var(--brand-text);cursor:pointer;place-items:center;display:grid}.menu-toggle:hover,.menu-toggle:focus-visible,.menu-toggle.is-open{border-color:var(--brand-secondary);outline:3px solid color-mix(in srgb, var(--brand-secondary) 45%, transparent);outline-offset:2px}.menu-toggle-bars{gap:.32rem;width:1.2rem;display:grid}.menu-toggle-bars span{background:currentColor;border-radius:2px;height:2px;transition:transform .16s,opacity .16s;display:block}.menu-toggle.is-open .menu-toggle-bars span:first-child{transform:translateY(.4rem)rotate(45deg)}.menu-toggle.is-open .menu-toggle-bars span:nth-child(2){opacity:0}.menu-toggle.is-open .menu-toggle-bars span:nth-child(3){transform:translateY(-.4rem)rotate(-45deg)}.menu-backdrop{cursor:default;z-index:7;background:0 0;border:0;margin:0;padding:0;position:fixed;inset:0}.menu-panel{z-index:9;border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--brand-text) 18%, transparent);background:color-mix(in srgb, var(--brand-bg-accent) 96%, black);min-width:clamp(12rem,28vmin,16rem);padding:.4rem;display:grid;position:absolute;top:calc(100% + .45rem);right:0;box-shadow:0 12px 32px #0006}.menu-item{text-align:left;border-radius:calc(var(--radius) * .75);width:100%;min-height:clamp(2.75rem,6vmin,3.25rem);color:var(--brand-text);cursor:pointer;background:0 0;border:0;padding:.65rem .9rem;font-size:clamp(.95rem,2vmin,1.15rem);font-weight:600;display:block}.menu-item:hover,.menu-item:focus-visible{background:color-mix(in srgb, var(--brand-primary) 28%, transparent);outline:none}.menu-item--warn{color:#ffd0c8}.menu-item:disabled{opacity:.55;cursor:wait}.tv-banner-demo{z-index:7;border-radius:var(--radius);background:color-mix(in srgb, var(--brand-secondary) 28%, var(--brand-bg));border:1px solid color-mix(in srgb, var(--brand-secondary) 50%, transparent);align-items:center;gap:.75rem;max-width:min(90vw,42rem);padding:.65rem .85rem;font-size:clamp(.85rem,1.8vmin,1.05rem);display:flex;position:absolute;top:clamp(3.5rem,8vmin,4.75rem);left:50%;transform:translate(-50%)}.tv-banner-dismiss{border-radius:calc(var(--radius) * .7);background:color-mix(in srgb, var(--brand-bg) 70%, black);color:var(--brand-text);cursor:pointer;border:0;flex:none;padding:.35rem .7rem;font-weight:600}.idle-screen{height:100%;min-height:100%;padding:var(--pad);background:radial-gradient(ellipse 70% 55% at 70% 20%, color-mix(in srgb, var(--brand-primary) 40%, transparent), transparent 60%), radial-gradient(ellipse 50% 45% at 15% 80%, color-mix(in srgb, var(--brand-secondary) 28%, transparent), transparent 55%), var(--brand-bg);grid-template-rows:auto 1fr auto;display:grid;position:relative}.idle-glow{background:radial-gradient(circle, color-mix(in srgb, var(--brand-secondary) 18%, transparent), transparent 70%);filter:blur(40px);pointer-events:none;position:absolute;inset:20% 30%}.idle-header{align-items:center;gap:clamp(.75rem,2vmin,1.5rem);display:flex;position:relative}.idle-logo{object-fit:contain;width:auto;height:clamp(3.5rem,9vmin,6rem)}.idle-brand{letter-spacing:.18em;text-transform:uppercase;color:var(--brand-secondary);margin:0;font-size:clamp(.7rem,1.5vmin,.95rem)}.idle-school{font-family:var(--font-display);margin:.2rem 0 0;font-size:clamp(1.4rem,3.8vmin,2.6rem);font-weight:700}.idle-center{text-align:center;place-content:center;gap:.5rem;animation:4.5s ease-in-out infinite idlePulse;display:grid;position:relative}.idle-message{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:clamp(1.6rem,5.5vmin,3.75rem);font-weight:600}.idle-clock{font-variant-numeric:tabular-nums;color:var(--brand-secondary);margin:1rem 0 0;font-size:clamp(2.5rem,9vmin,6rem);font-weight:600}.idle-date{text-transform:capitalize;opacity:.85;font-family:var(--font-display);letter-spacing:-.01em;margin:.35rem 0 0;font-size:clamp(1.6rem,4.8vmin,3.25rem);font-weight:600}.idle-footer{opacity:.65;justify-content:space-between;gap:1rem;font-size:clamp(.85rem,1.8vmin,1.15rem);display:flex;position:relative}@keyframes idlePulse{0%,to{opacity:.92;transform:translateY(0)}50%{opacity:1;transform:translateY(-.4vmin)}}.mosaic-board{height:100%;min-height:100%;padding:var(--pad);background:radial-gradient(ellipse 60% 40% at 80% 0%, color-mix(in srgb, var(--brand-primary) 22%, transparent), transparent 55%), var(--brand-bg);grid-template-rows:1fr auto;gap:clamp(.5rem,1.5vmin,1rem);padding-bottom:clamp(.75rem,2vmin,1.25rem);display:grid}.mosaic-grid{grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(.65rem,1.6vmin,1.15rem);min-height:0;animation:.32s both mosaicIn;display:grid}.student-tile{border-radius:calc(var(--radius) * 1.1);border:1px solid color-mix(in srgb, var(--brand-text) 12%, transparent);background:color-mix(in srgb, var(--brand-bg-accent) 88%, black);grid-template-columns:minmax(4.5rem,32%) minmax(0,1fr);align-items:center;gap:clamp(.55rem,1.4vmin,1rem);min-height:0;padding:clamp(.55rem,1.4vmin,1rem);display:grid;overflow:hidden}.student-tile--salida{background:linear-gradient(135deg, color-mix(in srgb, #4a1d24 45%, var(--brand-bg-accent)), color-mix(in srgb, var(--brand-bg-accent) 88%, black))}.student-tile-photo-wrap{min-width:0;height:100%;min-height:0}.student-tile-photo{aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius);background:color-mix(in srgb, var(--brand-bg) 70%, black);width:100%;height:100%;max-height:100%}.student-tile-photo--fallback{font-family:var(--font-display);color:var(--brand-secondary);place-items:center;font-size:clamp(1.4rem,4vmin,2.4rem);font-weight:700;display:grid}.student-tile-meta{flex-direction:column;gap:.35rem;min-width:0;display:flex}.student-badge{letter-spacing:.02em;border-radius:999px;align-self:start;padding:.3rem .65rem;font-size:clamp(.7rem,1.5vmin,.95rem);font-weight:600;display:inline-flex}.student-badge.is-in{background:color-mix(in srgb, var(--ok) 28%, transparent);color:#b8ffe0}.student-badge.is-out{background:color-mix(in srgb, var(--danger) 32%, transparent);color:#ffd0c8}.student-tile-name{font-family:var(--font-display);letter-spacing:-.02em;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:clamp(.95rem,2.4vmin,1.55rem);font-weight:700;line-height:1.15;display:-webkit-box;overflow:hidden}.student-tile-detail{opacity:.75;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:clamp(.8rem,1.8vmin,1.1rem);overflow:hidden}.student-tile-sep{opacity:.5;margin:0 .35em}.queue-rail{align-items:center;gap:clamp(.65rem,1.5vmin,1.1rem);min-height:clamp(2.5rem,5.5vmin,3.25rem);padding:.45rem .15rem 0;display:flex;overflow:hidden}.queue-rail-count{color:var(--brand-secondary);flex:none;font-size:clamp(.85rem,1.8vmin,1.1rem);font-weight:600}.queue-rail-chips{flex-wrap:nowrap;gap:.45rem;min-width:0;display:flex;overflow:hidden}.queue-chip{border:1px solid color-mix(in srgb, var(--brand-text) 18%, transparent);background:color-mix(in srgb, var(--brand-bg-accent) 70%, black);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;flex:none;max-width:12rem;padding:.35rem .7rem;font-size:clamp(.75rem,1.6vmin,.95rem);overflow:hidden}.queue-chip--more{opacity:.7}@keyframes mosaicIn{0%{opacity:0;transform:translateY(1vmin)}to{opacity:1;transform:none}}@media (width<=900px){.mosaic-grid{grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr))}}@media (aspect-ratio<=4/5){.mosaic-grid{grid-template-rows:repeat(6,minmax(0,1fr));grid-template-columns:1fr}.student-tile{grid-template-columns:minmax(3.5rem,28%) minmax(0,1fr)}}
