@charset "utf-8";
/* ==========================================================================
   Cealla Saoirse na hÉireann · freedomcells.ie
   "An Suirbhé" — the site as a survey sheet.
   Plain CSS. No build step, no framework, no JavaScript anywhere on the site.
   Every colour and size is declared once in :root below — change it there
   and it changes across all seven pages.
   ========================================================================== */

/* --- 1. Fonts (served from this site; nothing is fetched from Google) ----- */

@font-face{font-family:"Zilla Slab";src:url(../fonts/zilla-slab-600-latin.woff2) format("woff2");
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Zilla Slab";src:url(../fonts/zilla-slab-600-latin-ext.woff2) format("woff2");
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

@font-face{font-family:"Plex Serif";src:url(../fonts/ibm-plex-serif-400-latin.woff2) format("woff2");
  font-weight:400;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex Serif";src:url(../fonts/ibm-plex-serif-400-latin-ext.woff2) format("woff2");
  font-weight:400;font-style:normal;font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Plex Serif";src:url(../fonts/ibm-plex-serif-400i-latin.woff2) format("woff2");
  font-weight:400;font-style:italic;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex Serif";src:url(../fonts/ibm-plex-serif-400i-latin-ext.woff2) format("woff2");
  font-weight:400;font-style:italic;font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Plex Serif";src:url(../fonts/ibm-plex-serif-600-latin.woff2) format("woff2");
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex Serif";src:url(../fonts/ibm-plex-serif-600-latin-ext.woff2) format("woff2");
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

@font-face{font-family:"Plex Cond";src:url(../fonts/ibm-plex-sans-condensed-600-latin.woff2) format("woff2");
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex Cond";src:url(../fonts/ibm-plex-sans-condensed-600-latin-ext.woff2) format("woff2");
  font-weight:600;font-style:normal;font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

/* --- 2. Tokens ----------------------------------------------------------- */

:root{
  /* Sheet palette. Buff paper, ink, and the three map hues:
     woodland green, water blue, contour brown. */
  --paper:      #F2EDE1;
  --paper-2:    #E9E2D2;   /* panels, table stripes */
  --paper-3:    #DED5C1;   /* pressed / hover */
  --ink:        #1B2721;
  --ink-2:      #4A5850;   /* secondary prose */
  --ink-3:      #646E66;   /* captions, marginalia */
  --rule:       #B3AA95;   /* hairline */
  --rule-2:     #D6CEBB;   /* faintest hairline */
  --land:       #3A6B4A;   /* woodland green — also "active" */
  --water:      #517081;   /* water blue — links */
  --contour:    #A35828;   /* contour brown — marker, "exploring" */
  --amber:      #8C6421;   /* "getting there" */
  --focus:      #A35828;
  /* Every colour above that carries text clears 4.5:1 on --paper. The four
     ink/water/contour/amber values were solved for that, not eyeballed —
     the untuned versions sat between 2.6:1 and 3.8:1 and failed WCAG AA. */

  --sheet-max:  76rem;
  --prose-max:  38rem;

  /* Type */
  --f-display: "Zilla Slab", Georgia, "Times New Roman", serif;
  --f-body:    "Plex Serif", Georgia, "Times New Roman", serif;
  --f-label:   "Plex Cond", "Helvetica Neue", Arial, sans-serif;

  --t-xs:   0.7rem;
  --t-sm:   0.8125rem;
  --t-cap:  0.875rem;
  --t-base: 1.0625rem;
  --t-md:   1.1875rem;
  --t-lg:   1.4rem;
  --t-xl:   clamp(1.7rem, 1.2rem + 2vw, 2.5rem);
  --t-2xl:  clamp(2.1rem, 1.2rem + 4.2vw, 4.1rem);

  --lede: 1.7;
  --gap:  clamp(1.6rem, 4vw, 3rem);

  color-scheme: light dark;
}

/* "Night survey" — the same sheet read by lamplight. */
@media (prefers-color-scheme: dark){
  :root{
    --paper:   #131A16;
    --paper-2: #1B231E;
    --paper-3: #232D27;
    --ink:     #E7E0D0;
    --ink-2:   #B3AE9F;
    --ink-3:   #8B9188;
    --rule:    #3D4A42;
    --rule-2:  #2A342E;
    --land:    #77A484;
    --water:   #8FB2C4;
    --contour: #D9884A;
    --amber:   #D9AE58;
    --focus:   #D9884A;
  }
}

/* --- 3. Reset & base ----------------------------------------------------- */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  padding:clamp(0.5rem,2vw,1.75rem);
  background:var(--paper);
  color:var(--ink);
  font:400 var(--t-base)/var(--lede) var(--f-body);
  font-variant-numeric:oldstyle-nums proportional-nums;
  text-rendering:optimizeLegibility;
}

img,svg{max-width:100%;height:auto;display:block}

h1,h2,h3,h4{font-family:var(--f-display);font-weight:600;line-height:1.15;margin:0;
  letter-spacing:-0.012em;overflow-wrap:break-word}

p{margin:0 0 1em}
p:last-child{margin-bottom:0}

a{color:var(--water);text-decoration-thickness:1px;text-underline-offset:0.18em}
a:hover{color:var(--contour)}

:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:1px}

::selection{background:var(--contour);color:var(--paper)}

.skip{position:absolute;left:-9999px;top:0;z-index:99;
  background:var(--ink);color:var(--paper);padding:.7em 1.1em;
  font:600 var(--t-sm)/1 var(--f-label);letter-spacing:.08em;text-transform:uppercase}
.skip:focus{left:1rem;top:1rem}

/* Shared label style — every small-caps run on the site uses this. */
.lbl{font:600 var(--t-xs)/1.3 var(--f-label);letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-3);font-variant-numeric:tabular-nums}

.ga{font-style:normal}
.en{color:var(--ink-3)}

.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* Irish words carrying an internal hyphen (n-áit, t-uisce) must not be broken
   across lines — the hyphen is part of the word, not a break opportunity. */
.nb{white-space:nowrap}

abbr[title]{text-decoration:none;border-bottom:1px dotted var(--rule);cursor:help}

/* --- 4. The sheet: neatline + graticule ---------------------------------- */
/* The signature device. A real map sheet is bounded by a neatline: a heavy
   inner rule, a lighter outer one, and graduated ticks along all four edges.
   Content lives inside it. Built from borders and gradients — no images. */

.sheet{
  position:relative;
  max-width:var(--sheet-max);
  margin-inline:auto;
  border:1.5px solid var(--ink);
  background:var(--paper);
  padding:clamp(0.9rem,2.2vw,1.6rem);
}
.sheet::before{             /* outer companion rule */
  content:"";position:absolute;inset:-6px;border:1px solid var(--rule);pointer-events:none;
}
.sheet::after{              /* graduated ticks, 4 edges */
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    repeating-linear-gradient(to right, var(--rule) 0 1px, transparent 1px 32px) left top/100% 7px no-repeat,
    repeating-linear-gradient(to right, var(--rule) 0 1px, transparent 1px 32px) left bottom/100% 7px no-repeat,
    repeating-linear-gradient(to bottom, var(--rule) 0 1px, transparent 1px 32px) left top/7px 100% no-repeat,
    repeating-linear-gradient(to bottom, var(--rule) 0 1px, transparent 1px 32px) right top/7px 100% no-repeat;
}
.sheet > *{position:relative;z-index:1}

.inner{padding-inline:clamp(0.25rem,2.5vw,2.25rem)}

/* --- 5. Title block ------------------------------------------------------ */
/* The corner panel of an OS sheet: what this is, which sheet, and when it
   was last revised. */

.titleblock{padding:clamp(1.5rem,4vw,2.9rem) 0 0}

.tb-rule{display:flex;align-items:baseline;gap:1rem;
  border-bottom:1px solid var(--rule);padding-bottom:.6rem;margin-bottom:clamp(1.4rem,3vw,2.2rem)}
.tb-rule .lbl:last-child{margin-left:auto;text-align:right}

.site-title{font-size:var(--t-2xl);text-align:center;line-height:1.02;
  letter-spacing:-0.022em;margin:0}
.site-title a{color:inherit;text-decoration:none;display:block}
.site-title a:hover{color:var(--contour)}

.site-sub{text-align:center;margin:.55rem 0 0;
  font:600 clamp(.95rem,.8rem + .5vw,1.2rem)/1.2 var(--f-label);
  letter-spacing:.3em;text-transform:uppercase;color:var(--ink-2);text-indent:.3em}

.tagline{text-align:center;margin:1.05rem auto 0;max-width:34rem;
  font-style:italic;color:var(--ink-2);font-size:var(--t-cap);line-height:1.55}

/* Navigation — map-margin index. Irish leads, English annotates. */
.site-nav{margin-top:clamp(1.5rem,3.5vw,2.4rem);
  border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:.1rem 0}
.site-nav ul{list-style:none;display:flex;flex-wrap:wrap;margin:0;padding:0}
.site-nav li{flex:1 1 auto;min-width:8.5rem;border-right:1px solid var(--rule-2)}
.site-nav li:last-child{border-right:0}
.site-nav a{display:block;text-align:center;padding:.7rem .5rem .62rem;
  text-decoration:none;color:var(--ink)}
.site-nav a:hover,.site-nav a:focus-visible{background:var(--paper-2);color:var(--ink)}
.site-nav .n-ga{display:block;font-family:var(--f-display);font-weight:600;font-size:1.02rem;line-height:1.2}
.site-nav .n-en{display:block;font:600 var(--t-xs)/1.4 var(--f-label);
  letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin-top:.12rem}
.site-nav a[aria-current="page"]{background:var(--paper-2);box-shadow:inset 0 -3px 0 var(--contour)}
.site-nav a[aria-current="page"] .n-ga{color:var(--contour)}

/* --- 6. Plates (photographs) --------------------------------------------- */
/* Every photograph is presented as an archive plate: bounded, then captioned
   in the plate's own hand — the reference, the photographer, the collection. */

.plate{margin:0}
.plate-img{position:relative;border:1px solid var(--ink);background:var(--paper-2);overflow:hidden}
.plate-img img{width:100%;display:block}

.plate-cap{display:flex;flex-wrap:wrap;gap:.35rem 1.1rem;
  margin-top:.55rem;padding-bottom:.2rem;
  font:600 var(--t-xs)/1.5 var(--f-label);letter-spacing:.11em;text-transform:uppercase;
  color:var(--ink-3);font-variant-numeric:tabular-nums}
.plate-cap .ref{color:var(--contour)}
.plate-cap .sep{margin-left:auto}
.plate-cap a{color:inherit;text-decoration-color:var(--rule)}
.plate-cap a:hover{color:var(--contour)}

/* Hero plate: the motto sits in the plate's own sky. */
.hero{margin:clamp(1.6rem,4vw,2.6rem) 0 0}
.hero .plate-img{border-width:1.5px}
.hero-motto{position:absolute;inset:0;display:flex;flex-direction:column;
  justify-content:flex-start;padding:clamp(1rem,3.2vw,2.4rem);gap:.3rem;
  background:linear-gradient(to bottom,rgba(244,239,228,.82) 0%,rgba(244,239,228,.45) 42%,rgba(244,239,228,0) 68%)}
.hero-motto p{margin:0;max-width:22ch}
.hero-motto .m-ga{font-family:var(--f-display);font-weight:600;color:#17211C;
  font-size:clamp(1.15rem,.7rem + 2.1vw,2.25rem);line-height:1.14;letter-spacing:-0.015em}
.hero-motto .m-en{font-style:italic;color:#2C3931;
  font-size:clamp(.8rem,.7rem + .5vw,1.05rem);line-height:1.35;margin-top:.35rem}

/* On a narrow screen the plate is only ~160px tall — far too little room to
   set the motto over it. Below this width the motto drops out of the overlay
   and sits under the plate instead. No markup change: .hero-motto is already
   the last child of .plate-img, so going static puts it in the right place. */
@media (max-width:44rem){
  .hero-motto{position:static;background:none;
    padding:.8rem .9rem .95rem;border-top:1px solid var(--rule)}
  .hero-motto p{max-width:none}
  .hero-motto .m-ga{color:var(--ink);font-size:clamp(1.15rem,.8rem + 2.4vw,1.6rem)}
  .hero-motto .m-en{color:var(--ink-2)}

  /* Captions stack rather than pushing the collection to a lonely right edge. */
  .plate-cap .sep{margin-left:0}
  /* The sheet designation keeps its number; the gloss is dropped for room. */
  .tb-rule .en{display:none}
}

/* A plate run full width, used once per page at most. */
.band{margin:clamp(2.4rem,6vw,4rem) 0}
.band .plate-img{border-width:1.5px}
.band-quote{position:absolute;left:0;right:0;bottom:0;
  padding:clamp(1.4rem,4vw,2.6rem) clamp(1rem,3.2vw,2.4rem) clamp(1rem,2.6vw,1.8rem);
  background:linear-gradient(to top,rgba(19,26,22,.88) 0%,rgba(19,26,22,.55) 55%,rgba(19,26,22,0) 100%)}
.band-quote p{margin:0;color:#F4EFE4}
.band-quote .q-ga{font-family:var(--f-display);font-weight:600;
  font-size:clamp(1.2rem,.8rem + 1.9vw,2.1rem);line-height:1.15}
.band-quote .q-en{font-style:italic;font-size:var(--t-cap);color:#CFC9B8;margin-top:.3rem}

/* --- 7. Page furniture --------------------------------------------------- */

main{display:block}

.page-head{margin:clamp(2rem,5vw,3.2rem) 0 clamp(1.4rem,3vw,2.2rem);
  border-bottom:1.5px solid var(--ink);padding-bottom:.75rem;
  display:flex;align-items:flex-end;flex-wrap:wrap;gap:.4rem 1.2rem}
.page-head h2{font-size:var(--t-xl);line-height:1}
.page-head .en{font:600 var(--t-cap)/1 var(--f-label);letter-spacing:.2em;
  text-transform:uppercase;color:var(--ink-3);padding-bottom:.18em}
.page-head .lbl{margin-left:auto;padding-bottom:.25em}

.lead{max-width:var(--prose-max);margin:clamp(1.6rem,4vw,2.4rem) 0 0;font-size:var(--t-md)}
.lead p + p{margin-top:.9em}

.prose{max-width:var(--prose-max)}
.prose h3{font-size:var(--t-lg);margin:2.2em 0 .5em}
.prose h3:first-child{margin-top:0}
.prose h3 .en{display:block;font:600 var(--t-xs)/1.4 var(--f-label);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin-top:.35rem}
.prose strong{font-weight:600}

/* Two-column section: prose beside a plate. */
.split{display:grid;gap:var(--gap);align-items:start;
  grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
  margin:clamp(2.2rem,5vw,3.4rem) 0}
@media (max-width:56rem){.split{grid-template-columns:1fr}}

/* A rule with a word set into it. */
.divider{display:flex;align-items:center;gap:1rem;margin:clamp(2.2rem,5vw,3.4rem) 0;
  color:var(--ink-3)}
.divider::before,.divider::after{content:"";flex:1;border-top:1px solid var(--rule)}
.divider span{font:600 var(--t-xs)/1 var(--f-label);letter-spacing:.24em;text-transform:uppercase}

/* --- 8. Register (the three-entry index on the home sheet) --------------- */

.register{display:grid;gap:clamp(1rem,2.6vw,1.7rem);
  grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));
  list-style:none;margin:clamp(1.8rem,4vw,2.6rem) 0 0;padding:0}
.entry{display:flex;flex-direction:column;text-decoration:none;color:inherit;
  border:1px solid var(--rule);background:var(--paper);
  transition:border-color .18s ease, background .18s ease}
.entry:hover,.entry:focus-visible{border-color:var(--ink);background:var(--paper-2)}
.entry-img{border-bottom:1px solid var(--rule);background:var(--paper-2);
  aspect-ratio:8/5;overflow:hidden}
.entry-img img,.entry-img svg{width:100%;height:100%;object-fit:cover;display:block}
.entry-txt{padding:.9rem 1rem 1.05rem;display:flex;flex-direction:column;gap:.3rem;flex:1}
.entry-no{font:600 var(--t-xs)/1 var(--f-label);letter-spacing:.16em;color:var(--contour);
  font-variant-numeric:tabular-nums}
.entry-ga{font-family:var(--f-display);font-weight:600;font-size:1.16rem;line-height:1.2}
.entry-en{font:600 var(--t-xs)/1.4 var(--f-label);letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-3)}
.entry-go{margin-top:auto;padding-top:.7rem;font:600 var(--t-xs)/1 var(--f-label);
  letter-spacing:.16em;text-transform:uppercase;color:var(--water)}
.entry:hover .entry-go{color:var(--contour)}

/* --- 9. Tables (the registers proper) ------------------------------------ */

.table-wrap{overflow-x:auto;margin:clamp(1.4rem,3vw,2rem) 0}
table{width:100%;border-collapse:collapse;font-size:var(--t-cap)}
caption{text-align:left;margin-bottom:.7rem;
  font:600 var(--t-xs)/1.4 var(--f-label);letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-3)}
th,td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--rule-2);
  vertical-align:baseline}
thead th{border-bottom:1.5px solid var(--ink);
  font:600 var(--t-xs)/1.4 var(--f-label);letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-2);white-space:nowrap}
tbody tr:hover{background:var(--paper-2)}
td.num{font-variant-numeric:tabular-nums;color:var(--ink-3);width:3.2rem;
  font-family:var(--f-label);font-size:var(--t-xs);letter-spacing:.06em}
.grp th{background:var(--paper-2);border-bottom:1px solid var(--rule);
  font-family:var(--f-display);font-size:1.02rem;font-weight:600;
  letter-spacing:0;text-transform:none;color:var(--ink);padding-top:.85rem;padding-bottom:.55rem}
.grp th .en{font:600 var(--t-xs)/1 var(--f-label);letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-3);margin-left:.6rem}
.t-ga{font-family:var(--f-body);font-weight:600}
.t-en{color:var(--ink-3);font-size:var(--t-sm)}
.t-need{color:var(--ink-2);font-size:var(--t-sm);line-height:1.5}

/* --- 10. Map sheet ------------------------------------------------------- */

.mapgrid{display:grid;gap:var(--gap);align-items:start;
  grid-template-columns:minmax(0,1.18fr) minmax(0,1fr);
  margin:clamp(1.6rem,4vw,2.4rem) 0 0}
@media (max-width:56rem){.mapgrid{grid-template-columns:1fr}}
.map-side{display:grid;gap:clamp(1.4rem,3vw,2rem);align-content:start}

/* Frame background matches the county fill so the hairline boundaries are the
   only thing that reads — and so the source data's imperfect shared borders
   don't show as slivers. */
.map-frame{border:1px solid var(--ink);background:var(--paper);padding:clamp(.6rem,2vw,1.2rem)}
.map-frame svg{width:100%;height:auto}

.county{fill:var(--paper);stroke:var(--rule);stroke:color-mix(in srgb,var(--rule) 62%,var(--ink));
  stroke-width:.85;transition:fill .18s ease}
.county:hover{fill:var(--paper-3)}
.county.has-cell{fill:color-mix(in srgb,var(--land) 16%,var(--paper))}
.border-ni{fill:none;stroke:var(--ink-3);stroke-width:.9;stroke-dasharray:4 3}

.mk{stroke:var(--paper);stroke-width:1.1}
.mk.active{fill:var(--land)}
.mk.getting{fill:var(--amber)}
.mk.exploring{fill:var(--contour)}

.map-label{font:600 6.5px/1 var(--f-label);letter-spacing:.09em;text-transform:uppercase;
  fill:var(--ink-2);paint-order:stroke;stroke:var(--paper);stroke-width:2.4px;stroke-linejoin:round}

/* Legend + scale bar: the sheet's marginalia, true only on this page. */
.legend{border:1px solid var(--rule);padding:1rem 1.1rem 1.15rem;background:var(--paper)}
.legend h3{font-size:1.1rem;margin:0 0 .15rem}
.legend h3 .en{display:block;font:600 var(--t-xs)/1.4 var(--f-label);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin-top:.25rem}
.legend ul{list-style:none;margin:.9rem 0 0;padding:0;display:grid;gap:.6rem}
.legend li{display:flex;align-items:flex-start;gap:.65rem;line-height:1.35}
.legend svg{flex:none;margin-top:.12rem}
.legend .l-ga{font-weight:600;font-size:var(--t-cap)}
.legend .l-en{display:block;font:600 var(--t-xs)/1.4 var(--f-label);
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}

.scalebar{margin-top:1.2rem;padding-top:.9rem;border-top:1px solid var(--rule-2)}
.scalebar .bar{display:flex;height:7px;border:1px solid var(--ink);width:min(100%,13rem)}
.scalebar .bar i{flex:1}
.scalebar .bar i:nth-child(odd){background:var(--ink)}
.scalebar .ticks{display:flex;justify-content:space-between;width:min(100%,13rem);
  margin-top:.25rem;font:600 var(--t-xs)/1 var(--f-label);color:var(--ink-3);
  font-variant-numeric:tabular-nums;letter-spacing:.06em}

.status{font:600 var(--t-xs)/1 var(--f-label);letter-spacing:.13em;text-transform:uppercase;
  white-space:nowrap}
.status::before{content:"";display:inline-block;width:.55rem;height:.55rem;
  border-radius:50%;margin-right:.45rem;vertical-align:baseline}
.status.active{color:var(--land)}      .status.active::before{background:var(--land)}
.status.getting{color:var(--amber)}    .status.getting::before{background:var(--amber)}
.status.exploring{color:var(--contour)}.status.exploring::before{background:var(--contour)}
.status.none{color:var(--ink-3)}       .status.none::before{background:transparent;
  box-shadow:inset 0 0 0 1px var(--rule)}

/* --- 11. Calendar -------------------------------------------------------- */

.cal-head{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;
  margin:clamp(1.6rem,4vw,2.4rem) 0 .9rem}
.cal-head h3{font-size:var(--t-lg)}
.cal-head .lbl{margin-left:auto}

table.cal{table-layout:fixed}
/* The month is already named in the heading above the table; the caption stays
   for screen readers rather than repeating itself on screen. */
table.cal caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
table.cal thead th{text-align:center;padding:.5rem .2rem;font-size:var(--t-xs)}
table.cal thead th .en{display:block;color:var(--ink-3);font-weight:600}
table.cal td{height:4.6rem;border:1px solid var(--rule-2);vertical-align:top;padding:.35rem .4rem}
table.cal td.off{background:var(--paper-2)}
table.cal .d{font:600 var(--t-xs)/1 var(--f-label);color:var(--ink-3);
  font-variant-numeric:tabular-nums;display:block;margin-bottom:.25rem}
.event{display:block;background:var(--land);color:#F4EFE4;
  font:600 var(--t-xs)/1.3 var(--f-label);letter-spacing:.04em;
  padding:.2rem .35rem;margin-bottom:.2rem;text-decoration:none}
.event:hover{background:var(--contour);color:#F4EFE4}
@media (max-width:44rem){table.cal td{height:3.6rem}.event{font-size:.62rem}}

.events{list-style:none;margin:1.4rem 0 0;padding:0;display:grid;gap:0}
.events li{display:grid;gap:.15rem .9rem;grid-template-columns:6.5rem 1fr;
  padding:.85rem 0;border-bottom:1px solid var(--rule-2)}
.events li:first-child{border-top:1px solid var(--rule)}
.events .when{font:600 var(--t-xs)/1.5 var(--f-label);letter-spacing:.1em;
  text-transform:uppercase;color:var(--contour);font-variant-numeric:tabular-nums}
.events .what{font-weight:600}
.events .where{grid-column:2;color:var(--ink-3);font-size:var(--t-sm)}
@media (max-width:34rem){.events li{grid-template-columns:1fr}.events .where{grid-column:1}}

/* --- 12. Cards (contact) ------------------------------------------------- */

.cards{display:grid;gap:clamp(1rem,2.6vw,1.6rem);
  grid-template-columns:repeat(auto-fit,minmax(16.5rem,1fr));
  margin:clamp(1.8rem,4vw,2.6rem) 0 0;padding:0;list-style:none}
.card{border:1px solid var(--rule);padding:1.2rem 1.3rem 1.35rem;background:var(--paper)}
.card.is-open{border-color:var(--ink)}
.card h3{font-size:var(--t-lg);margin:0}
.card h3 .en{display:block;font:600 var(--t-xs)/1.4 var(--f-label);
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin-top:.3rem}
.card .status{margin:.75rem 0 .85rem;display:block}
.card p{font-size:var(--t-cap);color:var(--ink-2)}
.card .mailto{font-family:var(--f-label);font-weight:600;letter-spacing:.04em;
  font-size:var(--t-cap);word-break:break-all}

/* --- 13. Call to action -------------------------------------------------- */

.cta{margin:clamp(2.4rem,5vw,3.4rem) 0 0;border-top:1.5px solid var(--ink);
  padding-top:clamp(1.3rem,3vw,1.9rem);display:flex;flex-wrap:wrap;
  align-items:baseline;gap:.6rem 1.4rem}
.cta p{margin:0;font-family:var(--f-display);font-weight:600;font-size:var(--t-lg)}
.cta .en{font-family:var(--f-body);font-weight:400;font-style:italic;
  font-size:var(--t-cap);color:var(--ink-2)}
.btn{margin-left:auto;display:inline-block;text-decoration:none;
  background:var(--ink);color:var(--paper);padding:.72em 1.35em;
  font:600 var(--t-xs)/1 var(--f-label);letter-spacing:.16em;text-transform:uppercase;
  border:1.5px solid var(--ink);transition:background .18s ease,color .18s ease}
.btn:hover,.btn:focus-visible{background:var(--contour);border-color:var(--contour);color:#F4EFE4}
@media (max-width:34rem){.btn{margin-left:0}}

/* --- 14. Marginalia (footer) -------------------------------------------- */

.marginalia{margin-top:clamp(2.6rem,6vw,4.2rem);border-top:1.5px solid var(--ink);
  padding-top:1.1rem;padding-bottom:.4rem}
.marg-top{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;align-items:baseline}
.marg-top .f-title{font-family:var(--f-display);font-weight:600;font-size:1.12rem;margin:0}
.marg-top .lbl{margin-left:auto}
.f-proverb{margin:.85rem 0 0;font-style:italic;color:var(--ink-2);font-size:var(--t-cap)}
.f-proverb .en{font-style:normal;color:var(--ink-3)}
.f-meta{margin:1.1rem 0 0;padding-top:.85rem;border-top:1px solid var(--rule-2);
  font:600 var(--t-xs)/1.7 var(--f-label);letter-spacing:.09em;color:var(--ink-3);
  display:flex;flex-wrap:wrap;gap:.2rem .9rem}
.f-meta a{color:var(--ink-3);text-decoration-color:var(--rule)}
.f-meta a:hover{color:var(--contour)}
.f-credit{margin:.8rem 0 0;font-size:var(--t-xs);line-height:1.65;color:var(--ink-3);
  font-family:var(--f-label);letter-spacing:.03em;max-width:60rem}
.f-credit a{color:var(--ink-3);text-decoration-color:var(--rule)}

/* --- 15. Preferences & print -------------------------------------------- */

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important}
}

@media print{
  :root{--paper:#fff;--paper-2:#fff;--paper-3:#fff;--ink:#000;--ink-2:#333;--ink-3:#555;
        --rule:#999;--rule-2:#ccc;--water:#000;--contour:#000}
  body{padding:0;font-size:10.5pt}
  .sheet{border:1px solid #000;max-width:none}
  .sheet::before,.sheet::after{display:none}
  .site-nav,.skip,.cta .btn,.entry-go{display:none}
  .hero-motto{position:static;background:none;padding:.6rem 0 0}
  .hero-motto .m-ga,.hero-motto .m-en{color:#000}
  .band-quote{position:static;background:none;padding:.6rem 0 0}
  .band-quote p{color:#000}
  .band-quote .q-en{color:#333}
  a{text-decoration:none}
  .plate-img,.entry,.card,.legend,.map-frame{break-inside:avoid}
  tr,li{break-inside:avoid}
}
