@font-face{font-family:"Source Serif 4";font-weight:600;font-display:swap;src:url(fonts/source-serif-4-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Serif 4";font-weight:600;font-display:swap;src:url(fonts/source-serif-4-latin-ext-600-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Source Sans 3";font-weight:400;font-display:swap;src:url(fonts/source-sans-3-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Sans 3";font-weight:400;font-display:swap;src:url(fonts/source-sans-3-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Source Sans 3";font-weight:700;font-display:swap;src:url(fonts/source-sans-3-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Sans 3";font-weight:700;font-display:swap;src:url(fonts/source-sans-3-latin-ext-700-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
/* ===== v16 (9-page build, 1 Nov 2026). Slate v2 look: design/mockups-edinburgh-v1/README.md. v15 file kept in old-versions/v15-pre9page/ ===== */
:root{--paper:#FBFAF7;--card:#fff;--stone:#EAE5DC;--stone2:#D6CEC0;--slate:#2F3633;--body:#5A524B;--sand:#F1E9DF;--panel:#E4D8C8;--tint:#F1EBE2;--a:#7E4F22}
/* season tokens (v15 fix 1: seasonal backgrounds, design/bg-seasons.md) */
body[data-season=spring]{--a:#8C4462;--paper:#F3ECF1;--stone:#E5D8E2;--tint:#E5D8E2}
body[data-season=summer]{--a:#2E6577;--paper:#ECF2F3;--stone:#D9E4E6;--tint:#D9E4E6}
body[data-season=autumn]{--a:#7E4F22;--paper:#F1E9DF;--stone:#E4D8C8;--tint:#E4D8C8}
body[data-season=winter]{--a:#455A63;--paper:#EDEEF2;--stone:#DCDEE6;--tint:#DCDEE6}
:root{--carthen-strip:url(img/carthen/carthen-strip-base-tile.svg);--carthen-tile:url(img/carthen/carthen-culture-tile-600x400.svg)}
body[data-season=spring]{--carthen-strip:url(img/carthen/carthen-strip-spring-tile.svg);--carthen-tile:url(img/carthen/carthen-culture-tile-spring-600x400.svg)}
body[data-season=summer]{--carthen-strip:url(img/carthen/carthen-strip-summer-tile.svg);--carthen-tile:url(img/carthen/carthen-culture-tile-summer-600x400.svg)}
body[data-season=autumn]{--carthen-strip:url(img/carthen/carthen-strip-autumn-tile.svg);--carthen-tile:url(img/carthen/carthen-culture-tile-autumn-600x400.svg)}
body[data-season=winter]{--carthen-strip:url(img/carthen/carthen-strip-winter-tile.svg);--carthen-tile:url(img/carthen/carthen-culture-tile-winter-600x400.svg)}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:72px}
/* v15 fix 6: sticky footer */
body{margin:0;min-height:100vh;display:flex;flex-direction:column;font:400 18px/1.6 "Source Sans 3",system-ui,sans-serif;color:var(--body);background:var(--paper)}
main{flex:1 0 auto;width:100%;max-width:1140px;margin:0 auto;padding:24px clamp(16px,4vw,48px) 64px}footer{margin-top:auto}
h1,h2,h3,h4{font-family:"Source Serif 4",Georgia,serif;font-weight:600;color:var(--slate);line-height:1.2}
h1{font-size:clamp(32px,4.5vw,48px);margin:.3em 0 .4em}h2{font-size:clamp(24px,2.6vw,30px);margin:1.6em 0 .6em}h3{font-size:clamp(20px,1.9vw,22px);margin:1.4em 0 .4em}h4{font-size:19px;margin:1.2em 0 .3em}
/* links: bold, permanent 3px underline (never removed: link vs body colour is 1.62:1) */
a{color:var(--slate);font-weight:700;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:4px}
a:hover{text-decoration-thickness:4px}
:focus-visible{outline:3px solid var(--slate);outline-offset:3px;box-shadow:0 0 0 6px var(--sand)}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:#fff;padding:12px;z-index:99}
.preview-flag{margin:0;background:var(--slate);color:#fff;font-size:14px;text-align:center;padding:4px}
p,li{max-width:72ch}.lede{font-size:clamp(19px,1.9vw,21px);line-height:1.55;color:var(--slate)}
/* header */
header.top{background:#fff;border-bottom:4px solid var(--slate)}
.hd{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 16px;position:relative}
.brand{display:inline-flex;align-items:center;gap:10px;min-height:48px;text-decoration:none;font:600 24px "Source Serif 4",Georgia,serif;color:var(--slate)}
.navrow,.navcol{list-style:none;margin:0;padding:0}.navrow{display:flex;gap:4px}
.navrow a,.navcol a{display:flex;align-items:center;min-height:48px;padding:0 12px;color:var(--slate);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:6px}
.navrow a:hover,.navrow a[aria-current],.navcol a[aria-current]{text-decoration-color:var(--slate)}
.nav-mob{display:none}
.nav-mob summary{list-style:none;cursor:pointer;min-height:48px;min-width:48px;display:flex;align-items:center;padding:0 16px;font-weight:700;background:var(--slate);color:#fff;border-radius:4px;box-shadow:inset 0 0 0 3px var(--slate),inset 0 0 0 5px var(--sand)}
.nav-mob summary::-webkit-details-marker{display:none}.nav-mob[open] summary::after{content:" ×"}
.nav-mob nav{position:absolute;left:0;right:0;top:100%;background:#fff;border-bottom:4px solid var(--slate);z-index:600;padding:4px 8px}
.navcol a{border-bottom:1px solid var(--stone2)}
@media(max-width:899px){.nav-desk{display:none}.nav-mob{display:block}}
/* buttons: 48px solid slate with thin sand inner ring */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border-radius:4px;background:var(--slate);color:#fff;text-decoration:none;font-family:"Source Sans 3",system-ui,sans-serif;font-size:18px;font-weight:700;line-height:1.2;box-shadow:inset 0 0 0 3px var(--slate),inset 0 0 0 5px var(--sand)}
.btn:hover{background:#1f2422;color:#fff}
.btn.on-band{background:#fff;color:var(--slate);box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 5px var(--slate)}
/* hero: mobile painting first then solid band; desktop painting beside pier + Penmon photos */
.hero{background:var(--paper)}.hero figure{margin:0}.hero img{display:block;width:100%;height:auto;max-height:none}
.mosaic .m-ph{display:none}
.hcap{margin:0;font-size:15px;padding:6px 16px;color:var(--body);max-width:none}.hcap .dk{display:none}
.band{background:var(--slate);color:#fff;padding:24px 16px 28px}.band .in{max-width:1200px;margin:0 auto}
.band h1{color:#fff;font-size:32px;margin:0 0 .4em}.band .season-line{display:none;margin:0 0 18px;font-size:18px}
.band a{color:#fff}.band .src{color:var(--slate)}
body[data-season=spring] .s-spring,body[data-season=summer] .s-summer,body[data-season=autumn] .s-autumn,body[data-season=winter] .s-winter{display:block!important}
.band :focus-visible{outline-color:#fff;box-shadow:0 0 0 6px var(--slate)}
.season-ctl{margin:12px 0 0;font-size:16px}.season-ctl select{min-height:44px;font:inherit;padding:0 8px;margin-left:6px}
@media(max-width:899px){.hbtns .btn{width:100%}}
@media(min-width:900px){.mosaic{display:grid;grid-template-columns:2fr 1fr 1fr;gap:6px;max-width:1280px;margin:0 auto}.mosaic .m-ph{display:block}.mosaic img{height:320px;object-fit:cover}
 .mosaic .m-paint img{object-position:30% 60%}.hcap{max-width:1280px;margin:0 auto}.hcap .dk{display:inline}.band h1{font-size:44px}}
/* quick row: 5 icon cards */
.quick ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.quick a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:96px;background:#fff;border:2px solid var(--slate);border-top-width:6px;color:var(--slate);text-align:center;padding:12px 6px;text-decoration:none}
.quick a span{text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:4px}.quick svg{width:32px;height:32px;color:var(--slate)}
.quick h2{margin-top:.6em;font-size:24px}
@media(max-width:899px){.quick ul{grid-template-columns:repeat(2,1fr)}.quick li:last-child{grid-column:span 2}}
.ph{font:400 14px "Source Sans 3",sans-serif;background:var(--panel);color:var(--body);padding:1px 6px;border-radius:2px;border:1px dashed var(--body)}
.nc{color:var(--slate)}
.src{font-size:14px;font-weight:400;background:var(--stone);color:var(--slate);padding:1px 8px;border-radius:3px;white-space:nowrap;border:1px solid var(--stone2);text-decoration-thickness:1px;text-underline-offset:2px}
.note{font-size:16px;color:var(--body)}
figure{margin:0 0 24px}figure img{width:100%;max-height:520px;object-fit:cover;display:block;height:auto}
figcaption{font-size:16px;color:var(--body);padding:8px 0;border-bottom:1px solid var(--stone2)}
/* home */
.feature{background:#fff;border:2px solid var(--slate);border-left-width:8px;padding:16px 20px;margin:28px 0}.feature h2{margin:0 0 .3em}.feature .kicker{margin:0;text-transform:uppercase;letter-spacing:.06em;font-size:14px;font-weight:700;color:var(--slate)}
.welcome .wpoints{list-style:none;padding:0;display:grid;gap:12px}.welcome .wpoints li{padding-left:14px;border-left:4px solid var(--slate)}
.season-photo figure{display:none;margin:0 0 32px}
.season-photo img{aspect-ratio:21/9;object-position:50% 55%;max-height:none}
.season-photo .native{max-width:526px}.season-photo .native img{aspect-ratio:4/3;object-position:50% 37%}  /* v15 fix 4: spring photo unbanded, column-aligned */
@media(max-width:600px){.season-photo img{aspect-ratio:3/2}}
.comestay{margin:40px 0;padding:28px;background:#fff;border-top:6px solid var(--slate)}.comestay h2{margin-top:0}
.staytypes{display:grid;gap:12px;margin:16px 0}@media(min-width:800px){.staytypes{grid-template-columns:repeat(3,1fr)}}
.staytypes a{display:flex;align-items:center;min-height:56px;padding:12px 16px;background:var(--tint);border:1px solid var(--stone2)}
.fbband{position:relative;background:var(--stone);padding:28px 16px;text-align:center;margin-top:32px}
.fbband::before,.fbband::after{content:"";position:absolute;left:0;right:0;height:12px;background:var(--carthen-strip) 0 0/24px 12px repeat-x}.fbband::before{top:0}.fbband::after{bottom:0}
.fbband p{margin:0 auto}.fbband a{display:inline-flex;min-height:44px;align-items:center}
/* events */
.events{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin:12px 0}
.ev{background:#fff;border:1px solid var(--stone2);border-top:4px solid var(--slate);padding:12px 16px;display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.ev time{font:600 22px/1.2 "Source Serif 4",Georgia,serif;color:var(--slate)}.ev strong{color:var(--slate)}.tbc{font-size:15px}.cat{font-size:15px}
.plain{padding-left:20px}.plain li{margin:6px 0}.month h2{margin-top:1.2em}
/* discover */
.jcards{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:24px 0}
.jcards a{display:flex;flex-direction:column;background:#fff;border:2px solid var(--slate);text-decoration:none;color:var(--body);font-weight:400}
.jcards img,.jcards .tile-pattern{display:block;width:100%;aspect-ratio:3/2;height:auto;object-fit:cover}
.tile-pattern{background:var(--carthen-tile) center/cover no-repeat}
.jcards strong{font:700 20px "Source Sans 3",system-ui,sans-serif;color:var(--slate);padding:12px 14px 0;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:4px}
.jcards a>span:last-child{padding:4px 14px 14px;font-size:16px}
@media(min-width:900px){.jcards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:600px){.jcards{grid-template-columns:1fr}}
.jump{display:flex;gap:8px;margin:0 0 16px}
.jump a{flex:none;min-height:44px;display:inline-flex;align-items:center;padding:0 16px;border:2px solid var(--slate);border-radius:4px;background:#fff;font-size:16px}
.dsec{border-top:6px solid var(--slate);margin-top:40px}.dsec>h2{margin-top:.6em}
.pull{margin:24px 0;padding:8px 0 8px 20px;border-left:6px solid var(--slate)}.pull p{font:600 clamp(20px,2.2vw,24px)/1.35 "Source Serif 4",Georgia,serif;color:var(--slate);margin:0}
.check,.alert{background:var(--tint);border:1px solid var(--stone2);border-top:4px solid var(--slate);padding:16px 20px;margin:24px 0;color:var(--slate)}.check h3{margin-top:0}
details{margin:20px 0;border:1px solid var(--stone2);background:#fff;padding:0 16px}details>summary{cursor:pointer;min-height:48px;display:flex;align-items:center;font-weight:700;color:var(--slate)}
details[open]{padding-bottom:12px}
.back{font-size:16px}
figure.inline-fig{max-width:720px}figure.inline-fig img{aspect-ratio:3/2;max-height:none;object-position:50% 40%}
figure.portrait{max-width:300px}figure.portrait img{aspect-ratio:9/16;max-height:none}@media(min-width:700px){figure.portrait{float:right;margin:0 0 16px 24px}}
#menai::after{content:"";display:block;clear:both}
/* puffin gallery (v15 fix 2 alt text in HTML; fix 3 puffin-c zoom) */
.pgallery{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:0 0 24px}.pgallery figure{margin:0}
.pgallery img{aspect-ratio:3/4;max-height:none;object-fit:cover}.pgallery .g-a img{object-position:50% 38%}.pgallery .g-b img{object-position:50% 28%}
.pgallery .g-c .pzoom{overflow:hidden}.pgallery .g-c img{transform:scale(1.35);transform-origin:58% 47%;object-position:50% 45%}
@media(max-width:600px){.pgallery{grid-template-columns:1fr 1fr;gap:12px}.pgallery .g-a{grid-column:1/-1}.pgallery .g-a img{aspect-ratio:4/3;object-position:50% 43%}}
/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px}
.card{background:#fff;border:1px solid var(--stone2);border-top:4px solid var(--slate);padding:16px 20px;display:flex;flex-direction:column}
/* v30: [hidden] must beat .card display:flex (and any sector/row display) */
.card[hidden],li.mrow[hidden],.sector[hidden]{display:none!important}
.card h3{margin:0 0 6px;font-size:19px}.card .desc{font-size:16px;margin:4px 0 10px}
.card .where{margin:4px 0 6px;font-weight:700;color:var(--slate)}.wl,.card .phone .k{display:inline-block;background:var(--slate);color:#fff;font-size:13px;letter-spacing:.04em;text-transform:uppercase;padding:1px 7px;border-radius:3px;margin-right:6px}
.card .phone .k{background:var(--stone);color:var(--slate)}.card .phone{margin:0 0 8px;font-size:16px}
.card .links{display:flex;flex-wrap:wrap;gap:8px;margin:auto 0 0;padding-top:8px}
.lbtn{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:4px;background:var(--slate);color:#fff;text-decoration:none;box-shadow:inset 0 0 0 2px var(--slate),inset 0 0 0 4px var(--sand)}
.more{margin:8px 0 0;font-size:15px;padding:0 10px}.more dl{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;margin:0}.more dt{font-weight:700}.more dd{margin:0;overflow-wrap:anywhere}
.dogtag{align-self:flex-start;background:var(--stone);color:var(--slate);font-size:14px;padding:2px 9px;border-radius:3px;margin-bottom:4px}
.sector h2 small{font:400 16px "Source Sans 3",sans-serif;color:var(--body)}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mapwrap{margin:32px 0}#map{height:420px;border:1px solid var(--stone2)}
.search{margin:16px 0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.search input{min-height:48px;font:inherit;padding:0 12px;border:2px solid var(--slate);border-radius:4px;min-width:260px}
.search button{min-height:48px;font:inherit;font-weight:700;padding:0 16px;background:#fff;color:var(--slate);border:2px solid var(--slate);border-radius:4px;cursor:pointer}
.qagrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.qa{background:#fff;border:1px solid var(--stone2);border-top:4px solid var(--slate);padding:4px 20px 12px}.qa h2{font-size:21px;margin:.8em 0 .3em}
table{border-collapse:collapse;width:100%;font-size:16px}td,th{border-bottom:1px solid var(--stone2);padding:8px;text-align:left;vertical-align:top}
table img{width:96px;height:64px;object-fit:cover;object-position:50% 45%}  /* v15 fix 5 */
.tablewrap{overflow-x:auto;max-width:100%}
footer{background:var(--slate);color:var(--stone);padding:32px clamp(16px,4vw,48px);font-size:16px;border-bottom:12px solid #B5DBC9}
.fin{max-width:1140px;margin:0 auto}footer a{color:#fff;display:inline-flex;min-height:44px;align-items:center}
.flinks{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:0 24px}footer :focus-visible{outline-color:#fff;box-shadow:0 0 0 6px var(--slate)}
/* ===== v17: design/fixes-v5.md fixes 1-11 (1 Nov 2026 4:05pm; fix 7 not applied by client choice) ===== */
/* 1 */ .btn-ghost{background:transparent;color:#fff;box-shadow:inset 0 0 0 2px #fff}.btn-ghost.on-band{background:transparent;color:#fff;box-shadow:inset 0 0 0 2px #fff}.hbtns .btn+.btn{margin-left:12px}
@media(max-width:800px){.hbtns .btn{width:100%}.hbtns .btn+.btn{margin-left:0;margin-top:12px}}
/* 2 */ footer .season-ctl{margin:8px 0;font-size:16px;color:var(--stone)}footer .season-ctl select{min-height:44px;font:inherit;padding:0 8px;margin-left:6px}
/* 5 */ .src{text-decoration-thickness:3px;text-underline-offset:3px}
/* 8 */ @media(max-width:600px){.credits table,.credits tr,.credits td{display:block}.credits thead{position:absolute;left:-9999px}.credits td::before{content:attr(data-label)": ";font-weight:700;color:#2F3633}.credits tr{border-bottom:2px solid var(--stone2);padding:8px 0}.credits td{border:0;padding:4px 0}}
/* 9 */ .jump{display:flex;flex-wrap:wrap;gap:8px;overflow-x:visible;-webkit-mask-image:none;mask-image:none}
/* 10 */ .wl,.card .phone .k{font-size:14px;letter-spacing:.03em}
/* 11 */ .jump{position:sticky;top:0;z-index:2;background:var(--paper);padding:8px 0;border-bottom:none}.back a{display:inline-flex;align-items:center;min-height:44px}
/* ===== v18: design/fixes-v6.md fixes 1-6 (1 Nov 2026 4:14pm) ===== */
/* 1 */ .rows{list-style:none;margin:0 0 8px;padding:0;background:#fff;border:2px solid #2F3633;border-top-width:6px}
.rows li+li{border-top:1px solid #D6CEC0}
.mrow summary{min-height:56px;padding:8px 44px 8px 14px;display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;cursor:pointer;position:relative;list-style:none}
.mrow summary::-webkit-details-marker{display:none}
.mrow summary::after{content:"";position:absolute;right:16px;top:50%;width:10px;height:10px;border-right:3px solid #2F3633;border-bottom:3px solid #2F3633;transform:translateY(-70%) rotate(45deg)}
.mrow details[open] summary::after{transform:translateY(-30%) rotate(225deg)}
.mrow summary:focus-visible{outline:3px solid #2F3633;outline-offset:-3px}
.mrow .nm{flex-basis:100%;font-weight:700;color:#2F3633}
.mrow .wh{font-size:16px;color:#5A524B}
.mbody{padding:0 14px 14px}
@media(min-width:900px){.rows{display:grid;grid-template-columns:1fr 1fr;column-gap:0}.rows li:nth-child(2n){border-left:1px solid #D6CEC0}.rows li:nth-child(2){border-top:0}}
.mrow details{margin:0;border:0;padding:0;background:none}.mrow details[open]{padding:0}.mrow .dogtag{margin:0}.mbody .desc{margin:0 0 8px;font-size:17px}.mbody .phone{margin:0 0 8px}.mbody .more{border:1px solid var(--stone2)}
.compact h2{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
/* 2 */ @media(max-width:600px){.jump{position:static}}
/* 3 */ .preview-flag{align-self:stretch;width:100%;box-sizing:border-box;max-width:none}
/* 4 */ .credits td[data-label="Thumbnail"]::before{content:none}
/* 5 */ .skip:focus{display:inline-flex;align-items:center;min-height:44px;padding:0 16px}
/* 6 */ .cap-mob{display:block}.cap-desk{display:none}@media(min-width:801px){.cap-mob{display:none}.cap-desk{display:block}}
.mrow .wh{font-weight:400}

/* v24 parking table */ .qa.parking{grid-column:1/-1}.ptable td{font-size:15px}@media(max-width:600px){.ptable table,.ptable tr,.ptable td{display:block}.ptable thead{position:absolute;left:-9999px}.ptable td::before{content:attr(data-label)": ";font-weight:700;color:#2F3633;display:block}.ptable tr{border-bottom:2px solid var(--stone2);padding:8px 0}.ptable td{border:0;padding:4px 0}}

/* ===== v28 home page (13 Nov 2026): hero, width, sources, header, Christmas look ===== */
:root{--xmas-night:#2F3633;--xmas-gold:#E3B04B;--xmas-glow:#F6DD9A;--xmas-gold-dk:#7A5200;--xmas-lilac:#A3A8C5;--xmas-mauve:#CCA3B9}
/* 4: one large hero with overlaid headline on desktop; stacked panel on mobile so it cannot cover the header */
.hero-single{background:var(--paper)}
.hero-single .hero-frame{position:relative;max-width:none;margin:0;overflow:hidden}
.hero-single .hero-photo,.hero-single picture img.hero-photo{display:block;width:100%;height:220px;max-height:220px;object-fit:cover;object-position:50% 58%}
.hero-single .hero-overlay{position:static;padding:16px 16px 18px;background:var(--slate)}
.hero-single .hero-overlay .in{max-width:1140px;margin:0 auto}
.hero-single .hero-overlay h1{color:#fff;font-size:clamp(32px,4.4vw,48px);margin:0 0 .35em;max-width:28ch}
.hero-single .season-line{display:none;margin:0 0 16px;font-size:18px;color:#EDEEF2;max-width:62ch}
body[data-season=spring] .hero-single .s-spring,
body[data-season=summer] .hero-single .s-summer,
body[data-season=autumn] .hero-single .s-autumn,
body[data-season=winter] .hero-single .s-winter{display:block!important}
.hero-single .hero-overlay a{color:#EDEEF2}
.hero-single .hero-overlay .src{color:#F6DD9A}
.hero-single .hero-overlay .btn{background:#fff;color:var(--slate);box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 4px var(--slate)}
.hero-single .hero-overlay .btn:hover{background:#EDEEF2;color:var(--slate)}
.hero-single .hero-overlay .btn-ghost{background:transparent;color:#fff;box-shadow:inset 0 0 0 2px #fff}
.hero-single .hero-overlay .btn-ghost:hover{background:rgba(255,255,255,.12);color:#fff}
.hero-single .hcap{max-width:none;margin:0;padding:8px 16px;background:var(--paper);color:var(--body)}
.hero-single .hcap .hcap-in{max-width:1140px;margin:0 auto}
@media(min-width:900px){
  .hero-single .hero-frame{overflow:visible}
  .hero-single .hero-photo,.hero-single picture img.hero-photo{height:520px;max-height:520px}
  .hero-single .hero-overlay{position:absolute;left:16px;right:auto;bottom:16px;width:auto;max-width:min(38rem,calc(100% - 32px));padding:14px 18px 12px;background:linear-gradient(to top,rgba(47,54,51,.88) 0%,rgba(47,54,51,.78) 70%,rgba(47,54,51,.5) 100%)}
}
/* 5: consistent ~1140px content width; two-column Welcome; wider cards */
header.top .hd,footer .fin,.hero-single .hero-overlay .in,section.xmas .xmas-in,.fbband .fbin{max-width:1140px}
main{max-width:1140px}
@media(min-width:900px){
  .welcome{display:grid;grid-template-columns:minmax(0,1fr);gap:8px 48px;align-items:start}
  .welcome h2{grid-column:1;margin-top:0}
  .welcome .lede{grid-column:1;max-width:none}
  .welcome .wpoints{grid-column:1;margin:0;max-width:none}
  .welcome .wpoints li{max-width:none}
  .quick ul{gap:16px}
  .staytypes{gap:16px}
  .cards{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}
  .comestay,.feature,.coming{max-width:none}
}
/* 6: source chips become footnote-style links, not buttons */
/* v36: 14px type with a 44px tap target that does not stretch the line box */
a.src,.src{font-size:14px;font-weight:600;background:none;color:var(--a);padding:0;border:0;border-radius:0;white-space:nowrap;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;position:relative;display:inline}
a.src::after{content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:44px;transform:translate(-50%,-50%)}
.ev .src,.feature .src{display:inline;align-items:baseline;padding:0}
sup.src-fn{font-size:14px;line-height:inherit;position:relative;vertical-align:baseline;margin-left:.2em}
/* 6: clean Facebook band (no dashed or unfinished edge) */
.fbband{position:static;background:var(--slate);color:#fff;padding:16px;text-align:center;margin:0;border:0}
.fbband::before,.fbband::after{content:none;display:none}
.fbband p{margin:0 auto;max-width:1140px}
.fbband a{color:#fff;display:inline-flex;min-height:44px;align-items:center}
.fbband a:hover{color:#EDEEF2}
/* 6: larger mobile logo, lighter single-border Menu button */
.brand img{width:56px;height:58px}
/* v28b: the generic details rule (border, padding, margin) was drawing a second faint box around Menu */
details.nav-mob,.nav-mob{margin:0;border:0;padding:0;background:transparent;box-shadow:none;outline:none}
details.nav-mob[open],.nav-mob[open]{margin:0;border:0;padding:0;background:transparent}
.nav-mob summary{appearance:none;-webkit-appearance:none;background:#fff;color:var(--slate);border:2px solid var(--slate);border-radius:4px;box-shadow:none;outline:none;font-weight:700}
.nav-mob summary:hover{background:var(--sand);color:var(--slate);box-shadow:none}
.nav-mob summary:focus,.nav-mob summary:focus:not(:focus-visible){outline:none;box-shadow:none}
.nav-mob summary:focus-visible{outline:3px solid var(--slate);outline-offset:3px;box-shadow:0 0 0 6px var(--sand)}
.nav-mob[open] summary{background:var(--slate);color:#fff;border-color:var(--slate);box-shadow:none}
.nav-mob[open] summary:hover{background:#1f2422;color:#fff}
.nav-mob[open] summary:focus,.nav-mob[open] summary:focus:not(:focus-visible){outline:none;box-shadow:none}
/* v28b: let the hero season line use the overlay width so the source link is not left on a line of its own */
.hero-single .season-line{max-width:none}
/* 7: Christmas accent variant — scoped to the promo band, not body.xmas */
section.xmas{background:var(--xmas-night);color:#fff;margin:0}
section.xmas .xmas-strip{height:36px;background:url(img/christmas/christmas-strip-dark-tile.svg) repeat-x;background-size:auto 36px;image-rendering:pixelated}
section.xmas .xmas-crenel{height:28px;background:url(img/christmas/christmas-crenel-dark-tile.svg) repeat-x;background-size:auto 28px;image-rendering:pixelated}
section.xmas .xmas-in{max-width:1140px;margin:0 auto;padding:24px 16px 28px;display:flex;gap:24px;align-items:center}
section.xmas .xmas-lantern{flex:none;width:72px;height:72px}
section.xmas .xmas-copy{flex:1;min-width:0}
section.xmas .xmas-copy h2{color:#fff;margin:0 0 .25em;font-size:clamp(1.5rem,2.4vw,2rem)}
section.xmas .xmas-eyebrow{margin:0 0 4px;text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;font-weight:700;color:var(--xmas-mauve)}
section.xmas .xmas-date{margin:0 0 .4em;color:var(--xmas-gold);font-weight:700}
section.xmas .xmas-body{margin:0 0 16px;color:#EDEEF2;max-width:62ch}
section.xmas .btn{background:var(--xmas-gold);color:var(--xmas-night);min-height:48px;padding:0 24px;border-radius:4px;font:700 1.05rem "Source Sans 3",system-ui,sans-serif;box-shadow:none;text-decoration:none}
section.xmas .btn:hover{background:var(--xmas-glow);color:var(--xmas-night)}
section.xmas .btn:focus-visible{outline:2px solid var(--xmas-gold);outline-offset:4px;box-shadow:0 0 0 2px var(--xmas-night),0 0 0 4px var(--xmas-gold)}
section.xmas a.src{color:var(--xmas-glow)}
@media(max-width:600px){
  section.xmas .xmas-in{flex-direction:column;align-items:flex-start;padding:20px 16px 24px}
  section.xmas .btn{width:100%}
}
body.xmas footer{border-bottom-color:var(--xmas-gold)}

/* v28b: official posters in the Christmas band; slim promo banner on inner pages */
section.xmas .xmas-in{align-items:flex-start}
section.xmas .xmas-copy{flex:1 1 28rem;min-width:0}
section.xmas .xmas-tagline{margin:0 0 .6em;color:var(--xmas-gold);font:600 1.05rem "Source Serif 4",Georgia,serif}
section.xmas .xmas-parade{margin:0 0 16px;color:#EDEEF2;max-width:62ch}
section.xmas .xmas-parade a{color:var(--xmas-glow)}
.xmas-posters{display:flex;gap:16px;flex:0 1 28rem;min-width:0;align-items:flex-start}
.xmas-posters .xmas-poster{margin:0;flex:1 1 0;min-width:0}
.xmas-posters img{width:100%;height:auto;display:block;border-radius:4px;background:#fff}
.xmas-posters figcaption{margin:.35em 0 0;font-size:.8rem;color:#EDEEF2}
.xmas-posters figcaption a{color:#EDEEF2}
@media(max-width:800px){
  section.xmas .xmas-in{flex-direction:column;align-items:stretch}
  .xmas-posters{flex:none;width:100%;max-width:36rem}
}
@media(max-width:600px){
  .xmas-posters{flex-direction:column;max-width:22rem}
  section.xmas .btn{width:100%}
}
.xmas-page-banner{margin:0;max-width:none;width:100%;background:var(--xmas-night);line-height:0}
.xmas-page-banner a{display:flex;justify-content:center;align-items:center;line-height:0}
.xmas-page-banner img{width:100%;height:auto;display:block}
.xmas-page-banner a:focus{outline:none;box-shadow:none}
.xmas-page-banner a:focus-visible{outline:3px solid var(--xmas-gold);outline-offset:-3px}
/* v29: slim the inner-page Christmas banner on desktop so the page heading and cards lead */
@media(min-width:900px){
  .xmas-page-banner img{width:auto;max-width:100%;max-height:120px;height:auto;object-fit:contain;margin-inline:auto}
}
/* v30: asterisk tucked to the word, without sitting over a following bracket */
.cy-wrap{white-space:nowrap}
.cy-wrap sup.nc{margin:0 -.12em 0 .04em;padding:0;line-height:1}
/* What's on feature uses the same programme copy */
.feature .xmas-tagline{margin:.4em 0 .5em;color:var(--slate);font:600 1.05rem "Source Serif 4",Georgia,serif}
.feature .xmas-body,.feature .xmas-parade{margin:0 0 .8em;max-width:72ch}

/* v30: Stay first screen, fairness toggle, compact jump on a phone */
details.fair-how{margin:0 0 12px;border:0;background:transparent;padding:0}
details.fair-how>summary{min-height:44px;font-weight:700;color:var(--slate);padding:0}
details.fair-how[open]{padding-bottom:8px}
.stay-fair-line{margin:0 0 4px}
@media(max-width:600px){
  .jump{flex-wrap:wrap;overflow-x:visible;-webkit-overflow-scrolling:auto;gap:8px;padding:8px 0;scrollbar-width:auto;max-width:100%}
  .jump a{flex:none;max-width:100%;white-space:normal}
  .search{margin:4px 0 8px;flex-wrap:nowrap}
  .search label{flex:none;font-size:16px}
  .search input{min-width:0;flex:1 1 auto;width:auto}
  .search button{flex:none;padding:0 12px}
}
.search #qn:empty{display:none;margin:0}

/* v31c: out-of-town signposts on the zoomed-in town map */
.map-tools{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:12px 0 0}
.map-back[hidden],.map-tools [hidden]{display:none!important}
.map-tools .note{margin:0;flex:1 1 16em}
.map-back{min-height:44px;padding:0 16px;font-size:16px}
.map-sign-icon{background:none!important;border:none!important}
.leaflet-marker-icon.map-sign-icon{background:none!important;border:none!important;width:0!important;height:0!important;margin:0!important}
.map-sign-icon .map-sign{transform:translate(-50%,-50%)}
.map-sign{
  display:inline-flex;flex-direction:column;align-items:flex-start;justify-content:center;
  gap:0;min-height:44px;max-width:11.5em;padding:6px 10px 6px 12px;
  border:0;border-left:4px solid var(--sand);border-radius:4px;
  background:var(--slate);color:#fff;font:700 14px/1.2 "Source Sans 3",system-ui,sans-serif;
  text-align:left;cursor:pointer;box-shadow:0 1px 4px rgba(20,24,22,.35);
  white-space:normal;
}
.map-sign-name{display:block}
.map-sign-meta{display:inline-flex;align-items:center;gap:4px;font-weight:400;font-size:13px;opacity:.95}
.map-sign-arrow{display:inline-block;font-weight:700;line-height:1}
.map-sign:hover,.map-sign:focus-visible{background:#1f2422;color:#fff}
.map-sign:focus-visible{outline:3px solid #fff;outline-offset:3px;box-shadow:0 0 0 6px var(--slate)}
@media(max-width:600px){
  .map-sign{max-width:9.6em;font-size:13px;padding:5px 8px 5px 10px}
  .map-sign-meta{font-size:12px}
}

/* v33 */
.ptable .src-end{display:block;margin-top:.35em}
.qa.span{grid-column:1/-1}
#last-checked{margin:0 0 24px}

/* v35: first-screen why-line, day plan, town walk, when-to-come */
.hero-single .hero-why{color:#EDEEF2;font-size:18px;line-height:1.45;margin:0 0 16px;max-width:66ch}
.hero-single .hero-why .src{color:#F6DD9A}
.when{margin:40px 0}
.when h2{margin-top:0}
.when-grid{list-style:none;padding:0;margin:16px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.when-grid li{background:#fff;border:1px solid var(--stone2);border-top:4px solid var(--slate);padding:16px 20px}
.when-grid strong{display:block;font:600 20px "Source Serif 4",Georgia,serif;color:var(--slate);margin-bottom:.3em}
.day-plan ol,.town-walk ol,.free-list{margin:12px 0 16px;padding-left:1.2em}
.day-plan li,.town-walk li,.free-list li{margin:0 0 .6em}
.awards{margin-top:16px}
@media (min-width:1180px){
  .hero-single .hero-why{font-size:19px}
}

/* v36: sweep fixes — button font, Leaflet controls, credit thumbs */
button{font-family:"Source Sans 3",system-ui,sans-serif;font-size:18px;font-weight:700;line-height:1.2}
.leaflet-container,
.leaflet-container a,
.leaflet-container button,
.leaflet-popup-content,
.leaflet-control-attribution{
  font-family:"Source Sans 3",system-ui,sans-serif !important;
}
.leaflet-control-zoom a,
.leaflet-bar a{
  font-family:"Source Sans 3",system-ui,sans-serif !important;
  font-size:22px !important;
  font-weight:700 !important;
  width:44px !important;
  height:44px !important;
  line-height:44px !important;
  display:flex !important;
  align-items:center;
  justify-content:center;
}
.credits td[data-label="Thumbnail"] img{
  width:96px;height:64px;object-fit:cover;display:block;background:var(--stone);
}

/* v36f: Facebook logo link in footer (icon: Simple Icons, CC0-1.0) */
.fb-link{gap:8px}.fb-ico{width:24px;height:24px;flex:none}

/* v36i: Come and stay line on one line on desktop (David, 14 Nov 2026) */
@media(min-width:900px){.comestay .lede,.comestay .note{max-width:none}}

/* v36n: on-image credit watermarks (David, 14 Nov 2026) */
.wm-wrap{position:relative;display:block}
.wm{position:absolute;right:8px;bottom:8px;z-index:2;margin:0;max-width:calc(100% - 16px);font:400 11px/1.25 "Source Sans 3",system-ui,sans-serif;color:#fff;text-align:right;text-shadow:0 0 3px rgba(0,0,0,.85),0 1px 2px rgba(0,0,0,.7);opacity:.7;pointer-events:none}
.jcards .wm-wrap{width:100%}
.xmas-page-banner .wm-wrap{width:100%}
@media(max-width:600px){.xmas-page-banner .wm-wrap{width:max-content;max-width:100%;margin-inline:auto}}

/* v36n: home seasonal photo full-bleed, edge to edge (David, 14 Nov 2026) */
.season-photo{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);box-sizing:border-box}
.season-photo img{width:100%;object-fit:cover;display:block}

/* v36n: Discover photos — no border, 12px corners, watermark clipped to the curve (David, 14 Nov 2026) */
body.p-discover .wm-wrap{
  border:none;
  outline:none;
  background:transparent;
  border-radius:12px;
  overflow:hidden;
  box-shadow:0 2px 10px rgba(0,0,0,.08);
}

/* v37 Edinburgh-inspired home: start */
/* Reversible: remove this block, or set HOME_V37 = False in build.py, to restore the previous home layout. */

/* 1. Hero overlay: solid seasonal accent, same size and position as v36q */
body.p-index.v37 .hero-single .hero-overlay{
  background:var(--a);
}
body.p-index.v37 .hero-single .hero-overlay h1,
body.p-index.v37 .hero-single .hero-why,
body.p-index.v37 .hero-single .season-line{
  color:#fff;
}
body.p-index.v37 .hero-single .hero-overlay a{
  color:#fff;
}
@media(min-width:900px){
  body.p-index.v37 .hero-single .hero-overlay{
    background:var(--a);
  }
}

/* 2. Solid seasonal chips: flush left, rounded on the right (Edinburgh caption pattern) */
body.p-index.v37 .quick a{
  position:relative;
  align-items:center;
  justify-content:flex-end;
  padding:12px 0 16px;
  overflow:hidden;
}
body.p-index.v37 .quick a svg{
  margin-bottom:8px;
  color:var(--slate);
}
body.p-index.v37 .quick a .qlabel,
body.p-index.v37 .quick a span.qlabel{
  display:inline-flex;
  align-items:center;
  align-self:flex-start;
  margin:0;
  padding:6px 16px 6px 14px;
  background:var(--a);
  color:#fff;
  font:700 15px/1.2 "Source Sans 3",system-ui,sans-serif;
  text-decoration:none;
  text-decoration-thickness:0;
  border-radius:0 999px 999px 0;
  max-width:100%;
}
body.p-index.v37 .quick a:hover .qlabel{
  text-decoration:none;
}
body.p-index.v37 .staytypes a{
  padding:0;
  background:transparent;
  border:0;
  overflow:hidden;
}
body.p-index.v37 .staytypes a .qlabel{
  display:inline-flex;
  align-items:center;
  min-height:56px;
  padding:8px 18px 8px 16px;
  background:var(--a);
  color:#fff;
  font-weight:700;
  text-decoration:none;
  border-radius:0 999px 999px 0;
}

/* 3. Seasonal photo mosaic: current season large, the other three alongside */
body.p-index.v37 .season-mosaic{
  display:grid;
  grid-template-columns:2fr 1fr;
  grid-template-rows:repeat(3,minmax(0,1fr));
  gap:8px;
  width:100vw;
  max-width:100vw;
  margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);
  box-sizing:border-box;
  aspect-ratio:21/9;
  max-height:560px;
}
body.p-index.v37 .season-mosaic figure{
  display:block!important;
  margin:0;
  min-width:0;
  min-height:0;
  grid-column:2;
  border-radius:12px;
  overflow:hidden;
}
body.p-index.v37 .season-mosaic .wm-wrap,
body.p-index.v37 .season-mosaic .wm-wrap img{
  display:block;
  width:100%;
  height:100%;
  max-height:none;
  aspect-ratio:auto;
  object-fit:cover;
  border-radius:12px;
}
body[data-season=spring].p-index.v37 .season-mosaic .s-spring,
body[data-season=summer].p-index.v37 .season-mosaic .s-summer,
body[data-season=autumn].p-index.v37 .season-mosaic .s-autumn,
body[data-season=winter].p-index.v37 .season-mosaic .s-winter{
  grid-column:1;
  grid-row:1 / span 3;
}
@media(max-width:600px){
  body.p-index.v37 .season-mosaic{
    grid-template-columns:1fr 1fr;
    grid-template-rows:auto;
    grid-auto-rows:auto;
    aspect-ratio:auto;
    max-height:none;
  }
  body.p-index.v37 .season-mosaic figure{
    grid-column:auto;
    grid-row:auto;
  }
  body[data-season=spring].p-index.v37 .season-mosaic .s-spring,
  body[data-season=summer].p-index.v37 .season-mosaic .s-summer,
  body[data-season=autumn].p-index.v37 .season-mosaic .s-autumn,
  body[data-season=winter].p-index.v37 .season-mosaic .s-winter{
    grid-column:1 / -1;
    grid-row:1;
  }
  body.p-index.v37 .season-mosaic .wm-wrap img{
    aspect-ratio:4/3;
    height:auto;
  }
  body[data-season=spring].p-index.v37 .season-mosaic .s-spring .wm-wrap img,
  body[data-season=summer].p-index.v37 .season-mosaic .s-summer .wm-wrap img,
  body[data-season=autumn].p-index.v37 .season-mosaic .s-autumn .wm-wrap img,
  body[data-season=winter].p-index.v37 .season-mosaic .s-winter .wm-wrap img{
    aspect-ratio:16/9;
  }
}
body.p-index.v37 .season-mosaic .s-spring .wm-wrap img{object-position:42% 46%}
body.p-index.v37 .staytypes a{align-items:stretch}
body.p-index.v37 .staytypes a .qlabel{display:flex;flex:1;width:100%;min-height:72px;box-sizing:border-box}
/* v37 Edinburgh-inspired home: end */

/* v38 Edinburgh-inspired home: start */
/* Reversible: remove this block, or set HOME_V38 = False in build.py, to restore the v37 home page. */

/* 1. Mobile mosaic: current-season tile full width, then the other three in one equal row */
@media(max-width:600px){
  body.p-index.v38 .season-mosaic{
    grid-template-columns:1fr 1fr 1fr;
  }
}

/* 2. Mobile hero: text in a solid seasonal band below the photograph. Desktop unchanged. */
@media(max-width:899px){
  body.p-index.v38 .hero-single .hero-overlay{
    position:static;
    left:auto;
    right:auto;
    bottom:auto;
    width:auto;
    max-width:none;
    background:var(--a);
  }
}

/* 3. Split campaign band: photo in a seasonal-accent frame beside a dark panel and one button */
body.p-index.v38 .campaign{
  display:flex;
  flex-direction:column;
  margin:32px calc(-1 * clamp(16px,4vw,48px)) 8px;
  background:var(--slate);
}
body.p-index.v38 .campaign-frame{
  box-sizing:border-box;
  border:12px solid var(--a);
  background:var(--a);
  min-width:0;
  min-height:0;
  overflow:hidden;
}
body.p-index.v38 .campaign-frame .wm-wrap,
body.p-index.v38 .campaign-frame img{
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:16/9;
  object-fit:cover;
  object-position:50% 60%;
}
body.p-index.v38 .campaign-panel{
  box-sizing:border-box;
  padding:24px 20px 28px;
  background:var(--slate);
  color:#fff;
}
body.p-index.v38 .campaign-panel h2{
  color:#fff;
  margin:0 0 .4em;
}
body.p-index.v38 .campaign-panel p{
  color:#fff;
  max-width:none;
  margin:0 0 1em;
}
body.p-index.v38 .campaign-panel .btn.on-band{
  background:#fff;
  color:var(--slate);
}
@media(min-width:900px){
  body.p-index.v38 .campaign{
    display:grid;
    grid-template-columns:5fr 7fr;
    align-items:stretch;
  }
  body.p-index.v38 .campaign-frame{
    border-width:16px;
  }
  body.p-index.v38 .campaign-frame .wm-wrap,
  body.p-index.v38 .campaign-frame img{
    height:100%;
    aspect-ratio:auto;
  }
  body.p-index.v38 .campaign-panel{
    display:flex;
    flex-direction:column;
    justify-content:center;
    padding:32px 36px;
  }
}
/* v38 Edinburgh-inspired home: end */
