:root{--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--u:1px;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);--brand-blue-deep:#00659d;--scrim-blue:linear-gradient(135deg, #00659de6, #00659df5)}@font-face{font-family:InterVariable;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/InterVariable.woff2)format("woff2")}@supports (font-variation-settings:normal){:root{--font-sans:InterVariable, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}}html{font-optical-sizing:auto}@media (width<=640px){:root{--u:clamp(.9px, calc(.442857px + .142857vw), 1.05714px)}}:root{color-scheme:light;--brand-blue:#006ead;--brand-blue-strong:#00588d;--brand-sky:#1688e6;--brand-green:#74b82d;--brand-orange:#f28c13;--brand-ink:#123247;--text:#1f2933;--muted:#6b7680;--line:#dce7ee;--surface:#fff;--surface-soft:#f4f8fb;--surface-blue:#eaf8ff;--shadow-soft:0 18px 44px #12324721;--shadow-card:0 12px 26px #1232471a;--radius-sm:8px;--radius-md:calc(14 * var(--u));--radius-lg:calc(22 * var(--u));--page-max:1180px;font-family:var(--font-sans)}*{box-sizing:border-box}html{background:var(--page-surface,var(--surface-soft));min-width:320px}html[data-surface=login],html[data-surface=home],html[data-surface=dashboard],html[data-surface=scanner]{--page-surface:var(--brand-blue-deep)}@media (width<=640px){html[data-surface=scanner]{--page-surface:#00659d}}body{color:var(--text);background:radial-gradient(circle at top left, #006ead14, transparent 34rem), var(--surface-soft);margin:0}body,button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{cursor:pointer}.page-shell{min-height:100svh}.protected-content{visibility:hidden}html[data-auth=allowed] .protected-content{visibility:visible}.content-wrap{width:min(100% - 32px, var(--page-max));margin-inline:auto}.brand-lockup{align-items:center;gap:calc(10 * var(--u));font-weight:var(--fw-bold);color:inherit;white-space:nowrap;display:inline-flex}.brand-mark{width:calc(38 * var(--u));height:calc(38 * var(--u));flex:none;position:relative}.brand-mark:before,.brand-mark:after,.brand-mark span{content:"";transform-origin:bottom;border-radius:80% 18%;position:absolute}.brand-mark:before{inset:calc(5 * var(--u)) calc(17 * var(--u)) calc(7 * var(--u)) calc(4 * var(--u));background:var(--brand-green);transform:rotate(-13deg)}.brand-mark:after{inset:calc(3 * var(--u)) calc(4 * var(--u)) calc(6 * var(--u)) calc(18 * var(--u));background:var(--brand-blue);transform:rotate(13deg)}.brand-mark span{inset:0 calc(23 * var(--u)) calc(22 * var(--u)) calc(5 * var(--u));background:var(--brand-orange);border-radius:8px 2px 3px 1px;transform:rotate(-3deg)}.app-nav-shell{z-index:15;backdrop-filter:blur(18px);background:#ffffffeb;border-bottom:1px solid #dce7eedb;top:0}.app-nav{align-items:center;gap:calc(16 * var(--u));min-height:calc(78 * var(--u));padding:calc(12 * var(--u)) 0;grid-template-columns:auto minmax(220px,320px) auto minmax(170px,1fr);display:grid}.app-nav-brand{align-items:center;gap:calc(14 * var(--u));min-width:0;display:inline-flex}.app-nav-brand .brand-lockup{color:var(--brand-blue-strong)}.app-nav-links{gap:calc(8 * var(--u));padding:calc(6 * var(--u));border:1px solid var(--line);background:#edf6fb;border-radius:999px;grid-template-columns:repeat(3,minmax(112px,1fr));display:grid}.app-nav-link{justify-content:center;align-items:center;gap:calc(8 * var(--u));min-height:calc(42 * var(--u));padding:calc(9 * var(--u)) calc(14 * var(--u));color:#3f5260;font-weight:var(--fw-bold);white-space:nowrap;border-radius:999px;display:inline-flex}.app-nav-link.active{color:#fff;background:linear-gradient(135deg, var(--brand-blue), var(--brand-sky));box-shadow:0 9px 22px #006ead38}.campus-selector{gap:calc(5 * var(--u));min-width:0;display:grid}.campus-selector-label{color:#637280;font-size:.72rem;font-weight:var(--fw-bold);text-transform:uppercase}.campus-select{width:100%;min-height:calc(38 * var(--u));padding:0 calc(12 * var(--u));border:1px solid var(--line);color:var(--brand-ink);font-size:.9rem;font-weight:var(--fw-bold);background:#fff;border-radius:999px}.campus-region{color:#647481;font-size:.78rem;font-weight:var(--fw-bold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session-menu{justify-self:end;align-items:center;gap:calc(10 * var(--u));min-width:0;padding:calc(7 * var(--u)) calc(8 * var(--u)) calc(7 * var(--u)) calc(7 * var(--u));border:1px solid var(--line);background:#fff;border-radius:999px;display:inline-flex}.session-avatar{width:calc(34 * var(--u));height:calc(34 * var(--u));color:#fff;background:var(--brand-blue);font-size:.82rem;font-weight:var(--fw-bold);border-radius:50%;flex:none;place-items:center;display:grid}.session-name{color:#354856;max-width:132px;font-size:.9rem;font-weight:var(--fw-bold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session-logout{min-height:calc(32 * var(--u));padding:calc(5 * var(--u)) calc(10 * var(--u));color:#5b6771;font-size:.84rem;font-weight:var(--fw-bold);background:#f1f5f8;border:0;border-radius:999px}.primary-button,.secondary-button,.ghost-button{justify-content:center;align-items:center;gap:calc(10 * var(--u));min-height:calc(54 * var(--u));width:100%;padding:calc(12 * var(--u)) calc(22 * var(--u));border-radius:var(--radius-md);font-weight:var(--fw-bold);text-align:center;border:0;display:inline-flex}.primary-button{color:#fff;background:linear-gradient(135deg,#006ead,#1c91ed);box-shadow:0 14px 24px #006ead3d}.secondary-button{color:#fff;background:var(--brand-green)}.ghost-button{color:#4b5964;border:1px solid var(--line);background:#fff}.login-page{min-height:100svh;padding-top:calc(32 * var(--u) + var(--sat));padding-right:calc(20 * var(--u) + var(--sar));padding-bottom:calc(32 * var(--u) + var(--sab));padding-left:calc(20 * var(--u) + var(--sal));background:var(--brand-blue-deep);place-items:center;display:grid;position:relative;overflow:hidden}.login-bg{z-index:0;filter:blur(7px);background-image:url(/images/login-bg.webp);background-position:50%;background-size:cover;position:absolute;inset:0;transform:scale(1.08)}.login-scrim{z-index:1;background:var(--scrim-blue);position:absolute;inset:0}.login-card{z-index:2;width:min(100%,400px);padding:calc(40 * var(--u)) calc(36 * var(--u));text-align:center;border-radius:calc(20 * var(--u));background:#fff;justify-items:center;display:grid;position:relative;box-shadow:0 20px 48px #00283f47}.login-card:has(.loading-overlay){box-shadow:none;background:0 0;padding:0}.login-card:has(.loading-overlay) .login-logo,.login-card:has(.loading-overlay) .login-title,.login-card:has(.loading-overlay) .login-subtitle,.login-card:has(.loading-overlay) .login-foot{display:none}.login-logo{height:calc(80 * var(--u));width:auto;margin:0 auto calc(20 * var(--u));display:block}.login-title{margin:0 0 calc(10 * var(--u));color:#12313f;font-size:calc(26 * var(--u));font-weight:var(--fw-bold);line-height:1.2}.login-subtitle{max-width:300px;margin:0 auto calc(30 * var(--u));color:#757679;font-size:calc(14 * var(--u));font-weight:var(--fw-regular);line-height:1.45}.login-foot{margin:calc(22 * var(--u)) 0 0;color:#a6a6a8;font-size:calc(12 * var(--u));line-height:1.5}.gbtn{justify-content:center;align-items:center;gap:calc(12 * var(--u));box-sizing:border-box;width:100%;padding:calc(14 * var(--u)) calc(20 * var(--u));color:#3c4043;font-size:calc(15 * var(--u));font-weight:var(--fw-semibold);background:#fff;border:1px solid #dadce0;border-radius:999px;transition:background .15s,box-shadow .15s;display:flex}.gbtn:hover{background:#f7f8f8;box-shadow:0 1px 3px #00283f24}.auth-stack{justify-items:center;gap:calc(14 * var(--u));width:100%;display:grid}.auth-user,.auth-error,.auth-notice{font-weight:var(--fw-bold);margin:0}.auth-user{color:var(--brand-blue-strong)}.auth-user:after{content:""}.auth-error{color:#b42318}.auth-notice{width:100%;padding:calc(12 * var(--u)) calc(14 * var(--u));border-radius:var(--radius-sm);color:#7a4300;background:#fff6e8;border:1px solid #ffd9a8}@media (width>=641px) and (width<=1024px){.login-card{width:min(100%,440px);padding:calc(44 * var(--u)) calc(40 * var(--u))}}@media (width<=640px){.login-card{width:100%;padding:calc(32 * var(--u)) calc(24 * var(--u))}.login-title{font-size:calc(22 * var(--u))}}.loading-overlay{z-index:1000;padding-top:calc(24 * var(--u) + var(--sat));padding-right:calc(24 * var(--u) + var(--sar));padding-bottom:calc(24 * var(--u) + var(--sab));padding-left:calc(24 * var(--u) + var(--sal));backdrop-filter:blur(10px);pointer-events:auto;background:#f4f8fbd1;place-items:center;display:grid;position:fixed;inset:0}.loading-panel{justify-items:center;gap:calc(12 * var(--u));width:min(100%,360px);padding:calc(26 * var(--u)) calc(22 * var(--u));border:1px solid var(--line);border-radius:var(--radius-lg);color:var(--brand-ink);box-shadow:var(--shadow-soft);text-align:center;background:#fffffffa;display:grid}.loading-panel strong{font-size:1.08rem;font-weight:var(--fw-bold)}.loading-panel span:last-child{color:var(--muted);font-size:.94rem;font-weight:var(--fw-bold)}.loading-spinner{width:calc(44 * var(--u));height:calc(44 * var(--u));border:4px solid #dceaf2;border-top-color:var(--brand-blue);border-radius:50%;animation:.82s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-home{padding:calc(36 * var(--u)) 0 calc(56 * var(--u))}.app-home-hero{gap:calc(10 * var(--u));margin-bottom:calc(22 * var(--u));display:grid}.app-home-hero .brand-lockup{color:var(--brand-blue-strong)}.app-home-hero h1{color:var(--brand-ink);margin:0;font-size:clamp(1.8rem,5vw,3rem);line-height:1.05}.app-home-hero p{color:var(--muted);font-weight:var(--fw-bold);margin:0}.operation-grid{gap:calc(16 * var(--u));grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.operation-card{align-items:flex-start;gap:calc(16 * var(--u));min-height:calc(150 * var(--u));padding:calc(22 * var(--u));border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);background:#fff;display:flex}.operation-card strong{margin-bottom:calc(8 * var(--u));color:var(--brand-ink);font-size:1.18rem;display:block}.operation-card small{color:#5f6f7a;font-size:.95rem;font-weight:var(--fw-bold);line-height:1.35;display:block}.operation-icon{width:calc(52 * var(--u));height:calc(52 * var(--u));border-radius:var(--radius-md);color:#fff;flex:none;place-items:center;display:grid}.operation-icon.blue{background:var(--brand-blue)}.operation-icon.green{background:var(--brand-green)}.operation-icon.orange{background:var(--brand-orange)}@media (width<=980px){.app-nav{grid-template-columns:1fr;justify-items:stretch}.app-nav-brand,.campus-selector,.session-menu{justify-self:center}.campus-selector{width:min(100%,560px)}.app-nav-links{justify-self:center;width:min(100%,560px)}.operation-grid{grid-template-columns:1fr}}@media (width<=760px){.content-wrap{width:min(100% - 24px, var(--page-max))}.app-nav{gap:calc(10 * var(--u));min-height:auto}.session-name{display:none}.app-nav-links{border-radius:calc(18 * var(--u));grid-template-columns:repeat(3,minmax(0,1fr))}.app-nav-link{min-height:calc(48 * var(--u));padding-inline:calc(9 * var(--u));border-radius:calc(14 * var(--u));font-size:.9rem}.manual-form{grid-template-columns:1fr}.manual-form .primary-button{width:100%}}
