/* Shared reading scale and the focused maker / tool experiences. */
:root {
  --bg:#f7f8fa; --paper:#fff; --paper-2:#edf0f3; --ink:#20252b;
  --muted:#58626d; --line:#d6dce2; --line-strong:#a9b4bf;
  --radius:8px; --radius-sm:6px;
}
:root[data-theme="dark"] {
  --bg:#111417; --paper:#191d22; --paper-2:#222830; --ink:#f1f3f5;
  --muted:#b3bdc8; --line:#37414d; --line-strong:#667382;
}
body { background:var(--bg); font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; line-height:1.6; }
body * { letter-spacing:0; }
h1,h2,h3 { line-height:1.2; }
.page,.article-page { padding:32px; }
.collection-hero { padding:16px 0 32px; max-width:920px; }
.collection-hero h1,.article-hero h1,.map-intro h1 { font-size:42px; line-height:1.15; letter-spacing:0; }
.collection-hero p,.article-hero .summary { font-size:18px; line-height:1.6; }
.page h2,.article-body h2 { font-size:28px; line-height:1.25; }
.page h3,.article-body h3 { font-size:21px; line-height:1.35; }
.kicker,.eyebrow { font-size:12px; line-height:1.5; }
.section { margin-top:44px; }
.button { border-radius:6px; min-height:44px; font-size:14px; box-shadow:none; }
button { cursor:pointer; }
button:disabled { opacity:.45; cursor:default; }
[hidden] { display:none !important; }
:focus-visible { outline:3px solid #56aaf4; outline-offset:3px; }
input,select,textarea { font-size:16px; }
.field-label input,.field-label textarea,.field-label select { font-size:16px; }
.copy-fallback { display:grid; gap:8px; width:100%; font-size:16px; }
.copy-fallback input { width:100%; min-width:0; padding:12px; border:1px solid var(--line-strong); border-radius:6px; background:var(--paper); }
dialog.search-dialog,dialog.suggestion-dialog {
  inset:var(--modal-top,0px) 0 auto; margin:0; width:100%; max-width:none;
  height:var(--modal-height,100dvh); max-height:none; border:0; color:var(--ink);
  padding:clamp(12px,4vh,40px) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));
  overflow:hidden; overscroll-behavior:contain;
}
dialog::backdrop { background:transparent; }
.search-panel,.suggestion-panel { display:flex; flex-direction:column; max-height:100%; min-height:0; }
.search-panel>header,.suggestion-panel>header { flex-shrink:0; }
.search-panel input { min-width:0; min-height:44px; }
.search-panel .icon-button { flex-shrink:0; width:44px; height:44px; }
.search-results { min-height:0; max-height:none; overflow:auto; overscroll-behavior:contain; }
.maker-suggestion-form { min-height:0; overflow:auto; overscroll-behavior:contain; }
.nav-tabs a { font-size:14px; min-height:44px; border-radius:6px; }
.header-inner { gap:20px; }
.brand { flex-shrink:0; }
.brand-logo { width:220px; }
.article-card { box-shadow:none; }
.article-card h3 { font-size:21px; line-height:1.3; }
.article-card p { font-size:16px; }
.article-card img { height:200px; object-fit:contain; background:#fff; }
.card-credit { padding:6px 14px; font-size:11px; color:var(--muted); border-bottom:1px solid var(--line); }
.article-card .card-credit a { text-decoration:underline; }
.home-paths { display:grid; grid-template-columns:1fr 1fr; gap:40px; border-block:1px solid var(--line); padding:28px 0; }
.home-paths > a { padding:8px 0; }
.home-paths h2 { margin:12px 0; }
.home-paths p { color:var(--muted); max-width:48ch; margin-bottom:18px; }
.home-about { margin-top:44px; padding-block:28px; border-top:1px solid var(--line); max-width:75ch; }
.home-about p { margin:14px 0; }
.blog-controls { display:grid; grid-template-columns:2fr 1fr; gap:20px; }
.blog-controls label,.map-controls label { display:grid; gap:6px; font-size:13px; font-weight:650; min-width:0; }
.blog-controls input,.blog-controls select,.map-controls input,.map-controls select { width:100%; min-height:46px; border:1px solid var(--line-strong); border-radius:6px; background:var(--paper); padding:10px 12px; }
.note-row { grid-template-columns:minmax(0,1fr) 96px; padding:22px 0; }
.note-row .status-pill,.note-row>.note-meta:last-child { display:none; }
.notebook { border:0; border-radius:0; box-shadow:none; background:transparent; }
.note-title { font-size:19px; line-height:1.4; letter-spacing:0; }
.note-summary { font-size:16px; }
.article-layout { grid-template-columns:260px minmax(0,1fr); gap:40px; }
.article-body { font-size:18px; line-height:1.8; }
.article-body img { height:auto; }
.article-body h2 { margin-top:34px; }
.article-sidebar { position:static; }
.aside-card { box-shadow:none; background:transparent; border:0; border-bottom:1px solid var(--line); padding:16px 0; }
.aside-card h3 { font-size:18px; }
.article-body .pullquote { font-size:22px; line-height:1.5; }
.article-body .decision-box { border-radius:0; background:transparent; border:0; border-block:1px solid var(--line); }
.site-engagement { border-top:1px solid var(--line); margin-top:36px; }
.engagement-card { border:0; background:transparent; box-shadow:none; padding:16px 0; }
.engagement-card h2 { font-size:24px; }
.engagement-inner { gap:48px; }
.tool-finder-page { max-width:1180px; }
.finder { border:0; background:transparent; padding:0; box-shadow:none; }
.finder-grid { grid-template-columns:330px minmax(0,1fr); gap:48px; align-items:start; }
.finder-form { gap:24px; align-content:start; }
.finder-group { border:0; margin:0; padding:0; min-width:0; }
.finder-group legend { font-size:17px; margin-bottom:12px; font-weight:700; }
.finder-options { gap:6px; }
.finder-option { border-radius:6px; min-height:46px; font-size:15px; padding:10px 12px; background:var(--paper); }
.finder-option:has(input:checked) { border-color:var(--accent); background:color-mix(in srgb,var(--accent) 9%,var(--paper)); }
.finder-option input { accent-color:var(--accent); flex-shrink:0; }
.finder-result { background:transparent; border:0; border-left:1px solid var(--line); padding:0 0 0 36px; min-height:0; scroll-margin-top:100px; }
.finder-result h2 { font-size:28px; margin:8px 0 16px; }
.finder-result h3 { font-size:20px; line-height:1.4; }
.tool-pick { padding:22px 0; border-bottom:1px solid var(--line); }
.tool-pick h3 { margin:6px 0; font-size:25px; }
.tool-pick .button { margin-top:18px; }
.tool-photo { margin:18px 0; }
.tool-photo img { width:100%; height:140px; object-fit:contain; background:#fff; border-radius:6px; padding:12px; }
.tool-photo figcaption { font-size:11px; color:var(--muted); margin-top:5px; }
.tool-photo a { text-decoration:underline; }
.tool-source { display:block; margin-top:12px; font-size:13px; color:var(--muted); text-decoration:underline; }
.tool-alternative { border-bottom:1px solid var(--line); padding:18px 0; }
summary { cursor:pointer; min-height:32px; font-weight:650; }
.tool-care { margin:24px 0; }
.tool-care h3 { margin-top:20px; }
.tool-reading { margin-top:24px; }
.tool-reading a { display:block; padding:10px 0; text-decoration:underline; text-underline-offset:3px; }
.affiliate-note { color:var(--muted); font-size:13px; border-top:1px solid var(--line); margin-top:32px; padding-top:20px; }
.affiliate-note a { text-decoration:underline; }
.maker-map-page { max-width:1560px; }
.map-intro { display:flex; justify-content:space-between; align-items:center; gap:32px; padding:8px 0 24px; }
.map-intro h1 { margin:6px 0 10px; }
.map-intro p { max-width:70ch; color:var(--muted); }
.map-intro>.button { flex-shrink:0; }
.map-controls { display:grid; grid-template-columns:1.5fr 1fr .8fr auto; gap:16px; align-items:end; padding:18px 0; border-top:1px solid var(--line); }
.map-view-switch { display:flex; border:1px solid var(--line-strong); border-radius:6px; padding:3px; height:46px; }
.map-view-switch button { border:0; background:transparent; padding:6px 14px; border-radius:4px; font-size:14px; font-weight:650; }
.map-view-switch button[aria-pressed="true"] { background:var(--ink); color:var(--bg); }
.map-workspace { display:grid; grid-template-columns:minmax(0,1fr) 340px; align-items:start; gap:28px; border-top:1px solid var(--line); }
.map-main { min-width:0; }
.maker-explorer:not(.has-selection) .map-workspace { grid-template-columns:1fr; }
.maker-explorer:not(.has-selection) .maker-profile { display:none; }
.map-toolbar { display:flex; align-items:center; gap:16px; min-height:70px; padding:12px 0; }
.map-toolbar>span { flex:1; font-size:13px; color:var(--muted); }
.map-zoom { display:flex; gap:4px; }
.map-zoom button { width:40px; height:40px; border:1px solid var(--line); border-radius:4px; background:var(--paper); font-size:22px; }
.map-stage { position:relative; isolation:isolate; overflow:hidden; height:780px; width:100%; background:#e2edf0; border:1px solid var(--line-strong); border-radius:6px; }
[data-theme="dark"] .map-stage { background:#111c21; }
.map-stage[data-view="network"] { background:var(--paper); }
.map-stage[data-view="network"] :is(.map-landscape,.map-north,.map-attribution,.map-pins) { display:none; }
.map-stage .maker-canvas { position:absolute; inset:0; width:100%; height:100%; background:transparent; border:0; border-radius:0; z-index:2; }
.maker-canvas { height:780px; width:100%; }
.maker-canvas:focus-visible { outline:3px solid var(--ink); outline-offset:-4px; }
.map-landscape { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; z-index:1; }
.map-coastline { fill:#c2d3c4; stroke:#6f8e7f; stroke-width:1.3; vector-effect:non-scaling-stroke; }
[data-theme="dark"] .map-coastline { fill:#30473e; stroke:#739689; }
.map-pins { position:absolute; inset:0; pointer-events:none; z-index:3; }
.map-region-pin { position:absolute; transform:translate(-50%,calc(-100% - 6px)); width:112px; min-height:48px; padding:6px 8px; border:2px solid var(--pin-color); border-radius:6px; background:var(--paper); color:var(--ink); pointer-events:auto; box-shadow:0 3px 12px #0003; text-align:left; }
.map-region-pin::before { content:""; position:absolute; bottom:-10px; left:calc(50% - 4px); width:8px; height:8px; border-radius:50%; background:var(--pin-color); }
.map-region-pin strong { display:block; font-size:14px; line-height:1.2; overflow-wrap:anywhere; }
.map-region-pin span { display:block; font-size:11px; line-height:1.3; margin-top:3px; color:var(--muted); }
.map-region-pin:hover,.map-region-pin:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }
.map-region-picker { position:absolute; z-index:5; top:16px; left:16px; width:260px; max-width:calc(100% - 32px); padding:16px; border:1px solid var(--line-strong); border-radius:6px; background:var(--paper); box-shadow:0 6px 24px #0004; }
.map-region-picker>strong { display:block; padding-right:36px; font-size:14px; }
.map-picker-close { position:absolute; right:4px; top:4px; width:44px; height:44px; border:0; background:transparent; font-size:24px; }
.map-picker-list { display:grid; gap:4px; max-height:260px; overflow:auto; margin-top:12px; }
.map-picker-list button { min-height:46px; background:var(--paper-2); border:0; border-left:3px solid var(--pin-color); padding:10px; text-align:left; font-size:14px; }
.map-picker-list button:hover { background:var(--bg); }
.map-north { position:absolute; top:14px; right:16px; z-index:4; font:700 14px system-ui; color:var(--ink); background:var(--paper); padding:8px; border-radius:4px; pointer-events:none; }
.map-attribution { position:absolute; bottom:0; right:0; z-index:4; margin:0; padding:5px 10px; font-size:11px; color:var(--ink); background:var(--paper); }
.map-attribution a { text-decoration:underline; }
.map-location-note { font-size:12px; color:var(--muted); margin:14px 0; }
.region-picker { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; max-height:650px; overflow:auto; padding:2px 8px 8px 2px; }
.region-picker button { background:var(--paper); text-align:left; border:1px solid var(--line); border-left:4px solid var(--region-color); border-radius:6px; padding:16px; display:grid; gap:4px; min-width:0; }
.region-picker button:hover { background:var(--paper-2); }
.region-picker strong { font-size:18px; line-height:1.35; }
.region-picker span { font-size:14px; color:var(--muted); }
.region-picker small { font-size:12px; color:var(--muted); }
.maker-directory { max-height:650px; overflow:auto; scrollbar-width:thin; }
.directory-row { width:100%; text-align:left; display:grid; grid-template-columns:1.25fr 1fr .8fr; gap:12px; align-items:center; min-height:66px; padding:14px 16px; border:0; border-bottom:1px solid var(--line); border-left:4px solid var(--role-color); background:transparent; }
.directory-row:hover,.directory-row.selected { background:var(--paper-2); }
.directory-row strong { font-size:16px; }
.directory-row span,.directory-row small { font-size:14px; color:var(--muted); }
.maker-profile { min-width:0; padding:24px 0 24px 24px; border-left:1px solid var(--line); max-height:810px; overflow:auto; scroll-margin-top:100px; }
.maker-profile h2 { font-size:28px; margin:10px 0 14px; overflow-wrap:anywhere; }
.maker-profile h3 { font-size:17px; margin:24px 0 12px; }
.maker-profile p { margin:14px 0; }
.maker-profile ul { padding-left:20px; color:var(--muted); }
.profile-role { border-left:4px solid var(--role-color); padding-left:10px; font-weight:650; }
.profile-alias,.evidence-note { font-size:13px; color:var(--muted); }
.profile-sources { margin:22px 0; }
.profile-sources a { display:block; font-size:14px; padding:8px 0; text-decoration:underline; overflow-wrap:anywhere; }
.profile-actions { display:grid; gap:10px; margin:20px 0; }
.relationship-row { width:100%; display:grid; gap:6px; text-align:left; border:0; border-left:3px solid var(--relation-color); border-bottom:1px solid var(--line); padding:14px 12px; background:transparent; margin-bottom:8px; }
.relationship-row:hover,.relationship-row.selected { background:var(--paper-2); }
.relationship-row strong { font-size:14px; }
.relationship-row span { font-size:14px; }
.relationship-row small { font-size:12px; color:var(--muted); }
.role-glossary dt { margin-top:16px; font-weight:650; }
.role-glossary dd { margin:4px 0 0; color:var(--muted); }
.map-key { border-block:1px solid var(--line); padding:14px 0; margin-top:18px; font-size:14px; }
.map-key p { color:var(--muted); margin:16px 0; }
.map-legend { display:flex; flex-wrap:wrap; gap:12px 20px; margin-top:14px; }
.map-legend span::before { content:""; display:inline-block; width:18px; height:4px; background:var(--key-color); vertical-align:middle; margin-right:7px; }
.map-role-key { display:flex; flex-wrap:wrap; align-items:center; gap:12px 22px; padding:14px 0; border-top:1px solid var(--line); font-size:14px; }
.map-role-key .map-legend { margin:0; gap:10px 18px; }
.map-key-heading { font-weight:700; }
.map-role-key .map-legend span { display:flex; align-items:center; }
.map-role-key .map-legend span::before { width:14px; height:14px; border:2px solid var(--key-color); border-radius:3px; background:transparent; flex-shrink:0; }
.map-empty { padding:32px 16px; }
.map-load-status:empty { display:none; }
.mobile-relations { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:12px 0; }
.mobile-relations span { font-size:13px; }
.geography-section { margin-top:28px; padding:20px 0; border-top:1px solid var(--line); }
.geography-layout { display:grid; grid-template-columns:1.4fr 1fr; gap:24px; margin-top:20px; align-items:start; }
[data-japan-map] { width:100%; background:var(--paper); border:1px solid var(--line); border-radius:6px; }
.japan-land { fill:var(--paper-2); stroke:var(--line-strong); stroke-width:.8; }
.geo-pin { cursor:pointer; }
.geo-selected text { fill:var(--ink); font:700 20px system-ui; paint-order:stroke; stroke:var(--paper); stroke-width:5px; stroke-linejoin:round; }
.geography-list { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.geography-list button { text-align:left; border:1px solid var(--line); border-left:3px solid var(--region-color); border-radius:4px; background:var(--paper); padding:10px; }
.geography-list button.selected { background:var(--paper-2); border-color:var(--region-color); }
.geography-list small { display:block; color:var(--muted); }
.image-credit { color:var(--muted); font-size:12px; margin-top:12px; }
.image-credit a { text-decoration:underline; }
@media (max-width:1100px) {
  .map-workspace { grid-template-columns:minmax(0,1fr) 290px; gap:16px; }
  .map-controls { grid-template-columns:1fr 1fr; }
  .region-picker { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .finder-grid { grid-template-columns:290px minmax(0,1fr); gap:24px; }
  .article-layout { grid-template-columns:220px minmax(0,1fr); gap:24px; }
}
@media (max-width:760px) {
  .page,.article-page { padding:20px 16px; }
  .collection-hero { padding:12px 0 24px; }
  .collection-hero h1,.article-hero h1,.map-intro h1 { font-size:32px; line-height:1.2; }
  .collection-hero p,.article-hero .summary { font-size:17px; margin-top:12px; }
  .page h2,.article-body h2 { font-size:25px; }
  .brand-logo { width:160px; }
  .header-inner { padding:10px 16px; gap:12px; }
  .header-actions { gap:4px; }
  .header-actions .icon-button { width:44px; height:44px; }
  .header-inner { grid-template-columns:minmax(0,1fr) auto; }
  .header-actions { grid-column:2; }
  .home-paths { grid-template-columns:1fr; gap:24px; }
  .home-paths>a+a { border-top:1px solid var(--line); padding-top:24px; }
  .article-card-grid { grid-template-columns:1fr; gap:20px; }
  .article-card img { height:190px; }
  .section-head { align-items:center; flex-wrap:wrap; gap:12px; }
  .blog-controls { grid-template-columns:1fr; }
  .note-row { grid-template-columns:1fr; gap:8px; }
  .note-row .note-meta { font-weight:400; }
  .article-layout { display:flex; flex-direction:column; }
  .article-body { order:0; width:100%; min-width:0; font-size:17px; }
  .article-sidebar { order:1; width:100%; }
  .article-body .decision-box { display:block; }
  .article-body .decision-box>div { padding:12px 0; }
  .engagement-inner { grid-template-columns:1fr; gap:28px; padding:24px 16px; }
  .finder-grid { grid-template-columns:1fr; gap:28px; }
  .finder-options { grid-template-columns:1fr; }
  .finder-result { border-left:0; border-top:1px solid var(--line); padding:24px 0 0; }
  .tool-pick h3 { font-size:23px; }
  .map-intro { display:block; padding:8px 0 18px; }
  .map-intro>.button { margin-top:16px; }
  .map-controls { gap:12px; grid-template-columns:1fr 1fr; }
  .map-controls>label:first-child { grid-column:1/-1; }
  .map-view-switch { grid-column:1/-1; width:100%; }
  .map-view-switch button { flex:1; }
  .map-workspace { grid-template-columns:1fr; gap:0; }
  .map-toolbar { gap:10px; flex-wrap:wrap; }
  .map-toolbar>span { font-size:12px; }
  .map-toolbar .button { font-size:13px; padding:8px 10px; }
  .map-zoom { width:100%; justify-content:flex-end; }
  .map-zoom button { width:44px; height:44px; }
  .region-picker { max-height:540px; gap:8px; }
  .region-picker button { padding:12px; }
  .region-picker strong { font-size:16px; }
  .maker-directory { max-height:430px; overscroll-behavior-y:auto; }
  .directory-row { grid-template-columns:1fr auto; padding:14px 12px; gap:4px 8px; }
  .directory-row strong { grid-column:1/-1; }
  .directory-row span,.directory-row small { font-size:13px; }
  .map-stage,.maker-canvas { height:580px; }
  .maker-profile { padding:24px 0; border-left:0; border-top:1px solid var(--line); max-height:none; overflow:visible; }
  .maker-profile h2 { font-size:27px; }
  .geography-layout { grid-template-columns:1fr; }
  .geography-list { max-height:320px; overflow:auto; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none !important; transition:none !important; }
}

/* One decision at a time, with a single recommendation screen. */
.finder-wizard { max-width:760px; margin-inline:auto; }
.finder-wizard [hidden] { display:none !important; }
.finder-wizard .finder-form { padding:clamp(18px,4vw,36px); border:1px solid var(--line); border-radius:12px; background:var(--paper); gap:22px; }
.finder-progress { display:grid; gap:10px; font-size:13px; color:var(--muted); }
.finder-progress progress { width:100%; height:5px; border:0; border-radius:4px; overflow:hidden; accent-color:var(--accent); background:var(--line); }
.finder-progress progress::-webkit-progress-bar { background:var(--line); }
.finder-progress progress::-webkit-progress-value { background:var(--accent); }
.finder-progress progress::-moz-progress-bar { background:var(--accent); }
.finder-wizard .finder-group legend { font-size:clamp(23px,4vw,30px); line-height:1.2; letter-spacing:-.025em; scroll-margin-top:100px; }
.finder-wizard .finder-group p { color:var(--muted); margin:0 0 20px; }
.finder-wizard .finder-options { gap:10px; grid-template-columns:1fr; }
.finder-wizard .finder-option { padding:16px; gap:14px; min-height:72px; font-size:16px; }
.finder-wizard .finder-option:focus-within { outline:2px solid var(--accent); outline-offset:3px; }
.finder-wizard .finder-option input { width:18px; height:18px; margin:0; }
.finder-wizard .finder-option strong { display:block; font-size:16px; font-weight:650; }
.finder-wizard .finder-option small { display:block; font-size:14px; color:var(--muted); margin-top:4px; line-height:1.45; }
.finder-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:12px; }
.finder-actions .button { min-height:48px; white-space:normal; }
.finder-actions [data-finder-next] { margin-left:auto; }
.finder-error { font-weight:650; margin:0; }
.finder-reassurance { font-size:12px; color:var(--muted); margin:0; }
.finder-wizard .finder-result { padding:0; border:0; }
.finder-wizard .finder-result h2 { scroll-margin-top:100px; }
.finder-summary { padding:14px 0; border-block:1px solid var(--line); font-size:14px; }
.finder-wizard .finder-reason { color:var(--ink); }
.finder-retailers { display:flex; flex-wrap:wrap; gap:20px; margin-top:18px; }
.finder-retailer { flex:1 1 220px; min-width:0; }
.finder-retailer .button { width:100%; margin:0; min-height:48px; white-space:normal; }
.finder-retailer small { display:block; margin-top:8px; font-size:12px; line-height:1.5; color:var(--muted); }
@media (max-width:400px) { .finder-wizard .finder-option { padding:12px; } .finder-actions .button { flex:1 1 auto; } }
@media (hover:none) {
  .finder-wizard .button.primary:hover { background:var(--ink); border-color:var(--ink); color:var(--bg); }
}
.finder-selection { padding:0 0 18px; border-bottom:1px solid var(--line); }
.finder-selection strong { display:block; margin-top:7px; font-size:17px; line-height:1.4; }
.finder-kit-overview { padding:18px; border:1px solid var(--line); border-radius:8px; margin-top:24px; }
.finder-kit-overview h3 { margin:0 0 12px; }
.finder-kit-overview ul { margin:0; padding-left:20px; }
.finder-kit-overview a { display:block; min-height:44px; padding:10px 0; text-decoration:underline; text-underline-offset:3px; }
.finder-wizard .tool-pick { scroll-margin-top:90px; }
.finder-selection { scroll-margin-top:100px; }
