
:root {
    --accent: #38bdf8; --accent-secondary: #f59e0b; --accent-glow: rgba(56,189,248,0.2);
    --bg: #020617; --panel: rgba(15,23,42,0.7); --border: rgba(56,189,248,0.15);
    --font-main: 'Poppins',sans-serif; --font-mono: 'JetBrains Mono',monospace;
    --font-heading: 'Syncopate',sans-serif; --font-subway: 'Kanit',sans-serif;
    --subway-green: #008939; --subway-yellow: #FFC80D;
}
html {
    scroll-behavior: smooth;
}
*{margin:0;padding:0;box-sizing:border-box;user-select:none;}
@media(hover:hover)and(pointer:fine){*{cursor:none!important;}}
body{background-color:var(--bg);color:#fff;font-family:var(--font-main);overflow-x:hidden;scroll-behavior:smooth;}
#cursor-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;display:none;}
@media(hover:hover)and(pointer:fine){#cursor-canvas{display:block;}}
#canvas-container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background:radial-gradient(circle at center,#0f172a 0%,#020617 100%);}
.scanner-line{position:fixed;top:-10%;left:0;width:100%;height:1px;background:var(--accent);box-shadow:0 0 10px var(--accent);z-index:10;pointer-events:none;animation:scan 10s linear infinite;opacity:0.2;}
@keyframes scan{0%{top:-10%;}100%{top:110%;}}
section{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:80px 20px;position:relative;opacity:0;transform:translateY(30px);transition:all 1s ease-out;}
section.visible{opacity:1;transform:translateY(0);}
section:first-of-type{opacity:1;transform:translateY(0);}
.hero-content{text-align:center;z-index:2;width:100%;max-width:800px;padding:0 16px;display:flex;flex-direction:column;align-items:center;}
.logo-container{margin-bottom: 10px;perspective:1000px;display:flex;justify-content:center;align-items:center;z-index: 5;position: relative;}
.main-logo{width:clamp(120px,25vw,220px);height:auto;filter: drop-shadow(0 0 15px var(--accent-glow)) invert(1) brightness(2);animation:float 8s ease-in-out infinite;transition:all 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);mix-blend-mode: screen;}
@keyframes float{0%,100%{transform:translateY(0) rotate(-1deg);}50%{transform:translateY(-15px) rotate(1deg);}}
@media(hover:hover){.main-logo:hover{transform:scale(1.05) translateY(-5px);filter: drop-shadow(0 0 25px var(--accent)) invert(1) brightness(2.5);}}
.title{font-family:var(--font-heading);font-size:clamp(1.8rem,10vw,5rem);font-weight:800;text-transform:uppercase;letter-spacing:-0.02em;line-height:0.9;margin-bottom:20px;background:linear-gradient(to bottom,#fff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent;position: relative;z-index: 2;}
@media(hover:hover){.title:hover{animation:glitch 0.3s cubic-bezier(.25,.46,.45,.94) both infinite;}}
@keyframes glitch{0%{transform:translate(0);text-shadow:-2px 0 var(--accent),2px 0 var(--accent-secondary);}20%{transform:translate(-2px,2px);}40%{transform:translate(-2px,-2px);}60%{transform:translate(2px,2px);}80%{transform:translate(2px,-2px);}100%{transform:translate(0);}}
.countdown{font-family:var(--font-mono);font-size:clamp(0.85rem,3.5vw,1.25rem);color:var(--accent);margin-bottom:40px;display:flex;gap:clamp(10px,4vw,20px);opacity:0.8;justify-content:center;flex-wrap:wrap;}
.panel{background:var(--panel);backdrop-filter:blur(16px);border:1px solid var(--border);padding:clamp(24px,5vw,50px);width:100%;max-width:900px;position:relative;transition:border-color 0.4s ease;}
@media(hover:hover){.panel:hover{border-color:var(--accent);box-shadow:0 0 50px rgba(56,189,248,0.05);}}
.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--border);width:100%;margin-top:40px;}
@media(min-width:600px){.stats-grid{grid-template-columns:repeat(4,1fr);}}
.stat-box{background:#020617;padding:clamp(20px,4vw,35px);text-align:center;}
.stat-value{display:block;font-family:var(--font-mono);font-size:clamp(1.5rem,5vw,2.5rem);color:var(--accent);font-weight:700;}
.stat-label{font-family:var(--font-mono);font-size:0.7rem;opacity:0.5;letter-spacing:0.1em;}
.about-heading{font-size:clamp(1.6rem,6vw,3rem);margin-bottom:30px;letter-spacing:-0.04em;}
.form-grid{display:grid;grid-template-columns:1fr;gap:24px;}
@media(min-width:600px){.form-grid{grid-template-columns:1fr 1fr;gap:30px;}}
.full-width{grid-column:span 1;}
@media(min-width:600px){.full-width{grid-column:span 2;}}
.input-group{display:flex;flex-direction:column;gap:10px;}
label{display:block;font-family:var(--font-mono);font-size:0.75rem;text-transform:uppercase;color:var(--accent);letter-spacing:0.1em;}
input,select,textarea{width:100%;background:rgba(0,0,0,0.4);border:1px solid var(--border);padding:14px 16px;color:#fff;font-family:var(--font-mono);font-size:1rem;transition:all 0.3s ease;-webkit-appearance:none;border-radius:0;}
option{background-color:#0f172a;color:#fff;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);background:rgba(56,189,248,0.05);box-shadow:0 0 20px var(--accent-glow);}
input.field-error,select.field-error,textarea.field-error{border-color:#f87171;box-shadow:0 0 12px rgba(248,113,113,0.2);}
select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2338bdf8' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;padding-right:40px;}
.btn-action{background:transparent;border:1px solid var(--accent);color:var(--accent);padding:clamp(16px,3vw,22px) clamp(24px,5vw,45px);font-family:var(--font-mono);font-weight:700;text-transform:uppercase;letter-spacing:0.15em;cursor:pointer;width:100%;margin-top:20px;transition:all 0.4s cubic-bezier(0.16,1,0.3,1);position:relative;font-size:clamp(0.7rem,2.5vw,1rem);touch-action:manipulation;}
.btn-action:active{transform:scale(0.97);opacity:0.8;}
.btn-action:disabled{opacity:0.5;cursor:not-allowed;}
.hero-buttons{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;}
.hero-buttons .btn-action{width:auto;text-decoration:none;min-width:160px;margin-top:0;display:inline-flex;align-items:center;justify-content:center;}
.hero-buttons .btn-primary{background:var(--accent);color:#020617;}
.hero-sub{margin-bottom:40px;opacity:0.6;letter-spacing:0.15em;font-family:var(--font-mono);font-size:clamp(0.65rem,2.5vw,0.85rem);}
.subway-tagline{font-family:var(--font-subway);font-size:clamp(1.4rem,5vw,2.5rem);color:var(--subway-yellow);font-style:italic;font-weight:800;line-height:1;letter-spacing:-0.02em;}
.sponsor-label{margin-top:15px;font-family:var(--font-mono);font-size:clamp(0.7rem,2vw,0.9rem);color:#64748b;letter-spacing:0.2em;}
.sponsor-card{border:1px solid var(--subway-green);color:var(--subway-green);background:rgba(0,137,57,0.05);padding:20px;text-align:center;font-family:var(--font-mono);font-size:clamp(0.7rem,2vw,0.9rem);letter-spacing:0.1em;max-width:600px;width:100%;margin-top:20px;}
.section-eyebrow{font-family:var(--font-heading);font-size:clamp(0.9rem,3vw,1.5rem);margin-bottom:40px;color:var(--accent);letter-spacing:0.5em;opacity:0.5;text-align:center;}
.register-heading{font-size:clamp(1.5rem,5vw,2.5rem);margin-bottom:32px;letter-spacing:-0.02em;}
.server-error{display:none;background:rgba(248,113,113,0.08);border:1px solid #f87171;padding:14px 16px;font-family:var(--font-mono);font-size:0.8rem;color:#f87171;margin-bottom:20px;}
.server-error.visible{display:block;}
.field-err-msg{font-family:var(--font-mono);font-size:0.65rem;color:#f87171;display:none;margin-top:4px;}
.field-err-msg.visible{display:block;}
#boot-overlay{display:none;position:fixed;inset:0;background:#020617;z-index:10000;align-items:center;justify-content:center;padding:20px;}
.success-card{text-align:center;padding:20px;max-width:500px;width:100%;}
.success-card h2{font-family:var(--font-heading);font-size:clamp(1.5rem,6vw,3rem);margin-bottom:20px;}
.success-card p{color:var(--accent);letter-spacing:0.3em;font-size:clamp(0.75rem,3vw,1.1rem);margin-bottom:16px;}
.confirm-code{font-family:var(--font-mono);font-size:clamp(0.7rem,2vw,0.9rem);color:#64748b;border:1px solid var(--border);padding:10px 20px;display:inline-block;margin-bottom:40px;letter-spacing:0.2em;}
.subway-logo{width:100%;max-width:300px;filter:drop-shadow(0 0 20px rgba(0,137,57,0.3));}
@media(min-width:480px){.subway-logo{max-width:400px;}}
@media(max-width:600px){#canvas-container canvas{opacity:0.5;}}

/* Volunteer section styles */
.volunteer-roles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1px;background:var(--border);width:100%;margin:40px 0;}
.role-box{background:#020617;padding:clamp(20px,3vw,30px);text-align:center;}
.role-icon{font-size:1.5rem;margin-bottom:12px;display:block;}
.role-title{font-family:var(--font-mono);font-size:0.85rem;color:var(--accent);letter-spacing:0.15em;margin-bottom:8px;}
.role-desc{font-family:var(--font-mono);font-size:0.7rem;opacity:0.5;line-height:1.6;}
.btn-volunteer{background:transparent;border:1px solid var(--accent-secondary);color:var(--accent-secondary);}
.btn-volunteer:hover{background:var(--accent-secondary);color:#020617;}

/* ── Top nav (appears after hero scrolls past) ── */
html{scroll-padding-top:64px;}
.top-nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:14px clamp(16px,4vw,32px);background:rgba(2,6,23,0.85);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);transform:translateY(-110%);transition:transform 0.4s cubic-bezier(0.16,1,0.3,1);}
.top-nav.visible{transform:translateY(0);}
.nav-brand{font-family:var(--font-mono);font-size:clamp(0.7rem,2vw,0.85rem);letter-spacing:0.25em;color:var(--accent);text-decoration:none;font-weight:700;}
.nav-links{list-style:none;display:flex;align-items:center;gap:clamp(14px,2.5vw,28px);margin:0;padding:0;}
.nav-links a{font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.15em;color:#fff;text-decoration:none;text-transform:uppercase;opacity:0.7;transition:opacity 0.25s,color 0.25s;}
.nav-links a:hover{opacity:1;color:var(--accent);}
.nav-links .nav-cta{color:var(--accent);border:1px solid var(--accent);padding:8px 16px;opacity:1;}
.nav-links .nav-cta:hover{background:var(--accent);color:#020617;}
.hamburger{display:none;background:none;border:none;width:36px;height:36px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:0;}
.hamburger span{display:block;width:24px;height:2px;background:var(--accent);transition:transform 0.3s,opacity 0.3s;}
.hamburger.open span:nth-child(1){transform:translateY(8px) rotate(45deg);}
.hamburger.open span:nth-child(2){opacity:0;}
.hamburger.open span:nth-child(3){transform:translateY(-8px) rotate(-45deg);}
@media(max-width:880px){
    .hamburger{display:flex;}
    .nav-links{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:rgba(2,6,23,0.97);backdrop-filter:blur(14px);border-bottom:1px solid var(--border);max-height:0;overflow:hidden;transition:max-height 0.35s ease;}
    .nav-links.open{max-height:520px;}
    .nav-links li{width:100%;border-bottom:1px solid var(--border);}
    .nav-links li:last-child{border-bottom:none;}
    .nav-links a{display:block;padding:18px 24px;}
    .nav-links .nav-cta{border:none;color:var(--accent);}
}

/* ── Schedule (tab-based timeline) ── */
.schedule-panel{max-width:900px;width:100%;}
.schedule-tabs{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--border);margin-bottom:8px;width:100%;}
.schedule-tab{background:none;border:none;border-bottom:2px solid transparent;color:#fff;font-family:var(--font-mono);font-size:clamp(0.7rem,2vw,0.85rem);letter-spacing:0.15em;padding:14px 22px;text-transform:uppercase;opacity:0.5;transition:all 0.3s ease;margin-bottom:-1px;}
.schedule-tab.active{color:var(--accent);border-bottom-color:var(--accent);opacity:1;}
@media(hover:hover){.schedule-tab:hover{opacity:1;}}
.schedule-list{display:none;}
.schedule-list.active{display:block;}
.schedule-item{display:grid;grid-template-columns:110px 1fr auto;gap:24px;padding:18px 4px;border-bottom:1px solid var(--border);align-items:center;transition:background 0.2s ease,padding 0.2s ease;}
.schedule-item:last-child{border-bottom:none;}
@media(hover:hover){.schedule-item:hover{background:rgba(56,189,248,0.04);padding-left:14px;}}
.schedule-time{font-family:var(--font-mono);font-size:clamp(0.8rem,2.2vw,0.95rem);color:var(--accent);font-weight:700;letter-spacing:0.05em;}
.schedule-name{font-family:var(--font-main);font-size:clamp(0.95rem,2.5vw,1.1rem);color:#fff;line-height:1.4;}
.schedule-tag{font-family:var(--font-mono);font-size:0.62rem;letter-spacing:0.18em;text-transform:uppercase;padding:5px 10px;border:1px solid;white-space:nowrap;}
.tag-ceremony{color:var(--accent-secondary);border-color:var(--accent-secondary);}
.tag-food{color:var(--subway-green);border-color:var(--subway-green);}
.tag-workshop{color:var(--accent);border-color:var(--accent);}
.tag-hacking{color:#cbd5e1;border-color:rgba(203,213,225,0.35);}
.tag-judging{color:#f87171;border-color:#f87171;}
.tag-speaker{color:#a78bfa;border-color:#a78bfa;}
.tag-end{color:#64748b;border-color:#64748b;}

/* ── Sponsor grid (2x2 on desktop, 1 col on mobile) ── */
.sponsor-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:30px;width:100%;max-width:1000px;}
.sponsor-grid > .panel{flex:0 1 calc(50% - 15px);min-width:280px;max-width:none;}
@media(max-width:720px){
    .sponsor-grid > .panel{flex:0 1 100%;min-width:0;}
}
@media(max-width:600px){
    .schedule-item{grid-template-columns:80px 1fr;gap:14px;padding:14px 2px;}
    .schedule-tag{grid-column:2;justify-self:start;margin-top:6px;}
}

/* ── Mobile polish ── */
@media(max-width:720px){
    section{padding:60px 16px;min-height:auto;}
    section#hero{min-height:100vh;}
    .hero-buttons{flex-direction:column;width:100%;max-width:280px;}
    .hero-buttons .btn-action{width:100%;}
    .panel{padding:24px 18px;}
    .stats-grid{grid-template-columns:repeat(2,1fr);}
    .volunteer-roles{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:420px){
    .volunteer-roles{grid-template-columns:1fr;}
}
