:root{--navy:#0b162b;--navy2:#142440;--gold:#c9a364;--gold2:#e1c48c;--ink:#17233a;--muted:#7a8496;--line:#e5e9f0;--bg:#f6f8fb;--white:#fff;--green:#14744c;--red:#a02f40}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 'DM Sans',system-ui,-apple-system,sans-serif}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.18}h1,h2{font-family:'Playfair Display',Georgia,serif}h1{font-size:clamp(2.15rem,5vw,3.45rem);letter-spacing:-.03em}h2{font-size:clamp(1.45rem,3vw,2rem)}.muted{color:var(--muted)}.small,.hint{font-size:.83rem}.hint{color:#788394;text-align:center;margin:16px auto 0;max-width:490px}.eyebrow{display:inline-block;color:#997742;letter-spacing:.16em;font-size:.71rem;font-weight:700;text-transform:uppercase}.site-header{height:78px;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100% - 1170px)/2));border-bottom:1px solid var(--line);gap:12px}.brand{display:inline-flex;align-items:center;gap:12px;font-weight:800;letter-spacing:.13em;line-height:1.1;font-size:1.1rem;color:var(--navy)}.brand-icon{width:41px;height:41px;border-radius:50%;background:var(--navy);color:var(--gold);display:grid;place-items:center;font-size:1.65rem}.brand small{display:block;font-size:.49rem;letter-spacing:.22em;color:#8590a2;margin-top:7px}.gold{color:#aa8248}.site-header nav{display:flex;align-items:center;gap:20px;font-size:.85rem;font-weight:700}.nav-cta{background:var(--navy);color:#fff;padding:9px 16px;border-radius:6px}.inline{display:inline}.link-button{border:0;background:none;color:inherit;padding:0;font-weight:700}.container{max-width:1170px;margin:0 auto;padding:54px 20px 80px}.narrow{max-width:770px}.centered{text-align:center}.page-heading{margin-bottom:30px}.page-heading h1{margin:8px 0 10px}.page-heading p{color:var(--muted);margin-bottom:0}.split,.panel-head{display:flex;justify-content:space-between;gap:20px;align-items:center}.panel{border:1px solid #e5eaf1;border-radius:15px;background:#fff;box-shadow:0 6px 28px rgba(23,40,65,.035)}.padding-lg{padding:30px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:15px;min-height:48px;padding:12px 23px;border-radius:7px;border:1px solid transparent;font-weight:700;font-size:.88rem;text-align:center;transition:transform .12s,background .12s}.btn:active{transform:scale(.98)}.btn.primary{background:var(--navy);color:#fff}.btn.primary:hover{background:#223554}.btn.outline{border-color:#8c98a9;color:#fff}.btn.subtle{background:#edf1f5;color:#22324c}.btn.full{width:100%;justify-content:space-between}.auth-wrap{min-height:calc(100vh - 155px);display:grid;place-items:center;padding:30px 20px}.auth-card{width:min(100%,465px);padding:37px}.auth-card h1{margin:12px 0;font-size:2.35rem}.auth-card .muted{margin-bottom:26px}.auth-alt{text-align:center;margin:22px 0 0;color:var(--muted);font-size:.86rem}.auth-alt a{color:#94703a;font-weight:700}label{display:block;font-weight:700;font-size:.85rem;margin:0 0 20px}input:not([type=file]){display:block;width:100%;border:1px solid #dce2e9;border-radius:7px;padding:12px 13px;margin-top:7px;background:#fff;color:#19253b;outline:none;min-height:47px}input:focus{border-color:#ba9559;box-shadow:0 0 0 3px rgba(201,163,100,.13)}.notice{padding:12px 16px;margin-bottom:21px;border-radius:8px;font-size:.9rem}.notice.error{background:#fff0f2;color:#922f41;border:1px solid #f5ccd4}.notice.success{background:#edfaf3;color:#126b43;border:1px solid #cbeedd}.global-flash{max-width:1120px;margin:20px auto -18px}.hero{background:radial-gradient(circle at 75% 38%,#253753 0%,transparent 45%),linear-gradient(130deg,#081225,#132642);min-height:calc(100vh - 155px);display:grid;grid-template-columns:1fr 1fr;align-items:center;color:#fff;padding:80px max(20px,calc((100% - 1170px)/2));gap:35px;overflow:hidden}.hero .eyebrow{color:var(--gold2)}.hero h1{font-size:clamp(3.3rem,6vw,5.5rem);font-weight:500;line-height:1.13;margin:24px 0}.hero h1 em{color:var(--gold2);font-weight:500}.hero p{max-width:500px;color:#b5c1d0;line-height:1.85}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin:35px 0 56px}.hero-actions .primary{background:var(--gold2);color:var(--navy)}.hero-meta{display:flex;gap:27px;flex-wrap:wrap}.hero-meta div{border-left:1px solid #6c7991;padding-left:15px;display:flex;flex-direction:column}.hero-meta strong{font-family:Georgia,serif;color:var(--gold2);font-size:1.4rem}.hero-meta span{color:#a9b5c8;font-size:.76rem}.hero-deco{min-height:500px;position:relative;display:grid;place-items:center}.big-ring{width:450px;height:450px;border:1px solid #caa66650;border-radius:50%;position:absolute;box-shadow:0 0 0 43px #d1af6f0c,0 0 0 90px #d1af6f0a}.hero-ticket{position:relative;width:285px;height:395px;padding:25px;background:linear-gradient(145deg,#fbf9f4,#e4ddce);color:#162440;border-radius:13px;box-shadow:28px 30px 50px #0005;transform:rotate(8deg);text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:space-between;border:6px solid #fff}.ticket-top,.ticket-bottom{font-size:.65rem;font-weight:800;letter-spacing:.11em;width:100%;display:flex;justify-content:space-between}.ticket-top{border-bottom:1px solid #a8a18e;padding-bottom:15px}.ticket-cap{font-size:5rem}.hero-ticket h3{font:700 1.8rem Georgia,serif;margin:0}.hero-ticket p{color:#676a73;font-size:.7rem}.ticket-bottom{border-top:1px dashed #ae9b7c;padding-top:13px}.form-panel{padding:32px}.section-title{display:flex;align-items:center;gap:15px;margin:8px 0 23px}.section-title:not(:first-of-type){margin-top:36px;border-top:1px solid var(--line);padding-top:30px}.section-title h2{font:700 1.1rem 'DM Sans',sans-serif;margin:0}.number{background:#f4ede0;color:#9a763a;padding:7px 12px;border-radius:7px;font-weight:800}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.photo-picker{border:2px dashed #d9dfe8;border-radius:12px;padding:15px;display:flex;align-items:center;gap:18px;margin-bottom:30px;cursor:pointer}.photo-picker p{font-size:.78rem;color:var(--muted);margin:5px 0}.photo-picker input{max-width:100%;font-size:.76rem;font-weight:400}.photo-placeholder{width:80px;height:90px;flex:none;border-radius:6px;background:#eff2f6;display:grid;place-items:center;font-size:2rem;overflow:hidden}.photo-placeholder img{width:100%;height:100%;object-fit:cover}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0}.dashboard-symbol{font-size:2.5rem;margin-bottom:25px}.dashboard-grid .btn{margin-top:15px}.details{margin:23px 0 0}.details div{display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid #e8ecf2;padding:12px 0}.details dt{color:var(--muted)}.details dd{margin:0;font-weight:700;text-align:right}.status{display:inline-block;font-size:.73rem;font-weight:700;border-radius:50px;padding:5px 11px;white-space:nowrap}.status.success{background:#e1f5e9;color:#137047}.status.pending{background:#fff3df;color:#9b702b}.pass-page{max-width:750px}.pass-shell{max-width:470px;background:#fff;margin:0 auto;border:1px solid #d9dce1;box-shadow:0 20px 55px #25334b20;overflow:hidden}.pass-header{background:var(--navy);color:#fff;padding:21px 23px;display:flex;justify-content:space-between;gap:10px;align-items:center}.pass-university{font-size:.73rem;font-weight:800;letter-spacing:.1em;max-width:280px}.pass-header>span{color:var(--gold2);font-size:.65rem;letter-spacing:.11em;text-align:right;font-weight:800}.pass-title{padding:26px 25px 10px;text-align:center}.pass-title h2{letter-spacing:.1em;font:600 1.8rem 'Playfair Display',serif;margin:5px 0}.pass-title p{font-size:.78rem;color:var(--muted)}.pass-body{display:flex;gap:20px;align-items:center;padding:15px 26px 24px}.student-photo{width:116px;height:140px;object-fit:cover;border:4px solid #f2ece2;border-radius:5px;flex:none}.student-summary{min-width:0}.student-summary h3{font:700 1.25rem 'Playfair Display',serif;margin:8px 0}.student-summary p{font-size:.82rem;color:#536079;margin-bottom:13px;overflow-wrap:anywhere}.id-chip{display:inline-block;padding:5px 9px;color:#715227;background:#f5efdf;font-size:.69rem;font-weight:800;border-radius:4px;overflow-wrap:anywhere}.pass-data{display:grid;grid-template-columns:1fr 1fr;gap:18px 15px;background:#f9fafc;margin:0 23px;padding:20px}.pass-data div{min-width:0;display:flex;flex-direction:column;gap:4px}.pass-data .wide{grid-column:1/-1}.pass-data span{color:#8e98a8;font-size:.59rem;letter-spacing:.1em;font-weight:800}.pass-data strong{font-size:.78rem;overflow-wrap:anywhere}.pass-qr-section{border-top:2px dashed #d7d9de;margin:20px 23px 0;padding:20px 0;display:flex;align-items:center;gap:22px}.qr-white{width:160px;height:160px;display:grid;place-items:center;flex:none}.qr-white img,.qr-white canvas{max-width:100%}.pass-qr-section strong{font-size:.85rem;letter-spacing:.08em}.pass-qr-section p{font-size:.73rem;color:#788294}.pass-qr-section small{font-size:.61rem;color:#aa8248;font-weight:800}.pass-footer{background:var(--navy);color:#e1c48c;padding:13px 20px;text-align:center;display:flex;justify-content:space-between;font-size:.58rem;font-weight:800;letter-spacing:.05em;gap:8px}.pass-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:30px 0 0}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin:28px 0}.stat-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px;display:flex;flex-direction:column}.stat-card span{font-size:.77rem;color:#6e7b8e;font-weight:700}.stat-card strong{font:700 2.3rem 'Playfair Display',serif;color:#182943;margin:12px 0 3px}.stat-card small{font-size:.73rem;color:#8e9aab}.stat-card.highlight{background:var(--navy);border-color:var(--navy)}.stat-card.highlight span,.stat-card.highlight small{color:#a8b6c9}.stat-card.highlight strong{color:var(--gold2)}.panel-head{margin-bottom:20px}.panel-head h2{margin:0;font-size:1.5rem}.panel-head a{color:#a78146;font-weight:700;font-size:.78rem}.progress{background:#e9eef3;height:10px;border-radius:20px;overflow:hidden}.progress>div{height:100%;background:#c6a061;border-radius:20px}.record{padding:14px 0;border-bottom:1px solid #edf0f3;display:flex;justify-content:space-between;align-items:center;gap:12px}.record strong,.record small{display:block}.record small{font-size:.74rem;color:var(--muted)}.record>span{font-size:.76rem;color:#137047;font-weight:700;white-space:nowrap}.tool-links>a{border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:15px 0}.tool-links>a>span{background:#f2ebdf;color:#9d7840;border-radius:9px;padding:9px 13px}.tool-links strong,.tool-links small{display:block}.tool-links small{font-size:.71rem;color:var(--muted)}.tool-links b{margin-left:auto}.search-form{display:flex;gap:12px;margin-bottom:25px}.search-form input{margin:0}.table-scroll{overflow:auto}.data-table{border-collapse:collapse;width:100%;min-width:740px;text-align:left}.data-table th{font-size:.7rem;color:#8490a1;letter-spacing:.08em;padding:14px 12px;background:#f6f8fb}.data-table td{padding:14px 12px;border-bottom:1px solid var(--line);font-size:.82rem}.data-table td small{display:block;color:var(--muted)}.row-student{display:flex;align-items:center;gap:10px}.row-student img{width:42px;height:44px;object-fit:cover;border-radius:5px}.scanner-panel{padding:25px}.scanner-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:20px;font-size:.72rem;font-weight:800;letter-spacing:.07em}#reader{width:100%;overflow:hidden;border-radius:12px;background:#0b162b;min-height:230px;color:#fff}#reader video{width:100%!important;object-fit:cover}#reader button{padding:8px;border:0;border-radius:5px}.scan-result{background:#eff3f9;border:1px solid #dfe5ed;border-radius:9px;padding:15px;text-align:center;margin:18px 0;font-size:.88rem;font-weight:700}.scan-result.success{background:#e2f9ed;border-color:#b5ebce;color:#126b43}.scan-result.warning{background:#fff5df;border-color:#efd8a8;color:#926920}.scan-result.error{background:#ffebef;border-color:#f0cad1;color:#9e2e45}#stop-scan{margin-top:9px}[hidden]{display:none!important}.site-footer{background:#fff;border-top:1px solid var(--line);min-height:76px;padding:20px max(20px,calc((100% - 1170px)/2));display:flex;justify-content:space-between;align-items:center;gap:20px;color:#9a9faa;font-size:.73rem}.site-footer>span:first-child{letter-spacing:.14em;color:#33435d;font-weight:800}@media(max-width:900px){.hero{grid-template-columns:1fr;min-height:auto;padding:75px 26px}.hero-deco{min-height:355px}.big-ring{height:330px;width:330px}.hero-ticket{transform:rotate(5deg) scale(.85)}.stats-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.split{align-items:flex-start}}@media(max-width:600px){body{font-size:14px}.site-header{height:67px;padding:0 15px}.brand{font-size:.87rem;gap:7px}.brand-icon{width:33px;height:33px;font-size:1.3rem}.brand small{font-size:.38rem;letter-spacing:.12em}.site-header nav{gap:10px;font-size:.73rem}.nav-cta{padding:7px 9px}.container{padding:35px 15px 55px}.auth-wrap{padding:30px 13px}.auth-card{padding:27px 22px}.hero{padding:55px 22px 32px}.hero h1{font-size:3.2rem}.hero-meta{gap:14px}.hero-meta div{padding-left:10px}.hero-meta span{font-size:.67rem}.hero-deco{min-height:330px}.form-panel,.padding-lg{padding:20px}.form-grid{grid-template-columns:1fr;gap:0}.photo-picker{gap:11px}.split{flex-direction:column}.page-heading{margin-bottom:21px}.page-heading h1{font-size:2.3rem}.pass-page{padding-left:11px;padding-right:11px}.pass-header{padding:18px}.pass-body{padding:12px 17px 20px;gap:13px}.student-photo{width:105px;height:126px}.student-summary h3{font-size:1.13rem}.pass-data{margin:0 14px;padding:15px;gap:15px 8px}.pass-qr-section{margin:17px 14px 0;gap:12px}.qr-white{width:132px;height:132px}.qr-white img{width:132px;height:132px}.pass-footer{font-size:.5rem;padding:12px}.stats-grid{gap:10px}.stat-card{padding:15px}.stat-card strong{font-size:2rem}.site-footer{padding:18px 15px;flex-direction:column;text-align:center;gap:6px}.scanner-panel{padding:16px}}@media print{@page{size:A4 portrait;margin:8mm}body{background:white!important}.site-header,.site-footer,.no-print,.global-flash{display:none!important}.pass-page{padding:0!important;margin:0 auto!important}.pass-shell{box-shadow:none!important;margin:0 auto!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}.pass-header,.pass-footer{background:#0b162b!important;color:white!important}.pass-data{background:#f9fafc!important}}

/* GradPass premium navy/gold mobile redesign v2 */
:root{--navy:#0a1b37;--navy2:#102b50;--gold:#c99c41;--gold2:#f0ce80;--bg:#f7f7f4;--muted:#697789}
.site-header{background:linear-gradient(120deg,#07172f,#173154);color:#fff;border-bottom:3px solid #d3a44f;box-shadow:0 8px 24px #0a1b371c}.site-header .brand{color:#fff}.site-header .brand-icon{background:linear-gradient(135deg,#f4dc95,#b9872e);color:#10213c}.brand small{color:#e1cda6}.nav-cta,.btn.primary{background:linear-gradient(135deg,#f9dc92,#d8ab50);color:#152540;border:1px solid #cda34b;box-shadow:0 5px 13px #a4782b26}.btn.primary:hover{background:linear-gradient(135deg,#ffe7a7,#dcb353)}.site-header nav{color:#fff}.site-header nav .nav-cta{color:#10213c}.page-heading h1,.auth-card h1{color:#142440}.page-heading .eyebrow{color:#aa7829}.panel{border-radius:20px;box-shadow:0 10px 30px #12234312;border-color:#e7e1d5}.stat-card{border-radius:18px;border-color:#eadfc9;box-shadow:0 6px 18px #1124420d}.stat-card strong{font-family:'DM Sans',sans-serif;font-weight:800}.stat-card.highlight{background:linear-gradient(150deg,#0a1b37,#20426a);border:1px solid #bf9a50}.form-panel{background:linear-gradient(#fff,#fdfcf8)}.section-title{background:#102747;color:#fff;padding:12px 16px!important;border-radius:12px;border-top:0!important;margin-top:18px!important}.section-title h2{color:#fff}.number{background:linear-gradient(145deg,#f2d68e,#b98a35);color:#172840}.pass-shell{border:4px solid #d6b16a;border-radius:24px;background:#fffcf6;box-shadow:0 20px 50px #14243a24}.pass-header{background:linear-gradient(115deg,#081832,#17395e);border-bottom:4px solid #cda44f}.pass-title{background:#fdf9f0}.pass-title h2{color:#102747}.pass-body{background:linear-gradient(105deg,#fffcf5,#fff)}.student-photo{border:3px solid #d6b16a;border-radius:12px}.pass-data{background:#fcf8ef;border:1px solid #ebdfc5;border-radius:12px}.pass-qr-section{border-color:#d3ae66}.pass-footer{background:#091a35;border-top:3px solid #cda44f}.auth-card{background:#fff}.auth-wrap{background:radial-gradient(circle at 15% 10%,#d9bb7840,transparent 40%),linear-gradient(140deg,#edf2f8,#fcf8ef)}.hero{background:radial-gradient(circle at 75% 35%,#294b6d,transparent 40%),linear-gradient(125deg,#07162e,#163155)}.hero-ticket{border-color:#d7b66a;box-shadow:25px 30px 60px #0006}.scanner-panel{background:linear-gradient(160deg,#fff,#fdfaf4)}.scanner-top{color:#9a6b22}.scan-student{display:flex;align-items:center;gap:15px;margin:16px 0;padding:14px;background:#f6fbf5;border:1px solid #aedab5;border-radius:14px}.scan-student[hidden]{display:none}.scan-student img{width:76px;height:88px;object-fit:cover;border-radius:10px}.scan-student p{font-size:.78rem;color:#516071;margin:6px 0}.scan-student b{font-size:.78rem;color:#14744c}.mobile-dock{display:none}
@media(max-width:600px){body{padding-bottom:76px}.site-header{height:66px}.site-header nav{gap:8px;font-size:.7rem}.site-header nav>a:not(.nav-cta){display:none}.site-header .brand{font-size:.83rem}.mobile-dock{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;justify-content:space-around;align-items:center;background:#0a1b37;border-top:2px solid #cda44f;padding:9px 6px calc(9px + env(safe-area-inset-bottom));box-shadow:0 -8px 25px #10182b27}.mobile-dock a{min-width:64px;text-align:center;color:#e9cc86;font-size:1.25rem;line-height:1.1;font-weight:800}.mobile-dock small{display:block;color:#f0f1f4;font-size:.62rem;font-weight:600;margin-top:4px}.pass-shell{border-width:3px}.pass-title h2{font-size:1.45rem}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-heading h1{font-size:2rem}.form-panel{padding:16px}.section-title{margin-top:17px!important}.pass-actions .btn{flex:1}.site-footer{padding-bottom:15px}.hero h1{font-size:2.7rem}}
@media print{body{padding:0!important}.mobile-dock{display:none!important}.pass-shell{border:3px solid #d6b16a!important}.pass-header,.pass-footer{print-color-adjust:exact;-webkit-print-color-adjust:exact}.pass-data{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
