@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@500;600;700&display=swap');
:root{--ink:#29231f;--muted:#756a62;--orange:#d85c32;--orange-dark:#a83c1b;--cream:#fff8ef;--peach:#f9e6d8;--green:#456a4c;--line:#eadfd4;--white:#fff}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:#fffdf9;color:var(--ink);font-family:'DM Sans',Arial,sans-serif;line-height:1.6}.topline{text-align:center;background:#3c4f3e;color:#fff8ef;font-size:.78rem;letter-spacing:.08em;padding:8px 16px}.site-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px clamp(20px,6vw,90px);background:var(--cream);border-bottom:1px solid #f1e6db}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-size:1.02rem;letter-spacing:-.03em}.brand b{font-weight:700}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--orange);color:#fff;font-size:1.2rem}nav{display:flex;gap:26px;align-items:center}nav a,.footer-links a{color:var(--muted);text-decoration:none;font-size:.9rem}nav a:hover,nav a.active,.footer-links a:hover{color:var(--orange-dark)}main{max-width:1240px;margin:auto;padding:0 clamp(20px,6vw,90px)}.hero{min-height:460px;display:grid;grid-template-columns:1fr .9fr;align-items:center;gap:35px;padding:58px 0 48px}.eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.16em;color:var(--orange-dark)}h1,h2,h3{font-family:'Playfair Display',Georgia,serif;line-height:1.12;letter-spacing:-.035em}h1{font-size:clamp(3rem,6vw,5.3rem);font-weight:600;margin:16px 0 20px}h1 em{font-weight:500;color:var(--orange);font-style:italic}.hero-copy>p:not(.hero-note){max-width:490px;color:var(--muted);font-size:1.05rem}.button{display:inline-flex;align-items:center;gap:18px;padding:13px 20px;border-radius:7px;text-decoration:none;font-weight:700;font-size:.92rem;margin-top:14px;transition:transform .2s,background .2s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--orange);color:#fff}.button-primary:hover{background:var(--orange-dark)}.hero-note{max-width:420px;font-size:.76rem;color:#897b70;margin-top:22px}.hero-art{position:relative;min-height:340px;border-radius:46% 46% 14px 14px;background:linear-gradient(150deg,#f4c49b,#f8e5c8 56%,#e9b68b);overflow:hidden;display:grid;place-items:center}.sun-disc{position:absolute;width:235px;height:235px;border-radius:50%;background:#fff1d4;top:36px;left:50%;transform:translateX(-50%);opacity:.9}.diya{position:relative;margin-top:55px;width:200px;height:150px;display:flex;align-items:center;justify-content:center}.bowl{position:absolute;bottom:0;width:190px;height:86px;background:linear-gradient(#e98a3f,#b94224);border-radius:15% 15% 50% 50%;border:5px solid #9d3c24;box-shadow:0 12px 0 #a8482a}.bowl:before{content:"";position:absolute;left:0;right:0;top:-8px;height:20px;background:#f6b65f;border:4px solid #9d3c24;border-radius:50%}.flame{position:absolute;z-index:2;top:-8px;width:48px;height:73px;background:linear-gradient(#fff6a8,#ff9d25 65%,#e95826);border-radius:55% 45% 60% 40%;transform:rotate(4deg);box-shadow:0 0 32px #ff9e35}.glow{position:absolute;top:20px;width:80px;height:100px;border-radius:50%;background:#ffe0a0;filter:blur(23px)}.flower{position:absolute;color:#fff4da;text-shadow:0 2px #d58c65;font-size:3rem}.flower-one{left:13%;top:17%}.flower-two{right:12%;bottom:19%;font-size:2.5rem}.spark{position:absolute;color:#fff6d9;font-size:2rem}.spark-one{top:18%;right:25%}.spark-two{left:23%;bottom:21%}.art-caption{position:absolute;bottom:18px;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:#7f452c;font-weight:700}.quick-facts{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:25px 0;margin-bottom:70px;gap:20px}.quick-facts>div{display:grid;grid-template-columns:42px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center}.fact-icon{grid-row:1/3;width:40px;height:40px;border-radius:12px;background:#fff0e4;display:grid;place-items:center;font-size:1.2rem}.quick-facts strong{font-size:.9rem}.quick-facts small{color:var(--muted);font-size:.78rem}.festival-section{padding-bottom:76px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:25px}.section-heading h2,.reminder h2{font-size:clamp(2rem,4vw,3rem);margin:10px 0}.section-heading p{color:var(--muted);margin:0}.filter-bar{display:flex;gap:12px;margin:25px 0 14px}.search-wrap,.select-wrap{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:white;border-radius:8px;padding:0 14px;min-height:48px}.search-wrap{flex:1;color:var(--orange);font-size:1.4rem}.search-wrap input{border:0;outline:0;width:100%;font:inherit;font-size:.9rem;color:var(--ink);background:transparent}.select-wrap select{border:0;outline:0;background:transparent;color:var(--ink);font:inherit;font-size:.88rem;min-width:155px}.data-note{font-size:.78rem;color:#806c5d;background:#fff5e9;padding:10px 13px;border-radius:6px}.data-note span{color:var(--orange-dark);margin-right:5px}.festival-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px;margin-top:22px}.festival-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px;min-height:210px;display:flex;flex-direction:column;box-shadow:0 5px 20px #6a321008;transition:transform .2s,box-shadow .2s}.festival-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px #6a321014}.card-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.festival-icon{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:var(--peach);font-size:1.4rem}.category-pill{font-size:.68rem;color:var(--green);background:#edf4eb;border-radius:30px;padding:5px 9px}.festival-card h3{font-size:1.45rem;margin:17px 0 8px}.festival-date{font-size:.8rem;font-weight:700;color:var(--orange-dark);margin:0 0 8px}.festival-description{font-size:.84rem;color:var(--muted);margin:0}.empty-state{padding:30px;text-align:center;color:var(--muted)}.reminder{display:flex;align-items:center;gap:24px;padding:34px;background:#f7e9dc;border-radius:14px;margin-bottom:75px}.reminder-symbol{flex:0 0 62px;height:62px;display:grid;place-items:center;border-radius:50%;background:#fff6e9;color:var(--orange);font-size:2rem}.reminder h2{font-size:2rem;margin:0 0 9px}.reminder p{margin:0;color:#71645a;max-width:760px;font-size:.9rem}.site-footer{padding:35px clamp(20px,6vw,90px) 24px;background:#f8f0e7;text-align:center}.footer-brand{justify-content:center}.site-footer>p{font-size:.82rem;color:var(--muted)}.footer-links{display:flex;justify-content:center;gap:22px;margin:20px 0}.site-footer>small{color:#887b70;font-size:.72rem}.page-main{max-width:900px;min-height:60vh;padding-top:55px;padding-bottom:70px}.page-main h1{font-size:clamp(2.6rem,5vw,4rem)}.page-main h2{margin-top:35px}.page-main p,.page-main li{color:#675d55}.page-main a{color:var(--orange-dark)}.contact-card{background:#fff5e9;border:1px solid var(--line);padding:22px;border-radius:10px;margin-top:22px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:800px){.site-header{align-items:flex-start;flex-direction:column;gap:15px}nav{flex-wrap:wrap;gap:18px}.hero{grid-template-columns:1fr;padding-top:42px}.hero-art{min-height:300px}.quick-facts{grid-template-columns:1fr;gap:16px;margin-bottom:50px}.festival-grid{grid-template-columns:repeat(2,1fr)}.reminder{align-items:flex-start;padding:25px}.reminder h2{font-size:1.7rem}}
@media(max-width:520px){nav{gap:13px}nav a{font-size:.82rem}.festival-grid{grid-template-columns:1fr}.filter-bar{flex-direction:column}.select-wrap select{width:100%;padding:12px 0}.reminder{flex-direction:column}.hero-art{min-height:280px}.section-heading h2{font-size:2.2rem}.footer-links{gap:15px;flex-wrap:wrap}}
.next-banner{margin:24px 0 0;padding:12px 18px;background:var(--peach);border:1px solid var(--line);border-radius:12px;color:var(--orange-dark);font-size:.95rem;text-align:center}
.next-banner b{font-family:'Playfair Display',Georgia,serif;font-size:1.1rem;color:var(--ink)}
.festival-meta{font-size:.78rem;color:var(--muted);margin:.5rem 0 0}
.festival-meta a{color:var(--orange-dark)}
.festival-card.is-past{opacity:.55}
.skip-link{position:absolute;left:-999px;top:8px;background:var(--ink);color:#fff;padding:8px 14px;border-radius:6px;z-index:20}.skip-link:focus{left:8px}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
.year-toggle{display:flex;gap:8px;margin:0 0 14px;flex-wrap:wrap}.year-toggle button{font:inherit;font-size:.88rem;font-weight:600;padding:9px 20px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:30px;cursor:pointer}.year-toggle button[aria-pressed="true"]{background:var(--orange);border-color:var(--orange);color:#fff}
.festival-card{position:relative;cursor:pointer}.card-link{color:inherit;text-decoration:none}.card-link::after{content:"";position:absolute;inset:0;border-radius:12px}.card-link:focus-visible::after{outline:3px solid var(--orange);outline-offset:2px}
.card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:14px}.card-actions a,.festival-meta a{position:relative;z-index:2}
.card-actions a,.action-row .button:not(.button-primary){font-size:.74rem;font-weight:700;padding:6px 12px;border-radius:30px;border:1px solid var(--line);color:var(--orange-dark);text-decoration:none;background:#fff}.card-actions a:hover{background:var(--peach)}
.next-banner a{color:inherit}
.crumbs{font-size:.82rem;margin-bottom:18px;color:var(--muted)}.fest-date{font-size:1.25rem;font-weight:700;color:var(--orange-dark)}
.note-box{background:#fff5e9;border:1px solid var(--line);border-radius:10px;padding:16px 18px;color:#675d55;font-size:.9rem;margin:18px 0}
.action-row{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0}.action-row .button{font-size:.88rem;margin-top:0}.action-row .button:not(.button-primary){padding:12px 18px}
.related{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;padding:0;list-style:none}.related a{display:block;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;text-decoration:none;color:var(--ink)}.related small{display:block;color:var(--muted)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.festival-card,.button{transition:none}}
.brand img{height:48px;width:auto;display:block}
.footer-brand img{height:44px}
.map-section{padding:10px 0 50px}
.map-layout{display:grid;grid-template-columns:minmax(260px,420px) 1fr;gap:32px;align-items:start}
.map-wrap svg{width:100%;height:auto;display:block}
.state{fill:#dde5ee;stroke:#fff;stroke-width:.8}
.state.has-fest{fill:#7aa5d8;cursor:pointer}
.state.has-fest:hover{fill:#1d4e89}
.state.selected{fill:#d85c32}
.state.has-fest:focus-visible{outline:none;stroke:#143a6b;stroke-width:2.5}
.state-buttons{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.state-buttons button{font:inherit;font-size:.88rem;font-weight:600;padding:9px 18px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:30px;cursor:pointer}
.state-buttons button[aria-pressed="true"]{background:var(--blue);border-color:var(--blue);color:#fff}
#statePanel h3{margin:0 0 10px;font-size:1.6rem}
#statePanel ul{list-style:none;padding:0;margin:0;display:grid;gap:10px}
#statePanel li{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px}
#statePanel a{font-weight:700;color:var(--blue-dark)}
#statePanel small{display:block;color:var(--muted)}
.map-credit{font-size:.72rem;color:var(--muted);margin-top:16px}
@media(max-width:800px){.map-layout{grid-template-columns:1fr}.map-wrap{max-width:360px;margin:auto}}
@media(max-width:800px){
.action-row{flex-direction:column;gap:10px}
.action-row .button{width:100%;justify-content:center}
.action-row a[href^="https://wa.me"]{order:-1}
}
