:root{
  --bg:#F2F6F4; --ink:#0E2A3A; --ink-soft:#54707C;
  --green:#0E6E8C; --green-bright:#1690B4; --coral:#FF5A36; --sun:#FFB81C;
  --teal:#3E8FA8; --card:#FFFFFF; --line:#DBE5E1; --line-strong:#C3D3CF;
  --shadow:0 1px 2px rgba(14,42,58,.05),0 12px 30px rgba(14,42,58,.08);
  --r:14px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:linear-gradient(180deg,#FAFDFC 0,var(--bg) 280px);background-attachment:fixed;color:var(--ink);font-family:Inter,system-ui,sans-serif;
  font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px}

/* header */
header.top{position:sticky;top:0;z-index:60;background:rgba(242,246,244,.86);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:16px;height:44px}
.brand{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:22px;
  letter-spacing:-.02em;line-height:1;position:relative;text-decoration:none}
.brand .dot{color:var(--coral)}
.brand::after{content:"";position:absolute;left:0;right:13px;bottom:-5px;height:4px;background:var(--coral);
  border-radius:4px;transform:skewX(-12deg) scaleX(.92);opacity:.85}
.tagline{font-size:13px;color:var(--ink-soft);font-weight:500;display:none}
@media(min-width:780px){.tagline{display:block}}
.top .spacer{flex:1}
.proto{font-family:'DM Mono',monospace;font-size:11px;color:var(--green);border:1px solid var(--line-strong);
  padding:5px 9px;border-radius:999px;white-space:nowrap}

.tabbar{position:sticky;top:44px;z-index:55;background:rgba(242,246,244,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);padding:7px 0}
.tabbar .wrap{display:flex;overflow-x:auto;scrollbar-width:none}
.tabbar .wrap::-webkit-scrollbar{display:none}
.tabbar .views{flex:0 0 auto}

/* hero */
.hero{padding:6px 0 2px;position:relative}
.hero h1{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:clamp(24px,3.8vw,36px);
  line-height:1.02;letter-spacing:-.025em;margin:0 0 6px;max-width:18ch}
.hero h1 em{font-style:normal;color:var(--green)}
.hero p.sub{font-size:14px;color:var(--ink-soft);max-width:60ch;margin:0 0 6px;line-height:1.4}
.stats{display:flex;flex-wrap:wrap;gap:18px;align-items:baseline;margin-top:8px}
.stat .num{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:23px;line-height:1}
.stat .lab{font-family:'DM Mono',monospace;font-size:10.5px;color:var(--ink-soft);
  text-transform:uppercase;letter-spacing:.06em;margin-top:4px}
.wave{display:block;width:100%;height:9px;margin-top:2px;color:#A9C9D2}

/* controls */
.controls{background:var(--bg);padding:2px 0 6px;border-bottom:1px solid var(--line)}
.views{display:inline-flex;background:var(--card);border:1px solid var(--line-strong);border-radius:999px;padding:4px;gap:2px}
.view-btn{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:14px;border:0;background:transparent;
  color:var(--ink-soft);padding:8px 16px;border-radius:999px;cursor:pointer;white-space:nowrap}
.view-btn[aria-selected="true"]{background:var(--green);color:#fff}
.view-btn:focus-visible{outline:2px solid var(--coral);outline-offset:2px}
.toolrow{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:9px}
.search{flex:1;min-width:200px;position:relative}
.search input{width:100%;border:1px solid var(--line-strong);background:var(--card);border-radius:11px;
  padding:11px 12px 11px 36px;font:inherit;font-size:14px;color:var(--ink)}
.search input:focus{outline:2px solid var(--green-bright);border-color:transparent}
.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);opacity:.5}
select.f{border:1px solid var(--line-strong);background:var(--card);border-radius:11px;padding:10px 12px;
  font:inherit;font-size:14px;color:var(--ink);cursor:pointer}
select.f:focus{outline:2px solid var(--green-bright)}

.pills{display:flex;gap:7px;overflow-x:auto;padding:11px 0 3px;scrollbar-width:none}
.pills::-webkit-scrollbar{display:none}
.typebar{display:flex;align-items:center;gap:10px;margin-top:9px}
.typebar .pills{margin:0;flex:1}
.pill{font-family:'DM Mono',monospace;font-size:12px;border:1px solid var(--line-strong);background:var(--card);
  color:var(--ink-soft);padding:7px 12px;border-radius:999px;cursor:pointer;white-space:nowrap;transition:.12s}
.pill .c{opacity:.55;margin-left:5px}
.pill[aria-pressed="true"]{background:var(--green);color:#fff;border-color:var(--green)}
.pill[aria-pressed="true"] .c{opacity:.8}
.pill:focus-visible{outline:2px solid var(--coral);outline-offset:2px}

.chips{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.filtsec{display:flex;align-items:center;gap:11px;flex-wrap:wrap}
.filtlbl{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:13px;color:var(--ink);
  min-width:74px;letter-spacing:-.01em}
.agewrap{display:flex;flex-wrap:wrap;gap:7px}
.agebtn{font-family:'Bricolage Grotesque',sans-serif;font-weight:600;font-size:13.5px;border:1.5px solid var(--line-strong);
  background:var(--card);color:var(--ink);padding:8px 15px;border-radius:999px;cursor:pointer;transition:.12s}
.agebtn:hover{border-color:var(--green)}
.agebtn[aria-pressed="true"]{background:var(--green);color:#fff;border-color:var(--green)}
.agebtn:focus-visible{outline:2px solid var(--coral);outline-offset:2px}
.chip{font-family:'DM Mono',monospace;font-size:12px;border:1px solid var(--line-strong);background:var(--card);
  color:var(--ink-soft);padding:7px 12px;border-radius:999px;cursor:pointer;transition:.12s}
.chip[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.chip:focus-visible{outline:2px solid var(--coral);outline-offset:2px}
.glbl{font-family:'DM Mono',monospace;font-size:11px;color:var(--ink-soft);text-transform:uppercase;
  letter-spacing:.05em;margin-right:1px}

.legend{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:10px 0 2px;font-size:12.5px;color:var(--ink-soft)}
.legend .dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}
.dot.g{background:var(--green-bright)} .dot.a{background:var(--sun)} .dot.r{background:var(--coral)}
.countline{font-family:'DM Mono',monospace;font-size:12px;color:var(--ink-soft);margin-left:auto}


.addbtn{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:13px;border:0;background:var(--green);color:#fff;
  padding:7px 13px;border-radius:999px;cursor:pointer;white-space:nowrap}
.addbtn:hover{background:var(--green-bright,#159a52)}
.savedtab #savedcount{font-family:'DM Mono',monospace}
.card{position:relative}
.savebtn{position:absolute;top:11px;right:40px;width:30px;height:30px;border-radius:50%;border:1px solid var(--line-strong);
  background:var(--card);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;z-index:2}
.savebtn svg{width:16px;height:16px;fill:none;stroke:var(--ink-soft);stroke-width:2}
.savebtn:hover{border-color:var(--coral)}
.savebtn[aria-pressed="true"] svg{fill:var(--coral);stroke:var(--coral)}
.savebtn:focus-visible{outline:2px solid var(--coral);outline-offset:2px}
.savedbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;padding:18px 0 4px;
  font-family:'DM Mono',monospace;font-size:13px;color:var(--ink-soft)}
.savedbar .pill{cursor:pointer}
.mshare{font:inherit;font-weight:600;font-size:14px;border:1px solid var(--line-strong);background:var(--card);color:var(--ink);
  padding:11px 16px;border-radius:11px;cursor:pointer}
.mshare:hover{border-color:var(--green)}
.mimgwrap{margin-top:14px}
.mimgwrap img{display:block;width:100%;max-width:320px;margin:0 auto 12px;border-radius:14px;box-shadow:0 8px 28px rgba(14,42,58,.16)}
.mimgwrap .mimg-row{display:flex;gap:10px;justify-content:center}
.mimgwrap .mimg-load{text-align:center;color:var(--ink-soft);font-size:14px;padding:18px 0}
.mflag{font-size:12.5px;color:var(--ink-soft);align-self:center;text-decoration:underline}
#submit{position:fixed;inset:0;z-index:95;display:none;align-items:center;justify-content:center;padding:20px}
#submit.show{display:flex}
#submit .backdrop{position:absolute;inset:0;background:rgba(14,38,41,.55);backdrop-filter:blur(3px)}
#submit .sheet{max-width:520px;max-height:88vh;overflow:auto}
.suform{display:flex;flex-direction:column;gap:11px;margin:14px 0 18px}
.suform label{display:flex;flex-direction:column;gap:5px;font-family:'DM Mono',monospace;font-size:11px;
  text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft)}
.suform input,.suform select,.suform textarea{font:inherit;font-size:14px;color:var(--ink);background:var(--bg);
  border:1px solid var(--line-strong);border-radius:10px;padding:10px 11px}
.suform input:focus,.suform select:focus,.suform textarea:focus{outline:2px solid var(--green-bright);border-color:transparent}
.su2{display:grid;grid-template-columns:1fr 1fr;gap:11px}
@media(max-width:520px){.su2{grid-template-columns:1fr}}


.herocta{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.islbar{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;margin:4px 0 2px;padding-bottom:6px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.islbar .islpill{white-space:nowrap;flex:0 0 auto}
.islbar .islpill{border:1.5px solid var(--line,#e3ddd0);background:#fffdf7;border-radius:999px;padding:6px 12px;font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;color:var(--ink-soft,#5b564a);transition:all .15s}
.islbar .islpill:hover{border-color:var(--green,#0E6E8C)}
.islbar .islpill[aria-selected="true"]{background:var(--green,#0E6E8C);border-color:var(--green,#0E6E8C);color:#fff}
.ctabtn{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:15px;border:0;background:var(--green);color:#fff;
  padding:11px 18px;border-radius:12px;cursor:pointer}
.ctabtn:hover{background:var(--green-bright,#159a52)}
.ctabtn.ghost{background:var(--card);color:var(--ink);border:1px solid var(--line-strong)}
.ctabtn.ghost:hover{border-color:var(--green)}
.bundles{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;padding:22px 0 4px}
.bundle{display:flex;flex-direction:column;gap:7px;text-align:left;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:20px;cursor:pointer;box-shadow:var(--shadow);transition:.15s}
.bundle:hover{border-color:var(--green);transform:translateY(-2px)}
.bundle .bn{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:18px;letter-spacing:-.01em;color:var(--ink)}
.bundle .bw{font-size:13.5px;color:var(--ink-soft);line-height:1.4}
.bundle .bgo{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:13px;color:var(--green);margin-top:4px}
.bundle:focus-visible{outline:2px solid var(--coral);outline-offset:2px}
#quiz{position:fixed;inset:0;z-index:96;display:none;align-items:center;justify-content:center;padding:20px}
#quiz.show{display:flex}
#quiz .backdrop{position:absolute;inset:0;background:rgba(14,38,41,.55);backdrop-filter:blur(3px)}
#quiz .sheet{max-width:460px;width:100%}
.qzprog{font-family:'DM Mono',monospace;font-size:11px;color:var(--ink-soft);letter-spacing:.05em;margin:6px 0 2px}
#qz-q{margin:2px 0 16px}
.qzopts{display:flex;flex-direction:column;gap:9px}
.qzopt{font-family:'Bricolage Grotesque',sans-serif;font-weight:600;font-size:15px;text-align:left;border:1.5px solid var(--line-strong);
  background:var(--card);color:var(--ink);padding:13px 16px;border-radius:12px;cursor:pointer;transition:.12s}
.qzopt:hover{border-color:var(--green);background:#F4F8F1}
.qzback{font:inherit;font-weight:600;font-size:13px;border:0;background:transparent;color:var(--ink-soft);cursor:pointer;padding:6px 0}
.qzback[hidden]{display:none}
.heads{margin:2px 0 0;padding:10px 12px;background:#FFF6E9;border:1px solid #F2D9A8;border-radius:10px;font-size:13px;color:#7a5a1e}


.filterbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 0 10px}
.filterbar .search{flex:1 1 240px;min-width:190px;display:flex;align-items:center;gap:8px;background:var(--card);
  border:1px solid var(--line-strong);border-radius:11px;padding:0 13px;height:40px;color:var(--ink-soft)}
.filterbar .search input{border:0;background:transparent;font:inherit;font-size:14.5px;color:var(--ink);width:100%;height:100%;outline:none}
.filterbar .search svg{flex:none;opacity:.5}
.fsel{height:40px;border:1px solid var(--line-strong);background:var(--card);border-radius:11px;padding:0 32px 0 13px;
  font-family:'Inter',sans-serif;font-size:14px;font-weight:500;color:var(--ink);cursor:pointer;max-width:200px;
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23527a5e' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center}
.fdate{height:40px;border:1px solid var(--line-strong);background:var(--card);border-radius:11px;padding:0 10px;font:inherit;font-size:13px;color:var(--ink);max-width:148px}
.fdate:focus-visible{outline:2px solid var(--green);outline-offset:1px}
.fsel:hover{border-color:var(--green)}
.fsel:focus-visible{outline:2px solid var(--green);outline-offset:1px}
.freset{height:40px;padding:0 14px;border:0;background:transparent;color:var(--ink-soft);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;border-radius:10px}
.freset:hover{color:var(--coral);background:#fff}
.subbar{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);margin-top:2px;padding:11px 0 16px}
.legend{display:flex;gap:15px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-soft)}
.legend>span{display:inline-flex;align-items:center;gap:6px}
.countline{font-family:'DM Mono',monospace;font-size:12px;color:var(--ink-soft);white-space:nowrap}
@media(max-width:560px){.fsel{flex:1 1 calc(50% - 4px);max-width:none}}


/* happy Guernsey animals */
.herofarm{position:absolute;right:2px;bottom:6px;display:flex;gap:4px;align-items:flex-end;pointer-events:none}
.ani{display:block}
.ani .bob{transform-origin:50% 100%;animation:bob 2.6s ease-in-out infinite}
.ani:nth-child(2) .bob{animation-delay:.45s}
.ani:nth-child(3) .bob{animation-delay:.9s}
.ani .ears{transform-origin:30px 18px;animation:earwig 3.2s ease-in-out infinite}
.ani .wing{transform-origin:8px 30px;animation:flap 2.6s ease-in-out infinite}
.ani .wing2{transform-origin:40px 30px;animation:flap 2.6s ease-in-out infinite .2s}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes earwig{0%,100%{transform:rotate(0)}50%{transform:rotate(-7deg)}}
@keyframes flap{0%,100%{transform:rotate(0)}50%{transform:rotate(-13deg)}}
@media(prefers-reduced-motion:reduce){.ani .bob,.ani .ears,.ani .wing,.ani .wing2{animation:none}}
@media(max-width:820px){.herofarm{position:static;justify-content:center;margin:10px 0 -4px}}
@media(max-width:560px){.herofarm .pf{display:none}}


.emptyani{margin:0 0 4px}.emptyani .ani,.plansintro .ani,.qzani .ani,.footani .ani{display:inline-block;vertical-align:bottom}
.plansintro{display:flex;align-items:center;gap:10px;margin:8px 0 2px;color:var(--ink-soft);font-size:14.5px}
.plansintro .ani{flex:none}
.qzani{display:flex;gap:4px;justify-content:center;align-items:flex-end;margin:0 0 2px}
.qzani .ani{width:40px;height:auto}
.footani{display:flex;gap:10px;justify-content:center;align-items:flex-end;margin:20px 0 2px}

/* week day-strip */
.weekstrip{display:flex;gap:10px;overflow-x:auto;padding:18px 0 4px;scrollbar-width:none}
.weekstrip::-webkit-scrollbar{display:none}
.daytile{min-width:108px;background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:13px 15px;text-decoration:none;flex-shrink:0;transition:.15s}
.daytile:hover{border-color:var(--line-strong);transform:translateY(-2px)}
.daytile .wd{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:17px}
.daytile .dd{font-family:'DM Mono',monospace;font-size:12px;color:var(--ink-soft);margin-top:1px}
.daytile .ct{font-family:'DM Mono',monospace;font-size:11px;color:var(--green);margin-top:9px}
.daytile.today{border-color:var(--coral);box-shadow:0 0 0 1px var(--coral) inset}
.daytile.today .wd{color:var(--coral)}

/* day group + timeline */
.daygroup{margin-top:26px}
.dayhead{display:flex;align-items:baseline;gap:11px;margin:0 0 12px}
.dayhead h2{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:21px;letter-spacing:-.01em;margin:0}
.dayhead .dsub{font-family:'DM Mono',monospace;font-size:12px;color:var(--ink-soft)}
.todaypill{font-family:'DM Mono',monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;
  background:var(--coral);color:#fff;padding:3px 8px;border-radius:999px}

/* grid + cards */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(278px,1fr));gap:16px;padding:8px 0 4px}
.section-grid{padding-top:22px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;gap:10px;position:relative;animation:rise .5s cubic-bezier(.2,.7,.2,1) both}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.card:hover{border-color:var(--line-strong);transform:translateY(-2px);transition:.16s}
.card .trust{position:absolute;top:16px;right:16px;width:11px;height:11px;border-radius:50%}
.trust.g{background:var(--green-bright)} .trust.a{background:var(--sun)} .trust.r{background:var(--coral)}
.cat{font-family:'DM Mono',monospace;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--green);font-weight:500}
.card h3{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:18.5px;line-height:1.12;margin:0;letter-spacing:-.01em;padding-right:18px}
.prov{font-size:13px;color:var(--ink-soft);margin-top:-3px}
.ten{font-size:13px;color:var(--ink-soft);font-style:italic;margin-top:-2px}
.meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.tag{font-family:'DM Mono',monospace;font-size:11.5px;background:#F0F4ED;border:1px solid var(--line);color:var(--ink-soft);padding:4px 8px;border-radius:7px;white-space:nowrap}
.tag.free{background:#E7F4EC;border-color:#BFE3CC;color:var(--green)}
.tag.tagnew{background:var(--sun,#F4C84A);border-color:#E0B43A;color:#0E2A3A;font-weight:600}
.tag.tagfound{background:transparent;border-style:dashed;opacity:.7}
.tag.when{background:#FBF1E2;border-color:#F0DBB8;color:#9A6B16}
.tag.drop{background:#EAF2F4;border-color:#CBE0E5;color:#2C6873}
.dl{margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:10px;padding-top:6px}
.where{font-size:12.5px;color:var(--ink-soft)}
.where b{color:var(--ink);font-weight:600}
.actions{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.book{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:13px;text-decoration:none;color:var(--green);
  border:1px solid var(--line-strong);padding:7px 12px;border-radius:9px;white-space:nowrap}
.book:hover{background:var(--green);color:#fff;border-color:var(--green)}
.book:focus-visible,.addcal:focus-visible{outline:2px solid var(--coral);outline-offset:2px}
.book.venue{color:var(--ink-soft,#54707C);border-color:var(--line,#e3e8e5)}
.book.venue:hover{background:var(--ink,#0E2A3A);color:#fff;border-color:var(--ink,#0E2A3A)}
.addcal{font-family:'DM Mono',monospace;font-size:11px;color:var(--teal);text-decoration:none;white-space:nowrap}
.addcal:hover{text-decoration:underline}

.sportcard{padding:15px 16px;gap:6px}
.sportcard h3{font-size:16px}
.sportcard .cat{color:var(--teal)}

.empty{text-align:center;padding:60px 20px;color:var(--ink-soft)}
.empty h3{font-family:'Bricolage Grotesque',sans-serif;font-size:22px;color:var(--ink);margin:0 0 8px}
.empty button{margin-top:14px;font:inherit;font-weight:600;background:var(--green);color:#fff;border:0;padding:10px 18px;border-radius:10px;cursor:pointer}

/* footer */
footer{margin-top:46px;background:var(--ink);color:#D7E2DE;padding:44px 0 52px}
footer h4{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;color:#fff;font-size:16px;margin:0 0 14px}
.srcgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px 28px;font-size:13.5px}
.srcgrid a{color:#9FE0BE;text-decoration:none}
.srcgrid a:hover{text-decoration:underline}
.srcgrid li{margin:0 0 7px;list-style:none}.srcgrid ul{padding:0;margin:0}
.srcgrid .off{color:#E89C8C}
.fnote{margin-top:26px;font-size:12.5px;color:#86A199;max-width:74ch}
.signup{margin:0 0 34px;padding:0 0 30px;border-bottom:1px solid rgba(255,255,255,.12)}
.signup-sub{margin:0 0 14px;font-size:13.5px;color:#9FB4AC;max-width:60ch}
.signup-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.signup-row input,.signup-row select{font-family:inherit;font-size:14px;padding:9px 11px;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:rgba(255,255,255,.06);color:#fff}
.signup-row input{flex:1 1 220px;min-width:180px}
.signup-row input::placeholder{color:#7E948C}
.signup-row select{background:#16302E;cursor:pointer}
.signup-row button{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:14px;border:0;border-radius:8px;padding:10px 18px;background:var(--green);color:#fff;cursor:pointer}
.signup-row button:hover{background:var(--green-bright,#159a52)}
.signup-row button:disabled{opacity:.6;cursor:default}
.signup-msg{margin:12px 0 0;font-size:13.5px;color:#9FE0BE}
/* inline listing signup — injected into the card grid every ~20 listings */
.ilsign{grid-column:1/-1;background:linear-gradient(135deg,#0E2A3A,#15485C);border-radius:var(--r);padding:22px 24px;box-shadow:var(--shadow);color:#fff}
.ilsign h4{margin:0 0 4px;font-family:'Bricolage Grotesque',sans-serif;font-size:18px;color:#fff}
.ilsign p{margin:0 0 12px;font-size:13.5px;color:#9FB4AC;max-width:60ch}
.ilsign .ilr{display:flex;flex-wrap:wrap;gap:8px}
.ilsign input{flex:1 1 200px;min-width:160px;font-family:inherit;font-size:14px;padding:10px 12px;border:1px solid rgba(255,255,255,.22);border-radius:8px;background:rgba(255,255,255,.08);color:#fff}
.ilsign input::placeholder{color:#7E948C}
.ilsign .ils-go{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:14px;border:0;border-radius:8px;padding:10px 18px;background:var(--coral);color:#fff;cursor:pointer}
.ilsign .ils-go:hover{filter:brightness(1.08)}
.ilsign .ils-go:disabled{opacity:.6;cursor:default}
.ilsign .ilmsg{margin:10px 0 0;font-size:13px;color:#9FE0BE}
.fver{margin:18px 0 0;font-size:12px;color:#6E8A82;font-family:'DM Mono',monospace;letter-spacing:.02em}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:560px){.hero{padding:6px 0 2px}.stats{gap:16px}.grid{grid-template-columns:1fr}}

/* hover tooltip */
#tip{position:fixed;z-index:80;max-width:300px;background:var(--ink);color:#EAF1ED;padding:12px 14px;border-radius:12px;
  box-shadow:0 12px 34px rgba(0,0,0,.28);font-size:13px;line-height:1.45;pointer-events:none;opacity:0;display:none;transition:opacity .12s}
#tip.show{opacity:1}
#tip h5{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:15px;margin:0 0 5px;color:#fff}
#tip .tmeta{font-family:'DM Mono',monospace;font-size:11px;color:#9FE0BE;margin-top:8px}
/* details button + adult tag */
.more{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:13px;border:1px solid var(--line-strong);
  background:var(--card);color:var(--ink-soft);padding:7px 12px;border-radius:9px;cursor:pointer}
.more:hover{border-color:var(--ink);color:var(--ink)}
.more:focus-visible,.card:focus-visible{outline:2px solid var(--coral);outline-offset:2px}
.tag.adult{background:#F3E9F6;border-color:#E2CBEA;color:#7A3E8E}
.card.isadult .cat{color:#7A3E8E}
/* modal */
#modal{position:fixed;inset:0;z-index:90;display:none;align-items:center;justify-content:center;padding:20px}
#modal.show{display:flex}
#modal .backdrop{position:absolute;inset:0;background:rgba(14,38,41,.55);backdrop-filter:blur(3px)}
.sheet{position:relative;background:var(--card);border-radius:20px;max-width:480px;width:100%;padding:28px;
  box-shadow:0 30px 80px rgba(0,0,0,.32);max-height:86vh;overflow:auto;animation:rise .35s cubic-bezier(.2,.7,.2,1) both}
.sheet .x{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:50%;border:1px solid var(--line-strong);
  background:var(--card);font-size:19px;line-height:1;cursor:pointer;color:var(--ink-soft)}
.sheet .x:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.sheet .mcat{font-family:'DM Mono',monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--green)}
.sheet h3{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:24px;letter-spacing:-.01em;margin:6px 0 2px;padding-right:34px}
.sheet .mprov{color:var(--ink-soft);font-size:14px;font-style:italic;margin-bottom:12px}
#m-hero{width:100%;border-radius:14px;max-height:230px;object-fit:cover;display:block;margin:12px 0 6px}
.sheet .mrows dd a{color:var(--teal);text-decoration:none}.sheet .mrows dd a:hover{text-decoration:underline}
.sheet .mbook.alt{background:var(--card);color:var(--green);border:1px solid var(--green)}
.sheet .mdesc{font-size:14.5px;line-height:1.55;margin:0 0 18px}
.msources{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:12px}
.msrch{font-family:'DM Mono',monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);width:100%}
.msrc{font-size:12px;color:var(--teal);text-decoration:none;border:1px solid var(--line);padding:3px 9px;border-radius:7px;background:var(--card)}
.msrc:hover{text-decoration:underline;border-color:var(--teal)}
.sheet .mrows{display:grid;grid-template-columns:auto 1fr;gap:9px 16px;font-size:13.5px;margin:0 0 20px}
.sheet .mrows dt{font-family:'DM Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);padding-top:2px}
.sheet .mrows dd{margin:0;font-weight:500}
.sheet .mact{display:flex;gap:10px;flex-wrap:wrap}
.sheet .mact a{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:14px;text-decoration:none;padding:10px 16px;border-radius:11px}
.sheet .mbook{background:var(--green);color:#fff}
.sheet .mbook:hover{background:var(--ink)}
.sheet .mcal{border:1px solid var(--line-strong);color:var(--teal)}
.sheet .mcal:hover{border-color:var(--teal)}

/* ===== Property rail (right) ===== */
#propinline{display:none}
@media(max-width:1023px){
  #propinline{display:block;margin:6px auto 2px;padding:0}
  #propinline 
.chip-add{background:#0E2A3A;color:#fff;border-color:#0E2A3A}
.tag.when.rec{border-color:var(--green);color:var(--green)}
#s-updated{opacity:.7}
.chip-add:hover{background:#16384a}
.mtrans{display:inline-block;font-family:'DM Mono',monospace;font-size:12px;color:#1690B4;text-decoration:none;padding:6px 0}
.prop-head{color:var(--ink);font-size:15px;padding:6px 2px 2px}
  #propinline .prop-fs{color:#C2410C}
  #propinline .prop-sub{color:#7C8B92;font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:0 2px 8px}
  #propinline .ptwrap{flex-direction:row;gap:11px;overflow-x:auto;overflow-y:hidden;padding:2px 2px 12px;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}
  #propinline .ptile{flex:0 0 auto;width:230px;height:175px;scroll-snap-align:start;background:linear-gradient(140deg,#16384a,#0E2A3A)}
}
.prop-head{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#fff;font-size:16px;padding:20px 18px 4px;letter-spacing:-.01em}
.prop-sub{font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#1690B4;padding:0 18px 12px}
.prop-scroll{flex:1;width:100%;overflow-y:auto;padding:2px 14px 20px;scrollbar-width:thin;scrollbar-color:#28475A transparent}
.prop-scroll::-webkit-scrollbar{width:7px}.prop-scroll::-webkit-scrollbar-thumb{background:#28475A;border-radius:4px}
.prop-card{position:relative;display:block;text-decoration:none;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07);
  border-radius:13px;overflow:hidden;margin-bottom:11px;transition:transform .12s ease,border-color .12s ease}
.prop-card:hover{transform:translateY(-2px);border-color:rgba(22,144,180,.5)}
.prop-card img{width:100%;height:142px;object-fit:cover;display:block;background:#0B2230}
.prop-body{padding:9px 11px 11px}
.prop-price{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:#fff;font-size:15px}
.prop-price .lt{font-family:'DM Mono',monospace;font-weight:500;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:#7F97A2;margin-left:6px}
.prop-meta{color:#AFC2CA;font-size:11.5px;margin-top:3px;line-height:1.35}
.prop-area{color:#7F97A2;font-size:11px;margin-top:3px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.prop-agent{color:#5E7682;font-size:10px;margin-top:5px;font-family:'DM Mono',monospace;letter-spacing:.04em;text-transform:uppercase;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}

.prop-mkt{position:absolute;top:8px;left:8px;font-family:'DM Mono',monospace;font-size:9px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:3px 7px;border-radius:6px;color:#0B2230;box-shadow:0 1px 4px rgba(0,0,0,.25)}
.mkt-open{background:rgba(245,201,90,.96)}
.mkt-local{background:rgba(150,212,226,.96)}
.ptwrap{flex:1;display:flex;flex-direction:column;gap:11px;padding:8px 14px 18px;overflow:hidden}
.ptile{position:relative;flex:1 1 0;min-height:110px;border-radius:15px;overflow:hidden;display:block;text-decoration:none;background:#0B2230;box-shadow:0 3px 14px rgba(0,0,0,.34)}
.ptimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1s ease;animation:kbz 9s ease forwards;will-change:opacity,transform}
@keyframes kbz{from{transform:scale(1.02)}to{transform:scale(1.13)}}
.ptgrad{position:absolute;inset:0;background:linear-gradient(to top,rgba(7,18,25,.9) 0%,rgba(7,18,25,.28) 40%,rgba(7,18,25,0) 66%);pointer-events:none}
.ptprice{position:absolute;left:14px;right:14px;bottom:12px;color:#fff;font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:24px;letter-spacing:-.015em;text-shadow:0 1px 10px rgba(0,0,0,.55);line-height:1.05}.ptusd{display:block;font-size:.58em;font-weight:600;opacity:.92;letter-spacing:0;margin-top:1px}
.ptmkt{position:absolute;top:11px;left:11px;font-family:'DM Mono',monospace;font-size:9px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:6px;color:#0B2230;box-shadow:0 1px 5px rgba(0,0,0,.3)}
.mkt-open{background:rgba(245,201,90,.97)}.mkt-local{background:rgba(150,212,226,.97)}
.prop-fs{font-family:'DM Mono',monospace;font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:#1690B4}
.prop-empty{color:#7F97A2;font-size:12.5px;padding:8px 18px 18px;line-height:1.5}

/* right rail = "Coming up" events roller (see #adrail media query + roller block) */
#propinline{display:block!important;margin:10px auto 4px;padding:0}
#propinline .prop-head{color:var(--ink);font-size:15px;font-weight:600;padding:4px 2px 8px}
#propinline .prop-head .prop-fs{color:#C2410C}
#propinline .ptwrap{display:flex!important;flex-direction:row!important;flex-wrap:wrap;gap:12px;overflow:visible!important;padding:0 0 6px}
#propinline .ptile{flex:1 1 200px!important;min-width:150px;max-width:340px;width:auto!important;height:158px!important;position:relative;border-radius:14px;overflow:hidden;display:block;text-decoration:none;background:#0B2230;box-shadow:0 3px 14px rgba(0,0,0,.30)}
@keyframes ptkb{from{transform:scale(1.0)}to{transform:scale(1.085)}}
#propinline .ptimg{position:absolute!important;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(0);transition:opacity 1.05s ease, filter 1.15s ease;animation:ptkb 18s ease-in-out infinite alternate;will-change:opacity,filter}
#propinline .ptimg.layA{opacity:1}
#propinline .ptimg.layB{opacity:0}
#propinline .ptile{transition:transform .22s ease,box-shadow .22s ease}
#propinline .ptile:hover{transform:translateY(-2px);box-shadow:0 11px 28px rgba(0,0,0,.44)}
@media(prefers-reduced-motion:reduce){#propinline .ptimg{animation:none}}
#propinline .ptgrad{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.62),rgba(0,0,0,0) 55%)}
#propinline .ptprice{position:absolute;left:11px;bottom:9px;color:#fff;font-size:17px;font-weight:700;text-shadow:0 1px 3px rgba(0,0,0,.6)}
#propinline .ptmkt{position:absolute;top:9px;left:9px;font-family:'DM Mono',monospace;font-size:9.5px;letter-spacing:.05em;padding:3px 7px;border-radius:6px;color:#fff}
#propinline .ptmkt.mkt-open{background:#B45309}
#propinline .ptmkt.mkt-local{background:#1670A0}
#propinline .ptbeds{position:absolute;right:12px;bottom:13px;color:#fff;font-family:'DM Mono',monospace;font-size:11px;letter-spacing:.03em;text-shadow:0 1px 3px rgba(0,0,0,.6)}
@media(min-width:1100px){
  #propinline{position:fixed!important;right:0;top:0;bottom:0;width:300px;margin:0!important;padding:18px 14px!important;overflow-y:auto;background:#FAFDFC;border-left:1px solid var(--line);z-index:60;box-sizing:border-box}
  #propinline .prop-head{padding:2px 2px 12px;font-size:14px}
  #propinline .ptwrap{flex-direction:column!important;flex-wrap:nowrap!important;gap:13px}
  #propinline .ptile{flex:0 0 auto!important;width:100%!important;max-width:none!important;min-width:0!important;height:150px!important}
  body{padding-right:300px!important}
  nav.tabbar{right:300px!important}
}
#rh-consent{position:fixed;left:0;right:0;bottom:0;z-index:9999;background:var(--card);border-top:1px solid var(--line-strong);box-shadow:0 -8px 30px rgba(14,42,58,.12)}
#rh-consent[hidden]{display:none}
#rh-consent .rhc-inner{max-width:880px;margin:0 auto;padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));display:flex;gap:14px;align-items:center;flex-wrap:wrap}
#rh-consent .rhc-txt{margin:0;flex:1 1 320px;color:var(--ink-soft);font-size:13.5px;line-height:1.5}
#rh-consent .rhc-txt strong{color:var(--ink)}
#rh-consent .rhc-btns{display:flex;gap:10px;flex:0 0 auto}
#rh-consent .rhc-btn{border-radius:10px;padding:9px 20px;font-size:14px;font-weight:600;cursor:pointer;border:1px solid var(--line-strong)}
#rh-consent .rhc-ghost{background:#fff;color:var(--ink-soft)}
#rh-consent .rhc-yes{background:var(--green-bright);border-color:var(--green-bright);color:#fff}
@media(max-width:560px){#rh-consent .rhc-btns{flex:1 1 100%}#rh-consent .rhc-btn{flex:1}}
.islenav{margin:8px 0 22px}.islenav h4{margin:0 0 12px}.islenav-grid{display:flex;flex-wrap:wrap;gap:6px 14px}.islenav-grid a{color:var(--ink-soft,#54707C);text-decoration:none;font-size:13.5px;white-space:nowrap}.islenav-grid a:hover{color:var(--green,#0E6E8C);text-decoration:underline}
.vt{display:flex;gap:0;margin:14px 0 4px;border:1px solid var(--line,#2a2a2a);border-radius:999px;width:max-content;overflow:hidden}
.vtb{padding:7px 18px;background:transparent;border:0;cursor:pointer;font:inherit;color:inherit;opacity:.65}
.vtb.on{background:var(--accent,#0E6E8C);color:#fff;opacity:1}
.calwrap{margin:10px 0 6px}
.calhead{display:flex;align-items:center;justify-content:space-between;margin:8px 0}
.calhead h2{margin:0;font-size:1.15rem}
.calnav{display:flex;gap:6px}
.calnav button{border:1px solid var(--line,#2a2a2a);background:transparent;color:inherit;border-radius:8px;padding:4px 12px;cursor:pointer;font-size:1rem}
.caldow{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;font-size:.72rem;opacity:.6;text-align:center;margin-bottom:4px}
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.calcell{aspect-ratio:1/.92;border:1px solid var(--line,#2a2a2a);border-radius:10px;padding:5px 6px;position:relative;background:transparent;cursor:default;display:flex;flex-direction:column;align-items:flex-start;font:inherit;color:inherit}
.calcell.blank{border:0}
.calcell.has{cursor:pointer;background:rgba(14,110,140,.08);border-color:rgba(14,110,140,.45)}
.calcell.has:hover{background:rgba(14,110,140,.18)}
.calcell.sel{outline:2px solid var(--accent,#0E6E8C);outline-offset:-2px}
.calcell.tdy .cnum{background:var(--accent,#0E6E8C);color:#fff;border-radius:50%;width:1.45em;height:1.45em;display:flex;align-items:center;justify-content:center}
.cnum{font-size:.82rem;line-height:1.45em}
.cbadge{position:absolute;right:5px;bottom:4px;font-size:.68rem;background:var(--accent,#0E6E8C);color:#fff;border-radius:999px;padding:1px 6px;min-width:1.2em;text-align:center}
.caldaylist{margin-top:14px}
@media(max-width:560px){.calcell{aspect-ratio:1/1;padding:3px 4px}.cbadge{right:3px;bottom:2px;padding:0 4px}}
:root{--nav-h:54px;--tab-h:58px}
body{padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom,0px))}
#islbar{display:none!important}
.view-btn{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.topbar{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:8px;height:var(--nav-h);padding:0 14px;background:var(--bg,#0e0f0e);border-bottom:1px solid var(--line,#242524)}
.tb-brand{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:18px;color:var(--green,#0E6E8C);text-decoration:none;white-space:nowrap}
.tb-place{flex:1;display:flex;align-items:center;gap:8px;min-width:0;border:1px solid var(--line,#2a2b2a);background:rgba(255,255,255,.03);border-radius:12px;padding:7px 12px;cursor:pointer;font:inherit;color:inherit}
.tb-place b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-place .cnt{opacity:.55;font-size:12px;white-space:nowrap}
.tb-place .chev{margin-left:auto;opacity:.6}
.tb-ic{border:1px solid var(--line,#2a2b2a);background:transparent;color:inherit;border-radius:12px;padding:7px 11px;cursor:pointer;font:inherit;white-space:nowrap}
.tb-ic.acc{background:var(--green,#0E6E8C);border-color:var(--green,#0E6E8C);color:#fff}
.ctxline{font-size:12.5px;opacity:.6;padding:8px 16px 0}
.ctx-region{opacity:.7}
.ctxline b{opacity:1}
.explorestrip{display:flex;align-items:center;background:var(--green);color:#fff;font-size:13px;padding:0 14px;gap:8px;overflow:hidden;max-height:44px;transition:max-height .35s ease,opacity .35s ease;opacity:1}
.explorestrip.hidden{max-height:0;opacity:0;pointer-events:none}
.es-inner{flex:1;background:none;border:none;color:#fff;font:inherit;font-size:13px;text-align:left;padding:10px 0;cursor:pointer}
.es-inner b{font-weight:700}
.es-dismiss{background:none;border:none;color:rgba(255,255,255,.7);font-size:18px;line-height:1;padding:4px 4px;cursor:pointer;flex-shrink:0}
.es-dismiss:hover{color:#fff}
/* picker */
.pickwrap{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);display:none}
.pickwrap.open{display:block}
.picksheet{position:absolute;inset:auto 0 0 0;max-height:86vh;overflow-y:auto;background:var(--bg,#121312);border-radius:18px 18px 0 0;padding:16px 16px calc(20px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line,#2a2b2a)}
@media(min-width:760px){.picksheet{inset:8vh 50% auto auto;transform:translateX(50%);width:680px;border-radius:18px;max-height:80vh}}
.pickhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.pickhead h2{margin:0;font-size:1.1rem}
.pickclose{border:0;background:transparent;color:inherit;font-size:22px;cursor:pointer;line-height:1;padding:4px 8px}
.pregion{margin:14px 0 6px;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;opacity:.55}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.pbtn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid var(--line,#2a2b2a);background:rgba(255,255,255,.03);border-radius:12px;padding:10px 12px;cursor:pointer;font:inherit;color:inherit;text-align:left}
.pbtn .pn{font-weight:600}
.pbtn .pc{font-size:11.5px;opacity:.55}
.pbtn.cur{border-color:var(--green,#0E6E8C);background:rgba(14,110,140,.12)}
/* tabbar */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;height:calc(var(--tab-h) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--bg,#0e0f0e);border-top:1px solid var(--line,#242524)}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:transparent;color:inherit;opacity:.55;cursor:pointer;font:inherit;font-size:11px}
.tab .ti{font-size:18px;line-height:1}
.tab.on{opacity:1;color:var(--green,#0E6E8C)}
/* card share */
.shr{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--green,#0E6E8C);background:transparent;color:var(--green,#0E6E8C);border-radius:9px;padding:6px 12px;font:inherit;font-size:12.5px;font-weight:600;line-height:1;cursor:pointer;white-space:nowrap}
/* add modal */
.addwrap{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.6);display:none;align-items:center;justify-content:center;padding:16px}
.addwrap.open{display:flex}
.addbox{background:var(--bg,#121312);border:1px solid var(--line,#2a2b2a);border-radius:16px;max-width:440px;width:100%;padding:18px;max-height:88vh;overflow-y:auto}
.addbox h2{margin:0 0 4px;font-size:1.15rem}
.addbox p{margin:0 0 12px;font-size:13.5px;opacity:.7;line-height:1.4}
.addbox label{display:block;font-size:12px;opacity:.7;margin:10px 0 4px}
.addbox input,.addbox select{width:100%;box-sizing:border-box;background:rgba(255,255,255,.05);border:1px solid var(--line,#2a2b2a);border-radius:10px;padding:9px 10px;color:inherit;font:inherit}
.addrow{display:flex;gap:10px;margin-top:16px}
.addrow button{flex:1;border-radius:10px;padding:10px;cursor:pointer;font:inherit;border:1px solid var(--line,#2a2b2a);background:transparent;color:inherit}
.addrow .go{background:var(--green,#0E6E8C);border-color:var(--green,#0E6E8C);color:#fff;font-weight:600}
.toast{position:fixed;left:50%;bottom:calc(var(--tab-h) + 18px);transform:translateX(-50%);background:var(--green,#0E6E8C);color:#fff;padding:10px 18px;border-radius:999px;z-index:100;font-size:14px;opacity:0;transition:opacity .25s;pointer-events:none}
.toast.show{opacity:1}
.subbar{position:fixed;display:block;left:50%;bottom:calc(var(--tab-h, 0px) + 16px);transform:translateX(-50%) translateY(160%);width:min(540px,calc(100vw - 24px));background:#fff;border:1px solid var(--line,#e3e8e5);box-shadow:0 12px 44px rgba(14,42,58,.24);border-radius:14px;padding:15px 16px 14px;z-index:99;transition:transform .4s cubic-bezier(.2,.75,.3,1)}
.subbar h5{margin-bottom:2px}
.subbar p{margin-bottom:9px}
.subbar.show{transform:translateX(-50%) translateY(0)}
.subbar h5{margin:0 0 4px;font:700 15.5px 'Bricolage Grotesque',sans-serif;color:var(--ink,#0E2A3A)}
.subbar p{margin:0 0 11px;font-size:13px;color:var(--ink-soft,#54707C)}
.subbar .row{display:flex;gap:8px}
.subbar input{flex:1;font:14px inherit;padding:9px 11px;border:1px solid var(--line,#e3e8e5);border-radius:8px;min-width:0}
.subbar button.go{border:0;border-radius:8px;padding:9px 16px;background:var(--green,#0E6E8C);color:#fff;font:700 14px 'Bricolage Grotesque',sans-serif;cursor:pointer;white-space:nowrap}
.sb-parts{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}
.sb-part{font:600 12px inherit;border:1px solid var(--line,#e3e8e5);background:#fff;color:#54707C;border-radius:999px;padding:5px 11px;cursor:pointer}
.sb-part[aria-pressed="true"]{background:var(--green,#0E6E8C);border-color:var(--green,#0E6E8C);color:#fff}
/* Events-view signup strip */
.evsign{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:16px 0 4px;padding:12px 16px;border:1px solid var(--line-strong,#D8E2E6);border-radius:13px;background:linear-gradient(120deg,#EAF4F9,#FDF2EA);font-size:13.5px;color:#3F5A66}
.evsign button{border:0;border-radius:9px;padding:8px 16px;background:var(--coral,#FF5A36);color:#fff;font:700 13.5px 'Bricolage Grotesque',sans-serif;cursor:pointer;white-space:nowrap}
.tonite{margin:14px 0 2px}
.tonite .th{display:flex;align-items:baseline;gap:8px;margin:0 0 8px}
.tonite .th b{font:800 15px 'Bricolage Grotesque',sans-serif;color:var(--ink,#0E2A3A)}
.tonite .th span{font:500 11px 'DM Mono',monospace;letter-spacing:.08em;color:#8AA0AB;text-transform:uppercase}
.tonite .tr{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:thin}
.tonite .tc{flex:0 0 auto;display:flex;align-items:center;gap:8px;max-width:250px;border:1px solid var(--line-strong,#D8E2E6);background:#fff;border-radius:11px;padding:8px 12px;cursor:pointer;font:inherit;text-align:left}
.tonite .tc:hover{border-color:var(--green,#0E6E8C)}
.tonite .tc .tt{font:700 12.5px 'DM Mono',monospace;color:var(--coral,#FF5A36);white-space:nowrap}
.tonite .tc .tn{font:600 13px Inter,sans-serif;color:var(--ink,#0E2A3A);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* calendar modal */
.rh-modal-ov{display:none;position:fixed;inset:0;z-index:200;background:rgba(14,42,58,.5);align-items:center;justify-content:center;padding:16px}
.rh-modal{background:#fff;border-radius:16px;padding:22px;max-width:400px;width:100%;position:relative;box-shadow:0 20px 60px rgba(14,42,58,.3)}
.rh-mx{position:absolute;top:12px;right:14px;border:0;background:none;font-size:22px;line-height:1;color:#8aa0aa;cursor:pointer}
.rh-calbtn{display:block;text-align:center;text-decoration:none;font:700 14px 'Bricolage Grotesque',sans-serif;background:var(--green,#0E6E8C);color:#fff;border-radius:10px;padding:12px;margin:8px 0}
.rh-calbtn.ghost{background:#fff;color:var(--green,#0E6E8C);border:1px solid var(--line-strong,#C9D6DC)}
/* PWA install chip */
.rh-pwa{position:fixed;left:50%;bottom:calc(var(--tab-h,0px) + 16px);transform:translateX(-50%) translateY(160%);display:flex;align-items:center;gap:10px;background:#0E2A3A;color:#fff;border-radius:12px;padding:10px 12px;z-index:98;box-shadow:0 10px 30px rgba(14,42,58,.3);transition:transform .35s ease;font-size:13.5px}
.rh-pwa.show{transform:translateX(-50%) translateY(0)}
.rh-pwa button{border:0;border-radius:8px;padding:7px 12px;font:700 13px 'Bricolage Grotesque',sans-serif;cursor:pointer;background:var(--coral,#FF5A36);color:#fff}
.rh-pwa button#rh-pwa-x{background:transparent;color:#8FA8B5;padding:4px 8px;font-size:18px}
.subbar button.go:disabled{opacity:.6}
.subbar .x{position:absolute;top:7px;right:11px;border:0;background:none;font-size:20px;color:var(--ink-soft,#54707C);cursor:pointer;line-height:1}

.calcell{aspect-ratio:auto;min-height:96px;gap:2px}
.calev{display:block;width:100%;box-sizing:border-box;font-size:11px;line-height:1.25;background:rgba(14,110,140,.16);border-radius:5px;padding:2px 6px;margin-top:2px;text-decoration:none;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calev:hover{background:rgba(14,110,140,.32)}
.calmore{font-size:10.5px;opacity:.6;margin-top:2px}
@media(max-width:560px){.calcell{min-height:0;aspect-ratio:1/1}.calev,.calmore{display:none}}
body.detailmode>*:not(#detailpg){display:none!important}
#detailpg{max-width:680px;margin:0 auto;padding:22px 18px 60px}
#detailpg .back{display:inline-block;margin-bottom:14px;text-decoration:none;color:var(--green,#0E6E8C);font-weight:600}
#detailpg h1{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:clamp(24px,5vw,38px);margin:0 0 6px;line-height:1.1}
#detailpg .dchip{display:inline-block;font-size:12px;border:1px solid var(--line,#2a2b2a);border-radius:999px;padding:3px 10px;margin:0 6px 14px 0;opacity:.85}
#detailpg .dwhen{font-size:18px;font-weight:600;margin:8px 0 2px}
#detailpg .dvenue{font-size:15px;opacity:.8;margin:0 0 16px}
#detailpg .ddesc{font-size:15.5px;line-height:1.55;margin:0 0 22px;max-width:58ch}
#detailpg .dmeta{font-size:13.5px;opacity:.7;margin:0 0 22px}
#detailpg .dbtns{display:flex;flex-wrap:wrap;gap:10px}
#detailpg .dbtns a,#detailpg .dbtns button{border:1px solid var(--line,#2a2b2a);background:transparent;color:inherit;border-radius:12px;padding:11px 18px;cursor:pointer;font:inherit;text-decoration:none;text-align:center}
#detailpg .dbtns .pri{background:var(--green,#0E6E8C);border-color:var(--green,#0E6E8C);color:#fff;font-weight:600}
/* ===== Harbour Chart polish ===== */
::selection{background:rgba(14,110,140,.22)}
html{scrollbar-color:#C3D3CF transparent}
body{font-feature-settings:"cv05","cv11"}

/* chart-contour backdrop: one quiet signature, fixed and faint */
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.5;
 background:
  radial-gradient(1100px 520px at 88% -8%, rgba(22,144,180,.10), transparent 60%),
  radial-gradient(900px 460px at -10% 16%, rgba(255,184,28,.07), transparent 55%);
}

/* brand: tide-line instead of skewed bar */
.brand::after{height:3px;background:linear-gradient(90deg,var(--coral) 0 55%,var(--sun) 55% 100%);
 transform:none;border-radius:2px;opacity:1;
 -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='6' viewBox='0 0 40 6'%3E%3Cpath d='M0 3 Q5 0 10 3 T20 3 T30 3 T40 3' fill='none' stroke='black' stroke-width='2.4'/%3E%3C/svg%3E") repeat-x left center/40px 6px;
 mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='6' viewBox='0 0 40 6'%3E%3Cpath d='M0 3 Q5 0 10 3 T20 3 T30 3 T40 3' fill='none' stroke='black' stroke-width='2.4'/%3E%3C/svg%3E") repeat-x left center/40px 6px}

/* departure-board voice: every date, time, count in mono */
.dsub,.cbadge,.cnum,.proto,.stat .lab,.pc,.tb-place .cnt,.ctxline,
.calhead h2,.caldow,#detailpg .dwhen,.todaypill{
 font-family:'DM Mono',ui-monospace,monospace !important;letter-spacing:.01em}
.dayhead h2{font-family:'Bricolage Grotesque',sans-serif;letter-spacing:-.015em}
.dayhead{border-bottom:1px dashed var(--line-strong);padding-bottom:6px}
.dsub{color:var(--ink-soft);font-size:11.5px;text-transform:uppercase;letter-spacing:.07em}
.todaypill{background:var(--coral);color:#fff;border-radius:999px;font-size:10.5px;
 padding:3px 9px;text-transform:uppercase;letter-spacing:.08em}

/* cards: chart cards — crisp, lift on hover, tide spine on hover */
.card{border:1px solid var(--line);border-radius:var(--r);box-shadow:0 1px 2px rgba(14,42,58,.04);
 transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;position:relative;overflow:hidden}
.card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--green);
 opacity:0;transition:opacity .18s ease}
.card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--line-strong)}
.card:hover::before{opacity:1}

/* topbar: harbour office */
.topbar{background:rgba(242,246,244,.86);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.tb-place{background:#fff;border-color:var(--line-strong);box-shadow:0 1px 2px rgba(14,42,58,.05);
 transition:border-color .15s ease, box-shadow .15s ease}
.tb-place:hover{border-color:var(--green);box-shadow:0 2px 8px rgba(14,110,140,.14)}
.tb-place b{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;letter-spacing:-.01em}
.tb-ic{transition:all .15s ease}
.tb-ic:hover{border-color:var(--green);color:var(--green)}
.tb-ic.acc{background:var(--coral);border-color:var(--coral);box-shadow:0 2px 10px rgba(255,90,54,.35)}
.tb-ic.acc:hover{filter:brightness(1.06);color:#fff}
.ctxline{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--ink-soft)}

/* tabbar: ink rail with buoy marker */
.tabbar{background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-top:1px solid var(--line)}
.tab{transition:opacity .15s ease;position:relative;opacity:.5}
.tab.on{color:var(--green);opacity:1}
.tab.on::after{content:"";position:absolute;top:4px;width:18px;height:3px;border-radius:3px;background:var(--coral)}
.tab .ti{filter:grayscale(1) contrast(.7)}
.tab.on .ti{filter:none}
/* Trips tab: distinct coral active state + coloured mode chips on day-trip cards */
.tab[data-tab="daytrips"].on{color:var(--coral,#FF5A36)}
nav.tabbar.topnav .tab[data-tab="daytrips"].on{background:var(--coral,#FF5A36);border-color:var(--coral,#FF5A36);color:#fff}
.card .cat.m-plane{background:#E3F1F7;color:#0E6E8C;padding:2px 9px;border-radius:999px;display:inline-block}
.card .cat.m-car{background:#FCEFD9;color:#9A5B00;padding:2px 9px;border-radius:999px;display:inline-block}
.card .cat.m-boat{background:#DFF3EE;color:#0B6E5C;padding:2px 9px;border-radius:999px;display:inline-block}
/* Trips explainer + mode filter */
.dtintro{margin:18px 0 2px;padding:18px 20px;border:1px solid var(--line-strong,#D8E2E6);border-radius:16px;background:linear-gradient(120deg,#EAF4F9 0%,#F6FBF7 55%,#FDF2EA 100%)}
.dtintro h2{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:20px;margin:0 0 7px;color:var(--ink,#13323a)}
.dtintro p{margin:0 0 12px;font-size:14px;color:#3F5A66;line-height:1.6;max-width:74ch}
.dt-modes{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.dtm{font:inherit;font-size:13.5px;font-weight:700;border:1px solid var(--line-strong,#C9D6DC);background:#fff;color:var(--ink,#13323a);border-radius:999px;padding:7px 14px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.dtm .dtn{opacity:.55;font-weight:600}
.dtm[aria-pressed="true"]{background:var(--coral,#FF5A36);border-color:var(--coral,#FF5A36);color:#fff}
.dtm[aria-pressed="true"] .dtn{opacity:.85}
.dtm.dt-guide{margin-left:auto;background:transparent;border-style:dashed;color:#54707C}
@media(max-width:560px){.dtm.dt-guide{margin-left:0}}

/* place picker: chart legend */
.picksheet{background:var(--bg);box-shadow:0 -12px 50px rgba(14,42,58,.18)}
.pregion{font-family:'DM Mono',monospace;font-size:10.5px;letter-spacing:.12em;color:var(--green);
 display:flex;align-items:center;gap:10px}
.pregion::after{content:"";flex:1;height:1px;background:var(--line-strong)}
.pbtn{background:#fff;transition:all .14s ease}
.pbtn:hover{border-color:var(--green);transform:translateY(-1px);box-shadow:0 4px 14px rgba(14,110,140,.12)}
.pbtn.cur{border-color:var(--green);background:rgba(14,110,140,.07)}
.pbtn .pn{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;letter-spacing:-.01em}
.pbtn .pc{font-size:10.5px}

/* calendar: tide table */
.calwrap{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px;box-shadow:0 1px 2px rgba(14,42,58,.04)}
.calhead h2{font-size:1rem;color:var(--ink)}
.calnav button{transition:all .14s ease;border-radius:10px}
.calnav button:hover{border-color:var(--green);color:var(--green);background:rgba(14,110,140,.06)}
.caldow{font-size:10px;letter-spacing:.1em;text-transform:uppercase}
.calcell{background:#fff;border-radius:10px;transition:all .14s ease}
.calcell.has{background:rgba(14,110,140,.05);border-color:rgba(14,110,140,.30)}
.calcell.has:hover{background:rgba(14,110,140,.12);transform:translateY(-1px)}
.calcell.sel{outline-color:var(--green)}
.calcell.tdy .cnum{background:var(--coral);box-shadow:0 0 0 4px rgba(255,90,54,.18)}
.cbadge{background:var(--green);font-size:.64rem}
.calev{background:rgba(14,110,140,.10);color:var(--ink);border-left:2px solid var(--green);
 border-radius:4px;transition:background .12s ease}
.calev:hover{background:rgba(14,110,140,.22)}
.calmore{font-family:'DM Mono',monospace;font-size:9.5px;letter-spacing:.05em;color:var(--green)}

/* share + add */
.shr{transition:background .14s ease,color .14s ease}
.shr:hover{background:var(--green,#0E6E8C);color:#fff}
.addbox{border-radius:18px;box-shadow:0 24px 80px rgba(14,42,58,.28)}
.addbox h2{font-family:'Bricolage Grotesque',sans-serif;letter-spacing:-.02em}
.addbox input:focus,.addbox select:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(14,110,140,.15)}
.addrow .go{background:var(--coral);border-color:var(--coral);box-shadow:0 2px 12px rgba(255,90,54,.3)}
.toast{background:var(--ink);box-shadow:0 8px 30px rgba(14,42,58,.35);font-family:'DM Mono',monospace;font-size:12.5px}

/* detail page: log entry */
#detailpg h1{letter-spacing:-.03em}
#detailpg .dchip{font-family:'DM Mono',monospace;font-size:10.5px;text-transform:uppercase;
 letter-spacing:.07em;background:#fff;border-color:var(--line-strong)}
#detailpg .dwhen{color:var(--green);font-size:15px}
#detailpg .dbtns a,#detailpg .dbtns button{border-radius:12px;transition:all .15s ease;background:#fff}
#detailpg .dbtns a:hover,#detailpg .dbtns button:hover{border-color:var(--green);color:var(--green)}
#detailpg .dbtns .pri{background:var(--coral);border-color:var(--coral);color:#fff;
 box-shadow:0 2px 12px rgba(255,90,54,.3)}
#detailpg .dbtns .pri:hover{filter:brightness(1.06);color:#fff}
#detailpg .back{font-family:'DM Mono',monospace;font-size:12px;letter-spacing:.04em;color:var(--green)}

/* quality floor */
:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:6px}
@media (prefers-reduced-motion:reduce){
 *,*::before,*::after{animation:none!important;transition:none!important}
}

nav.tabbar{position:fixed!important;top:auto!important;bottom:0!important}
div.tabbar{display:none!important}
.ctabtn{border-radius:12px}

/* calendar: never clip the Sunday column — let the grid scroll within its card, not the page */
.calwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.calgrid{grid-template-columns:repeat(7,minmax(0,1fr));min-width:332px}
.caldow{grid-template-columns:repeat(7,minmax(0,1fr));min-width:332px}
.calcell{min-width:0}
.calcell .calev,.calcell .cnum{min-width:0;max-width:100%}
/* skip-to-content link (WCAG 2.4.1) */
.skip{position:absolute;left:8px;top:-48px;z-index:200;background:var(--ink);color:#fff;
 padding:10px 16px;border-radius:10px;font:600 13px/1 Inter,sans-serif;text-decoration:none;
 transition:top .15s ease}
.skip:focus{top:8px;outline:2px solid var(--coral);outline-offset:2px}

/* ===== Location rail (sea-ink, from share-card palette) ===== */
:root{--rail-w:248px;--rail-bg:#0E2A3A;--rail-bg2:#0B2230}
#locrail{display:none}
@media(min-width:1000px){
  #locrail{display:flex;flex-direction:column;position:fixed;left:0;top:0;bottom:0;width:var(--rail-w);
    background:linear-gradient(180deg,var(--rail-bg) 0,var(--rail-bg2) 100%);z-index:70;
    border-right:1px solid rgba(255,255,255,.06);overflow:hidden}
  /* faint contour echo of the share card, top-right */
  #locrail::before{content:"";position:absolute;right:-80px;top:-40px;width:240px;height:240px;
    border-radius:50%;border:2px solid rgba(22,144,180,.18);
    box-shadow:0 0 0 26px transparent, 40px 40px 0 -2px rgba(22,144,180,.12);pointer-events:none}
  body{padding-left:var(--rail-w)}
  header.top,.topbar{padding-left:0}
  nav.tabbar{left:var(--rail-w)!important}
  /* the mobile place-button in the topbar is redundant beside the rail */
  #placebtn{display:none}
}
.rail-brand{display:flex;align-items:baseline;gap:2px;padding:20px 20px 14px;text-decoration:none;flex:0 0 auto}
.rail-brand b{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:27px;letter-spacing:-.025em;color:#fff}
.rail-brand .dot{width:7px;height:7px;border-radius:50%;background:var(--coral);align-self:flex-end;margin-bottom:4px}
.rail-sub{font-family:'DM Mono',monospace;font-size:11.5px;line-height:1.45;letter-spacing:.06em;text-transform:uppercase;
  color:#9FB6BF;padding:6px 20px 14px;font-weight:500}
.rail-cats{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:2px 14px 10px;margin:0 0 6px;border-bottom:1px solid rgba(255,255,255,.07)}.rail-cats button{display:flex;align-items:center;gap:5px;width:100%;text-align:left;border:0;background:rgba(255,255,255,.05);color:#C8D6DC;font:inherit;font-size:11.5px;cursor:pointer;padding:6px 8px;border-radius:8px;line-height:1.15;transition:background .13s ease,color .13s ease}.rail-cats button:hover{background:rgba(255,255,255,.06);color:#fff}.rail-cats button .ci{width:5px;height:5px;border-radius:50%;background:var(--coral);flex:0 0 auto}
.rail-scroll{flex:1;overflow-y:auto;padding:4px 12px 18px;scrollbar-width:thin;scrollbar-color:#28475A transparent}
.rail-scroll::-webkit-scrollbar{width:7px}.rail-scroll::-webkit-scrollbar-thumb{background:#28475A;border-radius:4px}
.rail-region{font-family:'DM Mono',monospace;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  color:#1690B4;display:flex;align-items:center;gap:8px;margin:16px 8px 6px}.rail-region.rail-here{color:#0a7d6b;font-weight:700}
.rail-region::after{content:"";flex:1;height:1px;background:rgba(255,255,255,.08)}
.rail-place{display:flex;align-items:center;gap:8px;width:100%;border:0;background:transparent;cursor:pointer;
  color:#C8D6DC;font:inherit;text-align:left;padding:8px 10px;border-radius:9px;position:relative;
  transition:background .13s ease,color .13s ease}.rp-star{position:absolute;left:6px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--line-strong);opacity:.45;transition:opacity .15s,color .15s;padding:2px 4px;border-radius:4px}.rp-star:hover{opacity:1}.rp-star.on{color:#e0a800;opacity:1}.rail-place{padding-left:26px !important}.rail-region.rail-pinned{color:#b8860b;font-weight:700}
.rail-place:hover{background:rgba(255,255,255,.05);color:#fff}
.rail-place .rp-name{flex:1;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-place .rp-cnt{font-family:'DM Mono',monospace;font-size:11px;color:#5E7C89}
.rail-place .rp-new{font-family:'DM Mono',monospace;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:#0E2A3A;background:var(--sun);border-radius:999px;padding:1px 6px;margin-right:2px}.rail-place.thin .rp-cnt{opacity:.7}
.rail-place.cur{background:rgba(255,90,54,.14);color:#fff}
.rail-place.cur::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;
  background:var(--coral);border-radius:3px}
.rail-place.cur .rp-cnt{color:var(--sun)}
.rail-foot{flex:0 0 auto;padding:12px 20px;border-top:1px solid rgba(255,255,255,.07);
  font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.06em;color:#5E7C89}
.rail-foot b{color:var(--sun);font-weight:500}

/* compress: tighter rhythm between sections */
.hero h1{margin:0 0 4px;line-height:1.04}
.daygroup{margin-top:14px}
.dayhead{margin-bottom:6px}
.ctxline{padding:6px 16px 0}
main,#main{padding-top:4px}
.h1stats-gap{margin:0}

/* --- right-hand advert rail (reserved; standard IAB sizes) --- */
#adrail{display:none}
@media(min-width:1024px){
  #adrail{display:flex;flex-direction:column;gap:16px;align-items:center;position:fixed;right:0;top:0;bottom:0;
    width:300px;padding:18px 14px;overflow-y:auto;background:#FAFDFC;border-left:1px solid var(--line);z-index:60}
  body{padding-right:300px}
  nav.tabbar{right:300px!important}
}
#adrail .ad-label{align-self:flex-start;font-family:'DM Mono',monospace;font-size:9px;letter-spacing:.14em;
  text-transform:uppercase;color:#9FB1B8;margin:0 0 5px}
.adlink{display:block;text-decoration:none}
.ad-slot{display:block;border-radius:12px;overflow:hidden;box-shadow:0 1px 2px rgba(14,42,58,.06),0 8px 22px rgba(14,42,58,.07);
  transition:transform .18s ease,box-shadow .18s ease}
.adlink:hover .ad-slot{transform:translateY(-2px);box-shadow:0 2px 4px rgba(14,42,58,.08),0 14px 30px rgba(14,42,58,.12)}
.ad-mr{width:300px;height:250px}
.ad-hp{width:300px;height:600px}
#adrail .ad-foot{font-family:'DM Mono',monospace;font-size:9.5px;color:#9FB1B8;text-align:center;margin-top:auto;padding-top:8px}
.cdesc{font-size:13px;line-height:1.45;color:var(--ink-soft);margin:6px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

.addwa{display:flex;align-items:center;gap:12px;margin:14px 0 4px}
.addwa-or{font-family:'DM Mono',monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}
.addwa-or::before,.addwa-or::after{content:"";display:inline-block;width:18px;height:1px;background:var(--line-strong);vertical-align:middle;margin:0 8px}
.wabtn{display:inline-flex;align-items:center;gap:8px;text-decoration:none;font-weight:600;font-size:14px;
  color:#fff;background:#25D366;padding:9px 14px;border-radius:11px;transition:filter .15s ease,transform .15s ease}
.wabtn:hover{filter:brightness(1.05);transform:translateY(-1px)}
.rail-cats button.on{background:var(--green);color:#fff}
.rail-cats button.on .ci{background:#fff}
.emblems{font-size:34px;line-height:1;margin:4px 0 6px;letter-spacing:0;-webkit-user-select:none;user-select:none}
@media(max-width:560px){.emblems{font-size:30px;letter-spacing:0}}

/* tightened hero — single headline stat, content moved up */
.stats{margin-top:4px !important;gap:14px}
.stat .num{font-size:30px}
.herofarm{margin:2px 0 -10px !important}
.hero{padding:4px 0 0 !important}
.sub{margin:0 0 4px}

/* --- tighten hero to lift listings (single-figure stat) --- */
.hero{padding:2px 0 0 !important}
.hero h1{margin:0 0 2px !important}
.sub{margin:0 0 2px !important}
.emblems{margin:3px 0 1px !important}
.islbar{margin:2px 0 0 !important;padding-bottom:4px !important}
.stats{margin-top:2px !important}
.herofarm{margin:0 0 -12px !important}
main{padding-top:2px !important}
.controls{padding:0 0 5px !important}

/* --- venue directory (feature-flagged; hidden by default) --- */
#diroverlay{position:fixed;inset:0;z-index:200;background:var(--bg);display:none;flex-direction:column}
#diroverlay.show{display:flex}
.dir-top{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);background:#fff}
.dir-top h2{font-family:'Bricolage Grotesque',sans-serif;font-size:20px;margin:0;flex:1}
.dir-top .dir-x{border:1px solid var(--line);background:#fff;border-radius:10px;width:34px;height:34px;cursor:pointer;font-size:16px}
.dir-search{padding:10px 18px;border-bottom:1px solid var(--line);background:#fff}
.dir-search input{width:100%;max-width:420px;padding:9px 12px;border:1px solid var(--line-strong);border-radius:10px;font:inherit}
.dir-list{flex:1;overflow-y:auto;padding:8px 18px 40px}
.dir-row{display:flex;flex-direction:column;gap:2px;padding:11px 0;border-bottom:1px solid var(--line)}
.dir-row .dn{font-weight:600;font-size:15px}
.dir-row .dt{font-family:'DM Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--coral)}
.dir-row .da{font-size:13px;color:var(--ink-soft)}
.dir-row .dlinks{display:flex;gap:14px;margin-top:3px;font-size:13px}
.dir-row .dlinks a{color:var(--green);text-decoration:none;font-weight:600}
.dir-count{font-family:'DM Mono',monospace;font-size:12px;color:var(--ink-soft)}
.sub #s-listings{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;color:var(--ink);font-size:1.05em}
.bob{animation:none !important}

/* --- compact, tidier event cards --- */
.grid{align-items:start}                                  /* cards take natural height: no stretched gaps */
.card{padding:13px 14px !important;gap:5px !important}
.evimg{width:100%;height:126px;object-fit:cover;display:block;border-radius:9px;background:#EAF2F4;margin:0 0 4px}
.evhero{position:relative;width:100%;height:126px;border-radius:9px;overflow:hidden;display:grid;place-items:center;font-size:42px;line-height:1;margin:0 0 4px;user-select:none}
.evhero .evimg{position:absolute;inset:0;height:100%;margin:0;border-radius:0}
#m-hero{width:100%;max-height:240px;object-fit:cover;display:block;border-radius:12px;margin:0 0 12px;background:#EAF2F4}
.card .cat{font-size:10px}
.card h3{font-size:17px !important;line-height:1.1 !important}
.prov{margin-top:0 !important;font-size:12.5px}
.cdesc{margin:4px 0 0 !important;font-size:12.5px;line-height:1.4}
.meta{margin-top:5px !important;gap:5px !important}
.meta .tag{font-size:11px;padding:2px 7px}
.dl{margin-top:9px !important;align-items:center !important;padding-top:9px !important;border-top:1px solid var(--line)}
.where{font-size:12px !important;line-height:1.25}
.actions{flex-direction:row !important;align-items:center !important;gap:10px !important;flex-wrap:wrap;justify-content:flex-end}
.more,.book{padding:6px 12px !important;font-size:12.5px !important}
.addcal{font-size:10.5px !important}
.savebtn{top:10px !important;right:10px !important;width:30px !important;height:30px !important}
.card .trust{top:15px !important}

/* --- hero heading: one line unless the screen is genuinely too narrow --- */
.hero h1{white-space:nowrap;font-size:clamp(22px,4.6vw,34px) !important}
@media(max-width:720px){.hero h1{white-space:normal}}

/* --- topbar: rockhopping.com logo top-right, tighter bar --- */
:root{--nav-h:48px}
.tb-logo{margin-left:6px;font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:16px;
  color:var(--green);text-decoration:none;white-space:nowrap;letter-spacing:-.02em}
.tb-logo .cm{color:var(--coral)}
.ctxline{padding:5px 16px 0 !important}

/* --- instant results: no staggered card entrance --- */
.card{animation:none !important}
.calev,.dayblock{animation:none !important}

/* --- rail brand: rockhopping.com --- */
.rail-brand .railcom{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:27px;letter-spacing:-.025em;color:var(--coral);align-self:flex-end;line-height:1}
/* --- filters on a single line --- */
.filterbar{flex-wrap:wrap !important;overflow:visible !important;gap:8px !important;padding:8px 0 !important}
.filterbar::-webkit-scrollbar{height:6px}
.filterbar .fsel{flex:0 1 auto !important;width:auto !important;min-width:120px;max-width:none}
.filterbar .search{flex:1 1 170px !important;min-width:130px}
.freset{flex:0 0 auto}
/* Share/Add moved into the controls row, pushed right */
.fbtn{flex:0 0 auto;height:38px;white-space:nowrap}
#f-reset{margin-left:auto}

/* --- Share/Add on the breadcrumb level --- */
.ctxbar{display:flex;align-items:center;gap:10px;padding:6px 16px 0}
.ctxbar .ctxline{flex:1;padding:0 !important}
.ctxact{display:flex;gap:8px;flex:0 0 auto}
.ctxact .fbtn{height:32px;padding:4px 13px;font-size:13px;border-radius:10px}
#sharepg{background:var(--green,#0E6E8C)!important;border-color:var(--green,#0E6E8C)!important;color:#fff!important;font-weight:600}
#sharepg:hover{filter:brightness(1.08)}
/* --- filters: filters-only, single line --- */
#f-reset{margin-left:auto}
.tb-logo{margin-left:0;margin-right:4px}
#ae-text{width:100%;border:1px solid var(--line-strong);border-radius:12px;padding:11px 13px;font:inherit;font-size:15px;resize:vertical;min-height:90px;background:var(--card);color:var(--ink)}
#ae-text:focus{outline:2px solid var(--green);outline-offset:1px}
.ad-empty{background:repeating-linear-gradient(135deg,#F2F6F4,#F2F6F4 10px,#EDF3F1 10px,#EDF3F1 20px);border:1px dashed var(--line-strong)}

/* --- slim top bar: just the centred logo --- */
.topbar{height:40px !important;justify-content:center !important;padding:0 12px !important;gap:0 !important}
.tb-logo{margin:0 !important;font-size:17px}
/* --- place selector relocated to the breadcrumb line --- */
.ctxbar{padding:7px 16px 2px !important;gap:9px}
.ctxplace{flex:0 0 auto;padding:5px 11px;border-radius:10px;font-size:13.5px}
.ctxplace .cnt{display:none}
.ctxbar .ctxline{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* --- frozen (sticky) filter bar --- */
.controls{position:sticky;top:0;z-index:55;background:var(--bg,#F2F6F4);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}

/* --- rolling property advert --- */
.ad-unit{width:300px;display:flex;flex-direction:column;flex:0 0 auto}
.propad{position:relative;display:block;width:300px;height:320px;border-radius:16px;overflow:hidden;text-decoration:none;background:#0E2A3A;box-shadow:0 2px 4px rgba(14,42,58,.08),0 14px 30px rgba(14,42,58,.12)}
.propad-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .45s ease}
.propad-grad{position:absolute;left:0;right:0;bottom:0;height:62%;background:linear-gradient(to top,rgba(7,18,25,.94),rgba(7,18,25,.55) 40%,rgba(7,18,25,0))}
.propad-tag{position:absolute;top:12px;left:12px;background:rgba(255,255,255,.93);color:#0E2A3A;font:600 11px/1 'Bricolage Grotesque',sans-serif;padding:5px 9px;border-radius:999px}
.propad-meta{position:absolute;left:15px;right:15px;bottom:14px;display:flex;flex-direction:column;gap:2px;color:#fff}
.propad-price{font:800 23px/1.05 'Bricolage Grotesque',sans-serif;letter-spacing:-.01em}
.propad-loc{font-size:13px;color:rgba(255,255,255,.88);font-weight:600}
.propad-name{font-size:11.5px;color:rgba(255,255,255,.62);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.propad-credit{font-family:'DM Mono',monospace;font-size:9.5px;color:#9FB1B8;text-align:center;margin-top:7px}

/* --- quick intent chips --- */
.chips{display:flex;gap:7px;flex-wrap:wrap;align-items:center;padding:9px 0 2px}
.chip{flex:0 0 auto;border:1px solid var(--line-strong);background:var(--card);color:var(--ink);font-weight:600;font-size:13px;line-height:1;padding:9px 14px;border-radius:999px;cursor:pointer}
.chip:hover{border-color:var(--green)}
.chip.active{background:var(--green);border-color:var(--green);color:#fff}
.chip-more{margin-left:auto;display:none}
.earlier-tog{display:block;margin:2px auto 14px;border:1px solid var(--line-strong);background:var(--card);color:var(--green);font-weight:700;font-size:13px;padding:9px 16px;border-radius:999px;cursor:pointer}
.earlier-tog:hover{border-color:var(--green)}
/* --- mobile: collapse detailed filters behind the Filters chip --- */
@media(max-width:620px){
  .chip-more{display:inline-flex}
  .filterbar .fsel,.filterbar .fdate,.filterbar .freset{display:none}
  .controls.filters-open .filterbar .fsel,.controls.filters-open .filterbar .fdate,.controls.filters-open .filterbar .freset{display:block}
  .controls.filters-open .filterbar .freset{display:inline-block}
  .filterbar .search{flex:1 1 100%}
}