/* Nerd detail page only; tint matches skill-cards.css. */
[data-nerd-area]{--tint:#6b5bd6}[data-nerd-area=health]{--tint:#3f9b6e}[data-nerd-area=money]{--tint:#2f8a74}[data-nerd-area=work]{--tint:#3b6fd8}[data-nerd-area=relationships]{--tint:#c4577a}[data-nerd-area=travel]{--tint:#2a8fb8}[data-nerd-area=home]{--tint:#c98a2e}[data-nerd-area=hobbies]{--tint:#d0683a}[data-nerd-area=content]{--tint:#9a4fc7}[data-nerd-area=learning]{--tint:#8a6d3b}
.nd-wash{background:color-mix(in oklab,var(--tint) 16%,var(--card))}
.nd-banner{position:relative;overflow:hidden;aspect-ratio:2/1;border-radius:16px;background:color-mix(in oklab,var(--tint) 24%,var(--card))}
.nd-banner[data-tint=brand]{background:var(--brand)}
.nd-banner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.nd-banner[data-banner=scene] img{inset:auto 3% -10% auto;width:auto;height:118%;aspect-ratio:1;object-fit:contain}
@media(min-width:640px){.nd-banner{aspect-ratio:auto;height:220px}}
.nd-head{position:relative;display:flex;flex-direction:column;gap:16px}
.nd-head-row{display:flex;align-items:center;gap:20px}
.nd-head .truncate{white-space:normal}
.nd-icon{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:96px;height:96px;overflow:hidden;border:1px solid var(--border);border-radius:22px;font-size:38px;font-weight:600;line-height:1}
.nd-icon img{width:76px;height:76px;object-fit:contain}
@media(max-width:480px){.nd-head-row{gap:14px}.nd-icon{width:72px;height:72px;border-radius:18px;font-size:30px}.nd-icon img{width:58px;height:58px}}
.nd-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
/* Stats row, App Store style: value over label, cells split by hairlines, scrolls sideways on narrow screens. */
.nd-meta{display:flex;gap:0;margin:0;padding:12px 0;overflow-x:auto;scrollbar-width:none;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.nd-meta::-webkit-scrollbar{display:none}
.nd-meta>div{display:flex;flex:1 0 auto;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:96px;padding:2px 16px;text-align:center}
.nd-meta>div+div{border-left:1px solid var(--border)}
/* On a phone the cells hug their content so skills, updated and the interest chip fit one row without cutting the chip. More cells (credits) still scroll. */
@media(max-width:479px){.nd-meta>div{flex:1 1 auto;min-width:0;padding:2px 12px}}
.nd-meta-tested{display:inline-flex;align-items:center;gap:5px;color:var(--success-fg,#15803d);text-decoration:none}.nd-meta-tested:hover{text-decoration:underline;text-underline-offset:4px}
.nd-meta dt{order:2;margin:0;font-size:11px;font-weight:500;letter-spacing:.02em;color:var(--muted-foreground)}.nd-meta dd{order:1;margin:0;display:inline-flex;align-items:center;gap:5px;font-size:15px;font-weight:600;line-height:1.2;white-space:nowrap;color:var(--foreground)}.nd-meta dd [data-slot=badge]{font-size:12px}
/* Creator row: avatar, name with verified check, @handle under it, Follow on the right. */
.nd-by{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.nd-by-link{display:flex;align-items:center;gap:10px;min-width:0;color:var(--foreground);text-decoration:none}
.nd-by-link:hover .nd-by-name>.truncate{text-decoration:underline;text-underline-offset:4px}
.nd-by-stack{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.nd-by-name{display:flex;align-items:center;gap:4px;min-width:0;font-size:14px;font-weight:600}
.nd-by-handle{font-size:13px;color:var(--muted-foreground)}
.nd-follow{flex-shrink:0;border-radius:9999px}
.nd-follow[aria-pressed=true]{background:var(--muted)}
.nd-how{margin:0;max-width:68ch;font-size:14px;line-height:1.55;color:var(--muted-foreground)}
/* Header row: Like (primary) and Share (secondary), then how to use it. 44px hit areas on touch. */
.nd-act{display:flex;flex-direction:column;gap:16px}
.nd-actions .nd-cta[aria-pressed=true] svg{fill:currentColor}
.nd-cta[data-pop] svg{animation:skill-heart-save 449ms var(--ease-standard,cubic-bezier(.2,0,0,1))}
@media(pointer:coarse){.nd-actions [data-slot=button],.nd-connect{min-height:44px}.nd-alt a{display:inline-flex;align-items:center;min-height:44px}}
.nd-step{display:flex;max-width:28rem;flex-direction:column;align-items:flex-start;gap:8px}
.nd-step [data-say]{align-self:stretch}
.nd-alt{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0;font-size:13px;line-height:1.5;color:var(--muted-foreground)}
.nd-alt a{color:var(--foreground);font-weight:500;text-decoration:underline;text-underline-offset:4px}
.nd-alt a:hover{color:var(--muted-foreground)}
@media(prefers-reduced-motion:reduce){.nd-cta[data-pop] svg{animation:none}}
/* Previews carousel: one row that snaps, like store screenshots; peeks the next card so it reads as scrollable. */
.nd-shots{display:grid;grid-auto-flow:column;grid-auto-columns:min(300px,78%);gap:16px;margin:0 -4px;padding:4px 4px 12px;list-style:none;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding:4px;scrollbar-width:thin}
.nd-shot{scroll-snap-align:start}
.nd-shot>a{display:flex;flex-direction:column;gap:10px;height:100%;color:var(--foreground);text-decoration:none;border-radius:16px;outline:none}
.nd-shot>a:focus-visible,.nd-sheet-close:focus-visible,.nd-switch:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
.nd-shot-art{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;border:1px solid var(--border);border-radius:14px}
.nd-shot>a:hover .nd-shot-art{border-color:var(--ring)}
.nd-shot-art>img,.nd-shot-art>figure{width:100%;height:100%;margin:0;border:0;border-radius:0;object-fit:contain}
.nd-shot-plain{display:grid;place-items:center;height:100%;color:var(--muted-foreground)}.nd-shot-plain>*{width:40px;height:40px}
.nd-shot-off{position:absolute;top:10px;left:10px}
.nd-shot-copy{display:flex;flex-direction:column;gap:2px;padding:0 2px}
.nd-shot-title{font-size:15px;font-weight:600;line-height:1.3}
.nd-shot-get{font-size:13px;line-height:1.45;color:var(--muted-foreground)}
.nd-uses,.nd-memory{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px 32px}
.nd-uses>div,.nd-memory>div{display:flex;flex-direction:column;gap:10px;min-width:0}
.nd-uses h3,.nd-memory h3{color:var(--muted-foreground)}
.nd-uses p,.nd-memory p{font-size:14px;line-height:1.5}
.nd-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.nd-chips li{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 12px 0 10px;border-radius:999px;background:var(--muted);font-size:13px;font-weight:500;line-height:1.2}
.nd-chips svg{flex-shrink:0;width:14px;height:14px;color:var(--tint)}
.nd-chips[data-never] svg{color:var(--muted-foreground)}
.nd-can{display:flex;flex-direction:column;gap:12px;margin:0;padding:0;list-style:none}
.nd-can li{display:flex;align-items:flex-start;gap:10px}
.nd-can svg{flex-shrink:0;width:16px;height:16px;margin-top:2px;color:var(--tint)}
.nd-can li>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.nd-can-label{font-size:14px;font-weight:500;line-height:1.4}
.nd-can-why{font-size:13px;line-height:1.45;color:var(--muted-foreground)}
.nd-logos{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;margin:0;padding:0;list-style:none}
.nd-logos li{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 8px;border:1px solid var(--border);border-radius:16px;font-size:13px;text-align:center}
.nd-more{max-width:68ch}
.nd-more p{font-size:14px;line-height:1.55;color:var(--muted-foreground)}
.nd-foot{display:flex;flex-direction:column;gap:20px;padding-top:24px;border-top:1px solid var(--border)}
.nd-sheet{display:none}
.nd-sheet:target,.nd-sheet:has(>[data-skill-alias]:target){display:block;position:fixed;inset:0;z-index:60}
html:has(.nd-sheet:target),html:has(.nd-sheet>[data-skill-alias]:target){overflow:hidden}
.nd-sheet-scrim{position:absolute;inset:0;background:#0006}
/* Preview: a centered modal on desktop, a full-height sheet on phones. */
.nd-sheet-panel{position:absolute;inset:0;margin:auto;display:flex;flex-direction:column;width:min(560px,calc(100% - 32px));height:fit-content;max-height:calc(100dvh - 64px);overflow-y:auto;overscroll-behavior:contain;background:var(--background);border:1px solid var(--border);border-radius:24px;box-shadow:0 24px 64px #00000033;outline:none;animation:nd-pop .2s cubic-bezier(.2,.8,.2,1) both}
@media(max-width:639px){.nd-sheet-panel{inset:0;width:100%;height:100%;max-height:none;margin:0;border:0;border-radius:0;animation-name:nd-rise}}
/* Brand pages add a dot and a small size to every h2; the preview title keeps its own display size. */
.nd-sheet .nd-sheet-title{font:600 28px/1.15 var(--font-display);letter-spacing:-.02em}.nd-sheet .nd-sheet-title::before{content:none}
.nd-sheet-use{display:flex;flex-direction:column;gap:8px}
.nd-sheet-prompt{display:block;max-height:4.5em;overflow:auto;padding:8px 12px;border-radius:12px;background:var(--muted);color:var(--muted-foreground);font-size:12px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;user-select:all}
.nd-sheet .nd-sheet-cta{width:100%;height:48px;border-radius:9999px;font-size:16px;font-weight:600;background:#4B5BE8;color:#FFFFFF;border:.5px solid #4352D1;box-shadow:inset -.5px -.5px 1px rgba(255,255,255,.32),inset 1px 1px .5px rgba(255,255,255,.32),0 4px 24px rgba(75,91,232,.24)}
@media(hover:hover){.nd-sheet .nd-sheet-cta:hover{background:#4352D1}}
.nd-sheet .nd-sheet-cta:active{transform:scale(.99)}
.nd-sheet .nd-sheet-cta:focus-visible{outline:2px solid #4B5BE8;outline-offset:3px}
.nd-needs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px}
.nd-needs>span{font-weight:600}
.nd-needs ul{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.nd-needs li{display:inline-flex;align-items:center;gap:4px;min-height:28px;padding:0 12px;border:1px solid var(--border);border-radius:9999px;background:var(--card)}
.nd-needs li em{font-style:normal;color:var(--muted-foreground)}
.nd-sheet-more{border-top:1px solid var(--border)}
.nd-sheet-more-trigger{display:flex;width:100%;align-items:center;justify-content:space-between;min-height:52px;padding:0;border:0;background:none;cursor:pointer;font-size:15px;font-weight:600;color:var(--foreground)}
.nd-sheet-more-trigger:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:8px}
.nd-sheet-more-trigger svg{transition:transform .15s}.nd-sheet-more-trigger[data-state=open] svg{transform:rotate(180deg)}
.nd-sheet-more-body{display:flex;flex-direction:column;gap:20px;padding-bottom:8px}.nd-sheet-more-body[data-state=closed]{display:none}
.nd-sheet-bar{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:0 12px 0 24px;border-bottom:1px solid var(--border);background:var(--background);font-size:13px;color:var(--muted-foreground)}
.nd-sheet-close{display:grid;place-items:center;width:40px;height:40px;border-radius:99px;color:var(--foreground)}
.nd-sheet-close:hover{background:var(--muted)}
.nd-sheet .skill-detail-art{background:color-mix(in oklab,var(--tint) 12%,var(--card));border-bottom:1px solid var(--border)}
.nd-sheet figure,.nd-sheet .skill-detail-art>img{width:100%;max-height:none;aspect-ratio:4/3;margin:0;border:0;border-radius:0}
.nd-sheet .skill-detail-art img{object-fit:contain;padding:20px}
.skill-detail-caption{margin:0;padding:0 24px 12px;font-size:11px;color:var(--muted-foreground)}
.nd-sheet-body{display:flex;flex-direction:column;gap:24px;padding:24px}
.nd-sheet-title{margin:0;font:600 28px/1.15 var(--font-display);letter-spacing:-.02em}
.nd-sheet-part{display:flex;flex-direction:column;gap:8px;font-size:14px;line-height:1.55}
.nd-sheet-part .skill-use-prompt{flex:0 0 auto}
.nd-sheet-part h3,.nd-uses h3,.nd-memory h3{margin:0;font-size:13px;font-weight:600}
.nd-sheet-part p,.nd-uses p,.nd-memory p{margin:0}
.nd-mine{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:56px;padding:8px 16px;border:1px solid var(--border);border-radius:24px;background:var(--card);transition:background-color .15s}.nd-mine:focus-within{background:color-mix(in oklab,var(--muted) 70%,transparent)}
.nd-mine span span{font-size:13px;color:var(--muted-foreground)}.nd-mine strong{display:block;font-size:14px;font-weight:600;color:var(--foreground)}
.nd-switch{position:relative;flex-shrink:0;width:44px;height:26px;padding:0;border:0;border-radius:99px;background:color-mix(in oklab,var(--foreground) 15%,transparent);cursor:pointer;transition:background-color .15s}
.nd-switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0004;transition:transform .15s}
.nd-switch[aria-checked=true]{background:var(--cta)}.nd-switch[aria-checked=true]::after{transform:translateX(18px)}
/* The touch floor in product-ui.css lifts every button to 44px tall on a coarse pointer, which turned the capsule into a disc. Keep the 44x26 drawing and give the finger a 44px target with a transparent ::before instead. */
:root[data-surface] button.nd-switch[role=switch][aria-checked]{min-height:0}.nd-switch::before{content:"";position:absolute;inset:-9px 0}
@keyframes nd-pop{from{transform:scale(.97);opacity:0}to{transform:none;opacity:1}}
@keyframes nd-rise{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
.skill-detail-art{position:relative;touch-action:manipulation;-webkit-user-select:none;user-select:none}
.skill-detail-when{font-size:15px;line-height:1.5}
.skill-detail-get{margin:0;font-size:16px;line-height:1.55;color:var(--foreground)}
.skill-use-prompt{display:flex;flex:1 1 240px;align-items:center;gap:4px;min-width:0;min-height:40px;padding:0 4px 0 14px;border-radius:9999px;background:var(--muted);color:var(--muted-foreground)}
.skill-use-prompt code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.skill-use-prompt [data-copy]{flex-shrink:0;width:32px;height:32px;border:0;border-radius:9999px;background:transparent;box-shadow:none;color:var(--foreground)}.skill-use-prompt [data-copy]:hover{background:var(--background)}
@media(prefers-reduced-motion:reduce){.skill-use-pill{transition:none}}
@media(max-width:1023px){.skill-detail-body[data-slot=card-content]{padding:18px 22px 12px}}
@media(max-width:1023px){.skill-detail-intro{grid-template-columns:1fr}.skill-detail-art{border-right:0;border-bottom:1px solid var(--border)}.skill-detail-art figure{max-height:300px}.skill-detail-copy[data-slot=card-header]{padding:22px}.skill-detail-copy h3{font-size:28px}}
.skill-needs{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}
.skill-needs li>span{margin-left:6px;font-size:12px}
@media(prefers-reduced-motion:reduce){.nd-mine,.nd-switch,.nd-switch::after{transition:none}.nd-sheet-panel{animation:none}.nd-sheet .nd-sheet-cta:active{transform:none}.nd-sheet-more-trigger svg{transition:none}}
.nd-tested{font-size:12px;color:var(--muted-foreground)}
/* Use dock (Airbnb's reserve card): one element. From 1024px a sticky card beside the page, which then holds the header actions.
   Below that a slim bar at the bottom: beside the cookie bubble signed out, stacked just above the bottom dock signed in.
   skill-cards.js sets data-dock=wait until the header row scrolls away; without JS the bar stays. */
.nd-dock-id{min-width:0}
.nd-dock-name{margin:0;overflow:hidden;font-size:15px;font-weight:600;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}
.nd-dock-by{margin:0;overflow:hidden;font-size:13px;line-height:1.4;color:var(--muted-foreground);text-overflow:ellipsis;white-space:nowrap}
@media(min-width:1024px){
.nd-layout[data-docked]{display:grid;grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:48px}
.nd-layout[data-docked] [data-actions]{display:none}
.nd-dock{position:sticky;top:88px;display:flex;flex-direction:column;gap:16px;padding:24px;border:1px solid var(--border);border-radius:16px;background:var(--card);box-shadow:0 6px 16px rgba(0,0,0,.12)}
.nd-dock .nd-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.nd-dock .nd-actions>:only-child{grid-column:1/-1}
.nd-dock .nd-step{padding-top:16px;border-top:1px solid var(--border)}
}
@media(max-width:1023px){
.nd-dock{position:fixed;z-index:30;right:16px;bottom:calc(12px + env(safe-area-inset-bottom));left:76px;display:flex;align-items:center;gap:8px;padding:6px 6px 6px 18px;border:1px solid var(--border);border-radius:999px;background:var(--card);box-shadow:0 6px 16px rgba(0,0,0,.12);transition:opacity .35s ease,transform .35s ease,visibility .35s}
.nd-dock-id{flex:1}
.nd-dock-by,.nd-dock .nd-step{display:none}
.nd-dock .nd-actions{flex-wrap:nowrap;gap:6px}
.nd-dock .nd-share{width:36px;padding:0}
@media(pointer:coarse){.nd-dock .nd-share{width:44px}}
.nd-dock .nd-share-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.nd-dock[data-dock=wait]{opacity:0;transform:translateY(12px);visibility:hidden;pointer-events:none}
.nd-page:has(>.nd-layout[data-docked]){padding-bottom:72px}
.np-landing:has(.nd-dock) [data-site-footer]{padding-bottom:88px}
}
@media(max-width:1023px) and (min-width:768px){.nd-dock{left:auto;width:min(420px,calc(100% - 32px))}}
@media(max-width:767px){
[data-surface=product] .nd-dock{right:12px;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 72px);left:12px;max-width:420px;margin-inline:auto}
[data-surface=product] .nd-page:has(>.nd-layout[data-docked]){padding-bottom:72px}
}
@media(prefers-reduced-motion:reduce){.nd-dock{transition:none}}
