/* ---- styles.css ---- */
:root{
  --ink:#12343b;
  --paper:#f4f0e5;
  --paper2:#e8eee8;
  --line:#9eaea2;
  --accent:#e25b47;
  --green:#2f7467;
  --muted:#65716c;
  --shadow:0 12px 28px rgba(18,52,59,.10);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}
button,input,select{font:inherit}
button{cursor:pointer}
a{color:inherit}
.mast{
  min-height:86px;border-bottom:1px solid var(--line);
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  padding:16px 4vw;gap:22px;position:sticky;top:0;
  background:rgba(244,240,229,.96);backdrop-filter:blur(10px);z-index:20;
}
.brand{font-family:Georgia,serif;font-weight:900;font-size:31px;letter-spacing:.11em;text-decoration:none;white-space:nowrap}
.brand span{font-size:.48em;letter-spacing:.18em;vertical-align:.35em;margin-left:.2em;color:var(--accent)}
.mast p{margin:0;font-family:Georgia,serif;font-style:italic;color:var(--muted)}
.submit,.missing button,.search button,.locate,.primary-action,.secondary-action{
  border:1px solid var(--ink);background:var(--ink);color:var(--paper);
  padding:11px 15px;font-weight:800;letter-spacing:.03em;text-decoration:none;
}
.submit{justify-self:end}
.secondary-action{background:transparent;color:var(--ink);border-color:var(--line)}
.intro{padding:46px 4vw 24px;border-bottom:1px solid var(--line)}
.intro h1,.map-head h2,.section-title h2,.sources-panel h2,.missing h2,.event-title,.event-detail h2{
  font-family:Georgia,serif;font-weight:500;
}
.intro h1{font-size:clamp(42px,7vw,88px);line-height:.98;max-width:900px;margin:.14em 0}
.intro p{max-width:720px;font:italic 18px/1.5 Georgia,serif;color:var(--muted);margin:12px 0 4px}
.eyebrow{font-size:10px;font-weight:900;letter-spacing:.19em;color:var(--accent)}
.controls{padding:18px 4vw 22px;border-bottom:1px solid var(--line);display:grid;gap:13px}
.chips{display:flex;gap:7px;flex-wrap:wrap}
.chips button,.search input,.distance-wrap select{
  border:1px solid var(--line);background:transparent;color:var(--ink);padding:9px 11px;font-weight:800;
}
.chips button:hover{border-color:var(--ink)}
.chips button.active{background:var(--accent);border-color:var(--accent);color:#fff}
.location-row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.search{display:flex;min-width:min(420px,100%)}
.search input{min-width:260px;flex:1;font-weight:500;background:rgba(255,255,255,.2);border-right:0}
.search button{padding-inline:18px}
.locate{background:transparent;color:var(--ink);border-color:var(--line)}
.locate:hover{border-color:var(--ink)}
.distance-wrap{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:800}
.distance-wrap select{padding-right:28px}
.location-status{font-size:12px;color:var(--muted);min-height:16px}
.location-status strong{color:var(--ink)}
#datePicker{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}

.map-wrap,.picks,.browse,.sources-panel{padding:34px 4vw}
.map-head,.section-title{display:flex;justify-content:space-between;align-items:end;gap:20px}
.map-head h2,.section-title h2,.sources-panel h2{font-size:clamp(30px,4vw,54px);margin:.18em 0}
.map-stats{display:flex;flex-direction:column;align-items:flex-end;gap:5px;font-size:11px;font-weight:900;letter-spacing:.08em}
.map-stats #dataStatus{font-weight:600;color:var(--muted);letter-spacing:0}

.map-toolbar{
  margin-top:14px;display:flex;justify-content:space-between;align-items:center;
  gap:14px;border-top:1px solid var(--line);padding-top:10px;
}
.map-zoom-controls{display:flex;align-items:center;gap:6px}
.map-zoom-controls button{
  min-width:36px;height:34px;border:1px solid var(--line);background:transparent;color:var(--ink);font-weight:900;
}
.map-zoom-controls button:hover{border-color:var(--ink);background:rgba(255,255,255,.25)}
.map-zoom-controls span{font-size:10px;font-weight:900;color:var(--muted);min-width:38px;text-align:right}
.map-hint{font-size:10px;color:var(--muted);text-align:right}

.map-filter-count{position:absolute;right:16px;bottom:16px;z-index:6;max-width:250px;padding:9px 12px;border:1px solid rgba(255,255,255,.24);background:rgba(12,18,17,.78);backdrop-filter:blur(8px);font-size:12px;line-height:1.25;letter-spacing:.045em;text-transform:uppercase;pointer-events:none}
.map-shell{\n  position:relative;\n  margin-top:10px;border:1px solid var(--line);
  background:radial-gradient(circle at 46% 44%,#edf2e9 0,#dfe9e2 58%,#d5e2da 100%);
  box-shadow:inset 0 0 80px rgba(18,52,59,.06);
}
.map-viewport{
  height:min(68vh,690px);min-height:520px;overflow:auto;position:relative;
  overscroll-behavior:contain;scrollbar-color:var(--line) transparent;
}
.map-viewport:focus{outline:2px solid var(--accent);outline-offset:-2px}
.map-canvas{
  --map-zoom:1.12;
  position:relative;width:calc(1320px * var(--map-zoom));min-width:100%;
  transition:width .24s ease;
}
.map-canvas:before{
  content:'CORNWALL';position:absolute;right:28px;top:20px;
  font:italic 800 13px Georgia,serif;letter-spacing:.24em;color:#7b725d;z-index:2;
}
.map-canvas svg{display:block;width:100%;height:auto;aspect-ratio:1000/520}
.coast{fill:#d6c7a3;stroke:#4e4a3d;stroke-width:2.2;vector-effect:non-scaling-stroke}
.coast-texture{fill:url(#paperLines);stroke:none;opacity:.5}
.hatch{stroke:#746b55;stroke-width:.5;opacity:.22}
.map-labels text{font:italic 11px Georgia,serif;fill:#514b3d;paint-order:stroke;stroke:#d6c7a3;stroke-width:4;stroke-linejoin:round}
.pin{cursor:pointer;filter:drop-shadow(0 2px 2px rgba(0,0,0,.18))}
.pin circle{fill:var(--accent);stroke:var(--paper);stroke-width:4;transition:.14s}
.pin.featured circle{stroke:var(--ink);stroke-width:4}
.pin:hover circle,.pin:focus circle{transform:scale(1.3);transform-origin:center;fill:var(--ink)}
.pin text{fill:#fff;font-weight:900;font-size:13px;pointer-events:none}
.origin circle:first-child{fill:var(--green);stroke:#fff;stroke-width:4}
.origin .pulse{fill:none;stroke:var(--green);stroke-width:2;opacity:.45}
.compass circle{fill:none;stroke:#625a48;stroke-width:1}
.compass path{fill:#625a48}
.compass text{font:700 11px Georgia,serif;fill:#625a48}
.map-card{
  min-height:92px;background:rgba(244,239,223,.98);border-top:1px solid var(--line);
  padding:14px 16px;display:flex;flex-direction:column;gap:3px;
}
.map-card strong{font:600 20px/1.15 Georgia,serif}
.map-card span{font-size:12px;line-height:1.35;color:var(--muted)}
.map-card a{margin-top:6px;font-size:12px;font-weight:800;text-decoration:none;border-bottom:1px solid transparent;width:max-content;max-width:100%}
.map-card a:hover{border-color:currentColor}
.card-kicker{font-size:9px!important;letter-spacing:.15em!important;font-weight:900!important;color:var(--accent)!important}
.map-note{font-size:11px;color:var(--muted);margin:9px 0 0}

.picks{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(255,255,255,.13)}
.section-note{font-size:11px;color:var(--muted)}
.pick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}
.pick{
  border:1px solid var(--line);text-decoration:none;display:grid;grid-template-columns:150px 1fr;
  min-height:190px;background:rgba(255,255,255,.18);transition:.16s;overflow:hidden;
}
.pick:hover{transform:translateY(-2px);border-color:var(--ink);box-shadow:var(--shadow)}
.pick-copy{padding:16px;display:flex;flex-direction:column;gap:8px}
.pick strong{font:600 20px/1.12 Georgia,serif}
.pick span{font-size:11px;color:var(--muted);line-height:1.35}
.pick .pick-label{color:var(--accent);font-weight:900;letter-spacing:.1em}

.event-art{
  min-height:190px;background:
    radial-gradient(circle at 78% 20%,rgba(255,255,255,.2),transparent 18%),
    linear-gradient(145deg,#26342c 0,#1c211c 54%,#c74631 54%,#a93725 100%);
  color:#f7f1df;padding:16px;display:flex;flex-direction:column;justify-content:space-between;
  overflow:hidden;position:relative;
}
.event-art:after{
  content:'';position:absolute;inset:0;
  background:repeating-linear-gradient(0deg,transparent 0 13px,rgba(255,255,255,.045) 13px 14px);
  pointer-events:none;
}
.event-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.event-art span,.event-art strong,.event-art em{position:relative;z-index:1}
.event-art span{font-size:9px;font-weight:900;letter-spacing:.13em}
.event-art strong{font:700 19px/1.05 Georgia,serif;max-width:95%}
.event-art em{font-size:10px;font-style:normal;letter-spacing:.03em}
.event-art.small{width:86px;min-height:86px;height:86px;padding:8px}
.event-art.small strong{font-size:11px}
.event-art.small span{font-size:7px}
.event-art.small em{font-size:7px}

.browse{border-bottom:1px solid var(--line)}
.day{border-top:1px solid var(--ink);margin-top:28px}
.day-head{display:flex;justify-content:space-between;align-items:center;padding:12px 0}
.day-head h3{font:500 26px Georgia,serif;margin:0}
.day-head span{font-size:11px;color:var(--muted)}
.event{
  display:grid;grid-template-columns:86px 64px minmax(0,1fr) auto;gap:16px;
  padding:15px 0;border-top:1px solid var(--line);align-items:start;
}
.event-thumb-link{text-decoration:none}
.event.featured-event{position:relative}
.event.featured-event:before{content:'';position:absolute;left:-10px;top:17px;width:4px;height:34px;background:var(--accent)}
.time{font-weight:900;font-size:13px;padding-top:3px}
.event h4{margin:0 0 5px;font:600 21px/1.2 Georgia,serif}
.event h4 a{text-decoration:none}
.event h4 a:hover{text-decoration:underline}
.meta{font-size:12px;line-height:1.4;color:var(--muted)}
.event-summary{font:14px/1.45 Georgia,serif;color:#4f4a3f;margin:8px 0 0;max-width:760px}
.event-side{display:flex;align-items:flex-end;flex-direction:column;gap:7px;align-self:stretch}
.event-side .listing-manage-entry{margin-top:auto;padding-top:10px;text-align:right;font:400 10px/1.35 system-ui,sans-serif;opacity:.55}
.event-side .listing-manage-entry a{color:inherit;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:2px}
.tag{font-size:9px;letter-spacing:.09em;font-weight:900;border:1px solid var(--line);padding:5px 7px;white-space:nowrap}
.distance{font-size:10px;font-weight:800;color:var(--green)}
.empty{padding:36px 0;display:flex;flex-direction:column;gap:5px;color:var(--muted)}
.empty strong{font:600 23px Georgia,serif;color:var(--ink)}

.sources-panel{display:grid;grid-template-columns:minmax(250px,.8fr) 1.4fr;gap:32px;border-bottom:1px solid var(--line)}
.sources-panel>p{margin-top:32px;line-height:1.55;color:var(--muted)}
.source-list{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.source-chip{border:1px solid var(--line);padding:10px 11px;text-decoration:none;display:flex;justify-content:space-between;align-items:center;gap:10px;background:rgba(255,255,255,.12)}
.source-chip:hover{border-color:var(--ink)}
.source-chip.priority{border-left:4px solid var(--accent)}
.source-chip strong{font-size:11px;line-height:1.2}
.source-chip span{font-size:9px;color:var(--muted);text-align:right}

.missing{margin:34px 4vw 58px;padding:28px;border:1px solid var(--ink);display:grid;grid-template-columns:1fr 1.5fr auto;gap:24px;align-items:center}
.missing h2{font-size:36px;margin:.15em 0}
.missing p{margin:0;color:var(--muted);line-height:1.5}
.missing button{justify-self:end}
footer{padding:25px 4vw;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:10px;letter-spacing:.12em;font-weight:800;color:var(--muted)}

/* Event pages */
.event-page{max-width:1240px;margin:0 auto;padding:36px 4vw 70px}
.event-back{display:inline-block;margin-bottom:18px;text-decoration:none;font-size:11px;font-weight:900;letter-spacing:.08em}
.event-hero{display:grid;grid-template-columns:minmax(280px,430px) 1fr;gap:34px;align-items:start}
.event-hero .event-art{min-height:520px}
.event-title{font-size:clamp(40px,6vw,78px);line-height:.98;margin:.15em 0}
.event-kicker{font-size:10px;font-weight:900;letter-spacing:.16em;color:var(--accent)}
.event-deck{font:20px/1.5 Georgia,serif;color:#4f4a3f;max-width:760px}
.event-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin:26px 0}
.event-fact{background:var(--paper);padding:15px}
.event-fact span{display:block;font-size:9px;font-weight:900;letter-spacing:.12em;color:var(--muted);margin-bottom:5px}
.event-fact strong{font-size:14px}
.event-actions{display:flex;gap:9px;flex-wrap:wrap;margin:22px 0}
.event-source-note{font-size:11px;color:var(--muted);line-height:1.45}
.event-detail{margin-top:42px;border-top:1px solid var(--ink);padding-top:22px;display:grid;grid-template-columns:1.5fr .8fr;gap:44px}
.event-detail h2{font-size:34px;margin:0 0 12px}
.event-detail p{font:17px/1.6 Georgia,serif;color:#403c33}
.genre-list{display:flex;gap:6px;flex-wrap:wrap}
.genre-chip{font-size:9px;font-weight:900;letter-spacing:.08em;border:1px solid var(--line);padding:6px 8px}
.more-events{margin-top:50px;border-top:1px solid var(--line);padding-top:20px}
.more-events h2{font:500 32px Georgia,serif}
.more-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.more-card{border:1px solid var(--line);padding:14px;text-decoration:none;display:flex;flex-direction:column;gap:6px}
.more-card strong{font:600 18px/1.15 Georgia,serif}
.more-card span{font-size:10px;color:var(--muted)}

@media(max-width:1100px){
  .pick-grid{grid-template-columns:repeat(2,1fr)}
  .source-list{grid-template-columns:repeat(3,1fr)}
  .map-canvas{width:calc(1250px * var(--map-zoom))}
}
@media(max-width:800px){
  .mast{grid-template-columns:1fr auto;min-height:70px;padding:12px 18px}
  .mast p{display:none}
  .brand{font-size:23px}
  .submit{font-size:10px;padding:9px 10px}
  .intro{padding:34px 18px 18px}
  .intro h1{font-size:48px}
  .intro p{font-size:16px}
  .controls{padding:14px 18px}
  .location-row{display:grid;grid-template-columns:1fr 1fr}
  .search{grid-column:1/-1;min-width:0;width:100%}
  .search input{min-width:0}
  .locate{font-size:11px}
  .distance-wrap{justify-content:flex-end}
  .map-wrap,.picks,.browse,.sources-panel{padding:26px 18px}
  .map-head,.section-title{align-items:flex-start;flex-direction:column}
  .map-stats{align-items:flex-start}
  .map-toolbar{align-items:flex-start;flex-direction:column}
  .map-hint{text-align:left;line-height:1.35}
  .map-viewport{height:520px;min-height:0}
  .map-canvas{width:calc(1100px * var(--map-zoom))}
  .map-labels text{font-size:13px}
  .compass{display:none}
  .map-note{line-height:1.4}
  .pick-grid{grid-template-columns:1fr}
  .pick{grid-template-columns:125px 1fr;min-height:160px}
  .event-art{min-height:160px}
  .event{grid-template-columns:76px 52px minmax(0,1fr);gap:10px}
  .event-side{grid-column:3;align-items:flex-start;flex-direction:row;flex-wrap:wrap}
  .event-side .listing-manage-entry{margin-top:0;margin-left:auto;padding-top:3px}
  .event.featured-event:before{left:-8px}
  .day-head h3{font-size:22px}
  .event-summary{display:none}
  .sources-panel{grid-template-columns:1fr;gap:12px}
  .sources-panel>p{margin-top:0}
  .source-list{grid-template-columns:1fr 1fr}
  .source-chip{align-items:flex-start;flex-direction:column;gap:4px}
  .source-chip span{text-align:left}
  .missing{margin:24px 18px 44px;grid-template-columns:1fr;gap:14px}
  .missing button{justify-self:start}
  footer{padding:20px 18px;flex-direction:column;gap:6px}
  .event-page{padding:24px 18px 54px}
  .event-hero{grid-template-columns:1fr}
  .event-hero .event-art{min-height:420px}
  .event-detail{grid-template-columns:1fr}
  .more-grid{grid-template-columns:1fr}
}
@media(max-width:480px){
  .intro h1{font-size:42px}
  .location-row{grid-template-columns:1fr}
  .distance-wrap{justify-content:flex-start}
  .source-list{grid-template-columns:1fr}
  .chips button{font-size:11px;padding:8px 9px}
  .event h4{font-size:18px}
  .pick{grid-template-columns:100px 1fr}
  .event-art.small{width:66px;height:66px;min-height:66px}
  .event{grid-template-columns:66px 44px minmax(0,1fr)}
  .event-facts{grid-template-columns:1fr}
  .event-title{font-size:44px}
}

/* ---- map-enhancements.css ---- */
.sources-panel,#dataStatus{display:none!important}
.map-card-legacy-hidden{display:none!important}
.pin:focus,.pin:focus-visible{outline:none!important}

.map-popover{
  position:absolute;z-index:12;width:min(460px,46vw);min-width:300px;
  transform:translate(18px,-50%);
  border:1px solid var(--line);box-shadow:var(--shadow);
  display:grid;grid-template-columns:150px minmax(0,1fr);overflow:hidden;
}
.map-popover[hidden]{display:none!important}
.map-popover-west{transform:translate(calc(-100% - 18px),-50%)}
.map-popover-north{transform:translate(18px,calc(-100% + 26px))}
.map-popover-west.map-popover-north{transform:translate(calc(-100% - 18px),calc(-100% + 26px))}
.map-popover-copy{position:relative;padding:15px 38px 15px 15px;display:flex;flex-direction:column;gap:5px;min-width:0}
.map-popover-kicker{font-size:8px!important;letter-spacing:.14em!important;color:var(--accent)!important;font-weight:900!important;text-transform:uppercase}
.map-popover-title{font:600 21px/1.12 Georgia,serif}
.map-popover-when,.map-popover-where{font-size:11px;line-height:1.35;color:var(--muted)}
.map-popover-summary{font-size:12px;line-height:1.38;margin:4px 0 2px;color:var(--ink)}
.map-popover-open{font-size:11px;font-weight:900;text-decoration:none;margin-top:4px}
.map-popover-open:hover{text-decoration:underline}
.map-popover-image{display:block;min-height:160px;background:var(--ink);overflow:hidden}
.map-popover-image img{width:100%;height:100%;object-fit:cover;display:block}
.map-popover-close{position:absolute;right:7px;top:5px;width:26px;height:26px;border:0;background:transparent;color:var(--ink);font-size:22px;line-height:1;padding:0;z-index:2}
.map-popover-cluster{grid-column:1/-1;position:relative;min-width:0}
.map-popover-cluster-head{padding:14px 38px 10px 14px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:3px}
.map-popover-cluster-head strong{font:600 19px/1.1 Georgia,serif}
.map-popover-cluster-head span:last-child{font-size:11px;color:var(--muted)}
.map-popover-events{display:flex;flex-direction:column;max-height:320px;overflow:auto}
.map-popover-event{display:grid;grid-template-columns:86px minmax(0,1fr);gap:0;text-decoration:none;border-bottom:1px solid var(--line);background:transparent}
.map-popover-event:last-child{border-bottom:0}
.map-popover-event:hover{background:rgba(255,255,255,.32)}
.map-popover-image.compact{min-height:92px;height:100%}
.map-popover-event-copy{padding:10px 12px;display:flex;flex-direction:column;gap:4px;min-width:0}
.map-popover-event-copy strong{font:600 16px/1.15 Georgia,serif}
.map-popover-event-copy span{font-size:10px;color:var(--muted)}
.map-popover-event-copy em{font-size:10px;line-height:1.3;color:var(--ink);font-style:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.map-popover .card-kicker{font-size:8px!important;letter-spacing:.14em!important;color:var(--accent)!important;font-weight:900!important}

/* The music key belongs to the map itself, not to a floating card. */
.map-category-panel{
  right:10px!important;bottom:10px!important;top:auto!important;
  padding:0!important;border:0!important;background:transparent!important;
  box-shadow:none!important;backdrop-filter:none!important
}
.map-category-toggle,.map-regular-toggle{
  border:0!important;background:transparent!important;box-shadow:none!important
}
.map-category-toggle.active,.map-regular-toggle.active{background:transparent!important}

@media(max-width:800px){
  .map-popover{width:360px;min-width:0;grid-template-columns:112px minmax(0,1fr)}
  .map-popover-title{font-size:18px}
  .map-popover-image{min-height:138px}
  .map-popover-summary{font-size:11px}
  .map-popover-events{max-height:240px}
}
@media(max-width:480px){
  .map-popover{width:310px;grid-template-columns:96px minmax(0,1fr)}
  .map-popover-copy{padding:11px 31px 11px 11px}
  .map-popover-title{font-size:16px}
  .map-popover-when,.map-popover-where,.map-popover-open{font-size:10px}
  .map-popover-summary{font-size:10px;line-height:1.32}
  .map-popover-image{min-height:126px}
  .map-popover-event{grid-template-columns:74px minmax(0,1fr)}
  .map-popover-event-copy strong{font-size:14px}
}

/* A source can confirm live music without knowing its subgenre. Do not hide it. */
.map-category-toggle.kind-classical i { background:var(--genre-classical,#966f9d)!important; }
.pin.kind-classical>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring) { fill:var(--genre-classical,#966f9d)!important; }
.map-category-toggle.kind-other i { background:#738996!important; }
.pin.kind-other>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring) { fill:#738996!important; }

/* ---- street-map-detail.css ---- */
.street-map-detail{position:absolute;inset:0;z-index:80;background:#f4f0e5;color:#17363a;overflow:hidden}
.street-map-detail[hidden]{display:none!important}
.street-map-head{position:absolute;z-index:4;left:14px;right:14px;top:12px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;pointer-events:none}
.street-map-head>div:first-child{display:flex;flex-direction:column;gap:2px;padding:8px 10px;background:rgba(244,240,229,.92);border:1px solid rgba(23,54,58,.45);box-shadow:2px 2px 0 rgba(23,54,58,.12)}
.street-map-kicker{font:900 8px/1 Arial,sans-serif;letter-spacing:.14em;color:#b84a3a}
.street-map-title{font:600 20px/1.05 Georgia,serif}
.street-map-subtitle{font:700 8px/1.2 Arial,sans-serif;letter-spacing:.02em;color:#52727c}
.street-map-actions{display:flex;gap:4px;pointer-events:auto}
.street-map-actions button{min-width:34px;height:31px;padding:0 8px;border:1px solid #315b5f;background:rgba(244,240,229,.94);color:#17363a;font:900 10px/1 Arial,sans-serif;box-shadow:2px 2px 0 rgba(23,54,58,.12)}
.street-map-actions button[data-street-zoom]{font-size:18px}
.street-map-actions .street-map-back{padding:0 11px;letter-spacing:.05em}
.street-map-stage{position:absolute;inset:0;overflow:hidden;background:#d9e6e4;touch-action:none;cursor:grab}
.street-map-stage:active{cursor:grabbing}
.street-map-tiles,.street-map-markers{position:absolute;inset:0}
.street-map-tiles img{position:absolute;width:256px;height:256px;user-select:none;-webkit-user-drag:none}
.street-map-markers{z-index:2;pointer-events:none}
.street-map-marker{position:absolute;transform:translate(-50%,-50%);width:28px;height:28px;border-radius:50%;border:2px solid #f4f0e5;background:#b84a3a;color:#fff;font:900 10px/1 Arial,sans-serif;box-shadow:0 0 0 1px #17363a,2px 3px 0 rgba(23,54,58,.18);pointer-events:auto;padding:0}
.street-map-marker span{display:grid;place-items:center;width:100%;height:100%}
.street-map-marker:hover,.street-map-marker:focus-visible{transform:translate(-50%,-50%) scale(1.16);outline:none;background:#17363a}
.street-map-hint{position:absolute;z-index:3;left:50%;bottom:10px;transform:translateX(-50%);padding:5px 8px;background:rgba(244,240,229,.9);border:1px solid rgba(23,54,58,.28);font:800 7px/1 Arial,sans-serif;letter-spacing:.035em;white-space:nowrap}
.street-map-attribution{position:absolute;z-index:3;right:6px;bottom:5px;padding:2px 4px;background:rgba(255,255,255,.82);font:600 6px/1.2 Arial,sans-serif;color:#315b5f}
.street-map-attribution a{color:inherit}
.street-map-card{position:absolute;z-index:5;left:14px;bottom:14px;width:min(330px,42vw);max-height:52%;overflow:auto;padding:12px 14px;background:#fff7e8;border:1px solid #315b5f;box-shadow:4px 5px 0 rgba(23,54,58,.18)}
.street-map-card[hidden]{display:none!important}
.street-map-card>span{display:block;font:900 7px/1 Arial,sans-serif;letter-spacing:.14em;color:#b84a3a;margin-bottom:4px}
.street-map-card>strong{display:block;padding-right:28px;font:600 20px/1.05 Georgia,serif}
.street-map-card>em{display:block;margin-top:2px;font:700 8px/1.2 Arial,sans-serif;color:#52727c;font-style:normal}
.street-map-card>div{margin-top:8px;border-top:1px solid rgba(49,91,95,.55)}
.street-map-card a{display:flex;flex-direction:column;gap:2px;padding:7px 0;border-bottom:1px solid rgba(49,91,95,.4);color:#17363a;text-decoration:none}
.street-map-card a:last-child{border-bottom:0}
.street-map-card a b{font:600 12px/1.1 Georgia,serif}
.street-map-card a small{font:700 7px/1.2 Arial,sans-serif;color:#52727c}
.street-map-card-close{position:absolute;right:7px;top:6px;border:0;background:transparent;color:#17363a;font-size:20px;line-height:1}
body.street-map-open .mobile-swipe-nav{visibility:hidden!important}
@media(max-width:800px){.street-map-head{left:10px;right:10px;top:9px}.street-map-title{font-size:17px}.street-map-card{left:10px;bottom:10px;width:min(300px,58vw);max-height:48%}.street-map-hint{bottom:7px}}
@media(max-width:560px){.street-map-head>div:first-child{max-width:46vw}.street-map-title{font-size:15px}.street-map-subtitle{font-size:6px}.street-map-actions button{height:29px;min-width:30px}.street-map-card{width:72vw}.street-map-hint{display:none}}

.street-map-venue-list{position:absolute;z-index:5;right:14px;top:58px;width:min(300px,35vw);max-height:56%;overflow:auto;padding:11px 13px;background:rgba(255,247,232,.96);border:1px solid #315b5f;box-shadow:4px 5px 0 rgba(23,54,58,.18)}
.street-map-venue-list[hidden]{display:none!important}
.street-map-venue-list>span{display:block;font:900 7px/1 Arial,sans-serif;letter-spacing:.14em;color:#b84a3a;margin-bottom:4px}
.street-map-venue-list>strong{display:block;font:600 17px/1.05 Georgia,serif;margin-bottom:7px}
.street-map-venue-list>div{border-top:1px solid rgba(49,91,95,.5)}
.street-map-venue-list a{display:block;padding:7px 0;border-bottom:1px solid rgba(49,91,95,.35);color:#17363a;text-decoration:none}
.street-map-venue-list a:last-child{border-bottom:0}
.street-map-venue-list a b,.street-map-venue-list a em,.street-map-venue-list a small{display:block}
.street-map-venue-list a b{font:700 11px/1.1 Arial,sans-serif}
.street-map-venue-list a em{margin-top:2px;font:600 10px/1.15 Georgia,serif;font-style:normal}
.street-map-venue-list a small{margin-top:2px;font:700 7px/1.2 Arial,sans-serif;color:#52727c}
body.street-map-open .pipeline-stage-head,
body.street-map-open .pipeline-genre-key,
body.street-map-open .mobile-map-page .map-filter-count{display:none!important}
@media(max-width:800px){.street-map-venue-list{right:10px;top:54px;width:min(260px,38vw);max-height:54%}}
@media(max-width:560px){.street-map-venue-list{width:46vw}.street-map-venue-list>strong{font-size:14px}}

/* ---- mobile-shell.css ---- */
@media (max-width:1200px){
  body.mobile-shell-active{
    --paper:#f4f0e5;
    --paper2:#eadbb8;
    --ink:#17363a;
    --line:#9aaba4;
    --accent:#c7795d;
    --green:#2f7467;
    --muted:#65716c;
    --violet:#6557a3;
    --lime:#b8c95c;
    --ocean:#8fb2b5;
    --land:#e7e2cb;
    --stripe:#d9e4df;
    margin:0!important;padding:0!important;overflow:hidden!important;min-height:100dvh!important;
    background:var(--paper)!important;color:var(--ink)!important;
  }
  html{margin:0!important;padding:0!important;background:var(--paper)!important}
  body.mobile-shell-active>.mast,body.mobile-shell-active>footer{display:none!important}
  body.mobile-shell-active main{margin:0!important;padding:0!important;max-width:none!important}
  body.mobile-shell-active .mobile-hidden-source{display:none!important}

  .mobile-landscape-gate{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:26px;background:var(--ink);color:var(--paper);text-align:center}
  .mobile-landscape-gate:before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.18;background:repeating-linear-gradient(116deg,transparent 0 17px,rgba(255,255,255,.08) 17px 18px)}
  .mobile-landscape-gate.is-hidden{display:none!important}
  .mobile-landscape-gate-inner{position:relative;max-width:430px}
  .mobile-landscape-phone{width:68px;height:114px;border:3px solid currentColor;border-radius:12px;margin:0 auto 22px;position:relative;transform:rotate(90deg)}
  .mobile-landscape-phone:after{content:'';position:absolute;width:7px;height:7px;border-radius:50%;background:var(--accent);left:50%;bottom:6px;transform:translateX(-50%)}
  .mobile-landscape-gate h2{margin:0 0 10px;font:600 31px/1.05 Georgia,serif}
  .mobile-landscape-gate p{margin:0 auto 18px;max-width:32em;font:14px/1.45 Arial,sans-serif;opacity:.82}
  .mobile-landscape-gate button{border:0;background:var(--accent);color:#fff;padding:12px 17px;font:900 11px/1 Arial,sans-serif;letter-spacing:.07em}

  .mobile-shell{position:fixed;inset:0;z-index:20;width:100vw;height:100dvh;overflow:hidden;background:var(--paper)}
  .mobile-shell-track{display:flex;width:300vw;height:100dvh;transform:translate3d(0,0,0);transition:transform .28s cubic-bezier(.2,.75,.2,1);will-change:transform}
  .mobile-shell-track.no-transition{transition:none!important}
  .mobile-shell-page{position:relative;flex:0 0 100vw;width:100vw;height:100dvh;min-width:100vw;min-height:0;overflow:hidden;background:var(--paper)}
  .mobile-shell-dots{position:fixed;z-index:90;left:50%;bottom:max(5px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;gap:5px;pointer-events:none}
  .mobile-shell-dots i{width:5px;height:5px;border-radius:50%;border:1px solid rgba(18,52,59,.55);background:rgba(244,240,229,.7)}
  .mobile-shell-dots i.active{background:var(--accent);border-color:var(--accent)}

  /* PAGE 1 - single authoritative map treatment. */
  .mobile-map-page,.mobile-map-wrap,.mobile-map-page .map-shell,.mobile-map-page .map-viewport,.mobile-map-page .map-canvas{width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important}
  .mobile-map-page{
    background-color:var(--ocean)!important;
    background-image:repeating-linear-gradient(45deg,var(--stripe) 0,var(--stripe) 5px,var(--ocean) 5px,var(--ocean) 10px)!important;
  }
  .mobile-map-page:after{display:none!important}
  .mobile-map-page .map-head,.mobile-map-page .map-toolbar,.mobile-map-page .map-note,.mobile-map-page .map-card{display:none!important}
  .mobile-map-page .map-shell{position:relative!important;background:transparent!important;background-image:none!important}
  .mobile-map-page .map-viewport{overflow:auto!important;background:transparent!important;background-image:none!important;touch-action:none!important;overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch}
  .mobile-map-page .map-canvas{width:calc(100% * var(--map-zoom,1))!important;height:calc(100% * var(--map-zoom,1))!important;min-width:calc(100% * var(--map-zoom,1))!important;min-height:calc(100% * var(--map-zoom,1))!important;transform:none!important;background:transparent!important;background-image:none!important}
  .mobile-map-page .map-canvas:before{display:none!important}
  .mobile-map-page .map-canvas svg{display:block!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important}
  .mobile-map-page .coast{fill:var(--land)!important;stroke:#e8e5d2!important;stroke-width:1.8!important}
  .mobile-map-page #pins{display:block!important;visibility:visible!important;opacity:1!important;pointer-events:auto!important}
  .mobile-map-page .pin{display:inline!important;visibility:visible!important;opacity:1!important;pointer-events:auto!important}
  .mobile-map-page .pin>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){stroke:#f2eee0!important;stroke-width:3!important}
  .mobile-map-page .pin>text{fill:#fff!important;stroke:none!important;paint-order:normal!important;opacity:1!important}
  .mobile-map-page .coast-texture{opacity:.12!important}
  .mobile-map-page .hatch{stroke:#71897e!important;opacity:.18!important}
  .mobile-map-page .map-labels text{fill:var(--ink)!important;stroke:none!important;paint-order:normal!important;text-shadow:none!important;filter:none!important}
  .mobile-map-page .compass circle{stroke:#315b5f!important}
  .mobile-map-page .compass path{fill:#315b5f!important}
  .mobile-map-page .compass text{fill:#315b5f!important}

  .mobile-map-brand{position:absolute;z-index:64;left:max(9px,env(safe-area-inset-left));top:max(8px,env(safe-area-inset-top));display:flex;align-items:baseline;gap:7px;pointer-events:none;text-shadow:none!important;filter:none!important}
  .mobile-map-brand *{text-shadow:none!important;filter:none!important}
  .mobile-map-brand strong{font:900 13px/1 Georgia,serif;letter-spacing:.13em;color:#f2eee0!important}
  .mobile-map-brand span{font:900 5.8px/1 Arial,sans-serif;letter-spacing:.12em;color:#d5a95f!important}
  .mobile-map-submit{position:absolute;z-index:75;left:max(12px,env(safe-area-inset-left));top:max(108px,calc(env(safe-area-inset-top) + 108px));border:1px solid #d5a95f!important;border-radius:5px;background:#17363a!important;color:#f2eee0!important;padding:6px 10px;font:700 11px/1.15 Arial,sans-serif;letter-spacing:.02em;box-shadow:0 2px 5px #0005;cursor:pointer;white-space:nowrap}
  .mobile-map-page .map-filter-count{position:absolute!important;left:max(9px,env(safe-area-inset-left))!important;right:auto!important;bottom:max(9px,env(safe-area-inset-bottom))!important;z-index:69!important;padding:5px 8px!important;border:1px solid rgba(242,238,224,.5)!important;background:rgba(23,54,58,.82)!important;color:#f2eee0!important;font:900 8px/1 Arial,sans-serif!important;letter-spacing:.06em!important;text-transform:uppercase!important}

  /* One aligned 3 x 3 music matrix, with time/status filters beneath it. */
  .mobile-map-key-stack{position:absolute!important;z-index:70!important;right:max(9px,env(safe-area-inset-right))!important;bottom:max(8px,env(safe-area-inset-bottom))!important;width:330px!important;display:grid!important;grid-template-columns:1fr!important;grid-template-rows:auto auto!important;gap:5px!important;pointer-events:auto;text-shadow:none!important;filter:none!important}
  .mobile-map-key-stack *{text-shadow:none!important;filter:none!important}
  .mobile-map-key-stack .map-category-panel{position:relative!important;inset:auto!important;width:100%!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important}
  .mobile-map-key-stack .map-category-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-template-rows:repeat(4,auto)!important;gap:3px 7px!important;width:100%!important}
  .mobile-map-key-stack .map-category-toggle{display:flex!important;width:100%!important;min-width:0!important;margin:0!important;padding:1px 0!important;border:0!important;background:transparent!important;box-shadow:none!important;color:var(--ink)!important;opacity:.34!important;font:800 6.7px/1 Arial,sans-serif!important;letter-spacing:0!important;text-transform:none!important;text-align:left!important;white-space:nowrap!important;align-items:center!important;gap:4px!important}
  .mobile-map-key-stack .map-category-toggle.active{background:transparent!important;opacity:1!important}
  .mobile-map-key-stack .map-category-toggle i{width:7px!important;height:7px!important;min-width:7px!important;border:0!important;box-shadow:0 0 0 1px rgba(244,240,229,.85)!important}
  .mobile-map-key-stack .map-regular-toggle{display:none!important}
  .mobile-map-time{position:relative!important;inset:auto!important;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:7px!important;width:100%!important;margin:0!important}
  .mobile-map-time button{appearance:none!important;width:100%!important;min-width:0!important;border:0!important;background:transparent!important;color:var(--ink)!important;padding:2px 0!important;text-align:left!important;font:800 6.7px/1 Arial,sans-serif!important;letter-spacing:0!important;box-shadow:none!important}
  .mobile-map-time button:before{content:'';display:inline-block;width:7px;height:7px;margin-right:5px;vertical-align:-1px;border-radius:50%;border:2px solid currentColor;background:transparent}
  .mobile-map-time button[data-mobile-time="tonight"]:before{border-color:#c96658!important}
  .mobile-map-time button[data-mobile-time="week"]:before{border-color:#4e8e95!important}
  .mobile-map-time button[data-mobile-time="regular"]:before{border-color:#c28b35!important}
  .mobile-map-time button[data-mobile-time="tonight"].active:before{background:#c96658!important}
  .mobile-map-time button[data-mobile-time="week"].active:before{background:#4e8e95!important}
  .mobile-map-time button[data-mobile-time="regular"].active:before{background:#c28b35!important}
  .mobile-map-key-stack .kind-dnb i{background:#ed594b!important}
  .mobile-map-key-stack .kind-electronic i{background:#6257b5!important}
  .mobile-map-key-stack .kind-roots i{background:#2f8067!important}
  .mobile-map-key-stack .kind-folk i{background:#c39537!important}
  .mobile-map-key-stack .kind-jazz i{background:#173a42!important}
  .mobile-map-key-stack .kind-classical i{background:#966f9d!important}
  .mobile-map-key-stack .kind-live i{background:#2c7890!important}
  .mobile-map-key-stack .kind-pop i{background:#d85f8d!important}
  .mobile-map-key-stack .kind-festival i{background:#8c58a7!important}

  /* Pin colours plus independent chronological/status rings. */
  .mobile-map-page .pin.kind-dnb circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#b95f54!important}
  .mobile-map-page .pin.kind-electronic circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#6d698c!important}
  .mobile-map-page .pin.kind-roots circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#58786b!important}
  .mobile-map-page .pin.kind-folk circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#9d8150!important}
  .mobile-map-page .pin.kind-jazz circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#314f53!important}
  .mobile-map-page .pin.kind-classical circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#966f9d!important}
  .mobile-map-page .pin.kind-live circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#547b86!important}
  .mobile-map-page .pin.kind-pop circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#a9677d!important}
  .mobile-map-page .pin.kind-festival circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#78657f!important}
  .mobile-map-page .pin.kind-experimental circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#6f7f72!important}
  /* Status rings must remain outlines. The legacy .pin:hover circle rule otherwise
     fills and enlarges these circles, producing the large dark discs seen on tap/focus. */
  .mobile-map-page .pin .pin-regular-ring,
  .mobile-map-page .pin .pin-week-ring,
  .mobile-map-page .pin .pin-tonight-ring{
    fill:none!important;
    transform:none!important;
    transform-origin:center!important;
  }
  .mobile-map-page .pin:hover .pin-regular-ring,
  .mobile-map-page .pin:focus .pin-regular-ring,
  .mobile-map-page .pin:hover .pin-week-ring,
  .mobile-map-page .pin:focus .pin-week-ring,
  .mobile-map-page .pin:hover .pin-tonight-ring,
  .mobile-map-page .pin:focus .pin-tonight-ring{
    fill:none!important;
    transform:none!important;
  }
  .mobile-map-page .pin .pin-regular-ring{stroke:var(--lime)!important}

  /* Compact event card; west/east placement is handled in map-enhancements.js. */
  .mobile-map-page .map-popover{width:min(232px,42vw)!important;min-width:0!important;max-width:232px!important;max-height:58%!important;padding:7px 8px!important;grid-template-columns:1fr!important;overflow:auto!important;border-radius:14px!important;background:rgba(23,54,58,.96)!important;color:#f2eee0!important;border:1px solid rgba(222,220,197,.58)!important;box-shadow:0 8px 22px rgba(23,54,58,.18)!important;transform:none!important}
  .mobile-map-page .map-popover:not([hidden]){display:block!important}
  .mobile-map-page .map-popover[hidden]{display:none!important}
  .mobile-map-page .map-popover-copy{padding:0!important;display:block!important;background:transparent!important}
  .mobile-map-page .map-popover-cluster,.mobile-map-page .map-popover-cluster-head,.mobile-map-page .map-popover-events{background:transparent!important}
  .mobile-map-page .map-popover-image,.mobile-map-page .map-popover-summary{display:none!important}
  .mobile-map-page .map-popover-kicker{font-size:6px!important;color:var(--accent)!important}
  .mobile-map-page .map-popover-title{display:block!important;font:600 11px/1.08 Georgia,serif!important;margin:2px 14px 2px 0!important}
  .mobile-map-page .map-popover-when,.mobile-map-page .map-popover-where{display:block!important;font:7px/1.18 Arial,sans-serif!important;margin-top:2px!important}
  .mobile-map-page .map-popover-open{display:inline-block!important;margin-top:4px!important;font:900 6.5px/1 Arial,sans-serif!important}
  .mobile-map-page .map-popover-close{top:2px!important;right:3px!important;font-size:13px!important;color:#f2eee0!important}
  .mobile-map-page .map-popover-event{display:block!important;padding:4px 0!important}
  .mobile-map-page .map-popover-event-copy strong{font:600 9px/1.05 Georgia,serif!important;color:#f2eee0!important}
  .mobile-map-page .map-popover-event-copy span{font-size:6.5px!important}
  .mobile-map-page .map-popover-event-copy em{display:none!important}
  .mobile-map-page .map-popover strong{color:#f2eee0!important}
  .mobile-map-page .map-popover p,.mobile-map-page .map-popover time,.mobile-map-page .map-popover .meta{color:#c7d1ca!important}
  .mobile-map-page .map-popover a{color:#e2b36e!important}

  /* PAGE 2 - dense printed-guide listings. */
  .mobile-list-page{padding:9px 18px 18px!important;display:grid!important;grid-template-rows:auto minmax(0,1fr) auto!important;gap:5px!important;touch-action:pan-y!important;background:linear-gradient(180deg,#f6f2e8,#f1ede2)!important}
  .mobile-page-head{display:grid;grid-template-columns:auto 1fr auto;align-items:end;gap:10px;padding-bottom:5px;border-bottom:1px solid var(--ink)}
  .mobile-page-head span{font:900 6.4px/1 Arial,sans-serif;letter-spacing:.12em;color:var(--accent)}
  .mobile-page-head strong{font:600 clamp(20px,5.6vh,32px)/.95 Georgia,serif;color:var(--ink)}
  .mobile-page-head em{font:italic 8px/1.1 Georgia,serif;color:var(--muted);white-space:nowrap}
  .mobile-list-scroll{min-height:0;min-width:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;padding-bottom:18px}
  .mobile-list-day{margin:0;padding:0;border:0;width:100%;min-width:0;max-width:100%}
  .mobile-list-day h3{margin:0;padding:4px 0 3px;border-bottom:1px solid var(--line);font:700 9.5px/1 Georgia,serif;letter-spacing:.01em;color:var(--ink)}
  .mobile-list-row{min-height:17px;display:grid;grid-template-columns:40px minmax(0,1fr) minmax(0,1.15fr) 54px;gap:5px;align-items:baseline;padding:2.5px 0;border-bottom:1px solid rgba(18,52,59,.12);text-decoration:none;color:var(--ink)}
  .mobile-list-row time{font:900 6.5px/1 Arial,sans-serif;color:var(--muted)}
  .mobile-list-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 8.8px/1 Georgia,serif}
  .mobile-list-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:7px/1 Arial,sans-serif;color:var(--muted)}
  .mobile-list-row em{min-width:0;overflow:hidden;white-space:nowrap;text-align:right;font:900 5.8px/1 Arial,sans-serif;color:var(--accent);font-style:normal;letter-spacing:.03em}
  .mobile-list-search-footer{display:flex;justify-content:flex-end;align-items:center;padding:0 7px 2px;min-height:0}
  .mobile-list-search-footer[hidden]{display:none!important}
  .mobile-list-search-footer button{min-height:34px;padding:0 14px;border:1px solid #e7d6b7;border-radius:5px;background:#f5e8d4;color:#17363a;font:600 11px system-ui,sans-serif;cursor:pointer;touch-action:manipulation}
  .mobile-list-search-footer button:focus-visible{outline:2px solid #17363a;outline-offset:2px}
  .mobile-empty{margin:12px 0;font:italic 10px Georgia,serif;color:var(--muted)}

  /* PAGE 3 - editorial magazine. The first five form the opening screen:
     two large stories above three smaller ones. Further sections step down in scale. */
  .mobile-editorial-page{padding:9px 18px 18px!important;display:grid!important;grid-template-rows:auto minmax(0,1fr)!important;gap:6px!important;touch-action:pan-y!important;background:linear-gradient(180deg,#f5f1e6,#eef1e8)!important}
  .mobile-editorial-scroll{min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;padding:0 0 28px}
  .mobile-editorial-group{margin:0 0 18px}
  .mobile-editorial-group>header{display:flex;align-items:baseline;gap:9px;padding:7px 0 4px;border-bottom:1px solid var(--ink)}
  .mobile-editorial-group>header span{font:900 6px/1 Arial,sans-serif;letter-spacing:.13em;color:var(--accent)}
  .mobile-editorial-group>header h3{margin:0;font:600 15px/1 Georgia,serif;color:var(--ink)}
  .mobile-editorial-grid{display:grid;gap:7px;margin-top:7px}
  .mobile-editorial-card{min-width:0;display:grid;grid-template-rows:minmax(0,1fr) auto;border:1px solid var(--line);text-decoration:none;color:var(--ink);background:rgba(255,255,255,.19);overflow:hidden}
  .mobile-editorial-art{min-width:0;min-height:0;overflow:hidden;background:var(--paper2);display:grid;place-items:center}
  .mobile-editorial-art img{display:block;width:100%;height:100%;object-fit:contain;object-position:center;filter:saturate(.92) contrast(1.02)}
  .editorial-fallback{width:100%;height:100%;display:grid;place-items:center;padding:12px;background:linear-gradient(145deg,var(--ink),#2f7467);color:var(--paper);font:900 9px Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em}
  .mobile-editorial-copy{min-width:0;padding:7px 8px;display:flex;flex-direction:column}
  .mobile-editorial-copy span{display:block;font:900 5.8px/1 Arial,sans-serif;color:var(--accent);letter-spacing:.08em}
  .mobile-editorial-copy strong{display:block;margin-top:3px;font:600 clamp(12px,3.2vh,19px)/1.02 Georgia,serif;color:var(--ink)}
  .mobile-editorial-copy em{display:block;margin-top:3px;font:6.5px/1.15 Arial,sans-serif;color:var(--muted);font-style:normal}
  .mobile-editorial-copy p{margin:5px 0 0;font:7.5px/1.25 Georgia,serif;color:#35555a;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

  /* Opening five: 2 + 3, designed to occupy roughly one landscape viewport. */
  .layout-five .mobile-editorial-grid{grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:minmax(150px,36vh) minmax(115px,27vh)}
  .layout-five .mobile-editorial-card:nth-child(-n+2){grid-column:span 3}
  .layout-five .mobile-editorial-card:nth-child(n+3){grid-column:span 2}
  .layout-five .mobile-editorial-card:nth-child(-n+2) .mobile-editorial-copy strong{font-size:clamp(15px,4vh,23px)}

  /* Next four deliberately read as a single magazine strip. */
  .layout-four .mobile-editorial-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(130px,31vh)}
  .layout-four .mobile-editorial-copy p{display:none}

  /* Lower page: three on the horizon, then two watch cards and one sell-out pick. */
  .layout-three .mobile-editorial-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(145px,34vh)}
  .layout-two .mobile-editorial-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(155px,36vh)}
  .layout-one .mobile-editorial-grid{grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(170px,40vh)}
  .layout-one .mobile-editorial-card{grid-template-columns:minmax(220px,42%) minmax(0,1fr);grid-template-rows:1fr}
  .layout-one .mobile-editorial-copy{justify-content:center;padding:12px 14px}
  .layout-one .mobile-editorial-copy strong{font-size:clamp(19px,5vh,30px)}


  /* Editorial art direction: cards may choose crop, focal point and composition per event. */
  .mobile-editorial-card.art-side{grid-template-columns:minmax(92px,38%) minmax(0,1fr);grid-template-rows:1fr}
  .mobile-editorial-card.art-side .mobile-editorial-art{height:100%}
  .mobile-editorial-card.art-side .mobile-editorial-copy{justify-content:center}
  .mobile-editorial-card.art-square:not(.art-stack),
  .mobile-editorial-card.art-portrait:not(.art-stack){grid-template-columns:minmax(92px,38%) minmax(0,1fr);grid-template-rows:1fr}
  .mobile-editorial-card.art-square:not(.art-stack) .mobile-editorial-art,
  .mobile-editorial-card.art-portrait:not(.art-stack) .mobile-editorial-art{height:100%}
  .layout-one .mobile-editorial-card.art-square,
  .layout-one .mobile-editorial-card.art-portrait{grid-template-columns:minmax(220px,42%) minmax(0,1fr);grid-template-rows:1fr}
  .mobile-editorial-art img[data-fit="cover"]{object-fit:cover}
  .mobile-editorial-art img[data-fit="contain"]{object-fit:contain}

  /* Event detail remains inside Kevewi so fullscreen/landscape is preserved. */
  .mobile-event-overlay{position:fixed;z-index:500;inset:0;display:none;overflow:auto;background:var(--paper);padding:10px 18px 18px;-webkit-overflow-scrolling:touch}
  .mobile-event-overlay.open{display:block}
  .mobile-overlay-close{position:fixed;z-index:510;right:8px;top:6px;border:0;background:rgba(244,240,229,.92);color:var(--ink);font:500 22px/1 Arial,sans-serif;padding:5px 8px}
  .mobile-overlay-event{display:grid;grid-template-columns:minmax(180px,31vw) minmax(0,1fr);gap:18px;max-width:1100px;margin:0 auto}
  .mobile-overlay-art{height:calc(100dvh - 20px);min-height:250px;overflow:hidden;background:var(--paper2);display:grid;place-items:center}
  .mobile-overlay-art img{width:100%;height:100%;object-fit:contain;object-position:center}
  .mobile-overlay-copy{padding:8px 28px 18px 0;display:flex;flex-direction:column;min-height:calc(100dvh - 38px);box-sizing:border-box}
  .mobile-overlay-action-footer{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 4px 4px;min-width:0}
  .mobile-overlay-primary-actions{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0}
  .mobile-overlay-claim-footer{display:flex;justify-content:flex-end;flex:0 0 auto;padding:0}
  .mobile-overlay-claim{display:inline-block;font:400 10px/1.4 system-ui,sans-serif;color:inherit;opacity:.46;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}
  .mobile-overlay-source{align-self:center}
  .mobile-overlay-copy>span{font:900 7px Arial,sans-serif;color:var(--accent);letter-spacing:.1em}
  .mobile-overlay-copy h1{margin:4px 0 7px;font:600 clamp(27px,7vh,52px)/.98 Georgia,serif}
  .mobile-overlay-copy p{margin:0 0 10px;font:11px/1.32 Georgia,serif;color:#35555a}
  .mobile-overlay-copy dl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:10px 0;background:var(--line);border:1px solid var(--line)}
  .mobile-overlay-copy dl div{background:var(--paper);padding:7px}
  .mobile-overlay-copy dt{font:900 6px Arial,sans-serif;color:var(--muted);text-transform:uppercase}
  .mobile-overlay-copy dd{margin:2px 0 0;font:700 8px Arial,sans-serif}
  .mobile-overlay-source{display:inline-block;border:1px solid var(--ink);background:var(--ink);color:var(--paper);padding:7px 9px;text-decoration:none;font:900 7px Arial,sans-serif}

  .mobile-submit-sheet{position:fixed;z-index:650;left:50%;top:50%;transform:translate(-50%,-50%);display:none;width:min(390px,72vw);padding:18px 20px;background:var(--paper);color:var(--ink);border:1px solid var(--ink);box-shadow:0 18px 45px rgba(18,52,59,.2)}
  .mobile-submit-sheet.open{display:block}
  .mobile-submit-sheet>span{display:block;font:900 7px Arial,sans-serif;letter-spacing:.12em;color:var(--accent)}
  .mobile-submit-sheet>strong{display:block;margin:5px 22px 6px 0;font:600 22px/1 Georgia,serif}
  .mobile-submit-sheet p{margin:0;font:10px/1.35 Georgia,serif;color:var(--muted)}
  .mobile-submit-close{position:absolute;right:4px;top:2px;border:0;background:transparent;color:var(--ink);font:500 20px Arial,sans-serif}
}

@media (max-width:1200px) and (orientation:portrait){
  .mobile-landscape-gate:not(.is-hidden){display:flex!important}
  .mobile-shell{visibility:hidden}
}

@media (max-width:1200px) and (orientation:landscape){
  .mobile-landscape-gate{display:none!important}
  .mobile-shell{visibility:visible}
}


/* 2026-10-10: safe-area-aware event dismissal in landscape. */
@media (max-width:1200px){
  .mobile-overlay-close{
    right:max(28px,env(safe-area-inset-right))!important;
    top:max(13px,env(safe-area-inset-top))!important;
    width:40px!important;height:40px!important;
    border-radius:11px!important;
    background:#fff4de!important;
    box-shadow:0 1px 8px rgba(10,49,65,.16)!important;
    font-size:27px!important;
    cursor:pointer;
  }
}

/* Compact landscape search keyboard: source of truth, not runtime-injected CSS. */
@media (max-width:1200px){
  .mobile-map-page .pipeline-compact-keyboard{position:absolute;z-index:950;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(700px,94vw);padding:9px;background:rgba(22,48,52,.97);border:1px solid #cfb98d;border-radius:12px;box-shadow:0 8px 30px #0008;display:none;box-sizing:border-box}
  .mobile-map-page .pipeline-compact-keyboard.is-open{display:block}
  /* While the site keyboard is open, leave the search box at its original
     top-right position and show the typed query instead of the collapsed icon.
     The page's inline collapsed-icon CSS must not mask the visible text. */
  .mobile-map-page .pipeline-mobile-search.is-keyboard-open{
    width:min(300px,calc(100vw - 92px))!important;
  }
  .mobile-map-page .pipeline-mobile-search.is-keyboard-open input{
    font:600 14px/1.2 system-ui,sans-serif!important;
    background:#fff6df!important;
    color:#17363a!important;
    padding:0 13px!important;
    text-align:left;
    letter-spacing:normal;
  }
  .mobile-map-page .pipeline-mobile-search.is-keyboard-open input::placeholder{color:#667b7a!important}
  .pipeline-compact-keyboard .compact-keyboard-row{display:flex;justify-content:center;gap:5px;margin:0 0 5px}
  .pipeline-compact-keyboard .compact-keyboard-row:last-child{margin-bottom:0}
  .pipeline-compact-keyboard button{flex:1;min-width:0;height:clamp(27px,8vh,38px);padding:0 3px;border:1px solid #9babb0;border-radius:6px;background:#f5ebd2;color:#17363a;font:600 clamp(12px,2.7vw,17px)/1 system-ui,sans-serif;touch-action:manipulation}
  .pipeline-compact-keyboard button[data-key="space"]{flex:4}
  .pipeline-compact-keyboard button[data-key="search"]{flex:2;background:#c9ddce}
  .pipeline-compact-keyboard button[data-key="close"]{flex:1.5;background:#e6b8a0}
  .pipeline-compact-keyboard button:focus-visible{outline:2px solid white;outline-offset:1px}
}

/* ---- mobile-swipe-arrows.css ---- */
@media (max-width:1200px){
  /* Replace the old pager dots with tactile swipe controls. */
  .mobile-shell-dots{display:none!important}
  .mobile-map-page::before,.mobile-map-page::after{display:none!important}

  .mobile-swipe-nav{
    position:absolute!important;
    top:50%!important;
    z-index:96!important;
    width:30px!important;
    height:50px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    transform:translateY(-50%)!important;
    border:1px solid rgba(244,240,229,.34)!important;
    border-radius:999px!important;
    background:rgba(23,54,58,.18)!important;
    color:rgba(244,240,229,.82)!important;
    box-shadow:0 2px 10px rgba(23,54,58,.09)!important;
    font:300 29px/1 Arial,sans-serif!important;
    padding:0!important;
    margin:0!important;
    cursor:pointer!important;
    touch-action:manipulation!important;
    -webkit-tap-highlight-color:transparent!important;
    backdrop-filter:blur(2px)!important;
    -webkit-backdrop-filter:blur(2px)!important;
    will-change:transform,opacity!important;
  }
  .mobile-swipe-nav[data-dir="left"]{
    left:max(7px,env(safe-area-inset-left))!important;
    animation:kevewi-swipe-left 4.2s cubic-bezier(.2,.75,.2,1) infinite!important;
  }
  .mobile-swipe-nav[data-dir="right"]{
    right:max(7px,env(safe-area-inset-right))!important;
    animation:kevewi-swipe-right 4.2s .55s cubic-bezier(.2,.75,.2,1) infinite!important;
  }
  .mobile-swipe-nav:hover,.mobile-swipe-nav:focus-visible{
    color:#f4f0e5!important;
    background:rgba(23,54,58,.28)!important;
    outline:none!important;
  }
  .mobile-swipe-nav[data-dir="left"]:hover,.mobile-swipe-nav[data-dir="left"]:focus-visible{
    animation:kevewi-swipe-left-hover .8s cubic-bezier(.2,.8,.2,1) infinite!important;
  }
  .mobile-swipe-nav[data-dir="right"]:hover,.mobile-swipe-nav[data-dir="right"]:focus-visible{
    animation:kevewi-swipe-right-hover .8s cubic-bezier(.2,.8,.2,1) infinite!important;
  }
  .mobile-swipe-nav.is-burst{
    width:38px!important;
    font-size:22px!important;
    letter-spacing:-7px!important;
    color:#f4f0e5!important;
    background:rgba(23,54,58,.38)!important;
  }
  .mobile-swipe-nav[data-dir="left"].is-burst{animation:kevewi-burst-left .36s ease-out 1!important}
  .mobile-swipe-nav[data-dir="right"].is-burst{animation:kevewi-burst-right .36s ease-out 1!important}

  /* Six chronological filters sit as a compact 3 x 2 matrix under genres. */
  .mobile-map-time{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    grid-auto-rows:auto!important;
    gap:4px 7px!important;
  }
  .mobile-map-time button{min-width:0!important;white-space:nowrap!important}
  .mobile-map-time button[data-mobile-time="month"]:before,
  .mobile-map-time button[data-mobile-time="few"]:before,
  .mobile-map-time button[data-mobile-time="all"]:before{
    width:4px!important;height:4px!important;margin-right:6px!important;
    border:0!important;background:rgba(23,54,58,.42)!important;
  }
  .mobile-map-time button[data-mobile-time="month"].active:before,
  .mobile-map-time button[data-mobile-time="few"].active:before,
  .mobile-map-time button[data-mobile-time="all"].active:before{
    background:var(--accent)!important;
  }

  /* Rings are deliberately snug and thin. A selected pin is brighter rather
     than relying on a large hover/focus expansion that can look like a nearby
     event has been selected. */
  .mobile-map-page .pin .pin-tonight-ring,
  .mobile-map-page .pin .pin-week-ring,
  .mobile-map-page .pin .pin-regular-ring{
    fill:none!important;
    stroke-width:1.15!important;
    opacity:.78!important;
    transform:none!important;
  }
  .mobile-map-page .pin .pin-tonight-ring{stroke:#c96658!important}
  .mobile-map-page .pin .pin-week-ring{stroke:#4e8e95!important}
  .mobile-map-page .pin .pin-regular-ring{stroke:var(--lime)!important}
  .mobile-map-page .pin:hover>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring),
  .mobile-map-page .pin:focus>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){
    transform:scale(1.04)!important;
    transform-origin:center!important;
  }
  .mobile-map-page .pin.is-selected{
    filter:drop-shadow(0 0 4px rgba(244,240,229,.72)) brightness(1.16)!important;
  }
  .mobile-map-page .pin.is-selected>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){
    transform:scale(1.10)!important;
    transform-origin:center!important;
    stroke:#fff!important;
    stroke-width:4!important;
  }
  .mobile-map-page .pin.is-selected .pin-tonight-ring,
  .mobile-map-page .pin.is-selected .pin-week-ring,
  .mobile-map-page .pin.is-selected .pin-regular-ring{opacity:1!important}

  /* Keep pages inside exactly one viewport. The previous content-box padding
     could make the What's On and editorial pages slightly wider than 100vw. */
  .mobile-list-page,.mobile-editorial-page{
    box-sizing:border-box!important;
    width:100vw!important;
    min-width:100vw!important;
    max-width:100vw!important;
    padding-left:max(18px,env(safe-area-inset-left))!important;
    padding-right:max(18px,env(safe-area-inset-right))!important;
    overflow:hidden!important;
  }
  .mobile-list-scroll,.mobile-editorial-scroll,.mobile-page-head{
    box-sizing:border-box!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
  }
  .mobile-list-scroll,.mobile-editorial-scroll{overflow-x:hidden!important}
  .mobile-list-row{
    box-sizing:border-box!important;
    width:100%!important;
    max-width:100%!important;
  }
  .mobile-page-head{grid-template-columns:auto minmax(0,1fr) minmax(0,1.15fr)!important}
  .mobile-page-head em{min-width:0!important;max-width:100%!important}
  .mobile-editorial-jumps{
    white-space:normal!important;
    text-align:right!important;
    line-height:1.35!important;
    pointer-events:auto!important;
  }
  .mobile-editorial-jumps a{position:relative!important;z-index:98!important;pointer-events:auto!important}

  @keyframes kevewi-swipe-left{
    0%,60%,100%{transform:translateY(-50%) translateX(0);opacity:.62}
    68%{transform:translateY(-50%) translateX(-2px);opacity:.82}
    76%{transform:translateY(-50%) translateX(3px);opacity:.96}
    84%{transform:translateY(-50%) translateX(0);opacity:.68}
  }
  @keyframes kevewi-swipe-right{
    0%,60%,100%{transform:translateY(-50%) translateX(0);opacity:.62}
    68%{transform:translateY(-50%) translateX(2px);opacity:.82}
    76%{transform:translateY(-50%) translateX(-3px);opacity:.96}
    84%{transform:translateY(-50%) translateX(0);opacity:.68}
  }
  @keyframes kevewi-swipe-left-hover{
    0%,100%{transform:translateY(-50%) translateX(0);opacity:.74}
    50%{transform:translateY(-50%) translateX(6px);opacity:1}
  }
  @keyframes kevewi-swipe-right-hover{
    0%,100%{transform:translateY(-50%) translateX(0);opacity:.74}
    50%{transform:translateY(-50%) translateX(-6px);opacity:1}
  }
  @keyframes kevewi-burst-left{
    0%{transform:translateY(-50%) translateX(0) scale(.92);opacity:.72}
    55%{transform:translateY(-50%) translateX(-9px) scale(1.08);opacity:1}
    100%{transform:translateY(-50%) translateX(0) scale(1);opacity:.8}
  }
  @keyframes kevewi-burst-right{
    0%{transform:translateY(-50%) translateX(0) scale(.92);opacity:.72}
    55%{transform:translateY(-50%) translateX(9px) scale(1.08);opacity:1}
    100%{transform:translateY(-50%) translateX(0) scale(1);opacity:.8}
  }
}

@media (prefers-reduced-motion:reduce){
  .mobile-swipe-nav{animation:none!important}
}

/* ---- theme.css ---- */
:root,
body.mobile-shell-active{
  color-scheme:light;

  /* Single light colour authority. Layout belongs in the component stylesheets. */
  --ink:#234c52;
  --paper:#f7f2e7;
  --paper2:#eef4f0;
  --line:#789d99;
  --accent:#b84a3a;
  --green:#3f7d70;
  --muted:#4f696a;
  --shadow:0 12px 28px rgba(35,76,82,.12);

  --sea:#c5e1e3;
  --sea-stripe:#f7f2e7;
  --land:#f0e5cc;
  --land-line:#6d9c99;
  --map-label:#486d72;

  --genre-dnb:#d95f52;
  --genre-electronic:#5d7fac;
  --genre-hiphop:#a96690;
  --genre-soul:#388e94;
  --genre-reggae:#4b8a6f;
  --genre-folk:#af8736;
  --genre-alternative:#52727c;
  --genre-pop:#d77c6c;
  --genre-jazz:#6f6098;
  --genre-classical:#966f9d;
  --genre-festival:#825c98;
  --genre-experimental:#61766d;
  --ring-tonight:#d45e50;
  --ring-week:#559ba3;
  --ring-regular:#b57c25;
}

html,body{
  background:var(--paper);
  color:var(--ink);
  color-scheme:light;
}

/* All mobile surfaces inherit the same palette. */
body.mobile-shell-active,
body.mobile-shell-active .mobile-shell,
body.mobile-shell-active .mobile-shell-page,
body.mobile-shell-active .mobile-list-page,
body.mobile-shell-active .mobile-editorial-page,
body.mobile-shell-active .mobile-editorial-scroll,
body.mobile-shell-active .mobile-event-overlay{
  background-color:var(--paper)!important;
  color:var(--ink)!important;
}

/* Page 1 - light sea-breeze treatment. */
body.mobile-shell-active .mobile-shell-page.mobile-map-page{
  background-color:var(--sea)!important;
  background-image:repeating-linear-gradient(45deg,var(--sea-stripe) 0,var(--sea-stripe) 2px,var(--sea) 2px,var(--sea) 4px)!important;
}
body.mobile-shell-active .mobile-map-page .map-shell,
body.mobile-shell-active .mobile-map-page .map-viewport,
body.mobile-shell-active .mobile-map-page .map-canvas{
  background:transparent!important;
  background-image:none!important;
}
body.mobile-shell-active .mobile-map-page .coast{
  fill:var(--land)!important;
  stroke:var(--land-line)!important;
  stroke-width:1.9!important;
}
body.mobile-shell-active .mobile-map-page .coast-texture{opacity:.045!important}
body.mobile-shell-active .mobile-map-page .hatch{stroke:var(--map-label)!important;opacity:.08!important}
body.mobile-shell-active .mobile-map-page .map-labels text{fill:var(--map-label)!important;stroke:none!important;opacity:1!important}
body.mobile-shell-active .mobile-map-page .compass circle{stroke:var(--ink)!important}
body.mobile-shell-active .mobile-map-page .compass path{fill:var(--ink)!important}
body.mobile-shell-active .mobile-map-page .compass text{fill:var(--ink)!important}

body.mobile-shell-active .mobile-map-brand strong{color:var(--ink)!important}
body.mobile-shell-active .mobile-map-brand span{color:var(--accent)!important}
body.mobile-shell-active .mobile-map-submit{
  border-color:var(--accent)!important;
  background:var(--accent)!important;
  color:#fff!important;
}
body.mobile-shell-active .mobile-map-page .map-filter-count{
  border-color:var(--line)!important;
  background:var(--paper)!important;
  color:var(--ink)!important;
}

.mobile-map-key-stack,
.mobile-map-key-stack span,
.mobile-map-key-stack strong,
.mobile-map-key-stack button{color:var(--ink)!important}

/* Pins retain their working geometry; theme owns only colour. */
body.mobile-shell-active .mobile-map-page .pin,
body.mobile-shell-active .mobile-map-page .pin:focus,
body.mobile-shell-active .mobile-map-page .pin:focus-visible{outline:none!important}
body.mobile-shell-active .mobile-map-page .pin:hover circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring),
body.mobile-shell-active .mobile-map-page .pin:focus circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring),
body.mobile-shell-active .mobile-map-page .pin:focus-visible circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){
  transform:none!important;
  filter:none!important;
}
body.mobile-shell-active .mobile-map-page .pin>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){stroke:var(--paper)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-dnb circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-dnb)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-electronic circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-electronic)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-reggae circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring),
body.mobile-shell-active .mobile-map-page .pin.kind-roots circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-reggae)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-folk circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-folk)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-hiphop circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-hiphop)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-soul circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-soul)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-alternative circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring),
body.mobile-shell-active .mobile-map-page .pin.kind-live circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-alternative)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-pop circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-pop)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-jazz circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-jazz)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-classical circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-classical)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-festival circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-festival)!important}
body.mobile-shell-active .mobile-map-page .pin.kind-experimental circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:var(--genre-experimental)!important}
body.mobile-shell-active .mobile-map-page .pin .pin-tonight-ring{stroke:var(--ring-tonight)!important}
body.mobile-shell-active .mobile-map-page .pin .pin-week-ring{stroke:var(--ring-week)!important}
body.mobile-shell-active .mobile-map-page .pin .pin-regular-ring{stroke:var(--ring-regular)!important}

.mobile-map-key-stack .kind-dnb i{background:var(--genre-dnb)!important}
.mobile-map-key-stack .kind-electronic i{background:var(--genre-electronic)!important}
.mobile-map-key-stack .kind-roots i,.mobile-map-key-stack .kind-reggae i{background:var(--genre-reggae)!important}
.mobile-map-key-stack .kind-folk i{background:var(--genre-folk)!important}
.mobile-map-key-stack .kind-hiphop i{background:var(--genre-hiphop)!important}
.mobile-map-key-stack .kind-soul i{background:var(--genre-soul)!important}
.mobile-map-key-stack .kind-live i,.mobile-map-key-stack .kind-alternative i{background:var(--genre-alternative)!important}
.mobile-map-key-stack .kind-pop i{background:var(--genre-pop)!important}
.mobile-map-key-stack .kind-jazz i{background:var(--genre-jazz)!important}
.mobile-map-key-stack .kind-classical i{background:var(--genre-classical)!important}
.mobile-map-key-stack .kind-festival i{background:var(--genre-festival)!important}

/* Map popovers are always a light card. */
body.mobile-shell-active .mobile-map-page .map-popover{
  background:var(--paper)!important;
  color:var(--ink)!important;
  border:1px solid var(--line)!important;
  border-left:4px solid var(--accent)!important;
  box-shadow:0 8px 22px rgba(35,76,82,.16)!important;
}
body.mobile-shell-active .mobile-map-page .map-popover strong,
body.mobile-shell-active .mobile-map-page .map-popover-title,
body.mobile-shell-active .mobile-map-page .map-popover-event-copy strong,
body.mobile-shell-active .mobile-map-page .map-popover-close{color:var(--ink)!important}
body.mobile-shell-active .mobile-map-page .map-popover p,
body.mobile-shell-active .mobile-map-page .map-popover time,
body.mobile-shell-active .mobile-map-page .map-popover .meta,
body.mobile-shell-active .mobile-map-page .map-popover-when,
body.mobile-shell-active .mobile-map-page .map-popover-where,
body.mobile-shell-active .mobile-map-page .map-popover-event-copy span{color:var(--muted)!important}
body.mobile-shell-active .mobile-map-page .map-popover a{color:var(--accent)!important}
body.mobile-shell-active .mobile-map-page .map-popover.map-popover-opposite-west{bottom:58px!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-dnb{border-left-color:var(--genre-dnb)!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-electronic{border-left-color:var(--genre-electronic)!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-reggae,
body.mobile-shell-active .mobile-map-page .map-popover.kind-roots{border-left-color:var(--genre-reggae)!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-folk{border-left-color:var(--genre-folk)!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-hiphop{border-left-color:var(--genre-hiphop)!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-soul{border-left-color:var(--genre-soul)!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-alternative,
body.mobile-shell-active .mobile-map-page .map-popover.kind-live{border-left-color:var(--genre-alternative)!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-pop{border-left-color:var(--genre-pop)!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-jazz{border-left-color:var(--genre-jazz)!important}
body.mobile-shell-active .mobile-map-page .map-popover.kind-classical{border-left-color:var(--genre-classical)!important}

/* Pages 2 and 3 - one paper/ink/coral system. */
body.mobile-shell-active .mobile-list-page{background:var(--paper)!important}
body.mobile-shell-active .mobile-editorial-page{background:linear-gradient(180deg,var(--paper),var(--paper2))!important}
body.mobile-shell-active .mobile-page-head,
body.mobile-shell-active .mobile-list-day h3,
body.mobile-shell-active .mobile-list-row,
body.mobile-shell-active .mobile-editorial-group>header,
body.mobile-shell-active .mobile-editorial-card{color:var(--ink)!important}
body.mobile-shell-active .mobile-page-head,
body.mobile-shell-active .mobile-editorial-group>header{border-color:var(--ink)!important}
body.mobile-shell-active .mobile-list-day h3,
body.mobile-shell-active .mobile-list-row,
body.mobile-shell-active .mobile-editorial-card{border-color:var(--line)!important}
body.mobile-shell-active .mobile-editorial-card{background:var(--paper)!important}
body.mobile-shell-active .mobile-editorial-art,
body.mobile-shell-active .mobile-overlay-art{background:var(--paper2)!important}
body.mobile-shell-active .mobile-page-head span,
body.mobile-shell-active .mobile-list-row em,
body.mobile-shell-active .mobile-editorial-group>header span,
body.mobile-shell-active .mobile-editorial-copy span,
body.mobile-shell-active .mobile-overlay-copy>span{color:var(--accent)!important}
body.mobile-shell-active .mobile-page-head em,
body.mobile-shell-active .mobile-list-row span,
body.mobile-shell-active .mobile-list-row time,
body.mobile-shell-active .mobile-editorial-copy em,
body.mobile-shell-active .mobile-editorial-copy p,
body.mobile-shell-active .mobile-overlay-copy p{color:var(--muted)!important}
body.mobile-shell-active .mobile-page-head strong,
body.mobile-shell-active .mobile-list-row strong,
body.mobile-shell-active .mobile-editorial-group h3,
body.mobile-shell-active .mobile-editorial-copy strong,
body.mobile-shell-active .mobile-overlay-copy h1,
body.mobile-shell-active .mobile-overlay-copy dt,
body.mobile-shell-active .mobile-overlay-copy dd{color:var(--ink)!important}

/* In-app event detail overlay. */
body.mobile-shell-active .mobile-event-overlay,
body.mobile-shell-active .mobile-overlay-copy,
body.mobile-shell-active .mobile-overlay-copy dl>div{background:var(--paper)!important;color:var(--ink)!important}
body.mobile-shell-active .mobile-overlay-copy dl{background:var(--line)!important;border-color:var(--line)!important}
body.mobile-shell-active .mobile-overlay-source{
  background:var(--ink)!important;
  border-color:var(--ink)!important;
  color:var(--paper)!important;
}
body.mobile-shell-active .mobile-overlay-close{background:var(--paper)!important;color:var(--ink)!important}

/* Standalone event page uses the same palette. */
.event-page,.event-hero,.event-detail,.more-events{background:var(--paper)!important;color:var(--ink)!important}
.event-facts{background:var(--line)!important;border-color:var(--line)!important}
.event-fact,.more-card{background:var(--paper)!important;color:var(--ink)!important}
.event-title,.event-detail h2,.event-fact strong,.more-card strong{color:var(--ink)!important}
.event-deck,.event-detail p,.event-source-note,.event-fact span,.more-card span{color:var(--muted)!important}
.event-kicker,.eyebrow{color:var(--accent)!important}
.primary-action{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}
.secondary-action,.event-back{color:var(--ink)!important}

/* ---- mobile-list-polish.css ---- */
@media (max-width:1200px){
  /* Keep the printed-guide page inside its 100vw shell. Padding used to make
     the content box wider than the viewport, clipping the genre column. */
  body.mobile-shell-active .mobile-list-page{
    box-sizing:border-box!important;
    width:100vw!important;
    max-width:100vw!important;
    min-width:0!important;
    overflow:hidden!important;
  }
  body.mobile-shell-active .mobile-list-scroll{
    box-sizing:border-box!important;
    width:100%!important;
    min-width:0!important;
    overflow-x:hidden!important;
  }
  body.mobile-shell-active .mobile-list-row{
    box-sizing:border-box!important;
    width:100%!important;
    min-width:0!important;
  }
  body.mobile-shell-active .mobile-list-row em{
    min-width:0!important;
    padding-right:2px!important;
    overflow:hidden!important;
    white-space:nowrap!important;
  }

  /* A CSS grid overrides the browser's default [hidden] rendering rule.
     Search must truly remove non-matching rows, not just tag them. */
  body.mobile-shell-active .mobile-list-row[hidden],
  body.mobile-shell-active .mobile-list-day[hidden]{
    display:none!important;
  }

  /* Use the same genre language as the map key. */
  body.mobile-shell-active .mobile-list-row em[data-genre-code="dnb"]{color:var(--genre-dnb,#d95f52)!important}
  body.mobile-shell-active .mobile-list-row em[data-genre-code="electronic"]{color:var(--genre-electronic,#5d7fac)!important}
  body.mobile-shell-active .mobile-list-row em[data-genre-code="roots"]{color:var(--genre-reggae,#4b8a6f)!important}
  body.mobile-shell-active .mobile-list-row em[data-genre-code="folk"]{color:var(--genre-folk,#af8736)!important}
  body.mobile-shell-active .mobile-list-row em[data-genre-code="jazz"]{color:var(--genre-jazz,#6f6098)!important}
  body.mobile-shell-active .mobile-list-row em[data-genre-code="festival"]{color:var(--genre-festival,#825c98)!important}
  body.mobile-shell-active .mobile-list-row em[data-genre-code="pop"]{color:var(--genre-pop,#d77c6c)!important}
  body.mobile-shell-active .mobile-list-row em[data-genre-code="live"]{color:var(--genre-alternative,#52727c)!important}
}

/* ---- overlay-cleanup.css ---- */
.mobile-overlay-source.is-unavailable{display:none!important}

/* ---- editorial-art-auto.css ---- */
@media (max-width:1200px){
  /* Automatic editorial art direction. These rules deliberately override the
     generic card geometry after the image has been classified in the browser. */
  .mobile-editorial-card.art-auto-side{
    grid-template-columns:minmax(92px,38%) minmax(0,1fr)!important;
    grid-template-rows:1fr!important;
  }
  .mobile-editorial-card.art-auto-side .mobile-editorial-art{
    height:100%!important;
    min-height:0!important;
  }
  .mobile-editorial-card.art-auto-side .mobile-editorial-copy{
    justify-content:center!important;
  }

  /* Text-led generated fallback graphics are always shown intact. */
  .mobile-editorial-card.art-auto-generated .mobile-editorial-art{
    background:var(--paper2)!important;
    padding:0!important;
  }
  .mobile-editorial-card.art-auto-generated .mobile-editorial-art img{
    object-fit:contain!important;
    object-position:50% 50%!important;
  }

  /* Portrait and square flyers/logos stay readable instead of being sliced. */
  .mobile-editorial-card.art-auto-poster .mobile-editorial-art{
    background:var(--paper2)!important;
  }

  /* Photo cards keep the visual impact of a crop, while JS biases artist
     imagery toward the lower part of the source where faces usually sit. */
  .mobile-editorial-card.art-auto-photo .mobile-editorial-art{
    background:var(--paper2)!important;
  }

  /* The single large booking card should still read as a designed feature. */
  .layout-one .mobile-editorial-card.art-auto-side{
    grid-template-columns:minmax(220px,42%) minmax(0,1fr)!important;
    grid-template-rows:1fr!important;
  }
}

/* ---- share-events.css ---- */
.kevewi-share-button{
  appearance:none;
  border:1px solid rgba(18,52,59,.55);
  background:rgba(244,240,229,.94);
  color:#12343b;
  padding:6px 8px;
  font:900 9px/1 Arial,sans-serif;
  letter-spacing:.06em;
  cursor:pointer;
  text-transform:uppercase;
}
.kevewi-share-button:hover,.kevewi-share-button:focus-visible{border-color:#12343b;outline:none}
.kevewi-share-button.is-copied{background:#12343b;color:#f4f0e5}
.kevewi-card-main{display:contents;color:inherit;text-decoration:none}
.mobile-editorial-card,.pick,.more-card{position:relative}
.mobile-editorial-card .kevewi-card-share,
.pick .kevewi-card-share,
.more-card .kevewi-card-share{
  position:absolute;
  z-index:8;
  top:6px;
  right:6px;
  box-shadow:0 2px 7px rgba(18,52,59,.12);
}
.map-popover-share{
  margin:4px 0 0 7px!important;
  padding:4px 6px!important;
  font-size:6.5px!important;
  background:transparent!important;
  color:#e2b36e!important;
  border-color:rgba(226,179,110,.55)!important;
}
.map-popover-cluster-share{
  display:block;
  margin:-2px 0 4px auto;
  padding:3px 5px;
  font-size:6px;
  background:transparent;
  color:#e2b36e;
  border-color:rgba(226,179,110,.45);
}
.event-actions .kevewi-event-page-share{
  font:inherit;
}
.mobile-overlay-primary-actions .kevewi-overlay-share{
  margin-left:0;
  flex:0 0 auto;
}

@media (max-width:1200px){
  .mobile-editorial-card .kevewi-card-share{
    top:5px;
    right:5px;
    padding:4px 6px;
    font-size:5.8px;
    letter-spacing:.05em;
    border-color:rgba(23,54,58,.45);
  }
  .mobile-editorial-card .kevewi-card-share.is-copied{font-size:5.2px}
}

/* ---- regular-events-toggle.css ---- */
/* Free and regular events are visibility layers, not map status rings. */
.pin-regular-ring{display:none!important}
.map-regular-toggle{display:none!important}

#regularOnly.regular-events-switch,
#freeEventsToggle.free-events-switch{
  border-color:rgba(49,91,95,.42)!important;
}
#regularOnly.regular-events-switch.regular-events-shown{
  border-color:#a97622!important;
}
#freeEventsToggle.free-events-switch.free-events-shown{
  border-color:#4f8f79!important;
}

/* Mobile key geometry and layer-marker styling now live in map-key-vertical.css.
   Keeping this file behaviour-only prevents the retired 3-column key from
   fighting the current right-hand vertical layout. */

/* ---- pipeline-stage.css ---- */
:root{
  --pipeline-ink:#133f49;
  --pipeline-paper:#f4eedb;
  --pipeline-cyan:#69c1c7;
  --pipeline-coral:#e35d4f;
  --pipeline-ochre:#c8972f;
  --pipeline-green:#4a9474;
  --pipeline-purple:#a45b8f;
  --pipeline-blue:#5f80b7;
}
body.mobile-shell-active .mobile-map-brand,
body.mobile-shell-active .mobile-map-key-stack,
body.mobile-shell-active .pipeline-fixed-head,
body.mobile-shell-active .mobile-shell-dots{
  display:none!important;
}
body.mobile-shell-active .mobile-map-page .map-shell,
body.mobile-shell-active .mobile-map-page .map-viewport,
body.mobile-shell-active .mobile-map-page .map-canvas{
  background:transparent!important;
}
/* Keep the full coast and northern pins inside the landscape canvas.
   Scale/translate the actual SVG - never separate the pins from the coast. */
body.mobile-shell-active .mobile-map-page .map-canvas svg{
  width:112%!important;
  height:94%!important;
  overflow:visible!important;
  transform:translate(-55px, 10px) rotate(-1.4deg) scaleX(1.06)!important;
  transform-origin:center center!important;
}
body.mobile-shell-active .mobile-map-page .coast{
  fill:#f5ecd3!important;
  stroke:#153f49!important;
  stroke-width:2.25!important;
  filter:drop-shadow(0 2px 1px rgba(19,63,73,.15));
}
body.mobile-shell-active .mobile-map-page .coast-texture{opacity:.06!important}
body.mobile-shell-active .mobile-map-page .map-labels text{
  fill:var(--pipeline-ink)!important;
  font-family:Arial,Helvetica,sans-serif!important;
  font-weight:800!important;
  opacity:.9!important;
}
body.mobile-shell-active .pipeline-stage-head{
  position:absolute;
  z-index:80;
  left:max(28px,env(safe-area-inset-left));
  top:max(18px,env(safe-area-inset-top));
  width:min(720px,48vw);
  pointer-events:none;
  color:var(--pipeline-ink);
}
body.mobile-shell-active .pipeline-stage-title{
  display:block;
  margin:0;
  font:900 clamp(42px,5.2vw,82px)/.82 Arial,Helvetica,sans-serif;
  letter-spacing:-.075em;
  text-transform:uppercase;
}
body.mobile-shell-active .pipeline-stage-subtitle{
  display:block;
  margin-top:10px;
  padding:0 0 10px;
  border-bottom:2px solid rgba(19,63,73,.75);
  font:900 clamp(8px,1vw,15px)/1 Arial,Helvetica,sans-serif;
  letter-spacing:.34em;
  text-transform:uppercase;
}
body.mobile-shell-active .pipeline-genre-key{
  position:absolute;
  z-index:82;
  left:max(28px,env(safe-area-inset-left));
  top:clamp(108px,19vh,170px);
  width:min(500px,35vw);
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px 14px;
  pointer-events:none;
}
body.mobile-shell-active .pipeline-genre-key button,
body.mobile-shell-active .pipeline-filter-key button{
  appearance:none;
  border:0;
  background:transparent;
  color:var(--pipeline-ink);
  font-family:Arial,Helvetica,sans-serif;
  font-weight:850;
  text-transform:none;
  cursor:pointer;
}
body.mobile-shell-active .pipeline-genre-key button{
  min-width:0;
  pointer-events:auto;
  display:flex;
  align-items:center;
  gap:9px;
  padding:0;
  font-size:clamp(8px,.72vw,12px);
  line-height:1.05;
  text-align:left;
  white-space:nowrap;
}
body.mobile-shell-active .pipeline-genre-key button i{
  display:block;
  flex:0 0 15px;
  width:15px;
  height:15px;
  box-shadow:0 0 0 1px rgba(244,238,219,.72);
}
body.mobile-shell-active .pipeline-genre-key button.is-off{opacity:.28}
body.mobile-shell-active .pipeline-genre-key .kind-dnb i{background:#e35d4f}
body.mobile-shell-active .pipeline-genre-key .kind-pop i{background:#e98068}
body.mobile-shell-active .pipeline-genre-key .kind-soul i{background:#2e8f95}
body.mobile-shell-active .pipeline-genre-key .kind-reggae i{background:#4a9474}
body.mobile-shell-active .pipeline-genre-key .kind-folk i{background:#c8972f}
body.mobile-shell-active .pipeline-genre-key .kind-alternative i{background:#91b3b3}
body.mobile-shell-active .pipeline-genre-key .kind-hiphop i{background:#a45b8f}
body.mobile-shell-active .pipeline-genre-key .kind-jazz i{background:#5f80b7}
body.mobile-shell-active .pipeline-genre-key .kind-house i{background:#318f99}

body.mobile-shell-active .pipeline-filter-key{
  position:absolute;
  z-index:83;
  right:max(26px,env(safe-area-inset-right));
  bottom:max(22px,env(safe-area-inset-bottom));
  width:min(650px,47vw);
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px 24px;
  padding:18px 22px;
  border:1px solid rgba(19,63,73,.22);
  border-radius:18px;
  background:rgba(248,242,222,.94);
  box-shadow:0 10px 30px rgba(15,59,70,.12);
  backdrop-filter:blur(2px);
  pointer-events:auto;
}
body.mobile-shell-active .pipeline-filter-key button{
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
  min-height:20px;
  padding:0;
  font-size:clamp(8px,.76vw,12px);
  line-height:1;
  text-align:left;
  white-space:nowrap;
}
body.mobile-shell-active .pipeline-filter-key button i{
  display:block;
  flex:0 0 18px;
  width:18px;
  height:18px;
  box-sizing:border-box;
  border:3px solid var(--pipeline-ink);
  border-radius:50%;
  background:transparent;
}
body.mobile-shell-active .pipeline-filter-key button.active i{
  background:var(--pipeline-coral);
  border-color:var(--pipeline-coral);
}
body.mobile-shell-active .pipeline-filter-key [data-pipeline-filter="regularOnly"] i{border-color:var(--pipeline-ochre)}
body.mobile-shell-active .pipeline-filter-key [data-pipeline-filter="regularOnly"].active i{background:var(--pipeline-ochre)}
body.mobile-shell-active .mobile-map-page .map-filter-count{
  left:max(28px,env(safe-area-inset-left))!important;
  right:auto!important;
  bottom:max(24px,env(safe-area-inset-bottom))!important;
  z-index:84!important;
  padding:13px 20px!important;
  border:2px solid #efb344!important;
  border-radius:8px!important;
  background:#143f49!important;
  color:#f7f0dd!important;
  box-shadow:6px 6px 0 rgba(239,179,68,.95)!important;
  font:900 clamp(11px,.9vw,15px)/1 Arial,Helvetica,sans-serif!important;
  letter-spacing:.08em!important;
}
/* Swiping is always available. The circular arrow hints appear briefly
   after a map tap, then fade to leave the artwork unobstructed. */
body.mobile-shell-active .mobile-map-page .mobile-swipe-nav{
  width:54px!important;
  height:54px!important;
  border:2px solid rgba(244,238,219,.85)!important;
  border-radius:50%!important;
  background:rgba(19,63,73,.58)!important;
  color:#f4eedb!important;
  box-shadow:none!important;
  opacity:0!important;
  pointer-events:none!important;
  animation:none!important;
  transition:opacity 180ms ease-out!important;
}
body.mobile-shell-active .mobile-map-page.swipe-hints-visible .mobile-swipe-nav{
  opacity:.87!important;
  pointer-events:auto!important;
  transition:opacity 90ms ease-in!important;
}
body.mobile-shell-active .mobile-map-page .mobile-swipe-nav:focus-visible{
  opacity:1!important;
  pointer-events:auto!important;
  outline:2px solid #f4eedb!important;
  outline-offset:2px!important;
}
body.mobile-shell-active .mobile-map-page.swipe-hints-visible .mobile-swipe-nav:hover{
  opacity:1!important;
}
body.mobile-shell-active .map-zoom-controls{
  display:none!important;
}
@media(max-width:1000px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-stage-head{left:18px;top:12px;width:52vw}
  body.mobile-shell-active .pipeline-stage-title{font-size:clamp(34px,5.1vw,58px)}
  body.mobile-shell-active .pipeline-stage-subtitle{margin-top:6px;padding-bottom:7px;font-size:8px}
  body.mobile-shell-active .pipeline-genre-key{left:18px;top:88px;width:34vw;gap:7px 8px}
  body.mobile-shell-active .pipeline-genre-key button{font-size:7.4px;gap:6px}
  body.mobile-shell-active .pipeline-genre-key button i{width:11px;height:11px;flex-basis:11px}
  body.mobile-shell-active .pipeline-filter-key{right:14px;bottom:12px;width:46vw;gap:8px 10px;padding:12px 14px;border-radius:13px}
  body.mobile-shell-active .pipeline-filter-key button{font-size:7px;gap:6px}
  body.mobile-shell-active .pipeline-filter-key button i{width:13px;height:13px;flex-basis:13px;border-width:2px}
  body.mobile-shell-active .mobile-map-page .map-filter-count{left:18px!important;bottom:14px!important;padding:9px 13px!important;font-size:9px!important}
  body.mobile-shell-active .mobile-map-page .mobile-swipe-nav{width:42px!important;height:42px!important}
}


/* Neutral fallback; the final ocean treatment lives in the modernist theme. */
body.mobile-shell-active .mobile-shell-page.mobile-map-page{
  isolation:isolate!important;
  background-color:#0c2847!important;
}
body.mobile-shell-active .mobile-map-page .map-shell{
  position:relative!important;
  z-index:10!important;
}
/* Public submissions must be reachable from the landscape map itself.
   Keep the action in the clear upper-right area, away from the left genre key. */
body.mobile-shell-active .mobile-map-submit{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  left:auto!important;
  right:max(14px,env(safe-area-inset-right))!important;
  top:max(66px,calc(env(safe-area-inset-top) + 66px))!important;
  z-index:90!important;
  min-height:26px!important;
  padding:3px 8px!important;
  border:1px solid #d5a95f!important;
  border-radius:5px!important;
  background:#17363a!important;
  color:#f2eee0!important;
  font:700 9px/1.1 Arial,sans-serif!important;
  text-decoration:none!important;
  box-shadow:none!important;
}
/* Compact visual button, with a full 44px finger target. */
body.mobile-shell-active .mobile-map-submit::before{
  content:"";
  position:absolute;
  inset:-9px;
}
body.mobile-shell-active .mobile-map-submit:focus-visible{
  outline:3px solid #fff7e7!important;
  outline-offset:2px!important;
}
/* The shared SVG framing above also applies to tablets. */
body.mobile-shell-active .pipeline-filter-key{
  right:max(24px,env(safe-area-inset-right))!important;
  bottom:max(16px,env(safe-area-inset-bottom))!important;
  width:min(610px,44vw)!important;
  gap:9px 18px!important;
  padding:12px 16px!important;
  border-radius:15px!important;
}
body.mobile-shell-active .pipeline-filter-key button{
  min-height:17px!important;
  font-size:clamp(8px,.7vw,11px)!important;
}
body.mobile-shell-active .pipeline-filter-key button i{
  width:15px!important;
  height:15px!important;
  flex-basis:15px!important;
  border-width:2px!important;
}
@media(max-width:1000px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-filter-key{
    right:10px!important;
    bottom:8px!important;
    width:43vw!important;
    gap:6px 10px!important;
    padding:9px 11px!important;
  }
  body.mobile-shell-active .pipeline-filter-key button{
    min-height:14px!important;
    font-size:6.8px!important;
  }
  body.mobile-shell-active .pipeline-filter-key button i{
    width:12px!important;height:12px!important;flex-basis:12px!important;
  }
}


/* 2026-10-07: keep the Newquay/Porth pin corridor clear of the genre controls. */
@media (orientation:landscape){
  body.mobile-shell-active .pipeline-genre-key{
    max-width:35vw!important;
  }
}
@media (max-width:1000px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-genre-key{
    width:34vw!important;
    max-width:34vw!important;
  }
}

/* ---- pipeline-modernist-theme.css ---- */
/* PIPELINE.GUIDE - modernist coastal theme, 2026-10-10
   Presentation only. Existing Cornwall SVG, pins, event data and filter wiring
   are unchanged. Landscape is the supported mobile map orientation. */
:root{
  --pipeline-theme-ink:#10354e;
  --pipeline-theme-paper:#fff6e4;
  --pipeline-theme-orange:#ff711f;
  --pipeline-theme-turquoise:#029e9e;
  --pipeline-theme-magenta:#ef3d73;
  --pipeline-theme-cyan:#0076d7;
  --pipeline-theme-gold:#ffc13a;
  --pipeline-theme-coast:url('/pipeline-ocean-surface-v2.svg?v=20261011-01');
  /* Deep indigo and warm slate mineral glazes mute cyan without touching the live coast. */
  --pipeline-theme-coast-muted:
    linear-gradient(115deg,rgba(20,27,43,.40),rgba(33,43,53,.37) 52%,rgba(17,37,47,.43)),
    linear-gradient(rgba(122,90,66,.075),rgba(122,90,66,.075)),
    url('/pipeline-ocean-surface-v2.svg?v=20261011-01');
}
body.mobile-shell-active .mobile-shell-page.mobile-map-page{
  background-color:#0c2847!important;
  background-image:var(--pipeline-theme-coast-muted)!important;
  background-size:cover!important;
  background-position:50% 50%!important;
  background-repeat:no-repeat!important;
}
body.mobile-shell-active .mobile-map-page .map-shell,
body.mobile-shell-active .mobile-map-page .map-viewport,
body.mobile-shell-active .mobile-map-page .map-canvas{background:transparent!important}
/* Textured pastel pigment is clipped by the existing live Cornwall path.
   No replacement map image: event pins remain interactive. */
body.mobile-shell-active .mobile-map-page .coast{
  fill:url(#pipelineLandWash)!important;
  stroke:none!important;
  opacity:.18!important;
  filter:none!important;
}
/* The separate mineral pigment is composited over the exact geographic fallback. */
body.mobile-shell-active .mobile-map-page .coast-texture{
  opacity:0!important;
  pointer-events:none!important;
}
/* Dark typesetting on light pigment; thin chalk halo keeps coastal names legible. */
body.mobile-shell-active .mobile-map-page .map-labels text{
  fill:#10354e!important;
  font-family:Arial,Helvetica,sans-serif!important;
  font-weight:900!important;
  opacity:1!important;
  paint-order:stroke fill!important;
  stroke:#e9eee6!important;
  stroke-width:2px!important;
  stroke-linejoin:round!important;
}
/* Place the logo on the darker left-hand sky, like the approved mock-up. */
body.mobile-shell-active .pipeline-stage-head{
  left:max(20px,env(safe-area-inset-left))!important;
  top:max(14px,env(safe-area-inset-top))!important;
  width:44vw!important;
  color:#fff7e9!important;
  z-index:86!important;
  text-shadow:0 2px 6px rgba(5,56,79,.18);
}
body.mobile-shell-active .pipeline-stage-title{
  font-family:Arial,Helvetica,sans-serif!important;
  font-size:clamp(31px,4.4vw,76px)!important;
  font-weight:950!important;
  line-height:.95!important;
  letter-spacing:-.065em!important;
  white-space:nowrap!important;
}
body.mobile-shell-active .pipeline-stage-subtitle{
  margin-top:5px!important;
  padding:0!important;
  border:0!important;
  font-size:clamp(7px,.78vw,12px)!important;
  letter-spacing:.27em!important;
}
/* Genre key now contains *all* ten map categories including Other Live Music.
   Its width and typography shrink together instead of obscuring Cornwall. */
body.mobile-shell-active .pipeline-genre-key{
  z-index:87!important;
  top:clamp(100px,18vh,165px)!important;
  left:max(20px,env(safe-area-inset-left))!important;
  width:min(485px,34vw)!important;
  max-width:34vw!important;
  padding:14px 16px!important;
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px 12px!important;
  background-color:rgba(252,246,226,.94)!important;
  background-image:none!important;
  border:1px solid rgba(255,255,255,.73)!important;
  border-radius:17px!important;
  box-shadow:0 9px 30px rgba(7,59,76,.14)!important;
  backdrop-filter:blur(4px)!important;
}
body.mobile-shell-active .pipeline-genre-key button{
  font-family:Arial,Helvetica,sans-serif!important;
  color:var(--pipeline-theme-ink)!important;
  font-size:clamp(8px,.82vw,12px)!important;
  font-weight:800!important;
  line-height:1.15!important;
  white-space:normal!important;
  gap:7px!important;
  min-height:16px!important;
}
body.mobile-shell-active .pipeline-genre-key button i{
  height:12px!important;width:12px!important;flex-basis:12px!important;
  border-radius:50%!important;
  border:1px solid rgba(255,255,255,.92)!important;
  box-shadow:0 0 0 1px rgba(11,53,75,.13)!important;
}
body.mobile-shell-active .pipeline-genre-key button.is-off{opacity:.3!important}
body.mobile-shell-active .pipeline-genre-key .kind-dnb i{background:#ff711f!important}
body.mobile-shell-active .pipeline-genre-key .kind-electronic i{background:#029e9e!important}
body.mobile-shell-active .pipeline-genre-key .kind-festival i{background:#ed3e78!important}
body.mobile-shell-active .pipeline-genre-key .kind-soul i{background:#ffb400!important}
body.mobile-shell-active .pipeline-genre-key .kind-reggae i{background:#2db255!important}
body.mobile-shell-active .pipeline-genre-key .kind-folk i{background:#007ce5!important}
body.mobile-shell-active .pipeline-genre-key .kind-alternative i{background:#65b3bf!important}
body.mobile-shell-active .pipeline-genre-key .kind-pop i{background:#9354d4!important}
body.mobile-shell-active .pipeline-genre-key .kind-jazz i{background:#144a76!important}
body.mobile-shell-active .pipeline-genre-key .kind-other i{background:#b9aa9d!important}
/* Modern brightly coloured map pins; chronological outline rings remain intact. */
body.mobile-shell-active .mobile-map-page #pins .pin.kind-dnb>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#ff711f!important}
body.mobile-shell-active .mobile-map-page #pins .pin.kind-electronic>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#029e9e!important}
body.mobile-shell-active .mobile-map-page #pins .pin.kind-festival>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#ed3e78!important}
body.mobile-shell-active .mobile-map-page #pins .pin.kind-soul>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#ffb400!important}
body.mobile-shell-active .mobile-map-page #pins .pin.kind-reggae>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#2db255!important}
body.mobile-shell-active .mobile-map-page #pins .pin.kind-folk>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#007ce5!important}
body.mobile-shell-active .mobile-map-page #pins .pin.kind-alternative>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#65b3bf!important}
body.mobile-shell-active .mobile-map-page #pins .pin.kind-pop>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#9354d4!important}
body.mobile-shell-active .mobile-map-page #pins .pin.kind-jazz>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#144a76!important}
body.mobile-shell-active .mobile-map-page #pins .pin.kind-other>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){fill:#b9aa9d!important}
/* Grey/unknown and light turquoise now read as different families, including the numerals. */
body.mobile-shell-active .mobile-map-page #pins .pin.kind-other>text,
body.mobile-shell-active .mobile-map-page #pins .pin.kind-alternative>text{
  fill:#173344!important;
  stroke:none!important;
}
body.mobile-shell-active .mobile-map-page #pins .pin>circle:not(.pin-regular-ring):not(.pin-week-ring):not(.pin-tonight-ring){
 stroke:#fff6e5!important;stroke-width:3!important;
 filter:drop-shadow(0 2px 2px rgba(3,49,74,.28));
}
/* Date-range controls: 4 columns x 2 rows on a landscape phone. */
body.mobile-shell-active .pipeline-filter-key{
  z-index:88!important;
  right:max(16px,env(safe-area-inset-right))!important;
  bottom:max(16px,env(safe-area-inset-bottom))!important;
  width:min(640px,47vw)!important;
  padding:14px 16px!important;
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:7px!important;
  border:1px solid rgba(255,255,255,.75)!important;
  border-radius:18px!important;
  background-color:rgba(255,248,229,.95)!important;
  background-image:repeating-linear-gradient(108deg,rgba(23,63,82,.026) 0 1px,transparent 1px 11px)!important;
  box-shadow:0 12px 34px rgba(3,49,74,.22)!important;
  backdrop-filter:blur(4px)!important;
}
body.mobile-shell-active .pipeline-filter-key button{
  min-width:0!important;
  min-height:38px!important;
  justify-content:center!important;
  gap:6px!important;
  padding:7px 5px!important;
  border:1px solid rgba(7,54,77,.12)!important;
  border-radius:10px!important;
  background:rgba(255,255,255,.67)!important;
  color:var(--pipeline-theme-ink)!important;
  font-family:Arial,Helvetica,sans-serif!important;
  font-size:clamp(8px,.75vw,11px)!important;
  font-weight:850!important;
  line-height:1.12!important;
  text-align:center!important;
  white-space:normal!important;
}
body.mobile-shell-active .pipeline-filter-key button i{
  display:none!important; /* compact landscape key uses a filled active pill */
}
body.mobile-shell-active .pipeline-filter-key button.active{
  background:var(--pipeline-theme-orange)!important;
  border-color:var(--pipeline-theme-orange)!important;
  color:#fff!important;
}
body.mobile-shell-active .pipeline-filter-key button:focus-visible,
body.mobile-shell-active .pipeline-genre-key button:focus-visible{
  outline:3px solid #fff7e7!important;outline-offset:2px!important;
}
body.mobile-shell-active .mobile-map-page .map-filter-count{
  background:#073a55!important;
  border-color:#ffb83c!important;
  color:#fff8e8!important;
  border-radius:12px!important;
  box-shadow:4px 4px 0 #ffb83c!important;
}
/* Landscape phone: headline, two-column key and filter card are intentionally
   small; the real map/pins are never replaced by a screenshot. */
@media (max-width:1000px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-stage-head{
    left:max(12px,env(safe-area-inset-left))!important;
    top:max(9px,env(safe-area-inset-top))!important;
    width:37vw!important;
  }
  body.mobile-shell-active .pipeline-stage-title{
    font-size:clamp(23px,3.5vw,35px)!important;
    letter-spacing:-.07em!important;
  }
  body.mobile-shell-active .pipeline-stage-subtitle{
    font-size:clamp(5.5px,.7vw,7px)!important;
    letter-spacing:.18em!important;
    margin-top:3px!important;
  }
  body.mobile-shell-active .pipeline-genre-key{
    left:max(12px,env(safe-area-inset-left))!important;
    top:clamp(62px,17vh,87px)!important;
    width:34vw!important;
    max-width:34vw!important;
    padding:7px 9px!important;
    gap:3px 6px!important;
    border-radius:10px!important;
  }
  body.mobile-shell-active .pipeline-genre-key button{
    font-size:clamp(6.5px,.86vw,8px)!important;
    gap:4px!important;
    min-height:12px!important;
  }
  body.mobile-shell-active .pipeline-genre-key button i{
    height:8px!important;
    width:8px!important;
    flex-basis:8px!important;
  }
  body.mobile-shell-active .pipeline-filter-key{
    right:max(8px,env(safe-area-inset-right))!important;
    bottom:max(7px,env(safe-area-inset-bottom))!important;
    width:46vw!important;
    padding:7px!important;
    gap:4px!important;
    border-radius:11px!important;
  }
  body.mobile-shell-active .pipeline-filter-key button{
    min-height:25px!important;
    font-size:clamp(6.1px,.80vw,8px)!important;
    padding:5px 3px!important;
    border-radius:7px!important;
  }
  body.mobile-shell-active .mobile-map-page .map-filter-count{
    left:max(12px,env(safe-area-inset-left))!important;
    bottom:max(9px,env(safe-area-inset-bottom))!important;
    padding:7px 9px!important;
    font-size:8px!important;
  }
}
/* Very short landscape viewports: do not let the key reach the count. */
@media(max-height:360px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-genre-key{
    top:57px!important;
    gap:2px 5px!important;
    padding:5px 7px!important;
  }
  body.mobile-shell-active .pipeline-genre-key button{font-size:6px!important;min-height:12px!important}
  body.mobile-shell-active .pipeline-filter-key{padding:5px!important;gap:3px!important}
  body.mobile-shell-active .pipeline-filter-key button{min-height:22px!important;font-size:6px!important}
}
/* Desktop retains its existing working layout but shares the graphic,
   cream cards and bright modern palette. */
@media(min-width:1201px){
  body:not(.mobile-shell-active) .mast{
    background:#076b81 var(--pipeline-theme-coast) center 20%/cover no-repeat!important;
    color:#fff6e8!important;
  }
  body:not(.mobile-shell-active) .mast .brand{
    color:#fff6e8!important;
    font-family:Arial,Helvetica,sans-serif!important;
    letter-spacing:-.055em!important;
  }
  body:not(.mobile-shell-active) .map-wrap{
    background-color:#0c2847!important;
    background-image:var(--pipeline-theme-coast-muted)!important;
    background-position:center!important;
    background-size:cover!important;
    background-repeat:no-repeat!important;
    border-bottom:0!important;
  }
  body:not(.mobile-shell-active) .map-head{
    color:#fff9e9!important;
    text-shadow:0 2px 7px rgba(6,48,65,.3);
  }
  body:not(.mobile-shell-active) .map-head h2{color:#fff6e4!important}
  body:not(.mobile-shell-active) .map-shell .coast{
    fill:url(#pipelineLandWash)!important;
    stroke:none!important;
    opacity:.18!important;
  }
  body:not(.mobile-shell-active) .map-shell .coast-texture{
    opacity:0!important;
    pointer-events:none!important;
  }
  body:not(.mobile-shell-active) .map-shell{
    border-radius:16px!important;
    border-color:rgba(255,248,232,.6)!important;
    background:rgba(255,248,226,.15)!important;
    box-shadow:0 12px 28px rgba(7,52,78,.2)!important;
  }
  body:not(.mobile-shell-active) .controls{
    background:rgba(249,244,227,.95)!important;
    border-radius:18px!important;
    box-shadow:0 6px 16px rgba(10,37,59,.12)!important;
  }
  /* The rest of the desktop guide shares the same sea-print/paper language. */
  body:not(.mobile-shell-active) .intro,
  body:not(.mobile-shell-active) .sources-panel,
  body:not(.mobile-shell-active) .missing{
    background-color:#e9eee7!important;
    background-image:linear-gradient(125deg,rgba(249,244,225,.90),rgba(232,239,229,.91)),
      url('/pipeline-ocean-surface-v2.svg?v=20261011-01')!important;
    background-size:cover!important;
    background-position:center!important;
  }
  body:not(.mobile-shell-active) .intro h1,
  body:not(.mobile-shell-active) .sources-panel h2,
  body:not(.mobile-shell-active) .missing h2{
    font-family:Arial,Helvetica,sans-serif!important;
    font-weight:900!important;
    letter-spacing:-.035em!important;
    color:#12384d!important;
  }
  body:not(.mobile-shell-active) .source-chip{
    background-color:rgba(252,248,232,.93)!important;
    box-shadow:2px 3px 0 rgba(22,65,84,.18)!important;
  }
  body:not(.mobile-shell-active) #when button.active{
    background:var(--pipeline-theme-orange)!important;
    border-color:var(--pipeline-theme-orange)!important;
    color:#fff!important;
  }
}

/* 2026-10-10 brand lockup: preserve the approved type, contain it in a
   lightweight cut-corner tab. One tab; no decorative image or extra font. */
body.mobile-shell-active .pipeline-stage-head{
  box-sizing:border-box!important;
  display:inline-flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  width:max-content!important;
  max-width:50vw!important;
  padding:clamp(9px,1.05vw,14px) clamp(13px,1.55vw,21px) clamp(10px,1.2vw,15px)!important;
  background:linear-gradient(120deg,rgba(10,32,53,.97),rgba(22,56,74,.93))!important;
  border-left:3px solid #cfb27e!important;
  box-shadow:inset 0 1px 0 rgba(249,239,215,.34),0 5px 19px rgba(4,19,34,.2)!important;
  clip-path:polygon(0 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%)!important;
  text-shadow:none!important;
}
body.mobile-shell-active .pipeline-stage-head .pipeline-stage-title{
  color:#f6f0df!important;
  line-height:1!important;
  text-shadow:none!important;
}
body.mobile-shell-active .pipeline-stage-head .pipeline-stage-domain{
  color:#d5e6df!important;
  font:inherit!important;
  letter-spacing:inherit!important;
}
body.mobile-shell-active .pipeline-stage-head .pipeline-stage-dot{
  color:#e5af77!important;
}
body.mobile-shell-active .pipeline-stage-head .pipeline-stage-subtitle{
  color:#bfccc9!important;
  text-shadow:none!important;
  white-space:nowrap!important;
}
@media (max-width:1000px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-stage-head{
    max-width:48vw!important;
    padding:6px 11px 7px!important;
  }
  body.mobile-shell-active .pipeline-stage-head .pipeline-stage-title{
    font-size:clamp(20px,3vw,31px)!important;
  }
  body.mobile-shell-active .pipeline-stage-head .pipeline-stage-subtitle{
    margin-top:3px!important;
    font-size:clamp(5.5px,.7vw,7px)!important;
    letter-spacing:.16em!important;
  }
}
@media (max-height:360px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-stage-head{padding:5px 10px 6px!important}
  body.mobile-shell-active .pipeline-stage-head .pipeline-stage-title{
    font-size:clamp(18px,2.8vw,25px)!important;
  }
}
/* Desktop and detail pages use the same wordmark, without changing layout. */
@media (min-width:1201px){
  body:not(.mobile-shell-active) .mast .brand.pipeline-brand-tab{
    display:inline-block!important;
    width:max-content!important;
    max-width:65vw!important;
    box-sizing:border-box!important;
    padding:9px 15px 9px 16px!important;
    border-left:3px solid #cfb27e!important;
    background:linear-gradient(120deg,rgba(10,32,53,.95),rgba(22,56,74,.92))!important;
    clip-path:polygon(0 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%)!important;
    color:#f6f0df!important;
    font:950 clamp(23px,2.2vw,37px)/1 Arial,Helvetica,sans-serif!important;
    letter-spacing:-.065em!important;
    white-space:nowrap!important;
    text-shadow:none!important;
  }
  body:not(.mobile-shell-active) .mast .brand.pipeline-brand-tab .pipeline-domain{
    font:inherit!important;
    letter-spacing:inherit!important;
    vertical-align:baseline!important;
    margin:0!important;
    color:#d5e6df!important;
  }
  body:not(.mobile-shell-active) .mast .brand.pipeline-brand-tab .pipeline-dot{color:#e5af77!important}
  body:not(.mobile-shell-active) .mast .brand.pipeline-brand-tab small{
    display:block!important;
    margin-top:4px!important;
    color:#bfccc9!important;
    font:800 9px/1.15 Arial,Helvetica,sans-serif!important;
    letter-spacing:.18em!important;
  }
}

/* A quiet, full-width instruction makes the genre key read as controls, not a
   static legend. No click handler or animation is necessary. */
body.mobile-shell-active .pipeline-genre-key .pipeline-genre-hint{
  grid-column:1/-1!important;
  display:block!important;
  padding:0 0 2px!important;
  margin:0!important;
  border-bottom:1px solid rgba(31,73,85,.2)!important;
  color:#49646a!important;
  font:800 clamp(8px,.65vw,10px)/1.1 Arial,Helvetica,sans-serif!important;
  letter-spacing:.14em!important;
  text-transform:uppercase!important;
  text-align:left!important;
  pointer-events:none!important;
}
@media (max-width:1000px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-genre-key .pipeline-genre-hint{
    font-size:6.5px!important;
    letter-spacing:.09em!important;
    padding-bottom:3px!important;
    margin-bottom:0!important;
  }
}
@media (max-height:360px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-genre-key .pipeline-genre-hint{
    font-size:6px!important;
    padding-bottom:2px!important;
  }
}

/* Painterly coastline refinement - irregular pigment, not a stroked outline.
   The geographic #coast remains untouched for mapping and safe fallback.
   Only the fill is subtly displaced; scattered small strokes follow the
   geographical path without drawing a continuous ring around Cornwall. */
body.mobile-shell-active .mobile-map-page #coastTexture,
body:not(.mobile-shell-active) .map-shell #coastTexture{
  display:none!important;
  pointer-events:none!important;
}
body.mobile-shell-active .mobile-map-page .pipeline-coast-paint,
body:not(.mobile-shell-active) .map-shell .pipeline-coast-paint{
  fill:url(#pipelineLandWash);
  stroke:none;
}
body.mobile-shell-active .mobile-map-page #pipelineCoastPigment,
body:not(.mobile-shell-active) .map-shell #pipelineCoastPigment,
body.mobile-shell-active .mobile-map-page #pipelineCoastFlecks,
body:not(.mobile-shell-active) .map-shell #pipelineCoastFlecks{
  pointer-events:none!important;
}
body.mobile-shell-active .mobile-map-page .pipeline-coast-mark-wash,
body:not(.mobile-shell-active) .map-shell .pipeline-coast-mark-wash{
  fill:none;
  stroke:#d5e6dc;
  stroke-width:3.6;
  stroke-opacity:.29;
  stroke-linecap:round;
}
body.mobile-shell-active .mobile-map-page .pipeline-coast-mark-dry,
body:not(.mobile-shell-active) .map-shell .pipeline-coast-mark-dry{
  fill:none;
  stroke:#f5eedf;
  stroke-width:1.6;
  stroke-opacity:.38;
  stroke-linecap:butt;
}
body.mobile-shell-active .mobile-map-page .pipeline-coast-mark-teal,
body:not(.mobile-shell-active) .map-shell .pipeline-coast-mark-teal{
  fill:none;
  stroke:#6faead;
  stroke-width:1.3;
  stroke-opacity:.33;
  stroke-linecap:round;
}
/* Give the tab a little more authority and reclaim map space from the key. */
body.mobile-shell-active .pipeline-stage-head{
  padding:clamp(12px,1.3vw,19px) clamp(18px,1.9vw,27px) clamp(13px,1.35vw,20px)!important;
}
body.mobile-shell-active .pipeline-stage-head .pipeline-stage-title{
  font-size:clamp(39px,5.43vw,93px)!important;
}
body.mobile-shell-active .pipeline-genre-key{
  box-sizing:border-box!important;
  width:min(350px,24vw)!important;
  max-width:24vw!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:min-content repeat(5,minmax(16px,auto))!important;
  align-content:start!important;
  height:max-content!important;
  padding:7px 10px!important;
  gap:1px 8px!important;
  top:clamp(128px,21vh,194px)!important;
}
body.mobile-shell-active .pipeline-genre-key button{min-width:0!important;min-height:16px!important}
@media(max-width:1000px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-stage-head{padding:8px 13px 9px!important}
  body.mobile-shell-active .pipeline-stage-head .pipeline-stage-title{
    font-size:clamp(28px,4.13vw,44px)!important;
  }
  body.mobile-shell-active .pipeline-genre-key{
    width:25vw!important;
    max-width:25vw!important;
    top:clamp(84px,20vh,112px)!important;
    grid-template-rows:min-content repeat(5,minmax(12px,auto))!important;
    padding:5px 7px!important;
    gap:0 5px!important;
  }
  body.mobile-shell-active .pipeline-genre-key button{min-height:12px!important;padding:1px 0!important;line-height:1.05!important}
}
@media(max-height:360px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-stage-head{padding:5px 10px 6px!important}
  body.mobile-shell-active .pipeline-stage-head .pipeline-stage-title{font-size:clamp(23px,3.85vw,34px)!important}
  body.mobile-shell-active .pipeline-genre-key{top:70px!important}
}
/* Match the existing modernist tab and cream controls with an editorial
   event panel. Positioned by JS in visible page coordinates, not SVG x/y. */
#mapPopover{
  box-sizing:border-box!important;
  z-index:140!important;
  display:block!important;
  min-width:0!important;
  min-height:0!important;
  padding:0!important;
  margin:0!important;
  overflow:hidden!important;
  color:#153c4c!important;
  border:1px solid rgba(236,230,207,.95)!important;
  border-left:5px solid #d49d72!important;
  border-radius:13px 18px 18px 12px!important;
  background:linear-gradient(140deg,#fffaf0,#f2f1e5 78%,#e8efe8)!important;
  box-shadow:0 14px 36px rgba(4,27,43,.38),inset 0 1px 0 rgba(255,255,255,.75)!important;
  backdrop-filter:none!important;
  pointer-events:auto!important;
}
#mapPopover[hidden]{display:none!important}
#mapPopover .map-popover-cluster{
  display:flex!important;
  flex-direction:column!important;
  min-width:0!important;
  min-height:0!important;
  max-height:inherit!important;
}
#mapPopover .map-popover-cluster-head{
  display:flex!important;
  flex:0 0 auto!important;
  flex-direction:column!important;
  gap:5px!important;
  padding:16px 44px 12px 16px!important;
  border-bottom:1px solid rgba(31,77,86,.28)!important;
  background:linear-gradient(100deg,rgba(250,237,212,.83),rgba(243,246,235,.35))!important;
}
#mapPopover .map-popover-kicker{
  color:#a36552!important;
  font:900 10px/1.2 Arial,Helvetica,sans-serif!important;
  letter-spacing:.16em!important;
}
#mapPopover .map-popover-cluster-head strong{
  color:#153c4c!important;
  font:900 clamp(19px,1.6vw,27px)/1.08 Arial,Helvetica,sans-serif!important;
  letter-spacing:-.035em!important;
}
#mapPopover .map-popover-cluster-head span:last-child{font-size:11px!important;color:#547277!important}
#mapPopover .map-popover-events{
  display:block!important;
  flex:1 1 auto!important;
  max-height:none!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-color:#b1c8c1 #f4f3e9!important;
}
#mapPopover .map-popover-entry{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:2px!important;
  border-bottom:1px solid rgba(31,77,86,.21)!important;
}
#mapPopover .map-popover-entry:last-child{border-bottom:0!important}
#mapPopover .map-popover-event{
  display:block!important;
  grid-template-columns:none!important;
  min-width:0!important;
  border:0!important;
  margin:0!important;
  padding:0!important;
  text-decoration:none!important;
  background:transparent!important;
}
#mapPopover .map-popover-event-copy{
  display:flex!important;
  flex-direction:column!important;
  gap:5px!important;
  padding:12px 8px 12px 16px!important;
}
#mapPopover .map-popover-event-copy strong{
  display:block!important;
  color:#1c4955!important;
  font:800 clamp(12px,1.05vw,16px)/1.2 Arial,Helvetica,sans-serif!important;
  letter-spacing:-.01em!important;
}
#mapPopover .map-popover-event-copy span{
  color:#627b7e!important;
  font:500 clamp(10px,.72vw,12px)/1.3 Arial,Helvetica,sans-serif!important;
}
#mapPopover .map-popover-entry:hover{background:rgba(72,152,155,.1)!important}
#mapPopover .map-popover-cluster-share{
  display:inline-flex!important;
  margin:0 12px 0 3px!important;
  padding:6px 8px!important;
  border:1px solid rgba(65,104,108,.32)!important;
  border-radius:7px!important;
  background:rgba(255,254,247,.8)!important;
  color:#326270!important;
  font:900 8px/1 Arial,Helvetica,sans-serif!important;
  letter-spacing:.08em!important;
  white-space:nowrap!important;
  align-items:center!important;
  justify-content:center!important;
}
#mapPopover .map-popover-copy{
  display:flex!important;
  flex-direction:column!important;
  gap:9px!important;
  padding:18px 42px 19px 18px!important;
  background:transparent!important;
}
#mapPopover .map-popover-title{
  color:#153c4c!important;
  font:900 clamp(18px,1.65vw,27px)/1.08 Arial,Helvetica,sans-serif!important;
}
#mapPopover .map-popover-when,
#mapPopover .map-popover-where{font:500 12px/1.35 Arial,Helvetica,sans-serif!important;color:#547277!important}
#mapPopover .map-popover-open{font:850 11px/1.25 Arial,Helvetica,sans-serif!important;color:#166f7d!important}
#mapPopover .map-popover-share{
  color:#326270!important;
  border:1px solid rgba(65,104,108,.32)!important;
  border-radius:7px!important;
  padding:7px 10px!important;
  align-self:flex-start!important;
}
#mapPopover .map-popover-close{
  top:9px!important;
  right:9px!important;
  width:27px!important;
  height:27px!important;
  display:grid!important;
  place-items:center!important;
  border-radius:50%!important;
  color:#1c4955!important;
  background:rgba(224,234,226,.8)!important;
  font:700 19px/1 Arial,Helvetica,sans-serif!important;
}
body.mobile-shell-active .mobile-map-page #mapPopover{
  position:absolute!important;
  max-width:calc(100% - 24px)!important;
  grid-template-columns:minmax(0,1fr)!important;
  transform:none!important;
}
/* On a short landscape screen, prioritise visible events over decoration. */
@media(max-width:1000px) and (orientation:landscape){
  #mapPopover .map-popover-cluster-head{padding:10px 35px 8px 11px!important}
  #mapPopover .map-popover-cluster-head strong{font-size:18px!important}
  #mapPopover .map-popover-kicker{font-size:8px!important}
  #mapPopover .map-popover-event-copy{padding:8px 6px 8px 11px!important;gap:3px!important}
  #mapPopover .map-popover-event-copy strong{font-size:12px!important}
  #mapPopover .map-popover-event-copy span{font-size:9px!important}
  #mapPopover .map-popover-cluster-share{font-size:7px!important;margin-right:8px!important;padding:5px!important}
}

/* Genre-panel utility: a compact reset next to the instructional heading. */
body.mobile-shell-active .pipeline-genre-key .pipeline-genre-head{
  grid-column:1/-1!important;
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  align-items:center!important;
  border-bottom:1px solid rgba(31,73,85,.2)!important;
  padding-bottom:2px!important;
}
body.mobile-shell-active .pipeline-genre-key .pipeline-genre-head .pipeline-genre-hint{
  grid-column:1!important;
  border-bottom:0!important;
  padding:0!important;
}
body.mobile-shell-active .pipeline-genre-key .pipeline-genre-head .pipeline-genre-all{
  grid-column:2!important;
  display:block!important;
  width:max-content!important;
  justify-self:end!important;
  height:auto!important;
  min-height:0!important;
  padding:0!important;
  margin:0 32px 0 0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#49646a!important;
  font:800 clamp(8px,.65vw,10px)/1.1 Arial,Helvetica,sans-serif!important;
  letter-spacing:.14em!important;
  text-align:right!important;
  text-decoration:underline!important;
  text-decoration-thickness:1px!important;
  text-decoration-color:rgba(73,100,106,.32)!important;
  text-underline-offset:3px!important;
  cursor:pointer!important;
}
body.mobile-shell-active .pipeline-genre-key .pipeline-genre-all[hidden]{display:none!important}
@media(max-width:1000px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-genre-key .pipeline-genre-head .pipeline-genre-all{font-size:6.5px!important;letter-spacing:.09em!important}
}
@media(max-height:360px) and (orientation:landscape){
  body.mobile-shell-active .pipeline-genre-key .pipeline-genre-head .pipeline-genre-all{font-size:6px!important}
}

/* ---- pipeline-editorial-calendar.css ---- */
/* PIPELINE.GUIDE - calendar and editorial visual identity
   Visual-only layer; map geometry, event sources, pin positions, routing,
   date windows and touch navigation are unchanged.
   The mobile experience is landscape-first, like the main map. */
@media(max-width:1200px){
  body.mobile-shell-active .mobile-shell-page.mobile-list-page,
  body.mobile-shell-active .mobile-shell-page.mobile-editorial-page{
    --magazine-ink:#10354e;
    --magazine-cream:#fff5df;
    --magazine-turquoise:#07999e;
    --magazine-coral:#fa714b;
    --magazine-indigo:#4443b4;
    color:var(--magazine-ink)!important;
    /* The same etched and halftoned sea as the map, printed through
       translucent paper so long listings remain readable. */
    background-color:#e3e8de!important;
    background-image:
      linear-gradient(140deg,rgba(247,240,223,.88),rgba(233,242,235,.90)),
      url('/pipeline-ocean-surface-v2.svg?v=20261011-01')!important;
    background-size:cover!important;
    background-position:center center!important;
    background-repeat:no-repeat!important;
  }
  body.mobile-shell-active .mobile-list-page .mobile-page-head,
  body.mobile-shell-active .mobile-editorial-page .mobile-page-head{
    position:relative!important;
    z-index:2!important;
    display:flex!important;
    align-items:baseline!important;
    gap:clamp(8px,1.5vw,23px)!important;
    min-width:0!important;
    padding:10px 18px 8px!important;
    margin:0!important;
    background-color:#103550!important;
    background-image:linear-gradient(100deg,rgba(5,24,46,.82),rgba(31,75,96,.71)),
      url('/pipeline-ocean-surface-v2.svg?v=20261011-01')!important;
    background-size:cover!important;
    background-position:55% 48%!important;
    border-bottom:3px solid #9bc6ca!important;
    color:#fff5e3!important;
    box-shadow:0 4px 0 rgba(234,181,114,.39)!important;
  }
  body.mobile-shell-active .mobile-page-head>span{
    flex:0 0 auto!important;
    background:var(--magazine-coral)!important;
    border-radius:999px!important;
    padding:4px 9px!important;
    font:900 clamp(7px,.7vw,10px)/1 Arial,sans-serif!important;
    letter-spacing:.12em!important;
    color:#fffaf0!important;
    text-transform:uppercase!important;
  }
  body.mobile-shell-active .mobile-page-head>strong{
    flex:0 1 auto!important;
    font:900 clamp(18px,3.8vh,32px)/.95 Arial,Helvetica,sans-serif!important;
    letter-spacing:-.045em!important;
    color:#fff7e7!important;
    text-shadow:0 1px 5px rgba(0,20,43,.52)!important;
  }
  body.mobile-shell-active .mobile-page-head>em{
    flex:1 1 auto!important;
    min-width:0!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    text-align:right!important;
    white-space:nowrap!important;
    font:700 clamp(7px,.82vw,11px)/1.2 Arial,Helvetica,sans-serif!important;
    font-style:normal!important;
    color:#b9d7d8!important;
  }
  body.mobile-shell-active .mobile-editorial-jumps a{
    color:#e2e9dc!important;
    text-decoration:none!important;
    border-bottom:1px solid rgba(221,230,224,.55)!important;
  }
  body.mobile-shell-active .mobile-editorial-jumps a:focus-visible{
    outline:2px solid #4443b4!important;
  }

  /* Calendar: legibility first, with clear date bars and understated colour. */
  body.mobile-shell-active .mobile-list-scroll,
  body.mobile-shell-active .mobile-editorial-scroll{
    position:relative!important;
    z-index:1!important;
    min-height:0!important;
    background:transparent!important;
    color:var(--magazine-ink)!important;
    scrollbar-color:#0e8b96 transparent;
  }
  body.mobile-shell-active .mobile-list-day{margin:0 0 7px!important}
  body.mobile-shell-active .mobile-list-day h3{
    display:block!important;
    width:fit-content!important;
    max-width:100%!important;
    margin:5px 0 3px!important;
    padding:5px 12px!important;
    background:#16435c!important;
    border:0!important;
    border-radius:2px 14px 14px 2px!important;
    box-shadow:3px 2px 0 rgba(255,183,66,.76)!important;
    color:#fff8e7!important;
    font:900 clamp(8px,.9vw,12px)/1.1 Arial,sans-serif!important;
    letter-spacing:.06em!important;
  }
  body.mobile-shell-active .mobile-list-day:nth-of-type(3n+2) h3{
    background:#397c89!important;color:#fff9ed!important;
  }
  body.mobile-shell-active .mobile-list-day:nth-of-type(3n) h3{
    background:#c8654b!important;color:#fff9ed!important;
  }
  body.mobile-shell-active .mobile-list-row{
    border-bottom:1px solid rgba(10,63,87,.18)!important;
    border-left:3px solid transparent!important;
    background:rgba(255,249,229,.90)!important;
    color:var(--magazine-ink)!important;
    text-decoration:none!important;
    transition:background-color .12s ease!important;
  }
  body.mobile-shell-active .mobile-list-row:nth-of-type(even){
    background:rgba(213,232,223,.85)!important;
  }
  body.mobile-shell-active .mobile-list-row:hover,
  body.mobile-shell-active .mobile-list-row:focus-visible{
    background:rgba(249,218,164,.93)!important;
    border-left-color:#fa714b!important;
  }
  body.mobile-shell-active .mobile-list-row strong{
    color:#10354e!important;
    font-family:Arial,Helvetica,sans-serif!important;
    font-weight:800!important;
  }
  body.mobile-shell-active .mobile-list-row time{color:#115d69!important;font-weight:900!important}
  body.mobile-shell-active .mobile-list-row span{color:#345a67!important}
  body.mobile-shell-active .mobile-list-row em{
    color:#4443b4!important;
    font-weight:900!important;
    font-style:normal!important;
  }

  /* Editorial: the same palette as the map, without painting over gig posters. */
  body.mobile-shell-active .mobile-editorial-group{
    margin-bottom:18px!important;
  }
  body.mobile-shell-active .mobile-editorial-group>header{
    border-bottom:2px solid #397c89!important;
    padding:8px 0 5px!important;
    color:#10354e!important;
  }
  body.mobile-shell-active .mobile-editorial-group>header span{
    padding:4px 7px!important;
    background:#fa714b!important;
    border-radius:8px 2px 8px 2px!important;
    color:#fff7e7!important;
    font:900 7px/1 Arial,sans-serif!important;
    letter-spacing:.12em!important;
  }
  body.mobile-shell-active .mobile-editorial-group>header h3{
    color:#10354e!important;
    font:900 clamp(13px,2.9vh,20px)/1 Arial,sans-serif!important;
    letter-spacing:-.03em!important;
  }
  body.mobile-shell-active .mobile-editorial-card{
    color:#10354e!important;
    background:rgba(255,249,233,.96)!important;
    border:1px solid rgba(8,61,84,.45)!important;
    border-radius:9px!important;
    box-shadow:3px 4px 0 rgba(14,60,85,.23)!important;
    overflow:hidden!important;
  }
  body.mobile-shell-active .mobile-editorial-card:focus-visible{
    outline:2px solid #4443b4!important;
    outline-offset:2px!important;
  }
  body.mobile-shell-active .mobile-editorial-art{background:#e7eee5!important}
  body.mobile-shell-active .mobile-editorial-art img{
    filter:none!important; /* preserve the original artist's poster colour */
  }
  body.mobile-shell-active .mobile-editorial-copy{
    background-color:#fff5e4!important;
    background-image:repeating-linear-gradient(104deg,rgba(29,89,114,.028) 0 1px,transparent 1px 9px)!important;
    color:#10354e!important;
    border-top:1px solid rgba(8,79,106,.1)!important;
  }
  body.mobile-shell-active .mobile-editorial-copy>span{
    color:#e45a34!important;
    font-family:Arial,Helvetica,sans-serif!important;
    font-weight:900!important;
  }
  body.mobile-shell-active .mobile-editorial-copy strong{
    color:#10354e!important;
    font-family:Arial,Helvetica,sans-serif!important;
    font-weight:900!important;
  }
  body.mobile-shell-active .mobile-editorial-copy em{
    color:#286279!important;
    font-style:normal!important;
  }
  body.mobile-shell-active .mobile-editorial-copy p{
    color:#345b66!important;
    font-family:Arial,Helvetica,sans-serif!important;
    font-style:normal!important;
  }
  body.mobile-shell-active .mobile-editorial-group.is-urgent>header span{
    background:#4443b4!important;
  }
}
/* Tiny landscape handsets keep their present density and swipe surfaces. */
@media(max-width:900px) and (orientation:landscape){
  body.mobile-shell-active .mobile-list-page .mobile-page-head,
  body.mobile-shell-active .mobile-editorial-page .mobile-page-head{
    padding:7px 12px 6px!important;
    gap:7px!important;
  }
  body.mobile-shell-active .mobile-page-head>span{
    font-size:6px!important;padding:3px 6px!important;
  }
  body.mobile-shell-active .mobile-page-head>strong{font-size:clamp(17px,4.5vh,25px)!important}
  body.mobile-shell-active .mobile-page-head>em{font-size:6.5px!important}
  body.mobile-shell-active .mobile-list-day h3{margin:3px 0!important;padding:4px 9px!important;font-size:8px!important}
  body.mobile-shell-active .mobile-list-row{border-left-width:2px!important}
  body.mobile-shell-active .mobile-editorial-card{border-radius:8px!important}
}
/* The desktop page already contains the calendar and editorial in a vertical
   site; echo the palette but preserve their layouts and link destinations. */
@media(min-width:1201px){
  body:not(.mobile-shell-active) .picks,
  body:not(.mobile-shell-active) .browse{
    background-color:#edf0e6!important;
    background-image:linear-gradient(125deg,rgba(251,245,224,.9),rgba(232,243,233,.91)),
      url('/pipeline-ocean-surface-v2.svg?v=20261011-01')!important;
    background-size:cover!important;
    background-position:center!important;
  }
  body:not(.mobile-shell-active) .picks h2,
  body:not(.mobile-shell-active) .browse h2{
    color:#10354e!important;
    font-family:Arial,Helvetica,sans-serif!important;
    font-weight:900!important;
  }
}

/* ---- pipeline-detail-entrance.css ---- */
/* PIPELINE.GUIDE - event details and landscape entrance, October 2026
 * Presentation only: event overlay navigation, card links and map remain untouched. */
:root{--pipeline-detail-cream:#fff6e3;--pipeline-detail-ink:#154b55;--pipeline-detail-coral:#f26c46;--pipeline-detail-sea:#0d979b;--pipeline-detail-sun:#f7be56;}

/* Portrait entrance uses the original seafront screenprint as the shared
   art reference. Instructions sit directly on the picture without a card. */
@media(max-width:1200px){
  body.mobile-shell-active .mobile-landscape-gate{
    background-color:#102f4a!important;
    background-image:linear-gradient(180deg,rgba(5,25,45,.6),rgba(9,49,71,.26) 42%,rgba(5,27,51,.8)),
       url('/pipeline-ocean-surface-v2.svg?v=20261011-01')!important;
    background-size:cover!important;
    background-position:72% center!important;
    color:#fff6e7!important;
  }
  body.mobile-shell-active .mobile-landscape-gate:before{
    background:repeating-linear-gradient(106deg,rgba(6,34,52,.18) 0 1px,transparent 1px 12px),
               repeating-linear-gradient(0deg,rgba(236,244,227,.08) 0 1px,transparent 1px 7px)!important;
    opacity:.58!important;
  }
  body.mobile-shell-active .mobile-landscape-gate-inner{
    width:min(470px,92vw)!important;
    max-width:470px!important;
    box-sizing:border-box!important;
    padding:clamp(14px,4vh,34px)!important;
    background:transparent!important;
    color:#fff6e8!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    text-shadow:0 3px 12px rgba(0,12,28,.78),0 1px 2px rgba(0,12,28,.93)!important;
  }
  body.mobile-shell-active .mobile-landscape-gate-inner:before{
    content:'PIPELINE.GUIDE';
    display:block;
    margin:0 0 clamp(22px,4.5vh,46px);
    font:950 clamp(25px,7vw,43px)/1 Arial,Helvetica,sans-serif;
    letter-spacing:-.065em;
    color:#fff5e6;
  }
  body.mobile-shell-active .mobile-landscape-phone{
    border-color:#fff3df!important;
    margin-bottom:clamp(16px,4vh,35px)!important;
    width:57px!important;
    height:96px!important;
    border-radius:11px!important;
    box-shadow:0 2px 7px rgba(2,21,43,.3)!important;
  }
  body.mobile-shell-active .mobile-landscape-phone:after{background:#f26c46!important}
  body.mobile-shell-active .mobile-landscape-gate h2{
    font:950 clamp(32px,8vw,56px)/1.04 Arial,Helvetica,sans-serif!important;
    color:#fff7e7!important;
    letter-spacing:-.055em!important;
  }
  body.mobile-shell-active .mobile-landscape-gate p{
    font:750 clamp(13px,3.4vw,17px)/1.42 Arial,Helvetica,sans-serif!important;
    color:#e3ede8!important;
    opacity:1!important;
  }
  body.mobile-shell-active .mobile-landscape-gate button{
    background:#f26c46!important;color:#fff9ea!important;
    border:2px solid #fff3df!important;border-radius:9px!important;
    font:900 clamp(12px,2.8vw,15px)/1 Arial,sans-serif!important;
    padding:15px 24px!important;
    box-shadow:0 4px 0 #e1ae64,0 5px 22px rgba(0,21,41,.35)!important;
    text-shadow:none!important;
  }

  /* Full-screen event sheet: the same sunny card stock as the magazine.
     Poster and text remain highly readable in horizontal landscape view. */
  body.mobile-shell-active .mobile-event-overlay{
    background-color:#e9ebdf!important;
    background-image:linear-gradient(108deg,rgba(9,36,64,.22) 0,rgba(31,91,111,.23) 27%,rgba(249,242,222,.91) 48%,rgba(248,243,226,.97) 100%),
      url('/pipeline-ocean-surface-v2.svg?v=20261011-01')!important;
    background-position:center!important;
    background-size:cover!important;
    color:#154b55!important;
    padding:clamp(12px,2.3vw,24px)!important;
  }
  body.mobile-shell-active .mobile-overlay-event{
    position:relative!important;
    max-width:1180px!important;
    min-height:calc(100dvh - 2 * clamp(12px,2.3vw,24px))!important;
    margin:0 auto!important;
    display:grid!important;
    grid-template-columns:minmax(165px,35%) minmax(0,1fr)!important;
    align-items:stretch!important;
    gap:clamp(13px,2.2vw,26px)!important;
  }
  body.mobile-shell-active .mobile-overlay-art{
    height:auto!important;
    min-height:0!important;
    background:rgba(255,249,231,.88)!important;
    border:1px solid rgba(9,126,137,.28)!important;
    border-radius:14px!important;
    padding:6px!important;
    box-shadow:4px 5px 0 rgba(11,140,147,.27)!important;
  }
  body.mobile-shell-active .mobile-overlay-art img{object-fit:contain!important;filter:none!important}
  body.mobile-shell-active .mobile-overlay-copy{
    min-width:0!important;
    padding:clamp(14px,1.6vw,20px) clamp(54px,4.2vw,72px) 40px clamp(24px,2.05vw,32px)!important;
    color:#164e59!important;
  }
  body.mobile-shell-active .mobile-overlay-copy>span{
    display:inline-block!important;
    background:#f26c46!important;
    color:#fff9ea!important;
    padding:5px 10px!important;
    border-radius:12px 3px 12px 3px!important;
    font:900 clamp(8px,1vw,11px)/1 Arial,sans-serif!important;
    letter-spacing:.1em!important;
    text-transform:uppercase!important;
  }
  body.mobile-shell-active .mobile-overlay-copy h1{
    color:#164e59!important;
    font:950 clamp(25px,6.2vh,52px)/1 Arial,Helvetica,sans-serif!important;
    letter-spacing:-.045em!important;
    margin:12px 0 12px!important;
    overflow-wrap:anywhere!important;
  }
  body.mobile-shell-active .mobile-overlay-copy dl{
    gap:4px!important;
    background:transparent!important;
    border:0!important;
    margin:12px 0!important;
  }
  body.mobile-shell-active .mobile-overlay-copy dl div{
    padding:9px 10px!important;
    border:1px solid rgba(7,125,140,.22)!important;
    background:rgba(255,251,238,.9)!important;
    border-radius:8px!important;
  }
  body.mobile-shell-active .mobile-overlay-copy dt{
    color:#db6442!important;
    font:900 clamp(7px,.72vw,9px)/1 Arial,sans-serif!important;
    letter-spacing:.09em!important;
  }
  body.mobile-shell-active .mobile-overlay-copy dd{
    color:#174d58!important;
    font:800 clamp(10px,1.14vw,15px)/1.2 Arial,sans-serif!important;
  }
  body.mobile-shell-active .mobile-overlay-copy p{
    font:500 clamp(11px,1.13vw,15px)/1.46 Arial,Helvetica,sans-serif!important;
    color:#345b64!important;
    max-width:60ch!important;
  }
  body.mobile-shell-active .mobile-overlay-source{
    padding:10px 16px!important;
    border:0!important;
    border-radius:9px!important;
    background:#0c9098!important;
    color:#fff8e7!important;
    font:900 clamp(9px,.92vw,12px)/1 Arial,sans-serif!important;
  }
  body.mobile-shell-active .mobile-overlay-close{
    right:max(26px,env(safe-area-inset-right))!important;
    top:max(16px,env(safe-area-inset-top))!important;
    border:1px solid rgba(0,135,145,.2)!important;
    color:#155663!important;
    background:#fff6df!important;
    box-shadow:2px 3px 0 rgba(0,135,145,.23)!important;
  }
  /* Some cards have no image. Let text fill the screen naturally. */
  body.mobile-shell-active .mobile-overlay-event:not(:has(.mobile-overlay-art)){
    grid-template-columns:minmax(0,1fr)!important;
  }
}
@media(max-width:900px) and (orientation:landscape){
  body.mobile-shell-active .mobile-event-overlay{padding:9px 13px!important}
  body.mobile-shell-active .mobile-overlay-event{
    min-height:calc(100dvh - 18px)!important;
    grid-template-columns:minmax(132px,34%) minmax(0,1fr)!important;
    gap:12px!important;
  }
  body.mobile-shell-active .mobile-overlay-copy{
    padding:5px 39px 34px clamp(16px,2.2vw,22px)!important;
  }
  body.mobile-shell-active .mobile-overlay-copy h1{
    margin:6px 0 8px!important;
    font-size:clamp(19px,5.4vh,35px)!important;
  }
  body.mobile-shell-active .mobile-overlay-copy dl{
    margin:7px 0!important;
    gap:3px!important;
  }
  body.mobile-shell-active .mobile-overlay-copy dl div{
    padding:5px 6px!important;
  }
  body.mobile-shell-active .mobile-overlay-copy dt{font-size:6px!important}
  body.mobile-shell-active .mobile-overlay-copy dd{font-size:8px!important}
  body.mobile-shell-active .mobile-overlay-copy p{font-size:10px!important}
  body.mobile-shell-active .mobile-overlay-close{
    top:max(9px,env(safe-area-inset-top))!important;
    right:max(25px,env(safe-area-inset-right))!important;
  }
}

/* Fallback standalone event URL (e.g. opening from a shared link on desktop). */
body:has(.event-page){
  background-color:#e7ede7!important;
  background-image:linear-gradient(110deg,rgba(248,243,227,.92),rgba(239,245,235,.94)),
    url('/pipeline-ocean-surface-v2.svg?v=20261011-01')!important;
  background-position:center!important;
  background-size:cover!important;
}
body:has(.event-page) .mast{
  background:#0c2847 url('/pipeline-ocean-surface-v2.svg?v=20261011-01') center/cover no-repeat!important;
  color:#fff7e8!important;
}
body:has(.event-page) .mast .brand{color:#fff8e7!important;font-weight:900!important}
body:has(.event-page) .event-page{background:transparent!important;color:#174b56!important}
body:has(.event-page) .event-back{
  color:#0a828d!important;font-family:Arial,Helvetica,sans-serif!important;font-weight:900!important
}
body:has(.event-page) .event-hero,
body:has(.event-page) .event-meta{
  border-color:rgba(10,136,146,.35)!important;
}

/* ---- pipeline-cartography.css ---- */
/* 2026-10-11: Pirate-chart visual identity only. Interaction/geometry locked. */
:root{--pipeline-theme-ink:#1b3944;--pipeline-theme-paper:#f7ead0;--pipeline-theme-orange:#f06c2b;--pipeline-theme-gold:#d4a258}
/* Production illustrated sea. Original ship, compass and kraken are image pixels,
   not substitute CSS drawings. Background is independent of SVG pin/zoom transforms. */
body.mobile-shell-active .mobile-shell-page.mobile-map-page{
 background:#174e61 url('/pipeline-nautical-background-clean.png?v=20261018-clean-sea1') center center / cover no-repeat!important;
}
body.mobile-shell-active .mobile-map-page .coast,body:not(.mobile-shell-active) .map-shell .coast{
 fill:#e9d2a7!important;opacity:1!important;stroke:#67492f!important;stroke-width:1.4!important;
 filter:drop-shadow(1px 3px 3px rgba(4,28,36,.53))!important;
}
body.mobile-shell-active .mobile-map-page .pipeline-coast-paint,
body:not(.mobile-shell-active) .map-shell .pipeline-coast-paint{
 fill:url(#pipelineLandWash)!important;stroke:#714d31!important;stroke-width:1.6!important;stroke-opacity:.66!important;
}
body.mobile-shell-active .mobile-map-page .pipeline-coast-mark-wash{stroke:#f5e3c2;stroke-opacity:.48}
body.mobile-shell-active .mobile-map-page .pipeline-coast-mark-dry{stroke:#785338;stroke-opacity:.34}
body.mobile-shell-active .mobile-map-page .pipeline-coast-mark-teal{stroke:#cda86e;stroke-opacity:.38}
body.mobile-shell-active .mobile-map-page .map-labels text,
body:not(.mobile-shell-active) .map-shell .map-labels text{
 fill:#213c44!important;font:700 14px Georgia,'Times New Roman',serif!important;font-style:normal!important;
 transform:translateY(-20px);opacity:1!important;
 stroke:#fff0cf!important;stroke-width:2.8px!important;stroke-linejoin:round!important;
 paint-order:stroke fill!important;text-shadow:none!important;
}
body.mobile-shell-active .pipeline-stage-head{
 background:linear-gradient(110deg,#0b3447,#113f52)!important;
 border-left:5px solid #dda95f!important;box-shadow:0 7px 22px rgba(3,23,33,.28)!important;
}
body.mobile-shell-active .pipeline-stage-head .pipeline-stage-title{color:#fff5dd!important}
body.mobile-shell-active .pipeline-stage-head .pipeline-stage-domain{color:#f3ead4!important}
body.mobile-shell-active .pipeline-stage-head .pipeline-stage-dot{color:#e6ab63!important}
body.mobile-shell-active .pipeline-stage-head .pipeline-stage-subtitle{color:#e5ccaa!important}
body.mobile-shell-active .pipeline-genre-key,body.mobile-shell-active .pipeline-filter-key{
 background-color:rgba(249,234,202,.96)!important;
 background-image:radial-gradient(ellipse at 7% 13%,rgba(128,79,35,.11),transparent 45%),
 radial-gradient(ellipse at 92% 89%,rgba(159,93,31,.09),transparent 42%),
 repeating-linear-gradient(105deg,rgba(103,64,28,.027) 0 1px,transparent 1px 11px)!important;
 border:1px solid rgba(101,76,46,.37)!important;
 box-shadow:0 8px 24px rgba(5,33,44,.25),inset 0 0 0 1px rgba(255,249,225,.61)!important;
 backdrop-filter:none!important;
}
body.mobile-shell-active .pipeline-genre-key{border-radius:12px!important}
body.mobile-shell-active .pipeline-filter-key{border-radius:15px!important}
body.mobile-shell-active .pipeline-genre-key button{color:#1a3947!important}
body.mobile-shell-active .pipeline-genre-key .pipeline-genre-head{border-bottom-color:rgba(101,74,43,.29)!important}
body.mobile-shell-active .pipeline-genre-key .pipeline-genre-hint{
 color:#684c34!important;font-family:Georgia,'Times New Roman',serif!important;
 font-weight:700!important;letter-spacing:.08em!important;
}
body.mobile-shell-active .pipeline-genre-key .pipeline-genre-all{color:#654b33!important}
body.mobile-shell-active .pipeline-filter-key button{
 border-color:rgba(113,81,47,.24)!important;border-radius:9px!important;
 background:rgba(255,250,233,.80)!important;color:#1c3b48!important;
}
body.mobile-shell-active .pipeline-filter-key button.active{
 background:#f06b2a!important;border-color:#cb541f!important;color:#fff8ed!important;
}
body.mobile-shell-active .mobile-map-page .map-filter-count{
 background:#113c4e!important;color:#fff1d3!important;border-color:#e4a95c!important;
 box-shadow:4px 4px 0 rgba(225,162,78,.9)!important;border-radius:24px!important;
}
body.mobile-shell-active #mapPopover{
 border-color:#d4b989!important;border-left-color:#c38d50!important;
 background:linear-gradient(135deg,#fff7e5,#f2e3c7)!important;
}
body.mobile-shell-active #mapPopover .map-popover-cluster-head{
 background:linear-gradient(100deg,#f6e6c5,#fff7e5)!important;
}
body:not(.mobile-shell-active) .map-shell{
 background:#174e61 url('/pipeline-nautical-ocean-2560-final.webp?v=20261011-directart1') center center / cover no-repeat!important;
}
@media(max-width:1000px) and (orientation:landscape){
 body.mobile-shell-active .mobile-map-page .map-labels text{font-size:12px!important;transform:translateY(-17px);stroke-width:2.3px!important}
}
@media(max-height:360px) and (orientation:landscape){
 body.mobile-shell-active .mobile-map-page .map-labels text{font-size:10.5px!important;transform:translateY(-15px)}
}

/* One canonical date tile: identical shell to peer filter buttons, with
   Samsung/Android's native input transparently covering the whole hit target.
   The decorative button cannot steal events from the accessible input. */
body.mobile-shell-active .pipeline-filter-key .pipeline-date-cell {
  position:relative!important;
  display:block!important;
  box-sizing:border-box!important;
  width:100%!important;
  min-width:0!important;
  height:38px!important;
  min-height:0!important;
  max-height:38px!important;
  padding:0!important;
  margin:0!important;
  overflow:hidden!important;
  isolation:isolate!important;
  border:1px solid rgba(113,81,47,.24)!important;
  border-radius:9px!important;
  background:rgba(255,250,233,.80)!important;
  color:#1c3b48!important;
}
body.mobile-shell-active .pipeline-filter-key .pipeline-date-cell > button {
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  border:0!important;
  border-radius:9px!important;
  background:transparent!important;
  box-shadow:none!important;
  outline:0!important;
  padding:7px 5px!important;
  color:inherit!important;
  font:850 clamp(8px,.75vw,11px)/1.12 Arial,Helvetica,sans-serif!important;
  pointer-events:none!important;
}
body.mobile-shell-active .pipeline-filter-key .pipeline-date-cell.active {
  border-color:#cb541f!important;
  background:#f06b2a!important;
  color:#fff8ed!important;
}
body.mobile-shell-active .pipeline-filter-key .pipeline-date-cell.active > button {
  background:transparent!important;
  color:inherit!important;
}
body.mobile-shell-active .pipeline-filter-key .pipeline-date-cell > input[type="date"] {
  display:block!important;
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  z-index:3!important;
  margin:0!important;
  padding:0!important;
  opacity:0!important;
  color:transparent!important;
  font-size:0!important;
  border:0!important;
  background:transparent!important;
  pointer-events:auto!important;
  cursor:pointer!important;
  appearance:auto!important;
  -webkit-appearance:auto!important;
  touch-action:manipulation!important;
}
body.mobile-shell-active .pipeline-filter-key .pipeline-date-cell:focus-within {
  outline:2px solid #e6b575!important;
  outline-offset:2px!important;
}
body.mobile-shell-active .pipeline-filter-key {
  grid-auto-rows:minmax(0,38px)!important;
  align-items:stretch!important;
}
@media (max-height:400px) and (orientation:landscape) {
  body.mobile-shell-active .pipeline-filter-key {grid-auto-rows:minmax(0,34px)!important}
  body.mobile-shell-active .pipeline-filter-key .pipeline-date-cell {height:34px!important;max-height:34px!important}
}

/* All Events uses a single left-aligned title/subtitle unit and an
   independent right-aligned account action. Never reintroduce page badges or
   grid positioning here; the editorial page retains its separate heading. */
@media (orientation:landscape) and (max-width:1200px) {
  body.mobile-shell-active .mobile-list-page .mobile-page-head.mobile-list-heading {
    display:flex!important;
    align-items:center!important;
    box-sizing:border-box!important;
    gap:10px!important;
    width:100%!important;
    min-width:0!important;
    height:48px!important;
    min-height:48px!important;
    max-height:48px!important;
    padding:2px 14px!important;
    margin:0!important;
  }
  body.mobile-shell-active .mobile-list-heading .mobile-list-heading-copy {
    display:flex!important;
    align-items:baseline!important;
    gap:12px!important;
    min-width:0!important;
    flex:0 1 auto!important;
  }
  body.mobile-shell-active .mobile-list-heading-copy > strong {
    flex:0 0 auto!important;
    color:#fff7e7!important;
    font:900 clamp(18px,3.8vh,32px)/.95 Arial,Helvetica,sans-serif!important;
    letter-spacing:-.045em!important;
  }
  body.mobile-shell-active .mobile-list-heading-copy > em {
    flex:0 1 auto!important;
    min-width:0!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
    color:#f5e8d4!important;
    font:500 10px/1.3 system-ui,sans-serif!important;
    letter-spacing:.02em!important;
    font-style:normal!important;
    text-align:left!important;
  }
  body.mobile-shell-active .mobile-list-heading [data-search-status] {
    flex:0 1 auto!important;
    min-width:0!important;
    margin-left:auto!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
    font:800 clamp(8px,.8vw,11px)/1.1 system-ui,sans-serif!important;
    color:#fff5e3!important;
    background:#fa714b!important;
    padding:5px 10px!important;
    border-radius:999px!important;
  }
  body.mobile-shell-active .mobile-list-heading [data-search-status][hidden] {
    display:none!important;
  }
  body.mobile-shell-active .mobile-list-page .mobile-list-heading > a {
    margin-left:auto!important;
    flex:0 0 auto!important;
    align-self:center!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    min-height:44px!important;
    padding:0 3px!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    color:#f5e8d4!important;
    text-decoration:none!important;
  }
  body.mobile-shell-active .mobile-list-page .mobile-list-heading > a:focus-visible {
    outline:2px solid currentColor!important;
    outline-offset:2px!important;
  }
  /* Separate public submission from account-only event management. */
  body.mobile-shell-active .mobile-list-page .mobile-list-heading > a.mobile-list-submit {
    margin-left:auto!important;
    padding:0 4px!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    color:#f5e8d4!important;
    font:700 10px/1.1 Arial,sans-serif!important;
    text-decoration:underline!important;
    text-underline-offset:3px!important;
  }
  body.mobile-shell-active .mobile-list-page .mobile-list-heading > a.mobile-list-account {
    margin-left:0!important;
  }
}
/* Decorative sea artwork is baked into the source image. Avoid pseudo-element
   image overlays: they can obscure interactive map pins or misalign with the coast.
   A replacement background must be reviewed before publication. */

/* 2026-10-19: narrowly scoped phone-map key adjustments only.
   Reduce southeast-Cornwall obstruction without changing map/pin geometry. */
@media (orientation:landscape) and (max-width:1200px){
 body.mobile-shell-active .mobile-map-page .pipeline-filter-key{
  width:33vw!important;
  padding:4px!important;
  gap:3px!important;
  grid-auto-rows:minmax(0,27px)!important;
 }
 body.mobile-shell-active .mobile-map-page .pipeline-filter-key > button{
  min-height:27px!important;
  height:27px!important;
  padding:2px 1px!important;
  font-size:clamp(6.8px,.76vw,8px)!important;
 }
 body.mobile-shell-active .mobile-map-page .pipeline-filter-key .pipeline-date-cell{
  height:27px!important;max-height:27px!important;min-height:0!important;
 }
 /* Date cell already has the rectangular tile: suppress its nested ring. */
 body.mobile-shell-active .mobile-map-page .pipeline-filter-key .pipeline-date-cell > button{
  border:0!important;border-radius:0!important;box-shadow:none!important;
  outline:0!important;background:transparent!important;
  padding:4px 1px!important;font-size:clamp(7px,.82vw,10px)!important;
 }
 body.mobile-shell-active .mobile-map-page .pipeline-filter-key .pipeline-date-cell.active > button{
  background:transparent!important;color:inherit!important;
 }
}
