/* Portable semantic HTML components. Load portfolio-tokens.css first. */
.nz-scope { color:var(--nz-ink); font:var(--nz-body)/1.8 var(--nz-sans); }
.nz-scope *, .nz-scope *::before, .nz-scope *::after { box-sizing:border-box; }
.nz-scope :is(button,a,summary,input,select):focus-visible { outline:2px solid var(--nz-accent); outline-offset:5px; }
.nz-scope a { color:inherit; }
.nz-label { margin:0 0 16px; color:var(--nz-accent); font:var(--nz-label)/1.5 var(--nz-sans); letter-spacing:.12em; text-transform:uppercase; }
.nz-heading { margin:0; font:400 clamp(32px,4vw,53px)/1.18 var(--nz-serif); letter-spacing:-.035em; }
.nz-body { margin:0; max-width:640px; font:var(--nz-body)/1.8 var(--nz-sans); color:var(--nz-muted); }
.nz-link { display:inline-flex; align-items:center; justify-content:space-between; gap:24px; min-height:var(--nz-hit); padding:0; border:0; background:none; color:var(--nz-ink); font:var(--nz-ui)/1.5 var(--nz-sans); text-decoration:none; cursor:pointer; transition:scale var(--nz-duration) var(--nz-ease),color 240ms ease; }
.nz-link > span[aria-hidden] { color:var(--nz-accent); font-size:20px; }
.nz-link:disabled { opacity:.4; cursor:not-allowed; }
.nz-link.is-hover { scale:var(--nz-hover-scale); color:var(--nz-accent); }
.nz-link.is-focus { outline:2px solid var(--nz-accent); outline-offset:5px; }
@media (hover:hover) and (pointer:fine) {
  .nz-link:not(:disabled):hover { scale:var(--nz-hover-scale); color:var(--nz-accent); }
}
.nz-icon-button { width:var(--nz-hit); height:var(--nz-hit); display:inline-grid; place-items:center; border:1px solid var(--nz-line); border-radius:50%; background:transparent; color:var(--nz-ink); font:22px var(--nz-sans); cursor:pointer; transition:color 200ms,border-color 200ms; }
.nz-icon-button:hover { color:var(--nz-accent); border-color:var(--nz-accent); }
.nz-keyword-line { margin:0; max-width:540px; font:400 clamp(24px,3vw,32px)/1.5 var(--nz-serif); }
.nz-keyword-line > * { transition:opacity 180ms,color 180ms; }
.nz-keyword-line a { font:inherit; font-style:italic; color:inherit; text-decoration:none; }
.nz-keyword-line:has(a:focus-visible) > :not(:focus-visible) { opacity:.6; }
.nz-keyword-line a:focus-visible { color:var(--nz-accent); }
@media (hover:hover) and (pointer:fine) {
  .nz-keyword-line:has(a:hover) > * { opacity:.6; }
  .nz-keyword-line a:hover { opacity:1; color:var(--nz-accent); text-shadow:0 0 16px color-mix(in srgb,var(--nz-accent) 28%,transparent); }
}
.nz-project-row { display:grid; grid-template-columns:30px minmax(0,1fr) minmax(150px,28%) 24px; align-items:center; gap:24px; padding:36px 0; color:var(--nz-ink); border-block:1px solid var(--nz-line); text-decoration:none; }
.nz-project-row > small { font-size:var(--nz-caption); color:var(--nz-accent); }
.nz-project-row > strong { font:400 clamp(32px,4vw,56px)/1.2 var(--nz-serif); letter-spacing:-.035em; transition:color 240ms,scale var(--nz-duration) var(--nz-ease); transform-origin:left; }
.nz-project-row > span { color:var(--nz-muted); font-size:var(--nz-small); line-height:1.65; }
.nz-project-row > b { color:var(--nz-accent); font-size:22px; font-weight:400; }
.nz-project-row:hover > strong { color:var(--nz-accent); scale:var(--nz-hover-scale); }
.nz-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px; margin:0; padding-top:24px; border-top:1px solid var(--nz-line); }
.nz-facts dt { color:var(--nz-accent); font-size:var(--nz-label); letter-spacing:.12em; text-transform:uppercase; margin-bottom:12px; }
.nz-facts dd { margin:0; font-size:var(--nz-small); color:var(--nz-muted); line-height:1.75; }
.nz-chapter-head { display:grid; grid-template-columns:1fr 1.4fr; gap:10%; align-items:start; }
.nz-chapter-head > .nz-body { padding-top:30px; }
.nz-cover { margin:0; min-width:0; }
.nz-cover > a { display:block; }
.nz-cover img { display:block; width:100%; height:auto; }
.nz-cover figcaption { display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px 20px; margin-top:14px; color:var(--nz-muted); font-size:var(--nz-caption); line-height:1.65; }
.nz-cover figcaption a { text-underline-offset:4px; }
.nz-index { display:flex; flex-wrap:wrap; gap:8px 32px; border-block:1px solid var(--nz-line); padding:14px 0; }
.nz-index a { display:inline-flex; align-items:center; gap:12px; min-height:var(--nz-hit); color:var(--nz-muted); font-size:var(--nz-ui); text-decoration:none; }
.nz-index a span { font-size:var(--nz-label); color:var(--nz-accent); }
.nz-index a[aria-current], .nz-index a:hover { color:var(--nz-ink); }
.nz-disclosure { border-block:1px solid var(--nz-line); }
.nz-disclosure summary { display:flex; align-items:center; justify-content:space-between; gap:24px; min-height:56px; cursor:pointer; font-size:var(--nz-ui); list-style:none; }
.nz-disclosure summary::-webkit-details-marker { display:none; }
.nz-disclosure summary::after { content:'+'; color:var(--nz-accent); font-size:22px; }
.nz-disclosure[open] summary::after { content:'−'; }
.nz-disclosure > div { padding:0 0 24px; font-size:var(--nz-small); color:var(--nz-muted); }
.nz-toggle { display:inline-flex; align-items:center; gap:12px; min-height:var(--nz-hit); color:var(--nz-ink); cursor:pointer; font-size:var(--nz-ui); }
.nz-toggle input { appearance:none; width:38px; height:22px; margin:0; border:1px solid var(--nz-muted); border-radius:20px; background:transparent; position:relative; cursor:pointer; }
.nz-toggle input::before { content:''; position:absolute; width:14px; height:14px; top:3px; left:3px; border-radius:50%; background:var(--nz-muted); transition:transform 200ms; }
.nz-toggle input:checked { border-color:var(--nz-accent); background:color-mix(in srgb,var(--nz-accent) 12%,transparent); }
.nz-toggle input:checked::before { background:var(--nz-accent); transform:translateX(16px); }
.nz-tag { display:inline-flex; padding:5px 10px; border:1px solid var(--nz-line); border-radius:var(--nz-radius); color:var(--nz-accent); font-size:var(--nz-caption); }
.nz-dialog { width:min(850px,calc(100% - 32px)); max-height:90svh; padding:24px; border:1px solid var(--nz-line); background:var(--nz-bg); color:var(--nz-ink); overflow:auto; }
.nz-dialog::backdrop { background:#020707db; }
.nz-scope:has(.nz-dialog[open]) { overflow:hidden; }
.nz-dialog-header { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:24px; }
.nz-dialog-header h2 { margin:0; font:400 28px/1.3 var(--nz-serif); }
.nz-dialog img { display:block; width:100%; height:auto; }
@media(max-width:760px) {
  .nz-project-row { grid-template-columns:24px minmax(0,1fr) 24px; gap:16px; padding:28px 0; }
  .nz-project-row > span { grid-column:2; grid-row:2; }
  .nz-project-row > b { grid-column:3; grid-row:1/3; }
  .nz-chapter-head { grid-template-columns:1fr; gap:24px; }
  .nz-chapter-head > .nz-body { padding-top:0; }
  .nz-facts { gap:24px; }
}
[data-nz-motion="off"] .nz-scope *, [data-nz-motion="off"].nz-scope * { transition:none!important; animation:none!important; }
[data-nz-motion="off"] .nz-link, [data-nz-motion="off"] .nz-project-row > strong { scale:1!important; }
@media(prefers-reduced-motion:reduce) {
  .nz-scope * { transition:none!important; animation:none!important; }
  .nz-link,.nz-project-row > strong { scale:1!important; }
}
