.fm-icon { display:inline-block; flex:none; }
.fm-eyebrow { margin:0; font-family:var(--font-sans); font-size:11px; line-height:16px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--ink); }
.fm-eyebrow-num { color:var(--red); font-variant-numeric:tabular-nums; }
.fm-eyebrow-sep { color:var(--red); }
.fm-on-ocean.fm-eyebrow, .fm-on-ocean .fm-eyebrow { color:var(--on-ocean); }
.fm-on-ocean .fm-eyebrow-num, .fm-on-ocean.fm-eyebrow .fm-eyebrow-num { color:var(--red-on-ocean); }
.fm-btn { display:inline-flex; align-items:center; gap:var(--space-2); min-height:48px; padding:0 var(--space-6); border-radius:var(--radius-none); border:1px solid transparent; font-family:var(--font-sans); font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; cursor:pointer; }
.fm-btn-primary { background:var(--red); color:var(--on-red); }
.fm-btn-primary:hover { filter:brightness(.92); }
.fm-btn-secondary { background:transparent; color:var(--ink); border-color:var(--ink); }
.fm-btn-secondary:hover { background:var(--surface-card); }
.fm-btn-ocean { background:transparent; color:var(--on-ocean); border-color:var(--on-ocean); }
.fm-btn:disabled { background:transparent; color:var(--ink-muted); border-color:var(--ink-muted); cursor:not-allowed; filter:none; }
.fm-link { display:inline-flex; align-items:center; justify-content:space-between; gap:var(--space-8); padding-bottom:var(--space-3); border-bottom:1px solid var(--rule); color:var(--ink); text-decoration:none; font-family:var(--font-sans); font-size:12px; line-height:16px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; min-width:180px; }
.fm-link .fm-icon { transition:transform .15s ease; }
.fm-link:hover .fm-icon { transform:translate(2px,-2px); }
.fm-on-ocean.fm-link { color:var(--on-ocean); border-bottom-color:var(--on-ocean-muted); }
.fm-iconbtn { display:inline-grid; place-items:center; width:40px; height:40px; border-radius:var(--radius-full); border:1px solid var(--ink); background:transparent; color:var(--ink); cursor:pointer; text-decoration:none; }
.fm-iconbtn:hover { background:var(--surface-raised); }
.fm-on-ocean.fm-iconbtn { border-color:var(--on-ocean); color:var(--on-ocean); }
.fm-on-ocean.fm-iconbtn:hover { background:var(--ocean-deep); }
.fm-btn:focus-visible, .fm-link:focus-visible, .fm-iconbtn:focus-visible, .fm-tab:focus-visible, .fm-stepper button:focus-visible, .fm-fish-add:focus-visible, .fm-also-cta:focus-visible, .fm-signup input:focus-visible { outline:2px solid var(--focus); outline-offset:2px; }
.fm-on-ocean:focus-visible, .fm-signup :focus-visible, .fm-hero :focus-visible { outline-color:var(--on-ocean); }
.fm-hero { position:relative; overflow:hidden; background:var(--ocean); color:var(--on-ocean); min-height:520px; display:flex; flex-direction:column; justify-content:center; }
.fm-hero-media { position:absolute; inset:0; background-size:cover; background-position:center right; }
.fm-hero-media::after { content:''; position:absolute; inset:0; background:linear-gradient(90deg, rgba(8,56,112,.92) 0%, rgba(8,56,112,.55) 40%, rgba(8,56,112,0) 70%); }
.fm-hero-text { position:relative; display:flex; flex-direction:column; gap:var(--space-6); max-width:440px; padding:var(--space-16) var(--space-8); }
.fm-hero-title { margin:0; font-family:var(--font-serif); font-weight:300; font-size:clamp(56px, 9vw, 96px); line-height:.95; letter-spacing:-.01em; color:var(--on-ocean); }
.fm-hero-title em { display:block; font-style:italic; font-weight:400; }
.fm-hero-tagline { margin:0; font-family:var(--font-serif); font-style:italic; font-size:36px; line-height:1.15; color:var(--on-ocean); }
.fm-hero-lead { margin:0; font-family:var(--font-sans); font-size:15px; line-height:24px; color:var(--on-ocean-muted); max-width:30ch; }
.fm-hero-foot { position:relative; display:flex; align-items:center; justify-content:space-between; gap:var(--space-4); padding:var(--space-4) var(--space-8); border-top:1px solid rgba(201,214,234,.35); font-family:var(--font-sans); font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.fm-fish { display:flex; flex-direction:column; gap:var(--space-2); border-bottom:1px solid var(--rule); padding-bottom:var(--space-4); font-family:var(--font-sans); }
.fm-fish-media { position:relative; aspect-ratio:16/9; max-width:100%; background:var(--surface-card); display:grid; place-items:center; overflow:hidden; }
.fm-fish-media img { width:86%; height:auto; mix-blend-mode:multiply; }
.fm-index { position:absolute; top:var(--space-4); left:var(--space-4); font-size:11px; line-height:16px; font-weight:600; letter-spacing:.04em; color:var(--ink-body); font-variant-numeric:tabular-nums; }
.fm-fish-badge { position:absolute; top:var(--space-3); right:var(--space-3); background:var(--surface-raised); color:var(--red); font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; padding:var(--space-1) var(--space-2); }
.fm-fish-go { position:absolute; right:var(--space-4); bottom:var(--space-4); }
.fm-fish-head { display:flex; align-items:baseline; justify-content:space-between; gap:var(--space-4); margin-top:var(--space-4); }
.fm-fish-name { margin:0; font-family:var(--font-serif); font-size:34px; line-height:1.1; font-weight:500; color:var(--ink); }
.fm-fish-add { background:none; border:0; color:var(--ink); cursor:pointer; padding:var(--space-1); }
.fm-fish-meta { margin:0; font-size:13px; line-height:20px; font-weight:500; color:var(--ink-muted); }
.fm-fish-slash { color:var(--red); }
.fm-fish-slot { margin-top:var(--space-2); }
.fm-also { display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-3) var(--space-6); font-family:var(--font-sans); font-size:13px; line-height:20px; color:var(--ink-body); }
.fm-also-label { color:var(--ink); font-weight:600; }
.fm-also-dash { color:var(--ink-muted); }
.fm-also ul { display:flex; flex-wrap:wrap; gap:var(--space-3) var(--space-6); margin:0; padding:0; list-style:none; }
.fm-also-cta { display:inline-flex; align-items:center; gap:var(--space-2); color:var(--ink); font-weight:700; text-decoration:none; }
.fm-steps { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:var(--space-6); font-family:var(--font-sans); }
.fm-steps li { display:grid; grid-template-columns:40px 1fr; gap:var(--space-4); }
.fm-steps-num { font-size:11px; line-height:24px; font-weight:600; color:var(--red); font-variant-numeric:tabular-nums; }
.fm-steps-title { margin:0; font-size:15px; line-height:24px; font-weight:700; color:var(--ink); }
.fm-steps-text { margin:0; font-size:15px; line-height:24px; color:var(--ink-body); }
.fm-tabs { display:flex; justify-content:space-between; gap:var(--space-6); border-bottom:1px solid var(--rule); overflow-x:auto; }
.fm-tab { background:none; border:0; border-bottom:2px solid transparent; margin-bottom:-1px; padding:var(--space-3) 0; font-family:var(--font-sans); font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--ink); cursor:pointer; white-space:nowrap; }
.fm-tab.is-on { color:var(--red); border-bottom-color:var(--red); }
.fm-round { display:grid; gap:var(--space-4); padding:var(--space-6); background:var(--surface-raised); border-top:2px solid var(--red); font-family:var(--font-sans); }
.fm-round-facts { display:flex; flex-wrap:wrap; gap:var(--space-4) var(--space-12); margin:0; }
.fm-round-facts dt { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-muted); }
.fm-round-facts dd { margin:var(--space-1) 0 0; font-family:var(--font-serif); font-size:28px; line-height:1.1; font-weight:500; color:var(--ink); }
.fm-round-facts dd.fm-round-deadline { color:var(--red); }
.fm-round-progress { display:flex; align-items:center; gap:var(--space-4); font-size:13px; color:var(--ink-body); font-variant-numeric:tabular-nums; }
.fm-round-track { flex:1; height:4px; background:var(--surface-card); }
.fm-round-fill { height:100%; background:var(--ink); }
.fm-round .fm-btn { justify-self:start; }
.fm-stepper { display:inline-flex; align-items:center; border:1px solid var(--ink-muted); border-radius:var(--radius-sm); background:var(--surface-raised); font-family:var(--font-sans); }
.fm-stepper button { width:44px; height:44px; display:grid; place-items:center; background:none; border:0; color:var(--ink); cursor:pointer; }
.fm-stepper button:disabled { color:var(--ink-muted); cursor:not-allowed; }
.fm-stepper output { min-width:64px; text-align:center; font-size:15px; font-weight:700; color:var(--ink-body); font-variant-numeric:tabular-nums; }
.fm-store { display:grid; grid-template-columns:minmax(0,1fr); gap:var(--space-4); border-bottom:1px solid var(--rule); padding-bottom:var(--space-6); font-family:var(--font-sans); }
.fm-store-img { width:100%; max-width:100%; aspect-ratio:3/2; object-fit:cover; }
.fm-store-body { display:flex; flex-direction:column; gap:var(--space-2); align-items:flex-start; }
.fm-store-name { margin:0; font-family:var(--font-serif); font-size:34px; line-height:1.1; font-weight:500; color:var(--ink); }
.fm-store-addr, .fm-store-hours { margin:0; padding:0; list-style:none; font-size:13px; line-height:20px; color:var(--ink-muted); }
.fm-store-pickup { margin:0; font-size:15px; font-weight:700; color:var(--red); }
.fm-signup { display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:var(--space-8); padding:var(--space-12) var(--space-8); background:var(--ocean); color:var(--on-ocean); font-family:var(--font-sans); }
.fm-signup-text { display:flex; flex-direction:column; gap:var(--space-3); max-width:440px; }
.fm-signup-title { margin:0; font-family:var(--font-serif); font-size:40px; line-height:1.05; font-weight:400; color:var(--on-ocean); }
.fm-signup-text p { margin:0; font-size:15px; line-height:24px; color:var(--on-ocean-muted); }
.fm-signup-form { display:flex; flex-direction:column; gap:var(--space-2); min-width:0; }
.fm-signup-form label { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--on-ocean-muted); }
.fm-signup-row { display:flex; flex-wrap:wrap; gap:var(--space-2); }
.fm-signup input { min-height:48px; min-width:0; width:220px; max-width:100%; padding:0 var(--space-4); border:1px solid var(--on-ocean-muted); border-radius:var(--radius-sm); background:transparent; color:var(--on-ocean); font:inherit; font-size:15px; }
.fm-signup input::placeholder { color:var(--on-ocean-muted); }
.fm-signup-done { margin:0; font-size:15px; color:var(--on-ocean); }
@media (prefers-reduced-motion: reduce) { .fm-link .fm-icon { transition:none; } }
