/* Hanken Grotesk: Google Fonts, SIL Open Font License or Apache 2.0; latin subset */
@font-face {
  font-family: 'Hanken Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url(/fonts/hanken-grotesk-normal-300-700.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Fragment Mono: Google Fonts, SIL Open Font License or Apache 2.0; latin subset */
@font-face {
  font-family: 'Fragment Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/fragment-mono-normal-400.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* Listing Photo Lab */
*,*::before,*::after{box-sizing:border-box}
:root{
  --bg:#F7F7F5; --ink:#161616; --muted:#5E5E5A; --accent:#C4161C;
  --accent-ink:#A3121A; --accent-soft:#F6E3E2; --tint:#EDEDEA;
  --line:#D8D8D4; --card:#FFFFFF;
  --maxw:66ch;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#0F0E0E; --ink:#EDEAE7; --muted:#A39D99; --accent:#C8161E;
    --accent-ink:#FF7070; --accent-soft:#351617; --tint:#1A1818;
    --line:#2E2B2A; --card:#161515;
    color-scheme:dark;
  }
}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; font-size:17px; line-height:1.65;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
h1,h2,h3,h4{font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; line-height:1.18; letter-spacing:-0.03em;
  text-transform:none; margin:0 0 .5em; font-weight:400}
h1{font-size:clamp(2rem,1.35rem + 2.4vw,3rem)}
h2{font-size:clamp(1.4rem,1.15rem + 1.1vw,1.85rem); margin-top:2.2em}
h3{font-size:1.15rem; margin-top:1.9em}
p,ul,ol,table{margin:0 0 1.1em}
a{color:var(--accent-ink); text-underline-offset:2px; text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--accent); outline-offset:2px; border-radius:2px}
img{max-width:100%; height:auto}
hr{border:0; border-top:1px solid var(--line); margin:2.5rem 0}
code{font-family:ui-monospace,SFMono-Regular,Menlo,"Cascadia Mono",Consolas,monospace; font-size:.9em; background:var(--tint);
  padding:.12em .38em; border-radius:3px}
.wrap{max-width:1080px; margin:0 auto; padding:0 20px}
.prose{max-width:var(--maxw)}
.skip{position:absolute; left:-9999px; top:0; background:var(--accent); color:#fff;
  padding:.7rem 1rem; z-index:99; border-radius:0 0 3px 0}
.skip:focus{left:0}

/* header */
header.site{border-bottom:1px solid var(--line); background:var(--bg);
  position:sticky; top:0; z-index:20}
header.site .wrap{display:flex; align-items:center; gap:1.25rem;
  min-height:62px; flex-wrap:wrap}
.brand{font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; font-weight:800; font-size:1.05rem; letter-spacing:-.02em;
  color:var(--ink); text-decoration:none; display:flex; align-items:center; gap:.55rem;
  margin-right:auto; padding:.4rem 0}
.brand .mk{width:22px; height:22px; flex:none}
nav.main{display:flex; gap:1.1rem; flex-wrap:wrap}
nav.main a{color:var(--muted); text-decoration:none; font-size:.94rem; padding:.4rem 0;
  border-bottom:2px solid transparent}
nav.main a:hover,nav.main a[aria-current="page"]{color:var(--ink); border-bottom-color:var(--accent)}

/* hero */
.hero{background:var(--bg);border-bottom:1px solid var(--line); --hero-fg:var(--ink);--hero-muted:var(--muted); padding:clamp(2.5rem,6vw,4.5rem) 0; color:var(--hero-fg)}
.hero h1{max-width:19ch; color:var(--hero-fg)}
.hero .lede{font-size:clamp(1.05rem,1rem + .4vw,1.28rem); max-width:56ch;
  color:var(--hero-muted); margin-bottom:1.6rem}
.kicker{font-family:ui-monospace,SFMono-Regular,Menlo,"Cascadia Mono",Consolas,monospace; font-size:.74rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--accent-ink); margin:0 0 .9rem; font-weight:600}
.hero .kicker{color:var(--hero-fg); opacity:.75}
.hero.underline h1{padding-bottom:.35em; border-bottom:6px solid var(--accent);
  display:inline-block; max-width:100%}
.hero.bar{padding-left:0}
.hero.bar .wrap{padding-left:34px}

/* buttons */
.btn{display:inline-block; background:var(--accent); color:#fff; padding:.72rem 1.25rem;
  border-radius:4px; text-decoration:none; font-weight:600; font-size:.97rem;
  border:1px solid transparent; cursor:pointer; font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif}
.btn:hover{filter:brightness(.93)}
.btn.ghost{background:transparent; color:var(--hero-fg); border-color:currentColor; opacity:.85}
.btn.ghost:hover{opacity:1; filter:none}
.btns{display:flex; gap:.7rem; flex-wrap:wrap}

/* layout */
main{padding:2.5rem 0 3.5rem}
.cols{display:grid; grid-template-columns:minmax(0,1fr); gap:2.5rem}
@media (min-width:900px){.cols{grid-template-columns:minmax(0,1fr) 270px; gap:3.5rem}}
.cards{display:grid; gap:1.1rem; grid-template-columns:repeat(auto-fit,minmax(255px,1fr));
  padding:0; list-style:none; margin:1.6rem 0}
.card{background:var(--card); border:1px solid var(--line); border-radius:4px;
  padding:1.15rem 1.2rem; display:flex; flex-direction:column; gap:.4rem}
.card h3{margin:0; font-size:1.05rem}
.card p{margin:0; color:var(--muted); font-size:.94rem}
.card a{text-decoration:none; color:var(--ink)}
.card a:hover{color:var(--accent-ink)}
.card .rt{font-size:.8rem; color:var(--muted); font-family:ui-monospace,SFMono-Regular,Menlo,"Cascadia Mono",Consolas,monospace}

/* prose furniture */
.prose h2{scroll-margin-top:80px}
.prose h3{scroll-margin-top:80px}
.prose li{margin-bottom:.4em}
.key{font-size:1.05rem; border-left:3px solid var(--accent); padding:.1rem 0 .1rem 1rem;
  margin:1.5rem 0; font-weight:500}
.note{background:var(--tint); border:1px solid var(--line); border-left:4px solid var(--accent);
  border-radius:0 4px 4px 0; padding:1rem 1.15rem; margin:1.6rem 0}
.note p{margin:0 0 .5em} .note p:last-child{margin:0}
.note-t{font-weight:700; font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; font-size:.95rem}
.note.warn{border-left-color:#9A5B0B}
blockquote{margin:1.6rem 0; padding-left:1.2rem; border-left:3px solid var(--line);
  color:var(--muted); font-style:italic}
.tw{overflow-x:auto; margin:1.6rem 0; border:1px solid var(--line); border-radius:4px}
table{border-collapse:collapse; width:100%; font-size:.93rem; margin:0}
caption{text-align:left; padding:.8rem 1rem .2rem; color:var(--muted); font-size:.86rem}
th,td{padding:.62rem .85rem; text-align:left; border-bottom:1px solid var(--line);
  vertical-align:top}
th{background:var(--tint); font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; font-size:.86rem; letter-spacing:.01em}
tbody tr:last-child td{border-bottom:0}
ol.steps{list-style:none; counter-reset:s; padding:0; margin:1.6rem 0}
ol.steps li{counter-increment:s; position:relative; padding-left:3rem; margin-bottom:1.2rem}
ol.steps li::before{content:counter(s); position:absolute; left:0; top:0;
  width:2rem; height:2rem; border-radius:4px; background:var(--accent); color:#fff;
  display:grid; place-items:center; font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; font-weight:700; font-size:.9rem}
ol.steps strong{display:block; font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; margin-bottom:.15rem}
ol.steps span{color:var(--muted)}
.faq details{border-bottom:1px solid var(--line); padding:.9rem 0}
.faq summary{cursor:pointer; font-weight:600; font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; list-style:none;
  display:flex; justify-content:space-between; gap:1rem; align-items:flex-start}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+"; color:var(--accent-ink); font-weight:700; flex:none}
.faq details[open] summary::after{content:"\2013"}
.faq details>div{padding-top:.6rem; color:var(--muted)}
.faq details>div p:last-child{margin:0}

/* breadcrumbs, meta, toc */
.crumbs{font-size:.85rem; color:var(--muted); margin:0 0 1.2rem}
.crumbs a{color:var(--muted)}
.crumbs span{padding:0 .4rem}
.pmeta{font-size:.86rem; color:var(--muted); font-family:ui-monospace,SFMono-Regular,Menlo,"Cascadia Mono",Consolas,monospace;
  margin:0 0 1.8rem; display:flex; gap:1rem; flex-wrap:wrap}
.toc{background:var(--tint); border-radius:4px; padding:1rem 1.2rem; margin:0 0 2rem;
  border:1px solid var(--line)}
.toc p{margin:0 0 .5rem; font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; font-weight:700; font-size:.9rem}
.toc ol{margin:0; padding-left:1.1rem; font-size:.93rem}
.toc li{margin-bottom:.28em}
aside.rail{font-size:.93rem}
aside.rail h2{font-size:.82rem; text-transform:uppercase; letter-spacing:.1em;
  color:var(--muted); margin:0 0 .8rem; font-family:ui-monospace,SFMono-Regular,Menlo,"Cascadia Mono",Consolas,monospace; font-weight:600}
aside.rail ul{list-style:none; padding:0; margin:0 0 2rem}
aside.rail li{margin-bottom:.6rem; line-height:1.4}
aside.rail a{text-decoration:none; color:var(--ink)}
aside.rail a:hover{color:var(--accent-ink); text-decoration:underline}
.rail-box{background:var(--tint); border:1px solid var(--line); border-radius:4px;
  padding:1rem 1.1rem; margin-bottom:2rem}
.rail-box p{margin:0 0 .7rem; font-size:.9rem; color:var(--muted)}
.rail-box .btn{width:100%; text-align:center; font-size:.9rem; padding:.6rem 1rem}

/* tool */
.tool{background:var(--card); border:1px solid var(--line); border-radius:4px;
  padding:1.4rem; margin:2rem 0}
.tool .grid{display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.tool label{display:block; font-size:.85rem; font-weight:600; margin-bottom:.3rem;
  font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif}
.tool .hint{font-weight:400; color:var(--muted); font-size:.78rem; display:block}
.tool input,.tool select{width:100%; padding:.6rem .7rem; border:1px solid var(--line);
  border-radius:3px; background:var(--bg); color:var(--ink); font-size:1rem;
  font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif}
.tool input:focus,.tool select:focus{border-color:var(--accent)}
.out{margin-top:1.4rem; border-top:1px solid var(--line); padding-top:1.2rem}
.stats{display:grid; gap:.9rem; grid-template-columns:repeat(auto-fit,minmax(135px,1fr));
  margin:0 0 1rem; padding:0; list-style:none}
.stat{background:var(--tint); border-radius:3px; padding:.8rem .9rem}
.stat dt{font-size:.76rem; text-transform:uppercase; letter-spacing:.07em;
  color:var(--muted); margin-bottom:.25rem; font-family:ui-monospace,SFMono-Regular,Menlo,"Cascadia Mono",Consolas,monospace}
.stat dd{margin:0; font-size:1.5rem; font-weight:700; font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;
  letter-spacing:-.02em; line-height:1.1}
.stat dd small{font-size:.85rem; font-weight:400; color:var(--muted); display:block;
  letter-spacing:0; margin-top:.15rem}
.verdict{font-size:1rem; padding:.85rem 1rem; border-radius:3px; background:var(--accent-soft);
  color:var(--ink); margin:0}
.tool table{font-size:.88rem}

/* mention + footer */
.mention{border:1px solid var(--line); border-left:4px solid var(--accent);
  background:var(--tint); border-radius:0 4px 4px 0; padding:1rem 1.2rem; margin:2rem 0;
  font-size:.95rem}
.mention p{margin:0}
.mention .lbl{font-family:ui-monospace,SFMono-Regular,Menlo,"Cascadia Mono",Consolas,monospace; font-size:.72rem; letter-spacing:.12em;
  text-transform:uppercase; color:var(--muted); display:block; margin-bottom:.35rem}
footer.site{border-top:1px solid var(--line); background:var(--tint);
  padding:2.5rem 0; margin-top:3rem; font-size:.9rem; color:var(--muted)}
footer.site .fgrid{display:grid; gap:2rem; grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
footer.site h2{font-size:.8rem; text-transform:uppercase; letter-spacing:.1em;
  margin:0 0 .7rem; font-family:ui-monospace,SFMono-Regular,Menlo,"Cascadia Mono",Consolas,monospace; color:var(--ink); font-weight:600}
footer.site ul{list-style:none; padding:0; margin:0}
footer.site li{margin-bottom:.45rem}
footer.site a{color:var(--muted); text-decoration:none}
footer.site a:hover{color:var(--accent-ink); text-decoration:underline}
.colophon{border-top:1px solid var(--line); margin-top:2rem; padding-top:1.5rem;
  display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; font-size:.85rem}
@media print{header.site,footer.site,aside.rail,.btns{display:none}}

.cols{grid-template-columns:minmax(0,1fr) !important; gap:2rem !important}
aside.rail{border-top:1px solid var(--line); padding-top:1.5rem; max-width:var(--maxw)}
aside.rail ul{columns:2; column-gap:2rem}
aside.rail .rail-box{max-width:32rem}
@media (max-width:640px){aside.rail ul{columns:1}}

.tool .grid > div.wide{grid-column:1/-1}
.tool textarea{width:100%; padding:.65rem .75rem; border:1px solid var(--line);
  border-radius:var(--rs,6px); background:var(--bg); color:var(--ink);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.95rem;
  line-height:1.55; resize:vertical}
.tool textarea:focus{border-color:var(--accent)}

/* ============ Listing Photo Lab: light table + darkroom ============ */
:root{
  --mono:"Fragment Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;
  --glass:rgba(247,247,245,.8); --table:#FFFFFF; --film:#1B1B1A; --hole:#F7F7F5; --slot:#F1F1EE;
  --field:#8C8C87; --shadow:rgba(20,20,18,.14); --ease:cubic-bezier(.4,0,.6,1); --warn:#9A5B0B;
  --glow:radial-gradient(95% 130% at 72% 18%,#FFFFFF 0%,#FAFAF8 45%,#EEEEEB 100%);
  --wedge:linear-gradient(90deg,#FFFFFF 0 9.09%,#E3E3E1 0 18.18%,#C8C8C5 0 27.27%,#AEAEAB 0 36.36%,#959592 0 45.45%,
    #7D7D7A 0 54.54%,#666663 0 63.63%,#50504E 0 72.72%,#3B3B3A 0 81.81%,#282827 0 90.9%,#151515 0);
  --f1:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 200'%3E%3Cdefs%3E%3CradialGradient id='g' cx='.5' cy='.8' r='.9'%3E%3Cstop offset='0' stop-color='%23F3F3F0'/%3E%3Cstop offset='.55' stop-color='%23DADAD5'/%3E%3Cstop offset='1' stop-color='%23AEAEA8'/%3E%3C/radialGradient%3E%3Cfilter id='b' x='-50%25' y='-50%25' width='200%25' height='200%25'%3E%3CfeGaussianBlur stdDeviation='5'/%3E%3C/filter%3E%3CradialGradient id='s' cx='.36' cy='.3' r='.78'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.3' stop-color='%23D2D2CD'/%3E%3Cstop offset='.72' stop-color='%2374746F'/%3E%3Cstop offset='1' stop-color='%23393937'/%3E%3C/radialGradient%3E%3C/defs%3E%3Crect width='300' height='200' fill='url%28%23g%29'/%3E%3Cellipse cx='160' cy='157' rx='56' ry='8' opacity='.42' filter='url%28%23b%29'/%3E%3Ccircle cx='150' cy='108' r='48' fill='url%28%23s%29'/%3E%3C/svg%3E"); --f2:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 200'%3E%3Cdefs%3E%3CradialGradient id='g' cx='.5' cy='.8' r='.9'%3E%3Cstop offset='0' stop-color='%23F3F3F0'/%3E%3Cstop offset='.55' stop-color='%23DADAD5'/%3E%3Cstop offset='1' stop-color='%23AEAEA8'/%3E%3C/radialGradient%3E%3Cfilter id='b' x='-50%25' y='-50%25' width='200%25' height='200%25'%3E%3CfeGaussianBlur stdDeviation='5'/%3E%3C/filter%3E%3ClinearGradient id='s'%3E%3Cstop offset='0' stop-color='%23454542'/%3E%3Cstop offset='.3' stop-color='%23D5D5D0'/%3E%3Cstop offset='.44' stop-color='%23F7F7F4'/%3E%3Cstop offset='.7' stop-color='%2386867F'/%3E%3Cstop offset='1' stop-color='%23363634'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='300' height='200' fill='url%28%23g%29'/%3E%3Cellipse cx='158' cy='166' rx='40' ry='6' opacity='.42' filter='url%28%23b%29'/%3E%3Cpath d='M128 86q0-14 14-18V50h16v18q14 4 14 18v74q0 6-6 6h-32q-6 0-6-6z' fill='url%28%23s%29'/%3E%3Crect x='139' y='38' width='22' height='13' rx='2' fill='%232C2C2A'/%3E%3C/svg%3E"); --f3:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 200'%3E%3Cdefs%3E%3CradialGradient id='g' cx='.5' cy='.8' r='.9'%3E%3Cstop offset='0' stop-color='%23F3F3F0'/%3E%3Cstop offset='.55' stop-color='%23DADAD5'/%3E%3Cstop offset='1' stop-color='%23AEAEA8'/%3E%3C/radialGradient%3E%3Cfilter id='b' x='-50%25' y='-50%25' width='200%25' height='200%25'%3E%3CfeGaussianBlur stdDeviation='5'/%3E%3C/filter%3E%3C/defs%3E%3Crect width='300' height='200' fill='url%28%23g%29'/%3E%3Cellipse cx='154' cy='160' rx='68' ry='9' opacity='.38' filter='url%28%23b%29'/%3E%3Cpath d='M150 58l52 26-52 26-52-26z' fill='%23F1F1EE'/%3E%3Cpath d='M98 84l52 26v56l-52-26z' fill='%23A6A6A1'/%3E%3Cpath d='M202 84l-52 26v56l52-26z' fill='%236C6C68'/%3E%3C/svg%3E"); --holes:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 42 14'%3E%3Cpath fill-rule='evenodd' d='M0 0h42v14H0zM3 4h5v6H3zM34 4h5v6h-5z'/%3E%3C/svg%3E"); --pencil:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 112'%3E%3Cpath d='M10 12C44 5 118 7 150 11c3 26 3 64 0 90-42 5-98 4-141 2-4-28-4-62 1-92 12-3 24-3 30-2' fill='none' stroke='%23D0141C' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); --chev:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 8'%3E%3Cpath d='M1 1l5.5 5.5L12 1' fill='none' stroke='%23161616' stroke-width='1.6'/%3E%3C/svg%3E");
  --s1:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 450 92' width='450' height='92'%3E%3Csvg x='0' width='138' height='92' viewBox='0 0 300 200'%3E%3Cdefs%3E%3CradialGradient id='g' cx='.5' cy='.8' r='.9'%3E%3Cstop offset='0' stop-color='%23F3F3F0'/%3E%3Cstop offset='.55' stop-color='%23DADAD5'/%3E%3Cstop offset='1' stop-color='%23AEAEA8'/%3E%3C/radialGradient%3E%3Cfilter id='b' x='-50%25' y='-50%25' width='200%25' height='200%25'%3E%3CfeGaussianBlur stdDeviation='5'/%3E%3C/filter%3E%3CradialGradient id='s' cx='.36' cy='.3' r='.78'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.3' stop-color='%23D2D2CD'/%3E%3Cstop offset='.72' stop-color='%2374746F'/%3E%3Cstop offset='1' stop-color='%23393937'/%3E%3C/radialGradient%3E%3C/defs%3E%3Crect width='300' height='200' fill='url%28%23g%29'/%3E%3Cellipse cx='160' cy='157' rx='56' ry='8' opacity='.42' filter='url%28%23b%29'/%3E%3Ccircle cx='150' cy='108' r='48' fill='url%28%23s%29'/%3E%3C/svg%3E%3C/svg%3E"); --s2:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 450 92' width='450' height='92'%3E%3Csvg x='150' width='138' height='92' viewBox='0 0 300 200'%3E%3Cdefs%3E%3CradialGradient id='g' cx='.5' cy='.8' r='.9'%3E%3Cstop offset='0' stop-color='%23F3F3F0'/%3E%3Cstop offset='.55' stop-color='%23DADAD5'/%3E%3Cstop offset='1' stop-color='%23AEAEA8'/%3E%3C/radialGradient%3E%3Cfilter id='b' x='-50%25' y='-50%25' width='200%25' height='200%25'%3E%3CfeGaussianBlur stdDeviation='5'/%3E%3C/filter%3E%3ClinearGradient id='s'%3E%3Cstop offset='0' stop-color='%23454542'/%3E%3Cstop offset='.3' stop-color='%23D5D5D0'/%3E%3Cstop offset='.44' stop-color='%23F7F7F4'/%3E%3Cstop offset='.7' stop-color='%2386867F'/%3E%3Cstop offset='1' stop-color='%23363634'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='300' height='200' fill='url%28%23g%29'/%3E%3Cellipse cx='158' cy='166' rx='40' ry='6' opacity='.42' filter='url%28%23b%29'/%3E%3Cpath d='M128 86q0-14 14-18V50h16v18q14 4 14 18v74q0 6-6 6h-32q-6 0-6-6z' fill='url%28%23s%29'/%3E%3Crect x='139' y='38' width='22' height='13' rx='2' fill='%232C2C2A'/%3E%3C/svg%3E%3C/svg%3E"); --s3:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 450 92' width='450' height='92'%3E%3Csvg x='300' width='138' height='92' viewBox='0 0 300 200'%3E%3Cdefs%3E%3CradialGradient id='g' cx='.5' cy='.8' r='.9'%3E%3Cstop offset='0' stop-color='%23F3F3F0'/%3E%3Cstop offset='.55' stop-color='%23DADAD5'/%3E%3Cstop offset='1' stop-color='%23AEAEA8'/%3E%3C/radialGradient%3E%3Cfilter id='b' x='-50%25' y='-50%25' width='200%25' height='200%25'%3E%3CfeGaussianBlur stdDeviation='5'/%3E%3C/filter%3E%3C/defs%3E%3Crect width='300' height='200' fill='url%28%23g%29'/%3E%3Cellipse cx='154' cy='160' rx='68' ry='9' opacity='.38' filter='url%28%23b%29'/%3E%3Cpath d='M150 58l52 26-52 26-52-26z' fill='%23F1F1EE'/%3E%3Cpath d='M98 84l52 26v56l-52-26z' fill='%23A6A6A1'/%3E%3Cpath d='M202 84l-52 26v56l52-26z' fill='%236C6C68'/%3E%3C/svg%3E%3C/svg%3E");
}
@media (prefers-color-scheme:dark){:root{
  --glass:rgba(15,14,14,.76); --table:#161515; --film:#2A2727; --hole:#0F0E0E; --slot:#1C1A1A;
  --field:#77716D; --shadow:rgba(0,0,0,.6);
  --glow:radial-gradient(60% 90% at 92% -10%,rgba(200,22,30,.3) 0%,rgba(200,22,30,.08) 45%,transparent 70%),#0F0E0E;
  --chev:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 8'%3E%3Cpath d='M1 1l5.5 5.5L12 1' fill='none' stroke='%23EDEAE7' stroke-width='1.6'/%3E%3C/svg%3E");
}}
::selection{background:var(--accent); color:#fff}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}

/* ---------- type ---------- */
body{font-size:18px; line-height:1.65; letter-spacing:-.003em}
h1,h2,h3{color:var(--ink); text-wrap:balance}
h1{font-size:clamp(2.2rem,1.5rem + 2.6vw,3.6rem); font-weight:300; line-height:1.04; letter-spacing:-.04em}
h2{font-size:clamp(1.45rem,1.22rem + .85vw,1.9rem); font-weight:500; line-height:1.16; letter-spacing:-.025em;
  margin:2.3em 0 .6em}
h3{font-size:1.14rem; font-weight:600; line-height:1.3; letter-spacing:-.01em; margin:1.8em 0 .4em}
strong{font-weight:600}
a{color:var(--accent-ink); text-decoration-thickness:1px; text-underline-offset:3px;
  text-decoration-color:color-mix(in srgb,currentColor 40%,transparent); transition:color .32s var(--ease)}
a:hover{text-decoration-color:currentColor; text-decoration-thickness:1px}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:3px}
code{font-family:var(--mono); background:var(--tint)}
.skip{background:var(--ink); color:var(--bg); border-radius:0 0 6px 0}

/* ---------- header: frosted, like the chrome of a photo app ---------- */
header.site{background:var(--glass); -webkit-backdrop-filter:saturate(1.8) blur(20px); backdrop-filter:saturate(1.8) blur(20px);
  border-bottom:1px solid var(--line)}
header.site .wrap{min-height:60px; flex-wrap:nowrap; gap:1.5rem}
.brand{gap:.6rem; min-height:44px; font-family:var(--sans); font-size:1.02rem; font-weight:600; letter-spacing:-.02em}
.brand .mk{width:24px; height:24px; color:var(--ink)}
nav.main{gap:.15rem; flex-wrap:nowrap}
nav.main a{position:relative; display:flex; align-items:center; min-height:44px; padding:0 .72rem; border:0;
  font-size:.93rem; font-weight:500; color:var(--muted); white-space:nowrap; transition:color .32s var(--ease)}
nav.main a:hover{color:var(--ink)}
nav.main a[aria-current="page"]{color:var(--ink)}
nav.main a[aria-current="page"]::after{content:""; position:absolute; left:50%; bottom:5px; width:5px; height:5px;
  margin-left:-2.5px; border-radius:50%; background:var(--accent)}
@media (max-width:760px){
  header.site .wrap{min-height:56px; gap:.6rem; padding-right:0}
  .brand{flex:none; font-size:.96rem}
  nav.main{flex:1 1 auto; min-width:0; overflow-x:auto; scroll-snap-type:x proximity; scrollbar-width:none;
    overscroll-behavior-x:contain; -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 80%,transparent);
    mask-image:linear-gradient(90deg,transparent 0,#000 14px,#000 80%,transparent)}
  nav.main::-webkit-scrollbar{display:none}
  nav.main a{scroll-snap-align:start; padding:0 .62rem; font-size:.9rem}
  nav.main a:first-child{margin-left:.5rem}
  nav.main a:last-child{margin-right:2.2rem}
}

/* ---------- hero: the light table (darkroom at night) ---------- */
.hero.rule{background:var(--glow); border-bottom:1px solid var(--line); padding:clamp(2.2rem,6vw,5rem) 0 0;
  overflow:hidden}
.hero .wrap{display:grid; grid-template-columns:minmax(0,1fr); align-content:start}
.hero .kicker{display:flex; align-items:center; gap:.6rem; margin:0 0 1.2rem; font:400 .72rem/1 var(--mono);
  letter-spacing:.16em; color:var(--muted); opacity:1}
.hero .kicker::before{content:""; width:7px; height:7px; border-radius:50%; background:var(--accent)}
.hero h1{max-width:14ch; margin:0 0 .45em; font-size:clamp(2.6rem,1.4rem + 4.4vw,5.1rem); font-weight:300;
  line-height:1; letter-spacing:-.045em}
.hero .lede{max-width:34ch; margin:0 0 2rem; font-size:clamp(1.08rem,1rem + .45vw,1.32rem); line-height:1.5;
  color:var(--muted)}
.hero .btns{gap:.75rem}
@media (min-width:980px){
  .hero .wrap{--pw:340px; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); column-gap:clamp(2rem,5vw,4.5rem)}
  .hero .wrap > *{grid-column:1}
  .hero .wrap::after{content:""; grid-column:2; grid-row:1 / span 4; align-self:center; justify-self:end;
    width:var(--pw); height:var(--pw); padding:16px; color:var(--muted);
    background:linear-gradient(currentColor,currentColor) top left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) top right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top right/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom right/1px 16px no-repeat,var(--f1) center/cover no-repeat content-box,var(--table);
    background-origin:border-box,border-box,border-box,border-box,border-box,border-box,border-box,border-box,content-box;
    box-shadow:0 1px 2px var(--shadow),0 30px 60px -34px var(--shadow)}
  .hero .wrap::before{content:"FRAME 07A   f/8   1/125   ISO 100"; content:"FRAME 07A   f/8   1/125   ISO 100" / "";
    grid-column:2; grid-row:1 / span 4; align-self:center; justify-self:end; width:var(--pw); white-space:pre;
    transform:translateY(calc(var(--pw) / 2 + 1.4rem)); font:400 .68rem/1 var(--mono); letter-spacing:.12em;
    color:var(--muted)}
}
@media (min-width:1180px){.hero .wrap{--pw:400px}}
/* contact strip across the bottom of the table; the editor has circled the keeper in red */
.hero.rule::after{content:""; display:block; height:132px; margin-top:clamp(2.6rem,6vw,4.5rem);
  background:var(--pencil) 438px 10px/162px 112px no-repeat,
    var(--s1) 0 20px/450px 92px repeat-x,var(--s2) 0 20px/450px 92px repeat-x,var(--s3) 0 20px/450px 92px repeat-x,
    linear-gradient(90deg,transparent 8px,var(--hole) 8px 16px,transparent 16px) 0 7px/24px 6px repeat-x,
    linear-gradient(90deg,transparent 8px,var(--hole) 8px 16px,transparent 16px) 0 calc(100% - 7px)/24px 6px repeat-x,
    var(--film)}
@media (max-width:760px){
  .hero.rule::after{height:96px; background-size:118px 82px,330px 68px,330px 68px,330px 68px,18px 5px,18px 5px;
    background-position:102px 7px,0 14px,0 14px,0 14px,0 5px,0 calc(100% - 5px)}
}

/* ---------- buttons: pills; red means act ---------- */
.btn{display:inline-flex; align-items:center; justify-content:center; min-height:48px; padding:0 1.4rem;
  border-radius:999px; background:var(--accent); color:#fff; border:1px solid transparent; font:500 1rem/1.2 var(--sans);
  letter-spacing:-.01em; text-decoration:none; transition:background-color .32s var(--ease),border-color .32s var(--ease)}
.btn:hover{background:var(--accent-ink); filter:none}
.btn.ghost{background:transparent; color:var(--ink); border-color:var(--field); opacity:1}
.btn.ghost:hover{background:transparent; border-color:var(--ink)}
@media (prefers-color-scheme:dark){.btn:hover{background:#A51218}}

/* ---------- page furniture ---------- */
main{padding:clamp(2rem,5vw,3.5rem) 0 4.5rem}
.prose > p:first-child{font-size:1.2rem; line-height:1.55}
.prose > ul:not(.cards){list-style:none; padding:0}
.prose > ul:not(.cards) > li{position:relative; padding-left:1.55rem; margin-bottom:.55em}
.prose > ul:not(.cards) > li::before{content:""; position:absolute; left:.1rem; top:.62em; width:7px; height:7px;
  border:1px solid var(--ink)}
.prose > ol:not(.steps){list-style:none; padding:0; counter-reset:ol}
.prose > ol:not(.steps) > li{counter-increment:ol; position:relative; padding-left:2.4rem; margin-bottom:.65em}
.prose > ol:not(.steps) > li::before{content:counter(ol,decimal-leading-zero); position:absolute; left:0; top:.08em;
  font:400 .78rem/1.9 var(--mono); color:var(--muted)}
.prose > h2::before{content:""; display:block; width:28px; height:1px; margin:0 0 .95rem; background:var(--ink)}
.crumbs{margin:0 0 1.5rem; font:400 .68rem/1.4 var(--mono); letter-spacing:.12em; text-transform:uppercase;
  color:var(--muted)}
.crumbs a{color:var(--muted); text-decoration:none}
.crumbs a:hover{color:var(--ink)}
.prose > .kicker{display:flex; align-items:center; gap:.55rem; margin:0 0 1.1rem; font:400 .7rem/1 var(--mono);
  letter-spacing:.16em; color:var(--muted)}
.prose > .kicker::before{content:""; width:6px; height:6px; border-radius:50%; background:var(--accent)}
.pmeta{gap:.5rem; margin:1.3rem 0 1.5rem; font:400 .66rem/1 var(--mono); letter-spacing:.12em; text-transform:uppercase}
.pmeta > *{display:inline-flex; align-items:center; min-height:26px; padding:0 .7rem; border:1px solid var(--line);
  border-radius:999px; color:var(--ink)}
.prose > .lede{margin:0 0 2.2rem; font-size:clamp(1.12rem,1.04rem + .38vw,1.3rem); line-height:1.5; color:var(--muted)}
.prose > .lede::after{content:""; display:block; height:10px; margin-top:2.2rem; background:var(--wedge);
  border-radius:1px}

/* table of contents: the contact-sheet index */
.toc{position:relative; margin:0 0 2.6rem; padding:1.15rem 1.3rem 1.2rem; background:var(--table);
  border:1px solid var(--line); border-radius:4px}
.toc::before,.note::before,.mention::before,.tool::before{content:""; position:absolute; inset:-7px; color:var(--muted);
  background:linear-gradient(currentColor,currentColor) top left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) top right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top right/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom right/1px 16px no-repeat; pointer-events:none}
.toc p{margin:0 0 .8rem; font:400 .66rem/1 var(--mono); letter-spacing:.16em; text-transform:uppercase; color:var(--muted)}
.toc ol{list-style:none; margin:0; padding:0; counter-reset:toc; font-size:.97rem}
@media (min-width:700px){.toc ol{columns:2; column-gap:2rem}}
.toc li{counter-increment:toc; display:flex; gap:.75rem; margin:0; padding:.28rem 0; break-inside:avoid; line-height:1.4}
.toc li::before{content:counter(toc,decimal-leading-zero); flex:none; font:400 .72rem/1.6 var(--mono); color:var(--muted)}
.toc a{color:var(--ink); text-decoration:none}
.toc a:hover{color:var(--accent-ink)}

/* steps: a strip of negatives, one frame per step */
ol.steps{position:relative; margin:2rem 0 2.4rem; padding:0 0 0 76px}
ol.steps::before{content:""; position:absolute; left:0; top:0; bottom:0; width:42px; border-radius:2px;
  background:var(--film); -webkit-mask:var(--holes) 0 0/42px 14px repeat-y; mask:var(--holes) 0 0/42px 14px repeat-y}
ol.steps li{position:relative; margin:0; padding:0 0 1.4rem; scroll-margin-top:84px}
ol.steps li::before{content:counter(s,decimal-leading-zero); left:-29px; top:.3rem; width:auto; height:auto;
  display:block; background:none; color:var(--muted); border-radius:0; font:400 .72rem/1 var(--mono)}
ol.steps li::after{content:""; position:absolute; left:-65px; top:2px; width:20px; height:32px; border-radius:1px;
  background:radial-gradient(circle at 46% 44%,#FAFAF8 0 1px,#A9A9A4 3px,#5F5F5B 5.5px,transparent 6px),
    radial-gradient(60% 30% at 55% 76%,rgba(0,0,0,.28),transparent),linear-gradient(180deg,#C9C9C4,#F1F1ED 62%,#B8B8B2)}
ol.steps li:nth-child(even)::after{filter:brightness(.9)}
ol.steps li:last-child{padding-bottom:0}
ol.steps strong{display:block; margin:0 0 .25rem; font-family:var(--sans); font-weight:600; font-size:1.06rem;
  line-height:1.35}
ol.steps span{display:block; color:var(--muted)}

/* tables: a spec sheet */
.tw{margin:2rem 0 2.4rem; border:0; border-top:1px solid var(--ink); border-bottom:1px solid var(--ink); border-radius:0;
  background:linear-gradient(90deg,var(--bg) 30%,transparent) left/40px 100% no-repeat local,
    linear-gradient(270deg,var(--bg) 30%,transparent) right/40px 100% no-repeat local,
    radial-gradient(farthest-side at 0 50%,var(--shadow),transparent) left/12px 100% no-repeat scroll,
    radial-gradient(farthest-side at 100% 50%,var(--shadow),transparent) right/12px 100% no-repeat scroll}
.tw table{font-size:.97rem}
.tw caption{padding:.8rem 0 .7rem; color:var(--muted); font:400 .66rem/1.4 var(--mono); letter-spacing:.14em;
  text-transform:uppercase}
.tw th{padding:.7rem 1.4rem .65rem 0; background:transparent; border-bottom:1px solid var(--line); color:var(--muted);
  font:400 .64rem/1.3 var(--mono); letter-spacing:.14em; text-transform:uppercase; white-space:nowrap}
.tw td{min-width:9rem; padding:.85rem 1.4rem .85rem 0; border-bottom:1px solid var(--line); line-height:1.5}
.tw td:first-child{font-weight:500}
.tw tbody tr:last-child td{border-bottom:0}

/* notes: prints on the table, with crop marks. warn carries the zebra-stripe clipping warning */
.note{position:relative; margin:2.4rem 0; padding:1.2rem 1.35rem 1.25rem; background:var(--table);
  border:1px solid var(--line); border-radius:4px}
.note .note-t{margin:0 0 .55rem; font:400 .68rem/1.4 var(--mono); letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted)}
.note p:not(.note-t){margin:0}
.note.warn{padding-top:1.55rem}
.note.warn::after{content:""; position:absolute; left:0; right:0; top:0; height:6px; border-radius:4px 4px 0 0;
  background:repeating-linear-gradient(135deg,var(--ink) 0 4px,transparent 4px 9px); opacity:.85}
.note.warn .note-t{color:var(--warn)}
@media (prefers-color-scheme:dark){.note.warn .note-t{color:#E0A04A}}
.key{margin:2.2rem 0; padding:.15rem 0 .15rem 1.3rem; border:0; border-left:1px solid var(--ink); font-size:1.28rem;
  font-weight:400; line-height:1.45; letter-spacing:-.015em}
blockquote{margin:2rem 0; padding:1.05rem 1.25rem; background:var(--table); border:1px dashed var(--field);
  border-radius:4px; color:var(--ink); font:400 .92rem/1.7 var(--mono); font-style:normal}
blockquote p{margin:0}

/* faq */
.faq{margin:2.6rem 0; border-top:1px solid var(--ink)}
.faq details{padding:0; border-bottom:1px solid var(--line)}
.faq summary{min-height:58px; padding:.95rem 0; gap:1.2rem; align-items:center; font-family:var(--sans); font-weight:500;
  font-size:1.05rem; line-height:1.4; letter-spacing:-.01em}
.faq summary::after{content:"+"; flex:none; width:28px; height:28px; display:grid; place-items:center;
  border:1px solid var(--field); border-radius:50%; font:400 .95rem/1 var(--mono); color:var(--ink);
  transition:background-color .32s var(--ease),color .32s var(--ease)}
.faq details[open] summary::after{content:"\2212"; background:var(--ink); border-color:var(--ink); color:var(--bg)}
.faq summary:hover{color:var(--accent-ink)}
.faq details > div{padding:0 3rem 1.2rem 0; color:var(--muted)}

/* disclosure: a print on the table, plainly labelled */
.mention{position:relative; margin:2.8rem 0; padding:1.1rem 1.3rem 1.2rem; background:var(--table);
  border:1px solid var(--line); border-radius:4px; font-size:.96rem; line-height:1.6}
.mention .lbl{margin-bottom:.55rem; font:400 .66rem/1 var(--mono); letter-spacing:.16em; color:var(--muted)}

/* ---------- home: the contact sheet ---------- */
#guides{margin-top:3.4rem}
#guides::before{content:""; display:block; width:28px; height:1px; margin:0 0 .95rem; background:var(--ink)}
ul.cards{position:relative; counter-reset:frame; grid-template-columns:repeat(auto-fill,minmax(288px,1fr));
  gap:2.6rem 1.6rem; margin:1.6rem 0 3rem}
ul.cards .card{counter-increment:frame; position:relative; gap:.35rem; padding:0; background:transparent; border:0;
  border-radius:0}
ul.cards .card::before{content:""; order:-2; display:block; aspect-ratio:3 / 2; margin:-10px -10px .55rem; padding:10px;
  color:transparent; background:linear-gradient(currentColor,currentColor) top left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) top right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top right/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom right/1px 16px no-repeat,var(--f1) center/cover no-repeat content-box;
  background-origin:border-box,border-box,border-box,border-box,border-box,border-box,border-box,border-box,content-box;
  transition:color .32s var(--ease)}
ul.cards .card:nth-child(3n+2)::before{background-image:linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),var(--f2)}
ul.cards .card:nth-child(3n)::before{background-image:linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor),var(--f3)}
ul.cards .card:nth-child(4)::before{filter:brightness(1.07) contrast(.94); background-size:16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,160% auto;
  background-position:top left,top left,top right,top right,bottom left,bottom left,bottom right,bottom right,50% 64%}
ul.cards .card:nth-child(5)::before{filter:brightness(.9) contrast(1.06); background-size:16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,150% auto;
  background-position:top left,top left,top right,top right,bottom left,bottom left,bottom right,bottom right,50% 30%}
ul.cards .card:nth-child(7)::before{filter:brightness(.92); background-size:16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,128% auto;
  background-position:top left,top left,top right,top right,bottom left,bottom left,bottom right,bottom right,12% 55%}
ul.cards .card:nth-child(8)::before{background-size:16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,135% auto; background-position:top left,top left,top right,top right,bottom left,bottom left,bottom right,bottom right,82% 60%}
ul.cards .card:nth-child(9)::before{filter:brightness(1.05); background-size:16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,16px 1px,1px 16px,150% auto;
  background-position:top left,top left,top right,top right,bottom left,bottom left,bottom right,bottom right,50% 50%}
ul.cards .card:hover::before,ul.cards .card:focus-within::before{color:var(--accent)}
ul.cards .card .rt{order:-1; margin:.1rem 0 0; font:400 .64rem/1 var(--mono); letter-spacing:.14em; text-transform:uppercase;
  color:var(--muted)}
ul.cards .card .rt::before{content:counter(frame,decimal-leading-zero) "A \00B7  "; color:var(--ink)}
ul.cards .card h3{margin:.35rem 0 .1rem; font-size:1.18rem; font-weight:500; line-height:1.3; letter-spacing:-.02em}
ul.cards .card h3 a{color:var(--ink); text-decoration:none}
ul.cards .card h3 a::after{content:""; position:absolute; inset:0}
ul.cards .card:hover h3 a{color:var(--accent-ink)}
ul.cards .card p{font-size:.95rem; line-height:1.55}
ul.cards::after{content:"Roll 01 \00B7  " counter(frame,decimal-leading-zero) " frames";
  content:"Roll 01 \00B7  " counter(frame,decimal-leading-zero) " frames" / ""; position:absolute; right:0; top:-2.6rem;
  font:400 .64rem/1 var(--mono); letter-spacing:.14em; text-transform:uppercase; color:var(--muted)}
@supports selector(:has(a)){
  ul.cards .card:has(a:focus-visible){outline:2px solid var(--accent); outline-offset:10px; border-radius:2px}
  ul.cards .card h3 a:focus-visible{outline:none}
}
.prose ul.cards{grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:2rem 1.4rem; margin-top:1.2rem}
.prose ul.cards::after{display:none}

/* ---------- centred reading column (gallery wall) ---------- */
.cols{justify-items:center}
.cols > .prose,.p-about .prose,.p-404 .prose{width:100%}
.p-about main .wrap > .prose,.p-404 main .wrap > .prose{margin-inline:auto}
aside.rail{width:100%; max-width:var(--maxw); margin-top:1rem; padding-top:2rem; border-top:1px solid var(--line)}
aside.rail .rail-box{position:relative; max-width:none; margin:0 0 2.2rem; padding:1.2rem 1.3rem; background:var(--table);
  border:1px solid var(--line); border-radius:4px; display:flex; flex-wrap:wrap; align-items:center;
  justify-content:space-between; gap:1rem}
.rail-box p{margin:0; flex:1 1 16rem; font-size:1rem; color:var(--ink)}
.rail-box .btn{width:auto; flex:none; padding:0 1.3rem; font-size:.95rem}
aside.rail h2{margin:0 0 .9rem; font:400 .66rem/1 var(--mono); letter-spacing:.16em; color:var(--muted)}
aside.rail ul{margin:0; column-gap:2.4rem}
aside.rail li{margin:0; padding:0; border-bottom:1px solid var(--line); break-inside:avoid}
aside.rail a{display:flex; align-items:center; min-height:44px; padding:.45rem 0; color:var(--ink); text-decoration:none}
aside.rail a:hover{color:var(--accent-ink); text-decoration:none}

/* ---------- tool: light table + contact sheet of empty frames ---------- */
.p-tool .rail-box{display:none}
.tool{position:relative; margin:2.2rem 0 2.8rem; padding:clamp(1.2rem,3vw,2rem); background:var(--table);
  border:1px solid var(--line); border-radius:6px; box-shadow:0 1px 2px var(--shadow),0 28px 60px -36px var(--shadow)}
@media (min-width:1100px){.tool{margin-inline:-6rem}}
.tool .grid{grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.2rem 1.4rem}
@media (max-width:640px){.tool .grid{grid-template-columns:1fr}}
.tool label{margin:0 0 .55rem; font:400 .68rem/1.3 var(--mono); letter-spacing:.14em; text-transform:uppercase;
  color:var(--ink)}
.tool .hint{margin-top:.3rem; font:400 .86rem/1.4 var(--sans); letter-spacing:0; text-transform:none; color:var(--muted)}
.tool select,.tool input{height:52px; padding:0 3rem 0 1.15rem; border:1px solid var(--field); border-radius:999px;
  background:var(--chev) right 1.15rem center/13px 8px no-repeat,var(--bg); color:var(--ink); font:500 1rem/1 var(--sans);
  -webkit-appearance:none; appearance:none; transition:border-color .32s var(--ease)}
.tool select:hover{border-color:var(--ink)}
.tool select:focus,.tool input:focus{border-color:var(--accent)}
.out{margin-top:1.7rem; padding-top:1.5rem; border-top:1px solid var(--line)}
.out > p:only-child{margin:0; color:var(--muted)}
.verdict{display:flex; gap:.7rem; align-items:baseline; margin:0 0 1.5rem; padding:0; background:transparent;
  border-radius:0; font-size:1.05rem; line-height:1.5; color:var(--ink)}
.verdict::before{content:""; flex:none; width:8px; height:8px; border-radius:50%; background:var(--accent);
  transform:translateY(-.1em)}
.out ol.steps{display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:1.7rem 1.2rem; margin:0; padding:0}
.out ol.steps::before{display:none}
.out ol.steps li{padding:0}
.out ol.steps li::after{display:none}
.out ol.steps li::before{position:static; display:grid; place-items:center; aspect-ratio:4 / 3; margin:0 0 .8rem;
  padding:9px; color:var(--muted); font:300 2.1rem/1 var(--sans); letter-spacing:-.03em;
  background:linear-gradient(currentColor,currentColor) top left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) top right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top right/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom right/1px 16px no-repeat,var(--slot); background-origin:content-box; border-radius:3px}
.out ol.steps strong{margin:0 0 .2rem; font-size:.98rem; line-height:1.3}
.out ol.steps span{font-size:.86rem; line-height:1.45}
@media (max-width:640px){
  .out ol.steps{grid-template-columns:repeat(2,minmax(0,1fr)); gap:1.3rem .9rem}
  .out ol.steps li::before{font-size:1.6rem; margin-bottom:.6rem}
  .out ol.steps strong{font-size:.92rem}
  .out ol.steps span{font-size:.8rem}
}

/* ---------- 404: an unexposed frame ---------- */
.p-404 .prose::before{content:"404"; content:"404" / ""; display:grid; place-items:center; aspect-ratio:3 / 2;
  max-width:420px; margin:0 0 2.2rem; padding:12px; color:var(--muted); font:300 4.6rem/1 var(--sans); letter-spacing:-.05em;
  background:linear-gradient(currentColor,currentColor) top left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) top right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) top right/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom left/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom left/1px 16px no-repeat,linear-gradient(currentColor,currentColor) bottom right/16px 1px no-repeat,linear-gradient(currentColor,currentColor) bottom right/1px 16px no-repeat,var(--table); background-origin:content-box; border:1px solid var(--line); border-radius:4px}

/* ---------- footer: studio gray with the grey-scale wedge ---------- */
footer.site{margin-top:0; padding:0 0 2.4rem; background:var(--tint); border-top:0; color:var(--muted); font-size:.93rem}
footer.site::before{content:""; display:block; height:12px; margin:0 0 2.8rem; background:var(--wedge)}
footer.site .fgrid{grid-template-columns:1.5fr 1fr 1fr; gap:2.5rem}
footer.site h2{margin:0 0 1rem; font:400 .64rem/1 var(--mono); letter-spacing:.16em; color:var(--muted)}
footer.site .fgrid > div:first-child h2{margin-bottom:.7rem; font:300 1.7rem/1.1 var(--sans); letter-spacing:-.035em;
  text-transform:none; color:var(--ink)}
footer.site a{display:inline-flex; align-items:center; min-height:44px; color:var(--ink); text-decoration:none}
footer.site a:hover{color:var(--accent-ink); text-decoration:none}
footer.site li{margin:0}
.colophon{margin-top:2.4rem; padding-top:1.2rem; border-top:1px solid var(--line); font:400 .64rem/1.6 var(--mono);
  letter-spacing:.1em; text-transform:uppercase}
@media (max-width:760px){
  footer.site .fgrid{grid-template-columns:1fr 1fr; gap:2rem 1.5rem}
  footer.site .fgrid > div:first-child{grid-column:1 / -1}
}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}}
@media print{
  *,*::before,*::after{-webkit-print-color-adjust:exact!important; print-color-adjust:exact!important}
  .hero.rule::after,.hero .wrap::after,.hero .wrap::before{display:none}
  .tool{box-shadow:none}
  .tw{overflow:visible}
  .tw table{table-layout:fixed}
  .tw th,.tw td{white-space:normal; overflow-wrap:anywhere}
}
