:root {
  color-scheme: light;
  --ink: #18383e;
  --muted: #536f75;
  --line: #bdd0d3;
  --paper: #f7fbfb;
  --shell: 1080px;
  font-family: -apple-system, BlinkMacSystemFont, 'Hiragino Sans', 'Yu Gothic', sans-serif;
  color: var(--ink);
  background: #fff;
  font-synthesis: none;
}
* { box-sizing: border-box; }
body { margin: 0; min-width: 280px; background: linear-gradient(180deg,#fff 0%,#f3f8f8 24%,#eaf3f4 60%,#dcebef 100%); }
button, a { -webkit-tap-highlight-color: transparent; }
button { font: inherit; cursor: pointer; }
button:disabled { cursor: wait; opacity: .6; }
button, .live-card, .news-open { touch-action: manipulation; }
a { color: inherit; text-underline-offset: 4px; }
a:hover, .text-link:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid #286b80; outline-offset: 5px; }
[hidden] { display: none !important; }
img { display: block; max-width: 100%; }
.shell { width: min(calc(100% - 64px), var(--shell)); margin-inline: auto; }
h1,h2,h3,p { margin-top: 0; }
h1,h2,h3 { font-weight: 500; line-height: 1.4; }
.skip-link { opacity: 0; pointer-events: none; position: fixed; top: 12px; left: 12px; z-index: 20; padding: 12px 20px; background: white; transform: translateY(-180%); }
.skip-link:focus { opacity: 1; pointer-events: auto; transform: none; }
.site-header { padding-top: clamp(28px,5vh,54px); padding-bottom: 26px; }
.site-header h1 { font-size: clamp(30px,4.4vw,50px); line-height: 1.25; letter-spacing: -.04em; margin: 0; }
.seal-hero { position: relative; overflow: hidden; height: clamp(370px,68svh,720px); border-radius: 24px; background: #dce8e9; isolation: isolate; }
.seal-hero > img { width: 100%; height: 100%; object-fit: cover; object-position: var(--photo-position,50% 50%); }
.hero-shade { position: absolute; inset: 0; background: linear-gradient(180deg,transparent 45%,rgba(8,22,24,.16) 63%,rgba(8,22,24,.77) 100%); pointer-events: none; }
.seal-meta { position: absolute; left: 34px; right: 34px; bottom: 80px; color: white; }
.eyebrow,.kicker { font-size: 11px; font-weight: 650; letter-spacing: .12em; margin-bottom: 10px; }
.kicker { color: var(--muted); }
.seal-meta h2 { margin: 0; font-size: clamp(25px,3.3vw,37px); line-height: 1.35; }
.scientific-name { margin: 7px 0 0; font-size: 13px; font-style: italic; }
.hero-actions { position: absolute; bottom: 24px; left: 32px; display: flex; gap: 10px; }
.glass-button,.ghost-button,.soft-button { border-radius: 99px; padding: 12px 21px; min-height: 44px; font-size: 14px; font-weight: 500; border: 1px solid var(--line); transition: background .2s; }
.glass-button { background: #f8fcfc; color: var(--ink); border-color: #f8fcfc; }
.ghost-button { color: white; background: rgba(13,35,39,.5); border-color: #afc4c8; }
.glass-button:hover { background: #e4f1f2; }
.ghost-button:hover { background: #24494f; }
.soft-button { background: rgba(255,255,255,.65); color: var(--ink); }
.soft-button:hover { background: white; }
.photo-status { position: absolute; top: 20px; left: 20px; padding: 9px 13px; border-radius: 8px; background: #f5faf9; color: var(--ink); font-size: 13px; }
.photo-caption { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 15px; font-size: 12px; color: var(--muted); }
.text-link { color: var(--muted); background: none; border: 0; padding: 12px 2px; min-height: 44px; font-size: 13px; text-decoration: underline; text-underline-offset: 5px; }
.species-map-card { margin-top: 15px; border-top: 1px solid var(--line); padding-top: 28px; }
.map-copy { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; margin-bottom: 18px; }
.map-copy h3 { font-size: 24px; margin: 0; flex-shrink: 0; }
.map-copy p { margin: 0; font-size: 14px; color: var(--muted); line-height: 1.9; text-align: right; }
.map-stage,.detail-map-stage { position: relative; overflow: hidden; aspect-ratio: 2/1; background: #e4f0f2; border-radius: 20px; }
.map-base,.range-overlay,.detail-map-stage>img,.detail-map-stage>svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.sea-label text { fill: #5b777e; font-size: 18px; font-weight: 500; paint-order: stroke; stroke: #e4f0f2; stroke-width: 5px; stroke-linejoin: round; }
.sea-label.active text { fill: #183e49; font-size: 22px; font-weight: 650; }
.sea-label.active line { stroke: #466d76; stroke-width: 2; }
.geo-anchor { fill: #3c6068; font-size: 18px; paint-order: stroke; stroke: #e4f0f2; stroke-width: 4px; }
.live-section { margin-top: 72px; }
.section { margin-top: clamp(72px,9vw,112px); }
.section-head { display: flex; gap: 16px; justify-content: space-between; align-items: end; margin-bottom: 23px; }
.section-head h2 { font-size: clamp(25px,3.5vw,34px); letter-spacing: -.025em; margin: 0; }
.live-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.live-card { text-decoration: none; border: 1px solid var(--line); border-radius: 18px; padding: 24px; background: rgba(255,255,255,.43); transition: background .2s; }
.live-card:hover { background: var(--paper); }
.live-badge { display: block; font-size: 12px; color: var(--muted); margin-bottom: 16px; }
.live-card strong { font-size: 19px; font-weight: 500; }
.live-card small { display: block; font-size: 13px; color: var(--muted); margin-top: 14px; }
.quiet-note,.section-note { font-size: 13px; color: var(--muted); line-height: 1.9; margin-top: 14px; }
.news-list { border-top: 1px solid var(--line); }
.news-card { padding: 26px 0; display: grid; grid-template-columns: 112px 1fr; gap: 22px; border-bottom: 1px solid var(--line); }
.news-meta { font-size: 12px; line-height: 1.7; color: var(--muted); overflow-wrap: anywhere; }
.news-body h3 { font-size: 21px; line-height: 1.6; margin-bottom: 8px; }
.news-body p { font-size: 14px; color: var(--muted); line-height: 1.9; margin: 0; }
.news-open { display: inline-flex; align-items: center; min-height: 44px; margin-top: 8px; font-size: 13px; }
.news-footer { margin-top: 20px; text-align: center; }
.news-empty { padding: 28px 0 0; }
.news-empty h3 { font-size: 19px; margin-bottom: 8px; }
.news-empty p { font-size: 14px; color: var(--muted); line-height: 1.9; }
.source-links { display: flex; gap: 10px 28px; flex-wrap: wrap; }
.source-links a { min-height: 44px; display: inline-flex; align-items: center; font-size: 14px; }
.fact-card { display: grid; grid-template-columns: 1fr 1fr; overflow: hidden; border-radius: 24px; background: #f5fafa; border: 1px solid var(--line); }
.fact-visual { background: #dce8e9; min-height: 380px; }
.fact-visual img { width: 100%; height: 100%; object-fit: cover; }
.fact-copy { align-self: center; padding: 46px; }
.fact-copy h2 { font-size: 18px; }
.fact-main { font-size: clamp(25px,3vw,32px); font-weight: 500; line-height: 1.6; margin: 22px 0 28px; }
.fact-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 18px; }
footer { padding-top: 90px; padding-bottom: calc(40px + env(safe-area-inset-bottom)); text-align: center; color: var(--muted); font-size: 14px; }
footer p { margin-bottom: 8px; }
.detail-dialog { width: min(calc(100% - 32px),760px); max-height: 88dvh; padding: 0; border: 0; border-radius: 24px; color: var(--ink); background: #f8fbfb; box-shadow: 0 25px 100px #17393e40; }
.detail-dialog::backdrop { background: #12292e80; backdrop-filter: blur(5px); }
.detail-head { position: sticky; top: 0; z-index: 2; display: flex; justify-content: space-between; align-items: center; background: #f8fbfb; padding: 14px 24px 8px; }
.detail-head p { margin: 0; }
.detail-head button { width: 44px; height: 44px; background: #e8f1f2; color: var(--ink); border: 0; border-radius: 50%; font-size: 25px; }
.detail-sheet { padding: 8px 34px 32px; }
.detail-sheet>h2 { font-size: clamp(26px,4vw,36px); margin-bottom: 8px; }
.detail-subtitle { font-size: 14px; color: var(--muted); font-style: italic; }
.detail-body { font-size: 15px; line-height: 1.95; overflow-wrap: anywhere; }
.detail-lead { font-size: 17px; }
.detail-stats { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin: 25px 0; }
.stat { padding: 14px; background: #eaf3f4; border-radius: 12px; }
.stat span { display: block; font-size: 12px; color: var(--muted); }
.stat strong { display: block; font-size: 14px; font-weight: 500; margin-top: 6px; }
.detail-section { border-top: 1px solid var(--line); padding-top: 20px; margin-top: 24px; }
.detail-section h3 { font-size: 19px; margin-bottom: 8px; }
.detail-note { color: var(--muted); font-size: 13px; }
.detail-links { display: flex; flex-wrap: wrap; gap: 8px 24px; border-top: 1px solid var(--line); padding-top: 12px; margin-top: 20px; }
.detail-links a { display: inline-flex; align-items: center; min-height: 44px; font-size: 14px; }
.tip-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 22px 0; }
.tip-compare>div { border: 1px solid var(--line); border-radius: 12px; padding: 18px; }
.tip-compare span { font-size: 12px; color: var(--muted); display: block; }
.tip-compare strong { font-weight: 500; display: block; margin: 7px 0; }
.tip-compare p { margin: 0; font-size: 14px; }
.tip-callout { border-left: 3px solid #75969d; padding: 12px 18px; background: #eaf3f4; font-size: 14px; }
.credit-list { margin: 0; padding-left: 20px; }
.credit-list li { padding-block: 12px; border-bottom: 1px solid var(--line); }
@media(max-width:700px) {
  .shell { width: calc(100% - 32px); }
  .site-header { padding-top: 32px; padding-bottom: 24px; }
  .site-header h1 { font-size: clamp(27px,7.5vw,38px); }
  .seal-hero { height: auto; min-height: 0; border-radius: 18px; }
  .seal-hero>img { height: auto; width: 100%; aspect-ratio: 4/3; object-fit: contain; background: #dce8e9; }
  .hero-shade { display: none; }
  .seal-meta { position: static; padding: 22px 22px 0; color: var(--ink); background: #f1f7f7; }
  .seal-meta h2 { font-size: clamp(23px,6.4vw,29px); }
  .hero-actions { position: static; padding: 20px 22px 22px; background: #f1f7f7; flex-wrap: wrap; }
  .ghost-button { color: var(--ink); border-color: #96b1b6; background: transparent; }
  .glass-button { background: #234f59; color: white; border-color: #234f59; }
  .glass-button:hover,.ghost-button:hover { background: #d7e9ec; color: var(--ink); }
  .map-copy { display: block; }
  .map-copy p { text-align: left; margin-top: 12px; font-size: 14px; }
  .map-stage { border-radius: 14px; }
  .sea-label:not(.active),.geo-anchor { display: none; }
  .sea-label.active text { font-size: 24px; }
  .live-cards { grid-template-columns: 1fr; }
  .live-card { padding: 23px; }
  .live-section { margin-top: 56px; }
  .news-card { grid-template-columns: 1fr; gap: 10px; }
  .news-meta { display: flex; gap: 12px; flex-wrap: wrap; }
  .news-meta p { margin: 0; }
  .news-body h3 { font-size: 20px; }
  .fact-card { grid-template-columns: 1fr; border-radius: 18px; }
  .fact-visual { min-height: 0; }
  .fact-visual img { aspect-ratio: 4/3; object-fit: contain; }
  .fact-copy { padding: 30px 25px; }
  .fact-main { font-size: 27px; }
  .detail-dialog { width: calc(100% - 20px); border-radius: 20px; max-height: 90dvh; }
  .detail-sheet { padding: 8px 22px 28px; }
  .detail-head { padding-inline: 16px; }
  .detail-stats { grid-template-columns: 1fr 1fr; }
  .tip-compare { grid-template-columns: 1fr; }
  .photo-caption { align-items: start; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; } }
/* Geographic labels are individually composed for each species, without range circles. */
#seaNames { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.sea-name { fill: #254c57; font-size: 25px; font-weight: 500; paint-order: stroke; stroke: #e4f0f2; stroke-width: 5px; stroke-linejoin: round; }
@media(max-width:700px) { .sea-name { font-size: 40px; } .geo-anchor { display: block; font-size: 29px; } }
/* Sea outlines come from Natural Earth, rather than schematic range circles. */
.map-stage { background: #e4f0f2; }
#seaMap { display: block; width: 100%; height: 100%; aspect-ratio: 2/1; }
.sea-region { fill: #579daa; fill-opacity: .28; stroke: #4e8996; stroke-opacity: .65; stroke-width: .7; cursor: pointer; }
.sea-region.is-selected { fill-opacity: .47; stroke-opacity: .9; }
.sea-region.is-muted { fill-opacity: .08; stroke-opacity: .15; }
.sea-callout { cursor: pointer; }
.sea-callout path { fill: none; stroke: #376b78; stroke-width: 1; opacity: .65; }
.sea-callout circle { fill: #2f6471; stroke: #f1f7f7; stroke-width: 1; }
.sea-focus-label text { fill: #183e49; paint-order: stroke; stroke: #d3e7eb; font-weight: 600; }
.japan-reference circle { fill: #4c6970; }
.japan-reference text { fill: #49676f; paint-order: stroke; stroke: #e4f0f2; }
.sea-controls { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.sea-controls button { min-height: 44px; padding: 9px 16px; border-radius: 99px; border: 1px solid #a7c3c9; background: transparent; color: #345c67; font-size: 14px; }
.sea-controls button[aria-pressed="true"] { background: #2b5f6c; border-color: #2b5f6c; color: white; }
.sea-controls button:hover { box-shadow: inset 0 0 0 1px #497c89; }
.map-note { margin: 12px 0 0; color: #52717a; font-size: 12px; line-height: 1.8; }
@media(max-width:700px) { .sea-controls { gap: 6px; } .sea-controls button { padding: 8px 13px; } .map-note { font-size: 11px; } }

.sea-region { stroke: none; }
@media(max-width:700px) { #seaMap { --sea-focus-size: 42px; --japan-size: 32px; } }
