:root{--ink:#17131a;--paper:#f4efe4;--orange:#ed5b22;--gold:#e3b33d;--purple:#3d234f;--muted:#756c78;--line:#d8cfc0}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}a{color:inherit}main{min-height:70vh}.site-header{height:86px;padding:0 clamp(20px,5vw,72px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:20}.brand{display:flex;align-items:center;gap:12px;text-decoration:none}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--orange);color:#fff;font:25px Rye,serif}.brand b{letter-spacing:.16em}.brand small{display:block;font-size:10px;letter-spacing:.2em;color:var(--muted);margin-top:3px}.site-header nav{display:flex;gap:28px}.site-header nav a{text-decoration:none;font-weight:700;font-size:14px}.site-header nav a.active,.site-header nav a:hover{color:var(--orange)}.menu{display:none;border:0;background:none;font-size:24px}.hero{min-height:660px;background:var(--ink);color:#fff;padding:90px clamp(24px,7vw,110px);display:grid;grid-template-columns:1.1fr .9fr;align-items:center;overflow:hidden}.hero-copy{max-width:720px;z-index:2}.eyebrow{letter-spacing:.22em;font-size:12px;font-weight:700;color:var(--gold)}.eyebrow.orange{color:var(--orange)}h1{font-family:Rye,serif;font-weight:400;font-size:clamp(42px,6vw,82px);line-height:1.05;margin:.24em 0}.lede{font-size:clamp(18px,2vw,24px);line-height:1.55;color:#ddd4df;max-width:650px}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 24px;border-radius:2px;text-decoration:none;border:1px solid transparent;font-weight:700;font-family:inherit;cursor:pointer}.button.primary{background:var(--orange);color:#fff}.button.secondary{border-color:currentColor;background:transparent;color:inherit}.button.full{width:100%;font-size:17px}.hero-art{height:520px;position:relative}.moon{position:absolute;width:300px;height:300px;border-radius:50%;background:var(--gold);right:8%;top:6%;box-shadow:0 0 90px #e3b33d55}.house{position:absolute;width:330px;height:230px;background:#271e2d;right:0;bottom:45px;clip-path:polygon(0 34%,30% 34%,30% 20%,50% 20%,50% 34%,100% 34%,100% 100%,0 100%)}.house:before{content:'';position:absolute;width:115px;height:115px;background:#271e2d;transform:rotate(45deg);left:52px;top:20px}.house i{position:relative;display:inline-block;width:34px;height:55px;background:var(--orange);margin:130px 20px 0 34px;box-shadow:0 0 22px #ed5b22aa}.palm{position:absolute;font-size:180px;color:#4e3c58;bottom:25px}.p1{left:-30px}.p2{right:160px;bottom:-30px;transform:rotate(18deg)}.date-strip{display:grid;grid-template-columns:repeat(4,1fr);background:var(--purple);color:#fff;padding:30px clamp(24px,5vw,72px)}.date-strip article{padding:10px 28px;border-right:1px solid #ffffff33}.date-strip article:last-child{border:0}.date-strip small,.date-strip span{display:block}.date-strip small{color:var(--gold);font-weight:700;letter-spacing:.18em}.date-strip b{display:block;font-size:18px;margin:8px 0}.date-strip span{font-size:13px;color:#cabfd0}.section{padding:100px clamp(24px,7vw,110px)}.section h2,.page-hero h1{font-family:Rye,serif;font-size:clamp(36px,5vw,64px);font-weight:400;margin:.25em 0}.split{display:grid;grid-template-columns:1fr 1fr;gap:70px}.steps{list-style:none;margin:0;padding:0}.steps li{display:flex;gap:22px;padding:24px 0;border-bottom:1px solid var(--line)}.steps li>span{font:32px Rye;color:var(--orange)}.steps b{font-size:21px}.steps p{margin:7px 0;color:var(--muted)}.awards{background:#e9e0d2}.card-grid,.winner-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.award-card,.winner-card{background:#fff;padding:34px;min-height:260px;border-top:5px solid var(--orange)}.award-card span,.winner-card>span{font-size:10px;letter-spacing:.17em;font-weight:700;color:var(--orange)}.award-card h3{font:30px Rye;line-height:1.25}.award-card p{color:var(--muted);line-height:1.6}.award-card.featured,.winner-card.featured{background:var(--purple);color:#fff;border-color:var(--gold)}.page-hero{padding:75px clamp(24px,7vw,110px) 50px;background:var(--ink);color:#fff}.page-hero p{max-width:720px;color:#d7cfd9;font-size:18px}.page-hero.centered{text-align:center}.page-hero.centered p{margin-left:auto;margin-right:auto}.form-card,.ballot,.prose{max-width:950px;margin:45px auto;padding:0 24px}.form-card fieldset,.ballot fieldset{border:0;padding:28px 0;margin:0;border-bottom:1px solid var(--line)}legend{font-size:24px;font-weight:700;margin-bottom:22px}legend small{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-top:5px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid .wide{grid-column:1/-1}label{display:grid;gap:7px;font-weight:700;font-size:14px}input,textarea,select{width:100%;border:1px solid #bdb3a5;background:#fff;padding:14px;font:inherit;border-radius:2px}textarea{resize:vertical}.help{margin-left:10px;color:var(--muted);font-size:13px}.text-button{background:none;border:0;padding:12px 0;color:var(--orange);font-weight:700;cursor:pointer}.upload-box{border:2px dashed #bdb3a5;padding:30px;text-align:center;cursor:pointer}.upload-box input{border:0;background:transparent}.upload-box span{font-weight:400;color:var(--muted)}.check{grid-template-columns:24px 1fr;margin:25px 0;align-items:start;line-height:1.5}.check input{width:20px;height:20px}.trap{position:absolute;left:-9999px}.flash{max-width:950px;margin:20px auto;padding:16px 20px;background:#dff4e7;border-left:5px solid #238248}.flash.error{background:#f9dfdc;border-color:#b7372c}.notice,.success-panel,.login-card{max-width:780px;margin:60px auto;padding:55px 35px;text-align:center;background:#fff}.notice h2,.success-panel h1,.login-card h1{font:40px Rye;margin:.4em 0}.notice p,.success-panel p{color:var(--muted);font-size:18px;line-height:1.6}.success-icon{width:68px;height:68px;border-radius:50%;display:grid;place-items:center;background:var(--orange);color:#fff;font-size:35px;margin:auto}.success-panel code{display:inline-block;background:#eee6da;padding:13px 20px;margin:10px;font-size:18px}.map-heading{display:flex;align-items:end;justify-content:space-between}.map-layout{display:grid;grid-template-columns:380px 1fr;height:700px}.map-layout aside{overflow:auto;background:#fff;border-right:1px solid var(--line)}#map{height:100%;background:#dbe2d2}.search-wrap{padding:18px;position:sticky;top:0;background:#fff;z-index:2;border-bottom:1px solid var(--line)}.search-wrap span{display:block;font-size:12px;color:var(--muted);margin-top:8px}.entry-card{width:100%;display:flex;gap:14px;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--line);background:#fff;padding:16px;cursor:pointer}.entry-card:hover{background:#f6efe4}.entry-card img,.entry-emoji{width:76px;height:66px;object-fit:cover;display:grid;place-items:center;background:#eee1ce;font-size:30px}.entry-card b,.entry-card small{display:block}.entry-card small{margin-top:5px;color:var(--muted)}.pumpkin-marker{background:none;border:0}.pumpkin-marker span{font-size:34px;filter:drop-shadow(0 3px 4px #0007)}.leaflet-popup-content .popup-photo{width:100%;height:140px;object-fit:cover}.leaflet-popup-content h3{font-size:20px;margin:.6em 0}.leaflet-popup-content a{color:var(--orange);font-weight:700}.vote-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.vote-card{display:block;background:#fff;border:2px solid transparent;position:relative;cursor:pointer}.vote-card input{position:absolute;opacity:0}.vote-card:has(input:checked){border-color:var(--orange);box-shadow:0 0 0 3px #ed5b2222}.vote-image{display:block;height:190px;background:#ddd2c2}.vote-image img{width:100%;height:100%;object-fit:cover}.vote-image i{display:grid;height:100%;place-items:center;font-style:normal;font-size:62px}.vote-info{padding:18px;display:block}.vote-info b,.vote-info small{display:block}.vote-info small{margin-top:5px;color:var(--muted)}.vote-card .selected{position:absolute;top:10px;right:10px;width:30px;height:30px;border-radius:50%;background:var(--orange);color:#fff;display:none;place-items:center}.vote-card:has(input:checked) .selected{display:grid}.ballot-submit{display:flex;justify-content:space-between;align-items:center;padding:30px 0;gap:20px}.ballot-submit p{color:var(--muted);max-width:550px}.winner-grid{padding:55px clamp(24px,7vw,110px)}.winner-card{padding:0 0 35px;text-align:center;overflow:hidden}.winner-card img{width:100%;height:250px;object-fit:cover}.winner-card>span{display:block;margin-top:25px}.winner-card h2{font:30px Rye;margin:.6em}.winner-card h3{font-size:20px}.winner-card p{color:var(--muted)}.locked{width:90px;height:90px;border-radius:50%;display:grid;place-items:center;margin:45px auto 20px;background:#eee4d6;font:45px Rye;color:var(--orange)}.featured .locked{background:#ffffff17}.featured p{color:#d8cddd}.prose{font-size:17px;line-height:1.7}.prose h2{margin-top:36px}.login-card{max-width:500px}.login-card form{display:grid;gap:20px}.admin-head{padding:55px clamp(24px,6vw,90px) 30px;display:flex;justify-content:space-between;align-items:center}.admin-head h1{font-size:55px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding:0 clamp(24px,6vw,90px) 40px}.stats article{background:#fff;padding:25px}.stats b{font:42px Rye;display:block;color:var(--orange)}.stats span{color:var(--muted)}.admin-section{padding:35px clamp(24px,6vw,90px);border-top:1px solid var(--line)}.admin-list>article{display:grid;grid-template-columns:220px 1fr;background:#fff;margin:15px 0}.admin-photos{display:flex;overflow:auto;background:#ddd}.admin-photos img{width:220px;object-fit:cover}.admin-entry{padding:25px}.status{display:inline-block;padding:5px 8px;background:#eee;text-transform:uppercase;font-size:10px;font-weight:700}.status.approved{background:#d8f0df;color:#246e3a}.status.rejected{background:#f5d8d4;color:#8f2e24}.inline-form{display:grid;grid-template-columns:1fr 1fr auto;gap:7px;margin:14px 0}.inline-form input{padding:9px}.inline-form button,.admin-actions button,.winner-form button{border:0;padding:10px 14px;font-weight:700;cursor:pointer}.admin-actions form{display:flex;gap:8px}.admin-actions .approve{background:#287943;color:#fff}.admin-actions .reject{background:#a63f32;color:#fff}.results-table{display:grid;grid-template-columns:1fr 1fr;gap:30px}.results-table>div{background:#fff;padding:25px}.results-table p{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:9px}.winner-form{display:grid;grid-template-columns:1fr auto;gap:10px;max-width:700px;margin:12px 0;background:#fff;padding:16px}footer{background:var(--ink);color:#fff;padding:42px clamp(24px,6vw,90px);display:flex;justify-content:space-between;line-height:1.7}footer span,footer a{color:#bfb5c2;font-size:14px}@media(max-width:850px){.site-header{height:72px}.menu{display:block;color:inherit}.site-header nav{display:none;position:absolute;left:0;right:0;top:72px;background:var(--paper);padding:25px;flex-direction:column;box-shadow:0 10px 20px #0003}.site-header nav.open{display:flex}.hero{grid-template-columns:1fr;min-height:auto;padding-top:65px}.hero-art{height:330px}.moon{width:230px;height:230px}.date-strip{grid-template-columns:1fr 1fr}.date-strip article:nth-child(2){border-right:0}.split{grid-template-columns:1fr}.card-grid,.winner-grid{grid-template-columns:1fr}.map-layout{grid-template-columns:1fr;height:auto}.map-layout aside{height:300px}.map-layout #map{height:560px}.map-heading{display:block}.vote-grid{grid-template-columns:1fr 1fr}.stats{grid-template-columns:1fr 1fr}.admin-list>article{grid-template-columns:1fr}.admin-photos{height:180px}.admin-photos img{width:180px}.results-table{grid-template-columns:1fr}}@media(max-width:540px){.brand-mark{width:36px;height:36px}.brand b{font-size:13px}.hero{padding:55px 22px}.hero-art{height:280px}.house{transform:scale(.8);transform-origin:right bottom}.date-strip{grid-template-columns:1fr}.date-strip article{border-right:0;border-bottom:1px solid #ffffff33}.form-grid,.vote-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.page-hero{padding:50px 22px 35px}.page-hero h1{font-size:43px}.ballot-submit{display:block}.ballot-submit .button{width:100%}.stats{grid-template-columns:1fr}.inline-form{grid-template-columns:1fr}.winner-form{grid-template-columns:1fr}footer{display:block}footer>div+div{margin-top:20px}}
