: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:14px;--radius-lg:22px;--page-max:1180px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--surface-soft);min-width:320px}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{color:inherit;white-space:nowrap;align-items:center;gap:10px;font-weight:750;display:inline-flex}.brand-mark{flex:none;width:38px;height:38px;position:relative}.brand-mark:before,.brand-mark:after,.brand-mark span{content:"";transform-origin:bottom;border-radius:80% 18%;position:absolute}.brand-mark:before{background:var(--brand-green);inset:5px 17px 7px 4px;transform:rotate(-13deg)}.brand-mark:after{background:var(--brand-blue);inset:3px 4px 6px 18px;transform:rotate(13deg)}.brand-mark span{background:var(--brand-orange);border-radius:8px 2px 3px 1px;inset:0 23px 22px 5px;transform:rotate(-3deg)}.app-nav-shell{z-index:15;backdrop-filter:blur(18px);background:#ffffffeb;border-bottom:1px solid #dce7eedb;top:0}.app-nav{grid-template-columns:auto minmax(220px,320px) auto minmax(170px,1fr);align-items:center;gap:16px;min-height:78px;padding:12px 0;display:grid}.app-nav-brand{align-items:center;gap:14px;min-width:0;display:inline-flex}.app-nav-brand .brand-lockup{color:var(--brand-blue-strong)}.app-nav-links{border:1px solid var(--line);background:#edf6fb;border-radius:999px;grid-template-columns:repeat(3,minmax(112px,1fr));gap:8px;padding:6px;display:grid}.app-nav-link{color:#3f5260;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:9px 14px;font-weight:850;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:5px;min-width:0;display:grid}.campus-selector-label{color:#637280;text-transform:uppercase;font-size:.72rem;font-weight:920}.campus-select{border:1px solid var(--line);width:100%;min-height:38px;color:var(--brand-ink);background:#fff;border-radius:999px;padding:0 12px;font-size:.9rem;font-weight:850}.campus-region{color:#647481;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;font-weight:780;overflow:hidden}.session-menu{border:1px solid var(--line);background:#fff;border-radius:999px;justify-self:end;align-items:center;gap:10px;min-width:0;padding:7px 8px 7px 7px;display:inline-flex}.session-avatar{color:#fff;background:var(--brand-blue);border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:.82rem;font-weight:950;display:grid}.session-name{color:#354856;text-overflow:ellipsis;white-space:nowrap;max-width:132px;font-size:.9rem;font-weight:820;overflow:hidden}.session-logout{color:#5b6771;background:#f1f5f8;border:0;border-radius:999px;min-height:32px;padding:5px 10px;font-size:.84rem;font-weight:850}.primary-button,.secondary-button,.ghost-button{border-radius:var(--radius-md);text-align:center;border:0;justify-content:center;align-items:center;gap:10px;width:100%;min-height:54px;padding:12px 22px;font-weight:820;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{background:#00385a;place-items:center;min-height:100svh;padding:32px 20px;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:linear-gradient(135deg,#00659d9e,#003d5cb8);position:absolute;inset:0}.login-card{z-index:2;text-align:center;background:#fff;border-radius:20px;justify-items:center;width:min(100%,400px);padding:40px 36px;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{width:auto;height:80px;margin:0 auto 20px;display:block}.login-title{color:#12313f;margin:0 0 10px;font-size:26px;font-weight:700;line-height:1.2}.login-subtitle{color:#757679;max-width:300px;margin:0 auto 30px;font-size:14px;font-weight:400;line-height:1.45}.login-foot{color:#a6a6a8;margin:22px 0 0;font-size:12px;line-height:1.5}.gbtn{box-sizing:border-box;color:#3c4043;background:#fff;border:1px solid #dadce0;border-radius:999px;justify-content:center;align-items:center;gap:12px;width:100%;padding:14px 20px;font-size:15px;font-weight:600;transition:background .15s,box-shadow .15s;display:flex}.gbtn:hover{background:#f7f8f8;box-shadow:0 1px 3px #00283f24}.auth-stack{justify-items:center;gap:14px;width:100%;display:grid}.auth-user,.auth-error,.auth-notice{margin:0;font-weight:760}.auth-user{color:var(--brand-blue-strong)}.auth-user:after{content:""}.auth-error{color:#b42318}.auth-notice{border-radius:var(--radius-sm);color:#7a4300;background:#fff6e8;border:1px solid #ffd9a8;width:100%;padding:12px 14px}@media (width>=641px) and (width<=1024px){.login-card{width:min(100%,440px);padding:44px 40px}}@media (width<=640px){.login-card{width:100%;padding:32px 24px}.login-title{font-size:22px}}.loading-overlay{z-index:1000;backdrop-filter:blur(10px);pointer-events:auto;background:#f4f8fbd1;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.loading-panel{border:1px solid var(--line);border-radius:var(--radius-lg);width:min(100%,360px);color:var(--brand-ink);box-shadow:var(--shadow-soft);text-align:center;background:#fffffffa;justify-items:center;gap:12px;padding:26px 22px;display:grid}.loading-panel strong{font-size:1.08rem;font-weight:820}.loading-panel span:last-child{color:var(--muted);font-size:.94rem;font-weight:720}.loading-spinner{border:4px solid #dceaf2;border-top-color:var(--brand-blue);border-radius:50%;width:44px;height:44px;animation:.82s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.app-topbar{padding:22px 0 16px}.route-nav{justify-content:center;gap:10px;padding:16px;display:flex}.route-nav a{color:#315061;border:1px solid var(--line);background:#fff;border-radius:999px;padding:10px 14px;font-weight:800}.home-page{place-items:center;min-height:100svh;padding:24px;display:grid}.home-card{text-align:center;border-radius:var(--radius-lg);width:min(100%,520px);box-shadow:var(--shadow-soft);background:#fff;gap:20px;padding:30px;display:grid}.home-card h1{color:var(--brand-ink);margin:0}.home-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.app-home{padding:36px 0 56px}.app-home-hero{gap:10px;margin-bottom:22px;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);margin:0;font-weight:820}.operation-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.operation-card{border:1px solid var(--line);border-radius:var(--radius-lg);min-height:150px;box-shadow:var(--shadow-card);background:#fff;align-items:flex-start;gap:16px;padding:22px;display:flex}.operation-card strong{color:var(--brand-ink);margin-bottom:8px;font-size:1.18rem;display:block}.operation-card small{color:#5f6f7a;font-size:.95rem;font-weight:700;line-height:1.35;display:block}.operation-icon{border-radius:var(--radius-md);color:#fff;flex:none;place-items:center;width:52px;height:52px;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)}.metrics-grid,.grade-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.operation-grid{grid-template-columns:1fr}.action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.content-wrap{width:min(100% - 24px, var(--page-max))}.scanner-wrap{width:min(100% - 24px,640px)}.scanner-hero{padding:28px 0 22px}.app-nav{gap:10px;min-height:auto}.session-name{display:none}.app-nav-links{border-radius:18px;grid-template-columns:repeat(3,minmax(0,1fr))}.app-nav-link{border-radius:14px;min-height:48px;padding-inline:9px;font-size:.9rem}.scanner-title{max-width:360px}.notice-card{gap:16px;min-height:104px;padding:20px}.notice-icon{width:48px;height:48px}.manual-form{grid-template-columns:1fr}.camera-square{width:min(100%,360px)}.manual-form .primary-button{width:100%}.dashboard-mast{flex-direction:column;align-items:flex-start;padding:20px}.filter-grid,.metrics-grid,.grade-grid{grid-template-columns:1fr}.section-title{flex-direction:column;align-items:flex-start}.metric-card{min-height:112px}.grade-section{padding:16px}.home-links{grid-template-columns:1fr}}@media (width<=460px){.scanner-main{padding-top:22px}.scanner-hero .brand-lockup{font-size:1.05rem}.scanner-hero .brand-mark{width:32px;height:32px}.mode-panel,.manual-summary,.pass-header,.pass-option{padding-inline:18px}.toggle-label,.manual-title,.pass-option{font-size:1rem}.pass-header{font-size:1.1rem}.action-grid{grid-template-columns:1fr}.camera-workbench{padding:14px}.camera-toolbar{flex-direction:column;align-items:flex-start}.camera-status{align-self:flex-start}.metric-card{padding:18px}.metric-icon{width:46px;height:46px}}
