:root{--bg:#F5F5F7;--text:#1D1D1F;--sub:#86868B;--blue:#0071E3;--dark:#000;--white:#fff;}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Inter",Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;}
#lock{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;align-items:center;justify-content:center;transition:opacity .6s,visibility .6s;}
#lock.hide{opacity:0;visibility:hidden;}
.lock-box{text-align:center;padding:40px;max-width:420px;width:90%;}
.lock-box h1{font-size:1.9rem;font-weight:600;margin-bottom:8px;}
.lock-box p{color:var(--sub);margin-bottom:28px;}
.lock-box input{width:100%;padding:14px 18px;font-size:1rem;border-radius:12px;border:1px solid #d2d2d7;background:#fff;outline:none;transition:.2s;}
.lock-box input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(0,113,227,.15);}
.lock-box button{margin-top:14px;width:100%;padding:14px;font-size:1rem;font-weight:600;background:var(--blue);color:#fff;border:none;border-radius:12px;cursor:pointer;}
.lock-box button:hover{background:#147ce5;}
.lock-err{color:#ff3b30;font-size:.85rem;margin-top:12px;min-height:20px;}
nav{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(251,251,253,.8);backdrop-filter:blur(20px);border-bottom:1px solid rgba(0,0,0,.08);}
.nav-inner{max-width:1200px;margin:0 auto;padding:0 24px;height:52px;display:flex;align-items:center;justify-content:space-between;}
.nav-brand{font-weight:600;font-size:1.05rem;}
.nav-brand span{color:var(--blue);}
.nav-links a{color:var(--sub);text-decoration:none;font-size:.9rem;margin-left:24px;transition:color .2s;}
.nav-links a:hover{color:var(--text);}
.hero{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 24px;}
.hero h1{font-size:clamp(2.6rem,6vw,4.5rem);font-weight:700;letter-spacing:-.02em;line-height:1.1;}
.hero .hero-sub{font-size:clamp(1.1rem,2.5vw,1.6rem);color:var(--sub);margin-top:20px;font-weight:300;}
.hero .hero-days{font-size:1rem;color:var(--sub);margin-top:32px;}
.hero .hero-days b{color:var(--text);font-size:1.4rem;margin:0 4px;}
.hero .cta{margin-top:40px;}
.hero .cta a{display:inline-block;padding:14px 32px;border-radius:980px;background:var(--blue);color:#fff;text-decoration:none;font-weight:600;font-size:1.05rem;transition:.2s;}
.hero .cta a:hover{background:#147ce5;}
section{padding:110px 24px;max-width:1200px;margin:0 auto;}
.sec-head{text-align:center;margin-bottom:60px;}
.sec-head h2{font-size:clamp(1.9rem,4vw,2.8rem);font-weight:700;}
.sec-head p{color:var(--sub);margin-top:12px;font-size:1.05rem;}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;}
.gallery-item{position:relative;border-radius:20px;overflow:hidden;aspect-ratio:4/3;background:linear-gradient(145deg,#e8e8ed,#d8d8dd);cursor:pointer;transition:transform .3s;}
.gallery-item:hover{transform:scale(1.02);}
.gallery-item img{width:100%;height:100%;object-fit:cover;display:block;}
.gallery-item .ph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:2.5rem;background:linear-gradient(135deg,#a1a1b0,#6e6e7e);}
.gallery-item .cap{position:absolute;left:0;right:0;bottom:0;padding:14px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.55));font-size:.9rem;font-weight:500;}
.timeline{max-width:720px;margin:0 auto;position:relative;padding-left:40px;}
.timeline::before{content:"";position:absolute;left:10px;top:8px;bottom:8px;width:2px;background:#d2d2d7;}
.tl-item{position:relative;margin-bottom:44px;}
.tl-item::before{content:"";position:absolute;left:-40px;top:6px;width:22px;height:22px;border-radius:50%;background:var(--blue);border:4px solid var(--bg);}
.tl-item .tl-date{font-size:.95rem;color:var(--blue);font-weight:600;letter-spacing:.5px;}
.tl-item h3{font-size:1.3rem;font-weight:600;margin-top:4px;}
.tl-item p{color:var(--sub);margin-top:6px;}
footer{background:var(--dark);color:var(--sub);text-align:center;padding:48px 24px;font-size:.9rem;}
footer .brand{color:var(--white);font-weight:600;font-size:1.1rem;margin-bottom:10px;}
footer span{color:var(--blue);}
@media(max-width:640px){.nav-links a{margin-left:14px;font-size:.8rem;}section{padding:80px 18px;}.gallery{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;}}