/* Distill · Sky map (public/map.js), drawn inside the app's .map-host. Every class is prefixed smap- (the app owns .sky*).
   Colours come from style.css tokens; only the gold ring is local. */
.smap{--smap-gold:#A06E00;--smap-label:var(--muted);--smap-halo:0 0 1px var(--bg),0 0 3px var(--bg),0 0 7px var(--bg),0 0 14px var(--bg);position:absolute;inset:0;overflow:hidden;background:var(--bg);color:var(--ink);isolation:isolate;font-size:15px;line-height:1.4;-webkit-tap-highlight-color:transparent}
.smap[data-mode="dark"]{--smap-gold:#EDC567}
.smap :focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.smap :where(svg){width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.smap :where(button){font:inherit;color:inherit;border:0;background:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.smap-sr,.smap:not(.smap-fallback) .smap-index{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;clip-path:inset(50%);overflow:hidden;white-space:nowrap}
.smap-probe,.smap-probes{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;visibility:hidden}

/* Stage: the canvas and its projected labels own every gesture inside them. */
.smap-stage{position:absolute;inset:0;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain}
.smap-canvas{display:block;width:100%;height:100%;opacity:0;transition:opacity 480ms var(--ease,ease)}
.smap-ready .smap-canvas{opacity:1}
.smap-canvas:focus{outline:none}
.smap-canvas:focus-visible{outline:2px solid var(--focus);outline-offset:-6px;border-radius:24px}
.smap-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden;contain:strict}
.smap-domain,.smap-area{position:absolute;left:0;top:0;white-space:nowrap;will-change:transform,opacity;visibility:hidden}
.smap-domain{pointer-events:auto;padding:12px 10px;font-size:10.5px;line-height:1;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--smap-label);text-shadow:var(--smap-halo);transition:color 200ms var(--ease,ease),opacity 200ms var(--ease,ease)}
.smap-domain[data-state="focus"]{color:var(--ink)}
@media (hover:hover) and (pointer:fine){.smap-domain:hover{color:var(--ink)}}
.smap-area{font-size:11.5px;line-height:1;font-weight:620;letter-spacing:.005em;color:var(--accent);text-shadow:var(--smap-halo);transition:opacity 180ms var(--ease,ease)}
.smap[data-mode="dark"] .smap-area{color:var(--bright)}
.smap-area[data-state="focus"]{font-weight:700}
.smap-kbd-ring{position:absolute;left:0;top:0;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;box-shadow:0 0 0 2px var(--focus),0 0 0 6px color-mix(in srgb,var(--focus) 22%,transparent);pointer-events:none}
.smap-kbd-ring[hidden]{display:none}

/* Atlas lettering in the light theme: the same labels, engraved. */
.smap[data-mode="light"] .smap-domain{font-family:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;font-style:italic;font-weight:600;font-size:12.5px;letter-spacing:.11em;color:color-mix(in srgb,var(--ink) 72%,var(--bg))}
.smap[data-mode="light"] .smap-domain[data-state="focus"]{color:var(--ink)}

/* Chrome */
.smap-top{position:absolute;inset:0 0 auto;z-index:3;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:calc(10px + env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) 24px max(16px,env(safe-area-inset-left));pointer-events:none;background:linear-gradient(var(--bg) 40%,color-mix(in srgb,var(--bg) 0%,transparent))}
.smap-top>*{pointer-events:auto}
.smap-heading{min-width:0;padding-top:4px}
.smap-title{margin:0;font-size:22px;line-height:1.15;letter-spacing:-.4px;font-weight:700}
.smap-sub{margin:2px 0 0;font-size:12px;line-height:1.35;color:var(--muted);font-variant-numeric:tabular-nums}
.smap-tools{display:flex;align-items:center;gap:4px;flex-shrink:0}
.smap-pill{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 13px 0 11px;margin:4px 0;border-radius:999px;background:var(--surface);box-shadow:var(--shadow),inset 0 0 0 1px var(--line);font-size:13px;font-weight:620;white-space:nowrap;transition:transform 130ms var(--ease,ease),opacity 200ms var(--ease,ease)}
.smap-pill svg{width:16px;height:16px;stroke-width:2.2;color:var(--muted)}
.smap-icon-btn{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;transition:transform 130ms var(--ease,ease)}
.smap-icon-btn::before{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow),inset 0 0 0 1px var(--line)}
.smap-icon-btn svg{position:relative;width:18px;height:18px;stroke-width:2.2}
.smap-pill:active,.smap-icon-btn:active,.smap-btn:active,.smap-link:active{transform:scale(.96)}

.smap-zoom{position:absolute;z-index:2;right:max(10px,env(safe-area-inset-right));bottom:calc(10px + env(safe-area-inset-bottom));display:flex;flex-direction:column;transition:opacity 200ms var(--ease,ease)}
.smap-zoom-btn::before{inset:5px}
.smap-foot{position:absolute;z-index:2;left:max(16px,env(safe-area-inset-left));right:62px;bottom:calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;pointer-events:none;transition:opacity 240ms var(--ease,ease)}
.smap-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:12px;line-height:1.3;font-weight:560;color:var(--muted)}
.smap-key{display:inline-flex;align-items:center;gap:7px}
.smap-key i{position:relative;width:12px;height:12px;border-radius:50%;flex-shrink:0}
.smap-key-lit{background:var(--ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--ink) 14%,transparent)}
.smap[data-mode="light"] .smap-key-lit{box-shadow:inset 0 0 0 1.5px var(--ink),0 0 0 2px var(--bg)}
.smap-key-checked{background:var(--ink);box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--smap-gold);transform:scale(.72)}
.smap-key-next{border:1.5px dashed var(--muted)}
.smap-hint{transition:opacity 400ms var(--ease,ease)}
.smap-credit{margin:0;font-size:10px;line-height:1.3;letter-spacing:.01em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.smap-credit[hidden]{display:none}
.smap-interacted .smap-hint{opacity:0}
.smap-card-open .smap-foot,.smap-card-open .smap-zoom{opacity:0;pointer-events:none}
.smap-card-open .smap-zoom *{visibility:hidden}

/* Lesson card */
.smap-card{position:absolute;z-index:4;left:50%;bottom:calc(10px + env(safe-area-inset-bottom));width:min(calc(100% - 20px),460px);max-height:min(60%,470px);overflow:auto;overscroll-behavior:contain;transform:translateX(-50%);padding:12px 16px 16px;border-radius:24px;background:var(--surface);box-shadow:var(--shadow-lg),inset 0 0 0 1px var(--line);scrollbar-width:thin}
.smap-card[hidden]{display:none}
.smap-card:focus{outline:none}
.smap-card-in{animation:smap-card-in 300ms var(--drawer,ease) both}
@keyframes smap-card-in{from{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%,0)}}
.smap-card-head{display:flex;align-items:center;gap:9px;min-height:36px;margin-right:-8px}
.smap-card-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.smap-card-area{flex:1;min-width:0;margin:0;font-size:12.5px;font-weight:650;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.smap-card-domain{font-weight:520;color:var(--muted)}
.smap-card-close{margin:-4px 0 -4px auto}
.smap-card-layer{display:flex;align-items:center;gap:7px;margin:2px 0 0;font-size:12px;font-weight:620;color:var(--muted)}
.smap-meter{display:inline-flex;gap:2px}
.smap-meter i{width:4px;height:11px;border-radius:2px;background:var(--line-strong)}
.smap-meter i.on{background:var(--accent)}
.smap-card-title{margin:6px 0 4px;font-size:19px;line-height:1.25;letter-spacing:-.3px;font-weight:680;text-wrap:balance}
.smap-card-summary{margin:0;font-size:13.5px;line-height:1.45;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.smap-card-status{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none}
.smap-chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px 0 8px;border-radius:999px;background:var(--surface-2);font-size:12px;font-weight:620;color:var(--ink)}
.smap-chip i{width:9px;height:9px;border-radius:50%;flex-shrink:0;background:var(--accent)}
.smap-chip-dim i{background:transparent;box-shadow:inset 0 0 0 1.5px var(--accent)}
.smap-chip-checked i{box-shadow:0 0 0 1.5px var(--surface-2),0 0 0 3px var(--smap-gold);transform:scale(.8)}
.smap-chip-next i{background:transparent;border:1.5px dashed var(--accent)}
.smap-card-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.smap-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 12px;border-radius:14px;font-size:15px;font-weight:640;background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-strong);transition:transform 130ms var(--ease,ease)}
.smap-btn svg{width:19px;height:19px}
.smap-btn-primary{background:var(--accent);color:var(--on-accent);box-shadow:none}
.smap-card-links{margin-top:16px}
.smap-card-links h3{margin:0 0 2px;font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.smap-card-links ul{margin:0;padding:0;list-style:none}
.smap-link{display:flex;align-items:center;gap:10px;width:100%;min-height:48px;padding:9px 0;text-align:left;border-top:1px solid var(--line)!important;transition:transform 130ms var(--ease,ease)}
.smap-card-links li:first-child .smap-link{border-top:0!important}
.smap-link-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;align-self:flex-start;margin-top:6px;background:var(--accent)}
.smap-link-text{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.smap-link-text strong{font-size:14px;line-height:1.3;font-weight:630;color:var(--ink)}
.smap-link-text span{font-size:12.5px;line-height:1.4;color:var(--muted)}
.smap-link svg{width:16px;height:16px;color:var(--faint)}

/* Without WebGL the index is the map: the same lessons as a list. */
.smap-fallback .smap-index{position:absolute;inset:0;overflow:auto;overscroll-behavior:contain;padding:calc(76px + env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) calc(28px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
.smap-fallback-note{margin:0 0 14px;padding:12px 14px;border-radius:14px;background:var(--surface-2);font-size:13.5px;color:var(--muted)}
.smap-index-title{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.smap-index-domain{margin:0 0 22px}
.smap-index-domain>h3{margin:0 0 8px;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.smap-index-area{margin:0 0 10px;padding:4px 14px 6px;border-radius:18px;background:var(--surface);box-shadow:var(--shadow),inset 0 0 0 1px var(--line)}
.smap-index-area h4{margin:8px 0 2px;font-size:14px;font-weight:680;color:var(--accent)}
.smap[data-mode="dark"] .smap-index-area h4{color:var(--bright)}
.smap-index-area ul{margin:0;padding:0;list-style:none}
.smap-index-star{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 0;text-align:left;border-top:1px solid var(--line)!important}
.smap-index-area li:first-child .smap-index-star{border-top:0!important}
.smap-index-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;background:var(--accent)}
.smap[data-mode="dark"] .smap-index-dot{background:var(--bright)}
.smap-index-dot[data-state="dim"]{background:transparent!important;box-shadow:inset 0 0 0 1.5px var(--accent)}
.smap-index-dot[data-state="checked"]{box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px var(--smap-gold)}
.smap-index-text{display:flex;flex-direction:column;min-width:0}
.smap-index-text strong{font-size:14.5px;line-height:1.3;font-weight:620}
.smap-index-text span{font-size:12.5px;color:var(--muted)}

/* The narrowest phones: Reset view keeps its icon (and accessible name); card buttons stay on one line. */
@media (max-width:359px){.smap-pill{width:44px;height:44px;margin:0;padding:0;justify-content:center;background:none;box-shadow:none;position:relative}.smap-pill::before{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow),inset 0 0 0 1px var(--line)}.smap-pill svg{position:relative;width:18px;height:18px;color:var(--ink)}.smap-pill-text{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.smap-btn{gap:6px;padding:0 8px;font-size:14px}.smap-card{padding:10px 14px 14px}}
.smap-btn{white-space:nowrap}
@media (prefers-reduced-motion:reduce){.smap-canvas,.smap-domain,.smap-area,.smap-legend,.smap-zoom,.smap-hint{transition:none}.smap-card-in{animation:none}}
