:root {
  --ink: #eef2e9;
  --ink-soft: #aebbb1;
  --ink-muted: #84948a;
  --bg: #111817;
  --bg-deep: #0c1110;
  --panel: #18211f;
  --panel-bright: #202c29;
  --line: rgba(213, 229, 214, 0.14);
  --line-strong: rgba(213, 229, 214, 0.28);
  --amber: #e9b36c;
  --amber-soft: rgba(233, 179, 108, 0.14);
  --teal: #88c6ba;
  --teal-soft: rgba(136, 198, 186, 0.12);
  --coral: #e77f62;
  --coral-soft: rgba(231, 127, 98, 0.12);
  --serif: Georgia, 'Times New Roman', serif;
  --sans: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --mono: 'DM Mono', 'SFMono-Regular', Consolas, monospace;
}

:root[data-theme="light"] {
  --ink: #18211f;
  --ink-soft: #48554f;
  --ink-muted: #64736a;
  --bg: #f4f6f1;
  --bg-deep: #e9eee8;
  --panel: #ffffff;
  --panel-bright: #f9fbf7;
  --line: rgba(24, 33, 31, 0.15);
  --line-strong: rgba(24, 33, 31, 0.32);
  --amber: #965b18;
  --amber-soft: rgba(150, 91, 24, 0.12);
  --teal: #23665d;
  --teal-soft: rgba(35, 102, 93, 0.1);
  --coral: #93412d;
  --coral-soft: rgba(147, 65, 45, 0.1);
}

* { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  color-scheme: dark;
  scroll-behavior: smooth;
  scroll-padding-top: 6rem;
}

html[data-theme="light"] { color-scheme: light; }

body {
  min-width: 320px;
  margin: 0;
  color: var(--ink);
  background:
    radial-gradient(circle at 88% 4%, rgba(136, 198, 186, 0.09), transparent 27rem),
    radial-gradient(circle at 7% 35%, rgba(233, 179, 108, 0.05), transparent 26rem),
    var(--bg);
  font-family: var(--sans);
  font-size: 14px;
  line-height: 1.55;
}

button,
input,
select { font: inherit; }

button { color: inherit; cursor: pointer; }

a { color: inherit; }

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
.place-node:focus-visible {
  outline: 2px solid var(--teal);
  outline-offset: 3px;
}

.skip-link {
  position: fixed;
  z-index: 20;
  top: 0.75rem;
  left: 0.75rem;
  padding: 0.55rem 0.75rem;
  color: var(--bg);
  background: var(--amber);
  transform: translateY(-180%);
  transition: transform 160ms ease;
}

.skip-link:focus { transform: translateY(0); }

.ireland-header {
  position: sticky;
  z-index: 10;
  top: 0;
  display: flex;
  align-items: center;
  gap: 1.3rem;
  min-height: 74px;
  padding: 0.85rem clamp(1.15rem, 4vw, 4rem);
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--bg) 94%, transparent);
  backdrop-filter: blur(16px);
}

.ireland-brand {
  display: inline-flex;
  min-width: 0;
  align-items: center;
  gap: 0.7rem;
  color: inherit;
  text-decoration: none;
}

.brand-mark {
  display: grid;
  width: 31px;
  height: 31px;
  flex: 0 0 auto;
  place-items: center;
  border: 1px solid var(--amber);
}

.brand-mark svg { width: 22px; height: 22px; fill: none; stroke: var(--amber); stroke-width: 1.1; }
.brand-name { display: block; font-family: var(--serif); font-size: 1.02rem; letter-spacing: 0.01em; }
.brand-subtitle { display: block; margin-top: 0.1rem; color: var(--ink-muted); font-family: var(--mono); font-size: 0.48rem; letter-spacing: 0.07em; text-transform: uppercase; }

.ireland-nav {
  display: flex;
  flex: 1 1 auto;
  justify-content: center;
  gap: 0.25rem;
}

.ireland-nav a {
  padding: 0.45rem 0.6rem;
  color: var(--ink-muted);
  font-family: var(--mono);
  font-size: 0.56rem;
  letter-spacing: 0.04em;
  text-decoration: none;
  text-transform: uppercase;
}

.ireland-nav a:hover,
.ireland-nav a:focus-visible,
.ireland-nav a.is-active { color: var(--teal); }
.ireland-nav a.is-active { box-shadow: inset 0 -2px var(--teal); }

.theme-toggle {
  flex: 0 0 auto;
  padding: 0.45rem 0.55rem;
  border: 1px solid var(--line-strong);
  color: var(--ink-muted);
  background: transparent;
  font-family: var(--mono);
  font-size: 0.54rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.theme-toggle:hover { border-color: var(--amber); color: var(--amber); background: var(--amber-soft); }

main {
  width: min(1440px, calc(100% - clamp(2.4rem, 8vw, 8rem)));
  margin: 0 auto;
}

.ireland-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(320px, 0.92fr);
  align-items: center;
  gap: clamp(2rem, 7vw, 7rem);
  min-height: min(720px, calc(100vh - 74px));
  padding: clamp(4rem, 9vw, 8rem) 0 clamp(4rem, 8vw, 7rem);
}

.eyebrow {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin: 0 0 1.25rem;
  color: var(--amber);
  font-family: var(--mono);
  font-size: 0.57rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.eyebrow > span:first-child {
  display: inline-block;
  width: 2rem;
  height: 1px;
  background: currentColor;
}

h1,
h2,
h3,
p { margin-top: 0; }

h1,
h2,
h3 { font-weight: 500; }

h1,
h2 { font-family: var(--serif); }

h1 {
  max-width: 12ch;
  margin-bottom: 1.3rem;
  font-size: clamp(3rem, 7vw, 6.5rem);
  letter-spacing: -0.045em;
  line-height: 0.98;
}

h1 em { color: var(--teal); font-style: normal; }

.hero-intro {
  max-width: 39rem;
  margin-bottom: 1.7rem;
  color: var(--ink-soft);
  font-size: clamp(1rem, 1.8vw, 1.22rem);
  line-height: 1.75;
}

.hero-actions,
.control-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
}

.action {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  min-height: 38px;
  padding: 0.6rem 0.72rem;
  border: 1px solid var(--line-strong);
  color: var(--ink-soft);
  background: transparent;
  font-family: var(--mono);
  font-size: 0.55rem;
  letter-spacing: 0.045em;
  text-decoration: none;
  text-transform: uppercase;
  transition: 160ms ease;
}

.action:hover,
.action:focus-visible { border-color: var(--teal); color: var(--ink); background: var(--teal-soft); }
.action-primary { border-color: var(--amber); color: var(--amber); background: var(--amber-soft); }
.action-primary:hover,
.action-primary:focus-visible { border-color: var(--amber); color: var(--bg); background: var(--amber); }
.action-quiet { border-color: transparent; color: var(--ink-muted); }
.action-quiet:hover,
.action-quiet:focus-visible { border-color: var(--line-strong); color: var(--ink); }

.hero-disclaimer {
  max-width: 42rem;
  margin: 1.4rem 0 0;
  padding: 0.75rem 0.85rem;
  border-left: 2px solid var(--coral);
  color: var(--ink-muted);
  font-size: 0.67rem;
  line-height: 1.6;
}

.hero-disclaimer strong { color: var(--coral); font-family: var(--mono); font-size: 0.57rem; letter-spacing: 0.04em; text-transform: uppercase; }

.hero-figure {
  position: relative;
  padding: clamp(1rem, 3vw, 2rem);
  border: 1px solid var(--line);
  background: var(--panel);
  box-shadow: 0 2.5rem 7rem rgba(0, 0, 0, 0.18);
}

.hero-figure::before,
.hero-figure::after { position: absolute; color: var(--ink-muted); font-family: var(--mono); font-size: 0.5rem; letter-spacing: 0.08em; text-transform: uppercase; }
.hero-figure::before { top: 0.75rem; left: 0.85rem; content: 'map / symbol / ratio'; }
.hero-figure::after { right: 0.85rem; bottom: 0.75rem; content: 'ITM-inspired scaffold'; }
.hero-figure svg { display: block; width: 100%; height: auto; color: var(--ink-soft); }
.hero-figure-label { margin-top: 0.75rem; color: var(--ink-muted); font-family: var(--mono); font-size: 0.54rem; letter-spacing: 0.05em; text-transform: uppercase; }
.status-dot { display: inline-block; width: 7px; height: 7px; margin-right: 0.35rem; border-radius: 50%; background: var(--teal); box-shadow: 0 0 0 4px var(--teal-soft); }

.lab-section { padding: clamp(4rem, 8vw, 7rem) 0; border-top: 1px solid var(--line); scroll-margin-top: 5.8rem; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 2rem; }
.section-heading .eyebrow { margin-bottom: 0.8rem; }
.section-heading h2 { max-width: 17ch; margin-bottom: 0; font-size: clamp(2rem, 4vw, 4rem); letter-spacing: -0.035em; line-height: 1.04; }
.section-note { max-width: 22rem; margin: 0 0 0.3rem; color: var(--ink-muted); font-family: var(--mono); font-size: 0.54rem; line-height: 1.55; text-align: right; text-transform: uppercase; }

.map-layout { display: grid; grid-template-columns: minmax(0, 1.38fr) minmax(280px, 0.62fr); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.map-card,
.map-research-panel { min-width: 0; background: var(--panel); }
.map-card { display: flex; flex-direction: column; }
.map-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.9rem 1rem; border-bottom: 1px solid var(--line); }
.toolbar-label { display: grid; gap: 0.18rem; }
.toolbar-label > span { color: var(--ink); font-family: var(--mono); font-size: 0.58rem; letter-spacing: 0.05em; text-transform: uppercase; }
.toolbar-label small { color: var(--teal); font-family: var(--mono); font-size: 0.52rem; }
.layer-actions { display: flex; flex-wrap: wrap; justify-content: end; gap: 0.35rem; }
.layer-button { min-height: 30px; padding: 0.35rem 0.48rem; border: 1px solid transparent; color: var(--ink-muted); background: transparent; font-family: var(--mono); font-size: 0.5rem; letter-spacing: 0.035em; text-transform: uppercase; }
.layer-button:hover { border-color: var(--line-strong); color: var(--ink); }
.layer-button.is-active { border-color: var(--teal); color: var(--teal); background: var(--teal-soft); }
.layer-button-quiet { border-color: var(--line); color: var(--amber); }

.map-stage { min-height: 670px; padding: clamp(1rem, 3vw, 2.5rem); background: var(--bg-deep); }
#irelandMap { display: block; width: 100%; max-height: 750px; color: var(--ink-soft); }
.map-water { fill: var(--bg-deep); }
.map-axis { fill: none; stroke: var(--coral); stroke-dasharray: 5 7; stroke-width: 1; opacity: 0.85; }
.map-orbit { fill: none; stroke: var(--amber); stroke-dasharray: 3 8; stroke-width: 1; opacity: 0.8; }
.island-fill { fill: var(--panel-bright); stroke: none; }
.island-outline { fill: none; stroke: var(--teal); stroke-width: 3; vector-effect: non-scaling-stroke; }
.province { stroke: none; opacity: 0.64; }
.province-connacht { fill: rgba(136, 198, 186, 0.34); }
.province-ulster { fill: rgba(233, 179, 108, 0.3); }
.province-munster { fill: rgba(231, 127, 98, 0.28); }
.province-leinster { fill: rgba(152, 201, 128, 0.29); }
.province-boundary { fill: none; stroke: var(--ink); stroke-dasharray: 5 7; stroke-width: 1.4; opacity: 0.5; }
.province-labels text { fill: var(--ink); font-family: var(--mono); font-size: 12px; letter-spacing: 0.14em; opacity: 0.68; text-anchor: middle; }
.place-node { cursor: pointer; outline: none; }
.place-node > circle:first-child { fill: var(--coral); stroke: var(--bg-deep); stroke-width: 4; }
.place-pulse { fill: none; stroke: var(--coral); stroke-width: 1; opacity: 0.7; }
.place-node:hover .place-pulse,
.place-node:focus .place-pulse { animation: pulse 1.4s ease-in-out infinite; }
.place-node text { fill: var(--ink); font-family: var(--mono); font-size: 12px; font-weight: 500; letter-spacing: 0.1em; }
.place-node .place-coordinates { fill: var(--ink-muted); font-size: 9px; letter-spacing: 0.03em; }
.map-symbol { fill: none; stroke: var(--amber); stroke-width: 3; vector-effect: non-scaling-stroke; }
.map-symbol-shamrock { fill: var(--amber); stroke: none; opacity: 0.88; }
.map-symbol-shamrock path { stroke: var(--amber); stroke-width: 3; fill: none; }
.map-symbol-ogham { fill: var(--amber); font-family: var(--mono); font-size: 22px; letter-spacing: 0.18em; }
.map-caption { display: flex; align-items: start; gap: 0.75rem; min-height: 75px; padding: 0.95rem 1rem; border-top: 1px solid var(--line); }
.caption-mark { color: var(--amber); font-size: 1.2rem; line-height: 1; }
.map-caption p { margin: 0; color: var(--ink-soft); font-size: 0.73rem; line-height: 1.55; }
.map-caption strong { color: var(--amber); font-family: var(--mono); font-size: 0.56rem; letter-spacing: 0.05em; text-transform: uppercase; }

.map-research-panel { padding: clamp(1.1rem, 3vw, 2rem); }
.map-research-panel h3 { max-width: 14ch; margin-bottom: 0.8rem; font-family: var(--serif); font-size: clamp(1.55rem, 3vw, 2.35rem); line-height: 1.04; }
.panel-intro { margin-bottom: 1.35rem; color: var(--ink-muted); font-size: 0.7rem; line-height: 1.7; }
.math-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; margin-bottom: 1.4rem; border: 1px solid var(--line); background: var(--line); }
.math-card { min-height: 113px; padding: 0.75rem; background: var(--bg-deep); }
.math-card span { display: block; margin-bottom: 0.5rem; color: var(--teal); font-family: var(--mono); font-size: 0.5rem; letter-spacing: 0.07em; text-transform: uppercase; }
.math-card strong { display: block; color: var(--ink); font-family: var(--serif); font-size: 1.65rem; font-weight: 500; }
.math-card small { display: block; margin-top: 0.25rem; color: var(--ink-muted); font-size: 0.58rem; line-height: 1.35; }
.map-process { display: grid; gap: 0.7rem; margin: 0; padding: 0; list-style: none; }
.map-process li { display: grid; grid-template-columns: 2.1rem 1fr; gap: 0.55rem; align-items: start; color: var(--ink-soft); font-size: 0.69rem; line-height: 1.45; }
.map-process strong { color: var(--amber); font-family: var(--mono); font-size: 0.55rem; }
.research-warning { margin: 1.4rem 0 0; padding: 0.75rem; border: 1px solid var(--coral); color: var(--ink-muted); background: var(--coral-soft); font-size: 0.62rem; line-height: 1.55; }
.research-warning span { color: var(--coral); font-family: var(--mono); }

.design-section { background: linear-gradient(180deg, transparent, rgba(136, 198, 186, 0.025)); }
.design-layout { display: grid; grid-template-columns: minmax(250px, 0.42fr) minmax(0, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); }
.design-controls { display: grid; align-content: start; gap: 0.78rem; min-width: 0; padding: 1rem; background: var(--panel); }
.control-heading { display: grid; gap: 0.2rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--line); }
.control-heading > span { color: var(--ink); font-family: var(--mono); font-size: 0.59rem; letter-spacing: 0.05em; text-transform: uppercase; }
.control-heading small { color: var(--teal); font-family: var(--mono); font-size: 0.52rem; }
.design-controls > label { display: grid; gap: 0.36rem; color: var(--ink-muted); font-family: var(--mono); font-size: 0.54rem; letter-spacing: 0.04em; text-transform: uppercase; }
.design-controls select,
.design-controls input { width: 100%; min-height: 39px; padding: 0.55rem 0.6rem; border: 1px solid var(--line-strong); border-radius: 0; color: var(--ink); background: var(--bg-deep); font-family: var(--sans); font-size: 0.73rem; letter-spacing: 0; text-transform: none; }
.design-controls select:hover,
.design-controls input:hover { border-color: var(--teal); }
.design-controls fieldset { margin: 0; padding: 0.7rem; border: 1px solid var(--line); }
.design-controls legend { padding: 0 0.35rem; color: var(--teal); font-family: var(--mono); font-size: 0.51rem; letter-spacing: 0.05em; text-transform: uppercase; }
.radio-option { display: flex; align-items: start; gap: 0.45rem; margin: 0.35rem 0; color: var(--ink-soft); font-size: 0.65rem; line-height: 1.4; }
.radio-option input { margin-top: 0.16rem; accent-color: var(--teal); }
.control-actions { padding-top: 0.2rem; }
.control-actions .action { flex: 1 1 auto; }
.reset-button { width: 100%; padding: 0.35rem 0; border: 0; color: var(--ink-muted); background: transparent; font-family: var(--mono); font-size: 0.52rem; letter-spacing: 0.04em; text-align: left; text-transform: uppercase; }
.reset-button:hover { color: var(--coral); }
.control-note { margin: 0; padding-top: 0.6rem; border-top: 1px solid var(--line); color: var(--ink-muted); font-size: 0.61rem; line-height: 1.55; }

.garment-column { min-width: 0; background: var(--bg-deep); }
.garment-stage { display: grid; min-height: 630px; place-items: center; padding: clamp(1rem, 4vw, 3.5rem); overflow: hidden; }
.garment-preview { position: relative; width: min(100%, 470px); aspect-ratio: 0.84; filter: drop-shadow(0 2rem 2.5rem rgba(0, 0, 0, 0.25)); }
.garment-body,
.garment-sleeve,
.garment-collar { position: absolute; z-index: 0; background: #253a32; }
.garment-body { top: 8%; right: 15%; bottom: 4%; left: 15%; border-radius: 13% 13% 5% 5% / 8% 8% 3% 3%; clip-path: polygon(18% 0, 34% 0, 40% 9%, 60% 9%, 66% 0, 82% 0, 100% 19%, 84% 33%, 77% 27%, 77% 100%, 23% 100%, 23% 27%, 16% 33%, 0 19%); }
.garment-sleeve { top: 11%; width: 25%; height: 28%; }
.garment-sleeve-left { left: 4%; transform: rotate(20deg); clip-path: polygon(32% 0, 100% 39%, 84% 100%, 0 67%); }
.garment-sleeve-right { right: 4%; transform: rotate(-20deg); clip-path: polygon(0 39%, 68% 0, 100% 67%, 16% 100%); }
.garment-collar { top: 5%; left: 39%; z-index: 1; width: 22%; height: 11%; border-radius: 0 0 50% 50%; background: var(--bg-deep); clip-path: polygon(0 0, 100% 0, 78% 63%, 50% 100%, 22% 63%); }
.garment-hoodie .garment-body { background: #3a393f; clip-path: polygon(18% 0, 30% 0, 42% 9%, 58% 9%, 70% 0, 82% 0, 100% 18%, 86% 34%, 77% 27%, 77% 100%, 23% 100%, 23% 27%, 14% 34%, 0 18%); }
.garment-hoodie .garment-sleeve { background: #3a393f; }
.garment-hoodie .garment-collar { background: #1a1c20; }
.garment-tote .garment-body { top: 15%; right: 19%; bottom: 3%; left: 19%; border-radius: 2% 2% 4% 4%; clip-path: none; background: #ad9c7a; }
.garment-tote .garment-sleeve { top: 2%; width: 4%; height: 26%; border: 9px solid #ad9c7a; background: transparent; }
.garment-tote .garment-sleeve-left { left: 29%; transform: rotate(-10deg); clip-path: none; }
.garment-tote .garment-sleeve-right { right: 29%; transform: rotate(10deg); clip-path: none; }
.garment-tote .garment-collar { top: 0; left: 33%; width: 34%; height: 23%; border: 9px solid #ad9c7a; border-bottom: 0; background: transparent; clip-path: none; }
.print-area { position: absolute; z-index: 2; top: 25%; right: 28%; bottom: 20%; left: 28%; display: grid; place-items: center; }
.garment-tote .print-area { top: 28%; right: 24%; bottom: 17%; left: 24%; }
#designSvg { display: block; width: 100%; height: 100%; overflow: visible; }
#designSvg .design-outline { fill: none; stroke: var(--design-teal, #88c6ba); stroke-width: 5; stroke-linejoin: round; }
#designSvg .design-fill { fill: var(--design-fill, rgba(136, 198, 186, 0.16)); stroke: none; }
#designSvg .design-grid { fill: none; stroke: var(--design-amber, #e9b36c); stroke-width: 2; opacity: 0.88; }
#designSvg .design-place { fill: var(--design-coral, #e77f62); stroke: var(--design-ink, #111817); stroke-width: 3; }
#designSvg .design-symbol { fill: none; stroke: var(--design-amber, #e9b36c); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
#designSvg .design-symbol-fill { fill: var(--design-amber, #e9b36c); stroke: none; }
#designSvg .design-text { fill: var(--design-ink, #eef2e9); font-family: var(--mono); font-size: 16px; letter-spacing: 0.12em; }
#designSvg .design-small-text { fill: var(--design-amber, #e9b36c); font-family: var(--mono); font-size: 9px; letter-spacing: 0.08em; }
.preview-label { margin: -0.5rem 0 0; color: var(--ink-muted); font-family: var(--mono); font-size: 0.52rem; letter-spacing: 0.05em; text-align: center; text-transform: uppercase; }
.design-math-strip { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.7rem 1.3rem; padding: 0.85rem 1rem; border-top: 1px solid var(--line); color: var(--ink-muted); font-family: var(--mono); font-size: 0.53rem; text-transform: uppercase; }
.design-math-strip strong { color: var(--amber); font-family: var(--serif); font-size: 1rem; font-weight: 500; text-transform: none; }
.export-status { min-height: 1.4rem; margin-top: 0.7rem; color: var(--teal); font-family: var(--mono); font-size: 0.56rem; }

.research-grid,
.provider-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; border: 1px solid var(--line); background: var(--line); }
.research-card,
.provider-card { min-width: 0; padding: clamp(1rem, 2.4vw, 1.6rem); background: var(--panel); }
.research-index { display: grid; width: 26px; height: 26px; margin-bottom: 1rem; place-items: center; border: 1px solid var(--amber); color: var(--amber); font-family: var(--mono); font-size: 0.58rem; }
.research-card h3,
.provider-card h3 { margin-bottom: 0.45rem; font-family: var(--serif); font-size: 1.35rem; line-height: 1.1; }
.research-card p,
.provider-card p { margin-bottom: 1rem; color: var(--ink-muted); font-size: 0.68rem; line-height: 1.7; }
.research-card a,
.provider-link { color: var(--teal); font-family: var(--mono); font-size: 0.55rem; letter-spacing: 0.04em; text-decoration-color: var(--line-strong); text-underline-offset: 0.22em; text-transform: uppercase; }
.research-card a:hover,
.research-card a:focus-visible,
.provider-link:hover,
.provider-link:focus-visible { color: var(--amber); }

.print-section { padding-bottom: clamp(5rem, 10vw, 9rem); }
.print-flow { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; margin-bottom: 1rem; border: 1px solid var(--line); background: var(--line); }
.print-flow > div { min-height: 150px; padding: 1rem; background: var(--bg-deep); }
.print-flow span { display: block; margin-bottom: 1rem; color: var(--amber); font-family: var(--mono); font-size: 0.56rem; }
.print-flow strong { display: block; margin-bottom: 0.35rem; font-family: var(--serif); font-size: 1.18rem; font-weight: 500; }
.print-flow p { margin: 0; color: var(--ink-muted); font-size: 0.65rem; line-height: 1.55; }
.provider-card-heading { display: flex; align-items: center; gap: 0.6rem; margin-bottom: 1rem; }
.provider-card-heading h3 { margin: 0; }
.provider-card-heading p { margin: 0.2rem 0 0; font-family: var(--mono); font-size: 0.5rem; letter-spacing: 0.04em; text-transform: uppercase; }
.provider-mark { display: grid; width: 36px; height: 36px; flex: 0 0 auto; place-items: center; border: 1px solid var(--amber); color: var(--amber); font-family: var(--serif); font-size: 1.4rem; }
.provider-mark-coral { border-color: var(--coral); color: var(--coral); }
.provider-mark-teal { border-color: var(--teal); color: var(--teal); }
.outbound-note { margin: 1rem 0 0; color: var(--ink-muted); font-family: var(--mono); font-size: 0.55rem; line-height: 1.6; }
.outbound-note > span { color: var(--teal); }

.ireland-footer { display: flex; align-items: start; justify-content: space-between; gap: 2rem; padding: 1.3rem clamp(1.15rem, 4vw, 4rem) 2rem; border-top: 1px solid var(--line); color: var(--ink-muted); }
.ireland-footer > div { display: grid; gap: 0.25rem; }
.ireland-footer strong { color: var(--ink-soft); font-family: var(--mono); font-size: 0.56rem; letter-spacing: 0.05em; text-transform: uppercase; }
.ireland-footer span { font-size: 0.63rem; }
.ireland-footer nav { display: flex; flex-wrap: wrap; justify-content: end; gap: 0.7rem 1rem; }
.ireland-footer a { color: var(--teal); font-family: var(--mono); font-size: 0.54rem; text-decoration: none; text-transform: uppercase; }
.ireland-footer a:hover,
.ireland-footer a:focus-visible { color: var(--amber); }

@keyframes pulse { 0%, 100% { opacity: 0.4; transform: scale(0.9); } 50% { opacity: 1; transform: scale(1.15); } }

.print-design .ireland-header,
.print-design .ireland-footer,
.print-design .ireland-hero,
.print-design #map,
.print-design #research,
.print-design #print,
.print-design .design-controls,
.print-design .design-math-strip,
.print-design .preview-label { display: none !important; }
.print-design main { width: 100%; }
.print-design #design { display: block; padding: 0; border: 0; }
.print-design .section-heading { display: none; }
.print-design .design-layout { display: block; border: 0; background: transparent; }
.print-design .garment-stage { min-height: 100vh; padding: 2rem; background: #fff; }
.print-design .garment-preview { width: min(78vw, 560px); }
.print-design .garment-body,
.print-design .garment-sleeve,
.print-design .garment-collar { print-color-adjust: exact; -webkit-print-color-adjust: exact; }

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

@media (max-width: 980px) {
  .ireland-header { flex-wrap: wrap; }
  .ireland-nav { order: 3; width: 100%; flex-basis: 100%; justify-content: start; overflow-x: auto; }
  .ireland-hero { grid-template-columns: 1fr; min-height: 0; }
  .hero-figure { max-width: 620px; margin: 0 auto; }
  .map-layout,
  .design-layout { grid-template-columns: 1fr; }
  .map-stage { min-height: 0; }
  .map-research-panel { display: grid; grid-template-columns: 1fr 1.1fr; column-gap: 1.4rem; }
  .map-research-panel .eyebrow,
  .map-research-panel h3,
  .map-research-panel .panel-intro,
  .map-research-panel .research-warning { grid-column: 1; }
  .map-research-panel .math-grid,
  .map-research-panel .map-process { grid-column: 2; }
  .map-research-panel .math-grid { grid-row: 1 / span 4; }
  .map-research-panel .map-process { grid-row: 5; }
  .map-research-panel .research-warning { grid-row: 3 / span 2; }
  .design-controls { grid-template-columns: repeat(2, 1fr); align-items: start; }
  .design-controls .control-heading,
  .design-controls fieldset,
  .design-controls .control-actions,
  .design-controls .control-note { grid-column: 1 / -1; }
  .garment-stage { min-height: 560px; }
}

@media (max-width: 680px) {
  main { width: min(100% - 2rem, 1440px); }
  .ireland-header { padding-inline: 1rem; }
  .ireland-brand { flex: 1 1 auto; }
  .theme-toggle span { display: none; }
  .section-heading { display: block; }
  .section-note { margin-top: 1rem; text-align: left; }
  .map-toolbar { display: block; }
  .layer-actions { justify-content: start; margin-top: 0.8rem; }
  .map-research-panel { display: block; }
  .map-research-panel .math-grid { margin-top: 1.3rem; }
  .research-grid,
  .provider-grid,
  .print-flow { grid-template-columns: 1fr; }
  .print-flow > div { min-height: 0; }
  .design-controls { display: grid; grid-template-columns: 1fr; }
  .design-controls > * { grid-column: auto !important; }
  .design-controls .control-heading,
  .design-controls fieldset,
  .design-controls .control-actions,
  .design-controls .control-note { grid-column: 1 !important; }
  .garment-stage { min-height: 470px; padding: 1.3rem; }
  .ireland-footer { display: block; }
  .ireland-footer nav { justify-content: start; margin-top: 1rem; }
}

@media (max-width: 430px) {
  .hero-actions .action { width: 100%; }
  h1 { font-size: clamp(2.7rem, 16vw, 4.2rem); }
  .map-stage { padding: 0.5rem; }
  .place-node text { font-size: 10px; }
  .place-node .place-coordinates { font-size: 8px; }
  .province-labels text { font-size: 9px; }
  .garment-stage { min-height: 390px; }
  .control-actions .action { width: 100%; }
}

@media (forced-colors: active) {
  .action,
  .layer-button,
  .theme-toggle,
  .design-controls select,
  .design-controls input { border-color: ButtonText; color: ButtonText; background: ButtonFace; }
  .action:hover,
  .action:focus-visible,
  .layer-button:hover,
  .layer-button:focus-visible,
  .layer-button.is-active { border-color: Highlight; color: HighlightText; background: Highlight; }
  .map-layout,
  .design-layout,
  .research-grid,
  .provider-grid,
  .print-flow { background: CanvasText; }
  .map-card,
  .map-research-panel,
  .design-controls,
  .garment-column,
  .research-card,
  .provider-card,
  .print-flow > div { background: Canvas; }
  .island-outline,
  .place-node > circle:first-child,
  .map-axis,
  .map-orbit { stroke: Highlight; }
  .place-node text,
  .province-labels text,
  .map-caption strong { fill: CanvasText; color: Highlight; }
  .garment-body,
  .garment-sleeve { background: CanvasText; }
  .garment-collar { background: Canvas; }
}

@media print {
  .ireland-header,
  .ireland-footer,
  .skip-link { display: none !important; }
  body { background: #fff; color: #111; }
}
