/* Proof page: the dotted lattice stage, hero, plates and registration D-pad. */
/* Self-contained: proof.html does not load css/base.css or css/nav.css. */
:root{
  --stage-bg:#ECEBE6; --dot:#D49C14;
  --ink:#141519; --muted:#55574F; --line:rgba(20,21,25,.14); --line-strong:rgba(20,21,25,.32);
  --surface:rgba(250,250,246,.86); --surface-solid:#FAFAF6; --chip:rgba(20,21,25,.06);
  --accent-ink:#7A5800; --btn-bg:#141519; --btn-ink:#F4F3EE; --thumb-ink:#141519;
  /* tokens css/nav.css reads, so the site header sits on the Proof stage */
  --ease:cubic-bezier(.16,.8,.24,1); --bg:var(--stage-bg); --bg-soft:#F6F5F0; --ink-dim:var(--muted);
  --accent-soft:color-mix(in srgb,var(--dot) 22%,transparent); --sweep-color:rgba(255,255,255,.75);
  --shadow-out:0 20px 42px rgba(60,55,45,.12),0 1px 0 rgba(255,255,255,.7) inset;
  --shadow-in:inset 2px 2px 5px rgba(60,55,45,.16),inset -2px -2px 5px rgba(255,255,255,.85);
  --mark:"Archivo","Helvetica Neue",Arial,sans-serif; --hand:"Caveat","Bradley Hand","Segoe Print",cursive;
  --p1:#3446B4; --p2:#E2457A; --p3:#F0AE16; --plate-blend:multiply;
  --display:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"IBM Plex Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){color-scheme:dark;
    --stage-bg:#3D312E; --dot:#4DFFEA;
    --ink:#EDE7E2; --muted:#B8ADA6; --line:rgba(237,237,231,.13); --line-strong:rgba(237,237,231,.34);
    --surface:rgba(46,37,34,.86); --surface-solid:#2E2522; --chip:rgba(237,231,226,.08);
    --accent-ink:#4DFFEA; --btn-bg:#EDE7E2; --btn-ink:#3D312E; --thumb-ink:#4DFFEA;
    --p1:#4DFFEA; --p2:#FF5C8A; --p3:#F5B82A; --plate-blend:screen;
    --bg-soft:#352A27; --sweep-color:rgba(0,0,0,.55);
    --shadow-out:0 20px 42px rgba(0,0,0,.45),0 1px 0 rgba(255,255,255,.04) inset;
    --shadow-in:inset 2px 2px 5px rgba(0,0,0,.5),inset -2px -2px 5px rgba(255,255,255,.05);}
}
:root[data-theme="dark"]{color-scheme:dark;
  --stage-bg:#3D312E; --dot:#4DFFEA;
  --ink:#EDE7E2; --muted:#B8ADA6; --line:rgba(237,237,231,.13); --line-strong:rgba(237,237,231,.34);
  --surface:rgba(46,37,34,.86); --surface-solid:#2E2522; --chip:rgba(237,231,226,.08);
  --accent-ink:#4DFFEA; --btn-bg:#EDE7E2; --btn-ink:#3D312E; --thumb-ink:#4DFFEA;
    --p1:#4DFFEA; --p2:#FF5C8A; --p3:#F5B82A; --plate-blend:screen;
    --bg-soft:#352A27; --sweep-color:rgba(0,0,0,.55);
    --shadow-out:0 20px 42px rgba(0,0,0,.45),0 1px 0 rgba(255,255,255,.04) inset;
    --shadow-in:inset 2px 2px 5px rgba(0,0,0,.5),inset -2px -2px 5px rgba(255,255,255,.05);}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{min-height:100%}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;color:var(--ink);font:16px/1.55 var(--sans);
  background-color:var(--stage-bg);
  background-image:radial-gradient(circle,color-mix(in srgb,var(--dot) 30%,transparent) 1.1px,transparent 1.5px);
  background-size:12px 12px;background-attachment:fixed;transition:background-color .3s,color .3s}
/* 100%/100% of the fixed box, not 100vw/100vh: on iOS Safari 100vh is the
   toolbar-hidden height, which stretched the dot grid vertically */
#bg{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block;pointer-events:none}
/* side padding carries the device safe-area insets (notch and rounded corners in landscape), as the rest of the site does */
.page{position:relative;z-index:1;padding-left:calc(max(16px,4vw) + env(safe-area-inset-left,0px));padding-right:calc(max(16px,4vw) + env(safe-area-inset-right,0px));padding-block:0 calc(40px + env(safe-area-inset-bottom,0px));max-width:1240px;margin:0 auto}

/* the site header (css/nav.css, as on every Grey Qub page) on the Proof stage. It is fixed, so
   the page starts below it; Proof adds its motion toggle (and the ?ink tester) beside the theme switch */
.page{padding-top:calc(96px + env(safe-area-inset-top,0px))}
nav.site{z-index:6}
nav.site .navmark .word{font-family:"Space Grotesk","Helvetica Neue",Arial,sans-serif}
.nav-right{gap:6px}
.iconbtn{appearance:none;border:0;background:transparent;color:var(--ink);width:36px;height:36px;border-radius:999px;display:grid;place-items:center;cursor:pointer}
.iconbtn:hover{background:var(--chip)}
.iconbtn svg{width:18px;height:18px}
button:focus-visible,a:focus-visible{outline:2px solid var(--dot);outline-offset:2px}

/* hero */
.hero{display:flex;flex-direction:column;gap:18px;padding-block:8px 36px}
.crumb{font:500 11px var(--mono);letter-spacing:.28em;text-transform:uppercase;color:var(--muted)}
/* the lockup: the three-plate registration mark and the wordmark, static and sized with the copy */
.lockup{display:flex;align-items:center;gap:clamp(14px,2.2vw,30px);margin-block:clamp(8px,2vw,24px) clamp(4px,1vw,12px)}
.mark{flex:none;width:clamp(78px,15vw,188px);height:auto;overflow:visible}
.mark .reg{fill:none;stroke:var(--p1);stroke-width:1.2;opacity:.55}
.mark .reg.two{stroke:var(--p2)}
.mark .p1,.mark .p2{mix-blend-mode:var(--plate-blend);opacity:.82}
.mark .p1{fill:var(--p1)}.mark .p2{fill:var(--p2)}
.mark .p3{fill:none;stroke:var(--p3);stroke-width:17;mix-blend-mode:var(--plate-blend);opacity:.9}
.mark .cross{stroke:var(--ink);stroke-width:1.4;opacity:.75}
.title{margin:0;font:800 clamp(64px,15vw,190px)/.86 var(--mark);letter-spacing:-.045em;color:var(--ink);display:flex;align-items:baseline;padding-bottom:.08em}
.title .stop{display:inline-block;width:.17em;height:.17em;margin-left:.06em;background:var(--p3);border-radius:.02em;transform:rotate(-5deg) translateY(.02em)}

/* the splash: "proof" comes up out of the lattice full screen, holds, then dissolves
   back into it while the page fades in (js/proof.js). The page is hidden until then; if the script
   never takes over it shows anyway after 8s */
.splash{position:fixed;inset:0;z-index:2;display:none;place-items:center;pointer-events:none}
.splash-live .splash{display:grid}
.splash .w{font:800 min(31vw,44vh)/.86 var(--mark);letter-spacing:-.045em;color:transparent;padding-bottom:.08em}
.page,nav.site,.topline{transition:opacity .9s ease}
.splashing .page,.splashing nav.site,.splashing .topline{opacity:0;animation:page-late .6s 8s forwards}
@keyframes page-late{to{opacity:1}}

/* the sandbox: the copy from "Show your work." down sits below a stretch of open lattice to
   play with: press for a ripple, drag to draw */
.sandbox{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;display:grid;place-items:center;align-content:center;gap:10px;min-height:clamp(260px,46svh,520px);position:relative;touch-action:pan-y}
.press{appearance:none;border:0;background:transparent;color:var(--ink);cursor:pointer;position:relative;width:min(220px,58vw);aspect-ratio:220/130;display:grid;place-items:center;padding:0;transition:opacity .8s}
.press svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.press path{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:640;stroke-dashoffset:640;animation:pen 1.3s .6s cubic-bezier(.5,0,.3,1) forwards;opacity:.8}
.press span{font:500 clamp(26px,3.4vw,34px)/1 var(--hand);color:var(--ink);transform:rotate(-4deg);opacity:0;animation:penlabel .6s 1.5s forwards}
.press.used{opacity:.25}
@keyframes pen{to{stroke-dashoffset:0}}
@keyframes penlabel{to{opacity:.9}}
.sbhint{margin:0;font:13px var(--mono);color:var(--muted)}
.heroText{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:16px 48px;align-items:end;padding-top:.2em}
.introwrap{display:flex;flex-direction:column;gap:12px}
.tag{font:400 clamp(28px,3vw,42px)/1.02 var(--display);letter-spacing:-.02em;margin:0;text-wrap:balance}
.tag em{font-style:italic;color:var(--accent-ink)}
.intro{margin:0;color:var(--muted);font-size:clamp(15.5px,1.2vw,17.5px);max-width:46ch}
.intro b{color:var(--ink);font-weight:500}
.hint{font:13px var(--mono);color:var(--muted);margin:0}

/* title block */
.titleblock{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px solid var(--line-strong);border-radius:4px;background:var(--surface);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);margin-block:8px 0}
.titleblock div{padding:10px 12px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:2px;min-width:0}
.titleblock div:last-child{border-right:0}
.titleblock dt{font:500 10px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.titleblock dd{margin:0;font:500 14px var(--mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stamp{color:var(--accent-ink)}

/* sections */
section{padding-block:48px 8px}
.fighead{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:8px 20px;margin-bottom:20px;border-bottom:1px solid var(--line-strong);padding-bottom:12px}
.fig{font:500 12px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink)}
h2{font:600 clamp(28px,3.2vw,42px)/1.05 var(--display);letter-spacing:-.015em;margin:0}
.fighead p{margin:0;font:13px var(--mono);color:var(--muted);text-align:right}

.plates{display:grid;gap:16px}
.plates.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.plates.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.plate{background:var(--surface);backdrop-filter:blur(14px) saturate(1.1);-webkit-backdrop-filter:blur(14px) saturate(1.1);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:12px;transition:border-color .2s,transform .2s}
.plate:hover{border-color:var(--line-strong)}
.thumb{position:relative;aspect-ratio:4/3;border-radius:8px;overflow:hidden;background:var(--surface-solid);border:1px solid var(--line)}
.thumb::before{content:"";position:absolute;inset:0;
  background:radial-gradient(circle,var(--thumb-ink) 0 1.6px,transparent 1.9px) 0 0/8px 8px;
  -webkit-mask-image:radial-gradient(circle at var(--x,60%) var(--y,45%),#000 0,rgba(0,0,0,.55) 28%,rgba(0,0,0,.08) 62%,transparent 80%);
          mask-image:radial-gradient(circle at var(--x,60%) var(--y,45%),#000 0,rgba(0,0,0,.55) 28%,rgba(0,0,0,.08) 62%,transparent 80%)}
.thumb::after{content:"";position:absolute;inset:0;
  background:radial-gradient(circle,var(--dot) 0 2.6px,transparent 3px) 4px 4px/8px 8px;
  -webkit-mask-image:radial-gradient(circle at var(--x,60%) var(--y,45%),#000 0,transparent 30%);
          mask-image:radial-gradient(circle at var(--x,60%) var(--y,45%),#000 0,transparent 30%)}
.thumb img{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1;display:block}
.thumb .cover{width:auto;height:72%;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08),0 12px 26px rgba(0,0,0,.22)}
.thumb .icon{width:36%;max-width:108px;height:auto;border-radius:22%;box-shadow:0 1px 0 rgba(0,0,0,.08),0 10px 22px rgba(0,0,0,.18)}
.thumb .no{position:absolute;right:10px;top:9px;font:500 10px var(--mono);letter-spacing:.12em;color:var(--muted);z-index:1;background:var(--surface-solid);padding:2px 6px;border-radius:4px}
.plate h3{margin:0;font:600 19px/1.2 var(--display)}
.plate h3 small{font:500 10px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);vertical-align:middle;margin-left:4px}
.meta{margin:0;font:12.5px/1.5 var(--mono);color:var(--muted)}
.plate p.desc{margin:0;color:var(--muted);font-size:14.5px}
.row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;flex-wrap:wrap}
.chip{font:500 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line-strong);border-radius:999px;padding:3px 8px;color:var(--muted)}
.chip.pencil{border-style:dashed}
.listen{display:inline-flex;align-items:center;gap:7px;text-decoration:none;font:500 14px var(--sans);color:var(--btn-ink);background:var(--btn-bg);padding:8px 13px;border-radius:9px}
.listen svg{width:14px;height:14px}

/* fig 1 registration / d-pad */
.reg{display:grid;grid-template-columns:auto 1fr;gap:24px 36px;align-items:center;background:var(--surface);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:14px;padding:22px}
.pad{display:grid;grid-template-columns:repeat(3,48px);grid-template-rows:repeat(3,48px);gap:2px;position:relative}
.pad button{appearance:none;border:1px solid var(--line-strong);background:var(--surface-solid);color:var(--ink);border-radius:8px;cursor:pointer;display:grid;place-items:center}
.pad button:hover{border-color:var(--ink)}
.pad button:active{transform:scale(.96)}
.pad .c{border-radius:50%}
.pad svg{width:18px;height:18px}
.reg h3{margin:0 0 6px;font:600 22px/1.15 var(--display)}
.reg p{margin:0;color:var(--muted);max-width:56ch}
.reg .meta{margin-top:10px}

footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:56px;padding-block:20px 4px;border-top:1px solid var(--line-strong);color:var(--muted);font-size:14px}
footer nav{position:static;padding:0;display:flex;gap:14px;background:none;z-index:auto}
footer nav a{color:var(--muted);font:13px var(--mono);text-decoration:none}
footer nav a:hover{color:var(--ink)}

@media (max-width:1000px){.plates.four{grid-template-columns:repeat(2,minmax(0,1fr))}.titleblock{grid-template-columns:repeat(3,minmax(0,1fr))}.titleblock div:nth-child(3){border-right:0}.titleblock div:nth-child(-n+3){border-bottom:1px solid var(--line)}}
@media (max-width:760px){
  /* phones: the homepage's 22px gutter, its type scale (15px body, 42px display), and shorter plates */
  .page{padding-left:calc(22px + env(safe-area-inset-left,0px));padding-right:calc(22px + env(safe-area-inset-right,0px))}
  body{font-size:15px}
  .intro{font-size:15.5px}
  .tag{font-size:clamp(30px,8.5vw,38px)}
  h2{font-size:clamp(24px,6.8vw,30px)}
  section{padding-block:36px 8px}
  .fighead{margin-bottom:16px}
  .plates{gap:12px}
  .plate{padding:12px;gap:10px}
  .plate h3{font-size:18px}
  .plate p.desc{font-size:14px}
  .meta{font-size:12px}
  .thumb{aspect-ratio:16/9}
  .thumb .icon{width:30%;max-width:96px}
  .heroText{grid-template-columns:1fr}
  .plates.three,.plates.four{grid-template-columns:1fr}.fighead{grid-template-columns:1fr}.fighead p{text-align:left}.reg{grid-template-columns:1fr}
  .page{padding-top:calc(84px + env(safe-area-inset-top,0px))}
}
@media (max-width:360px){.iconbtn{width:32px}.titleblock div{padding:8px 10px}.titleblock dd{font-size:12.5px}}
@media (prefers-reduced-motion:reduce){body,.plate,.page,.press{transition:none}.press path{animation:none;stroke-dashoffset:0}.press span{animation:none;opacity:.9}}
