/* Rhode Island Life — coastal, bright, scannable. Mobile-first. */
:root{
  --navy:#0E265C; --navy-2:#173A80; --sea:#1A62CF; --sea-2:#2E86DE; --foam:#E8F3FB;
  --teal:#13877A; --sand:#F4E9D8; --sand-2:#FBF6EE; --white:#fff; --ink:#14213D; --muted:#4A5872;
  --line:#D9E2EE; --gold:#B7791F; --warn-bg:#FFF4D6; --warn:#7A4B00; --night:#070E26;
  --radius:14px; --shadow:0 2px 10px rgba(14,38,92,.08); --max:1180px;
  --font: system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--sand-2);line-height:1.5;font-size:17px}
a{color:var(--sea)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #F5A623;outline-offset:2px}
img,svg{max-width:100%}
.wrap{max-width:var(--max);margin:0 auto;padding:0 16px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.skip{position:absolute;left:-999px;top:0;background:var(--navy);color:#fff;padding:8px 12px;z-index:100}
.skip:focus{left:8px}

/* Sponsor bar */
.sponsor-bar{background:var(--navy);color:#fff;font-size:14px;text-align:center;padding:6px 12px}
.sponsor-bar a{color:#fff;font-weight:700;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.5)}

/* Header + nav */
.site-header{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.header-in{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 16px;max-width:var(--max);margin:0 auto}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--navy)}
.logo-mark{width:38px;height:38px;flex:none}
.logo-text{font-weight:800;font-size:20px;letter-spacing:-.2px;line-height:1.1}
.logo-text small{display:block;font-weight:600;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--sea)}
.main-nav{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.main-nav ul{display:flex;gap:4px;list-style:none;margin:0;padding:0 0 4px;white-space:nowrap}
.main-nav a{display:block;padding:8px 12px;border-radius:999px;color:var(--navy);text-decoration:none;font-weight:600;font-size:15px}
.main-nav a:hover{background:var(--foam)}
.main-nav a[aria-current="page"]{background:var(--navy);color:#fff}
.main-nav a.nl{color:#3B2A8C}
.main-nav a.nl[aria-current="page"]{background:linear-gradient(135deg,var(--navy),var(--night));color:#fff}
@media(min-width:980px){.main-nav{width:auto;margin-left:auto}.main-nav ul{padding:0}}

/* Hero */
.hero{position:relative;background:linear-gradient(180deg,#CFE8FA 0%,#EAF5FD 55%,var(--sand-2) 100%);overflow:hidden}
.hero-in{position:relative;z-index:2;padding:36px 16px 92px;max-width:var(--max);margin:0 auto}
.hero h1{font-size:clamp(34px,7vw,64px);line-height:1.02;margin:0 0 10px;color:var(--navy);letter-spacing:-1px}
.hero p.tag{font-size:clamp(18px,2.6vw,22px);margin:0 0 18px;color:var(--navy-2);max-width:640px}
.hero .cta-row{display:flex;flex-wrap:wrap;gap:10px}
.hero-sun{position:absolute;right:6%;top:24px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,#FFE29A 0%,#FFD166 60%,rgba(255,209,102,0) 72%);z-index:1}
.hero-waves{position:absolute;left:0;right:0;bottom:-1px;width:100%;height:110px;z-index:1}
.hero-light{position:absolute;right:12%;bottom:58px;width:54px;height:120px;z-index:1;display:none}
@media(min-width:760px){.hero-light{display:block}.hero-in{padding:56px 16px 120px}}
.page-hero .hero-in{padding:26px 16px 70px}
.page-hero h1{font-size:clamp(30px,5vw,44px)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;padding:11px 18px;font:inherit;font-weight:700;font-size:16px;cursor:pointer;text-decoration:none;line-height:1.2}
.btn-primary{background:var(--sea);color:#fff}
.btn-primary:hover{background:#154FA8}
.btn-navy{background:var(--navy);color:#fff}
.btn-ghost{background:#fff;color:var(--navy);border:2px solid var(--navy)}
.btn-light{background:#fff;color:var(--navy)}
.btn-sm{padding:7px 12px;font-size:14px}

/* Sections */
section{padding:28px 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.sec-head h2{margin:0;font-size:clamp(22px,3.4vw,30px);color:var(--navy);letter-spacing:-.3px}
.sec-head p{margin:2px 0 0;color:var(--muted)}
.eyebrow{font-size:12px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase;color:var(--sea)}

/* Horizontal strips */
.strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(250px,80%);gap:12px;overflow-x:auto;padding:4px 2px 12px;scroll-snap-type:x mandatory}
.strip>*{scroll-snap-align:start}
@media(min-width:760px){.strip{grid-auto-columns:minmax(260px,1fr);grid-auto-flow:column}}
@media(min-width:1100px){.strip{grid-auto-flow:row;grid-template-columns:repeat(4,1fr);overflow:visible}}

/* Event card */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;display:flex;gap:12px;align-items:flex-start;min-width:0}
.card .date{flex:none;width:58px;text-align:center;border-radius:10px;background:var(--foam);color:var(--navy);padding:6px 0;line-height:1.1}
.card .date .m{display:block;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:1px;color:var(--sea)}
.card .date .d{display:block;font-size:24px;font-weight:800}
.card .date .w{display:block;font-size:11px;color:var(--muted);font-weight:600}
.card .body{min-width:0;flex:1}
.card h3{margin:0 0 4px;font-size:17px;line-height:1.25;color:var(--ink)}
.card .where{margin:0;color:var(--muted);font-size:15px}
.card .where strong{color:var(--ink);font-weight:700}
.card .when{margin:2px 0 0;font-size:14px;color:var(--navy-2);font-weight:600}
.card .note{margin:6px 0 0;font-size:14px;color:var(--muted)}
.pills{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0}
.pill{font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px;background:#EEF2F8;color:var(--navy)}
.pill.free{background:#DDF5EC;color:#0B6B4D}
.pill.paid{background:#F2ECFA;color:#563A8C}
.pill.night{background:linear-gradient(135deg,var(--navy),#3B2A8C);color:#fff}
.pill.fam{background:#FFF0E0;color:#8A4B00}
.pill.region{background:var(--sand);color:#6B4F1D}
.confirm{margin:8px 0 0;background:var(--warn-bg);color:var(--warn);border-left:4px solid #E0A100;border-radius:8px;padding:6px 10px;font-size:14px}
.confirm b{display:block}
.card .links{margin-top:10px}
.card .links a{font-weight:700;font-size:15px;text-decoration:none;border-bottom:2px solid currentColor}
.card.past{opacity:.72}
.cat-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}

/* Category colors */
[data-cat="Concerts & Music"]{--c:#7B3FE4}[data-cat="Sports"]{--c:#D9480F}[data-cat="Charity & Fundraisers"]{--c:#C2255C}
[data-cat="Festivals & Fairs"]{--c:#E67700}[data-cat="Family & Kids"]{--c:#2F9E44}[data-cat="Arts & Theater"]{--c:#AE3EC9}[data-cat="Comedy"]{--c:#F76707}[data-cat="Movies"]{--c:#1864AB}[data-cat="Hiking & Trails"]{--c:#5C940D}
[data-cat="Food & Drink"]{--c:#B08900}[data-cat="Holiday"]{--c:#C92A2A}[data-cat="New Year's Eve"]{--c:#D4A017}[data-cat="Markets"]{--c:#0C8599}
[data-cat="Outdoors"]{--c:#2B8A3E}[data-cat="Other"]{--c:#5C677D}[data-cat="Nightlife"]{--c:#3B2A8C}
[data-cat="Art Fairs"]{--c:#D6336C}[data-cat="Museums"]{--c:#8F5B2E}[data-cat="Poetry & Spoken Word"]{--c:#5F3DC4}[data-cat="Fitness & Races"]{--c:#0B7285}
.cat-dot{background:var(--c,#999)}
.card[data-cat]{border-top:4px solid var(--c,#ccc)}

/* Nightlife strip */
.nightlife{background:linear-gradient(135deg,var(--navy) 0%,#101B48 45%,var(--night) 100%);color:#E9EEFA;position:relative;overflow:hidden}
.nightlife .sec-head h2{color:#fff}
.nightlife .sec-head p{color:#B8C4E6}
.nightlife .eyebrow{color:#9DB8FF}
.nightlife .stars{position:absolute;inset:0;pointer-events:none;opacity:.5}
.nightlife .card{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14);box-shadow:none;color:#fff}
.nightlife .card h3{color:#fff}.nightlife .card .where,.nightlife .card .note{color:#C7D2EE}.nightlife .card .where strong{color:#fff}
.nightlife .card .date{background:rgba(255,255,255,.1);color:#fff}.nightlife .card .date .m{color:#9DB8FF}.nightlife .card .date .w{color:#C7D2EE}
.nightlife .card .links a{color:#9DD0FF}
.nightlife .pill{background:rgba(255,255,255,.14);color:#fff}
.empty{padding:18px;border:2px dashed var(--line);border-radius:var(--radius);color:var(--muted);background:#fff}
.nightlife .empty{background:transparent;border-color:rgba(255,255,255,.25);color:#C7D2EE}

/* Observances */
.obs-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0}
.obs{background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:15px}
.obs b{color:var(--sea);margin-right:6px}
.obs.kind-month,.obs.kind-week,.obs.kind-range{background:var(--sand)}

/* Sponsor block */
.sponsor{background:linear-gradient(135deg,#fff 0%,var(--foam) 100%);border:1px solid var(--line);border-radius:22px;padding:22px;display:grid;gap:18px;box-shadow:var(--shadow)}
.sponsor h2{margin:0;color:var(--navy);font-size:clamp(22px,3.6vw,30px)}
.sponsor p{margin:6px 0 0}
@media(min-width:860px){.sponsor{grid-template-columns:1.2fr 1fr;align-items:center;padding:30px}}
.contact-list{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.contact-list li{display:flex;gap:8px;flex-wrap:wrap}
.contact-list .lbl{font-weight:700;color:var(--navy);min-width:0}
.contact-list a{font-weight:700;text-decoration:none}

/* Calendar */
.cal{background:#fff;border:1px solid var(--line);border-radius:20px;padding:14px;box-shadow:var(--shadow)}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.tab{border:2px solid var(--navy);background:#fff;color:var(--navy);border-radius:999px;padding:8px 16px;font:inherit;font-weight:700;cursor:pointer}
.tab[aria-selected="true"]{background:var(--navy);color:#fff}
.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:10px}
@media(min-width:760px){.chips{flex-wrap:wrap;overflow:visible}}
.chip{flex:none;border:1px solid var(--line);background:var(--sand-2);color:var(--ink);border-radius:999px;padding:6px 12px;font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--c,var(--sea));border-color:var(--c,var(--sea));color:#fff}
.chip[aria-pressed="true"] .cat-dot{background:#fff}
.chip.all[aria-pressed="true"]{background:var(--sea);border-color:var(--sea)}
.toolbar{display:grid;gap:8px;grid-template-columns:1fr 1fr;align-items:center;margin-bottom:12px}
.toolbar .search{grid-column:1/-1}
.toolbar input[type=search],.toolbar select{width:100%;font:inherit;font-size:16px;padding:10px 12px;border:1px solid #B9C6D8;border-radius:10px;background:#fff;color:var(--ink)}
.toggle{display:flex;align-items:center;gap:8px;font-weight:600;font-size:15px;cursor:pointer;user-select:none}
.toggle input{width:20px;height:20px;accent-color:var(--teal)}
.viewbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;margin:6px 0 12px}
.seg{display:inline-flex;border:2px solid var(--navy);border-radius:999px;overflow:hidden}
.seg button{border:0;background:#fff;color:var(--navy);font:inherit;font-weight:700;padding:7px 14px;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--navy);color:#fff}
.monthnav{display:flex;align-items:center;gap:6px}
.monthnav h3{margin:0 6px;font-size:19px;color:var(--navy);min-width:150px;text-align:center}
.iconbtn{border:1px solid var(--line);background:#fff;border-radius:10px;width:40px;height:40px;font-size:20px;cursor:pointer;color:var(--navy)}
.result-count{color:var(--muted);font-size:15px;margin:0 0 8px}
@media(min-width:760px){.toolbar{grid-template-columns:2fr 1fr auto auto}.toolbar .search{grid-column:auto}}

.list-group h4{margin:18px 0 8px;font-size:15px;text-transform:uppercase;letter-spacing:1px;color:var(--sea)}
.list-grid{display:grid;gap:10px}
@media(min-width:760px){.list-grid{grid-template-columns:1fr 1fr}}
.more-row{text-align:center;margin-top:14px}

.ongoing{background:var(--sand-2);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:10px}
.ongoing summary{cursor:pointer;font-weight:700;color:var(--navy)}
.ongoing ul{margin:8px 0 0;padding-left:18px;font-size:15px}
.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.dow{font-size:12px;font-weight:800;text-transform:uppercase;color:var(--muted);text-align:center;padding:4px 0}
.day{min-height:64px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:4px;font:inherit;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:2px;min-width:0;color:var(--ink)}
.day.out{background:#F6F8FB;color:#9AA6B8}
.day.today{border:2px solid var(--sea)}
.day.sel{outline:3px solid #F5A623}
.day .n{font-weight:800;font-size:14px}
.day .dots{display:flex;flex-wrap:wrap;gap:3px}
.day .dots i{width:8px;height:8px;border-radius:50%;background:var(--c,#999)}
.day .ev{display:none}
.day .cnt{font-size:11px;color:var(--muted)}
@media(min-width:760px){
  .day{min-height:108px}
  .day .dots{display:none}
  .day .ev{display:block;font-size:12px;line-height:1.25;border-left:3px solid var(--c,#999);padding:1px 4px;background:#F7F9FC;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
.daypanel{margin-top:14px}
.daypanel h4{margin:0 0 8px;color:var(--navy)}

/* Ask helper (opened only by a click) */
.ask-open{background:var(--teal);color:#fff}
.ask-panel{position:fixed;right:12px;bottom:12px;left:12px;max-width:440px;margin-left:auto;max-height:min(80vh,680px);display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 12px 40px rgba(7,14,38,.28);z-index:90}
.ask-panel[hidden]{display:none}
.ask-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:var(--navy);color:#fff;border-radius:18px 18px 0 0}
.ask-head h2{margin:0;font-size:18px}
.ask-head button{background:transparent;border:0;color:#fff;font-size:26px;line-height:1;cursor:pointer;width:40px;height:40px}
.ask-log{padding:12px 14px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:10px}
.msg{padding:9px 12px;border-radius:14px;max-width:92%;font-size:15px}
.msg.bot{background:var(--foam);color:var(--ink);align-self:flex-start}
.msg.user{background:var(--sea);color:#fff;align-self:flex-end}
.msg ul{margin:6px 0 0;padding-left:0;list-style:none;display:grid;gap:6px}
.msg li{background:#fff;border-radius:10px;padding:7px 9px;border:1px solid var(--line)}
.msg li a{font-weight:700}
.msg .small{font-size:13px;color:var(--muted)}
.examples{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.examples button{text-align:left;border:1px solid #B9D3F2;background:#fff;color:var(--navy);border-radius:12px;padding:8px 10px;font:inherit;font-size:15px;font-weight:600;cursor:pointer}
.examples button:hover{background:#F3F8FE}
.ask-form{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}
.ask-form input{flex:1;font:inherit;font-size:16px;padding:10px 12px;border:1px solid #B9C6D8;border-radius:10px;min-width:0}

/* Content pages */
.prose{max-width:760px}
.prose h2{color:var(--navy)}
.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:var(--shadow)}
.obs-month{margin-bottom:22px}
.obs-month h2{color:var(--navy);margin:0 0 10px}
.obs-table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden}
.obs-table th,.obs-table td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);font-size:15px}
.obs-table th{background:var(--foam);color:var(--navy)}

/* Footer */
.site-footer{background:var(--navy);color:#DCE6F7;margin-top:30px;padding:28px 0 18px;font-size:15px}
.site-footer a{color:#fff}
.foot-grid{display:grid;gap:20px}
@media(min-width:760px){.foot-grid{grid-template-columns:1.2fr 1fr 1fr}}
.site-footer h2{color:#fff;font-size:17px;margin:0 0 8px}
.site-footer .contact-list .lbl{color:#9DB8FF}
.site-footer .contact-list a{color:#fff}
.foot-note{border-top:1px solid rgba(255,255,255,.18);margin-top:20px;padding-top:12px;display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:space-between;color:#B8C4E6;font-size:14px}
.noscript{background:var(--warn-bg);padding:10px;border-radius:8px}

/* ---- fixes from screenshot review ---- */
.nightlife .card .when{color:#9DD0FF}
.day .cnt.total{font-weight:700}
@media(max-width:759px){
  .hero-sun{width:64px;height:64px;right:10px;top:10px;opacity:.85}
  .hero h1{padding-right:40px}
  .tabs{flex-wrap:nowrap}
  .tab{padding:7px 12px;font-size:15px;flex:1 1 auto;white-space:nowrap}
  .toolbar>div:nth-child(2){grid-column:1/-1}
  .viewbar .monthnav{order:3;width:100%;justify-content:space-between}
  .monthnav h3{min-width:0}
  .day{min-height:58px}
  .day .cnt.more{display:none}
  .day .ev{display:none}
}
@media(min-width:760px){ .day .cnt.total{display:none} }
.hero.nightlife h1{color:#fff}
.hero.nightlife p.tag{color:#C7D2EE}
.hero.nightlife .hero-in{padding-bottom:48px}

/* ---- Big search bar (hero) ---- */
.bigsearch{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 8px 28px rgba(14,38,92,.14);padding:14px;margin:0 0 18px;max-width:980px;color:var(--ink)}
.bs-row{display:grid;gap:10px}
@media(min-width:760px){.bs-row{grid-template-columns:1.6fr 1fr 1fr}}
.bs-field label,.bs-when legend{display:block;font-size:13px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--navy);margin:0 0 4px}
.bs-field input,.bs-field select{width:100%;min-height:52px;font:inherit;font-size:18px;padding:10px 14px;border:2px solid #B9C6D8;border-radius:12px;background:#fff;color:var(--ink)}
.bs-field input:focus,.bs-field select:focus{border-color:var(--sea)}
.bs-when{border:0;padding:0;margin:12px 0 0;min-width:0}
.tchips{display:flex;flex-wrap:wrap;gap:8px}
.tchip{position:relative;cursor:pointer}
.tchip input{position:absolute;opacity:0;width:1px;height:1px}
.tchip span{display:inline-flex;align-items:center;min-height:46px;padding:8px 16px;border:2px solid var(--navy);border-radius:999px;font-weight:700;font-size:16px;color:var(--navy);background:#fff}
.tchip input:checked+span{background:var(--navy);color:#fff}
.tchip input:focus-visible+span{outline:3px solid #F5A623;outline-offset:2px}
.bs-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px}
.bs-go{min-height:54px;padding:12px 28px;font-size:19px}
.bs-reset{min-height:50px}
.bs-count{margin:0;font-weight:700;color:var(--navy-2)}
@media(max-width:759px){.bs-go{flex:1 1 100%;justify-content:center}.tchip{flex:1 1 auto}.tchip span{width:100%;justify-content:center}}
.hero.nightlife .bigsearch{border-color:rgba(255,255,255,.2)}
.empty .btn{margin-top:10px}

/* ---- Real photos (slots defined in img/photos/credits.json, rendered by js/photos.js) ---- */
.photo-hero{background:linear-gradient(160deg,#0E265C 0%,#173A80 55%,#1A62CF 100%)}
.photo-hero .hero-sun,.photo-hero .hero-light{display:none}
.hero-photo-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;opacity:0;transition:opacity .5s ease}
.photo-loaded .hero-photo-img{opacity:1}
.hero-photo-shade{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(90deg,rgba(7,14,38,.72) 0%,rgba(7,14,38,.45) 50%,rgba(7,14,38,.05) 100%),linear-gradient(180deg,rgba(7,14,38,.3) 0%,rgba(7,14,38,0) 30%)}
@media(max-width:759px){.hero-photo-shade{background:linear-gradient(180deg,rgba(7,14,38,.72) 0%,rgba(7,14,38,.6) 60%,rgba(7,14,38,.45) 100%)}}
.photo-hero .hero-waves{z-index:2}
.photo-hero .hero-in{z-index:3}
.photo-hero h1,.photo-hero.nightlife h1{color:#fff;text-shadow:0 2px 14px rgba(0,0,0,.45)}
.photo-hero p.tag{color:#EAF2FF;text-shadow:0 1px 8px rgba(0,0,0,.5)}
.photo-hero .eyebrow{color:#FFD166}
.hero-photo-cap{position:absolute;right:12px;bottom:92px;z-index:2;margin:0;max-width:60%;font-size:12px;line-height:1.3;color:#fff;background:rgba(7,14,38,.55);padding:4px 8px;border-radius:6px;text-align:right}
.hero-photo-cap span{color:#C9D6F2}
.page-hero .hero-photo-cap{bottom:72px}
@media(min-width:760px){.nightlife.page-hero .hero-photo-cap{bottom:10px}}
@media(max-width:759px){.photo-hero .hero-photo-cap.hero-photo-cap{bottom:auto;top:8px;right:8px;max-width:70%;font-size:11px;padding:3px 7px}.hero-photo-cap span{display:none}.photo-hero .hero-in{padding-top:44px}}
.page-hero.photo-hero .hero-in{padding-top:44px}
@media(min-width:760px){.page-hero.photo-hero .hero-in{padding-top:64px;padding-bottom:110px}}
.hero.nightlife.photo-hero .hero-in{padding-bottom:56px}

/* Discover Rhode Island grid */
.discover{list-style:none;margin:0;padding:0;display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}
@media(min-width:760px){.discover{grid-template-columns:repeat(4,minmax(0,1fr))}}
.disc figure{position:relative;margin:0;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);aspect-ratio:4/3;background:var(--foam)}
.disc img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.disc-link:hover img,.disc-link:focus-visible img{transform:scale(1.04)}
.disc figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 10px 9px;color:#fff;background:linear-gradient(180deg,rgba(7,14,38,0),rgba(7,14,38,.82));line-height:1.25}
.disc figcaption strong{display:block;font-size:17px}
.disc figcaption span{display:block;font-size:13px;color:#DCE6F7}
.disc-link{display:block;text-decoration:none;border-radius:var(--radius)}
.disc .pcredit{display:block;margin-top:4px;font-size:11.5px;color:var(--muted)}
.pc-list{padding-left:18px}.pc-list li{margin:0 0 8px;font-size:15px}

/* ---------- Movies (movies.html + homepage strip). Text/icon design only, no posters. ---------- */
.movies-hero{background:linear-gradient(160deg,#141B33 0%,#1F2A52 55%,#3B1F3F 100%);color:#fff;position:relative}
.movies-hero h1,.movies-hero .tag{color:#fff}.movies-hero .eyebrow{color:#FFD166}
.marquee-lights{position:absolute;inset:14px 14px auto 14px;height:10px;background:radial-gradient(circle,#FFD166 0 3px,transparent 4px) 0 0/22px 10px repeat-x;opacity:.75;pointer-events:none}
.movie-filters{display:grid;gap:10px;grid-template-columns:1fr;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:16px;padding:14px;margin:16px 0 6px;max-width:980px}
@media(min-width:760px){.movie-filters{grid-template-columns:2fr 1fr 1fr auto;align-items:end}}
.mf-field label{display:block;font-size:13px;font-weight:700;color:#DCE4FA;margin-bottom:4px}
.mf-field input,.mf-field select{width:100%;font:inherit;font-size:16px;padding:10px 12px;border-radius:10px;border:1px solid #C8D1E6;background:#fff;color:var(--ink);box-sizing:border-box}
.mf-view{display:flex;gap:6px}
.mf-view .tab{background:transparent;color:#fff;border-color:#fff;white-space:nowrap}
.mf-view .tab[aria-pressed="true"]{background:#FFD166;color:#141B33;border-color:#FFD166}
.mv-asof{background:#FFF4D6;border:1px solid #F1D48A;border-radius:12px;padding:10px 14px;font-weight:600;color:#5C4400;margin:0 0 14px}
.mv-grid{display:grid;gap:14px;grid-template-columns:1fr}
@media(min-width:760px){.mv-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.mv-grid{grid-template-columns:repeat(3,1fr)}}
.mv-card{display:flex;gap:12px;background:#fff;border:1px solid var(--line);border-left:5px solid #C92A2A;border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;min-width:0}
.mv-ticket{flex:none;width:46px;height:46px;border-radius:12px;background:#141B33;display:grid;place-items:center;font-size:22px}
.mv-ticket.sm{width:40px;height:40px;font-size:19px}
.mv-body{min-width:0;flex:1}
.mv-title{margin:0 0 2px;font-size:19px;color:var(--navy);line-height:1.25}
.mv-meta{margin:0 0 8px;display:flex;gap:8px;flex-wrap:wrap;font-size:14px;color:var(--muted)}
.mv-rating{border:1px solid currentColor;border-radius:4px;padding:0 5px;font-weight:700;color:var(--ink)}
.mv-at{border-top:1px dashed var(--line);padding-top:8px;margin-top:8px}
.mv-th{margin:0 0 4px;font-size:15px}
.mv-days{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.mv-days li{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline;font-size:14px}
.mv-day{font-weight:700;min-width:118px;color:var(--ink)}
.mv-times{display:flex;gap:5px;flex-wrap:wrap}
.mv-time{background:#EEF2F8;color:var(--navy);border-radius:6px;padding:2px 7px;font-weight:700;font-size:13px}
.mv-tix{display:inline-block;margin-top:6px;font-size:14px}
.mv-only{margin:0 0 6px;font-size:14px;color:var(--muted)}
.mv-badge{display:inline-block;font-size:12px;font-weight:700;border-radius:999px;padding:2px 9px;margin-left:2px}
.mv-badge.live{background:#E6F6EA;color:#1E6E33}.mv-badge.titles{background:#FFF4D6;color:#6B5100}.mv-badge.link{background:#EEF2F8;color:var(--navy)}
.th-grid{display:grid;gap:14px;grid-template-columns:1fr}
@media(min-width:760px){.th-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.th-grid{grid-template-columns:repeat(3,1fr)}}
.th-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;min-width:0}
.th-name{margin:0;font-size:18px;color:var(--navy)}
.th-addr{margin:2px 0 6px;color:var(--muted);font-size:14px}
.th-kind{margin:0 0 8px;font-size:14px}
.th-note{font-size:14px;color:var(--muted);margin:6px 0}
.th-movies{list-style:none;padding:0;margin:8px 0;display:grid;gap:8px;font-size:15px}
.th-movies .mv-days{margin-top:3px}
.mv-see{margin-top:8px}
.th-mini{display:grid;gap:10px;grid-template-columns:1fr}
@media(min-width:760px){.th-mini{grid-template-columns:repeat(2,1fr)}}
.th-mini-item{display:flex;flex-direction:column;gap:4px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.th-mini-item span:not(.mv-badge){font-size:14px;color:var(--muted)}
.th-excluded{margin-top:16px;font-size:14px;color:var(--muted)}.th-excluded summary{cursor:pointer;font-weight:700;color:var(--navy)}
.mv-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,78%);gap:12px;overflow-x:auto;padding:4px 2px 12px;scroll-snap-type:x mandatory}
@media(min-width:760px){.mv-strip{grid-auto-columns:minmax(250px,1fr)}}
@media(min-width:1100px){.mv-strip{grid-auto-flow:row;grid-template-columns:repeat(4,1fr);overflow:visible}}
.mv-mini{display:flex;gap:10px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-left:5px solid #C92A2A;border-radius:14px;padding:12px;text-decoration:none;color:var(--ink);scroll-snap-align:start;min-width:0}
.mv-mini:hover,.mv-mini:focus-visible{border-color:#C92A2A}
.mv-mini-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.mv-mini-body strong{color:var(--navy);line-height:1.25}
.mv-more{margin:6px 0 10px;font-weight:700}
.hero.movies-hero p.tag{color:#E6ECFA}
.movies-hero.page-hero h1{color:#fff}

/* ---------- New Year's Eve page (text design, no photo) ---------- */
.nye-hero{background:radial-gradient(ellipse at 70% 20%,#2B3A7A 0%,#121A3A 55%,#0B1028 100%);color:#fff;position:relative;overflow:hidden}
.hero.nye-hero h1{color:#fff}.hero.nye-hero p.tag{color:#E6ECFA}.nye-hero .eyebrow{color:#FFD166}
.nye-sparkle{position:absolute;inset:0;pointer-events:none;opacity:.55;
  background:radial-gradient(circle,#FFD166 0 1.5px,transparent 2.5px) 0 0/46px 46px,radial-gradient(circle,#fff 0 1px,transparent 2px) 23px 17px/58px 58px}
.nye-count{display:inline-block;background:rgba(255,209,102,.16);border:1px solid rgba(255,209,102,.5);color:#FFE29A;border-radius:999px;padding:6px 14px;font-weight:700;margin:0 0 14px}
.nye-count:empty{display:none}
.nye-hero .btn-ghost{background:transparent;color:#fff;border-color:#fff}
.nye-list{margin-bottom:8px}
.nye-more{color:var(--muted);margin-top:6px}
.pills .pill[data-cat]{border:1px solid color-mix(in srgb,var(--c,#999) 35%,transparent)}
/* Big "Free events (N)" toggle (nye.html) */
.free-toggle-wrap{margin:0 0 16px}
.free-toggle{display:inline-flex;align-items:center;gap:12px;min-height:52px;padding:10px 22px 10px 12px;border-radius:999px;border:3px solid #FFD166;background:rgba(255,255,255,.08);color:#fff;font:inherit;font-size:19px;font-weight:800;cursor:pointer;line-height:1.1}
.free-toggle:hover{background:rgba(255,209,102,.18)}
.free-toggle:focus-visible{outline:3px solid #fff;outline-offset:3px}
.free-toggle[aria-pressed="true"]{background:#FFD166;color:#141B33}
.ft-switch{position:relative;flex:none;width:52px;height:30px;border-radius:999px;background:rgba(255,255,255,.25);border:2px solid #FFD166;transition:background .15s}
.ft-knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .15s}
.free-toggle[aria-pressed="true"] .ft-switch{background:#2F9E44;border-color:#141B33}
.free-toggle[aria-pressed="true"] .ft-knob{left:25px}
.free-status{margin:8px 0 0;color:#E6ECFA;font-size:15px}
@media(max-width:520px){.free-toggle{width:100%;justify-content:center;font-size:18px}}
@media(prefers-reduced-motion:reduce){.ft-switch,.ft-knob{transition:none}}
.card .price{font-size:14px;margin:4px 0 0;color:var(--muted)}

/* Header logo subtitle slogan: Kalam Bold (Indian Type Foundry, SIL Open Font License 1.1; see fonts/Kalam-OFL.txt), self-hosted Latin subset */
@font-face{font-family:"Kalam";src:url("../fonts/Kalam-Bold-latin.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
.logo-text small{font-family:"Kalam","Comic Sans MS","Segoe Print","Chalkboard SE",cursive,system-ui,sans-serif;font-weight:700;font-size:16px;letter-spacing:.2px;text-transform:none;color:#C92A2A;line-height:1.05;margin-top:2px;white-space:nowrap}
@media(min-width:980px){.logo-text small{font-size:17px}}
@media(max-width:520px){.logo-text small{font-size:16px}}

/* Hiking & Trails page */
.hike-hero .eyebrow{color:#FFD166}
.hike-filters{display:grid;grid-template-columns:1fr;gap:12px;align-items:end;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);margin:0 0 12px}
@media(min-width:760px){.hike-filters{grid-template-columns:1fr 1fr auto auto}}
.hike-filters .mf-field label,.hike-filters .hk-lbl{display:block;font-size:13px;font-weight:700;color:var(--navy);margin-bottom:4px}
.hike-filters .mf-field select{border:2px solid #B9C6D8;min-height:48px}
.hk-dogs.free-toggle{border-color:#2F9E44;background:#fff;color:var(--navy);font-size:17px;min-height:48px;padding:8px 18px 8px 10px}
.hk-dogs.free-toggle:hover{background:#EBF7EE}
.hk-dogs.free-toggle:focus-visible{outline:3px solid var(--navy)}
.hk-dogs.free-toggle[aria-pressed="true"]{background:#2F9E44;color:#fff}
.hk-dogs.free-toggle[aria-pressed="true"] .ft-switch{background:#fff;border-color:#fff}
.hk-dogs.free-toggle[aria-pressed="true"] .ft-knob{background:#2F9E44}
.hike-count{font-weight:700;color:var(--navy);margin:4px 0 12px}
.hike-grid{display:grid;grid-template-columns:1fr;gap:14px}
@media(min-width:760px){.hike-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.hike-grid{grid-template-columns:repeat(3,1fr)}}
.hike-card{background:#fff;border:1px solid var(--line);border-top:5px solid #5C940D;border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;min-width:0;scroll-margin-top:120px}
.hike-card h3{margin:0 0 4px;font-size:19px;line-height:1.25;color:var(--ink)}
.hike-card .where{margin:0;color:var(--muted);font-size:14px}.hike-card .where strong{color:var(--ink)}
.hk-facts{margin:10px 0 0;display:grid;gap:4px}
.hk-fact{display:grid;grid-template-columns:86px 1fr;gap:6px;font-size:14px}
.hk-fact dt{font-weight:800;color:var(--navy)}
.hk-fact dd{margin:0;color:var(--ink)}
.hk-fact dd.nl{color:var(--muted);font-style:italic}
.hike-card .note{margin:10px 0 0;font-size:14px;color:var(--ink);line-height:1.5}
.hike-card .links{margin:10px 0 0;font-size:14px}
.hike-card .links a{font-weight:700;text-decoration:none;border-bottom:2px solid currentColor}
.pill.hk-dog.yes{background:#DDF5EC;color:#0B6B4D}.pill.hk-dog.no{background:#FDECEC;color:#9B1C1C}
.hk-dogs .ft-switch{background:#ADB5BD;border-color:#2F9E44}
.hk-dogs.free-toggle[aria-pressed="true"] .ft-switch{background:#fff;border-color:#fff}
/* One-row desktop header (logo + full menu incl. Hiking & Trails) from ~1240px wide; narrower screens wrap the menu under the logo as before */
@media(min-width:980px){.header-in{max-width:1360px}.main-nav a{padding:8px 10px}}
/* Wordmark in caps; its letter-spacing is fitted so "RHODE ISLAND LIFE" and the slogan line are the same width
   (js/app.js fitLogo() fine-tunes it after the fonts load; these values are the fallback for 1440 / 390). */
.logo-text{display:inline-flex;flex-direction:column;align-items:stretch}
.logo-word{display:block;text-transform:uppercase;white-space:nowrap;letter-spacing:.6px}
/* "1776" gets a bit more presence: slightly larger, slogan red #C92A2A to match the red anchors (Oct 29, Donnie) */
.logo-text small .yr{font-size:1.16em;color:#C92A2A;line-height:1}

/* "Idiot-proof" filters: big, clearly labeled on/off buttons in the calendar toolbar (replace the old small checkboxes) */
.cal-toggle{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:8px 18px 8px 12px;border-radius:999px;border:3px solid #237A35;background:#fff;color:#14532D;font:inherit;font-size:18px;font-weight:800;line-height:1.1;cursor:pointer;white-space:nowrap}
.cal-toggle:hover{background:#EBF7EE}
.cal-toggle:focus-visible{outline:3px solid var(--navy);outline-offset:3px}
.cal-toggle .ct-box{flex:none;width:26px;height:26px;border-radius:8px;border:3px solid #237A35;background:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1}
.cal-toggle[aria-pressed="true"]{background:#237A35;color:#fff;box-shadow:0 2px 8px rgba(35,122,53,.35)}
.cal-toggle[aria-pressed="true"] .ct-box{border-color:#fff;background:#fff;color:#237A35}
.cal-toggle[aria-pressed="true"] .ct-box::before{content:"✓";font-weight:900}
.cal-toggle.cal-past{border-color:var(--navy);color:var(--navy);font-size:16px}
.cal-toggle.cal-past .ct-box{border-color:var(--navy)}
.cal-toggle.cal-past[aria-pressed="true"]{background:var(--navy);color:#fff;box-shadow:none}
.cal-toggle.cal-past[aria-pressed="true"] .ct-box{color:var(--navy)}
@media(max-width:759px){.toolbar .cal-free{grid-column:1/-1;width:100%}.toolbar .cal-past{grid-column:1/-1;width:100%}}
@media(prefers-reduced-motion:no-preference){.cal-toggle{transition:background .15s,color .15s}}
/* Category chips: bigger tap targets */
.chip{min-height:44px;padding:9px 16px;font-size:15px;font-weight:700}
.cal-toggle.cal-past:hover{background:var(--foam)}.cal-toggle.cal-past[aria-pressed="true"]:hover{background:var(--navy-2)}.cal-toggle[aria-pressed="true"].cal-free:hover{background:#1E6A2E}

/* New Year's Eve section inside nightlife.html (was nye.html) */
.nye-band{background:radial-gradient(ellipse at 70% 10%,#2B3A7A 0%,#121A3A 55%,#0B1028 100%);color:#fff;position:relative;overflow:hidden;scroll-margin-top:70px}
.nye-band .wrap{position:relative}
.nye-band h2,.nye-band .nye-sub{color:#fff}.nye-band .eyebrow{color:#FFD166}.nye-band .sec-head p{color:#E6ECFA}
.nye-band .nye-sub{font-size:22px;margin:22px 0 10px;scroll-margin-top:80px}
.nye-band .btn-ghost{background:transparent;color:#fff;border-color:#fff}
.nye-band .nye-more{color:#C7D2EE}.nye-band .empty{color:#E6ECFA}
.nye-band .card{color:var(--ink)}
.fam-badge{display:inline-block;background:#FFE8CC;color:#7A3E00;border:2px solid #E8590C;border-radius:999px;font-size:13px;font-weight:900;letter-spacing:.5px;text-transform:uppercase;padding:2px 10px;margin:0 0 6px}
.fam-badge.fam-inline{margin:0;font-size:12px;padding:0 8px;vertical-align:1px}
.card.is-family{box-shadow:0 0 0 3px #FFB066,var(--shadow)}
.btn-gold{background:#FFD166;color:#141B33;border:2px solid #FFD166;font-weight:800}
.btn-gold:hover{background:#FFE29A}
.nye-jump-top{margin:6px 0 10px}
@media(max-width:979px){.nye-band,.nye-band .nye-sub{scroll-margin-top:130px}}

/* ---- The ONE search component (three boxes, identical labels on every page) ---- */
.tri-search{display:grid;grid-template-columns:1fr;gap:12px;margin:0 0 12px}
@media(min-width:1000px){.tri-search{grid-template-columns:repeat(3,1fr)}}
.ts-box{background:#fff;border:3px solid var(--navy);border-radius:16px;padding:12px 12px 14px;margin:0;color:var(--ink);box-shadow:0 2px 10px rgba(14,38,92,.12)}
.ts-head{display:flex;align-items:center;gap:8px;margin:0 0 8px;min-height:28px}
.ts-label{font-size:18px;font-weight:800;color:var(--navy);line-height:1.2}
.ts-row{display:flex;gap:8px}
.ts-row input{flex:1;min-width:0;min-height:52px;font:inherit;font-size:17px;padding:10px 12px;border:2px solid #B9C6D8;border-radius:12px;background:#fff;color:var(--ink)}
.ts-row input:focus{outline:3px solid var(--sea);outline-offset:1px;border-color:var(--sea)}
.ts-go{flex:none;min-height:52px;min-width:104px;padding:0 18px;border:0;border-radius:12px;font:inherit;font-size:18px;font-weight:800;color:#fff;background:var(--navy);cursor:pointer}
.ts-go:hover{filter:brightness(1.15)}
.ts-go:focus-visible{outline:3px solid #FFD166;outline-offset:2px}
.ts-free{border-color:#237A35;background:#F1FAF3}.ts-free .ts-label{color:#14532D}.ts-free .ts-go{background:#237A35}
.ts-paid{border-color:#6B2FB3;background:#F6F0FD}.ts-paid .ts-label{color:#4A1D80}.ts-paid .ts-go{background:#6B2FB3}
.ts-badge{display:inline-block;background:#6B2FB3;color:#fff;font-size:13px;font-weight:900;letter-spacing:1px;padding:3px 9px;border-radius:6px}
.bigsearch .bs-row-filters{grid-template-columns:1fr}
.tri-host{margin:14px 0}
.movies-hero .tri-host .ts-box{box-shadow:none}
.bigsearch{max-width:none}
@media(min-width:760px){.bigsearch .bs-row.bs-row-filters{grid-template-columns:minmax(0,420px)}}
@media(min-width:1000px){.tri-search{grid-template-columns:repeat(3,minmax(0,1fr))}}
#calendar{scroll-margin-top:80px}
@media(max-width:979px){#calendar{scroll-margin-top:130px}}
.tri-search{grid-template-columns:minmax(0,1fr)}
@media(min-width:1000px){.tri-search{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ts-box{min-width:0}
.result-count{font-size:18px;font-weight:800;color:var(--navy)}
/* Home hero (Donnie's harbor sunrise): scaled up and anchored low so the sun sits above the search panel. Remove this block to undo. */
.photo-hero[data-photo="hero"] .hero-photo-img{transform:none;object-fit:contain;object-position:center top !important}
/* Home hero: lighter tint so the photo's original colors show (Donnie, Oct 29). Remove this block to restore the darker tint. */
.photo-hero[data-photo="hero"] .hero-photo-shade{background:linear-gradient(90deg,rgba(7,14,38,.35) 0%,rgba(7,14,38,.15) 50%,rgba(7,14,38,0) 100%)}
@media(max-width:759px){.photo-hero[data-photo="hero"] .hero-photo-shade{background:linear-gradient(180deg,rgba(7,14,38,.4) 0%,rgba(7,14,38,.3) 60%,rgba(7,14,38,.2) 100%)}}
.photo-hero[data-photo="hero"] h1{text-shadow:0 2px 16px rgba(0,0,0,.6),0 1px 3px rgba(0,0,0,.5)}
.photo-hero[data-photo="hero"] p.tag{text-shadow:0 1px 10px rgba(0,0,0,.7),0 1px 2px rgba(0,0,0,.6)}
/* Movie searches in the big search / events list: a big, obvious "Movies playing" block (theater showtimes from data/movies.json) */
.mv-search{background:#fff;border:3px solid #C92A2A;border-radius:18px;box-shadow:var(--shadow);padding:16px;margin:4px 0 18px}
.mv-search-head{display:flex;gap:12px;align-items:center;margin:0 0 12px}
.mv-search-title{margin:0;font-size:clamp(22px,3.2vw,28px);line-height:1.15;color:var(--navy)}
.mv-search-sub{margin:4px 0 0;font-size:16px;color:var(--muted);font-weight:600}
.mv-search-more{margin:12px 0 0;font-size:15px;color:var(--muted)}
.mv-search-cta{margin:12px 0 0}
.mv-search-all{min-height:54px;padding:12px 26px;font-size:19px}
.mv-search-none{border-style:dashed}
@media(max-width:759px){.mv-search-all{width:100%;justify-content:center}}
/* Home page "Coming up" carousel (index.html [data-carousel], built by renderCarousel in js/app.js). Cards: category colour + a real photo (event, venue, town or category). */
.hero-carousel{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 8px 28px rgba(14,38,92,.18);padding:12px 14px 14px;margin:0 0 16px;max-width:980px;color:var(--ink)}
.cr-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:0 0 10px}
.cr-label{margin:0;font-size:14px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--navy)}
.cr-ctrls{display:flex;gap:8px;flex-wrap:wrap}
.cr-btn{min-height:48px;padding:8px 18px;border:2px solid var(--navy);border-radius:999px;background:#fff;color:var(--navy);font:inherit;font-weight:800;font-size:17px;cursor:pointer;line-height:1.1}
.cr-btn span{font-size:24px;line-height:0;vertical-align:-1px}
.cr-prev,.cr-next{background:var(--navy);color:#fff}
.cr-btn:hover{background:var(--sea);border-color:var(--sea);color:#fff}
.cr-btn:focus-visible,.cr-dot:focus-visible,.cr-go:focus-visible,.cr-more:focus-visible{outline:3px solid #F5A623;outline-offset:2px}
.cr-track{display:grid}
.cr-slide{grid-area:1/1;display:flex;gap:14px;align-items:stretch;min-width:0;border:1px solid var(--line);border-left:8px solid var(--c,var(--sea));border-radius:14px;background:var(--sand-2);padding:12px;visibility:hidden;opacity:0;transition:opacity .45s ease,visibility .45s}
.cr-slide.is-active{visibility:visible;opacity:1}
.cr-art{flex:none;width:120px;border-radius:12px;background:var(--c,var(--sea));display:grid;place-items:center;position:relative;overflow:hidden;min-height:120px}
.cr-icon{font-size:54px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.25))}
.cr-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cr-credit{position:absolute;left:0;right:0;bottom:0;font-size:10px;line-height:1.2;color:#fff;background:rgba(7,14,38,.65);padding:2px 4px}
.cr-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:4px}
.cr-kicker{margin:0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cr-count{font-size:13px;font-weight:700;color:var(--muted)}
.cr-title{margin:0;font-size:clamp(21px,2.6vw,28px);line-height:1.2;color:var(--navy);letter-spacing:-.2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cr-when{margin:0;font-size:17px;font-weight:800;color:var(--ink)}
.cr-where{margin:0;font-size:16px;color:var(--muted)}
.cr-links{margin:6px 0 0;display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center}
.cr-go{min-height:50px;padding:11px 22px;font-size:17px}
.cr-more{font-weight:700;font-size:15px}
.cr-dots{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:12px 0 0}
.cr-dot{width:26px;height:26px;border-radius:50%;border:2px solid var(--navy);background:#fff;cursor:pointer;padding:0}
.cr-dot[aria-current="true"]{background:var(--navy);transform:scale(1.1)}
@media(max-width:759px){
  .cr-head{justify-content:center}.cr-label{width:100%;text-align:center}
  .cr-ctrls{width:100%}.cr-btn{flex:1 1 0;padding:8px 6px;font-size:16px}
  .cr-slide{flex-direction:column;gap:10px}.cr-art{width:100%;min-height:76px;height:76px}.cr-icon{font-size:40px}
  .cr-go{width:100%;justify-content:center}
  .cr-dot{width:22px;height:22px}
}
/* Carousel photos (Nov 3, 2026): every card has a real photo (venue, town or category; see img/photos/credits.json). */
.cr-art.cr-photo{width:240px;min-height:170px;background:#dfe6ef}
.cr-photo img{object-position:center 45%}
.cr-photo .cr-credit{display:block;text-decoration:none}
.cr-photo a.cr-credit:hover,.cr-photo a.cr-credit:focus-visible{text-decoration:underline}
@media(max-width:759px){.cr-art.cr-photo{width:100%;height:150px;min-height:150px}}
@media(prefers-reduced-motion:reduce){.cr-slide{transition:none}.cr-dot[aria-current="true"]{transform:none}}
/* Anchor mark (img/anchor.svg, Oct 29): header .logo-mark keeps its 38px box; home hero gets a small decorative anchor under the eyebrow line (soft white halo so the navy reads on the dark photo). Remove this block (and the <img class="hero-anchor">) to undo. */
img.logo-mark{display:block;object-fit:contain}
/* Anchor height match (Oct 29): img/anchor.svg viewBox is now tight to the artwork, so the header mark stretches to exactly the height of .logo-text (ring top = text top, anchor bottom = text bottom); width follows the 57:61.5 aspect ratio. Hero anchor keeps its old 30px/26px box and artwork size via padding equal to the old viewBox margins (1, 3.5, 1.5, 3.5 of 64). Remove this block (and restore img/anchor.svg.bak-anchorheight-20261029) to undo. */
.logo{display:grid;grid-auto-flow:column;grid-auto-columns:auto;align-items:stretch;justify-content:start}
img.logo-mark{align-self:stretch;height:auto;width:auto;aspect-ratio:57/61.5;contain:size;object-fit:contain}
/* Red hero anchor (Oct 29): img/anchor-red.svg (slogan red #C92A2A, viewBox tight to the artwork) sits left of the home hero h1 and stretches to exactly the h1's height, same grid technique as the header mark; a thin white halo keeps the red readable on the dark photo. Remove this block and the <img class="hero-anchor-red"> to undo. */
.hero h1:has(> .hero-anchor-red){display:grid;grid-auto-flow:column;grid-auto-columns:auto;align-items:stretch;justify-content:start;column-gap:.22em}
.hero-anchor-red{display:block;align-self:stretch;height:auto;width:auto;aspect-ratio:57/61.5;contain:size;object-fit:contain;filter:drop-shadow(0 0 1px rgba(255,255,255,.9)) drop-shadow(0 0 4px rgba(0,0,0,.35))}
@media(max-width:389px){.hero h1:has(> .hero-anchor-red){padding-right:0}}
/* White hero anchor (Oct 29, Donnie): the anchor left of the home hero h1 is now img/anchor-white.svg; dark shadow instead of the white halo so it reads on the photo. Undo: point the img back at anchor-red.svg and delete this rule. */
.hero-anchor-white{filter:drop-shadow(0 1px 2px rgba(0,0,0,.55)) drop-shadow(0 0 6px rgba(0,0,0,.3))}
/* Eyebrow "Live like you mean it" lines up with the R of the hero title (Oct 29, Donnie); js/app.js alignHeroEyebrow() sets the exact offset, this is the fallback. */
.hero .eyebrow.align-r{display:block}
/* Hero tagline in script (Oct 29, Donnie): Dancing Script Bold (Impallari Type, SIL Open Font License 1.1; see fonts/DancingScript-OFL.txt), self-hosted Latin subset. Bigger, sentence case, no letter-spacing. Undo: delete these lines. */
@font-face{font-family:"Dancing Script";src:url("../fonts/DancingScript-Bold-latin.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
.hero .eyebrow.align-r{font-family:"Dancing Script","Segoe Script","Brush Script MT",cursive;font-weight:700;text-transform:none;letter-spacing:.2px;font-size:clamp(22px,2.4vw,30px);line-height:1.1;margin-bottom:4px;text-shadow:0 1px 3px rgba(0,0,0,.55)}
/* "Submit your event for free" button under the home hero subhead (Oct 29, Donnie). Big, obvious, gold. Links to contact.html until an event submission form exists. Undo: delete this rule and the <p class="hero-submit"> in index.html. */
.hero-submit{margin:4px 0 16px}
.btn-submit-event{font-size:18px;padding:13px 24px;min-height:52px;box-shadow:0 3px 12px rgba(0,0,0,.3)}
@media(max-width:520px){.hero-submit .btn-submit-event{display:flex;justify-content:center;width:100%;font-size:17px}}

/* ==========================================================================
   SUBMIT-EVENT FORM (submit-event.html) + REVIEW QUEUE (review.html)
   Added 2026-10-29. Backup of the previous file: css/styles.css.bak-submitflow-20261029
   ========================================================================== */
.se-section,.rv-section{padding:28px 0 48px}
.se-wrap{max-width:820px}
.se-review-note{background:var(--warn-bg);color:#4A3000;border:2px solid #F0C36D;border-radius:14px;padding:16px 18px;font-size:18px;line-height:1.5;margin:0 0 20px}
.se-form{padding:24px}
.se-form *,.rv-card *{box-sizing:border-box}
.se-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.se-req-key{margin:0 0 8px;color:var(--muted);font-size:16px}
.se-star{color:#C92A2A;font-weight:800}
.se-opt{font-weight:400;color:var(--muted)}
.se-group{border:0;margin:0 0 10px;padding:0;min-width:0}
.se-group legend{font-size:22px;font-weight:800;color:var(--navy);padding:14px 0 6px}
.se-field{display:flex;flex-direction:column;gap:6px;margin:0 0 16px;min-width:0}
.se-field label,.se-label{font-size:18px;font-weight:700;color:var(--ink)}
.se-form input[type=text],.se-form input[type=url],.se-form input[type=email],.se-form input[type=tel],
.se-form input[type=date],.se-form input[type=time],.se-form select,.se-form textarea{
  width:100%;max-width:100%;min-height:54px;padding:12px 14px;font:inherit;font-size:18px;color:var(--ink);
  background:#fff;border:2px solid #9AA8BF;border-radius:10px}
.se-form textarea{min-height:130px;resize:vertical;line-height:1.45}
.se-form input:focus,.se-form select:focus,.se-form textarea:focus{outline:3px solid #F5A623;outline-offset:1px;border-color:var(--navy)}
.se-form input:user-invalid,.se-form textarea:user-invalid,.se-form select:user-invalid{border-color:#C92A2A;background:#FFF5F5}
.se-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 16px}
.se-hint{margin:0;color:var(--muted);font-size:15px}
.se-center{text-align:center;margin-top:10px}
.se-price{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.se-price input[type=text]{flex:1 1 200px;width:auto}
.se-price input:disabled{background:#EEF1F6;color:#8A94A8}
.se-check{display:flex;align-items:flex-start;gap:12px;font-size:18px;font-weight:700;cursor:pointer;line-height:1.4}
.se-check input{width:28px;height:28px;min-width:28px;margin:0;accent-color:var(--navy);cursor:pointer}
.se-free{background:var(--foam);border:2px solid #9AA8BF;border-radius:10px;padding:12px 16px;align-items:center}
.se-confirm{background:var(--sand-2);border:2px solid var(--navy);border-radius:12px;padding:16px;margin:8px 0 20px}
.se-submit{display:flex;justify-content:center;width:100%;font-size:21px;min-height:62px;padding:16px 24px;box-shadow:0 3px 12px rgba(0,0,0,.18)}
.se-errors{background:#FFF0F0;border:2px solid #C92A2A;color:#7A1010;border-radius:12px;padding:12px 16px;margin:0 0 16px;font-size:17px}
.se-errors ul{margin:6px 0 0;padding-left:20px}
.se-thanks{text-align:center;padding:36px 22px;border:3px solid var(--teal)}
.se-thanks{scroll-margin-top:150px}
.se-thanks:focus{outline:none}
.se-thanks h2{color:var(--navy);font-size:clamp(24px,4vw,32px);margin:6px 0 10px}
.se-thanks p{font-size:19px}
.se-thanks .btn{margin:6px 4px}
.se-thanks-icon{font-size:52px;margin:0}
.contact-submit{margin:16px 0 4px}
.contact-submit .btn{font-size:18px;min-height:52px;padding:13px 22px}

/* review queue */
.rv-toolbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:0 0 8px}
.rv-export{font-size:17px;min-height:50px;padding:12px 20px}
.rv-counts{font-weight:700;color:var(--navy)}
.rv-source{color:var(--muted);font-size:15px;margin:0 0 10px}
.rv-h{color:var(--navy);margin:28px 0 12px;padding-bottom:6px;border-bottom:3px solid var(--line);font-size:26px}
.rv-n{color:var(--muted);font-weight:600}
.rv-list{display:grid;gap:18px}
.rv-empty{color:var(--muted);font-size:17px;margin:0}
.rv-card{background:#fff;border:2px solid var(--line);border-left:8px solid #9AA8BF;border-radius:16px;padding:20px;box-shadow:var(--shadow);min-width:0;overflow-wrap:anywhere}
.rv-card.rv-approved{border-left-color:#2F9E44}.rv-card.rv-rejected{border-left-color:#C92A2A;opacity:.92}.rv-card.rv-needs-info{border-left-color:#6B7385}
.rv-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.rv-card h3{margin:0;font-size:24px;color:var(--navy)}
.rv-status{font-weight:800;font-size:14px;text-transform:uppercase;letter-spacing:.04em;padding:5px 12px;border-radius:999px;background:#E3E8F0;color:var(--ink)}
.rv-st-approved{background:#D3F9D8;color:#1B5E20}.rv-st-rejected{background:#FFE3E3;color:#8B1A1A}.rv-st-needs-info{background:#E9ECEF;color:#343A40}
.rv-sample-badge{display:inline-block;background:#FFD166;color:#141B33;font-weight:800;padding:6px 12px;border-radius:8px;margin:0 0 10px;font-size:15px}
.rv-is-sample{border-style:dashed}
.rv-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px 20px;margin:14px 0}
.rv-f{min-width:0}
.rv-f dt{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.rv-f dd{margin:2px 0 0;font-size:17px}
.rv-f dd a{color:var(--sea);font-weight:700}
.rv-desc{white-space:pre-wrap}
.rv-bad{color:#B42318;font-weight:700}
.rv-dups{border-radius:12px;padding:10px 14px;background:var(--foam);margin:0 0 14px;font-size:16px}
.rv-dups p{margin:0}.rv-dups ul{margin:6px 0 0;padding-left:20px}
.rv-dup-warn{color:#7A4B00}.rv-dup-none{color:#1B5E20;font-weight:700}
.rv-checks{border:2px solid var(--line);border-radius:12px;padding:10px 14px 4px;margin:0 0 14px;min-width:0}
.rv-checks legend{font-weight:800;color:var(--navy);padding:0 6px;font-size:17px}
.rv-check{display:flex;gap:12px;align-items:flex-start;font-size:17px;margin:0 0 10px;cursor:pointer;line-height:1.35}
.rv-check input{width:26px;height:26px;min-width:26px;margin:0;accent-color:#2F9E44;cursor:pointer}
.rv-approved-note{background:#D3F9D8;color:#1B5E20;font-weight:800;border-radius:10px;padding:10px 14px;margin:0 0 12px}
.rv-decided{color:var(--muted);margin:0 0 10px;font-size:15px}
.rv-actions{display:flex;gap:10px;flex-wrap:wrap}
.rv-btn{flex:1 1 150px;justify-content:center;min-height:56px;font-size:19px;color:#fff;border:2px solid transparent}
.rv-approve{background:#2F9E44}.rv-approve:hover{background:#237A35}
.rv-reject{background:#C92A2A}.rv-reject:hover{background:#A51F1F}
.rv-needs{background:#6B7385}.rv-needs:hover{background:#525969}
.rv-undo{background:#fff;color:var(--navy);border-color:var(--navy)}
.rv-btn:focus-visible{outline:3px solid #F5A623;outline-offset:2px}
@media(max-width:520px){
  .se-form{padding:16px}
  .se-review-note{font-size:17px}
  .rv-card{padding:16px}.rv-card h3{font-size:21px}
  .rv-fields{grid-template-columns:1fr}
  .rv-btn{flex:1 1 100%}
}
/* ===== end SUBMIT-EVENT + REVIEW block ===== */
/* Tagline switched to option 7, Allura white extra large (Oct 29, Donnie). Allura (The Allura Project Authors), SIL OFL 1.1 (fonts/Allura-OFL.txt). Color changed to button gold #FFD166 (Oct 29, Donnie). Undo: delete these lines to go back to Dancing Script gold. */
@font-face{font-family:"Allura";src:url("../fonts/Allura-Regular-latin.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
.hero .eyebrow.align-r{font-family:"Allura","Dancing Script","Segoe Script",cursive;font-weight:400;color:#FFD166;font-size:clamp(32px,3.4vw,48px);line-height:1.05;letter-spacing:0;margin-bottom:2px;text-shadow:0 2px 4px rgba(0,0,0,.6)}
/* Arrow on the gold submit button (Oct 29, Donnie): sits BEFORE "Submit" pointing at the S; inline SVG arrow, same navy as the button text, nudges right on hover. Undo: delete these lines and the <span class="btn-arrow">. */
.btn-submit-event .btn-arrow{display:inline-flex;align-items:center;margin-right:.45em;vertical-align:-.12em;transition:transform .15s ease}.btn-submit-event .btn-arrow svg{width:1.2em;height:1.2em}
.btn-submit-event:hover .btn-arrow,.btn-submit-event:focus-visible .btn-arrow{transform:translateX(3px)}

/* ===== Activities page (activities.html, built by build/build_activities.py) — Oct 30 2026 ===== */
/* Main menu on phones/tablets: wrap onto extra rows instead of a sideways scroll, so every link (incl. Activities) is visible */
@media(max-width:979px){.main-nav{overflow-x:visible}.main-nav ul{flex-wrap:wrap;justify-content:center;gap:2px 4px;white-space:normal}.main-nav li{white-space:nowrap}.main-nav a{padding:7px 11px;font-size:15px}}
.act-hero .tag{max-width:760px}
.act-pick-sec{padding-top:8px}
.act-pick{display:grid;gap:14px}
.act-pick-row{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px 16px;box-shadow:var(--shadow)}
.act-pick-h{margin:0 0 10px;font-size:20px}
.act-pick-h a{color:var(--navy);text-decoration:none}
.act-pick-h a:hover{text-decoration:underline}
.act-btns{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.act-btn{display:flex;align-items:center;gap:10px;min-height:56px;padding:10px 16px;border-radius:14px;border:3px solid var(--sea);background:var(--foam);color:var(--navy);font-weight:800;font-size:17px;line-height:1.2;text-decoration:none}
.act-btn:hover{background:var(--sea);color:#fff}
.act-btn:focus-visible{outline:3px solid var(--navy);outline-offset:3px}
.act-btn .act-emoji{font-size:24px;flex:none}
.act-btn.date{border-color:#C92A2A;background:#FFF0F0;color:#8A1C1C}.act-btn.date:hover{background:#C92A2A;color:#fff}
.act-note{margin:14px 0 0;color:var(--muted)}
.act-group{scroll-margin-top:12px}
.act-group:nth-of-type(even){background:linear-gradient(180deg,rgba(232,243,251,.6),rgba(232,243,251,0))}
.act-group .sec-head h2 span{margin-right:4px}
.act-also{margin:0 0 14px;font-size:16px}.act-also a{font-weight:700}
.act-cat{margin:0 0 26px;scroll-margin-top:12px}
.act-cat h3{margin:0 0 4px;font-size:clamp(21px,2.6vw,26px);color:var(--navy);display:flex;align-items:center;gap:8px}
.act-cat h3 .act-emoji{font-size:1.15em}
.act-blurb{margin:0 0 12px;color:var(--muted);max-width:820px}
.act-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}
.act-card{background:#fff;border:1px solid var(--line);border-left:5px solid var(--sea);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);display:flex;flex-direction:column;scroll-margin-top:16px}
.act-card.ne{border-left-color:#7A8BA8}
.act-card:target{box-shadow:0 0 0 4px #FFD166,var(--shadow)}
.act-card h4{margin:0 0 4px;font-size:18px;color:var(--navy);line-height:1.25}
.act-where{margin:0 0 6px;font-size:14px;font-weight:700;color:var(--muted)}
.act-desc{margin:0 0 8px;font-size:15px;line-height:1.5;color:var(--ink)}
.act-badges{margin:0 0 8px;display:flex;flex-wrap:wrap;gap:6px}
.act-badge{display:inline-block;border-radius:999px;font-size:12.5px;font-weight:800;padding:2px 9px}
.act-badge.fam{background:#FFE8CC;color:#7A3E00;border:2px solid #E8590C}
.act-badge.date{background:#FFF0F0;color:#8A1C1C;border:2px solid #C92A2A}
.act-link{margin:auto 0 0;font-size:15px}
.act-link a{font-weight:800;text-decoration:none;border-bottom:2px solid currentColor}
.act-cal,.act-big-link{margin:12px 0 0}
.act-go{font-size:17px;padding:13px 22px}
.act-top{margin:10px 0 0;font-size:14px}.act-top a{font-weight:700}
.act-date{background:linear-gradient(135deg,#FFF5F5,#FFF);}
.dn-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.dn-list a{display:flex;flex-direction:column;gap:2px;min-height:56px;padding:10px 14px;border-radius:14px;border:2px solid #E3A3A3;background:#fff;text-decoration:none;color:var(--ink)}
.dn-list a:hover{border-color:#C92A2A;background:#FFF0F0}
.dn-cat{font-size:13px;font-weight:800;color:#8A1C1C;text-transform:uppercase;letter-spacing:.3px}
.dn-name{font-weight:800;color:var(--navy);font-size:16px}
.dn-where{font-size:13px;color:var(--muted)}
/* Homepage "Things to do" teaser */
@media(min-width:980px){.home-act .act-btns{grid-template-columns:repeat(5,1fr)}}
@media(max-width:560px){.act-btns{grid-template-columns:1fr 1fr;gap:8px}.act-btn{font-size:15px;padding:8px 10px;gap:7px;min-height:52px}.act-btn .act-emoji{font-size:20px}}
/* Celebrity Sightings tab (celebrity-sightings.html, js/celebrities.js) */
.celeb-list{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:1fr}
@media(min-width:760px){.celeb-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
.celeb-card{border-left:5px solid #FFD166}
.celeb-card.celeb-filming{border-left-color:#C92A2A}
.celeb-card.celeb-arrival{border-left-color:var(--sea)}
.celeb-pills{margin:0 0 6px}
.celeb-badge{background:#FFF4D6;color:#5C4400}
.celeb-filming .celeb-badge{background:#FFF0F0;color:#8A1C1C}
.celeb-arrival .celeb-badge{background:var(--foam);color:var(--navy)}
.celeb-name{margin:0 0 2px;font-size:13px;font-weight:800;letter-spacing:.4px;text-transform:uppercase;color:var(--sea)}
.celeb-card .where{margin-top:6px}
.celeb-list .empty{grid-column:1/-1;list-style:none}
.celeb-note{margin-top:14px;color:var(--muted);font-size:14px}
.celeb-photo{margin:0 0 10px}
.celeb-photo img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;border-radius:10px;background:var(--foam)} /* Nov 3 2026 Donnie: show full photo, no face crop; box sizes may vary */
.celeb-credit{margin:4px 0 0;font-size:11.5px;line-height:1.35;color:var(--muted)}
.celeb-credit a{color:inherit;text-decoration:underline}
/* Homepage "Today" + "Date Night" sections (order change 2026-11-03) */
.home-date .dn-btn-txt{display:flex;flex-direction:column;min-width:0}
.home-date .dn-btn-txt small{font-size:13px;font-weight:600;opacity:.85;margin-top:2px}
@media(min-width:980px){.home-date .act-btns{grid-template-columns:repeat(5,1fr)}}
/* Interior page headers (Nov 3, 2026, Donnie): plain light-blue/sun page heroes now use the homepage hero photo
   (img/photos/hero-donnie-lighthouse-dusk.jpg, slot "hero" in credits.json) with the same dark shade as .hero-photo-shade.
   Pages that already have their own photo or theme (.photo-hero, movies, nightlife, NYE) are untouched. Undo: delete this block. */
.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero){background:#0E265C url("../img/photos/hero-donnie-lighthouse-dusk.jpg") center 60%/cover no-repeat}
.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero)::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(90deg,rgba(7,14,38,.72) 0%,rgba(7,14,38,.45) 50%,rgba(7,14,38,.05) 100%),linear-gradient(180deg,rgba(7,14,38,.3) 0%,rgba(7,14,38,0) 30%)}
@media(max-width:759px){.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero)::before{background:linear-gradient(180deg,rgba(7,14,38,.72) 0%,rgba(7,14,38,.6) 60%,rgba(7,14,38,.45) 100%)}}
.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero) .hero-sun,
.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero) .hero-light{display:none}
.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero) .hero-waves{z-index:2}
.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero) .hero-in{z-index:3;padding-top:44px}
@media(min-width:760px){.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero) .hero-in{padding-top:64px;padding-bottom:110px}}
.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero) h1{color:#fff;text-shadow:0 2px 14px rgba(0,0,0,.45)}
.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero) p.tag{color:#EAF2FF;text-shadow:0 1px 8px rgba(0,0,0,.5)}
.page-hero:not(.photo-hero):not(.movies-hero):not(.nightlife):not(.nye-hero) .eyebrow{color:#FFD166}

/* ===== Main menu with dropdowns (Nov 3, 2026; js/nav.js). Home · Today · This Week · Events · Things to Do ▾ · Explore ▾ · About ▾ ===== */
.main-nav{position:relative;overflow:visible}
.main-nav ul{overflow:visible}
.main-nav a,.main-nav .dd-btn{font-size:17px;font-weight:700;padding:10px 16px;min-height:44px;display:flex;align-items:center}
.main-nav .dd{position:relative}
.main-nav .dd-btn{gap:6px;border:2px solid transparent;border-radius:999px;background:none;color:var(--navy);font-family:inherit;cursor:pointer;line-height:1.1}
.main-nav .dd-btn:hover,.main-nav .dd.open>.dd-btn{background:var(--foam)}
.main-nav .dd-btn.is-current{background:var(--navy);color:#fff}
.main-nav .dd-btn:focus-visible,.main-nav a:focus-visible{outline:3px solid #F5A623;outline-offset:2px}
.main-nav .dd-caret{font-size:13px;transition:transform .15s}
.main-nav .dd.open .dd-caret{transform:rotate(180deg)}
.main-nav .dd-menu{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:60;min-width:250px;margin:0;padding:8px;list-style:none;
  background:#fff;border:2px solid var(--navy);border-radius:16px;box-shadow:0 12px 30px rgba(14,38,92,.25);flex-direction:column;gap:4px;white-space:normal}
.main-nav .dd.open .dd-menu{display:flex}
.main-nav .dd-menu::before{content:"";position:absolute;left:0;right:0;top:-10px;height:10px} /* hover bridge */
.main-nav .dd-menu a{font-size:18px;padding:12px 16px;border-radius:12px;min-height:48px}
.main-nav .dd-menu a:hover{background:var(--foam)}
.main-nav .dd-menu a[aria-current="page"]{background:var(--navy);color:#fff}
.main-nav .dd:last-child .dd-menu{left:auto;right:0}
@media(max-width:979px){
  .main-nav ul{gap:6px}
  .main-nav a,.main-nav .dd-btn{font-size:17px;padding:9px 14px;border:2px solid var(--line,#d8e0ea);background:#fff}
  .main-nav a[aria-current="page"]{border-color:var(--navy)}
  .main-nav .dd-btn.is-current{border-color:var(--navy)}
  /* phones: an open menu takes its own full-width row and pushes the page down (nothing covers the page) */
  .main-nav .dd.open{flex-basis:100%;display:flex;flex-direction:column;align-items:center}
  .main-nav .dd-menu,.main-nav .dd:last-child .dd-menu{position:static;width:100%;min-width:0;margin-top:8px;box-shadow:0 6px 18px rgba(14,38,92,.18)}
  .main-nav .dd-menu::before{display:none}
  .main-nav .dd-menu a{border:0;font-size:19px;justify-content:center;background:#F3F7FC}
}
/* Today / This Week pages */
.wk-jump{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.wk-jump-btn{font-size:16px}
.wk-day{scroll-margin-top:16px;margin:0 0 28px}
.wk-day-h{font-size:clamp(22px,3vw,28px);color:var(--navy);margin:0 0 12px;padding:10px 14px;background:var(--foam);border-radius:12px}
.wk-n{font-size:16px;font-weight:600;color:var(--muted)}
.page-actions{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0 0}

/* ===== Wordmark in headings (Nov 3, 2026, Donnie): "Rhode ⚓ Island (Life)" = same font/weight as the home hero title + the flat anchor
   (img/anchor-white.svg on dark backgrounds, img/anchor.svg navy on light) between "Rhode" and "Island". The anchor img has alt="" + aria-hidden,
   so screen readers read plain "Rhode Island Life". The wordmark words never split across lines; the rest of the heading wraps normally. ===== */
.wm{display:inline-flex;align-items:center;gap:.2em;white-space:nowrap;letter-spacing:-.5px;vertical-align:baseline}
.wm-anchor{display:inline-block;height:.9em;width:auto;aspect-ratio:57/61.5;flex:none;margin:0 .02em;transform:translateY(-.02em)}
.wm-white .wm-anchor{filter:drop-shadow(0 1px 2px rgba(0,0,0,.55)) drop-shadow(0 0 6px rgba(0,0,0,.3))}
.site-footer h2 .wm-white .wm-anchor{filter:none}
.page-hero h1 .wm{letter-spacing:-1px}

/* ===== "We think it's free" (Nov 3, 2026): no-price events without ticket signals (js/app.js isLikelyFree). Bright amber so visitors are on notice. ===== */
.pill.likely-free{background:#FFD166;color:#5A3B00;border:2px solid #E0A100;font-size:13px;font-weight:800;padding:3px 10px}
.noprice-note{margin:6px 0 0;padding:7px 10px;border-radius:10px;background:#FFF4D6;border:1px solid #F0C75E;color:#5A3B00;font-size:14px;font-weight:600;line-height:1.35}
.noprice-note.is-likely{background:#FFE9A8;border:2px solid #E0A100;font-weight:700}
.cr-price-note{margin:2px 0 0;font-size:14px;font-weight:600;color:#5A3B00;line-height:1.35;background:#FFF4D6;border-radius:10px;padding:5px 9px}
.cr-price-note.is-likely{background:#FFE9A8;border:2px solid #E0A100}
.cr-price-note .pill{margin-right:4px}
.nightlife .pill.likely-free{background:#FFD166;color:#5A3B00}
@media(max-width:759px){.noprice-note,.cr-price-note{font-size:15px}}

/* Current-section dropdown button stays navy/white when hovered or open (desktop + mobile) — Nov 3, 2026 */
.main-nav .dd-btn.is-current,.main-nav .dd-btn.is-current:hover,.main-nav .dd.open>.dd-btn.is-current{background:var(--navy);color:#fff;border-color:var(--navy)}
