/* ===== Neue Montreal ========================================================================
     The typeface of the site. It is self-hosted from assets/fonts - that folder's README names the
     four files and what to call them.

     local() is tried first, so a machine with the family installed in Font Book sets in it with no
     download at all. That is a convenience for working on the site, not for visitors: once the
     woff2 files are in place, dropping the local() entries makes the preview show exactly what
     someone else's browser will show. Everything falls through to Geist, so the page never lands
     on a system default while a file is missing.

     Four weights, used deliberately: 400 carries body copy, 500 the navigation, labels and
     secondary headings, 600 emphasis, 700 is held back for the few places that need to shout. */
  @font-face{font-family:'PP Neue Montreal';font-style:normal;font-weight:400;font-display:swap;
    src:local('PP Neue Montreal Book'),local('PPNeueMontreal-Book'),local('Neue Montreal Book'),
        local('PP Neue Montreal Regular'),local('Neue Montreal'),
        url(assets/fonts/PPNeueMontreal-Book.woff2) format('woff2'),
        url(assets/fonts/PPNeueMontreal-Book.otf) format('opentype')}
  @font-face{font-family:'PP Neue Montreal';font-style:normal;font-weight:500;font-display:swap;
    src:local('PP Neue Montreal Medium'),local('PPNeueMontreal-Medium'),local('Neue Montreal Medium'),
        url(assets/fonts/PPNeueMontreal-Medium.woff2) format('woff2'),
        url(assets/fonts/PPNeueMontreal-Medium.otf) format('opentype')}
  /* 600 is the emphasis weight - the bold phrases in the introduction, the card titles. SemiBold
     if the full family is there; the four essentials have no SemiBold, so Bold stands in. */
  @font-face{font-family:'PP Neue Montreal';font-style:normal;font-weight:600;font-display:swap;
    src:local('PP Neue Montreal SemiBold'),local('PPNeueMontreal-SemiBold'),
        url(assets/fonts/PPNeueMontreal-SemiBold.woff2) format('woff2'),
        url(assets/fonts/PPNeueMontreal-SemiBold.otf) format('opentype'),
        url(assets/fonts/PPNeueMontreal-Bold.woff2) format('woff2'),
        url(assets/fonts/PPNeueMontreal-Bold.otf) format('opentype')}
  /* One word on the whole site leans - EVER, in section four. Declared so that it is a drawn
     italic the moment the file is there; without it the browser slants the upright, which is a
     stand-in rather than a typeface. */
  @font-face{font-family:'PP Neue Montreal';font-style:italic;font-weight:400;font-display:swap;
    src:local('PP Neue Montreal Italic'),local('PPNeueMontreal-Italic'),local('Neue Montreal Italic'),
        url(assets/fonts/PPNeueMontreal-Italic.woff2) format('woff2'),
        url(assets/fonts/PPNeueMontreal-Italic.otf) format('opentype')}
  @font-face{font-family:'PP Neue Montreal';font-style:normal;font-weight:700;font-display:swap;
    src:local('PP Neue Montreal Bold'),local('PPNeueMontreal-Bold'),local('Neue Montreal Bold'),
        url(assets/fonts/PPNeueMontreal-Bold.woff2) format('woff2'),
        url(assets/fonts/PPNeueMontreal-Bold.otf) format('opentype')}
  :root{
    /* The paper is a cool grey-blue now, not cream. Every neutral on the site is mixed off the
       same axis - the ink, the second ink and the hairline are all slightly blue rather than
       slightly warm - because a warm grey next to a cool paper is the one thing that would make
       the change read as a mistake. --wash is the deeper band used for section transitions and
       --accent the slate the dividers and the small marks are drawn in. Neither is a fill: the
       site is grey-blue in its neutrals, not blue in its surfaces. */
    --bg:#FFFFFF; --paper:#FFFFFF; --ink:#14171C; --ink2:#5C6470; --hair:#DFE4EB;
    --wash:#E1E7EF; --accent:#3C5A77;
    /* One face carries the whole site. Geist sits at the end of the stack as the understudy. */
    --sans:'PP Neue Montreal','Neue Montreal','Geist',system-ui,-apple-system,sans-serif;
    /* Labels, metadata and timestamps used to run in Geist Mono. They are set in the text face now
       - small, tracked out, uppercase - which reads as an editorial caption rather than a terminal
       line. The token is kept so the intent stays legible at every call site; anything showing a
       figure that changes gets tabular figures locally so the column stops jittering. */
    --mono:var(--sans);
    /* The system face. The page no longer sets in it - Neue Montreal carries the site - but the
       Mini Ines panel still does: that sheet is dressed as a native chat app, and the illusion is
       held by the face the operating system uses for exactly that. One token, one island. */
    --sf:-apple-system,BlinkMacSystemFont,'SF Pro Text','Helvetica Neue','Segoe UI',Roboto,Arial,sans-serif;
    --ease:cubic-bezier(.22,1,.36,1); --g:clamp(24px,6.5vw,110px); --gi:clamp(40px,8vw,150px);
    /* The measure. The introduction set it first and every reading column below follows it, so the
       chapters share one left edge and one right edge rather than each being given its own. --g is
       the gutter outside it; this is the width of the text inside. Change it here, not at a
       section. */
    --copy-w:min(980px,100%);
    /* And one size to go with the one measure: the introduction and the AI section are the same
       voice at the same scale, so the reader crosses from one to the other without the type
       changing under them. Set here, never at a section. */
    --copy-size:clamp(20px,2.35vw,34px);
    /* the masthead's size, and the height it takes off the foot of the landing. Anything sitting on
       the bottom edge - the cards, the watcher - is held clear by --mast-h rather than by a guess. */
    /* the three prints: one width for all of them, each height set by its own photograph */
    --az-h:200px;  /* the Tifinagh strip: a band across the top of the copy, not a backdrop behind it */
    /* Two small portals, not two hero features: the pair is drawn about a third smaller than
       the three it replaces, so fewer objects also means less weight on the screen. */
    --tc-w:clamp(120px,13vw,200px); --tc-pad:clamp(6px,.5vw,9px); --tc-lab:clamp(26px,2.2vw,34px);
    --mast:clamp(44px,min(17.6vw,30vh),320px);
    /* the name is not laid on the bottom edge, it runs off it: the last slice of the letterforms is
       cut by the frame, so the line reads as a masthead printed to the trim rather than a caption
       floating above it. --mast-h is what is left visible, which is what the cards clear. */
    --mast-cut:calc(var(--mast) * .11); --mast-h:calc(var(--mast) * .78 - var(--mast-cut));
  }
  html{scroll-behavior:auto;scrollbar-width:none;-ms-overflow-style:none}
  html::-webkit-scrollbar,body::-webkit-scrollbar,#reader::-webkit-scrollbar{display:none;width:0;height:0}
  body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
  a{color:var(--ink);text-decoration:none}a:hover{color:var(--ink2)}
  .mono{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2)}
  #nav{position:fixed;left:0;right:0;top:0;height:34px;z-index:9;display:flex;justify-content:space-between;align-items:center;padding:0 14px;box-sizing:border-box;
    background:color-mix(in srgb,var(--bg) 72%,transparent);backdrop-filter:blur(24px) saturate(1.3);-webkit-backdrop-filter:blur(24px) saturate(1.3);border-bottom:1px solid rgba(19,19,19,.08);font-size:13px;letter-spacing:-.005em;color:var(--ink)}
  .mbl,.mbr{display:flex;align-items:center;gap:4px}
  /* Medium, not SemiBold: Neue Montreal's 600 has real weight to it and the bar is meant to sit
     quietly under the film. The name reads as a mark here, not as a heading. */
  #nav .links{display:flex;gap:2px}
  #nav .links a,#nav .soc{padding:4px 9px;border-radius:5px;color:var(--ink);transition:background 150ms var(--ease)}
  #nav .links a:hover,#nav .soc:hover{background:rgba(19,19,19,.09)}
  .mbr{gap:6px;font-size:12.5px}
  .mbr .soc{color:var(--ink2)}
  #mbDate{margin-left:10px;color:var(--ink)} #mbTime{margin-left:2px;padding-right:4px}
  #sig{position:fixed;left:var(--g);bottom:36px;z-index:3;display:flex;gap:20px;flex-wrap:wrap;mix-blend-mode:multiply}
  #idx{position:fixed;right:var(--g);bottom:36px;z-index:3;mix-blend-mode:multiply}
  #veil{position:fixed;inset:0;z-index:2;background:var(--ink);pointer-events:none;opacity:0}
  /* ===== the intro story: four scenes on cream, revealed through watercolour blots ===== */
  #introSeq{height:816vh;min-height:0;padding:0;display:block;position:relative}   /* eight zones: the fourth transition runs only as long as she is in frame */
  #seqPin{position:sticky;top:0;height:100vh;overflow:hidden;background:var(--bg);display:block;padding:0;box-sizing:border-box}
  #stStage{position:absolute;inset:0;overflow:hidden}
  /* full bleed: every scene fills the page, the words sit over its quiet side */
  .scn{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none}   /* no fade: the cuts are hard, which reads smoother */
  .scn .blot{position:absolute;inset:0;overflow:hidden;isolation:isolate;transform:scale(1)}
  .scn video{display:block;position:static;width:100%;height:100%;transform:none;opacity:1;object-fit:cover;-webkit-mask-image:none;mask-image:none}
  .scn.on{opacity:1}
  .trw{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;z-index:2;overflow:hidden;isolation:isolate;transform:scale(1)}
  .trw.on{opacity:1}
  .trv{display:block;position:static;width:100%;height:100%;object-fit:cover;transform:none;opacity:1;-webkit-mask-image:none;mask-image:none}
  /* the last transition is filmed upright: the wrapper takes the picture's own shape so its
     four edges can be dissolved into the page rather than meeting it on a seam */
  .trw[data-t="3"]{left:50%;right:auto;width:min(100%,calc(100vh*0.5576));transform:translateX(-50%) scale(1)}
  .trw[data-t="3"] .trv{object-fit:cover;
    -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 4%,#000 96%,transparent 100%),linear-gradient(to right,transparent 0,#000 5%,#000 80%,transparent 100%);
            mask-image:linear-gradient(to bottom,transparent 0,#000 4%,#000 96%,transparent 100%),linear-gradient(to right,transparent 0,#000 5%,#000 80%,transparent 100%);
    -webkit-mask-composite:source-in;mask-composite:intersect}
  /* the first screen has its own composition: the name large and centred, in white, over the frame */
  #firstWords{position:absolute;inset:0;z-index:4;display:grid;place-items:center;padding:0 5vw;text-align:center;pointer-events:none}
  #firstWords .chap{position:relative;left:auto;top:auto;width:auto;display:block;text-align:center}
  #firstWords .story.big{margin:0;color:#fff;font-family:var(--sans);font-weight:400;font-size:clamp(44px,12vw,170px);
    line-height:1;letter-spacing:-.028em;max-width:none;text-wrap:nowrap}
  #firstWords p:not(.big){margin:6px 0 0;color:#fff;font-family:var(--sans);font-weight:400;font-size:clamp(18px,3.5vw,58px);
    line-height:1.16;letter-spacing:-.016em;max-width:none}
  #firstWords .story.big,#firstWords p{text-shadow:0 2px 44px rgba(19,19,19,.26)}
  /* the cue and the slide marks: centred, white, the same on every scene.
     Scene four is a pale frame, so the type carries a tight dark contact shadow rather than a wash. */
  #seqPin #hint{left:50%;transform:translateX(-50%);bottom:46px;font-family:var(--sans);font-size:clamp(13px,1.05vw,16px);
    letter-spacing:0;text-transform:lowercase;color:#fff;white-space:nowrap;
    text-shadow:0 1px 2px rgba(19,19,19,.55),0 0 7px rgba(19,19,19,.4)}
  /* one small pool of shade travels with the cue, so white holds even on the pale last scene */
  #seqPin #hint{isolation:isolate}
  #seqPin #hint::before{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:-1;
    width:calc(100% + 120px);height:60px;pointer-events:none;
    background:radial-gradient(ellipse at center,rgba(19,19,19,.30),rgba(19,19,19,.16) 45%,rgba(19,19,19,0) 74%)}
  #seqPin #hint .ar{display:none}
  #seqPin #dots{left:50%;transform:translateX(-50%);bottom:26px;filter:drop-shadow(0 1px 3px rgba(19,19,19,.45))}
  #seqPin #dots i{background:rgba(255,255,255,.45)}
  #seqPin #dots i.on{background:#fff}
  @media (max-width:900px){#seqPin #hint{bottom:40px}#firstWords .story.big{text-wrap:balance}
    #seqPin.first #seqScrim{background:none}}   /* the first screen carries its own white type: no wash under it */

  /* the words, laid over the picture with the page's own cream carrying them */
  #seqScrim{position:absolute;inset:0;z-index:3;pointer-events:none;background:none}   /* nothing over the picture: just the video */
  .story-col,#hint,#dots{text-shadow:0 1px 26px rgba(255,255,255,.72),0 0 6px rgba(255,255,255,.5)}   /* the glow belongs to the letters, not to a panel over the frame */
  #seqPin .chap .lead,#seqPin .chap .cue{color:var(--ink)}
  .story-col{position:absolute;left:var(--gi);top:50%;transform:translateY(-50%);width:calc(50vw - var(--gi) - 3vw);max-width:620px;height:min(46vh,400px);z-index:4}
  .chap{position:absolute;left:0;top:0;width:100%;display:flex;flex-direction:column;gap:0;pointer-events:none;opacity:0}
  .chap.on{opacity:1;pointer-events:auto}
  .chap>*{opacity:0;transform:translateY(10px);filter:blur(6px);transition:opacity 900ms var(--ease),transform 1000ms cubic-bezier(.22,1,.36,1),filter 900ms var(--ease)}
  .chap.on>*{opacity:1;transform:none;filter:blur(0)}
  .chap.on>*:nth-child(1){transition-delay:260ms} .chap.on>*:nth-child(2){transition-delay:400ms} .chap.on>*:nth-child(3){transition-delay:540ms}
  /* one voice per level: the name, the sentence, the aside */
  .chap p.story.big{margin:0;font-weight:500;font-size:clamp(40px,5.1vw,76px);line-height:.95;letter-spacing:-.038em;max-width:11ch;text-wrap:balance}
  .chap p.story{margin:20px 0 0;font-weight:400;font-size:clamp(21px,1.95vw,29px);line-height:1.26;letter-spacing:-.018em;max-width:27ch;color:var(--ink);text-wrap:balance}
  .chap .lead{margin:16px 0 0;font-size:clamp(15px,1.15vw,17.5px);line-height:1.55;letter-spacing:0;max-width:36ch;color:var(--ink2);text-wrap:pretty}
  .chap .cue{margin-top:30px;font-family:var(--mono);font-size:11px;line-height:1.6;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2);max-width:none}
  .chaplink{border-bottom:1px solid var(--hair);padding-bottom:3px;transition:border-color 250ms var(--ease)} .chaplink:hover{border-color:var(--ink)}
  /* scene four is full-bleed and bright: the words get a little air behind them */
  #dots{position:absolute;left:var(--gi);bottom:36px;display:flex;gap:6px;z-index:4;transition:left 700ms var(--ease),transform 700ms var(--ease),bottom 700ms var(--ease)}
  #dots i{display:block;width:28px;height:1px;background:var(--hair);transition:background 400ms}#dots i.on{background:var(--ink)}
  #hint{position:absolute;left:var(--gi);bottom:60px;transform:none;z-index:4;transition:opacity 600ms var(--ease),left 700ms var(--ease),transform 700ms var(--ease),bottom 700ms var(--ease);color:var(--ink2);white-space:nowrap}   /* over the picture, on its quiet side */
  #hint.off{opacity:0}
  body.locked #sig,body.locked #idx,body.quiet #sig,body.quiet #idx{opacity:0;pointer-events:none}
  #nav{transition:opacity 700ms var(--ease),transform 700ms var(--ease)}
  body.locked #nav,body.inDark #nav{opacity:0;transform:translateY(-100%);pointer-events:none}
  /* the story and the landing are the same cream, so they never have to cut: while she turns and walks out,
     the landing rises through the frame she is leaving. When the intro finally lets go, what is on screen
     is already the landing, in the place it will keep - so the swap has nothing left to show. */
  /* She used to still be on screen, at full strength, while the headline and the colour field came
     up through her - three things at once. Fading the whole stage instead just dimmed everything.
     So only the figure fades: the stage behind her is already the same cream the landing sits on,
     so the screen never darkens, and by the time the field has any real strength she has gone. */
  /* A true cross-dissolve. The two ramps used to run at different speeds over different stretches:
     she was down to a tenth by --ho .48 while the landing had not started, so for a third of the
     handoff the screen held neither of them and went to empty cream. That gap is the blink.
     These two are complements - one leaves over exactly the span the other arrives over - so their
     opacities sum to about 1 at every point, and something is always on screen. The landing is
     fully there by .58, and the rest of the scroll is a hold on it before the intro is removed. */
  body.handoff .trw[data-t="3"]{opacity:clamp(0,calc((.58 - var(--ho,0)) / .40),1);transition:opacity 140ms linear}
  body.handoff #hero .pin{position:fixed;left:0;right:0;top:0;height:100vh;z-index:5;pointer-events:none;
    opacity:clamp(0,calc((var(--ho,0) - .16) / .42),1);transition:opacity 140ms linear}
  body.handoff #skip{opacity:calc(1 - var(--ho,0));pointer-events:none}
  body.handoff #nav{opacity:clamp(0,calc((var(--ho,0) - .16) / .42),1);
    transform:translateY(calc((clamp(0,calc((var(--ho,0) - .16) / .42),1) - 1) * 100%));pointer-events:none}
  @media (prefers-reduced-motion:reduce){body.handoff #hero .pin{transition:none}}
  #sig,#idx{transition:opacity 700ms var(--ease)}
  @media (max-width:900px){
    .scn,.trw{inset:0;width:100%;height:100%}
    /* the words take the foot of the screen so her face keeps the light */
    /* a phone has no empty side - she fills the frame - so the foot keeps a light fade or the words are lost */
    #seqScrim{background:linear-gradient(0deg, rgba(255,255,255,.92) 4%, rgba(255,255,255,.72) 26%, rgba(255,255,255,.34) 44%, rgba(255,255,255,0) 62%)}
    .story-col{left:var(--g);right:var(--g);width:auto;top:auto;bottom:9vh;transform:none;height:38vh}
    .chap{position:absolute;top:0;bottom:auto;transform:none;gap:0}
    #hint{letter-spacing:.06em}
    #idx{display:none}
    #hero .col{margin-top:24vh}
    .chap .story{max-width:none}
  }
  @media (prefers-reduced-motion:reduce){.scn .blot,.chap>*{transition:none}}
  #skip{position:fixed;right:14px;top:14px;z-index:6;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);background:rgba(255,255,255,.55);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.9);border-radius:999px;padding:12px 18px;cursor:pointer;box-shadow:0 10px 30px rgba(19,19,19,.06);transition:opacity 500ms var(--ease),transform 500ms var(--ease),background 300ms var(--ease)}
  #skip:hover{background:#fff}
  #skip.off{opacity:0;pointer-events:none;transform:translateY(-8px)}
  main{position:relative;z-index:1}
  body{overscroll-behavior-y:contain}   /* the pull-up at the top belongs to the intro, not to the browser's refresh */
  section{min-height:100vh;box-sizing:border-box;padding:0 var(--g);display:flex;align-items:center}
  .t{filter:blur(10px);opacity:0;transform:translateY(6px);transition:filter 900ms var(--ease),opacity 900ms var(--ease),transform 900ms var(--ease)}
  .in .t{filter:blur(0);opacity:1;transform:none}
  .t:nth-child(2){transition-delay:80ms}.t:nth-child(3){transition-delay:160ms}.t:nth-child(4){transition-delay:240ms}
  h1{margin:0;font-weight:500;font-size:clamp(40px,6.2vw,88px);line-height:.98;letter-spacing:-.03em}
  h2{margin:0;font-weight:500;font-size:clamp(30px,3.2vw,44px);line-height:1.05;letter-spacing:-.025em}
  .story{margin:0;font-weight:500;font-size:clamp(28px,3.6vw,52px);line-height:1.08;letter-spacing:-.03em;max-width:18ch}
  p{margin:0;font-size:17px;line-height:1.65}
  .lead{font-size:18px;color:var(--ink2);max-width:520px;line-height:1.6}
  .col{display:flex;flex-direction:column;gap:26px;max-width:560px}
  /* hero: text sits ON the eye, centred */
  /* The name grows past the window's width inside this box, and an in-flow element that wide
     would put a horizontal scrollbar on the document. clip rather than hidden: it trims without
     turning the hero into a scroll container. */
  #hero{min-height:130vh;align-items:flex-start;padding:0;overflow:hidden;overflow:clip}
  #hero .pin{position:sticky;top:0;height:100vh;width:100%;display:flex;align-items:center;justify-content:center;text-align:center;padding:0 var(--g);box-sizing:border-box}
  #hero .col{align-items:center;max-width:min(820px,100%);min-width:0;width:100%;position:relative;z-index:2}
  /* The landing stands on a colour field - the same field as before, now moving. The blur is baked
     into the file rather than applied with a CSS filter, so the browser paints a plain video
     instead of gaussian-blurring 24 frames a second. The clip is mirrored forward-and-back: the
     source does not loop (its last frame sits a long way from its first) and a straight loop
     jumped every five seconds. The still is the poster, so first paint is identical to what was
     here before and nothing flashes while the video decodes. */
  #hero .hvid{position:absolute;inset:0;z-index:0;pointer-events:none;width:100%;height:100%;
    object-fit:cover;display:block}
  #hero .pin::before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
    /* The overlay is unchanged: black at 5%. It is not there to darken the screen - at that weight
       it only takes the glare off the brightest part of the field so the type has something to sit
       on. No cream anywhere. */
    background:linear-gradient(rgba(0,0,0,.05),rgba(0,0,0,.05))}
  /* Someone who has asked their machine to stop animating gets the still instead. */
  @media (prefers-reduced-motion:reduce){
    #hero .hvid{display:none}
    #hero .pin::before{background:linear-gradient(rgba(0,0,0,.05),rgba(0,0,0,.05)),
               url(images/poster-2.jpg) center/cover no-repeat}
  }
  #hero .col .t{transition:none}
  /* ===== the landing's name and line =====
     The typography is the intro's opening frame, brought onto the homepage unchanged: the same
     face, weight and white, with the same soft contact shadow holding an edge against the picture.
     What changed is where it sits - the block is hung near the top of the frame rather than in the
     middle of it, so the cards below keep their room. The size is capped against the viewport's
     height as well as its width: at the intro's 12vw this line filled a screen it had to itself,
     and it no longer has one. */
  /* ===== the masthead =====
     The name is no longer a line in the column; it is the floor of the screen, set as wide as the
     frame allows and sitting on the bottom edge. The face, weight, colour, tracking and contact
     shadow are the ones it already had - only where it sits and how big it is have changed.
     --mast carries the size so the cards can be held clear of it by the same number. */
  /* Anchored to the foot of the hero, not to the viewport: it rides that edge, so as the hero
     leaves the screen the name leaves with it and the introduction slides over it. */
  body #hero .hname{position:absolute;left:0;right:0;bottom:calc(var(--mast-cut) * -1);z-index:2;
    transform-origin:50% 50%;will-change:transform;
    margin:0;padding:0 clamp(12px,2vw,40px);text-align:center;white-space:nowrap;
    color:#fff;font-family:var(--sans);font-weight:400;
    font-size:var(--mast);line-height:.78;letter-spacing:-.028em;max-width:none}
  /* Two words, two surfaces. The stroke is always drawn and always the same width - only its
     colour changes - so hovering cannot alter a single glyph's metrics and the line never moves. */
  /* inline-block with the line's own leading, so a word's hit area is the band it actually occupies.
     As plain inline text the span's box is the font's full em - some 70px of invisible overhang above
     the line at this size - which reached over the foot of the Contact card and took its pointer. */
  body #hero .hnw{display:inline-block;line-height:.78;vertical-align:baseline;
    -webkit-text-stroke:max(1.4px,.013em) transparent;paint-order:stroke fill;
    transition:color 200ms var(--ease),-webkit-text-fill-color 200ms var(--ease),
               -webkit-text-stroke-color 200ms var(--ease),text-shadow 200ms var(--ease)}
  body #hero .hnw-out{color:transparent;-webkit-text-fill-color:transparent;
    -webkit-text-stroke-color:#fff;text-shadow:none}
  /* The watcher is fixed to the viewport and shows on every screen, but only the landing has a
     masthead beneath her. #hero is marked inert the moment a view opens, so that attribute is the
     signal: lift her clear of the name at home, leave her exactly where she was everywhere else.
     Specificity carries this over chat.css without editing that file or its cache key. */
  /* the hovered word's scene, brought up behind the whole composition rather than beside the type */
  #hero .hvx{opacity:0;transition:opacity 240ms var(--ease)}
  #hero .hvx-on{opacity:1}
  @media (prefers-reduced-motion:reduce){
    body #hero .hnw{transition:none}
    #hero .hvx{transition:none}
  }
  body #hero .htag{margin:0;color:#fff;font-family:var(--sans);font-weight:400;
    font-size:clamp(18px,min(3.2vw,4.6vh),52px);line-height:1.16;letter-spacing:-.016em;max-width:none}
  body #hero .hname,body #hero .htag{text-shadow:0 2px 44px rgba(19,19,19,.26)}

  /* Everything on this screen except the headline is set in white. The headline keeps its ink
     veil - it is the one element that reads as glass, and white would erase it. A soft, wide
     shadow rides under the white so the letters keep an edge where the blur runs pale. */
  body #hero .proof,body #hero .proof span{
    color:#fff;text-shadow:0 1px 2px rgba(28,24,20,.38),0 0 18px rgba(28,24,20,.30);
    font-family:var(--sans);font-weight:500}
  /* ===== the screen is built like an iPad lock screen =====
     Two things, both at the top: a line of small type, and a very large clock under it. Here the
     stats line is the date and the sentence is the clock, so the sentence starts at the top of
     the frame rather than the middle of it, set at lock-screen scale. The size is capped against
     the viewport height as well as its width - at this size a short laptop screen would otherwise
     push the last line off the bottom. */
  body #hero .pin{align-items:flex-start}
  body #hero .col{padding-top:clamp(56px,9vh,110px)}   /* the name is back, and it wants the top of
      the frame: enough to clear the menu bar, not enough to drift back toward the middle */
  body #hero .proof{margin-top:0;margin-bottom:clamp(5px,1vh,11px);row-gap:6px;
    font-size:clamp(9.5px,min(.78vw,1.22vh),11.5px);letter-spacing:.09em}
  /* Two lines, and the break is written into the markup rather than left to the measure. The face
     differs by platform - real SF on a Mac, a stand-in elsewhere - and at this size a few percent
     of metric difference is the whole margin between two lines and three. */
  /* At lock-screen scale the 820px column broke the sentence into six-character lines and wrapped
     the stats onto two rows. The landing column is widened so both read as single, wide lines of
     type; every other section keeps the 820px measure. */
  body #hero .col{max-width:min(1400px,100%);
    /* the column's own 26px gap set the distance, not the margin below the line: with the name
       gone there are only two things here, so the gap is closed and the margin does the spacing */
    row-gap:0}
  @media (max-width:640px){
    body #hero .col{margin-top:0;padding-top:clamp(44px,7vh,84px)}
    body #hero .proof{font-size:clamp(9px,2.3vw,10.5px);letter-spacing:.07em;gap:8px}
  }
  .cta{font-size:clamp(28px,3vw,40px);font-weight:500;letter-spacing:-.025em;line-height:1.05;border-bottom:1px solid var(--ink);padding-bottom:6px}
  @media (max-width:400px){#hint{letter-spacing:.04em;font-size:10px}}
  @media (max-width:900px){#sig{display:none}#nav .links{display:none}.mbr .soc{display:none}}
  /* On a finger, several of these were 17-23px tall. The hit area is widened with a pseudo-element
     so nothing moves: the type keeps its size and spacing, the target becomes 44px. */
  @media (hover:none){
    #seeWork,.splink,.cct a,.ftbottom a,.ft a,.seg button,.swatches button,#ccBtn,#custBtn,
    .mbr .soc,#rdClose,.rd-next,.chaplink,.wlink,.libtn{position:relative}
    #seeWork::after,.splink::after,.cct a::after,.ftbottom a::after,.ft a::after,
    .seg button::after,.swatches button::after,#ccBtn::after,#custBtn::after,
    .mbr .soc::after,#rdClose::after,.rd-next::after,.chaplink::after,.wlink::after,.libtn::after{
      content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
      width:max(100%,44px);height:max(100%,44px);pointer-events:auto}
  }
  @media (prefers-reduced-motion:reduce){.t{transition:none;filter:none;opacity:1;transform:none}.card{transition:none}}

  /* ===== the case-study reader ===== */
  body.reading{overflow:hidden}
  /* ===== the reader: a fixed stage. The page does not scroll - the story does. =====
     One beat is centred at a time; scrolling dissolves it into the next. The scroll itself comes
     from a silent track behind the stage, so nothing on screen ever moves out of place. */
  #reader{position:fixed;inset:0;z-index:8;background:var(--bg);
    overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none}
  .rd-bar{position:fixed;left:0;right:0;top:34px;z-index:3;display:flex;justify-content:space-between;align-items:center;
    padding:22px var(--g);pointer-events:none}
  .rd-bar > *{pointer-events:auto}
  #rdClose{border:0;background:none;font:inherit;font-family:var(--mono);font-size:11px;letter-spacing:.14em;
    text-transform:uppercase;color:var(--ink2);cursor:pointer;padding:6px 0;transition:color 250ms var(--ease)}
  #rdClose:hover{color:var(--ink)}
  #rdClose:focus-visible,#rdRail:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
  #rdStage{position:sticky;top:0;height:100vh;height:100dvh;overflow:hidden}
  #rdBody{position:absolute;inset:0;margin:0;padding:0}

  /* every beat occupies the whole stage; only opacity, a little drift and a little blur separate them */
  .bt{position:absolute;inset:0;display:flex;flex-direction:column;
    align-items:center;justify-content:center;gap:0;text-align:center;padding:92px var(--g);box-sizing:border-box;
    opacity:0;pointer-events:none;will-change:opacity,transform,filter}
  .bt.live{pointer-events:auto}
  .bt > *{margin:0;max-width:26ch;text-wrap:balance}
  .bt p + p{margin-top:1.15em}
  .bt p{font-size:clamp(20px,2.05vw,29px);line-height:1.44;letter-spacing:-.017em;color:var(--ink)}
  .bt .mono{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink2);max-width:none}
  .bt .mono + *{margin-top:22px}
  /* the pivots and the questions the whole story turns on */
  .bt.mid p{font-size:clamp(26px,3vw,42px);line-height:1.16;letter-spacing:-.028em;font-weight:500;max-width:20ch}
  .bt.big p{font-size:clamp(32px,4.4vw,68px);line-height:1.03;letter-spacing:-.036em;font-weight:500;max-width:15ch}
  .bt.big.q p{max-width:17ch}
  /* the title card */
  .bt.open h1{font-weight:500;font-size:clamp(38px,5.6vw,88px);line-height:.98;letter-spacing:-.04em;max-width:13ch}
  .bt.open .dek{margin-top:26px;font-size:clamp(16px,1.4vw,20px);line-height:1.55;letter-spacing:-.005em;color:var(--ink2);max-width:34ch}
  .bt.open .facts{margin-top:34px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink2);max-width:none}
  /* a short run of lines that belong together */
  .bt ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5em;max-width:36ch}
  .bt li{font-size:clamp(19px,1.9vw,26px);line-height:1.32;letter-spacing:-.017em;color:var(--ink);text-wrap:balance}
  .bt .lead + ul,.bt p + ul{margin-top:1.15em}
  /* the closing word from someone else */
  .bt.quote p{font-size:clamp(22px,2.5vw,36px);line-height:1.24;letter-spacing:-.026em;font-weight:500;max-width:22ch}
  .bt.quote .by{margin-top:24px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink2);max-width:none;font-weight:400}
  /* a chapter card and the door out are moments too: neither is allowed to be a small mark on an empty screen */
  .bt.label .mono{font-size:clamp(12px,1.25vw,16px);letter-spacing:.3em;color:var(--ink);
    border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);padding:22px 0}
  .bt.end .mono{color:var(--ink2)}
  .bt.end .rd-next{display:inline-block;margin-top:18px;font-family:var(--sans);text-transform:none;
    font-size:clamp(30px,4vw,58px);font-weight:500;line-height:1.04;letter-spacing:-.032em;color:var(--ink);
    border-bottom:1px solid var(--hair);padding-bottom:8px;transition:border-color 250ms var(--ease);max-width:none}
  .rd-next:hover{border-color:var(--ink)}
  /* how far through the story you are, and the only instruction the stage ever gives */
  #rdRail{position:absolute;left:var(--g);right:var(--g);bottom:30px;height:1px;background:var(--hair)}
  #rdRail i{display:block;height:100%;width:0;background:var(--ink);transition:width 160ms linear}
  #rdCue{position:absolute;left:50%;transform:translateX(-50%);bottom:46px;font-size:10px;letter-spacing:.18em;
    text-transform:uppercase;color:var(--ink2);opacity:0;transition:opacity 600ms var(--ease);pointer-events:none}
  #rdCue.on{opacity:1}
  #rdTrack{height:0}
  @media (max-width:900px){
    .bt{padding:80px var(--g)}
    .bt > *{max-width:22ch}
    .bt p{font-size:clamp(19px,4.6vw,24px);line-height:1.42}
    .bt.mid p{font-size:clamp(24px,6.6vw,34px);max-width:16ch}
    .bt.big p{font-size:clamp(29px,8.6vw,46px);max-width:12ch}
    .bt li{font-size:clamp(18px,4.4vw,23px)}
    .bt ul{max-width:26ch}
  }
  @media (prefers-reduced-motion:reduce){.bt{transition:none}}

  /* ===== the same reader, read straight =====
     A case study is a sequence of moments, so it gets the stage: one beat centred, dissolving into
     the next. The about story is not that - it is one piece of reading, and at seventeen beats it
     was seventeen screens of scrolling for five short sections. So when it opens, the stage is
     switched off and the beats fall back into ordinary flow: one column, left-aligned, scrolled the
     way anything else is scrolled. Nothing about the case-study reader changes; this is a modifier
     the about story alone turns on, and every rule below is scoped to it.
     The beats keep their classes, so the hierarchy the story was written with - the title card, the
     pivots, the chapter rules, the quote - survives the change of format instead of flattening. */
  #reader.plain #rdStage{position:static;height:auto;overflow:visible}
  /* The measure is set in pixels, not ch: `ch` here resolves against #rdBody's inherited 16px, not
     against the 19-20px the story is actually set in, which gave a column a third too narrow. */
  #reader.plain #rdBody{position:static;inset:auto;width:min(760px,calc(100% - 2 * var(--g)));margin:0 auto;
    padding:clamp(116px,16vh,170px) 0 clamp(96px,14vh,150px);box-sizing:border-box}
  #reader.plain .bt{position:static;inset:auto;display:block;opacity:1;filter:none;transform:none;
    pointer-events:auto;text-align:left;padding:0;margin:0 0 clamp(20px,2.6vh,30px);
    min-height:0;will-change:auto;transition:none}   /* a beat is a <section>, and the page's own
      section rule gives every section a 100vh floor. On the stage that never showed, because a beat
      was absolutely positioned; in flow it made each one a screen tall again - the exact thing this
      is here to undo. */
  #reader.plain .bt > *{max-width:none}
  #reader.plain .bt p{font-size:clamp(17px,1.34vw,20px);line-height:1.62;letter-spacing:-.008em}
  /* the title card becomes the head of the document */
  #reader.plain .bt.open{margin-bottom:clamp(34px,4.6vh,52px)}
  #reader.plain .bt.open h1{font-size:clamp(32px,4vw,54px);line-height:1.04;letter-spacing:-.032em}
  #reader.plain .bt.open .dek{margin-top:16px;font-size:clamp(16px,1.3vw,19px)}
  /* the pivots keep their weight without keeping a screen each */
  #reader.plain .bt.mid p,#reader.plain .bt.big p{font-size:clamp(20px,1.9vw,26px);line-height:1.32;
    letter-spacing:-.022em;font-weight:500;max-width:none}
  #reader.plain .bt.mid,#reader.plain .bt.big{margin:clamp(26px,3.4vh,40px) 0 clamp(26px,3.4vh,40px)}
  /* a chapter rule earns air above it, and stops being a card */
  #reader.plain .bt.label{margin:clamp(46px,6.4vh,76px) 0 clamp(24px,3vh,34px)}
  #reader.plain .bt.label .mono{font-size:11px;letter-spacing:.22em;border-bottom:0;padding:14px 0 0}
  /* someone else speaking is set off by a rule rather than by an empty screen */
  #reader.plain .bt.quote{margin:clamp(34px,4.6vh,52px) 0;padding-left:20px;border-left:1px solid var(--hair)}
  #reader.plain .bt.quote p{font-size:clamp(19px,1.7vw,23px);line-height:1.34;max-width:none}
  #reader.plain .bt.quote .by{margin-top:14px}
  #reader.plain .bt ul{max-width:none}
  #reader.plain .bt li{font-size:clamp(17px,1.34vw,20px);line-height:1.5}
  /* the door out */
  #reader.plain .bt.end{margin-top:clamp(52px,7vh,84px);padding-top:clamp(26px,3.4vh,38px);border-top:1px solid var(--hair)}
  #reader.plain .bt.end .rd-next{font-size:clamp(24px,2.6vw,36px);margin-top:12px}
  /* the rail and the cue measure a stage there no longer is */
  #reader.plain #rdRail,#reader.plain #rdCue,#reader.plain #rdTrack{display:none}
  @media (max-width:900px){
    #reader.plain #rdBody{padding-top:clamp(104px,14vh,140px)}
    #reader.plain .bt p,#reader.plain .bt li{font-size:17px;line-height:1.6}
    #reader.plain .bt.mid p,#reader.plain .bt.big p{font-size:clamp(20px,5.4vw,26px)}
  }

  /* ===== preloader: the eye, blinking, while the first screen buffers ===== */
  #loader{position:fixed;inset:0;z-index:30;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:34px;transition:opacity 900ms var(--ease),visibility 0s linear 900ms}
  #loader.off{opacity:0;visibility:hidden;pointer-events:none}
  /* the wait is a held shot: she turns once, edges dissolved into the same cream the page is made of */
  /* the wait is a held shot: one turn, no frame. The clip is graded to the page's own cream, so the mask has nothing to give away */
  #ldClip{position:relative;width:min(46vw,300px);aspect-ratio:1118/1080;isolation:isolate;transform:scale(1);
    -webkit-mask-image:radial-gradient(ellipse 52% 56% at 48% 50%, black 60%, transparent 97%);
    mask-image:radial-gradient(ellipse 52% 56% at 48% 50%, black 60%, transparent 97%)}
  #ldClip video{display:block;width:100%;height:100%;object-fit:cover;-webkit-mask-image:none;mask-image:none}
  #ldClip.bare{-webkit-mask-image:none;mask-image:none;aspect-ratio:auto;width:auto;display:grid;place-items:center}
  #ldClip.bare video{display:none}
  #ldClip.bare::before{content:'In\00E8s Hamadi';font-family:var(--sans);font-size:clamp(28px,4vw,52px);font-weight:500;letter-spacing:-.03em;color:var(--ink)}
  @media (max-width:700px){#ldClip{width:min(56vw,240px)}}
  body.loading{overflow:hidden}

  /* ===== about + landing cta + availability ===== */
  #about{padding-top:14vh;padding-bottom:14vh}
  .col.about{max-width:640px;gap:22px}
  .col.about .sub{margin-top:26px}
  .col.about .aq{margin:14px 0 0;padding-top:18px;border-top:1px solid var(--hair);font-size:clamp(19px,1.7vw,24px);font-weight:500;line-height:1.35;letter-spacing:-.015em}
  .col.about .aq .mono{margin-top:10px}
  .proof{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:6px}
  #seeWork{margin-top:10px;color:var(--ink);border-bottom:1px solid var(--hair);padding-bottom:4px;transition:border-color 250ms var(--ease)}
  #seeWork:hover{border-color:var(--ink)}
  #avail{color:var(--ink);border-bottom:1px solid var(--hair);padding-bottom:2px;transition:border-color 250ms var(--ease)}
  #avail:hover{border-color:var(--ink)}

  /* ===== micro-interactions ===== */
  :focus-visible{outline:1px solid var(--ink);outline-offset:3px}
  @media (hover:hover) and (pointer:fine){
    html,a,button,.card,#stack{cursor:none}
    /* The dot is two things at once and always has been: a filled disc and a hairline around it
       in the opposite tone. That is what makes it survive a ground it was not expecting - if the
       fill disappears the ring is still there, and the other way round. The script flips which of
       the two is the fill by reading what is actually under the pointer; the pair below is what it
       falls back to when it cannot read the ground, and it is legible on either. Painted normally,
       never blended: `difference` over cream returns its inverse, which is how a white dot used to
       arrive on screen looking like ink. */
    #cur{position:fixed;left:0;top:0;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;
      background:#fff;pointer-events:none;z-index:40;
      box-shadow:0 0 0 .5px rgba(19,19,19,.32),0 1px 4px rgba(19,19,19,.28);
      transition:width 350ms var(--ease),height 350ms var(--ease),margin 350ms var(--ease),
                 opacity 300ms var(--ease),background 220ms linear,box-shadow 220ms linear}
    #cur.on{width:36px;height:36px;margin:-18px 0 0 -18px;background:rgba(255,255,255,.35);border:1px solid #fff;
      box-shadow:0 0 0 .5px rgba(19,19,19,.16),0 4px 16px rgba(19,19,19,.18)}
    /* ground read as light: ink disc, and the hairline turns white so it still has an edge if the
       reading was wrong */
    #cur.lt{background:var(--ink);box-shadow:0 0 0 .5px rgba(255,255,255,.62),0 1px 4px rgba(19,19,19,.34)}
    #cur.lt.on{background:rgba(19,19,19,.26);border-color:var(--ink);
      box-shadow:0 0 0 .5px rgba(255,255,255,.5),0 4px 16px rgba(19,19,19,.20)}
    /* ground read as dark: the fallback pair, which is already the brighter of the two */
    #cur.dk{background:#fff;box-shadow:0 0 0 .5px rgba(0,0,0,.5),0 1px 5px rgba(0,0,0,.45)}
    #cur.dk.on{background:rgba(255,255,255,.32);border-color:#fff;
      box-shadow:0 0 0 .5px rgba(0,0,0,.34),0 4px 16px rgba(0,0,0,.34)}
    #cur.hide{opacity:0}
  }
  @media (hover:none),(prefers-reduced-motion:reduce){#cur{display:none}}
  .mag{transition:transform 600ms cubic-bezier(.32,.72,0,1);will-change:transform}
  .cbtn{position:relative;display:flex;align-items:center;justify-content:center;padding-right:44px;padding-left:44px}
  .cbtn .arr{position:absolute;right:6px;top:50%;width:26px;height:26px;margin-top:-13px;border-radius:50%;background:rgba(19,19,19,.06);display:flex;align-items:center;justify-content:center;font-style:normal;font-size:13px;line-height:1;
    transition:transform 600ms cubic-bezier(.32,.72,0,1),background 350ms var(--ease),color 350ms var(--ease)}
  .card:hover .cbtn .arr{transform:translate(3px,-1px) scale(1.06);background:var(--ink);color:#fff}

  /* ===== the specimen ===== */
  #about{padding:0;align-items:stretch}
  .spec{position:relative;display:grid;grid-template-columns:minmax(220px,300px) minmax(0,1fr) minmax(240px,320px);grid-template-rows:auto 1fr;gap:10px 28px;width:100%;min-height:100vh;padding:96px var(--g) 40px;box-sizing:border-box}
  .sphead{grid-column:1/-1;display:flex;flex-direction:column;gap:10px;max-width:520px}
  .sphead h2{font-size:clamp(24px,2.4vw,34px)}
  .splink{color:var(--ink);border-bottom:1px solid var(--hair);padding-bottom:3px;align-self:flex-start;transition:border-color 250ms var(--ease)}
  .splink:hover{border-color:var(--ink)}
  /* the stills carry their own tan backdrop, so the page meets them halfway: a pool of the same warm light
     centred on the circle, at full strength through the picture and gone long before the section ends */
  .specfield{position:absolute;inset:0;z-index:0;pointer-events:none;
    --fx:50%;--fy:calc(50% + 58px);--fr:min(64vh,660px);
    background:radial-gradient(circle var(--fr) at var(--fx) var(--fy),
      #CBD8E6 0%,#CBD8E6 40%,rgba(203,216,230,.88) 55%,rgba(203,216,230,.62) 68%,
      rgba(203,216,230,.33) 81%,rgba(203,216,230,.12) 91%,rgba(203,216,230,0) 100%);
    -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 9%,#000 91%,transparent 100%);
            mask-image:linear-gradient(to bottom,transparent 0,#000 9%,#000 91%,transparent 100%)}
  .sphead,.callouts{position:relative;z-index:1}
  /* one clean circle, sized to the shorter side, holding the whole figure and dissolving at its rim */
  .stage{position:relative;height:min(68vh,700px);align-self:center;width:min(100%,calc(min(68vh,700px)*1.06));margin:0 auto;isolation:isolate;transform:scale(1);
    -webkit-mask-image:radial-gradient(circle closest-side at 50% 47%,#000 74%,rgba(0,0,0,0) 100%);
            mask-image:radial-gradient(circle closest-side at 50% 47%,#000 74%,rgba(0,0,0,0) 100%);
    -webkit-mask-composite:source-over;mask-composite:add}
  /* the clips are graded to the page's own cream, so the picture only needs a thin dissolve at the very edge -
     four linear bands intersected, which keeps her sharp instead of an ellipse eating into her head and feet */
  .stage video{position:absolute;left:0;top:0;width:100%;height:100%;opacity:0;transition:opacity 700ms var(--ease);object-fit:cover;object-position:50% 50%;
    -webkit-mask-image:none;mask-image:none}
  .stage video.on{opacity:1}

  .callouts{display:flex;flex-direction:column;justify-content:center;gap:34px}
  .cl{align-items:flex-end;text-align:right} .cr{align-items:flex-start}
  .co{max-width:300px;padding:6px 0;transition:opacity 400ms var(--ease),filter 900ms var(--ease),transform 900ms var(--ease)}
  .co .mono{margin-bottom:6px}
  .cv{font-size:16px;font-weight:500;letter-spacing:-.01em;line-height:1.35}
  .cs{font-size:13px;line-height:1.5;color:var(--ink2);margin-top:4px}
  .tr{margin:0;padding:0 0 0 18px;font-size:14px;line-height:1.65;color:var(--ink2)} .tr b{font-weight:500;color:var(--ink)}
  .cl .tr{padding:0 18px 0 0;direction:rtl}
  .wlink{display:inline-block;margin-top:6px;color:var(--ink);border-bottom:1px solid var(--hair);padding-bottom:2px}
  .vidco{max-width:320px}
  .clip{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:10px;background:var(--hair);box-shadow:0 18px 40px rgba(19,19,19,.12);margin:2px 0 8px}
  /* The footage here is portrait and the frame is landscape, so cover shows a band of it and the
     band has to be chosen. Left at the default the window lands on empty sky with her at the very
     bottom edge; 79% drops it to where she actually stands. The fit itself is untouched. */
  .clip video{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 79%;
    filter:saturate(.92);transition:transform 900ms cubic-bezier(.32,.72,0,1)}
  .vidco:hover .clip video{transform:scale(1.03)}
  .clipHint{position:absolute;left:10px;bottom:8px;color:#fff;background:rgba(19,19,19,.45);padding:5px 8px;border-radius:999px;font-size:9px;transition:opacity 300ms var(--ease)}
  .vidco.playing .clipHint{opacity:0}
  .spec.hov .co:not(.hot){opacity:.35}
  .leaders{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
  .leaders path{fill:none;stroke:var(--ink);stroke-width:1;stroke-dasharray:var(--L,600);stroke-dashoffset:var(--L,600);transition:stroke-dashoffset 1.1s var(--ease),opacity 300ms var(--ease)}
  .leaders circle{fill:var(--ink);transition:opacity 300ms var(--ease)}
  .in .leaders path{stroke-dashoffset:0}
  .leaders .dim{opacity:.18}
  .polas{position:relative;height:112px;margin:2px 0 6px;width:100%}
  .pola{position:absolute;left:50%;top:0;width:82px;margin:0;padding:5px 5px 18px;background:#fff;border:0;box-shadow:0 12px 28px rgba(19,19,19,.12);transform:translateX(-50%) rotate(var(--r));transition:transform 700ms cubic-bezier(.32,.72,0,1),box-shadow 400ms var(--ease);cursor:pointer;font:inherit;z-index:1}
  .pola:hover{box-shadow:0 18px 40px rgba(19,19,19,.2);z-index:2}
  .pola:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
  .pola img{display:block;width:100%;aspect-ratio:1;object-fit:cover}
  /* The pile used to be seven hand-placed positions. Adding a photo meant rewriting all of them,
     so each card now carries its own index and works out where it belongs: a loose stack at rest,
     an even fan on hover, however many there are. --sp is how far the fan opens. */
  .polas{--sp:36%}
  .pola{--m:calc((var(--i) - (var(--n) - 1) / 2));transform:translateX(-50%) rotate(var(--r));z-index:1}
  /* at rest: a trio on top, everything else tucked behind the middle one. Counted from the end,
     so it stays a trio however many photographs there are. */
  .pola:nth-last-child(3){transform:translateX(-88%) rotate(-6deg);z-index:2}
  .pola:nth-last-child(2){transform:translateX(-50%) rotate(1deg);z-index:3}
  .pola:nth-last-child(1){transform:translateX(-12%) rotate(7deg);z-index:4}
  /* on hover the whole pile opens into an even fan, spaced from each card's own index */
  /* a hand of cards, not a smear: each one steps sideways, lifts a little at the ends, and turns
     with its distance from the middle. Ten of them will not fit the column side by side, so the
     fan is allowed to reach a little past it - there is nothing there but the page. */
  .co:hover .pola{transform:translateX(calc(-50% + var(--m) * var(--sp)))
      translateY(calc(var(--m) * var(--m) * 0.9px)) rotate(calc(var(--m) * 1.9deg));
    z-index:calc(var(--i) + 1)}
  @media (max-width:1200px){.polas{--sp:28%}}
  @media (max-width:1000px){
    .spec{grid-template-columns:1fr;grid-template-rows:auto;padding-top:80px}
    .stage{height:52vh;grid-row:2;width:min(100%,calc(52vh*1.12))}
    .callouts{gap:22px} .cl{align-items:flex-start;text-align:left} .cl .tr{padding:0 0 0 18px;direction:ltr}
    .leaders{display:none}
    .spec.hov .co:not(.hot){opacity:1}
  }

  /* ===== the panel (control-centre style) ===== */
  #ccBtn{border:0;background:none;color:var(--ink);padding:4px 8px;border-radius:6px;display:flex;align-items:center;cursor:pointer;margin-left:6px;transition:background 150ms var(--ease)}
  #ccBtn:hover,#ccBtn[aria-expanded="true"]{background:rgba(19,19,19,.12)}
  #cc{position:fixed;top:40px;right:10px;width:min(330px,calc(100vw - 20px));z-index:9;display:grid;gap:10px;padding:10px;border-radius:24px;box-sizing:border-box;
    background:color-mix(in srgb,var(--bg) 62%,transparent);backdrop-filter:blur(34px) saturate(1.4);-webkit-backdrop-filter:blur(34px) saturate(1.4);border:1px solid rgba(255,255,255,.7);box-shadow:0 30px 80px rgba(19,19,19,.16),inset 0 1px 0 rgba(255,255,255,.8);
    opacity:0;transform:translateY(-8px) scale(.97);transform-origin:top right;pointer-events:none;transition:opacity 260ms var(--ease),transform 320ms cubic-bezier(.32,.72,0,1);visibility:hidden}
  #cc.open{opacity:1;transform:none;pointer-events:auto;visibility:visible}
  .cct{background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.75);border-radius:18px;padding:12px 14px 13px;box-sizing:border-box;text-align:left;color:var(--ink)}
  .wh{display:flex;justify-content:space-between;align-items:baseline;gap:6px 10px;margin-bottom:10px;flex-wrap:wrap}
  .mono.dim{color:var(--ink2);opacity:.75;font-size:10px}
  .wl{font-size:12.5px;line-height:1.4;color:var(--ink2);margin-top:6px}
  /* The location card is two lines of type where the others carry a drawing or a set of bars, so
     the heading sits straight on top of the coordinates rather than leaving room for one. */
  .cct.loc .wh{margin-bottom:3px}
  .cct.loc .wl{margin-top:0;font-size:11px;letter-spacing:.12em;opacity:.85}
  .lg{margin-top:6px}
  .lr{display:flex;justify-content:space-between;gap:8px;font-size:14px;font-weight:500;flex-wrap:wrap}
  .lg i{display:block;height:1px;background:var(--hair);margin:6px 0 4px;position:relative}
  .lg i::after{content:'';position:absolute;left:0;top:0;height:100%;width:var(--w);background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform 1.1s var(--ease) .25s}
  #cc.open .lg i::after{transform:scaleX(1)}
  .ln{font-size:12px;color:var(--ink2)}

  /* ===== customize: cursor styles, tints ===== */
  html[data-tint="slate"]{--bg:#E3E8EF} html[data-tint="steel"]{--bg:#DBE3EC} html[data-tint="dusk"]{--bg:#E6E7EE}
  #cust{position:fixed;top:40px;left:var(--cust-x,300px);width:300px;z-index:9;padding:14px 16px 12px;border-radius:18px;box-sizing:border-box;
    background:color-mix(in srgb,var(--bg) 70%,transparent);backdrop-filter:blur(34px) saturate(1.4);-webkit-backdrop-filter:blur(34px) saturate(1.4);border:1px solid rgba(255,255,255,.7);box-shadow:0 30px 80px rgba(19,19,19,.16),inset 0 1px 0 rgba(255,255,255,.8);
    opacity:0;transform:translateY(-8px) scale(.97);transform-origin:top left;pointer-events:none;visibility:hidden;transition:opacity 260ms var(--ease),transform 320ms cubic-bezier(.32,.72,0,1)}
  #cust.open{opacity:1;transform:none;pointer-events:auto;visibility:visible}
  .crow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0}
  .crow+.crow{border-top:1px solid rgba(19,19,19,.08)}
  .seg{display:flex;gap:2px;padding:2px;border-radius:999px;background:rgba(19,19,19,.07)}
  .seg button{border:0;background:none;font:inherit;font-size:12px;color:var(--ink);padding:5px 10px;border-radius:999px;cursor:pointer;transition:background 200ms var(--ease),box-shadow 200ms var(--ease)}
  .seg button.sel{background:#fff;box-shadow:0 1px 3px rgba(19,19,19,.12)}
  .swatches{display:flex;gap:8px}
  .swatches button{width:22px;height:22px;border-radius:50%;border:1px solid rgba(19,19,19,.15);background:var(--c);cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.8);transition:transform 200ms var(--ease),box-shadow 200ms var(--ease)}
  .swatches button:hover{transform:scale(1.08)}
  .swatches button.sel{box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--ink)}
  .crem{padding-top:8px;text-transform:none;letter-spacing:.08em}
  #nav .links a[aria-expanded="true"],#nav .soc[aria-expanded="true"]{background:rgba(19,19,19,.12)}
  /* cursor styles
     Two settings now, not four: the dot, and the machine's own pointer. The ring and the eye are
     gone. On System the page gives every cursor back - text keeps its beam, a disabled control
     keeps its own shape - by simply not setting one, rather than by forcing `auto` onto every
     element, which is what used to take the I-beam off the message field. The four rules that
     set `cursor:none` have to be answered by name, because they are set on the elements. */
  html.cur-system{cursor:auto}
  html.cur-system #cur{display:none}
  html.cur-system a,html.cur-system button,html.cur-system .card,html.cur-system #stack{cursor:pointer}
  html.cur-system input,html.cur-system textarea,html.cur-system [contenteditable]{cursor:text}
  /* A pointer and no cursor at all is the one outcome that cannot be allowed. The dot is not drawn
     for someone who has asked for less motion, so on that machine the page must not have hidden
     the real one - it did, and this is the rule that gives it back. */
  @media (prefers-reduced-motion:reduce){
    html,html a,html button,html .card,html #stack{cursor:auto}
    html a,html button,html .card,html #stack{cursor:pointer}
    html input,html textarea,html [contenteditable]{cursor:text}
  }

  /* ===== dark tint ===== */
  .clogo,.leaders{color:var(--ink)}
  /* the clips carry a cream ground: in the dark it becomes a pool of light around her */

  /* ===== the LinkedIn window ===== */
  #li{position:fixed;top:40px;left:var(--li-x,auto);right:var(--li-r,auto);width:340px;z-index:9;border-radius:14px;overflow:hidden;box-sizing:border-box;
    background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(30px) saturate(1.3);-webkit-backdrop-filter:blur(30px) saturate(1.3);border:1px solid rgba(255,255,255,.7);box-shadow:0 30px 80px rgba(19,19,19,.18),inset 0 1px 0 rgba(255,255,255,.8);
    opacity:0;transform:translateY(-8px) scale(.97);transform-origin:top right;pointer-events:none;visibility:hidden;transition:opacity 260ms var(--ease),transform 320ms cubic-bezier(.32,.72,0,1)}
  #li.open{opacity:1;transform:none;pointer-events:auto;visibility:visible}
  .wbar{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-bottom:1px solid var(--hair);background:color-mix(in srgb,var(--bg) 60%,transparent)}
  .wbar .mono{font-size:10px}
  .tl{display:flex;gap:6px} .tl i{width:11px;height:11px;border-radius:50%;background:var(--hair);border:1px solid rgba(19,19,19,.08)}
  .tl i:nth-child(1){background:#F0655C} .tl i:nth-child(2){background:#F6BE4F} .tl i:nth-child(3){background:#61C454}
  .wbody{padding:18px 18px 16px;display:flex;flex-direction:column;gap:6px}
  .liav{width:64px;height:64px;border-radius:50%;object-fit:cover;margin-bottom:4px;box-shadow:0 8px 24px rgba(19,19,19,.12)}
  .liname{font-size:18px;font-weight:500;letter-spacing:-.01em}
  .lihead{font-size:13.5px;line-height:1.4}
  .limeta{font-size:10px}
  .liline{font-size:12.5px;line-height:1.5;color:var(--ink2);margin-top:4px}
  .libtn{margin-top:10px;display:flex;align-items:center;justify-content:center;gap:8px;background:var(--ink);color:var(--bg);border-radius:999px;padding:10px 14px;font-size:13px;font-weight:500;position:relative;transition:transform 250ms var(--ease)}
  .libtn:hover{color:var(--bg);transform:translateY(-1px)}
  .libtn .arr{font-style:normal;transition:transform 400ms cubic-bezier(.32,.72,0,1)} .libtn:hover .arr{transform:translateX(3px)}

  #darkHint{position:fixed;left:50%;bottom:40px;transform:translateX(-50%);z-index:3;color:var(--bg);opacity:0;pointer-events:none;letter-spacing:.2em;display:flex;gap:8px;align-items:center}
  #darkHint .dh{display:inline-block;animation:dhbob 1.6s cubic-bezier(.45,0,.55,1) infinite}
  @keyframes dhbob{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}

  /* ===== footer, pills, strip, vertical name ===== */
  #contact{align-items:stretch;padding:0}
  .ft{width:100%;min-height:100vh;display:flex;flex-direction:column;justify-content:space-between;padding:120px var(--g) 30px;box-sizing:border-box;gap:40px}
  .ftline{font-weight:500;font-size:clamp(34px,5.4vw,84px);line-height:1;letter-spacing:-.03em;max-width:16ch}
  .ftrow{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;flex-wrap:wrap}
  .pill{display:inline-flex;align-items:center;gap:12px;background:var(--ink);color:var(--bg);border-radius:999px;font-weight:500;text-decoration:none}
  .pill:hover{color:var(--bg)}
  .pill .arr{font-style:normal;width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center;transition:transform 400ms cubic-bezier(.32,.72,0,1)}
  .pill:hover .arr{transform:translateX(3px)}
  .pill.big{font-size:clamp(20px,2vw,28px);padding:16px 18px 16px 30px;letter-spacing:-.01em}
  .pill.big .arr{width:44px;height:44px;font-size:20px}
  .ftmeta{display:flex;gap:48px;flex-wrap:wrap}
  .ftmeta a{font-size:17px;border-bottom:1px solid var(--hair);padding-bottom:3px;transition:border-color 250ms var(--ease)} .ftmeta a:hover{border-color:var(--ink)}
  .ftmeta .mono{margin-bottom:8px}
  .ftbottom{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-top:1px solid var(--hair);padding-top:18px}
  /* A mailto only goes somewhere if the machine has a mail client registered for it. On a Mac
     running Chrome with Gmail in a tab and nothing set as the handler, the click does nothing at
     all - no error, no window. So the link stays a plain mailto (that is what most people want and
     it costs nothing), and if the page is still sitting there a second later - proof no mail app
     took over - the address comes out where the click was, selectable, with one button to copy it. */
  #mailfb{position:fixed;z-index:40;display:none;align-items:center;gap:10px;padding:9px 10px 9px 14px;
    border-radius:999px;font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--ink);
    background:color-mix(in srgb,var(--bg) 74%,transparent);
    backdrop-filter:blur(30px) saturate(1.4);-webkit-backdrop-filter:blur(30px) saturate(1.4);
    border:1px solid rgba(255,255,255,.7);box-shadow:0 20px 50px rgba(19,19,19,.18),inset 0 1px 0 rgba(255,255,255,.8);
    opacity:0;transform:translateY(-6px);transition:opacity 220ms var(--ease),transform 260ms cubic-bezier(.32,.72,0,1)}
  #mailfb.on{display:flex;opacity:1;transform:none}
  #mailfb span{user-select:all;-webkit-user-select:all}
  #mailfb button{font:inherit;cursor:pointer;border:0;border-radius:999px;padding:5px 11px;
    background:var(--ink);color:var(--bg);letter-spacing:.08em;text-transform:uppercase;font-size:10px}
  .mbpill{background:var(--ink);color:var(--bg)!important;border-radius:999px;padding:4px 11px;font-size:12px;font-weight:500;margin-right:6px;transition:transform 400ms cubic-bezier(.32,.72,0,1)}
  #nav .mbpill:hover{background:var(--ink);color:var(--bg)}
  .strip{margin-top:26px;width:100%;max-width:820px;overflow:hidden;color:var(--ink2);-webkit-mask-image:linear-gradient(90deg,transparent,black 12%,black 88%,transparent);mask-image:linear-gradient(90deg,transparent,black 12%,black 88%,transparent)}
  .strip .track{display:inline-flex;gap:22px;white-space:nowrap;animation:strip 46s linear infinite;padding-right:22px}
  /* Moved off the landing and into the work chapter, where it runs as a band along the foot of
     the screen. It keeps the face it was given on the landing; the colour is the one the other
     labels on this dark screen already use. */
  .wstrip{position:absolute;left:0;right:0;bottom:clamp(26px,3.4vh,40px);width:100%;max-width:none;margin:0;z-index:3;
    color:rgba(255,255,255,.62);font-family:var(--sans);font-weight:500;letter-spacing:.10em}
  .wstrip .track{gap:26px;padding-right:26px}
  .strip i{font-style:normal;opacity:.5}
  @keyframes strip{to{transform:translateX(-50%)}}
  @media (prefers-reduced-motion:reduce){.strip .track{animation:none}}
  /* The pill used to be hidden here. It is the only way to Contact now that the third card is
     gone, so it stays on at every width and the date gives up its place on a narrow screen. */
  @media (max-width:900px){.ft{padding-top:90px}.ftbottom{flex-direction:column;gap:8px}}
  /* The bar is one 34px line and it has to stay one line. With the pill back on, a phone has
     no room for the date as well, and a small phone none for the clock either: they are the
     decorative half of the lock-screen conceit, the pill is the only way to Contact. */
  .mbpill{white-space:nowrap}
  @media (max-width:560px){#mbDate{display:none}}
  @media (max-width:440px){#mbTime{display:none}}

  /* ===== the work: a pinned chapter ===== */
  .ch{display:flex;align-items:center;gap:8px}
  .clogo{width:16px;height:16px;display:flex;align-items:center;justify-content:center}
  .clogo svg,.clogo img{width:15px;height:16px;object-fit:contain;display:block}
  .cname{flex:1;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase}
  .cnow{font-family:var(--mono);font-size:11px;letter-spacing:.08em;font-variant-numeric:tabular-nums}
  .ct{font-size:16px;font-weight:500;letter-spacing:-.01em}
  .cbtn{text-align:center;border:1px solid transparent;border-radius:10px;padding:9px 0;font-size:13px;font-weight:500;transition:background 250ms var(--ease)}
  #folder{display:block;padding:0;min-height:0;height:calc(100vh + 5 * 72vh);color:#fff;--wbgw:1920;--wbgh:1280}
  .wpin{position:sticky;top:0;height:100vh;overflow:hidden;background:#0B0F16;z-index:1}
  .wbg{position:absolute;inset:0;background:url(assets/work-bg.jpg) center/cover no-repeat}
    /* the scene is a mood, not a subject: a flat veil, then the gradients that keep the type off the bright water */
  .wbg::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,11,18,.56),rgba(8,11,18,.26) 40%,rgba(8,11,18,.32) 70%,rgba(8,11,18,.74)),linear-gradient(90deg,rgba(8,11,18,.52),rgba(8,11,18,.16) 52%,rgba(8,11,18,.30)),linear-gradient(rgba(9,12,19,.30),rgba(9,12,19,.30))}
  /* The header row sits on the Back button's line. Back is fixed at 48px with a 34px pill, so its
     centre is always 65px down whatever the window does; the title is 18px tall, so 56px of padding
     puts the two centres on the same line. A fixed number is right here precisely because the thing
     it is aligning to is fixed - a viewport-scaled padding would drift away from it. */
  .whead{grid-column:2;grid-row:1;align-self:start;padding-top:56px;display:flex;justify-content:space-between;align-items:baseline;gap:20px;z-index:2}
  .whead .mono{color:rgba(255,255,255,.58)}
  .wtitle{font-weight:500;font-size:15px;letter-spacing:-.01em;color:rgba(255,255,255,.85)}
  .wgrid{position:absolute;inset:0;display:grid;grid-template-columns:minmax(300px,400px) 1fr;grid-template-rows:1fr auto 1fr;column-gap:clamp(36px,5vw,96px);padding:0 var(--g);z-index:1}
  .wleft{grid-column:1;grid-row:1/4;position:relative;height:100vh;overflow:visible;-webkit-mask-image:linear-gradient(180deg,transparent 6%,black 22%,black 78%,transparent 94%);mask-image:linear-gradient(180deg,transparent 6%,black 22%,black 78%,transparent 94%)}
  .stack{position:absolute;left:0;right:0;top:0;display:flex;flex-direction:column;gap:16px;will-change:transform;padding:2px}
  .cgroup{color:rgba(255,255,255,.5);font-size:10px;letter-spacing:.16em;text-transform:uppercase;padding:14px 2px 2px}
  .stack .cgroup:first-child{padding-top:2px}
  /* each card is its own piece of glass: it blurs what is behind it, and its edge is lit rather than drawn */
  #folder .card{position:relative;display:flex;flex-direction:column;gap:7px;box-sizing:border-box;padding:18px 20px 16px;border-radius:18px;
    background:rgba(255,255,255,.055);border:0;box-shadow:0 18px 40px rgba(0,0,0,.28);
    backdrop-filter:blur(26px) saturate(1.6);-webkit-backdrop-filter:blur(26px) saturate(1.6);color:#fff;cursor:pointer;opacity:.5;
    transition:opacity 520ms var(--ease),transform 760ms cubic-bezier(.22,1,.36,1),background 400ms var(--ease),box-shadow 400ms var(--ease)}
  /* the lit edge: a gradient ring, brightest where the light would fall, drawn only in the 1px border band */
  #folder .card::before{content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;pointer-events:none;
    background:linear-gradient(146deg,rgba(255,255,255,.62),rgba(255,255,255,.16) 26%,rgba(255,255,255,.05) 52%,rgba(255,255,255,.1) 74%,rgba(255,255,255,.4));
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
            mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;
    opacity:.75;transition:opacity 400ms var(--ease)}
  #folder .card.on{opacity:1;background:rgba(255,255,255,.1);box-shadow:0 26px 60px rgba(0,0,0,.34)}
  #folder .card.on::before{opacity:1}
  #folder .card:hover{opacity:1;background:rgba(255,255,255,.12)}
  #folder .card:hover::before{opacity:1}

  #folder .cname,#folder .cnow{color:rgba(255,255,255,.6)}
  #folder .clogo{color:#fff}
  #folder .ct{color:#fff}
  #folder .cs{color:rgba(255,255,255,.72);font-size:13.5px;line-height:1.5;margin:0}
  #folder .cbtn{margin-top:8px;background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.16);color:#fff}
  #folder .card:hover .cbtn{background:rgba(255,255,255,.18)}
  #folder .cbtn .arr{background:rgba(255,255,255,.14);color:#fff}
  #folder .card:hover .cbtn .arr{background:#fff;color:#111}
  .cst{display:none}
  .wright{grid-column:2;grid-row:2;position:relative;min-width:0}
  .wstate{position:relative;height:clamp(260px,46vh,560px)}
  .wst{position:absolute;inset:0;opacity:0;transform:translateY(18px);filter:blur(10px);transition:opacity 460ms var(--ease),transform 700ms var(--ease),filter 460ms var(--ease);pointer-events:none}
  .wst.on{opacity:1;transform:none;filter:blur(0)}
  .wst.out{transform:translateY(-14px)}
  .wst span{position:absolute;left:0;top:50%;transform:translateY(-50%);margin:0;font-weight:500;font-size:clamp(48px,6.6vw,124px);line-height:.92;letter-spacing:-.04em;text-transform:uppercase;max-width:10ch}
  /* the letters are windows: the scene shows through them, brightened, under a white veil that keeps them readable */
  .wfill{color:transparent;-webkit-background-clip:text;background-clip:text;background-image:url(assets/work-bg.jpg);background-repeat:no-repeat;filter:brightness(2.1) saturate(1.15) contrast(1.02)}
  .wveil{color:rgba(255,255,255,.34);-webkit-text-stroke:.8px rgba(255,255,255,.30);text-shadow:0 2px 60px rgba(0,0,0,.45)}
  .wmeta{margin-top:20px;color:rgba(255,255,255,.62)}
  /* chrome over the dark scene */
  body.onWork:not(.reading) #nav{background:rgba(12,15,22,.5);border-bottom-color:rgba(255,255,255,.08);color:#fff}
  body.onWork:not(.reading) #nav a,body.onWork:not(.reading) #nav b,body.onWork:not(.reading) .mbr{color:#fff}
  /* #mbDate and #ccBtn set their own colour by id, which outranks the .mbr rule above -
     so the date read as ink on ink and the panel icon was simply invisible over the dark scene */
  body.onWork:not(.reading) #mbDate,body.onWork:not(.reading) #mbTime,
  body.onWork:not(.reading) #ccBtn{color:#fff}
  body.onWork:not(.reading) #ccBtn:hover,
  body.onWork:not(.reading) #ccBtn[aria-expanded="true"]{background:rgba(255,255,255,.16)}
  body.onWork:not(.reading) .mbr .soc{color:rgba(255,255,255,.72)}
  body.onWork:not(.reading) #nav .links a:hover{background:rgba(255,255,255,.12)}
  body.onWork:not(.reading) .mbpill{background:#fff;color:#111!important}
  @media (max-width:900px){
    #folder{height:auto}
    .wpin{position:relative;height:auto;padding:88px 0 56px}
    .whead{grid-column:1;grid-row:1;padding:0 0 24px;flex-wrap:wrap}
    .wgrid{position:relative;inset:auto;grid-template-columns:1fr;grid-template-rows:auto auto;column-gap:0}
    .wleft{grid-column:1;grid-row:2}
    .wleft{height:auto;overflow:visible;-webkit-mask-image:none;mask-image:none}
    .stack{position:relative;transform:none!important;gap:16px;padding:0}
    #folder .card{opacity:1;transform:none}
    .cst{display:block;font-weight:500;font-size:clamp(30px,9vw,44px);line-height:.95;letter-spacing:-.04em;text-transform:uppercase;color:rgba(255,255,255,.9);margin:6px 0 4px;filter:blur(8px);opacity:0;transform:translateY(8px);transition:filter 800ms var(--ease),opacity 800ms var(--ease),transform 800ms var(--ease)}
    #folder .card.in .cst{filter:blur(0);opacity:1;transform:none}
    .wright{display:none}
  }
  @media (prefers-reduced-motion:reduce){.wst,.stack,#folder .card,.cst{transition:none}}

  /* ===== the photographs, opened ===== */
  body.viewing{overflow:hidden}
  #lb[hidden]{display:none}
  /* a grid, so the arrows and the photograph land in defined cells instead of doing viewport arithmetic */
  #lb{position:fixed;inset:0;z-index:20;display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr);
    align-items:center;justify-items:center;gap:clamp(10px,2vw,28px);padding:clamp(16px,3vw,48px);box-sizing:border-box;overflow:hidden;
    background:color-mix(in srgb,var(--ink) 93%,transparent);opacity:0;transition:opacity 400ms var(--ease)}
  #lb.on{opacity:1}
  #lbPrev{grid-column:1;grid-row:1} #lbFig{grid-column:2;grid-row:1} #lbNext{grid-column:3;grid-row:1}
  #lbFig{margin:0;display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;min-width:0;min-height:0;max-width:100%;max-height:100%}
  /* the same white frame as the pile, just bigger, with the caption printed on its lower margin */
  .lbframe{display:flex;flex-direction:column;width:fit-content;max-width:100%;min-width:0;background:#fff;padding:clamp(10px,1.1vw,18px);box-sizing:border-box;
    box-shadow:0 40px 90px rgba(0,0,0,.5);opacity:0;transform:scale(.985) translateY(4px);transition:opacity 420ms var(--ease),transform 620ms cubic-bezier(.32,.72,0,1)}
  .lbframe.in{opacity:1;transform:none}
  #lbImg{display:block;width:auto;height:auto;max-width:100%;max-height:var(--lbmax,60vh);object-fit:contain}
  #lbCap{flex:none;padding:clamp(14px,1.5vw,22px) 4px clamp(8px,1vw,12px);text-align:center;color:var(--ink);font-size:clamp(14px,1.15vw,17px);line-height:1.35;max-width:100%}
  .lbcount{white-space:nowrap;color:rgba(255,255,255,.5);flex:none}
  .lbnav,#lbClose{border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);color:#fff;cursor:pointer;font:inherit;
    backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:background 300ms var(--ease),border-color 300ms var(--ease)}
  .lbnav{width:52px;height:52px;border-radius:50%;font-size:17px;display:flex;align-items:center;justify-content:center;padding:0}
  .lbnav:hover,#lbClose:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.4)}
  #lbClose{position:absolute;top:18px;right:18px;border-radius:999px;padding:11px 16px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;z-index:2}
  @media (max-width:900px){
    #lb{grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr) auto;gap:16px;padding:64px 14px 20px}
    #lbFig{grid-column:1 / -1;grid-row:1}
    #lbPrev{grid-column:1;grid-row:2;justify-self:end} #lbNext{grid-column:2;grid-row:2;justify-self:start}
    .lbnav{width:46px;height:46px}
    #lbFig figcaption{flex-direction:column;gap:4px;align-items:center;text-align:center}
  }
  @media (prefers-reduced-motion:reduce){#lb,.lbframe{transition:none}}
  /* =========================================================================
     THE LANDING AS A SCREEN, AND THE VIEWS BEHIND IT
     The page scrolls exactly once - through the intro. The moment the intro
     collapses, body.stage goes on and the document stops scrolling for good.
     After that the only thing that scrolls is whichever view is open, which is
     why the landing can never drift under a card.
     ========================================================================= */
  /* The landing used to be the whole document and never scrolled. It scrolls one screen now, into
     the introduction below, so the lock keeps everything it styled and gives up only the overflow -
     which moves onto a class a view switches on, so nothing scrolls behind an open view. */
  html.nav-open,html.nav-open body{overflow:hidden;height:100%}
  /* The landing is the screen now, so every way it could still be hidden is closed here: the
     handoff's fixed, faded copy, the reveal blur that waits on an .in class, and any inline
     opacity or filter left on the column by the intro. This rule sits after them all on purpose. */
  body.is-locked #hero .pin{position:sticky;opacity:1;pointer-events:auto}
  body.is-locked #hero .t{filter:none;opacity:1;transform:none}
  body.is-locked #hero .col{opacity:1;filter:none;transform:none}
  body.is-locked #hero{min-height:100svh;height:100svh}
  body.is-locked #hero .pin{height:100svh}

  /* --- the notification cards ---------------------------------------------
     Built to the iOS lock-screen notification: a wide glass pill with a bright
     specular edge along its top and left, an app icon, a title, one line of
     preview, and a timestamp at the right. They are buttons, not divs, so the
     keyboard reaches them and Enter opens the view. */
  /* The stack sits at the foot of the screen, the way notifications do on a lock screen: the
     sentence has the top of the frame, these have the bottom. They hang off the pin rather than
     off the centred column, so the column's own spacing is untouched. */
  /* Centred with auto margins rather than a translate. The cards use backdrop-filter, and in
     Safari a backdrop-filtered element inside a transformed or promoted ancestor samples the wrong
     backdrop - it paints the pill and loses everything inside it. Nothing above them may be
     transformed or layer-promoted for that reason. */
  /* above the masthead, not because anything visible overlaps - no ink reaches this high - but
     because a glyph's ink is hit-testable past its own box, and the name was taking the pointer
     from the foot of the last card. The cards own that band. */
  /* =====================================================================================
     THE INTRODUCTION
     One screen of warm paper with the Tifinagh word behind it, moving slowly enough that you
     notice it only after you have stopped reading. No panel, no box, no header: the paragraph
     sits directly in the space.
     ===================================================================================== */
  #intro{position:relative;background:var(--bg);min-height:100svh;
    display:flex;align-items:center;justify-content:center;overflow:hidden;
    padding:clamp(96px,15vh,190px) var(--g) clamp(120px,19vh,250px);box-sizing:border-box;isolation:isolate}
  /* Hung from the first line of the copy, not centred on the section: the top of the pattern and
     the top of the text share a line. It still runs the full width of the window and is cropped by
     the section, which clips it - nothing here can push the document sideways. */
  .az{position:absolute;top:0;left:50%;transform:translateX(-50%);
    width:100vw;height:var(--az-h);z-index:0;pointer-events:none;overflow:hidden;display:flex}
  .az-strip{display:flex;flex:none;width:max-content;opacity:.62;
    animation:az-slide 600s linear infinite;will-change:transform}
  .az-strip img{display:block;flex:none;height:100%;width:auto;max-width:none}
  /* the slide is exactly one copy wide, which is half the strip: the second copy lands where the
     first was, so there is no seam to hide and no restart to see */
  @keyframes az-slide{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
  @media (prefers-reduced-motion:reduce){.az-strip{animation:none}}

  .in-wrap{position:relative;z-index:1;width:100%;max-width:var(--copy-w);
    display:flex;flex-direction:column;gap:clamp(34px,5vh,60px)}
  /* three blocks of one voice: the gap is set in the paragraph's own em, so the rhythm between
     them stays a blank line at every size */
  .in-copy{position:relative;z-index:1;display:flex;flex-direction:column;gap:1.15em;
    font-size:var(--copy-size)}
  .in-p{margin:0;color:var(--ink);font-family:var(--sans);font-weight:400;
    font-size:inherit;line-height:1.46;letter-spacing:-.021em;
    text-wrap:pretty}
  .in-p b{font-weight:600;letter-spacing:-.022em}
  /* a highlighter stroke, not a component: white behind the words, following their own width,
     carried across a line break rather than boxed */
  .in-hl{background:#fff;color:inherit;padding:.06em .2em;
    box-decoration-break:clone;-webkit-box-decoration-break:clone}
  .in-dl{position:relative;z-index:1;align-self:start;color:#000;font-family:var(--sans);font-weight:400;
    font-size:clamp(14px,1.15vw,17px);letter-spacing:-.01em;
    text-decoration:underline;text-decoration-color:#000;text-decoration-thickness:1px;
    text-underline-offset:5px;
    display:inline-flex;align-items:baseline;gap:.45em;
    transition:text-decoration-thickness 220ms var(--ease)}
  .in-dl i{font-style:normal;transition:transform 220ms var(--ease)}
  .in-dl:hover{text-decoration-thickness:2px}
  .in-dl:hover i{transform:translateY(3px)}
  .in-dl:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
  @media (prefers-reduced-motion:reduce){.in-dl,.in-dl i{transition:none}}
  @media (max-width:700px){
    #intro{padding:clamp(64px,9vh,96px) var(--g);align-items:center}
    /* the phone's size for both chapters, again from the one token */
    :root{--az-h:140px;--copy-size:clamp(19px,5.1vw,26px)}
    .in-p{line-height:1.44}
    .in-wrap{gap:clamp(28px,4.4vh,44px)}
    .az{height:var(--az-h)}
    .az-strip{opacity:.7}
  }

  /* =====================================================================================
     THE TURN, AND WHAT SHE DESIGNS
     Between the two chapters: one piece of artwork with a great deal of nothing around it. The
     paper of the introduction runs on through it, so the quiet reads as the same room rather than
     as a gap between two sections. The mark is her third Tifinagh drawing - the yaz filled with a
     photograph rather than drawn in a flat colour, so it belongs to the travel pictures upstairs
     as much as to the section below it.
     ===================================================================================== */
  .az2-band{background:var(--bg);display:flex;justify-content:center;
    padding-block:clamp(96px,16vh,200px)}
  /* Sized against her reference screenshot: the mark reads at roughly a tenth of the
     band, so it is a small quiet glyph in a lot of cream, not a headline. */
  .az2{display:block;width:min(112px,14vw);height:auto;opacity:.9}

  /* held back a fraction of a screen while the About sheet rises over it - see meLayer() */
  #ai{position:relative;z-index:0;isolation:isolate;min-height:100svh;will-change:transform;
    display:flex;align-items:center;justify-content:center;overflow:hidden;
    /* the section stands on the same paper as the chapter above it, so its top and bottom edges
       are that colour exactly and there is no line to see */
    padding:clamp(104px,16vh,210px) var(--g) clamp(120px,19vh,250px);box-sizing:border-box;background:var(--bg)}
  /* The picture is masked away at both edges rather than butting against them: it arrives out of
     the cream and returns to it, so neither join is a line. The fade is long on purpose - a short
     one reads as a band, which is the very thing it is there to avoid. */
  .ai-bg{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;
    object-position:58% 42%;   /* the crop is chosen, not centred by default */
    pointer-events:none;
    -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 26%,#000 74%,transparent 100%);
            mask-image:linear-gradient(to bottom,transparent 0,#000 26%,#000 74%,transparent 100%)}
  /* cream at half strength, not white: the softening layer is the site's own paper, which is what
     lets the section read as part of the same website rather than a panel dropped into it */
  .ai-veil{position:absolute;inset:0;z-index:1;background:rgba(255,255,255,.5);pointer-events:none}
  /* the same column as the introduction, from the same token: both chapters start and end on
     the same two vertical lines at every width */
  .ai-wrap{position:relative;z-index:2;width:100%;max-width:var(--copy-w);
    display:flex;flex-direction:column;align-items:flex-start;text-align:left;
    gap:clamp(16px,2.4vh,30px)}
  /* One sentence, left-aligned, allowed to wrap where it falls - and set at the introduction's
     size, from the introduction's token. It no longer needs a cap against the window height: at
     this scale the composition clears a short screen with room to spare. */
  .ai-lead{margin:0;color:var(--ink);font-family:var(--sans);font-weight:400;
    font-size:var(--copy-size);line-height:1.3;letter-spacing:-.022em}
  /* smaller than the sentence above it, and heavier: the weight and the colour carry the emphasis,
     not the size */
  .ai-sig{margin:0;color:#4B2E2B;font-family:var(--sans);font-weight:500;
    /* two thirds of the sentence above it, which is the proportion the reference had - with a
       floor, because on a small screen two thirds of an already small size is not a signature
       any more, it is a footnote. */
    font-size:max(15px,calc(var(--copy-size) * .68));line-height:1.3;letter-spacing:-.018em}
  /* the certificate stands on its own: no card, no frame, no shadow added to it. With the type
     brought down to the introduction's size there is room for it to be the thing you look at. */
  .ai-cert{display:block;align-self:center;width:min(560px,92%,58vh);height:auto;
    margin-top:clamp(18px,3vh,40px);
    /* Not a fade up to size: the curve overshoots past 1 and settles back, so the sheet arrives
       with a little weight behind it and then steadies - a spring, not a zoom. Leaving runs the
       same curve in reverse, which is what keeps it from snapping back. */
    transition:transform 620ms cubic-bezier(.34,1.56,.64,1)}
  .ai-cert:hover{transform:scale(1.045)}
  @media (prefers-reduced-motion:reduce){.ai-cert{transition:none}}
  @media (max-width:700px){
    .az2-band{padding-block:clamp(52px,9vh,96px)}
    .az2{width:min(84px,22vw)}
    #ai{padding:clamp(80px,11vh,120px) var(--g)}
    .ai-wrap{gap:clamp(24px,3.6vh,40px)}
    .ai-cert{width:min(520px,96%)}
  }

  /* =====================================================================================
     THE THREE CARDS
     Three prints suspended in the middle of the frame. They keep the glass the notifications
     had - the same translucency, the same bright inset edge, the same soft depth - but the
     photograph is the object now: a travel picture in a translucent mat, with its destination
     set small underneath. Hover turns the print over.
     Centred with margins rather than a translate, and the bright edge is still an inset shadow
     rather than a layer behind: both are the Safari backdrop-filter traps noted below.
     ===================================================================================== */
  /* The pair sits in the column's own flow, under the opening line and hard against its left
     edge. That is what keeps it clear of the sentence at every width: it follows the line down
     rather than being given a position of its own that has to be checked against it. Height zero,
     so the cards hang below the column without lengthening it - and the middle of the frame stays
     empty, which is the point. */
  #cards{position:relative;align-self:flex-start;z-index:3;pointer-events:none;
    margin-top:clamp(12px,1.8vh,24px);width:0;height:0}
  .ncard{position:absolute;left:var(--x);top:var(--y);pointer-events:auto;
    width:var(--tc-w);
    height:calc(var(--tc-pad) * 2 + (var(--tc-w) - var(--tc-pad) * 2) * var(--arh) + var(--tc-lab));
    padding:0;border:0;background:none;cursor:pointer;font:inherit;font-family:var(--sans);
    color:#fff;text-align:left;z-index:var(--z,1);
    perspective:1200px;-webkit-perspective:1200px;
    will-change:transform}
  /* Placed, not aligned. The two share a left edge, a scale and a treatment, and differ in shape,
     in where they sit on the line and in how far each is turned - which is what stops a pair of
     objects from reading as a pair of buttons. The offsets are in card-widths, so the arrangement
     survives every resize. These live here rather than inline because an inline style outranks
     every stylesheet rule, and the phone's own arrangement has to be able to override them. */
  .ncard[data-open="about"]{--x:0;                        --y:0;                       --arh:1.3333;--z:2;--rot:-2.2}
  .ncard[data-open="work"] {--x:calc(var(--tc-w) * 1.12); --y:calc(var(--tc-w) * .42); --arh:.75;   --z:3;--rot:1.7}
  .ncard:focus-visible{outline:2px solid #fff;outline-offset:6px;border-radius:20px;
    box-shadow:0 0 0 5px rgba(16,20,26,.35)}   /* the white ring needs a dark keeper over a bright scene */
  /* the sheet itself: one object with two sides, turning on its own axis */
  .tc-flip{position:absolute;inset:0;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;
    transition:transform 760ms cubic-bezier(.2,.72,.16,1)}
  .ncard:hover .tc-flip,.ncard:focus-visible .tc-flip{transform:rotateY(180deg)}
  .tc-face{position:absolute;inset:0;border-radius:18px;overflow:hidden;
    backface-visibility:hidden;-webkit-backface-visibility:hidden;
    display:flex;flex-direction:column;
    box-shadow:inset 1px 1px 0 rgba(255,255,255,.55),inset -1px -1px 0 rgba(255,255,255,.14),
               0 14px 38px rgba(16,20,26,.26),0 1px 2px rgba(16,20,26,.14);
    transition:box-shadow 500ms cubic-bezier(.32,.72,0,1)}
  .ncard:hover .tc-face{box-shadow:inset 1px 1px 0 rgba(255,255,255,.62),inset -1px -1px 0 rgba(255,255,255,.16),
               0 26px 60px rgba(16,20,26,.32),0 1px 2px rgba(16,20,26,.14)}
  /* front: the mat is the glass, the photograph is the picture in it */
  /* Clear glass: no fill at all, just the scene behind it put out of focus. The card is only a
     blur, a bright edge and a shadow - the photograph is the one solid thing on it. */
  .tc-front{background:transparent;padding:var(--tc-pad);
    backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%)}
  .tc-front img,.tc-front .tc-mark{display:block;width:100%;
    height:calc((var(--tc-w) - var(--tc-pad) * 2) * var(--arh));
    object-fit:cover;border-radius:10px;flex:none;
    box-shadow:0 1px 3px rgba(16,20,26,.26)}
  /* The work card carries the mark rather than a photograph: the three confidential projects
     behind it are shown the same way, so the card and the chapter it opens say the same thing.
     Same tile, same corner, same shadow as the picture it replaces - only its contents differ. */
  .tc-front .tc-mark{background:#fff;display:flex;align-items:center;justify-content:center;
    color:#0B0B0B}
  .tc-front .tc-mark svg{width:38%;height:auto}
  /* centred as a block and centred as text: the label runs to two lines on a small phone, and
     left-aligned lines under a centred one read as a mistake */
  .tc-name{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;
    font-family:var(--mono);font-size:clamp(9px,.72vw,10.5px);letter-spacing:.17em;
    text-transform:uppercase;color:#fff;padding-top:2px;
    /* clear glass leaves a mid-dark, out-of-focus scene behind the words: white with the page's
       own contact shadow, the same pairing the stats line uses over the picture */
    text-shadow:0 1px 2px rgba(16,20,26,.55),0 0 14px rgba(16,20,26,.42)}
  /* back: you look through the card at the scene behind it */
  .tc-back{transform:rotateY(180deg);background:transparent;
    backdrop-filter:blur(30px) saturate(170%);-webkit-backdrop-filter:blur(30px) saturate(170%);
    padding:clamp(15px,1.5vw,22px);justify-content:center;gap:clamp(6px,.6vw,9px)}
  .tc-bt{font-size:clamp(16px,1.32vw,20px);font-weight:600;letter-spacing:-.016em;line-height:1.16;
    color:#fff;text-shadow:0 1px 2px rgba(16,20,26,.55),0 0 14px rgba(16,20,26,.42)}
  .tc-bc{font-size:clamp(12px,.92vw,13.5px);line-height:1.42;letter-spacing:-.008em;
    color:rgba(255,255,255,.92);text-shadow:0 1px 2px rgba(16,20,26,.55),0 0 14px rgba(16,20,26,.42)}
  .tc-ba{margin-top:clamp(3px,.4vw,6px);font-size:clamp(12px,.92vw,13.5px);font-weight:500;
    letter-spacing:-.008em;display:inline-flex;align-items:center;gap:7px;color:#fff;
    text-shadow:0 1px 2px rgba(16,20,26,.55),0 0 14px rgba(16,20,26,.42)}
  .tc-ba i{font-style:normal;transition:transform 420ms cubic-bezier(.32,.72,0,1)}
  .ncard:hover .tc-ba i{transform:translateX(4px)}
  /* The words used to fade in 430ms after the turn began, on top of a 320ms fade - so they landed
     the best part of a second after the card had finished turning, which read as the card waiting
     for its own text. They are simply there now. Nothing is lost by it: the back face is hidden
     until the sheet passes ninety degrees, so the copy still arrives with the face rather than
     through it, and it arrives the instant that face is the one you are looking at. */
  /* On a wide screen the headline is already capped against viewport height, so it shrinks on its
     own. On a phone it is sized from width, which a short phone does not help with - and the cards
     are the only way off the landing, so they may never be covered. Hence this one rule. */
  @media (max-width:700px){
    /* The pair stays a pair on a phone: the same arrangement, drawn smaller and pulled a little
       closer, so it never becomes a grid and never reaches the name at the foot of the screen. */
    :root{--tc-w:clamp(110px,33vw,150px)}
    #cards{margin-top:clamp(12px,1.6vh,22px)}
    .ncard[data-open="work"]{--x:calc(var(--tc-w) * 1.1);--y:calc(var(--tc-w) * .38)}
  }
  @media (max-width:640px) and (max-height:760px){
    body #hero .col{padding-top:clamp(56px,9vh,88px)}
    body #hero .proof{font-size:clamp(9px,2.4vw,10.5px)}
    /* short as well as narrow: the pair is drawn smaller again so it stays well clear of the
       masthead at the foot of the screen */
    :root{--tc-w:clamp(100px,30vw,128px)}
  }


  /* =====================================================================================
     SECTION FOUR - WHERE SHE STARTED
     Three layers, not three blocks: a line of type set to the exact width of the window, a
     twenty-vh window onto 1999, a second line set the same way, and the artefact itself laid
     over all of it like a print dropped on a poster. The nostalgia is carried by the typography,
     the footage and the real website - there is no fake chrome, no grain, no glitch.
     ===================================================================================== */
  #s90{position:relative;min-height:100svh;box-sizing:border-box;
    padding:clamp(56px,8vh,104px) 0;background:var(--bg);color:var(--ink);
    display:flex;flex-direction:column;justify-content:center;
    /* the lines are solved to the window's width, so a rounding error is the only thing that
       could reach past the edge. clip rather than hidden: it trims without making a scroller. */
    overflow:hidden;overflow:clip;isolation:isolate}
  /* Each line is measured and then solved: the ink is read once at a known size and the real size
     comes out of the ratio, so both lines run edge to edge at any window, in any face. No gutter,
     no measure, no container - the type IS the layout. */
  .n9-line{margin:0;padding:0;width:100%;max-width:none;text-align:center;white-space:nowrap;
    font-family:var(--sans);font-weight:700;font-size:14vw;line-height:.82;letter-spacing:-.045em}
  .n9-ink{display:inline-block;white-space:nowrap}
  .n9-w{display:inline-block;will-change:transform,opacity}
  /* EVER is the one word that leans. Lighter as well as italic, so the line reads bold-light-bold
     rather than as three shouts in a row. */
  .n9-line em{font-style:italic;font-weight:400;letter-spacing:-.028em}
  /* the strip: full bleed, no chrome, no controls, and a fixed height so the footage can never
     push the section taller than it was laid out to be */
  /* The footage sits at the very back of the section: negative, so it is behind every word in
     the heading and above nothing but the paper itself. (#s90 isolates, so -1 cannot escape the
     section.) The stack, front to back: FIRST, the artefact, the rest of the type, the film. */
  .n9-strip{position:relative;width:100%;height:20vh;min-height:104px;overflow:hidden;
    background:#0B0E13;z-index:-1;margin-block:clamp(-32px,-2.8vh,-10px)}
  .n9-vid{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;
    pointer-events:none}
  /* The artefact. Not a card and not a device frame - the screenshot already carries its own
     period window, so nothing is added to it but a hard shadow: solid, offset, no blur at all,
     which is how a drop shadow was drawn when this website was new. */
  /* Hung on the middle of the strip, not on the middle of the section: the two lines are very
     different heights, so the strip is nowhere near the section's centre and anchoring to 50%
     dropped the artefact onto the second line. --n9-y is written by the script that sizes the
     lines, from the same measurement pass. */
  .n9-shot{position:absolute;left:50%;top:var(--n9-y,50%);z-index:3;margin:0;
    width:min(41vw,700px);
    transform:translate(-50%,-50%) rotate(-1.4deg)}
  /* A thing, not a picture of a thing. The screenshot is untouched; what is added is a camera -
     a perspective on the frame and a resting attitude on the sheet - so it sits in the section at
     an angle instead of lying flat on it. The hard offset shadow stays, because that is how a
     drop shadow was drawn when this website was new; a soft one is laid under it and deepens as
     the object is picked up, which is what stops the hard edge reading as a sticker. */
  .n9-shot{perspective:1500px;-webkit-perspective:1500px}
  .n9-obj{display:block;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;
    will-change:transform;cursor:pointer;
    transform:rotateX(4.5deg) rotateY(-8deg)}
  .n9-obj img{display:block;width:100%;height:auto;
    box-shadow:clamp(7px,.85vw,15px) clamp(7px,.85vw,15px) 0 0 var(--ink),
               0 26px 50px rgba(19,19,19,.16);
    transition:box-shadow 460ms var(--ease)}
  .n9-obj:hover img{box-shadow:clamp(7px,.85vw,15px) clamp(7px,.85vw,15px) 0 0 var(--ink),
               0 52px 92px rgba(19,19,19,.26)}
  .n9-obj:focus-visible{outline:2px solid var(--ink);outline-offset:8px}
  /* the pointer says what the object does, and only while the pointer is on it */
  #n9Cur{position:fixed;left:0;top:0;z-index:41;pointer-events:none;
    padding:7px 12px 6px;border-radius:999px;background:var(--ink);color:var(--bg);
    font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;
    white-space:nowrap;opacity:0;transform:translate(-50%,-210%) scale(.88);
    transition:opacity 200ms var(--ease),transform 280ms var(--ease)}
  #n9Cur i{font-style:normal;opacity:.6;margin-left:5px}
  #n9Cur.on{opacity:1;transform:translate(-50%,-210%) scale(1)}
  @media (hover:none),(prefers-reduced-motion:reduce){#n9Cur{display:none}}
  html.cur-system #n9Cur{display:none}
  /* the pill replaces the pointer rather than joining it. The dot's own move handler clears
     .hide on every event, so the override has to live somewhere that handler does not touch. */
  html.n9-peek #cur{opacity:0}
  @media (prefers-reduced-motion:reduce){.n9-obj{transform:rotateX(4.5deg) rotateY(-8deg) !important}}
  /* ---- the entrance: one word at a time, then the footage, then the artefact ----
     Whole words, never letters. Each starts a fraction of its own size below the line and rises
     into it; once it has arrived it never moves again. The section's `in` class is the one the
     rest of the page already uses, so this replays or holds exactly as every other section does. */
  /* FIRST is dropped out of the line and laid across the face of the artefact - it is the one
     word that belongs to the object rather than to the heading, and it is printed on the object
     rather than hidden behind it. Everything else in the heading still passes behind the sheet,
     which is where the depth comes from: two words behind, one word in front. The offset is
     carried in a variable so the reveal can add its own rise on top of it without the two
     transforms fighting. */
  .n9-w{--rest:0px;opacity:0;transform:translateY(calc(var(--rest) + .17em));
    transition:opacity 440ms var(--ease),transform 520ms var(--ease)}
  /* and it takes no pointer events: it is lying on the object, and an object you cannot
     hover through the middle of is not an object you can pick up */
  .n9-l1 .n9-w:nth-child(2){--rest:.46em;position:relative;z-index:4;pointer-events:none}
  .n9-strip{opacity:0;transform:translateY(16px);
    transition:opacity 520ms var(--ease) 620ms,transform 560ms var(--ease) 620ms}
  .n9-shot{opacity:0;transform:translate(-50%,calc(-50% + 22px)) rotate(-1.4deg);
    transition:opacity 600ms var(--ease) 980ms,transform 720ms var(--ease) 980ms}
  .n9-l1 .n9-w:nth-child(1){transition-delay:60ms}
  .n9-l1 .n9-w:nth-child(2){transition-delay:240ms}
  .n9-l1 .n9-w:nth-child(3){transition-delay:420ms}
  .n9-l2 .n9-w{transition-delay:800ms}
  #s90.in .n9-w{opacity:1;transform:translateY(var(--rest))}
  #s90.in .n9-strip{opacity:1;transform:none}
  #s90.in .n9-shot{opacity:1;transform:translate(-50%,-50%) rotate(-1.4deg)}
  @media (prefers-reduced-motion:reduce){
    .n9-w,.n9-strip{opacity:1;transform:translateY(var(--rest,0px));transition:none}
    .n9-shot{opacity:1;transition:none;transform:translate(-50%,-50%) rotate(-1.4deg)}
  }
  @media (max-width:900px){
    /* the artefact comes forward as the window narrows, or it stops reading as a website at all */
    .n9-shot{width:min(52vw,520px)}
  }
  @media (max-width:700px){
    /* The idea is unchanged on a phone - two edge-to-edge lines with a strip of 1999 between them.
       Only the artefact is re-placed: wider, and carried below the middle so it sits on the strip
       rather than across the words. */
    #s90{padding:clamp(48px,7vh,80px) 0}
    .n9-strip{height:17vh;min-height:92px;margin-block:clamp(-16px,-1.6vh,-6px)}
    /* the object is wider than the word here, so the word only has a top edge to lie on */
    .n9-l1 .n9-w:nth-child(2){--rest:.62em}
    .n9-shot{width:clamp(210px,62vw,300px)}
    .n9-obj img{box-shadow:7px 7px 0 0 var(--ink),0 18px 34px rgba(19,19,19,.16)}
  }

  /* =====================================================================================
     WHAT SHE HAS BUILT
     The same window as before - same glass, same photograph or mark, same strip along its foot -
     drawn large and stood still. It was a row you travelled through sideways; it is a chapter you
     scroll now, one project to a screen, stepped left and right so no two land in the same place.
     There is no stage behind it any more: the paper of the page is the background, which is why
     the card's tones are turned over - ink on white rather than white on a dark room.
     ===================================================================================== */
  #arch{position:relative;min-height:0;box-sizing:border-box;background:var(--bg);color:var(--ink);
    padding:clamp(104px,17vh,230px) var(--g) clamp(120px,20vh,270px);
    display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;
    overflow:visible;isolation:isolate}
  /* Alternating, not a grid: one object is the subject at a time, and the eye is walked down the
     page rather than across a table. */
  /* The gutter is the space the metric gets: the list's own width less the card and the breath
     between them. Solved from the same tokens the layout is built from, so it is exact at every
     width rather than a guess that happens to hold at one. */
  .ar-list{display:flex;flex-direction:column;align-items:flex-start;width:100%;
    max-width:1420px;margin:0 auto;
    --ar-w:min(50vw,760px);
    --ar-gap:clamp(24px,3vw,56px);
    --ar-gut:calc(min(1420px,100vw - var(--g) * 2) - var(--ar-w) - var(--ar-gap));
    gap:0}
  /* Each panel is laid a little way into the one before it, so the six read as a stack rather
     than as six separate things with air between them. A negative margin, not a negative gap:
     flex gap may not go below zero, and a browser drops the declaration without a word. */
  .ar-win + .ar-win{margin-top:clamp(-76px,-5.5vh,-32px)}
  /* The deck order runs the way a deck is dealt: the first card is on top and each one after it
     slides under. That is what puts the next card's near corner beneath the last one's far corner
     rather than over it. */
  .ar-win{flex:none;position:relative;z-index:calc(10 - var(--i));
    width:var(--ar-w);margin:0;will-change:transform}
  .ar-win:nth-child(even){align-self:flex-end}
  .ar-hit{display:block;width:100%;position:relative;padding:clamp(8px,.72vw,12px);border:0;margin:0;
    font:inherit;color:inherit;text-align:left;cursor:pointer;
    border-radius:clamp(16px,1.5vw,22px);background:#fff;
    box-shadow:inset 0 0 0 1px var(--hair),
               0 34px 70px rgba(19,19,19,.10),0 2px 6px rgba(19,19,19,.05);
    transition:box-shadow 460ms var(--ease)}
  .ar-win:hover .ar-hit{box-shadow:inset 0 0 0 1px rgba(19,19,19,.16),
               0 54px 108px rgba(19,19,19,.17),0 2px 6px rgba(19,19,19,.06)}
  .ar-hit:focus-visible{outline:2px solid var(--ink);outline-offset:5px}
  .ar-shot{display:block;position:relative;border-radius:clamp(10px,1vw,15px);overflow:hidden;
    aspect-ratio:16/10;background:#0D1016}
  .ar-shot img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}
  /* The three Apple projects: the mark, not a screen. The work is confidential, so its identity
     stands in for its interface - deliberately, and the same way three times, with only the
     picture behind it and the weight of the mark changing between them. The mark is black and
     bare: no glow, no shadow, no outline, nothing but the shape on the picture. */
  .ar-mat{display:flex;align-items:center;justify-content:center;background:#EEF2F6}
  .ar-shot .ar-bgimg{position:absolute;inset:0;width:100%;height:100%;
    object-fit:cover;object-position:center center;pointer-events:none}
  .ar-mk{position:relative;width:calc(var(--mk) * 100%);height:auto;color:#0B0B0B;opacity:1}
  .ar-foot{display:block;padding:clamp(13px,1.2vw,19px) clamp(4px,.4vw,7px) clamp(4px,.4vw,7px)}
  .ar-name{display:block;font-size:clamp(15px,1.5vw,23px);font-weight:500;letter-spacing:-.018em;
    line-height:1.2;color:var(--ink)}
  .ar-meta{display:block;margin-top:6px;font-family:var(--mono);
    font-size:clamp(9px,.72vw,11px);letter-spacing:.16em;text-transform:uppercase;
    color:var(--ink2)}
  /* The figure the project is remembered by, set the way it was set on the case studies page it
     comes from - the same weight, the same tight negative tracking, the same .92 leading, the
     same ten-character measure - and standing in the empty half of the spread the card leaves,
     on the side the card is nearest. Not a badge and not a caption: type on the page, sized off
     the gutter it lives in, so it can never outgrow the card or reach past the window. It is
     laid out whether or not it is shown, so nothing moves when it arrives. */
  .ar-num{position:absolute;top:50%;z-index:2;pointer-events:none;
    width:var(--ar-gut);
    /* it wraps at the spaces and nowhere else - EVALUATIONS is not a word to break in half */
    overflow-wrap:normal;word-break:normal;hyphens:none;
    font-family:var(--sans);font-weight:500;
    font-size:clamp(20px,calc(var(--ar-gut) * .135),72px);
    line-height:.92;letter-spacing:-.04em;text-transform:uppercase;
    color:var(--ink);
    opacity:0;transform:translate3d(0,calc(-50% + 16px),0);
    transition:opacity 380ms var(--ease),transform 620ms var(--ease)}
  .ar-win:nth-child(odd) .ar-num{left:calc(100% + var(--ar-gap))}
  .ar-win:nth-child(even) .ar-num{right:calc(100% + var(--ar-gap));text-align:right}
  .ar-win:hover .ar-num,.ar-hit:focus-visible ~ .ar-num{opacity:1;transform:translate3d(0,-50%,0)}
  /* Kinetic type, and part of the object rather than a pill on top of it: it lives inside the
     screen, flush to its foot and the full width of it, so it reads as the application's own
     bottom strip. The track holds two identical halves, so the -50% loop has no seam and nothing
     ever visibly resets. Ink on the strip now, because the card it sits in is white. */
  .ar-cta{position:absolute;left:0;right:0;bottom:0;height:clamp(28px,2.4vw,38px);
    border-radius:0;overflow:hidden;background:rgba(19,19,19,.92);color:var(--bg);
    display:flex;align-items:center;
    opacity:0;transform:translateY(100%);
    transition:opacity 260ms var(--ease),transform 380ms var(--ease)}
  .ar-win:hover .ar-cta,.ar-hit:focus-visible .ar-cta{opacity:1;transform:none}
  /* the two without a case study yet are objects, not doors: no strip, no pointer */
  .ar-quiet{cursor:default}
  .ar-mqw{display:flex;width:max-content;animation:ar-march 11s linear infinite}
  .ar-mq{display:flex;flex:none}
  .ar-mq b{font-family:var(--mono);font-weight:500;font-size:clamp(9px,.68vw,10.5px);
    letter-spacing:.2em;text-transform:uppercase;white-space:nowrap;padding-right:clamp(20px,1.8vw,28px)}
  .ar-mq i{font-style:normal;opacity:.55}
  @keyframes ar-march{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
  /* each object arrives as it is reached, not all six at the top of the chapter */
  .ar-win{opacity:0;transition:opacity 620ms var(--ease)}
  .ar-win.in{opacity:1}
  @media (prefers-reduced-motion:reduce){
    .ar-win{opacity:1;transition:none}
    .ar-num{transition:none}
    .ar-cta{opacity:1;transform:none;transition:none}
    .ar-mqw{animation:none}
    .ar-hit{transition:none}
  }
  @media (max-width:1000px){
    .ar-list{--ar-w:min(62vw,540px)}
    .ar-win + .ar-win{margin-top:clamp(-58px,-4.2vh,-24px)}
    #arch{padding-block:clamp(84px,13vh,160px) clamp(96px,15vh,190px)}
  }
  @media (max-width:700px){
    /* no room to step them left and right, so they sit on the one axis the screen has - and one
       above the other they can no longer be laid into each other, because the lower one would
       cover the name of the upper. Tighter than it was, but clear of it. */
    .ar-list{--ar-w:min(88vw,520px)}
    .ar-win + .ar-win{margin-top:clamp(28px,4.5vh,54px)}
    .ar-win:nth-child(even){align-self:center}
    #arch{padding-block:clamp(64px,10vh,110px) clamp(72px,12vh,130px)}
    /* no pointer to hover with, so the way in is simply there */
    .ar-cta{opacity:1;transform:none}
  }
  /* A marching ticker is a hover reward. With no hover it never hides, so every card carried
     eight copies of "View work" and six cards carried forty-eight of them down one phone
     screen. On touch the band says it once, centred, and stands still. */
  @media (hover:none),(max-width:700px){
    .ar-mqw{animation:none;width:100%;justify-content:center}
    .ar-mq{flex:none;justify-content:center}
    .ar-mq ~ .ar-mq{display:none}
    .ar-mq b ~ b{display:none}
  }
  /* nothing to hover with, and no gutter to stand in: the figure is simply not drawn */
  @media (hover:none),(max-width:700px){.ar-num{display:none}}

  /* =====================================================================================
     SECTION SIX - WHO SHE IS
     One film, and one sheet of glass held still in the middle of it. The card does not follow
     anything and does not move: it is placed once, at the centre, and stays there. Nothing is
     printed on it but her words - the invitation has left the card and gone to the pointer, which
     becomes the words ABOUT ME while it is over the glass. So there is one object, one gesture,
     and the whole of the card is the way in.
     ===================================================================================== */
  /* z-index and the shadow are what make this a sheet rather than the next block down: the film
     is lifted above the chapter before it, and carries its own contact shadow on its leading edge,
     so what you see as it arrives is one layer sliding over another. */
  #me{position:relative;z-index:2;min-height:100svh;box-sizing:border-box;padding:0;
    display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;
    background:#0C0F14;color:#fff;overflow:hidden;overflow:clip;isolation:isolate;
    box-shadow:0 -38px 74px rgba(10,14,20,.30),0 -6px 18px rgba(10,14,20,.16)}
  .me-bg{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;
    object-position:center center;pointer-events:none}
  /* barely there: enough to hold white type over a bright frame, not enough to grade the film */
  .me-veil{position:absolute;inset:0;z-index:1;pointer-events:none;
    background:linear-gradient(180deg,rgba(12,15,20,.34) 0%,rgba(12,15,20,.06) 26%,
               rgba(12,15,20,.06) 74%,rgba(12,15,20,.30) 100%)}
  /* The film ends where it ends. No gradient, no veil, no softening at the foot - a sheet laid
     over the page has an edge, and hiding that edge is what would make it stop being a sheet. */
  /* No number and no instruction: the card is simply there, in the middle, and there is nothing
     to be told how to find. */
  /* The same sheet of glass as the landing cards - the same blur, the same bright edge, the same
     contact shadow - so the object the visitor meets here is one they have already held. */
  /* Dead centre of the film, by the two halves of a translate - so it is centred on its own size
     rather than on a number that would have to be kept in step with it. The transform is written
     here and never again: no script touches it, which is what "stationary" has to mean. It
     arrives with the section, on opacity alone, because a scale-in is a movement. */
  .me-card{position:absolute;z-index:3;left:50%;top:50%;
    transform:translate3d(-50%,-50%,0);
    width:clamp(320px,26vw,400px);box-sizing:border-box;
    padding:clamp(16px,1.4vw,21px);border-radius:18px;background:transparent;
    backdrop-filter:blur(30px) saturate(170%);-webkit-backdrop-filter:blur(30px) saturate(170%);
    box-shadow:inset 1px 1px 0 rgba(255,255,255,.55),inset -1px -1px 0 rgba(255,255,255,.14),
               0 14px 38px rgba(16,20,26,.26),0 1px 2px rgba(16,20,26,.14);
    display:flex;flex-direction:column;gap:clamp(7px,.62vw,10px);
    color:#fff;opacity:0;
    transition:opacity 620ms var(--ease),box-shadow 320ms var(--ease)}
  #me.in .me-card{opacity:1}
  /* the machine's own pointer, for anyone who asked for it: the glass says it is pressable */
  html.cur-system .me-card{cursor:pointer}
  .me-card:focus-visible{outline:2px solid #fff;outline-offset:4px}
  /* The lift no longer hangs off :hover - the pointer is on the sheet nearly all the time now, so
     hover says nothing. It answers the press instead, which is the one moment it still means something. */
  .me-card:active,.me-card:focus-within{box-shadow:inset 1px 1px 0 rgba(255,255,255,.66),inset -1px -1px 0 rgba(255,255,255,.18),
               0 22px 52px rgba(16,20,26,.32),0 1px 2px rgba(16,20,26,.14)}
  .me-t{margin:0;font-size:clamp(16px,1.32vw,20px);font-weight:600;letter-spacing:-.016em;
    line-height:1.16;color:#fff;text-shadow:0 1px 2px rgba(16,20,26,.55),0 0 14px rgba(16,20,26,.42)}
  .me-p{margin:0;font-size:clamp(11.5px,.9vw,13.5px);line-height:1.45;letter-spacing:-.008em;
    color:rgba(255,255,255,.93);text-shadow:0 1px 2px rgba(16,20,26,.55),0 0 14px rgba(16,20,26,.42)}
  /* ---- the invitation, carried by the pointer ----
     Built the way the site already builds one of these: the same ink pill in the same mono at the
     same tracking as the one the first-website chapter uses, riding the page's own smoothed
     pointer. It does not join the dot, it replaces it - and because the dot's move handler clears
     .hide on every single event, the override has to be a rule that handler never touches. */
  #meCur{position:fixed;left:0;top:0;z-index:41;pointer-events:none;
    padding:7px 12px 6px;border-radius:999px;background:var(--ink);color:var(--bg);
    font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;
    white-space:nowrap;opacity:0;transform:translate(-50%,-210%) scale(.88);
    transition:opacity 200ms var(--ease),transform 280ms var(--ease)}
  #meCur i{font-style:normal;opacity:.6;margin-left:5px}
  #meCur.on{opacity:1;transform:translate(-50%,-210%) scale(1)}
  @media (hover:none),(prefers-reduced-motion:reduce){#meCur{display:none}}
  html.cur-system #meCur{display:none}
  html.me-peek #cur{opacity:0}
  /* 768-1199: a cursor is still there, so the interaction stays - drawn smaller, held closer */
  @media (max-width:1199px){
    .me-card{width:clamp(300px,38vw,360px);padding:clamp(14px,1.7vw,18px);gap:8px}
  }
  /* ---- touch: the same card in the same place. There is no pointer to turn into the words, so
       the glass is simply tapped, and nothing has been put back inside it to tap instead. ---- */
  @media (hover:none){
    .me-card{width:min(calc(100vw - 32px),440px);
      margin-inline-start:calc((env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)) / 2)}
  }
  @media (max-width:479px){
    .me-card{width:calc(100vw - 24px);padding:15px;gap:7px}
    .me-t{font-size:17px}
    .me-p{font-size:13px;line-height:1.46}
  }
  @media (max-width:374px){
    .me-card{gap:6px;padding:13px}
    .me-p{font-size:12.5px}
  }
  /* the film is shot for a wide frame; on a portrait screen the crop is moved up so the faces
     stay in it rather than the pavement */
  @media (max-width:767px){
    .me-bg{object-position:50% 42%}
  }
  @media (prefers-reduced-motion:reduce){
    .me-card{opacity:1;transition:none}
  }


  /* =====================================================================================
     THE EDITORIAL CASE STUDIES
     Belstech and LanWan are not the Apple studies and are not built like them. The Apple work is
     confidential, so it is shown as a system: a tabbed application, the mark standing in for an
     interface nobody is allowed to see. These two can be shown, so they are read instead of
     operated - one column, scrolled, with the screens set into the argument at the point they are
     evidence for. Same paper, same type, same grey-blue: a different chapter of one portfolio,
     not a different site. Prefixed ed- throughout.
     ===================================================================================== */
  #edHost{position:fixed;inset:34px 0 0;z-index:8;background:var(--bg);color:var(--ink);
    overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
  #edHost[hidden]{display:none}
  #edHost::-webkit-scrollbar{display:none;width:0;height:0}
  #edHost{scrollbar-width:none}
  :where(#edHost) section{min-height:0;padding:0;align-items:stretch;display:block}

  /* the bar: back, the project, and the two neighbours. The same three moves the app reader has,
     so moving between an Apple study and one of these is not a change of navigation. */
  .ed-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;
    padding:0 clamp(14px,2.4vw,30px);height:46px;box-sizing:border-box;
    background:color-mix(in srgb,var(--bg) 76%,transparent);
    backdrop-filter:blur(22px) saturate(1.3);-webkit-backdrop-filter:blur(22px) saturate(1.3);
    border-bottom:1px solid var(--hair)}
  .ed-back{display:inline-flex;align-items:center;gap:7px;border:0;background:none;padding:6px 9px;
    margin-left:-9px;border-radius:7px;cursor:pointer;font:inherit;color:var(--ink);
    font-size:12.5px;letter-spacing:-.005em;transition:background 160ms var(--ease)}
  .ed-back:hover{background:color-mix(in srgb,var(--ink) 8%,transparent)}
  .ed-back:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
  .ed-where{flex:1;min-width:0;text-align:center;font-family:var(--mono);font-size:10px;
    letter-spacing:.2em;text-transform:uppercase;color:var(--ink2);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ed-pn{display:flex;gap:4px;flex:none}
  .ed-pn a{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:7px;
    font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;
    color:var(--ink2);transition:background 160ms var(--ease),color 160ms var(--ease)}
  .ed-pn a:hover{background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--ink)}
  @media (max-width:700px){ .ed-pn a span{display:none} .ed-where{letter-spacing:.14em} }

  /* one measure for the prose, and everything else is described against it */
  .ed-doc{--ed-w:min(720px,100%);--ed-wide:min(1080px,92vw);
    width:var(--ed-wide);margin-inline:auto;padding-bottom:clamp(80px,12vh,150px)}
  /* everything that is prose shares the left edge and stops at the measure */
  .ed-lede,.ed-lab,.ed-h2,.ed-p,.ed-ul,.ed-steps,.ed-fig figcaption{
    max-width:var(--ed-w);width:auto;margin-left:0;margin-right:auto}

  /* the opening: the name at the size the homepage sets names, then one sentence, then the facts */
  .ed-open{padding:clamp(44px,9vh,110px) 0 clamp(28px,4.5vh,54px)}
  .ed-kick{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;
    color:var(--accent);margin:0 0 clamp(18px,3vh,32px)}
  .ed-h1{margin:0;font-weight:500;letter-spacing:-.035em;line-height:.94;
    font-size:clamp(40px,7.4vw,104px)}
  .ed-sub{margin:clamp(16px,2.6vh,30px) 0 0;max-width:22ch;font-weight:400;
    letter-spacing:-.02em;line-height:1.18;color:var(--ink);
    font-size:clamp(19px,2.5vw,34px)}
  .ed-facts{display:flex;flex-wrap:wrap;gap:clamp(22px,4vw,64px);
    margin:clamp(30px,5vh,62px) 0 0;padding-top:clamp(18px,3vh,28px);border-top:1px solid var(--hair)}
  .ed-fact{min-width:0}
  .ed-fact b{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;
    text-transform:uppercase;color:var(--ink2);font-weight:500;margin-bottom:5px}
  .ed-fact span{display:block;font-size:clamp(13px,1.1vw,15.5px);letter-spacing:-.01em}

  /* the body */
  .ed-lede{margin-top:clamp(30px,5vh,56px);
    font-size:clamp(17px,1.55vw,22px);line-height:1.5;letter-spacing:-.014em}
  .ed-lede p{margin:0 0 .85em}
  .ed-lede p:last-child{margin-bottom:0}
  .ed-sec{margin-top:clamp(60px,11vh,140px)}
  .ed-lab{display:flex;align-items:baseline;gap:12px;
    font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;
    color:var(--ink2);margin-bottom:clamp(14px,2.2vh,22px)}
  .ed-lab::after{content:"";flex:1;height:1px;background:var(--hair)}
  .ed-h2{margin:0 0 clamp(16px,2.6vh,28px);font-weight:500;
    letter-spacing:-.028em;line-height:1.08;font-size:clamp(26px,3.4vw,46px)}
  .ed-p{margin:0 0 .9em;font-size:clamp(15px,1.18vw,17.5px);
    line-height:1.62;letter-spacing:-.008em;color:var(--ink)}
  .ed-p.dim{color:var(--ink2)}
  .ed-p b{font-weight:500}
  .ed-ul{margin:clamp(10px,1.6vh,18px) 0;padding:0;list-style:none}
  .ed-ul li{position:relative;padding-left:22px;margin:0 0 .58em;
    font-size:clamp(15px,1.18vw,17.5px);line-height:1.55;letter-spacing:-.008em}
  .ed-ul li::before{content:"";position:absolute;left:2px;top:.62em;width:7px;height:1px;
    background:var(--accent)}

  /* the numbered approach: a rule down the left, the number sitting on it */
  .ed-steps{margin:clamp(18px,3vh,34px) 0 0;
    border-left:1px solid var(--hair);padding-left:clamp(20px,2.6vw,36px)}
  .ed-step{position:relative;padding:clamp(14px,2.2vh,22px) 0}
  .ed-step + .ed-step{border-top:1px solid var(--hair)}
  .ed-step b{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;
    text-transform:uppercase;color:var(--accent);font-weight:500;margin-bottom:7px}
  .ed-step h4{margin:0 0 5px;font-size:clamp(16px,1.35vw,20px);font-weight:500;letter-spacing:-.018em}
  .ed-step p{margin:0;font-size:clamp(14px,1.08vw,16px);line-height:1.55;color:var(--ink2)}

  /* the progression, set as one line of words rather than a diagram */
  .ed-flow{margin:clamp(24px,4vh,44px) 0;display:flex;flex-wrap:wrap;
    align-items:center;justify-content:center;gap:clamp(8px,1.4vw,18px);
    padding:clamp(20px,3.4vh,34px) clamp(16px,2.4vw,32px);
    background:var(--wash);border-radius:clamp(12px,1.2vw,18px)}
  .ed-flow span{font-weight:500;letter-spacing:-.02em;font-size:clamp(15px,1.7vw,26px)}
  .ed-flow i{font-style:normal;color:var(--accent);opacity:.7;font-size:clamp(13px,1.3vw,19px)}

  /* the four principles, two up */
  /* The hairlines are drawn on the cells, not made out of a background showing through the gaps.
     Five things in a three-column grid leave an empty track, and a gap-coloured background turns
     that emptiness into a visible grey block. */
  .ed-grid{margin:clamp(20px,3.4vh,38px) 0 0;display:grid;
    grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:1px;
    background:none;border-radius:clamp(12px,1.2vw,18px)}
  .ed-cell{background:var(--bg);padding:clamp(20px,2.6vw,34px);
    box-shadow:0 0 0 1px var(--hair)}
  .ed-cell h4{margin:0 0 9px;font-size:clamp(16px,1.35vw,20px);font-weight:500;letter-spacing:-.018em}
  .ed-cell p{margin:0;font-size:clamp(14px,1.08vw,16px);line-height:1.58;color:var(--ink2)}

  /* the pull quote: the one place the type is allowed to be the whole screen */
  .ed-quote{margin:clamp(52px,9vh,110px) 0;max-width:min(940px,100%)}
  .ed-quote p{margin:0;font-weight:500;letter-spacing:-.03em;line-height:1.14;
    font-size:clamp(24px,3.6vw,52px)}
  .ed-quote cite{display:block;margin-top:clamp(14px,2.2vh,22px);font-style:normal;
    font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink2)}

  /* ---- the screens ----
     Six treatments, chosen per picture rather than one card applied to all of them. bleed runs
     edge to edge; wide sits in the wide measure; device is the mockup as it was drawn, with no
     frame added to a picture that already has one; tall is a long page shown as a long page and
     cut off with a fade rather than squashed; detail is documentation, held small on purpose;
     duo is two things next to each other. */
  .ed-fig{margin:clamp(34px,6vh,76px) 0 0}
  .ed-fig figcaption{margin:clamp(12px,1.8vh,18px) 0 0;
    font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;
    color:var(--ink2);line-height:1.5}
  .ed-fig img,.ed-fig video{display:block;width:100%;height:auto}
  .ed-fig.wide .ed-shot,.ed-fig.bleed .ed-shot:has(video){border-radius:clamp(10px,1vw,16px);
    overflow:hidden;box-shadow:0 30px 64px rgba(16,20,26,.13),0 2px 6px rgba(16,20,26,.06)}
  /* the two that break out of the measure entirely */
  .ed-fig.bleed,.ed-fig.device{width:100vw;margin-left:calc(50% - 50vw);
    padding-block:clamp(28px,5vh,60px);background:var(--wash)}
  .ed-fig.bleed .ed-shot{width:min(1560px,94vw);margin-inline:auto}
  .ed-fig.device .ed-shot{width:min(1180px,92vw);margin-inline:auto;background:none}
  .ed-fig.device img{filter:drop-shadow(0 26px 54px rgba(16,20,26,.16))}
  .ed-fig.bleed figcaption,.ed-fig.device figcaption{width:var(--ed-wide);margin-inline:auto;
    max-width:none;padding-top:2px}
  .ed-fig.detail .ed-shot{max-width:min(720px,100%);
    border-radius:clamp(8px,.8vw,12px);overflow:hidden;border:1px solid var(--hair)}
  /* a page 3.6 times taller than it is wide: shown at its own proportion, held to a window, and
     faded out at the foot rather than scaled down into a stripe nobody can read */
  .ed-fig.tall .ed-shot{position:relative;
    max-height:min(78vh,860px);overflow:hidden;border-radius:clamp(10px,1vw,16px);
    box-shadow:0 30px 64px rgba(16,20,26,.13),0 2px 6px rgba(16,20,26,.06);
    -webkit-mask-image:linear-gradient(to bottom,#000 80%,rgba(0,0,0,.34) 95%,transparent 100%);
            mask-image:linear-gradient(to bottom,#000 80%,rgba(0,0,0,.34) 95%,transparent 100%)}

  /* each figure and each block arrives as it is reached, on opacity and a short lift */
  .ed-doc .ed-r{opacity:0;transform:translateY(16px);
    transition:opacity 620ms var(--ease),transform 780ms var(--ease)}
  .ed-doc .ed-r.in{opacity:1;transform:none}

  /* the close: the credits, and the way on */
  .ed-end{margin:clamp(60px,11vh,130px) 0 0;
    padding-top:clamp(24px,4vh,40px);border-top:1px solid var(--hair);
    display:flex;flex-wrap:wrap;gap:clamp(20px,4vw,60px);justify-content:space-between;align-items:flex-end}
  .ed-next{display:inline-flex;align-items:center;gap:10px;padding:13px 20px;border-radius:999px;
    background:var(--ink);color:var(--bg);font-family:var(--mono);font-size:9.5px;
    letter-spacing:.2em;text-transform:uppercase;
    transition:transform 320ms var(--ease),opacity 200ms var(--ease)}
  .ed-next:hover{transform:translateX(3px)}
  .ed-next:focus-visible{outline:2px solid var(--ink);outline-offset:3px}

  @media (max-width:700px){
    .ed-doc{--ed-w:min(720px,100%);--ed-wide:min(1080px,88vw)}
    .ed-fig.tall .ed-shot{max-height:64vh}
  }
  @media (prefers-reduced-motion:reduce){
    .ed-doc .ed-r{opacity:1;transform:none;transition:none}
    .ed-next{transition:none}
  }

  /* =====================================================================================
     A TIME CAPSULE
     A strip of the footage from the first website she ever built, and nothing else on it. Not a
     chapter: no heading, no caption, no artefact, no invitation - a band of 1999 that the page
     passes through on its way to the end. The full section rules do not fit it, so every one of
     them is undone here: it is as tall as the strip plus the air it needs, and no taller. The
     air above is what makes it read as placed rather than as the foot of the film.
     ===================================================================================== */
  #cap{position:relative;z-index:1;min-height:0;box-sizing:border-box;
    padding:clamp(120px,17vh,210px) 0 0;background:var(--bg);
    display:block;align-items:initial;overflow:hidden;overflow:clip}
  /* full bleed and no chrome, exactly as it was when it sat behind the type: the period is
     carried by the footage itself, so nothing is added to it - no frame, no grain, no glitch */
  .cap-strip{position:relative;width:100%;height:15vh;min-height:84px;max-height:190px;
    overflow:hidden;background:#0B0E13}
  .cap-vid{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;
    object-position:center center;pointer-events:none}
  /* the house reveal, and only that */
  .cap-strip{opacity:0;transition:opacity 620ms var(--ease)}
  #cap.in .cap-strip{opacity:1}
  @media (max-width:767px){
    #cap{padding-top:clamp(88px,12vh,140px)}
    .cap-strip{height:13vh;min-height:76px}
  }
  @media (prefers-reduced-motion:reduce){
    .cap-strip{opacity:1;transition:none}
  }

  /* =====================================================================================
     THE END OF THE PAGE
     A last sentence, one invitation, a signature. It is a <footer>, not a <section>, so none of
     the full-screen section rules reach it - it is exactly as tall as what is in it. The film
     above it stops at its own edge; the strip of 1999 between them is what carries the page
     from one to the other.
     ===================================================================================== */
  #ftend{position:relative;background:var(--bg);color:var(--ink);
    padding:clamp(190px,25vh,320px) var(--g) calc(clamp(26px,4vh,48px) + env(safe-area-inset-bottom,0px));
    display:flex;flex-direction:column;align-items:stretch;
    gap:clamp(26px,4vh,54px);overflow:hidden;overflow:clip}
  /* Large and certain, and no larger: the name at the top of the page is the only thing on this
     site allowed to fill a screen. Set in caps because it is a closing line, not a paragraph -
     with the tracking opened back up, which is what caps need and lower case does not. */
  .fe-say{position:relative;margin:0;max-width:15ch;
    font-family:var(--sans);font-weight:500;text-transform:uppercase;
    font-size:clamp(30px,4.6vw,68px);line-height:1.0;letter-spacing:-.018em}
  .fe-cta{position:relative;align-self:flex-start;color:var(--ink);
    font-size:clamp(15px,1.5vw,22px);font-weight:500;letter-spacing:-.015em;
    border-bottom:1px solid var(--ink);padding-bottom:5px;
    display:inline-flex;align-items:baseline;gap:.5em;
    transition:opacity 220ms var(--ease)}
  .fe-cta i,.fe-soc i{font-style:normal;display:inline-block;
    transition:transform 260ms var(--ease)}
  .fe-cta:hover{color:var(--ink);opacity:.62}
  .fe-cta:hover i,.fe-soc a:hover i{transform:translate(2px,-2px)}
  .fe-rows{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;
    align-items:baseline;gap:14px clamp(20px,4vw,60px);
    padding-top:clamp(20px,3.4vh,40px);border-top:1px solid var(--hair)}
  .fe-nav,.fe-soc{display:flex;flex-wrap:wrap;align-items:baseline;gap:clamp(14px,2vw,32px)}
  .fe-nav a,.fe-soc a{color:var(--ink2);
    border-bottom:1px solid transparent;padding-bottom:3px;
    transition:color 220ms var(--ease),border-color 220ms var(--ease)}
  .fe-nav a:hover,.fe-soc a:hover{color:var(--ink);border-bottom-color:var(--ink)}
  .fe-sign{position:relative;display:flex;flex-wrap:wrap;align-items:baseline;
    gap:6px clamp(12px,1.6vw,22px)}
  .fe-sign b{font-size:clamp(15px,1.4vw,20px);font-weight:500;letter-spacing:-.018em;color:var(--ink)}
  .fe-sign .mono{color:var(--ink2)}
  .fe-cr{position:relative;margin:0;color:var(--ink2);opacity:.72;font-size:9px;letter-spacing:.14em}
  /* the whole thing arrives once, quietly, on the page's own observer */
  #ftend > *{opacity:0;transform:translateY(10px);
    transition:opacity 620ms var(--ease),transform 720ms var(--ease)}
  #ftend.in > *{opacity:1;transform:none}
  #ftend.in .fe-cta{transition-delay:90ms}
  #ftend.in .fe-rows{transition-delay:170ms}
  #ftend.in .fe-sign{transition-delay:230ms}
  #ftend.in .fe-cr{transition-delay:280ms}
  @media (max-width:900px){
    #ftend{padding-top:clamp(120px,16vh,190px);gap:clamp(22px,3.4vh,40px)}
    .fe-say{max-width:none}
    .fe-rows{flex-direction:column;align-items:flex-start;gap:16px}
  }
  @media (prefers-reduced-motion:reduce){
    #ftend > *{opacity:1;transform:none;transition:none}
    .fe-cta i,.fe-soc i,.fe-nav a,.fe-soc a{transition:none}
  }

  /* --- the views -----------------------------------------------------------
     Fixed to the viewport, scrolling inside themselves. They sit under the menu
     bar (z 9) and under the reader (z 8) so both keep working on top of them.
     No transform is left on a view at rest: a transform would become the
     containing block for the work chapter's sticky pin and break it. */
  /* A view replaces the landing outright - no fade, no expand. Switching is instant on purpose. */
  .view{position:fixed;inset:0;z-index:4;background:var(--bg)}
  .view[hidden]{display:none}
  .view .v-scroll{position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}
  .view .v-scroll::-webkit-scrollbar{display:none;width:0;height:0}
  .view .v-scroll > section{margin:0}
  /* contact is short: it gets the screen rather than sitting at the top of it */
  #v-contact .v-scroll > section{min-height:100%;display:flex;align-items:center}
  #v-contact .ft{width:100%}
  .v-x{position:fixed;top:48px;left:clamp(14px,2.2vw,28px);z-index:6;
    height:34px;padding:0 15px 0 11px;border:0;border-radius:999px;cursor:pointer;
    display:inline-flex;align-items:center;gap:7px;
    font:inherit;font-family:var(--sans);font-size:13.5px;font-weight:500;letter-spacing:-.01em;
    color:var(--ink);background:rgba(255,255,255,.62);
    backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);
    box-shadow:0 6px 20px rgba(19,19,19,.12),inset 0 0 0 1px rgba(255,255,255,.7);
    transition:background 220ms var(--ease)}
  .v-x svg{display:block;flex:none}
  .v-x:hover{background:rgba(255,255,255,.86)}
  .v-x:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
  /* over the night scene the button is glass on dark, like the menu bar above it */
  body.onWork .v-x{color:#fff;background:rgba(18,22,30,.5);
    box-shadow:0 6px 20px rgba(0,0,0,.35),inset 0 0 0 1px rgba(255,255,255,.16)}
  body.onWork .v-x:hover{background:rgba(18,22,30,.68)}
  @media (prefers-reduced-motion:reduce){
    .ncard,.tc-face,.tc-flip{transition:none}
    .ncard{transform:none !important}          /* the drift is off; the JS stops writing one too */
  }

  /* ==================================================================================
     THE CASE-STUDY APPS
     Six standalone files, merged. The rules below are the ones that were identical in
     all six, emitted once; everything that differed is scoped to its study underneath.
     A study is mounted into #csHost one at a time, so the ids inside are never doubled.
     ================================================================================== */
  /* The host layer: the same fixed full-screen plane the reader uses, on the same z. */
  #csHost{position:fixed;inset:0;z-index:8;background:var(--bg);
    overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;-ms-overflow-style:none}
  #csHost::-webkit-scrollbar{display:none;width:0;height:0}
  #csHost[hidden]{display:none}
  /* The page gives every <section> a 100vh floor, centred contents and a gutter. The app
     lays its own sections out, so those three are taken back - at zero specificity, so
     every .cs-app rule below still wins. */
  :where(#csHost) section{min-height:0;padding:0;align-items:stretch}
  /* Note the single :where. Wrapping `section` in one too zeroed the whole selector, so the page's
     own section rule won on source order and kept align-items:center - which shrink-wrapped the
     app header and floated it in the middle of the screen. One :where puts this at the same
     weight as the rule it is answering, and still under every .cs-app rule below. */
  /* Standalone, .cs-app is the page and sizes itself to the viewport. Here it fills the layer
     instead: height, not min-height, or the flex children never shrink and the tab bar at
     the foot is clipped. Below 861px it stacks and grows past the layer, which is why the
     layer above scrolls - on a desktop that never engages. */
  @media (min-width:861px){#csHost .cs-app{height:100%}}
  /* Standalone the app owns the whole window. Here the site's menu bar is above it, and the
     pill floats at 48px like every other Back; the app clears it until the page is wide
     enough for the two to share a line. */
  /* The app has to start below both bars, and the number is derived rather than guessed: the
     site's menu bar plus the case study's own bar, plus air. It used to be two hand-set values,
     and the wide one (48px) was tuned when the back button was a floating pill that took no
     height at all - once the pill became a real bar the title was clipped on any screen 1500px
     or wider, which is most of the screens this will be judged on. One value now, and it moves
     if either bar ever changes height. */
  #csHost{--cs-bar:46px;--cs-top:calc(34px + var(--cs-bar))}
  #csHost .cs-app{padding-top:calc(var(--cs-top) + 12px)}
  .cs-app{--t-title1:28px; --lh-title1:1.2143; --t-headline:17px; --lh-headline:1.2941; --t-callout:16px; --lh-callout:1.3125; --t-subhead:15px; --lh-subhead:1.3333; --t-footnote:13px; --lh-footnote:1.3846; --t-caption1:12px; --lh-caption1:1.3333; --t-caption2:11px; --lh-caption2:1.1818; --ease:cubic-bezier(.32,.72,0,1); --mono:var(--sans); --story:var(--sans); --ui:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display','SF Pro','Helvetica Neue',sans-serif; --display:var(--sans); --page:#FFFFFF}
  .cs-app{background:var(--page);color:var(--label-1);font-family:var(--ui); min-height:100vh;min-height:100dvh;display:flex;flex-direction:column; padding:clamp(16px,2.4vh,28px) clamp(16px,3vw,44px) clamp(14px,2vh,24px)}
  .cs-app *,.cs-app *::before,.cs-app *::after{box-sizing:border-box}
  .cs-app :where(button){font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:left}
  .cs-app :focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:8px}
  /* ── One header, and it lives inside the window ───────────────────────────
     There used to be two: a page header above the window carrying the title,
     the role and the year, and the window's own 50px title bar carrying the
     title, the case-file number and the client and year again. The same three
     facts, printed twice, forty pixels apart. The facts live here now: the title
     set large with its case-file number beneath, the client, role and year
     finishing on the window's right edge, both on a common bottom line. The back
     pill stays outside the window, above it - it leaves the case study rather
     than moving inside it, and the chrome should say so. */
  .cs-win{flex:1;min-height:0;max-width:1160px;width:100%;margin:0 auto;display:flex;flex-direction:column; overflow:hidden;background:var(--canvas);border-radius:var(--r-win); font-size:var(--t-callout);line-height:var(--lh-callout);-webkit-font-smoothing:antialiased; box-shadow:var(--win-shadow)}
  /* The pill leaves the flow entirely and anchors to the PAGE's left edge, on the same
     line and at the same coordinates as every other Back on this site (.v-x, fixed at
     48px). The window then reclaims that row and centres in what is left. Below 1500px
     the page is not wide enough for a 140px pill to sit beside a 1160px window without
     landing on the title, so there the app starts under the pill rather than beside it. */
  /* The same bar the editorial studies carry: full width, directly under the site's own menu bar,
     back on the left and the two neighbours on the right. It was a floating pill in the corner with
     the neighbours on rails down the sides of the screen; one bar for all six is one thing to learn
     instead of two. It keeps the application's own tokens, so it still follows a dark study. */
  .cs-head{position:fixed;top:34px;left:0;right:0;z-index:10;
    display:flex;align-items:center;gap:12px;
    height:var(--cs-bar,46px);box-sizing:border-box;padding:0 clamp(14px,2.4vw,30px);
    background:var(--bar);backdrop-filter:var(--bar-blur);-webkit-backdrop-filter:var(--bar-blur);
    box-shadow:0 .5px 0 var(--sep)}
  .cs-nav{display:grid;
    grid-template-columns:minmax(0,1fr) auto auto;align-items:start;
    column-gap:clamp(18px,2.6vw,36px);flex:none;
    /* everything sits at the top and the box closes up under it - no reserved height */
    padding:clamp(13px,1.7vh,19px) clamp(16px,2vw,24px) clamp(10px,1.3vh,15px);
    position:relative;z-index:3;background:var(--bar);
    backdrop-filter:var(--bar-blur);-webkit-backdrop-filter:var(--bar-blur);
    box-shadow:0 .5px 0 var(--sep)}
  /* The header's top line carries the facts; any window control - the mode toggle -
     sits at its right end. */
  .cs-nav .nx{grid-column:3;grid-row:1;justify-self:end;align-self:start;
    display:flex;align-items:center;gap:10px}
  .cs-nav .nx:empty{display:none}
  /* Title and facts share one band: the name on the left, the facts finishing on the
     right, their tops on the same line. The case-file number hangs under the title. */
  .cs-nav .ttl{grid-column:1;grid-row:1;align-self:start;min-width:0}
  .cs-nav b{display:block;font-family:var(--display);font-weight:500;
    font-size:clamp(25px,3vw,40px);line-height:1.04;letter-spacing:-.03em;color:var(--head-1)}
  .cs-nav .sub{display:block;margin-top:7px;font-family:var(--mono);font-size:10px;
    letter-spacing:.16em;text-transform:uppercase;color:var(--head-2)}
  /* A <dl> carries a 1em margin from the browser; unreset it pushes the row off its line. */
  .cs-nav .meta{grid-column:2;grid-row:1;justify-self:end;align-self:start;
    display:flex;gap:clamp(16px,2.4vw,34px);margin:0}
  .cs-nav .meta div{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px}
  .cs-nav dt{margin:0;font-family:var(--mono);font-size:10px;letter-spacing:.16em;
    text-transform:uppercase;color:var(--head-2)}
  .cs-nav dd{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.1em;
    text-transform:uppercase;color:var(--head-1);white-space:nowrap}
  /* The same pill the views use, built from the study's own tokens rather than the page's, so it
     reads on a white study, on Fortify's photograph and on a dark one without a second rule. */
  /* a study theme must never be able to take the chrome out of fixed position - but the
     guard has to stop where the rails deliberately become a row, or it pins them over
     the tab bar on a phone */
  #csHost .cs-app > .cs-head{position:fixed}
  @media (min-width:701px){ #csHost .cs-app > .cs-pn{position:fixed} }
  .cs-back{flex:none;height:30px;padding:0 10px 0 8px;margin-left:-8px;
    display:inline-flex;align-items:center;gap:7px;border:0;border-radius:7px;cursor:pointer;
    font-family:var(--ui);font-size:13px;font-weight:500;letter-spacing:-.01em;text-transform:none;
    color:var(--label-1);background:none;box-shadow:none;
    transition:background .22s var(--ease)}
  .cs-back:hover{background:var(--fill-3)}
  .cs-back:focus-visible{outline:2px solid var(--label-1);outline-offset:2px}
  .cs-back svg{flex:none}
  .cs-mode{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:var(--label-2); background:var(--fill-3);transition:background .18s ease,color .18s ease}
  .cs-mode:hover{color:var(--label-1)}
  .cs-mode svg{width:15px;height:15px}
  .cs-frame{flex:1;min-height:0;display:flex}
  .cs-body{flex:1;min-width:0;min-height:0;position:relative}
  .cs-screen{position:absolute;inset:0;display:none;flex-direction:column;min-height:0}
  .cs-screen.on{display:flex;animation:cs-in .34s var(--ease) both}
  @keyframes cs-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
  .cs-scroll{flex:1;min-height:0;overflow:auto;padding:24px clamp(18px,3vw,30px) 28px; -webkit-mask-image:linear-gradient(180deg,#000 calc(100% - 20px),transparent); mask-image:linear-gradient(180deg,#000 calc(100% - 20px),transparent)}
  .cs-mid{max-width:660px;margin:0 auto}
  .cs-mid.wide{max-width:880px}
  .cs-large{margin:0 0 18px;padding:0 2px}
  .cs-large em{font-style:normal;display:block;font-size:var(--t-footnote);line-height:var(--lh-footnote); color:var(--label-2);margin-bottom:3px}
  .cs-large h2{margin:0;font-size:var(--t-title1);line-height:var(--lh-title1);font-weight:700;letter-spacing:-.012em}
  .cs-tabbar{flex:none;display:flex;padding:7px 8px 9px;background:var(--bar); backdrop-filter:var(--bar-blur);-webkit-backdrop-filter:var(--bar-blur);box-shadow:0 -.5px 0 var(--sep)}
  .cs-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 2px 2px; border-radius:10px;color:var(--label-3);transition:color .18s var(--ease),background .18s var(--ease)}
  .cs-tab svg{width:23px;height:23px;stroke-width:1.7}
  .cs-tab span{font-size:10px;line-height:1.2;font-weight:600}
  .cs-tab:hover{color:var(--label-2)}
  .cs-tab[aria-selected="true"]{color:var(--tint)}
  .cs-tab[aria-selected="true"] svg{stroke-width:2.1}
  .cs-rail{flex:none;width:216px;display:flex;flex-direction:column;gap:2px;padding:16px 12px; background:var(--rail);box-shadow:inset -.5px 0 0 var(--sep)}
  .cs-rail .rl{font-size:var(--t-caption2);letter-spacing:.1em;text-transform:uppercase;color:var(--label-3); padding:2px 10px 10px}
  .cs-rail .cs-tab{flex:none;flex-direction:row;align-items:center;gap:11px;padding:9px 11px; border-radius:var(--r-ctl);color:var(--label-1)}
  .cs-rail .cs-tab svg{width:19px;height:19px;color:var(--label-3);transition:color .18s var(--ease)}
  .cs-rail .cs-tab span{font-size:var(--t-subhead);font-weight:500;letter-spacing:-.005em}
  .cs-rail .cs-tab:hover{background:var(--fill-4)}
  .cs-rail .cs-tab[aria-selected="true"]{background:var(--rail-on);color:var(--rail-on-ink);font-weight:600}
  .cs-rail .cs-tab[aria-selected="true"] svg{color:var(--rail-on-ink)}
  .cs-rail .foot{margin-top:auto;padding:12px 11px 2px;box-shadow:inset 0 .5px 0 var(--sep)}
  .cs-rail .foot b{display:block;font-size:var(--t-subhead);font-weight:600}
  .cs-rail .foot span{display:block;font-size:var(--t-footnote);color:var(--label-2);margin-top:2px}
  .cs-me{display:flex;align-items:center;gap:18px;margin:0 0 18px}
  .cs-avatar{width:86px;height:86px;flex:none;border-radius:50%;object-fit:contain; background:var(--tint-fill);padding:3px;box-shadow:inset 0 0 0 1px var(--sep)}
  .cs-gh{font-size:var(--t-footnote);line-height:var(--lh-footnote);color:var(--label-2);margin:clamp(26px,3.6vh,44px) 0 9px;padding:0 4px}
  .cs-group{background:var(--card);border-radius:var(--r-group);overflow:hidden;box-shadow:var(--card-shadow)}
  .cs-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;position:relative; font-size:var(--t-callout);line-height:var(--lh-callout);min-height:46px}
  .cs-row + .cs-row::before{content:"";position:absolute;left:16px;right:0;top:0;height:.5px;background:var(--sep)}
  .cs-row .v{margin-left:auto;color:var(--label-2);text-align:right;padding-left:12px}
  .cs-row.stack{flex-direction:column;align-items:flex-start;gap:3px;padding:13px 16px}
  .cs-row.stack .k{font-weight:600}
  .cs-row.stack .d{color:var(--label-2);font-size:var(--t-subhead);line-height:1.42}
  .cs-foot{font-size:var(--t-footnote);line-height:var(--lh-footnote);color:var(--label-2);margin:8px 4px 0}
  .cs-lead{font-size:var(--t-callout);line-height:1.46;margin:0 0 18px;padding:0 2px;max-width:62ch}
  .cs-lead em{font-style:normal;color:var(--label-2)}
  .cs-jump,.cs-dec{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;position:relative; font-size:var(--t-callout);line-height:var(--lh-callout);min-height:46px;transition:background .12s ease}
  .cs-dec{display:block;padding:0}
  .cs-jump + .cs-jump::before,.cs-dec + .cs-dec::before{content:"";position:absolute;left:16px;right:0;top:0; height:.5px;background:var(--sep)}
  .cs-jump:hover,.cs-dec:hover{background:var(--fill-4)}
  .cs-jump .v{margin-left:auto;color:var(--label-2);padding-left:12px}
  .cs-chev{flex:none;width:12px;height:12px;color:var(--label-3);transition:transform .24s var(--ease)}
  .cs-dec-top{display:flex;align-items:center;gap:10px;padding:13px 16px;min-height:46px}
  .cs-dec-top .cs-chev{margin-left:auto}
  .cs-dec[aria-expanded="true"] .cs-dec-t{font-weight:600}
  .cs-dec[aria-expanded="true"] .cs-chev{transform:rotate(90deg);color:var(--tint)}
  .cs-dec-b{display:none}
  .cs-dec[aria-expanded="true"] .cs-dec-b{display:block;padding:0 16px 15px;font-size:var(--t-subhead); line-height:1.46;color:var(--label-2);animation:cs-in .24s var(--ease) both}
  .cs-dec-b em{font-style:normal;color:var(--label-1)}
  .cs-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
  .cs-metric{background:var(--card);border-radius:var(--r-group);padding:15px 15px 14px;display:flex; flex-direction:column;min-height:100px;box-shadow:var(--card-shadow)}
  .cs-metric b{font-size:31px;line-height:1.05;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
  .cs-metric b.sm{font-size:21px;letter-spacing:-.02em;line-height:1.2}
  .cs-metric span{margin-top:auto;padding-top:9px;font-size:var(--t-footnote);line-height:1.35;color:var(--label-2)}
  .cs-spark{margin-top:10px;height:36px;width:100%}
  .cs-spark path{fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .cs-storycard{display:flex;align-items:center;gap:18px;width:100%;text-align:left; background:var(--card);border-radius:var(--r-group);padding:18px 20px;box-shadow:var(--card-shadow); transition:transform .18s var(--ease),box-shadow .2s var(--ease)}
  .cs-storycard:hover{transform:translateY(-1px)}
  .cs-storycard .ic{width:42px;height:42px;border-radius:12px;flex:none;display:grid;place-items:center; background:var(--tint-fill);color:var(--tint)}
  .cs-storycard .ic svg{width:21px;height:21px;stroke-width:1.8}
  .cs-storycard .tx{min-width:0}
  .cs-storycard em{font-style:normal;display:block;font-size:var(--t-footnote);color:var(--label-2);margin-bottom:3px}
  .cs-storycard b{display:block;font-size:var(--t-headline);font-weight:600;letter-spacing:-.012em;line-height:1.3}
  .cs-storycard span{display:block;font-size:var(--t-subhead);color:var(--label-2);line-height:1.4;margin-top:4px}
  .cs-storycard .go{margin-left:auto;flex:none;display:flex;align-items:center;gap:8px; font-size:var(--t-subhead);font-weight:600;color:var(--tint);white-space:nowrap}
  .cs-storycard .go svg{width:13px;height:13px}
  .cs-story{flex:1;min-height:0;display:flex;flex-direction:column}
  .cs-prog{flex:none;height:2px;background:var(--fill-3)}
  .cs-prog i{display:block;height:100%;width:0;background:var(--tint);transition:width .34s var(--ease)}
  .cs-stage{flex:1;min-height:0;position:relative;overflow:hidden}
  .cs-beat{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center; text-align:center;padding:28px clamp(20px,5vw,64px);font-family:var(--story);opacity:0;pointer-events:none; transition:opacity .34s var(--ease),transform .34s var(--ease),filter .34s var(--ease); transform:translateY(10px);filter:blur(4px)}
  .cs-beat.live{opacity:1;pointer-events:auto;transform:none;filter:none}
  .cs-beat > *{margin:0;max-width:28ch;text-wrap:balance}
  .cs-beat p + p{margin-top:1.1em}
  .cs-beat p{font-size:clamp(18px,1.75vw,29px);line-height:1.44;letter-spacing:-.017em;color:var(--story-ink)}
  .cs-beat .mono{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase; color:var(--story-ink-2);max-width:none}
  .cs-beat .mono + *{margin-top:20px}
  .cs-beat.mid p{font-size:clamp(22px,2.5vw,40px);line-height:1.16;letter-spacing:-.028em;font-weight:500;max-width:20ch}
  .cs-beat.big p{font-size:clamp(27px,3.6vw,62px);line-height:1.04;letter-spacing:-.036em;font-weight:500;max-width:15ch}
  .cs-beat.big.q p{max-width:17ch}
  .cs-beat.open h1{font-weight:500;font-size:clamp(32px,4.6vw,76px);line-height:.99;letter-spacing:-.04em; max-width:13ch;color:var(--story-ink)}
  .cs-beat.open .dek{margin-top:22px;font-size:clamp(15px,1.3vw,20px);line-height:1.55;color:var(--story-ink-2);max-width:34ch}
  .cs-beat.open .facts{margin-top:28px;font-size:10px;letter-spacing:.16em;text-transform:uppercase; color:var(--story-ink-2);max-width:none;font-family:var(--mono)}
  .cs-beat ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5em;max-width:36ch}
  .cs-beat li{font-size:clamp(18px,1.7vw,26px);line-height:1.32;letter-spacing:-.017em;color:var(--story-ink)}
  .cs-beat p + ul{margin-top:1.1em}
  .cs-beat.quote p{font-size:clamp(20px,2.2vw,36px);line-height:1.24;letter-spacing:-.026em;font-weight:500;max-width:22ch}
  .cs-beat.quote .by{margin-top:22px;font-family:var(--mono);font-size:10px;letter-spacing:.16em; text-transform:uppercase;color:var(--story-ink-2);max-width:none;font-weight:400}
  .cs-beat.label .mono{font-size:clamp(12px,1.2vw,16px);letter-spacing:.3em;color:var(--story-ink); border-top:1px solid var(--sep);border-bottom:1px solid var(--sep);padding:20px 0}
  .cs-beat.end .mono{color:var(--story-ink-2)}
  .cs-beat.end .rd-next{display:inline-block;margin-top:16px;font-family:var(--story);text-transform:none; font-size:clamp(26px,3vw,48px);font-weight:500;line-height:1.04;letter-spacing:-.032em;color:var(--story-ink); border-bottom:1px solid var(--sep);padding-bottom:6px;max-width:none;text-decoration:none}
  .cs-ctrls{flex:none;display:flex;align-items:center;justify-content:center;gap:16px;padding:12px 16px 18px}
  .cs-arrow{width:42px;height:42px;border-radius:50%;background:var(--fill-3);color:var(--label-1); display:grid;place-items:center;flex:none; transition:background .18s var(--ease),transform .16s var(--ease),opacity .18s var(--ease)}
  .cs-arrow svg{width:16px;height:16px}
  .cs-arrow:hover{background:var(--fill-2)}
  .cs-arrow:active{transform:scale(.92)}
  .cs-arrow[disabled]{opacity:.3;cursor:default}
  .cs-count{font-size:var(--t-footnote);color:var(--label-2);font-variant-numeric:tabular-nums; min-width:70px;text-align:center}
  .cs-metrics.n3{grid-template-columns:repeat(3,1fr)}
  .cs-metrics.n2{grid-template-columns:repeat(2,1fr)}
  .cs-art{display:block;width:100%;height:40px;margin-top:12px}
  .ck-grid.one{grid-template-columns:1fr}
  .ck-grid.one .ck-card{min-height:220px}
  .ck-grid.one .big{font-size:48px}
  @media (min-width:861px){
    .cs-app{height:100vh;height:100dvh}
  }
  @media (max-width:760px){
    /* the facts no longer fit beside the title, so they take their own line under it */
    /* one band only works while there is a band: on a phone the title and the facts
       each take a line of their own rather than fighting for the same one */
    .cs-nav{align-items:start;row-gap:13px}
    .cs-nav .meta{grid-column:1;grid-row:1;justify-self:start;flex-wrap:wrap;gap:8px 18px}
    .cs-nav .ttl{grid-column:1 / -1;grid-row:2}
    .cs-nav .nx{max-width:100%;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
    .cs-nav .nx::-webkit-scrollbar{display:none}
    /* Tracker's segmented control IS its tab bar - four pills will not share a line with
       the back pill at this width, so it drops to a row of its own under the facts. */
  }
  @media (max-width:860px){
    .cs-frame{flex-direction:column}
    .cs-rail{width:auto;flex-direction:row;overflow-x:auto;gap:6px;padding:10px; box-shadow:inset 0 -.5px 0 var(--sep);scrollbar-width:none}
    .cs-rail::-webkit-scrollbar{display:none}
    .cs-rail .rl,.cs-rail .foot{display:none}
    .cs-rail .cs-tab{flex:none;white-space:nowrap;background:var(--card);box-shadow:0 0 0 .5px var(--sep)}
    .cs-body{min-height:60vh}
    .cs-metrics{grid-template-columns:1fr 1fr}
    .cs-metrics.n3,.cs-metrics.n2{grid-template-columns:1fr 1fr}
  }
  @media (max-width:560px){
    .cs-me{gap:14px}
    .cs-avatar{width:64px;height:64px}
    .cs-storycard .go span{display:none}
    .cs-app{padding:12px 12px 14px}
    .cs-tab span{font-size:9.5px}
  }
  @media (max-width:820px){
    .cs-win{border-radius:16px}
    .cs-beat{padding:22px 18px}
    .cs-beat > *{max-width:24ch}
  }
  @media (prefers-reduced-motion:reduce){
    .cs-app *{animation-duration:.001ms!important;transition-duration:.001ms!important}
    .cs-beat{filter:none;transform:none}
  }

  /* --- the themes ------------------------------------------------------------------
     Each study's colour tokens sit on .cs-app[data-study="…"], so they cascade to every
     component inside without any component rule having to know which study it is in.
     The type ramp, the easing and the three faces are shared and stay on .cs-app above. */
  .cs-app[data-study="the-standard"]{--canvas:#F2F2F7; --card:#FFFFFF; --rail:#F2F2F7; --bar:rgba(255,255,255,.72); --bar-blur:saturate(180%) blur(20px); --label-1:#000000; --label-2:rgba(60,60,67,.60); --label-3:rgba(60,60,67,.30); --head-1:#131313; --head-2:rgba(60,60,67,.55); --sep:rgba(0,0,0,.12); --fill-2:rgba(120,120,128,.16); --fill-3:rgba(118,118,128,.12); --fill-4:rgba(116,116,128,.08); --tint:#0088FF; --tint-fill:rgba(0,136,255,.12); --on-tint:#fff; --on-tint-2:rgba(255,255,255,.9); --on-tint-3:rgba(255,255,255,.62); --tint-shadow:0 2px 10px -4px rgba(0,136,255,.6); --focus:rgba(0,136,255,.12); --rail-on:rgba(0,136,255,.12); --rail-on-ink:#0088FF; --r-win:22px; --r-group:12px; --r-ctl:8px; --win-shadow:0 0 0 .5px rgba(0,0,0,.16),0 1px 2px rgba(0,0,0,.04),
               0 12px 24px -12px rgba(0,0,0,.12),0 32px 64px -32px rgba(0,0,0,.22); --card-shadow:none; --story-ink:#131313; --story-ink-2:#5E5E59}
  .cs-app[data-study="the-picture"]{--canvas:#FFFFFF; --card:#FFFFFF; --rail:#FFFFFF; --bar:#FFFFFF; --bar-blur:none; --label-1:#15151A; --label-2:#5A5A66; --label-3:#9A9AA6; --head-1:#15151A; --head-2:#7C7C88; --sep:#EDEDF2; --fill-2:#E9E9F0; --fill-3:#F4F4F8; --fill-4:#FAFAFC; --tint:#5B4BE8; --tint-fill:#EEECFE; --on-tint:#fff; --on-tint-2:rgba(255,255,255,.9); --on-tint-3:rgba(255,255,255,.64); --tint-shadow:0 6px 18px -8px rgba(91,75,232,.7); --focus:rgba(91,75,232,.22); --rail-on:#EEECFE; --rail-on-ink:#5B4BE8; --r-win:16px; --r-group:12px; --r-ctl:10px; --win-shadow:0 0 0 .5px rgba(20,20,40,.12),0 18px 44px -20px rgba(20,20,40,.22); --card-shadow:0 0 0 1px #EDEDF2; --warn:#E8912A; --good:#22A45D; --story-ink:#15151A; --story-ink-2:#5A5A66}
  .cs-app[data-study="the-mirror"]{--canvas:#FFFFFF; --card:#FFFFFF; --rail:#F7F7F9; --bar:#FFFFFF; --bar-blur:none; --label-1:#111114; --label-2:#6B6B73; --label-3:#A0A0A8; --head-1:#111114; --head-2:#6B6B73; --sep:#EBEBEF; --fill-2:#ECECF0; --fill-3:#F4F4F6; --fill-4:#FAFAFB; --tint:#3B7BF6; --tint-fill:rgba(59,123,246,.10); --on-tint:#fff; --on-tint-2:rgba(255,255,255,.92); --on-tint-3:rgba(255,255,255,.66); --tint-shadow:0 6px 16px -8px rgba(59,123,246,.8); --focus:rgba(59,123,246,.24); --rail-on:#3B7BF6; --rail-on-ink:#FFFFFF; --r-win:16px; --r-group:14px; --r-ctl:10px; --win-shadow:0 0 0 .5px rgba(17,17,20,.12),0 18px 44px -20px rgba(17,17,20,.25); --card-shadow:0 0 0 1px #ECECF0; --story-ink:#111114; --story-ink-2:#6B6B73}
  .cs-app[data-study="fortify-ai"]{--canvas:transparent; --card:rgba(255,255,255,.58); --rail:rgba(255,255,255,.42); --bar:rgba(255,255,255,.55); --bar-blur:saturate(160%) blur(22px); --label-1:#1B2220; --label-2:rgba(27,34,32,.62); --label-3:rgba(27,34,32,.38); --head-1:#1B2220; --head-2:rgba(27,34,32,.55); --sep:rgba(27,34,32,.10); --fill-2:rgba(27,34,32,.10); --fill-3:rgba(255,255,255,.55); --fill-4:rgba(255,255,255,.45); --tint:#4A5D2B; --tint-fill:rgba(74,93,43,.12); --on-tint:#fff; --on-tint-2:rgba(255,255,255,.9); --on-tint-3:rgba(255,255,255,.62); --tint-shadow:0 6px 18px -8px rgba(74,93,43,.7); --focus:rgba(74,93,43,.24); --rail-on:#3C4744; --rail-on-ink:#FFFFFF; --r-win:20px; --r-group:16px; --r-ctl:12px; --win-shadow:0 0 0 .5px rgba(27,34,32,.14),0 24px 56px -26px rgba(27,34,32,.35); --card-shadow:inset 0 0 0 1px rgba(255,255,255,.55),0 1px 2px rgba(27,34,32,.04); --story-ink:#1B2220; --story-ink-2:rgba(27,34,32,.62); --shot:url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBUODAsLDBkSEw8VHhsgHx4bHR0hJTApISMtJB0dKjkqLTEzNjY2ICg7Pzo0PjA1NjP/2wBDAQkJCQwLDBgODhgzIh0iMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzP/wgARCALHBEwDASIAAhEBAxEB/8QAGgABAQEBAQEBAAAAAAAAAAAAAAECAwQFBv/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAf1StcYAAAAFASiKIsAAAAEoiiAAAASiKIABKIoikiiBAIpYsAAIqoAACKIACKIAEiiACEoiwACgIogAQCKICLAAABKJNQiwAACosj6ImwEoiiLEKIoilikggKiliwAAAASiKIsAAAAAIoiiABAIoixEpYoiiAiqgAAIogAIoiyEqyAACAEsAAoBKIAESiLBKIsAAAEokoiwAA+gsmwAAAAAAQACKIogAVKIoiiKIsAAAIoiwLAAABKIsAQBKIogQBKIsEq2LAACKIsAEogIpIAAIAiiFIsoCKIEASiASiAAAAiwlCFPoLJsIAiqiiAAAAAABAEoilhSAAAAikggAAFCooiiAAiiLEAAAiiLEAAiiLBKWLKASiLAEiogEqoogAgACLKAAiiLAEiiASiLAABKIsPoibiiKiKqLAICgAIoiiKIoiiABAUABKIoiwCSKIoiiAAAiiLKABYpIAABKIoixAEoiiCoqWCgIogSKiLAKiiACAEoiqgAEogQCLAsIogAAPoKmoFAABAUICggKSoiiKIoiwASqSiKIoiiLAACKIpIACKIqIsAAIoiiSqiiLAABKIsAQCKIsEqopYCKIBKSKiLBKqKIsgKSiKICKIAEAiwAiiA+ismwAgAAAAAAABKpKIoiiLIASiKIoiwAAACooiiKIBKIpIsAEoiogIoiwCkoiwAiiLAAEAiiLKSliwSiKIEAiogIoiwCgEok1ACLEASiKID6Im4sgAAAKAAFIsgAUiwACgQACKWKiAAASiKIoiiLABKqKIsAEoikiwSliiCSKIsEoiiCgIoiwABEoiiCopYCKIAEioiwSiKqLABKIsIogQAD6Cs7iwhaiiKIoAAAAAAAiiKIpYoiiKSKIBKhKqUSKIAAAAFiiLACKIAACKSLFiiLBKSKiLCKWLALAIogEogAQBKqSliiBAEogAhKIsoBKIsEoij6AzoAACUAAAAIoiiKIoiiKIoiiKIoiiKIAAAACKIok0MtRIsoCUIsUsEoiwAAAikkpYoiwSpIoiwSqiwAiiAiiLAACKSC1KIoiwiiLECEoiqiwASj6ErOoAsACwUAIoiiLAsCiKIoiiFIoiiAABQAIpIogsAigAQoICKliiKIKiiSiKIAEAiiKICKIshKIokqosAEoiiSiLAKCIogAoCKIsIoixAIoij3jOgAAAAAAAAAAJQASllEBUoigESlgUAAAEAiiKSLAKBAIpYIASiLBKIqoBKSLAACKIBKIogiKJKqAASiLFSiKSCgQIiqiwBYsAAIpIqPcJoAAFABQAAAAAAAAQFAAAABAUsEoiiKIoiiAABAIpIsoEiliogAIokoiiAASqikgEoiwASogIqsqIABKWKICKIssBAhKIspKIsUBKj3iVLAFKWKAAAAABSTQy0MtDLQy0JNDLQk0MtCLAAAAACKIoiiKIBKIoixAASKIoyqoqIKioiwSiKqLIAiqiwlEgVKIokpJNQiiABQIsAEoikgQACLKCVKPcWaiiKWUAAAAAABSLAUgABSAAABAAAAUAAACKIohSAAiiKICKSLAESiKqSiKJKIoiwASiSiLEBYogEogASKMqIsUBKIogAIpIpIogEo9yWbABVlUAABKEolAAEAAAAAigAAABKIoiliwAAAAABAAAIoiwAiiLEiiKJKSKqAiiAiiSiLACKIBKSLFSwABIok1CLFAASiLAAESkiw9yp0KWBCliiKIoiwAAAAAAAAAAAKIoiiKIoiwBAAAAVKIoiiKIsQABKIsAAIogQCLESiKMqqLBKJNDKiAiiASiTQyogQBKiTUqLAFBEpYsAZA96p0KJKWKIoiiKIoiiKIsAAAQVYoiiKgAAAFKSKIsWKSKqBAJQiliiKIAABKIogRKIpYEAiwASiLESiLBKSKICKqSiKMqIACLCKIECEok1KlCKIsEpYsT6Am6CKUAICglAASiKqLAAIAFSKIoiiKJQiiKWLKCKgqEASiKIq2AAAAiiLEAAAiiLACKTKlikgEoiwSiKSAikgEoiwSiTUqLBKIokoixAEqIsoBKIo9wmqFACUAAVYoiiKIoiiKIo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'); --shot-dark:url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBUODAsLDBkSEw8VHhsgHx4bHR0hJTApISMtJB0dKjkqLTEzNjY2ICg7Pzo0PjA1NjP/2wBDAQkJCQwLDBgODhgzIh0iMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzP/wgARCALHBEwDASIAAhEBAxEB/8QAGgABAQEBAQEBAAAAAAAAAAAAAAECAwQFBv/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAfkC80pEsUAAAAABKEohSLAAAAACKEoiwAAASiKIsCxAAEq2LAAABKIogAAAIogAEoixAAAAAUCKIsAQAISiCgAAAEpYAAACKPZLIAAASkiliiKIoiwAAAAiiFIAAAAABKIoiwFIACKIoikgAqKliqgAAEoiwAAAiiLABKIsQAAAAFAAiwBAgCKIKAAAAixQAAPZKIAAAAAIBAAAIoixQAAAEoiiLAAAAAAACLAAAACKSLAAKAiiBQEoiiAAAiiAASiLEAAAABQAIEACAIqoAAABKWLAD2iIoiiSiKIqoUiiLAAIBAAUAAABKIogASKWKIoiwAAAiiLAAAACKSLAKAAiiBQIogAAIogAAIpIAAAAFAiiLEACEoiwCgAAAPYslAAASiKIoiiKIoiwAiqiiKiBBViwAAAiiKIEABQEoiiLAABKIAAAKioixAAoCKIAFSiKIACKIsAAASLAAFAAASiLEACAIsoAAD2iIoiiKIoiqioiiKIpYoiwAASiKIsAAAEoiiKIsAIpIoiiLAFAiiKIACKIsAAAIogAQAKiiBQEoiwASiFIABKSKIFAAAAiwBAAEqIsoD3CAAVKIpIsACiKIoiiAAAASiKWLAABKIoiiKIsAEoiiKIsoIirIqIFAiiASiKIAACKIsAAQAKiiBYoiiAAAiiASkiiLAFASgCKSAACAPasAAUAAABKAQAAAsAAIoiiAAAiiKIpYogAAEoiiLACKIogAqKiLBKIogEoiiAAAiiLAEASiKIspKWKIAACKIsAkCoogUAAEiwACPcokpYKAAFIoiiLAACoLAAACAAEtrLUkiiKIoiwAAAAiiLAFiiKIAKiiASiKiAiiLABKIogAAIsAABEqKABYogAAIogAARKIsUAACKPcskAlAAAAAACKIpYpIok0WTQzaIoikiiKIozaIABLAsCiKMtDLUICLKCAEq2LACKIABKiKICKIsAEoiiAiiLAESliygAAIogAAIoiwAASkixQAPeJIoiiKAUEAAAiiKAAAUBKIpIoiwKIsUABKSLCKIoiiUCCwEoiwSiKIokqosUBKIpIsAEqIpYCKIsAIogAEoiwAiqgAAEoiiAAAiiLAAElF9wkAAAAABQQAAAAAAFBAUAAESlgUAABKSUIoiiBAAIok1CKIABKIokpYoixAEogApKWKiSiKICKIABKIsAIqoAAEBYoiwAAAiiCPeEgAAUAFAAABAUAAUgQVYoiiAALEKWKJNQiiKIoiiLAAEAikiqkqIoiwSiLACKWAASiLBKSLKAAioixUokoiwAASiBQEpIsoEAASiLFAAA91iQBKWKWVSKIoiiKIoiiNDLQy0MtEy0MtDLQzNjDZctRIolFAAiiKMtDLUIoiiSiKIsQsASKIsIoiwiiLCKWKMqIoiwSiLAESxQEoiwiiLABKIogUACKsikioiykoilgPeWIoiiLViiKIoiiKIoASiKIoiiKIoikiiKIoiwKIpYUiiTQyoiiLABKIok0MqIsIpIogIoiwirIshKJNQiiLFAiwixAVKIsAoCKiAiiAAilikgUAECyKIsAPellsAUBQAAAAAAACiKIoiiKIolCUAEoiiKIokpYsAAAAAQBKIoiiSiKMtQikyoiiTUJNSyKICKIsiLLYoghKIsEoiiAASiAiiAAASiLAAALIo91qajQy1CNCTQy0MtDLQyoiiKWKIoiiKIoikhViiNUy0MtDM0SKMtCAAAiiKIoiiTQyoiiLABKIACKICKSAikk1CTQyokoiwilk1KiwAiogqKIIShKIokogAAEoiwCwI+kpbNFw0MtDLQy0MtFy1CTQzaTLUIoiiKItMtUw2MtCKUIILFItMtDM3DLQw0sysAJQiiKWLAABKSLCKIokoiwiiLBKIACLESiAiiLEiiLCKMtRYsIqoCKiABEoiwilgAAIoixPpqtoliwoAAAaAAiiKJNRIolQqCgTQy0IoigIijLQyqiCoNMioBYy0MNKysUAACKSLABKIsEoiiSkk0MqJKIsEoiwiiLAEiiSkiwSiKXKjKqgIoiyAQBLCKVKIsAPpiy2WWBRSUIpYtXNqItMtDLQzNqw2kw2MqIok1CKqKIqIsBQCUIsCiKMqMtDF1KIKhSpMqWTQy1KiiRhNuXQoAEoijKiKMqJNQgIoiwikkoiiSiKSSiKSSliwSiTUIoiwiiASiKIESj6c0o0lzbTLWVMw3eQ6uVXoxorUlAAACgAgKjSMrTDQy0MtQzaJNDKiKIsQFBAIok1CS8zd4Zr0vHmPdnxSvVz4k1ijKiLDfXzl9m/APc8ej1PLT0uGjoxoqiKMtQy0MtQy0MqMtDDRMtQy0MtQy0MzQypJNDKjLUIoyoy1KiogIo9eOEs9E4xe2eaSwAAVKWKHTkPV28A+rfkdT6T51X6D59T3vBD6D52T6k+Tk+rj5pPoT54988A9zwxfo6+YPq7+MX7uvgU+5Pk+iPc492srBM4Tq8+D158ZPTjjDfOjLUqKiKrNoyoiiTQypMtDLUIoijLUIom8jt08o9zxdV9Dn0iNQy0MqJNDLSsNDM3DLQzNDLQzNjDcMNQyhLJDTA0xE255OrhmvTnzD1iSUIoFIoixUAlFyKgsAAEIBCpCpCoLELAEBFqAQtyrvrzI9d8Y92vnl+g8PQ9LhtejOhNIyoiiKIoijLQyoy0MtDDQy0rLQy1CTQy0MqIo104xPVrxl92fGj1Z86zu849Lyj1TzD0PMPVPND1TzDrzgQABEsgrKrlCxEqQqD2rIIKzDUgsAQqCoKgqCpCoLELAELAILEKgrIqKsQsJQBKoggAqUAqDe+I9GvLV9d8dPbfDT2vHT1PPpezlo2moiwBYsQAAlIgMjTCtuZNMjTMNMioKzE0xDpMQ6OY6OY6TA2wNuY3MqqAgJE1MjUyKkKyPoTzaOzlToxSiACCoKgsAAACKIsAIBKqKiShKIqsrBKWKIoioiiKIoiiKIoiiKJQAqC3I0zTd5l7XgPRfMPS4U7OVNzMTTIqAAgrMNzI0zDbA1JCpK1JDTMTbENuY2wNMDcxDcxk6zjlfRfJg9ufGPTPOXrOcN5Q+nfDpn2PLs7uWzd506OdOrlTreI7zlToxY0goCUELAAIKgIqpDUgqQ1AilAACBSKIoiiKIoiiKIoiiKJKJQSgAAAQusDd5jpMZOs45O88+T1PJk9k8dr1zyD1zyj1Txw9efND0zzjtOUXq5DpnIqCwCCxCoCCxViiVCojqzbnTNNMjrriT1b8ej1OPRNXNLc0rNXTI1cjdwNsU0yNMjTIqCgAAAABSwKSKUAIAAAAAAAAAiwAQCQ0xDd5ZO04DtniOmcykokogEogEokokogIFAILEKgILBSIpCoABAADSUqDTKzbA3cDd51N3mOjnTr08w9vT52k998ej1PLT03y09Lho7M+o4PSPLfTDzvQPO9A870DzvQXzvRU8z0JfO9CvO9CPO9A870DzvQODuODuODvTzvQPO9A819EPO9A870Dzu44O2a556SOWeyvO7jzvRE4T0Q4TvI4zut4TuTg7Dg7DjOw4upeU6jlOo5TrDk6Dk6DnOsOc6jk6Dm3Fw3DDYw2MTpDDcjLQzNwy0XLQy1AAAAUiiUAAFgoRYKlqoKlBU9fv+KP09/MeyPtPB616NZBAAQsAgELISpDTIrI0wNMw3MjTA3MQ6OWbO04w655w6TEOkwNsDcwNsDTMNsDTMNzMNsDTA0wNMw0zDcxDpMQ3MDTENsQ3MDczDcyKkNSFrI1IKkKgqCoKyKkMqmooAAAAAWUAABAKACpaWCoTUDr7fmo+96/y9X9M+R7F9c3Y5ukObpDDcMNww2MTasNSTM3msmU1MZreZEQJNDKwSwILIKgqAACASwBICAiwk1Fy1DLRMNQy1DLUXLUMtDM0MzcMtDDQy1DLUIsEsVKJNQijLUNtCLSNUy1TLdTDpTnelObrV5XrTk7WON7Djew4u44O44O9OF7arz30U871DzX0jzu44uw4+nA6zmjo5q6OY6MI2wNsK3mICooiiKI0MtDLQy1IyssgAFyNMw3MjUyNSAQsQEEsEokok1CSiSjKjKiSiAiwiwELASiAAgEACKMFUtM3VMtkltI1SNUzdUzbSNUzbZc22zNoi0zaFaFVQLAAAAFIoAAWCoKIAAACgAgBAksJKqSiKIolgQhAEABAQEEsEqosiSiSqkoikiwiwilyoijKiKMqIoy1CKIA0MtjLYy0JbUl1TN1o53dMXdM20lCgUAFBQoAKyNMl0yNMkqUBQABQAIAqCpQAAABLCSqzNIy1CKqKIsiLCKIoy1DLQzNwyohCpDUyNSBKqTQw2OboOc6RMNww3Fy0MqJNQiwSiSiTUIo00IoVSVSW1JbSWhQULc00zSpSoLAIKBQFIoiggtyNMjTI0yNMjSIqFqCgCgAAKgqICiAQsAAIiiKIAAsEok0MNjDQw3DE6DlO0OLrK5zrDm6Dk7Di7Dg7Dg7DjO8OLrDnOmTKiKSAigg7ILc00zTSDSDSC2CoKlSpQUiiKWNDLQy0M3Qy0M2iWCoNMjTNKgqCoKIAKAUEBQFgqAAQqAKEKgqCoKiKgoAAI0MzYw6Dk6jleo5XcSLKk0MzVOboOc6w5XoOU7DhPQPM9I8r1ZPM75OLrDnOsObcMzYNUzbTLVMXYxdVMNly0SKACChbAAAAAqC3I0g0zSoLc0qCoKgqUAqIqUAABQAoAAlECwgKACAAoIJSoKaItMtKysQkNMw0wNSQ1JSmjE7DhPQPNPUPK9MPO7ROV1CEUQSxCSqyKyjqg0zV0yNM00yTTNKgqFqDTI0yKgqCsjUlKgqUqUqC2C2CoKAQpCoKgoKgqCoKhagqCoKgqCoKiKiqgqCoSoKkNMjVxTTI0yNMjd5k6MF3M0SiTQy0TLUJYKlAEZNTMNzmro5jrOY6OY0yLmiKMspdXBNsVdXFNIKgqCsjTMNsDczSoKACoLcjTNLcU2wOjnDq5Q7uI7OI7OVOjnTbNKACwAAKkNMDbmOjmOjmOjmOjmNsQ6OY6OY6OY6uQ6uVOjnTowNsDbA2wNuY6OROjmOjmOkyNJDTMOk5w6zkrrOQ6uQ6OY6XiOriOs5jUyNTI1MjTA2wOlllAiiTQxOhObqXk6jm6Qy2MN053cIolsCgAololUi0zoKAqIqooigCKJNDLQiiKAIoy0MNjDYw1TDcMtDLQy0IoiiKIoiiWC3I0yNMioKyKQqEqCoKgqABLBKJKMzUJNQzNwy0MqIBA2hag0zSoKgqC3I0yNM0rI0zSoKlFgqVahLYLYKlioLcjTNq3I0zSoKAIAAAAJQgqKAAIioACCoqoLAAWQ0gqQ1IKgqEqCyCsigAAAAQEokogJKJKJNDKiTQyoijM2XDYxaFzDpeI7OI7zjDu88PTPPD0vMPS8w9LzU9LgO94DvfOPQ849Dzju406OY2xTSC3MOmuI7uA7uFOzlTowNsDbEOl4w73zQ9Tyw9c8tPROA9Dzj0vNT0PPTtOY2yNMQ6XjD0PPD1TzD0vMPTPNTu4Du4Q9F8o9V8cPa8Q9rxU9jxj1vIPVPOTvOA7zjF7uA7ziOziO05jo5jo5w7OQ6zBNsioKkXTMOjmIAlWLTNBAiwArNLcDbI2yNSABNCUBQlEtMtDLQy3TnO1OF7k4Ow5Ogw2ObpTlOw4usOboXm6jk6jk6k5OtON6Dm6RcNQiiWiNEy2MXQw3CTVMTrTi7Di6w5Oo5OtOLtDlOw4usOd1CLTLQiiKIoiwWC2DTI1ASiSiSiKMtwy3DIVLBKIoigQ1INILcQ2wNMjdyN3nToxTVyTTBdsDbA6OcOrnDs4jq4jtrzj0vKPS8w9Dzj0XzU9N8tT03yj1XyD1TzRfTPOTu4F7OI7TkOrmOrkOsxUsAUy2M2hVFlEok0IQ0xDpMQ6ZyNSCgILASiKJNjDoOboOboObpDm6w5XpDDQyoiiTVMNjDcOLoXndRSCoACiNVMNjNCgASiKMtDNBYNM0TVMN05ulOTqOV6jk6jk6w5tjDQzNjDYw0MtDLQzbABYNM0FItMtDNoi0y1TF0MtEzaFyNSC2ULTM6DGqI0M2iKMtQk0MNjnOo5Oo5tjLUJNQgCQ0zDbA0wNzI1IKgxRVCgAtCwRBQAIACAAAUAKC0LQUQAFAoQCAzBQFChAAECBYACgAtAEAoKCgAAkAAAABAAUFABAAAgAAIBAkACAkFgP/EACkQAAICAgEDBQEBAAIDAAAAAAARARICIRMQIDADIkBQYAQUMXAjkMD/2gAIAQEAAQUC/wDid1/62XBfE5IImJ/6CcHJicsk5ZT3RnlByFsZ/BOC+JyYHLgcuByYF8B4z9e4L4nIckl8hz57SXyOTI5JOQ5IL4lsfsZ9WDlOXI5cjlzL5DnxOTlzgj15I9bCSFl4l0vgc3pnPgf6MT/RB/oP9B/pP9MH+jA5vSkv6ZoXktjBfE5C+Xz4yyg5C+M/WOPjcmcHLmc2ZzZnPmc+ZzZnN6hyZjmfO5g5vUgj+mSPW9PLq4L4nIckl8vp/wDg5JL4n/PxkIQjRbEtiWgvBeC5cvJcvJaRz9pEo5czlOSC+I8ei+qtMHIXxLY9HEF8TlOQ5Tkg5MS+JyYnKR6jyyyWUZwckLkOSRz81/XWk5MjkOSC2PRfkn9wy+RySchyQXxHHy9Gh/JY/gv8LaS8nIXgviOPNoY/G+1/Efgf5C0l5Lly3Zro/nMYxjGMfay0F4OQvJeS0jno5LFi0Dj8e5LD8j8bGMY/G4LwXLyWkfwXJYsOPxzH2MfcxjGPoy8F4OQ5DkkvJeS+RbIcj+K5LyXLR42WGP8AF2gvByF5LyW67LSWktJaR/TWkuRMT5mMY/vmWLFi0/cRlMFxx+GYyxYf4JyOelpg5CMsZF90x/h2MYxjH0cwcuZzZHNkc2RzZHPJznPgR63pSYxjmUKFChUqVKlSpUqVKlSpUqVKlSpUqVKlSpUqVKiKlSpUqIqVKiELohCEIQhCEIRURUQhFRCEIQhCEIQhCEIQhCEIQhCEIX1uP9Pq4mH9WGRExPxWMYxjGMfRjGMYxjLFh9WMYxj+O+jGMYxjGMYxjGMY/sImYnH+r1IMf68JMfU9PMrP0D/VY554GP8AZmY/0+jkRDjyLyMf7CJnGcf7PVgx/r9LIxrmLqhCF4nAx/jUIUFYKwVgrBWCsFIKQUg44OPE48TjxOPE4sTixOLE4sThwOHA4cDhwOHA4cDiwOLA4sDiwOHA4cDh9M4fTOH0zh9M4fTOH0zh9M4fTOH0jh9IiZgvkXyLyWktJaS0lpLSWktI5HJvwIQhQKCsFYKwVgrAsRYixFiLErBXEriLAWAsRYiwFgLAWJ7T2ntPaLE9p7TRo0aNGjQoFBoUCgUCgUCgUCgUGhQaFAoFAoFAoFAoFAoFAoFAoFAoFAo86F+DYxjGMfj2bFIp+x0aNGvBrro11Qvt0IQhCF9ohSIUikUik2bN97+/QhC8WjRru0a+cpNmzZscjkcjkeR7j3nvPce42b6IQhfjdGjRrohCEL5iF12bNmzZs2bN/MQvI+jH9ho0aFAoFAoFBWCsFYKwVEIQpFIpFIpFIpFIpEIQhCFIpN9jGMYyxaC0DgcDgcD+MxjGMYxjGP7nZs2ORyMYzRo9p7RYigUCgUCgQoFAoFAoFAoFAoFAhCkUikUmzYpFIpFIpFIpFIpEIQhCF59GjRoQhCEIQhfbbNikUiF2aPaew9gsBYFcCuJTEpiceJx4nHBxwcZxnGcZxycclJKyIXXRo0aNGjXmYxjGP4rGMY/t99rgcDgZYtBaC0DgcGjRo0KCpQpJSSmRWRSKerGMcFoLYjxHBo12oQvK5HIxlixYsWLFiwxj6aNGjX3mxCkUiKlSpQoUgpBQoUKQVgrBUQpPce49w5HIyw+mzYxjGODRo0IQhC/OMZYuXLl8S+JbAtiODXVCKyLI95/5B+oPMtkcknKcpyFy5YsMYxj6aNGjRr4OjRo1+Q0KBYlYK4lMSmJSCkFIKFChWBR27H1UFcSmJSCkFIKFCklZFJv9MhGjXymMYzXTZsYy0Dx66NGjRrqxj/NMYxjH3scjkcjnrseQ8i0lzkOSC8F4LYjxHiOOuzZv9WvChdjGOBjHBo0e09osRQVgrBWCpUr2sY+1jGMYxjGMY/Ns2bNmzZs2bNmxjGPysYxjGMZs2ORj8jGMY/ExjGMYxjH12bNmzYx+JCEL5O/hIXy0IQhCEIQhCEIQhCEIXahfSIQhf9FP/oBC6oQv2bGMf0y8LGMYxjGMYxjGMYxjLFiwx9UIXYxlixYsWLFi0jkcjk32oXY+zZs2OSxYsMYxjGMZYsWLFixYcDgYxjH4GWLFixYsWktJaSxYY+7fRjGMYx9rgsWLDGMZYYxjGORybNmxjGPtfeyxYsXLly5csW7mWLFy5cuXLl5LyXkuXLly5YsXLlyxaBx010YxjGMY+5jGWLFiwxjGORyORybNmzfahCkUikUmzY5H43PxWMYxjGMY/pmMfgQvMheRC7WWLDH8xj8DGMY+1CEIRUqIXhQoEIQhQKCpUqLprqipUqVKiEIXwkIXjQhCKlShQqLwa7WMYxj+UhCEIRryoQuxjjoxjLFhjGWLDGMfdoYxjGMfa+xeffexjGMZYtJaR9iEIXzGOBwaNdzGMfiYxjLFiw/ExjGMYxjGMYyxYYx+BjGPoxjGMYxjGPo/ksYx9i7EIQhCELyIQvOxj8S6sY+zfcu9edC+CxjH5ELuQhCEIRvwsYx/AXgXwX3oXVCF8JC+KhCKlRfPXRCEL6xfCQiohd6EVKlRCELtQhdiF5UIQvGx/P8A/8QAHBEBAQACAgMAAAAAAAAAAAAAEQASYFBwgJCg/9oACAEDAQE/Afe6eazMzNlZTMzZWU6SzOkszOwkR0kREREcaz8UP//EABQRAQAAAAAAAAAAAAAAAAAAALD/2gAIAQIBAT8BQh//xAAwEAACAQMABwgBBAMAAAAAAAAAMQEQMkECESAhYJGhIjBAQlBwceEzUWGBkBKAwP/aAAgBAQAGPwL/AJVBjFJun2CdN0D298D4CZr1jGORl0F0enuioxz37kdMCoy6PUUIxS4cj7pyXG+Ik/Q3Tr7twXQMWkWyWdSzqWdSzqfj6m+NIer+C+C6OfeuiH49m+PTX4a6S4fQxyMcjBjkPoXyb5nv90yXydrR1/Bdq+auKIwP0fdT9DdPimPZQhCox+qbp1D1/JbApGP0xm+KOjMlpaWimmRSWmrVqg3fyTrnNFR8FsYhSMfsWxigRkY49jXRQKj9jHRUfqLoqvhZ+kOio+NnRC2WPwzouGnRVcjkYx+lP/RtjozfA/YvdIzHIwKBQWwWFk8zfrg7OlE+xb1x+52o/wATdMT8exWuJ1G/VpfJ2tGYN2nHsX2dKYO3oxpG+Z0fk16M64/b2K16MzE/sdrVp/J2teidjSjS+OJEIQhCEKRSKRSKmRSKRSKRaQtIUikUikUikUikUikyfYuop5lvUt6lvUt6lvU3TP8AIxjGMYxjH3iotlUQhCEIQhdRdRCEIWx9i6iFVCEIQhCEIVULYVEIQhCEIQhCEItEIQhd+vX3wd9GTJnkZ5GRjHRjGPgVCEIQuh9H1TBgx3yEIQheAwYMGB0yZMmTJkyZMmTPBuTJkyZM+FyZMmTNHt/Q+h9bGTJkyZ5meZnmZ5meZnnwRkyZM7TkukvkvPyH5D8h+SC+C6C6Bx47Jk8x5jzD0hyORyZMmdpj4F+z7Ps+6ZGXFxcMY4HA4HAxjgugugugugvgvgvLi4uLi4YxjH4C2S2S2S2RSKTPDWDBgwYMGDBgUCgUCgQhUwYMGDAhC7hjGMYxjGMukukukukukukuLhjHwyoEWlpaWls8i2RSZoy4uLi4uLi4uLhwOBwODHMxzqhCFxTkyZPMeY8x5h6Q5HI9hCELbQhSIXo6EIQhCEIXAOTJnmeY8xkyORyMYx7GDBgwLqWikUikyOR9D6PowYMGDHE2BCEKn2XF5eXlwxwOKoXQXQRgwYMVYx8WoQhCpkzRjGMfcotLRCMmRlw+7Y+G36LgXUUmeVHxki0tLS3YRaWlohC2GMYx8fsdcbDGMZcXe4aF/dwv7Ef/xAAvEAACAQIFAwUBAAICAgMAAAAAEQEQIVFhcYGRIDHwMEBBofFQYOGx0XDBgJCw/9oACAEBAAE/If8A8TZCEL3CF/mqF0IXu0IQhf5iveIX/wBlS/8APqFRewQhCEIQv8fQv/huhCEKi98ulf5S/wCSv6y/roQvfL+jH8RCEKiEIQhCF/jUCEKiouteyQqEIQhCEIQhC6F/jEegqoQhCF6iEKPQYxj9FCEL/FY9kutdTqhCEKiEKrGMfWhf4lFV7pCF6yEIXUxjqhC92v8AA0IVEIQhCF7pCF0PpQhf4ohCF1LqXv11LpVELYmDvAmD/oX/AIMT/hz+980QhCFVC9qhCEKi98iY+8SYOzkn4CDukzeen5B6kR/6CP8AuDv6660L+H89CnAU4EzEd5O9ZbuWYSpO9gMxwfiHngico7STcU+2XSuhC9VEwd4QTF8zOkEx+Ock/CoJkEzf9nQhekmlMyODJGeOxixMHgigRftMciqhVQhCF0oQutekuldcDtKRsPJlCceI2M0TJMzN4Z8ufSiDtBuR2Utz/h5Y7g9RLsWj0mwklR3g1kmOVO1cmD5zpB+IYE25hTGmHwDRoGPhWhHyOoRN2/4CJn2l0EzwkXpLGxPcRJixknDzkmbBoTMz3mfXVUL0kdkmRP4J0I+QtTvDi/pIQhC9FCF6a6UJZGW9mqx2HMeaDJDPoNkcadMnxjQWf/aT3y3FHpMdY7QbkJdjCbnxrNZJjDhaRDi19BSTB3gJj+ZnQmPxzkn44gTJ89jv36EIQqIQqrrVV60OTlMaEQ94iSJu71ELsJF1oQhVQhCEIXUEzDvA8EGdPBr8GTJkSJiJwDICifiiIppk7y9VCF0v+BJJySylEdmVCJfOxYj54NBuDWB3aIsJidxvXXsl6MdtLcifw7ETYxrBkTgnuowTFi2E/ROG7OTN9jHiMiTP4ExdpPoT9EUaJPmRLF0YBCWU0IupiYnAmPwZl7KCZO8vQdX66FBsahjqxjo/SYx+5iDtKNyMxrBE/mMkfLAP+O8EKe0J3GwF1IXtEIQulY+u/U3LeuqOKH7J+xY/YstgROO0oIgx6mLIRH5ntJkwP1QP7FvHIp9xrMGoeYQtVj9djgYxjUP0GMY+h0P3jH/BYxjijmPmSIe0zPesDfIY0tjUjYif4Hft6NsRwOKMaKH0sYxjocjkYxhyOrGMYx1Y+m1DHR1ce+LIWYixsOaKu38JjH0xD8jRnYzwEzgQOS5wahxgahjGMY/TdH6LH1BcehjHSc0Ew/En43IgmfCDT4psyRyZwxooZnst6voX9XsREGwgUcY+k6GMYx9DgcdQGMfoTF3gTmyThGkTOJlPzPTYYxyOMetzjS0CYUnGMC96/wCe1DHA6jGMY8uoDJjHeYgkWuJioZEGnwZ8cGZ9GdMwNjI5xkc4jnGR9TH6URfIiHPUjHwIn+UPAYxjH0OcRzQKJib+uxjH/TdGMZMAnPkyfYyogxZLqBfEOPyMwZtLS4JlPf8AgsfREIiXzB2SeljGMfQ5xGNJoocDzHV/2ExEJyjkyfM+m/fPqfQx0dPkCIfMESdpjoU+g/7LjEmECmgYcY5/jsfqsYxj6nOJnDODnGeSOykRL/oMEajeyQhC6lRCF6KEIQhCEIXUqzAmZMzVUQhCEL3C/gsY/QAMjvCNCIsesUTL4n5p+TQ4j8w2mgu0Ntn0UyPHwaDR0vpNPo/+n3f+BBHMCcqqi06amj3pXfn/AGihhh+uBCEIQhCEIQhC992l9pxImI015Zpp494IFxuZ1tSxbAsWLUsWrYcDgcDgYmFCdYDE6gIKJRM5GPoCVGMYxjGMYxjHAxwOBwOBwOBwOBBwIIJ64CAxjH1uBwOBwOP4LEpYwdzQZP8A2WTOYvB8t8JtJMHx1KiEIQhCEIQheoyQ5GMfvmOrH/gf0nSQrQePaRS1y2LEMaTqhC6kKhCEIQhVVJgSGP8AhIQhdKEIXQhCov7OcgpHbMXLk7En5glC9SDR3ELpBCEIQhCO3eRHyTHAmeRMzPz6TgYxjGMYxjH/AF1wkXCTKkyJMwZgzHJnOTOcmY5M1yfuH6h+gfoGc5MueTJ5H7h+6fvn6fSRKv6p+6fsn7Z+2frn65+gZHIy5Geo5nhnhnxmTecTesj0lmdB4IovNHXtklmmeZxMy+ZEIQoFGAowFGAgTAQZRlGQZZ5pMuOTxSeSTzTXTySeOTwzVqzvJn+TP8mZ5PBJkfZk/YsP2LCERfoeCRYPsWD7ESJEiQIViGYoFQGQZFQMgyPsyKBYKBdQACcyZkz/ACZ3kzvJneTO8mc5M7yZnkzvJ4ZMybU2NjYQhaFsi2RbItkLIWR4IbCRThIqWyLeQKPIPO1FqXzL+QX8gvh9G30cG0FsiNINhjH/AA2bfRt9HnY3PFzeOTeB+IfiPFhMuBMuBDUapNUjzng54POx52PO3TfM3CwSZEmRIpwkU4ScnIspFOEinARtTzsedujk5OTk5OTaTaeTzuedzzuedzzuedx1edOTc3k3k5LFixY87j8Y8/scY/ZbGDYbKPFi2I8WH5gdKtj9i34k8EW/BbGOBYH2LALCw1GqRa/ybFsuBacC8QvELxHnY87G/wBDz+jf6N/oWf0bODbwbTabTYbBCLly+H0XwcCnDwXwmz7NnEmzkXwgXwgXwgWQ2Gw4ODjo5Lly+fBfPgvnwXzL4qm6psPIYxjkc1uXFOIp8gU5CnGBvweCB/weSDyQZknggQIUNz5sbcDxYcfkcfgTHgPOR6nJybybm/8AMQpyFoKchTkXyLly5cUiNBoNBoEIQs/sWf2Wx+y2P2Wx+y2fJu5qKivsLZm43Fsy2fBbo3NxZyLMWciznkWc8iznkUYyWxnk55PFzxc8XLYi2ItjI4xDzNxeI2POxmzwLFNA1B+IMgyJMngZNBZsTEzay1lqBZzyahKNwszc3N6MdHRj/nIQqI3L4/ZfGS+ZcXF6F8Z4N54N/o3ng3ngcEwP/YHi8moWGjURyYFP+4U4wKRSKfINjk2k2k2k54OeDmjGPMcYm5ub9KFmbDxcWnIpx5ixczVyFi5CxBVBPgg1C+I3CzkUY/Qox+hRj9FsS2ItiNzctkMYxmxsXwL4dKEKRhhCkuXLlxyORyOR0PKoxjGMfroRcuX8kU+SLxi8YvGedy/kl/JPO5eovmL4yXxG/gebg8WPFi/5L4aXkjwQeCBYPBk+D8I/IPyOmimshRcuHHggyPBkeDIcGQ4MhwZkGZBoDZGyhhhqggpLl8B/9Z5oPLB5oF/1iBkcDU4M6eDwVQQcDgcDgZtVjGMYxjGMY8xziNiNiNiNiMMPRoo0DyHA4HBYsWLe6XobnnY87HHBxwcHBwXyOKNysys+Ipx4nijxQ/xMjifk1yQngjw6CwQZAyaNlDKGUFwHkkyvs8meTMwzDMnkzJ5MxyZzk1x8ZnTN0figX5iwuOru7u/GM3weKKFsQw1Go1VEcnPRtTY2NjYcYDjCprFiExFxNZrHxHGGGFIp/mXpcubCEKRYhZDQoD4RsApKz8CjHxRPBB5IF+RmyZ+o2TMqZEyJlzKC4K5P/sP0DMoJ4MbA1BZxRiNQ0SaJNEmieTdybuRjGOBwW6GMY46gaBzgORyORyORyORjGMYxwW6HOMjYjYjYjYjDGMY/Tf8ADWYs5FOMinMQKa5xj9jMGZRC/wCkT/WZngzPo8EZf0eOB4Zp01hk1i7sNlyaHJk/dBmj8gzBfEPKTcILSzTMM4zR4zaIQhUajUIQhCEIQhF8RzkaBoD4QPhA2EDYQNgNh1gFIHAYahok3Fs/6dy5cuXFIpFPkC8QNnwalA+POibDlWUxqCFxC4hcRmDOkzJExH+J4UiHRzHgjNc9FYeaJmf9I8QvEWxgeSPJC/g8EDB5DZ1AQhCzFmbm5ubm5v07U29BjGMYxjGMf9O5cuORzgNkPhA+EcmjkaXIp8sUXlczfsZ7keIWKGgPhoWGSxxJoPBAulmS4Gw4DYDTwPJCZGupOHx+hjQOBh+uCgUCjAUCgQVDUOMR6DoxjGMYxj9jubm9N/4aEIQhCFAowLYFsIFgGTMrR5zkyJ5oM8Z0mcE/B4oTHwZ0iLHmjGOcR4hh5RwWw8DfgZQ8Eme5pM7gJj4pYEZM+KKCkuXHONd6m5bEtiOMRxiOBjHXY2NuhjGP+O+h0Yxj9hubl8S+JfEU4iCzk1SJjPIsU8ixTyKMZ5N56Lly5cuXHI5HI5HmXxL4m5ub0uXHIw1CGg3Nw8YDGvyWfPFLuWxNRqNQww4HBok0SaB5DyHkMclzf/BLly48h5DyHI5Lly5cuORz1gMYx5U2GPhk8snkkzHNZnBBkeRX+9O/QRMmTUM6oLLkMNUGqBQKBQWLFixYYxjGP/GlAoFFCFmbl8aoUYmo1CjEtiOMRMRcTOFxkXFQPF9G3gWDgLIeDM/7PFJ4pM6a5qcHkhyORyOamgYxjEEFFp0mkfDpxj6HRjGMeQ5o1CxCxCxGqjcapNUjxDYjYjGgY4H6LjobjYjYjYjYjDoGGHIxjH0sdDdAcDgcYyPMYy4x0bjcbqVF6A5HOA8Awwwwww5wHI5H0IRq6AhCF0oUCim5vJubm9L03qpEFIpFIhCqhCEIQhCzNRqF13wNjaty5cuOcByHIeRfAUiFRRgILia6XHHGG9UABCFAqizF6agUCgUdLGMY+i3UugMKRSX9CxYcFsC2BbAtgWwrYsWLf11GHtNzc3NzeRjGMYxj9G+XUxjGMtTeB6DyHkPI0DHA4HAxj6WMYx9b/wAbuXL+ghCFUQqNQ2IpxFJcuXLjkYx5D/lOBxiOMfbv+I6iCDH75yOS5cUikYQuljEE9pwAFYcYuKcBsBsDQLKjzGxHxHNptGwHwHH6SBhyXos6iLjkYdL41HQNQgovQExqoaRejJSzhMRMRMRMRMRwOCxYsWHRqpcccfogYau8zc3L4lxhz0uoolbFqCUbDWazXPTb5Dj1BhhhugMcjkdDrYsOnZ0Z8B8B8BsB8BhzRG48xROiOONmPn0VOOaBMBMxczXJqqLQzIHGIw4qvkPkOOOMMeRbAYxhxxhhqrjj0MyhmD6GuIWYpxGxGxoZlQVU0DHmPMfTYtjQc41vWw4GOelCyFRjNHSDDD4D0MYxyORyORz1PIYxjHOI5xHOZcUimvNbYlqb1uORsDQaB5Gxt0KhhCEKBQIVbly+YpGGEIUCgUC6LCihhSXLjkcbA0GkQZubm5v1oQhCFJfEuXHIxjGMeRsocDgY4GMdfTUY6IajUb6yVlJfodNhMzIkQLhAotaWlqLGgtgLKtpraK7DCkWghCEXL9DkeQxyPQtRrHFIjYUYCitxSLI0GiutLDDDikvRjHA4osWo4ENpt6M4OTerGMYxwWLdO/UhdIKIIKBRWB9KF0BFhxgJQcCYi4i5iZ0bhMhaGyHqaIGWLYDjAcDCC07ugOrEwHBYUY0IQpFIpFJcuKl6XL4mouORjjAcDg1Go1dHaoOOS4ukEKS5fA2oshZCFS4xjH03LjkY6OBKgww4wqx1N1DHJcuXL0Y+szQaR5DLl6vpXHHpYYYYbE1DjDDj0McjkcjkY6mo1DqOOMNTpFEEwkcYUOBwMfQzYeVNjboQjY2NquekLFhUIQusdhsIELpQhFxSMOMLToYx9CkU0cGg0UPrQhqOjRQ5HI5oUiEbCoQuhUIQhdW5vW1RSKS5cuIQhCFTkYx9LMv0XFNGWFAmAmAqWEKhBK+scQuPIYxjGPpBwOBwW6txwMZcU0KiEIWQpwGwNzk2opEWpybG3S6GbUWYhVEKhBBQbHFL4Dkc+ihCYiCgWUiyEXo5HIzeluhjquthe63pYUULpBCohdN+tl6IsWwEKlxCyEWqhdCF0KhCEIVEIQhUcDGPrUoq4LCg0C+gMQuoKi6ZCoxwWqoFAlOs1CzNxaizFmIUik3HUdGMYxjHVjoxjpYsLrvX/9oADAMBAAIAAwAAABA5Nb757445tPvf/wDvDDzT3/8A7389t7z2NPXTUcfTSAMLSENffSRQAMNLTQ0/fTQQUPDAAMFvjjk9vvutvjgw8+/7zzww089+7z8ss/zcsLDSUdbTAMJSENfbSYSAANDTw8/fbQQdPCAEPPPPPPv/AO8//b8889/vf/8APLLDD3/PCCz3PBBxsJRxtMAxMAQ19t99MAA9tLDxttNBQ0sCyye6x5x18+//ADigww04zg8sst7yw89ziggs5zQQcbCcfTAMLCAMfffbTAMNbS09/bSQQdjjikssssghjvOMv+pjzz+wjzTgkMBjgkrjigMt/wC03H0xHEwjAQgAHX3ywABDW0sPX300/PPPPHPPOKIY89vMY489PPOY7vOMc4LDCwzqY4oLL68MHGwxGUhCgwxHHzywgDT20lPX08MJLPf/ADxzzPvPPTymMMYyziGPeyyEOxzuOwuay+uK62OPLBxM5xMAAwsZx18sYAx9tLD3PCCCCOePLPPHPDzzvPPzzyiOOOaymO7yuMyGSyuey+uKy2/vTzlcxsAAw0vJx88MB19PjasMMIww088Mc88PPOY3/wD85zwww85ysojgcbHKjstjmsbxgtqghzfbMDDAMPPDUdLCCMNTYRTTXbTfSjz1nolvccY4jw198w8xy9Xy0JCMPPHojstjGsjspj0tPLCMPPDMNPDEdPPScc8wgwywccQQwgks8985AwER/vsojnnp3/03ZCEMdTU4jutDuqjkpi8PHDEMPLCMNLCYPyxRTTzlwwxywwwgwggg0njigk48ojywsl8/7243spy07yUInsrKigkpy8fPLTMNLDAMPg//APb+4766/wC++6/6yy++3CCW+yyy2OPOzAevHTnPiOCSmb1NBzmSemKCT+KT099tZ08MAvrS2qW66uOMCMIJNPPTyHfuKO+Oy2bCe63HP7H7H7n6C+62e2PXPT26mKTz+OCxxz1Zw8aPH7DDCCwyMSyyyyyxxwy2zwoAQ88OOe6S+G7yKyG5HbXz2um3ueHJByOiPDyzOCCBw1Nee7D3/wAyzz37ssMukEIIAEIDTWNffffLCUccHONi7ilneTeR5OD2tnoyw0jujww05ywgcJu9cW/e8/8A/LLLLLLHrbIwh0vM0wz30kFH3kUFG0jAzM7Ndut+epSQjKygpJLJoos5Pe2tNCn33uAZqPfvuOnn11gI5vvJeqlQm3nDQwhGX0FkfuVm87du7IfMfPYbAzM4NPe7767PfCzUz00wwzyBXGX3VHwhAa69kHEGGqLHQgwzkQxCRzBlEtnd4bKYuJuduKri3mYsMfpLa62uziHziYt4JDPM8tfnHLboKLQIK8uFnSO57DBWF01CDgDhQzySljByNqN6Z5bMeM5KI9NNauQiEU3IJY6Q083Ov8se9L7KWw03Xdel8T3nkWwziwHn2CSEWEmD0XkTBi1s/cq/WMvNeQvd/trL6bmg31nBGs9YLgSsihuyMfKU8Wn0BA3GUkHTwx2A6br5KG1Wl3hASjl0iOvDwO/869Ntu+9rIM/YaapdufYraw9+avgVv/8A/vLzP7D+oAEcw8gNMeJZtxdWIye+vbJUVlhGam/SHPPKCH6Wa2a6WrPhVSiECO+KSDT6bJFoJDHC3/DLr6w95Eswv/X/AL3gjrIKOWWZ+yIAc87zz3vqhslovnIn2wbXDHHvvvv/AL//APvffvJQMOQCnKiy6OS2iGEUlBth5d5QkNgE1mS6IYYwQyWyKGSy+K5FZlBwAE+ayyyy+++6jCfrTDLCGuuWyWu4cYsVJkoAhRtVh9YwkKZYUVmLrj6E0gY08M8ABNNN80xwAGO+++6iCCC2KeuKi6+ERRtRtxZJJ8AJVhtYuGCyG6y6SRdgp9oE5pZv2YAlNFV85+w2+++OOKGKm6z/AOEiLNUX8GSeWaGGHOLFWaRJPAVf617ihgjnusohvrk5+BGORT+vBOBGDMGdw+jtmunpYfVWYXSNKJFKOKJNngmppHVSdULEJPOADdcsggksvqggh/w9yIPVTwzH5tppskD0IhBfMLVSHKANCPFKSbZxpo555pqmFSeRdZVEFSdcXECEUbUCEprgjmiJFcTXbX7TQwzXzPffMNTAjeebdWXDJFJFEHEGGKOGKJNTXWfQaWw83EMFzVXYTUSqbWZecFHPffOMAVbTQwwwwQc82wmGPMKGmhohpstjAuiHDRZYPCPAPKNMOBlktvxSfMCHBIFJNQUTTDDecPPOAEtz+88840+HhmMR5/45q1qjjz0/DIIFQdOLFNGHlsEHALtfRRMOGOAEPMICEcXaQVffc9vssMMOAQ8SdXbT88/zx3z+453hrFLIAKIELFuoz+z0OmFFFJPuy+9/ssPIAILMQSQRbV/8wk8vrgstisNLDDDjg5zsvhvovxeSRRac9r45pljkmqmpqUEVSfdHPOMMALFCPKQfXecTyw0wggAACHGsMOssc+gsikLYYKtnjEZAku6xtt7ab12guhW9/vAAMIDGAGGXZYTcddffcQUcfPONNMMIgAAAQRfaQUsh8mtnow60z122cXQbXSAo2rhjimtrmvssALGKEFNEPMPPMMXffQCDDTSQdfffDGeBQNGOC851hvnmHDOKKQOGWTUagsgn8sthutjpMTBIaSbRQgHMDLGNCMAYKIAGNffcQQEMYLLDDMDJDTygg8102/hlgiymgNCAEFLDKDCRWZWBZZez7+JSTQQw04wyzwcQTy8zzQUMZABHPPQWb4xw4w302ikj070zw8gilrsk5VTRfRZbfZYdbQRaUTcNPNIJJSXXGLRIjPlnsuuhqpjihrs/1ikrksthl48/tmuaOKAJGCLFBGJEJGCHPPIHIcXTeUffEMPebQBPJJ049mksjtqpmv7+tnvvtrshksmnjZhRFPDXFXALINRONKSAMBFCPOCINOITYdKRMFMDCW7/AE3O55p45ZI7L55LNecPMeeMs/FkEX2wwiAR3m0HFk3GnEFHkl2UyDi12EkEEVG0mkgyBjiQ2GlS7Ja7CADZiBLJ4Zbg4Qv91U2H0DwB1xwDwH30GH1yACF2Dz32FwAAEEEEDwABzwF0F13wBwHz6AIKIABz4D76D4P2H3zz/8QAHhEBAQACAwEBAQEAAAAAAAAAEQABECAhMEBQYDH/2gAIAQMBAT8Q5s/CRwfyHyfhODMz+MRHLH1P5JtnkaZn4XgfjGn5jk/e7ZnieB8JxZ/GfMiI9eo4v47Mz5mu/Mjgz9xH0Pi8T0fsZnxfE2/l4iIiIjTPs+Lf7H3ERrHI0RHmezo9yI4ERERxI8CIiPQ9yODzx6szMzM+ZEcnTPLHoeDY9yOGMMozGdd3fgRsjxZ4HichsZPV4EYjEXczxPE93zLOOJ8RHgzmfIiPd5PmREeJmMxtnRwIxF3oiPAiIjyPkNEREzd3cZu52RERdcCOJHiRHieDMzNjPiREXd34sxG2fA4kRsiPAjkRdXVgmZnyIiIiIiI0zMztmdOJxO3TsjZEREcHxxwc2NBjuU5znsNjOM66mfAiIiIiPUiN9XV1tnTOsTMzOJxPs5nOwToiOZERHFmZzOZzMz+UzmXAOObM6ZmZnTwZn9BzMzM5nxZmZnXcZloIxEbfzSIiIiIxGI8yIiP1zzIiOQFKMxmIiIjZ5kaNumdMzMzMzMzsZmZmZmZ+bu7u7u7u7vTmczmZmflI8iPkZ4kaLqcTPFmfuZmczmczmczmczmczM5m75PMiOBs0RHA5nmRHJ/NP3z4Hz6urq62+nd3d/lP7jPk/od83M55sz+gzwZmdMzPF8n43TM6Z5szMzMzMzMzMzMzrrxdviciNkcTZo8CIiIiP6UjRER6nMzGYiI9CIiNEREbIjkR8rM7ZnTMzPozMzP1mzgbIiIiIiIiIiIj5XTMzxdM8WfRmZnm/hkfxH//xAAgEQEBAAAGAwEBAAAAAAAAAAARABAgMEBQYCFBcIAB/9oACAECAQE/EPrJ1l6IdKOKOId65COhszMzM5GeovXHo79tZ59mf7ynrYOZvF4431gbpnIzwfrgSM5GwdN0zAiIyERGQjFwZ2bqkRvCI03BnniPu7Omz8INMjqTMzM5H8KEfLTWMCNI3TM7twZmZ/Xn/8QAKxAAAwAABAUEAgMBAQEAAAAAAAERECFRYTFBcYGRIDCh8OHxQLHRUMFg/9oACAEBAAE/EPbmE/4UJ7cJ7M96E9M/4s9yE/6U9qEJ/Hn/AF4QntT/AI0J7UJ78J6JjP8As5EITCEOGGRNyT1T/nTCfwp/8HCeqEIT+fPTP4c/409uemE/jQntwhMIT+XCezPZnpn/AE4Qa/iQntwnphCezMIT0c/YmM9MxnsT/tQnuT2J7c9qe1Cfx56oT+XP5kxhCEIQhP5E9+E9UJ7E92euemf8eYz0QhPRCeuEIQhCE9mExmMJ6p7sJ7cJ/Dnpn/RmeEJjCememYQhPdhMJ6oQhPahCe1PcnqnqhPVP5cIQhCEIQhPZhMZhMIQhPantT0TCYQhPbn8ieqeqE/4kwnsT0zGEJjCEIQhMIT1T2ITCEGiezPXPZhMZ65jCe9Pfn8jn6Z7cxhCEw54TCexCEIQnrhCeqeqEIT2IT0T2YT0T2p/xJ/BntTCeie5CE9MIT0QnrhCfxp/w3/D5kwmPD2Z7MITCEJ6oT1Qnswnswnqn8CE/wCHP5E9mExhNv4EIQnphPYhCeieqEJ6J78GsZ/LhCDRGQmxNiPQj0I9CPT0hH/DhCEWCiMz0IyEIyE9M92exMYNE9qE/gdyl/nvGeqEx5YQhMSEZGUUNTCeiEIQhCEGvYmEIsHViVoT0QnqhPchMZ7Exn8eEJ/FnohCYz0zGYTPGVExmuCEwnrnodM8LhSr1RDQbcjP+NCExntQmEIT+JP+HP4r9UH7FZSlKNJkIQhCemEJ7sJhCeueuf8AxEwZPYmEJjPXxJ6oQawyIT0T0T2IT1z/AOK7fxIT2INeuEJg0QhCemexCEJ6WvTCfzZ/En/CmMxhCeqHDGE9MJ6IQnuz1QnqmE/kzCfwOKx5eqExhCEITCeh4zCeiEJ6phMYQnohPTPRCeqEJhPfnsz0T+Pz9qYT+VME2IiZEIQhCYTCYT2YQhCYQn8GEJ70/wCFkZemEIQhCEIQn8m+iEIiEIQhCYQhCYQmE9EyITGEJ6YQhCexCe5Cf8GYJEIJEIQhCYQhCCCbEaEXAiJhCYQmWERCIi0ItCNCNCCCDqOoojM1r6dcYQhCDRMITDlhDn6IQhCYTGE9UIT+FCfzJnwIVghCEITCHXCEIsYQhl/LhCE3IQnUhMOeEIQhCUhCezCEJhCERCE9UIT0QnsT0T2J7kJ6f8JyxmEIQhMPGPLHQvp58fdhPVDucsMjIyMjIyMjIiIQmEJSEIQhCEIQhPXCE9EGiE9LwhPTCeuYz2Z76x4+jj6JjEc/Vz92PQjIzqwQQQQojI9CbGfpntz0TCYzBMxomxMEITCEIT0QhCDRz9MJ6INexMIT+Jz/AJXLgZGRkRGRkcylKUpSlwpS7YKioyGiMz9vjhz9uYQhCEIQg1rgnohMIQhPVCY8SexCDJ/AmEEsiYIQjIQjIyPQj0JhPZv8GMnrnrhMHVgmEIQns7+l4zPXGYwYhPRCEwhPXMYT2JhPYnsNCE2IQhCEIQhBohCEIQhCEJkQhCEwgiYQgmEZ1IXAiIIOv0eyiP2ZhDthCYQhCeqZejkcDlizkc/U0QmEIQmHYhCexxJ7MJ7E9UExGJtgmmCZEJ/RMyE0xTM4EJkTMfxhM56OOHYm2Cd8i5CBIsT5EYOrBZRRWhHoybYMRomhMibERCHBYLCYc/UyEIQhMGcvW/ahMYQmMITCEJ6GiE9bRPc5HEQayGQg0QjoQawdBqOgew1EIRkcINQkGQj0JeRfQmcTYF0N8cuZSrBsKvATcy0vphDY5geTUbLlmSE9EORzOUwhCEO5L6IQmxBoaIQhCEwhkNUhCeiemEwhPRCEJ6564NE9cIQ5HFzM9RjYmzP0ciEIQhxJc2NDycCEUJMiEJngi3MsKVYKzN0p88SBIQ2ENcMMZmisMEFV4lTxhMHANE2whM/TCEITclITFkIQhCEwg1i8JjCYQhCEIcCEwhCYQhCE9MJ657XER/UNNZjYmGZOdpNyexM+JDmTkTDkPIzPJGRlkkEJ6OJvhthCDQwxRRGR6GZWVwoQgqGkxvyG2Y2XFEwnqnpmRPVMGiEGhiEyIT0QmE9TWEwmEwlIQhPRMJ62vVGLgIpRu4c8M8JmTIeEIyCT5egR2YOgos48zgNxCDRKiDwfEhMiEwhyfMXwTCciEIZMg0MMUNPCwQuDGloNNDqK0Gtp6H6HhCExhCYQhCEJthEyEzxlJ7E9M9EJ6phCeqelLIXERTfCYQl1IQgjwEaEaEIQnImCciKpfJCZZk1NBCMmhM6QhCPnh/ZwOZ2OGE3w5+rgTfCLmQg1sPQNNYVlYnTZkR3hcMiJsgjKfBMbLJ+RwEzcRcL2zHA23M/BwCe7JjTTjwnp4EJhBohBrmR4wg0QlITCT0whMZ6INEJhCEJjPRxxyEshXkI9Cuh15iXUjcaEWhOuDuwmE3wp1w4rCEw45UhMyfaQmxDuGOg2LBMEJsQmXAj4E+o7HLCPQj9fk/omY1SDQ0iY0l5D1RdTg571mWK/ZRDny+YlkmiyQ23xZ1ZFosZnuuZkKlpnOcVu1OHKnpkFEqaa1TI9CexyIQhMEITCEuBiEIQg0Qg0QaIQhCEIQmEIQhMIQmEwXAQWZyVGpmKVTQ/cEbaUk5bzOTZNSiyNJTj4q8mNUPiTJW9CKfhOc13Cm6erHIDrUPknz4JBcpNrVZkaU4HY55H2+jkU6nc4F3O5u0cjoQnHKEJqcRFoTIi/JDoINUngrkUNMaeEw4oeEwhBtzUW583zOFMdgozwbsK2VOZV0UOJODz4tvuRaEKOohFqQaJ6E46m09hcN5BJ19UhJ5vVBK5nYT6LcJ3+sJvMusC0TuIkrC2QbLimupCOlThghPQa0MhMYvQIQhBrIawNEIQhBohMEGhoiwQg1hCGTdZcRpK8jhRc1VGbLNAkTkbIrhcUcHxjdaxx7kRzEh+iJ8keHxMKI0tETFXkncJS7dV8C67c2fgaaceRHwOxzxpcsuBHoxN4BwcnTRPM+r+hzOzmjXI3Lkn+jUujVEO3BbnahaWZT/vC4L2H/wAFzWXSv/Bzi/Q//Tjim9/4N4/db/Yh53yQxNXvDnkyE8khCE5UmX9EI2NkrkavIccTtn/RwTaiHcpdwd8h8khxddWScFhCEIQmEIQhMEIVghMIRaEIQhCdSz1OAxaN3+xfLfGhllvoopQSaoZFYQhCEwiI0I9AjJsQhCEJgeBCEIceJEQhNiM6BrCELfBMacTXU4NDjsQns8MvXBUZamSdVT1QmiaXJ0KPG+qCTz+qGXK9oktVPs0OLE/1G+Zp2DC9kIb4cNFBJ7uxxLn1IlwSKVx5DZWV6jZS4K3G1zRlp4HFa7MZYenBseGUrdv6bgSktgQu/MhN0r4N6Wcme5xPNGzmE0QTt2vpwGv6SlLIXYNtqzb3ZOxCekJ6BBrBCEIQmCEwQhCEIQhCEIQegO44ZuqyZzxbKvIyruaY44pkINbEITPBWDIQmfsIIVoXt5G31nZ5OAjuZVT9HmMzAc/wJki+T5ENzj3ZkZ9XhR6m9RngXSjbzLpkcQHchl6YQhCG4mfBF9BxzWEIRFTjOhmQj0x7+ml9Da6jfQqG/RcKUpTuUpuZRzfAkuhEpzE6g1/7gXPALiH8CR/AIxo4prqT1wmEIQawRIhIQhCEIREIQhCEwQhCeiK2Z6o40lpmOYHVCJW/mFuHzjS1hbjDvVv9HBuzCHkx96cnKWqiEnJ7SJnwDpxMtcnOJHmalhku8Dso83LF0ibuDGSy1UzXZjz1U0pcdgy1EiXNzU5kfVw/pisxvme4883X3J18kIli2sFKhzwG7m36WyrXCEJjx4F9DUZUuRDBpuzh4FLiRoUobb549vRSrm8Shso+ZdOGFKc+JS4dsaUpWUpSlE5wON1sEP8AaPl0nBriOvEXAW0Yj+jQa3myKRCM7HYjfDBGpERdybEITGXgQiIRaEIiEIT0CCIaJhk4oOck+5TsJXgRLjEObsuw2yszxyXPwNrdlSRbl9inYa1iHPwG0s/Y2N5FKUo2NszO5luTCN8EVzaRFuxo5L+x+BWo2X3KUpcDZ1wZdMLhfrMupaX6iHdFWpVviUpSlKXYuxSrQywpS7Fa5l80itx8GfE8xdl2CYv/ACBrAITePaUTuZdgXHLuKPgzohTk+w0+anXDbC4XGbEehCEOOM9FIxqcB1ZU/wAoXNbdiNia3G9bMtSrQ7B7mUo2Z7mepS4Uq1WFKUjXCnQknRDQr4Gz4tlNDpSlKdxtDQ6DrwKs7mS4krgkOioNt8XhS+u4UpSlKUswuF7je5noN7+ERu+pXBfBHoOriUrK9WUpnoZmehn/ABaXqXsdJYU5QXAI6Nn/AKxEnioEnivgTuC6qJnF9b/BwTv5f2KpWTW2Y6uRS745s6lXNougT53sZ0VLqkuo1c2+iGsyTuNnx+BvqUrGy7kakE7k6M6StEfaG8VOI8+Q9SdBu4tlaspSlwcL5Nlala4MhSsoeYpRtujaXMbTkNVwSHfXBcDZRqGz4cDN8n4Heo6uJSlwpSlKUvptxvp6nHhn0RX5Mqf+ETq2RdypLLyMzj4GrxrH0Im5FozLQZ9Ow6PdkY0zkTYmMIQhCEIQhCE9MJ6M9SjoIKi74cHeYmino3kJfF9QJ78JifxXzCfwz7lObd0Yq5MjXFp3LzM+iNp3zG/BxeSGutGuh0lFalalKUpS4q6HUhcxtcYMUpSlLhRpqNcXjHtFxXjyHteDfGz4soe7BWuWQhcUdzi3YzEpHag5ZZ92cEXQG3mgb7nV0yGx8buJXBtdBK5u4ufH2EvPxYmaoTOCiafBpmawpcci+pmb50m06nDk7IinNlS4JDZmenWmcuSGm3xI1bMkskZszJhDLQhFodsXed9EIQhCEIQhCXCYwhMJhCeqspSlW5lgrwOdDJk00YuYzpkJ/FNdS3BPI8KUvobWo15D2Fl6l6llcMy6lKtTcOsxpoPYh7ihtqN9RjMO6EejM9GZkejGVPNNNapiGodxLh2EJ/1Y83VsJpSWyOJOu+HVpGXNmW5dDI0RfKI3hM4I+jM9C4UpRL4MJXNPsJuaC5jdinNrsJ/BXcVc15HJEn1ZSvlhdjq4VaeSvUyKdi6HcyGzsdsJuhyEItTIyxyKiOVG7jCY9iIhCEwhCEIQhCEIQhCEIT0zHgX0QTa4NohxjNyJ0Z1iRp+zoHgdDK0fgbavA2XIy80itTqI1XnB/boJXieyHyk/Y/eInX5HylnTiIG7KV0DZmHSOpm5+Y/cG88n7gp835K9fnCl3G0PZ5KKymeEJhROPQ4N5DIKugf6jHNHUhXxJ9GWLDgjUyIcBL4N5EnR9hal7MT+KaL6OpU+CPek0wqLthfR39HDmRqNDoKn+F3M3+fRMJ6++F9yYT1z1dyLUiwyKXbBTwNg44tLqziSroIcF2oP8kN64rkU4vbIbcfYcHG8/MPJl5xcJBb0z+YNylkea7obc70RBzW44X1X18uBSlGzPHMnqpUV4lKJzg53OANNGJcN7rI5IPR5Fa4lKUT6ifDBBUZbF6iXwY14+qNyeSdV6kPUWsToIfMbWpdz6ha+BehdC4TGOeie9P4tKXClLeCG5xc6j5qDTqI5J3Y+W0uxxDyDbfEd5nbM2Oh0wz1MxXiiucfUc6ET5jRCEJrCEIiImxl6Mil2K/T2I9DuValR0FZmTGClLiUQqOCUtHmN8dPVZnwqpmZ6CTfJmwyNcVOvozKys4ClWCRkQjIyMz/ZdkN7FMyvl6K8KjL2Z/FhCEJBoygzJvwNXJselO4+TF2G3i35LHTOmZMfknYmRx/zDthCEOx2MjLU7nBYv0VFLkNjfpuF28l7dkVqXX00pcIUpWpeJGpdylKUSuDLuJHDyDZx8p+6HLlo8xbJD3yjGKmmUUKlVqsyEw7CyJsRkeM2Ox2OxERE9ArcjIyEJsdDIdGJCEIQhCFF6FaFaFaFaMrQrTEhCMhGVoQkEN+hyCgxxbI2TBOpWjL0K3K2KHuGtydxrcaW5kTbB8eBFxjJnwINdTrUPox3RmWjOzOx2OxnsZjTwRkINEwZmQhCbEIQhCEwhCE9FKUu5cWytSiiisTPxHtd7jkToGJevsxDPWeEvi3ysBFc7xP8G3T/AMIvbncVmLsxsNNk1xTXArUWOg6TpOkkSJ0J0J0J0J0I0I0I0IojQjQjQjQ6DoR0I6DpOlC2nSIZObOHi8Ec0SRg6cSBrphR517CaIO3mRobBsEaEDtQ11ZGryReDGr1I0ZGg10xWXnOhHSPpOhDZvM7ybzMvNnTRpoyNX4HpLLLOk6DoOnCbaD0F4HglaF6F6F6FaFaHThewosvQvQvQvQvQvQvQsv3KUuNKUpSl9ayEbRwRxruOSiuC8nfiPU69f50OSQ4tEdS6r4MjoMtPg6F4OgdBsRdBVpmXQXQVaFWhdCMzgbBtG0TpgI0NgjQjQjQjQgjQk2CNCCRqRhNA0chvyRxB4WYIIHAghk6Ek6EkkjUknQknQnQ2idDYNjA2DYHpD0jaHoDwh6A9Ia3gPadKIGhBI00J0J0Og6ToOg6SdCdCHyKtCrQq0KtCoqxDYNg2PRCEIQhCEIQntX2FJD8GxonrnLjPszITPc8m7cRwk8zST6N7CCtmtVmvKGiEITBPSbco6sFFFFEZGNMaZGRkZHi8hquZoIZNubR1lDbM9TMhmZ+znjmZmZWZ4Z+ltDQewb+0bOgbFY29R0zMyDRCGY09SEIQhCEIQhCEITClxn8ulKXGJ8UP04vJk8cCXzaT+9ZfBEMfFVTo1x8CMvaxQt0uHcjXI7HQcRUI9CEzIRDQkjUnUnUncnUZ6xiEwOLi4QZcTRyHfLyUZ6jVIQaIQhCEIiIhCEIQhCIiJjENIyHC7DpHgYeBBohPSEIT0CYIQhCEIQhlqUbZmQhCeiYQhCYUpf41ZX6F1UOqDMipT4tY/ZmTFHZtrO7ZjAmpVxq6rkPKI11RHYakEYGHjGLG2CmNLgF3HrHRHJV1ZyST5OKMdRwY8GQg4uaHqE6DfYq8StStStStStcdC+rzjCEIiL0whCEIQaIQhCDRCEIREITCpFKzuQmEIQhCH7Y/fH7o/ZH7Q/eYaXoVpUkMQxBFhBSZ6GRbVhk37Y/eH7M/Z+ole5wvyA/aDU8oWndXF+TC/Ij9wP3MX52ftJ+4CWiJOaKrleCa67s2ngpyD6lhn0I+pH1JH3JH1JH0JH0pH2pH3pHFOlSOdI0fkjQ2sJtDan2M+9n3M+lj1nkq828n1vBGMeiMeOCW58s3fllufBqrghCZ8AWO/ah/mA9QXqQxdvhpkaYsHehlfUz7GP7Wb35N+b4f74+ozdfJvvkeo+T6WfSzceT6GP9nAvpY/2D72bryb7ybnyb3yb/AMm+8m+8n74/fe0RjHMQShN4P3hN3kU0+RLcJbibvB0MWxCTn8hLUEvoxfSiX0Yv0JifX4Ym1Bfg0IVNzT+SbTyJagloQWgItGEtn4K/Qn6PyTQx0PwPpAt0CmnyEl+Bi2/Mjl2UxOfgxdRWuClwpSlL6L6aUpfTywi0MjIpSlLsNny+C7BRb+wdi8FWjxKi1anhkLTwJ5v4k7PsPsQ3vAPWRPJvJ9DR9UKf+IzfPwkejM1T8Bpb+A59SH9yRnr/AER6v4Nr+BBvgrqefHRaehaegoGVuBto/BPpHb4OwfQdn4Kt/A31+MF3+A+ohi/VE+oT9pAdh2QmyE6Dug2tUI1XllWq8su/yzqeWV6vyV6+SMtXgTKoqtRdTPvJi3/DFofxBNasLcdzFc4k/wAxi3eLEv1sW9dkxaG13sT1wmuKfYp9pMxZc35EXRdhn4+YJaa6MTSYS/OYCzP/AAYlpeBL7oSvg77CgZ1buRckZaFwpSlL/FvssaWnwNal4GtQRqEarwOpeJW3iScl4mey7StcniVp8SvR4mf6Rs+TxM34R7h6/A+mZX7M+1Z9My9vkpafJNX9k6+zOl5D/cD/ACIa/wAKY0/xCBR8gJ+UJ+UGvw2Nv3DT/IyP8jM9PNnbzZ9Zs8eWfeLM9/JH+yJu+Du+MRobpfsQEevyR6yMs9ZnqK9fgrUuxe/gvV+S9WdT4Op4K9/BHq/AtzEm5i0XgWqgtXwYvxjF+1EXXWVpKEnkXQLXOyFqp2C3/ZC/SRD8ULb4ISengFfwjqvEIDeQL8gJf+DI18CrXwLvgF1eBX9BLd+BZcmXGlKUvqn8CopS+mlwfYrbyx/sDfFTAmtHX8nWPeNmnkvReStHk+lPrT6UjT5IfL5I28kBCCAyFdbyG9fkPpRNHY2Tk+B9CJv8Rta/Emr4jXO+5L/Tr8F/o9/ijr8EdfgOp+EZavwXdnd+R9Xlk3eR/sE614PrZAI/II/IP2DJ+SMtfMVahlqGWpfS0fTCryeyP0SI1+EW8z7IbaPwI9Xg7PAGJMvN5F/YNz5iRzPsz9cxcoi/GoXJXwF++ha3iNzwC1fGXm8AWvwhLm7wTcyJHxbuLWXgSb+BblMnN3w17+xd3gu53YKLYXZ+DoaI1RVqvJVqjLVecIR7me5mZme5nuZ7me5nuZ6sz3MzMzMzMrKysrL7vdjT1GnqNbjW/wAjS+smCvrKIytSPb3Pqhm/8cyavFnUIE5n4GevgQJp4Fn4DkuUJcVdi3KNoQqKcncJy+Qkea7g98Vy8xoP7/gf50evB610ZuLwbHwR5DPV/RXp5GYV/jL+gu3kLsFWngVb+CNWRq/BGrwfSio5aSITcm/9E3fwTd+R7n5L/Y6vJkbeR0+U2nsF+DE/CC/DDX8qNg8E/VF+khL8EJfhoWrxISf4kJOfhEzmK1gX6wSTn8IyBfyBNavJVq8l/QRyng614O06EV6PBn+mAgz0MzPREfIrX4L1+EW/R9IdDwXsbnyReb8nWy62XWbpunQNpF6IrRYXQdBOhOhJBBBUUpfVfQ1eS8D2I7PgnJ/aJqflE1MPUYoVsKEY7j3GPcwM9BnuNj8BfyUy6Hsi/of4V+D/AIN3j5oV6fAb0fA+9F/QNoT1N7xopt4p6YQXIzWkD9Sy/L7M/TM+qzS87IXBfJ9sOv7Ia/wR9iH6J6YUFL9WfrTUfibngX+he3g+0N/4N9eDeRuIe15Nn5JoJrYQ3ikkiWldwvw7FoXcdP3if/oFrvyFrPwJ36F9ULWES+zwknJITegu3wJ7EEEakakakakaka/J1fJWpWpY3huDcG6w298HS8HQ8F6IvQdJH7EjaZsM+kL9Io6jsItiIiIiIiIiIiIiInU7ndndncu5dy7lHjEREEWhFoRaGWhVuZasq1fgu7wXcXdC7hdwy/U7nPUPcI9S1v4EX4iH/kiuU+gfLZ0EULYNfLxG6dg+Z4A25+FDXn4TXK/+zNXyM6fllOX3Y/2B+8ZsebP3rP3TP3J+8ZtBsEOiN0b7yzeeX6KUxoEnl5TSHQGQbrwbvFnP1aP1KPso+mj9Mj9cP1gXObwFr/CF+OQtZ4Qn1iYJv0K1O74L3+CP9BJ6+BOvgXRnZmeoz0Z3HeZayrWbk3RdD8CeErw+Rc0w1/ofYjcRvI6R0MLYI9DP2qUpSlKUpSlL6mylZnqZ43ClZWV6FehdBnoi6Pg6Pgj0FaLwXovBvrwbTwX5+B1Y9YNVvch/ofqGTj4xqni8oNc6C03J7hu0dxs3ZleUV4MX5UWD9cfqyx6A2N8odhXy8mBnhNzVzboGrkmGv8yufmI5+U1fET8Agon+x9TwjpCaCkS7iUQfSlCa1KtSrUjUjUnVG8iNSNSCMFajeG2zZZ1fB1fB1PB1DqeCyyzpZ0snQ6Bdgod35K9X5F+YFqzdG6NwbhepeD6yPrIv2F+wv2FKUpSlwVFKioqKi7lWFKXc7meqM9jPYz2M9jPRGeiM9EZ6Iz0K9DPRGehXoZ6GZmZmZHqybvyVqKwA3fI/QZs/AjXHxRZxfyNXwCP+D/w/Wv8Aw0EdU/8ABL+z+jbuw3vr+Y9+XvvtLa+wys0fUN/6i8Of1I/Iu438juNnBp1gkTMu5ovwF1kvGPlp4jRzdmhr/wAxr4gaP8TL/iWuK+w108B7xu/BHmQ4jYeCnIbIvyYE6onUS6k6iTUgQJ1J1J1J1IIJOo6mVr8ETk8EefgQ/E2sCrDA/ZG18mZw+S9HkvR5KnB5K0+S9Pk+tPtmH3Hgv4GNerwMtX4JuRkZnodvRSlKUpdirQpSlRUVFRloZaGWhkZERkTcm5FqRak3JuQhMMzP05mZmdSJqR1ImpE1o3V4N1eDojafgZf+BtecONwdGzi3sSU9fYQ/8Tm4+TY01+Q/9wZDAyeH4H+nPvo1+PsJPP78DYH1NDzhnZhbhJ4PxZ9jaIvOMOLOiEuPZUSv90WPD/Yi3oHErvqx83uoNXFe6DVxFXP5SdPIayBu5Bb8D6UX9JO4l3J3I1Z3Hed5GpGo6hFqIhMQugr1RXqjx5O3yTcZaMy1E2Z2Z2ZlozsyrRlWjI3I3IJI1I1OrB1YlRUZamRUZamRkZEX8HMzL6rhfYpdi7YZ6GemCi6CHIWkJcvBiX/qTFa53abvDK8U7NGo3gZ+cdoZcqXSBu4OgrwWb8O8x1w+A00Pt+TNzOxoeJlVl3mS4noT4dExpdfZDRzeI+OYNaz+Yjx8kjxJ+oJYJfIKc/Ajkq7EafEK/U0/gdcHpfBH6GsjWGF+0N6V4Lt8HYmCOxRM7HYy0RFojYRs4bbNtG0fajSc/k+lI8nk6x1FKK9gBdirQy0KtDLRlW5VuVb+CrUqMtTLUy1MtTLUy1MhkMhlqQTcm5Nybk3JuTcm5NybkZHqRmZGZkZGRkZGTYz0Ox2Ox2M7wM9Pkz0+TP68JuT0DqI1I1+Rb/kXM/vBTQ8E/wBSMg2z/Ebv82N/+WbF0wCts6j/ACh9dGh4UaTeBALmFSeLeyQzTTZ7i52nYiuTZul3Jc77nR7obvi/sGn4+EPjPCNvI6DdwfsHyPDNhe6ZsXYPlJ6is4kWqNJtqR53ca+P9k8F7ypzNoZ7Eeq8CT0+CP8AQ+sipcpQoLADcIIOguxXoVjMZivQpZoRqiNSNSCoqKvWsLhcLh29HchERERERGWuN3LuivYr2L0KXBS9C9Ci9DqR1I7DqRehehehehSlKU7l3O53O/wd/gz/AEI/0J+kn6yfrPpRWov8xHPz4O/cj9yNDyhJJ5eYbvMbfJmeg9h0EMDFTnDdN1C1UKvErV4xCMZjMO6sfUXeR5nROgcfDwPmIT5Y6Gb4J3GuVdxobV8bQNHFXhjVwIHzV9Tf8Pwdp0fOLXCftDbfg2n4I/AQHUOsXq8li9MC6jMTdkWpETf00rKyspWVlZS4ZlZSlLsX2bjf4N9V9HczMzoOgugoUL1G0zYLuKLuLuLhNorD1IS6iTYjVE7HQPZmVo3zLsXShoeTeUNfBp0m68RavwEzijsG9vkzE+De7GixpfIGGriy7Ma+MdmTzjuy3H5l9HcqVuSF+Zdy3OaInkh9KNBfBaL6UbCNg2ETQiaEdh2FEEEHQzoZ0FejLsV6FZWV4RmeGftUvsX00pUVFRV6qzP0X37hdylL6OPppSngp4PBkREWhsI2jaI38jXV4EYicxnqS8WRrhIZgtQaX8SHP4I/iavwNx4P1gxG7mfZDbyeA75+EbPwDb7KU5pC4v8AWD2vYaHwEfiNoK1+RsYG8jpFaI6EIEuhGxGxJuG+R5nWJ5J4V8hsPJWh0E/URqTqdSL0KUjUq1I1I3J3On5L0GnCvzJqG4NxgJqeSa35Jr8jL/oU298C3/YWm8C00xNzcS6NdjeI1KtSrUu5UVFKUhzGmjOhFarwbnwfYsJsDZG8jeNg6p1TeZRWCtSvUr1K9SvUrUvVlas3i+YtpD/Z1vJqNiAjkx1FDegbaF7lbkaidR1hJqxaj8H0hGlNiG2g9IeiHoDZNs2n6JdpiFaFKiLUjUz8zoHWVqNiyyiiMiIiIjEHNR9RAj1keoj1eCPUmoj1I9RHqyPfybHk6B0zpm8XrhyEItCNCOhOot51i34K1+C9QtwSLmEurEkjLDPRmehnpgZs56DPQr0Ow60TWi86J8/g33g3hesrcyNRs3tkasaT5IuG/UfIbCvVHQOgbq8nT8m58lalalalFFbHYdSOo6jqNjL2FrSNokjVkXJlLh8BNqibI7HYu2FRkZaERFobCNhGwbBFhS4III0I0KtDLQi0JoRkuQ3oivQb2Gth2PcVqXqbmMQZ6GdMzuXDI6mXebLLreC63gv6j7QSCLQi0JoIPvIv0jLCE3R3/hI84337676KOPibDwRLksKUpSlKX1UuFM9RnqO46sUOp+wApSlKUb0hXovJdHkXVLyVFRUVakakakEEF1FWqG9AbfsVo8jbX5J1Eaid0bxvYUjUnTClKVg6jqOopSlLuXBS+xSlEUpcU/R3O+FKVHIuEIT3e3o5F6FLhWV4UpSlKXDudzMzKV6lKUvrpSlLhmZ6ououoorK8O5Cbk3Oo6h7zrOo6jrOsbalB4DR5omHdJdBsF6F6G8RoVFKioqKioqKirUq1KtSl2Ox2Kysr0K9EV7Gep3JhlhfShYouFKtV5NxeSHJ5Np5KnzRSlZXqV6lepmd/g8+qlRS4Uq1I1RdylKUvudzv6e53M9TPUz1M8LhlhXuV9QxOFTmTqRqVal9GRkREIjuQm5NxqczuyrUu5dyl3LjTsZERFoPSNweBT9CJAm1YkMtDthcEam4sJpozoK0Zf14er49N8XIWI7TtGq5oargVoi2ngvzY282VuTKvEAmKdfkKrbuWvyNJyX+kZnJ9ilxFD7EbA2V4OiW08FOXwJ/L4PrBFul1vyRvm/I2fMPcxtqilzKvNi16LYLfJeStjXIGtRk/ZLk/I1cmR1L5iZyRtIXIJ1J1ROqNp5J1Gi5jQQvyNr5J0+To+RK+P8AYh3sBtjbG0NgbDybyKaF0jL+6N6mPQ2UufyNkK1OkbSNs2UbCNpHSw9hneQ+bJfAUV6DoHazYNotcjoJ0ZO+BuG4ZER2FTi0S5ryNOvYa8l5Y32HT8HXOsO/uxtp8jfUb6Ie0NJrwbrOt4KanUOoLSFuIT82ydWZuZWrOob3yXq/A9zM4nRJc/7JpMnCeS1zXgTLQpcR2HSi1yRsBk2hfkL8gmaCdyEm9BKuLnQUXN5JXMQ5rwbSIXJDRckN9PA9weox64er5G4/OB0PB0fBqo3jceSujubxSj1vAt6I50rr5Kc0W/0G/kHqfIzhcL5L1fc3vA+xGfyXbD1UbRn4oh8w2EckhvySGjQaNDpmybJqIrQTvmbhuYO9ht9m6L8y/SO7wTmpOa+StX5E/wCxvcUt54TeN0jzE00FzUmVzE7nWwuoqeg5sdmZaNHdhX5ovxFfN/Bn9R9ZEfP+yEEOQ9KHpFb1IJIi3I0IGT9lS4v/ANI5I6ToHShrohoUbZt/IhdZGfjRaUsNanUIa4ewbCM/qM9yPcj0O3ydA6S9PJewm1QibwrzGfXyV5fJsvyR875J1PrI8mWuB1EWpEJuvJmVORLljKP0I0l2Cew7GW5Fv4JfNo2s6her8C6yTWNJMnRlaEenwNvQb+mdT7E1DdeKb2/BOrOodXDgi0IjLcW4TOZXJm4bjw1SfJEeSNjgybcp2I1ZV+x9ZibFYr1M9WR6kY7sTYeA23O4fWaTZNY6y4DoGe8rRiTT5J0eR7fIdcWux3jaZL5D+jI5Iolc/BC1ZGhAW1m4SkvQt5Fs3jrJ1Ea+B1sjU3Pgylr9k+Qlr+BLVsy0fkux0F6ij5hM5BawL81mxdzY8D5y+SGiKcynBsT8mS4MpcWReKbOodch8C2fJlvk/Beor6zpZWovQpchaVNiG6i+fwI28ED2FaLwNCbvBNWRa/JnuJHJCXmhw5JG8vB9IRuS7Ih8yuQgJYm5qiS1m5Nki5TwNMmk2Gbx9aQY0Jf6Nw2seoNI18iOwl8yJzMzsI0NpeSvJYJyjQqXIlyNghch0jpQl0RLLa+TLXA7jZGjI0fgkkjArEHdeDuvBnr8EepNg5rSfYdX8FX7M3+Ebr3I1RDI1RG/glmRm/kjz+RhuDCISfKjNcmLUhNPkJoq+oy0eDNzOo6jqJ1InP5JDVUOx2NN/BIbo6/sbEbi0JrsJXx8mcj/AEQ5fB0D0PIpxa8FPm32NyXkSaHcSPkvJOZCnDFpslzSJ8/CH9GNNfA15PyGq17k6rydaG74srfNeTPqQuKeAtyM2qKcEGy1ZWnwVsaR1x6bOoJFL6Yn5/2K6ifUVk1E1vB9IdZqsT8184y3kNNA9ob3gHHNneXyTNGHR8G0ht5IpyI2pe9KZRRRa5s3ETQjILqx2+CtRWo6GPYyaU7itsM64K9SdRrYj5HcVeZqF6HUVasjr5Nn5NhH0h9obbNH5FT/AGVbGyeC1p3L08I30z8F5DbSdy9UU5ncZxLWJbzNcYJ+XwJ9fInXNCfYyc0NdUdnknRM63kz/wCmZ+XybEkZ+E8l1Ur28Fe3kbfor3Lsu7MvNdkXp5H9EdY6nkrVnWw903TcF6vJLn8m8jfXgbuLNwrky/qOl4OgbiNwrUsrY6hNoK0F6/AmRYkcDdN5iV+hPohKFoG28EWsEm/gvzNBkEcilG0NNKNrkegit8iCD7wKtCJ8vkzcIVsRibibidUZrn8EjrO07RIysQTgvVFllcadZOo01fkafXhlpgF6HQTY8GexHqjqI2IM5cvyYtA1p5LXMRarDsNNUfWRW/gz3M3r5M9BN5MSuK+TJcV8m0RgK0RT4wvQr2M/qI9ydSbFafBenwLQI1xY0XP5OhlcmK0PvcOok2prNkc2Ro2TZ5LfL4K0N6RBEuSJsRlPUovYssonQ7mRlqd2VjNiasyM3P4IfB/BXU0l4Q9N+CJpgmpHUdR1M6iCPqIkVDqYtyL1XkpaeRJzEpn5/wDpb5su7yR/UZorJoQwzXFCTmhN+eZfksUoXIiJoI0J2GmF1vI16DXUvUR5wSuYp4xlcxWrR1fB1HXhso6SCNTeN5G8itzRkVHY6QkK8E9qG42/N+C2vgrV+CFz+CdToYtgm0E/5Cd+AtB3JOKdkNrRjPQupG9PAtIvm0ROa8mX6RNhEnxHccOS8lKxvfDW5b5PyZsJPnEJ3yeDrbFtF9QUfgy8mXo/JHO+RBqkOCfYa2d2QZ6J9hvlXwPR+DcKyvmUu+PHQm5GpL5m4N1nXZPIOt5Ey5Myalegtw3GdQmMt/BU1RLz+DNaF1SI0XkSblW5EzpRL5fJB1o6zJzGqMvP4Iy7Cb2F1Qro/AkuafgSWh2ItERLkjsX0X0ZF6mRkVb+CLVGXMRaqawnBSnNEDXA0GXuJI1ItSNRtqTdEbIzMuzyXWF3RVqXr5E3p8ibKM2hG+MI2ROoSbgFsR2eCDrgxvzr7ifkhviInP4E+So118nT8kI4c8I9TuOidyLQnOCzeRWiOwj6hLoToRoLYJYIOt+SdWQVJEtSXyEuhGhU+RD5Il8/ggaJcV4HGng3F4MvqMtxKebaE353sW5EsW5EvgXq/JSLfNDjmhvqoXsXr4KXPyVLj8ITT4fKKZevyWv2QuNE0/0S9PB2EIURESZRJrCmF0GT5ET5G0bSHpEanUOoWhNxWvkXq8lXiK1Gzn8nMpWuLErmyNzgzbEz5lfFlaYO7A0JXIhlWiG1ojSIUcHQdBdUPYNaBmNGZdi3B5k+mO88P//Z')}

  /* --- per-study components and overrides ------------------------------------------
     Everything a single study adds or redefines. Fortify in particular redeclares .cs-app,
     .cs-app::before, .cs-app > * and .cs-win for its photographic background: unscoped, those
     six rules would have reached into the other five studies. */
  /* the-picture */
  .cs-app[data-study="the-picture"] .vg-side{width:268px;padding:14px 12px;gap:0;background:#fff}
  .cs-app[data-study="the-picture"] .vg-side-h{display:flex;align-items:center;gap:8px;padding:6px 8px 14px}
  .cs-app[data-study="the-picture"] .vg-side-h b{font-size:17px;font-weight:600;letter-spacing:-.015em}
  .cs-app[data-study="the-picture"] .vg-side-h svg{width:16px;height:16px;margin-left:auto;color:var(--label-3)}
  .cs-app[data-study="the-picture"] .vg-active{display:flex;align-items:center;gap:11px;background:var(--tint-fill);border-radius:12px; padding:11px 12px;margin-bottom:16px}
  .cs-app[data-study="the-picture"] .vg-active .ic{width:30px;height:30px;border-radius:50%;background:#fff;display:grid;place-items:center; color:var(--tint);flex:none}
  .cs-app[data-study="the-picture"] .vg-active .ic svg{width:17px;height:17px}
  .cs-app[data-study="the-picture"] .vg-active b{display:block;font-size:14.5px;font-weight:600;color:var(--tint);letter-spacing:-.01em}
  .cs-app[data-study="the-picture"] .vg-active em{font-style:normal;display:block;font-size:12.5px;color:var(--tint);opacity:.72;margin-top:1px}
  .cs-app[data-study="the-picture"] .vg-lbl{font-size:12px;color:var(--label-3);padding:0 8px 8px}
  .cs-app[data-study="the-picture"] .vg-item{display:flex;align-items:center;gap:11px;padding:10px 10px;border-radius:10px;position:relative}
  .cs-app[data-study="the-picture"] .vg-item + .vg-item::before{content:"";position:absolute;left:10px;right:10px;top:0;height:1px;background:var(--sep)}
  .cs-app[data-study="the-picture"] .vg-item .av{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center; font-size:11px;font-weight:600;background:var(--fill-3);color:var(--label-2)}
  .cs-app[data-study="the-picture"] .vg-item b{display:block;font-size:14.5px;font-weight:500;letter-spacing:-.01em}
  .cs-app[data-study="the-picture"] .vg-item em{font-style:normal;display:block;font-size:12.5px;color:var(--label-2);margin-top:1px}
  .cs-app[data-study="the-picture"] .vg-item.on{background:#fff;box-shadow:0 0 0 1px var(--tint)}
  .cs-app[data-study="the-picture"] .vg-item.on .av{background:var(--tint);color:#fff}
  .cs-app[data-study="the-picture"] .vg-item.on b{font-weight:600;color:var(--tint)}
  .cs-app[data-study="the-picture"] .vg-seg{display:flex;gap:2px;background:var(--fill-3);border-radius:11px;padding:3px;margin-left:18px}
  .cs-app[data-study="the-picture"] .vg-seg-b{flex:none!important;flex-direction:row!important;padding:7px 16px!important;border-radius:9px; color:var(--label-2)}
  .cs-app[data-study="the-picture"] .vg-seg-b span{font-size:14px!important;font-weight:500!important}
  .cs-app[data-study="the-picture"] .vg-seg-b:hover{color:var(--label-1)}
  .cs-app[data-study="the-picture"] .vg-seg-b[aria-selected="true"]{background:#fff;color:var(--label-1)!important; box-shadow:0 1px 3px rgba(20,20,40,.14),0 0 0 .5px rgba(20,20,40,.06)}
  .cs-app[data-study="the-picture"] .vg-seg-b[aria-selected="true"] span{font-weight:600!important}
  @media (max-width:900px){.cs-app[data-study="the-picture"] .vg-seg{margin-left:10px}}
  @media (max-width:900px){.cs-app[data-study="the-picture"] .vg-seg-b{padding:7px 10px!important}}
  .cs-app[data-study="the-picture"] .vg-h{display:flex;align-items:center;gap:10px;margin:0 0 12px}
  .cs-app[data-study="the-picture"] .vg-h b{font-size:19px;font-weight:600;letter-spacing:-.016em}
  .cs-app[data-study="the-picture"] .vg-h .sub{font-size:14px;color:var(--label-2)}
  .cs-app[data-study="the-picture"] .vg-h .spark-ic{color:var(--tint);width:18px;height:18px}
  .cs-app[data-study="the-picture"] .vg-h .more{margin-left:auto;font-size:14px;font-weight:600;color:var(--tint);display:flex;align-items:center;gap:5px}
  .cs-app[data-study="the-picture"] .vg-h .more svg{width:12px;height:12px}
  .cs-app[data-study="the-picture"] .vg-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
  .cs-app[data-study="the-picture"] .vg-card{border:1px solid var(--sep);border-radius:12px;padding:15px 16px;display:flex;flex-direction:column; background:#fff}
  .cs-app[data-study="the-picture"] .vg-card .top{display:flex;gap:10px}
  .cs-app[data-study="the-picture"] .vg-card .top svg{width:17px;height:17px;flex:none;margin-top:1px}
  .cs-app[data-study="the-picture"] .vg-card p{margin:0;font-size:14.5px;line-height:1.45}
  .cs-app[data-study="the-picture"] .vg-card p b{font-weight:600}
  .cs-app[data-study="the-picture"] .vg-card .act{display:flex;align-items:center;gap:10px;margin-top:14px}
  .cs-app[data-study="the-picture"] .vg-btn{font-size:13.5px;font-weight:500;border-radius:9px;padding:8px 14px;background:var(--fill-3); color:var(--label-1)}
  .cs-app[data-study="the-picture"] .vg-btn.pri{background:var(--tint);color:#fff;font-weight:600}
  .cs-app[data-study="the-picture"] .vg-src{margin-left:auto;font-size:13.5px;color:var(--label-2);display:flex;align-items:center;gap:5px}
  .cs-app[data-study="the-picture"] .vg-src svg{width:11px;height:11px}
  .cs-app[data-study="the-picture"] .vg-ask{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:16px 0 26px}
  .cs-app[data-study="the-picture"] .vg-ask .lb{font-size:14px;color:var(--label-2)}
  .cs-app[data-study="the-picture"] .vg-chip{font-size:13.5px;color:var(--label-1);border:1px solid var(--sep);border-radius:999px;padding:7px 14px; background:#fff;transition:border-color .18s ease,background .18s ease}
  .cs-app[data-study="the-picture"] .vg-chip:hover{border-color:var(--tint);background:var(--tint-fill);color:var(--tint)}
  @media (max-width:960px){.cs-app[data-study="the-picture"] .vg-cards{grid-template-columns:1fr}}
  .cs-app[data-study="the-picture"] .vg-hi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) 1.3fr;gap:12px;align-items:start}
  .cs-app[data-study="the-picture"] .vg-mini{border:1px solid var(--sep);border-radius:12px;padding:14px 15px;display:flex; align-items:center;gap:11px;min-height:78px}
  .cs-app[data-study="the-picture"] .vg-bars{display:flex;align-items:flex-end;gap:2px;height:26px;flex:none}
  .cs-app[data-study="the-picture"] .vg-bars i{width:3px;border-radius:1px;background:var(--fill-2);display:block}
  .cs-app[data-study="the-picture"] .vg-bars i.hi{background:var(--warn)}
  .cs-app[data-study="the-picture"] .vg-bars i.ok{background:var(--good)}
  .cs-app[data-study="the-picture"] .vg-mini .tx{min-width:0}
  .cs-app[data-study="the-picture"] .vg-mini .tx em{font-style:normal;display:block;font-size:12.5px;color:var(--label-2);line-height:1.3}
  .cs-app[data-study="the-picture"] .vg-mini .tx b{display:block;font-size:22px;font-weight:600;letter-spacing:-.02em;margin-top:2px; font-variant-numeric:tabular-nums}
  .cs-app[data-study="the-picture"] .vg-mini .tx b u{text-decoration:none;font-size:12px;color:var(--label-3);margin-left:4px;font-weight:400}
  .cs-app[data-study="the-picture"] .vg-mini .fl{margin-left:auto;color:var(--warn);flex:none}
  .cs-app[data-study="the-picture"] .vg-mini .fl.ok{color:var(--good)}
  .cs-app[data-study="the-picture"] .vg-mini .fl svg{width:16px;height:16px}
  .cs-app[data-study="the-picture"] .vg-events{border:1px solid var(--sep);border-radius:12px;padding:14px 16px}
  .cs-app[data-study="the-picture"] .vg-events .eh{display:flex;align-items:center;margin-bottom:10px}
  .cs-app[data-study="the-picture"] .vg-events .eh b{font-size:14.5px;font-weight:600}
  .cs-app[data-study="the-picture"] .vg-events .eh span{margin-left:auto;font-size:13px;color:var(--label-2)}
  .cs-app[data-study="the-picture"] .vg-ev{display:flex;gap:10px;font-size:13.5px;line-height:1.4;padding:6px 0}
  .cs-app[data-study="the-picture"] .vg-ev + .vg-ev{border-top:1px solid var(--sep)}
  .cs-app[data-study="the-picture"] .vg-ev time{margin-left:auto;font-size:12.5px;color:var(--label-3);white-space:nowrap}
  @media (max-width:1100px){.cs-app[data-study="the-picture"] .vg-hi{grid-template-columns:1fr 1fr}}
  @media (max-width:700px){.cs-app[data-study="the-picture"] .vg-hi{grid-template-columns:1fr}}
  .cs-app[data-study="the-picture"] .vg-trend{border:1px solid var(--sep);border-radius:12px;overflow:hidden;margin-top:12px}
  .cs-app[data-study="the-picture"] .vg-trend .th{display:flex;align-items:center;padding:14px 16px;border-bottom:1px solid var(--sep)}
  .cs-app[data-study="the-picture"] .vg-trend .th b{font-size:14.5px;font-weight:600}
  .cs-app[data-study="the-picture"] .vg-trend .th span{margin-left:auto;font-size:13.5px;color:var(--label-2);display:flex;align-items:center;gap:5px}
  .cs-app[data-study="the-picture"] .vg-trend .th span svg{width:11px;height:11px}
  .cs-app[data-study="the-picture"] .vg-trend .tb{padding:16px}
  .cs-app[data-study="the-picture"] .vg-note{font-size:13.5px;line-height:1.5;color:var(--label-2);max-width:52ch}
  .cs-app[data-study="the-picture"] .vg-note b{color:var(--label-1);font-weight:600}
  .cs-app[data-study="the-picture"] .vg-note a{color:var(--tint);text-decoration:none;font-weight:500}
  .cs-app[data-study="the-picture"] .vg-chart{position:relative;margin-top:18px;height:170px}
  .cs-app[data-study="the-picture"] .vg-chart svg{width:100%;height:100%;overflow:visible}
  .cs-app[data-study="the-picture"] .vg-chart .lbl{position:absolute;font-size:12px;font-weight:500;padding:2px 0}
  .cs-app[data-study="the-picture"] .vg-chart .lbl.a{color:var(--tint);left:0;bottom:38%}
  .cs-app[data-study="the-picture"] .vg-chart .lbl.b{color:var(--warn);right:0;top:8%}
  .cs-app[data-study="the-picture"] .vg-tip{position:absolute;right:8%;top:-4px;background:var(--fill-3);border-radius:9px;padding:8px 12px; font-size:13px;color:var(--label-1)}
  @media (max-width:760px){.cs-app[data-study="the-picture"] .vg-tip{display:none}}
  /* the-mirror */
  /* Ines's own gradient behind the window, the way Fortify carries its photograph. The window
     goes translucent over it so the colour is felt rather than framed; the cards inside stay
     opaque, so nothing anyone has to read sits on a wash. */
  .cs-app[data-study="the-mirror"]{background:url(assets/chatbot-bg.jpg) center/cover no-repeat fixed}
  .cs-app[data-study="the-mirror"] .cs-win{background:rgba(255,255,255,.52);
    backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%)}
  @media (max-width:860px){.cs-app[data-study="the-mirror"]{background-attachment:scroll}}
  .cs-app[data-study="the-mirror"] .ck-top{display:flex;align-items:center;gap:10px;margin:0 0 20px}
  .cs-app[data-study="the-mirror"] .ck-top h2{margin:0;font-size:26px;font-weight:600;letter-spacing:-.02em}
  .cs-app[data-study="the-mirror"] .ck-pills{margin-left:auto;display:flex;gap:8px}
  .cs-app[data-study="the-mirror"] .ck-pill{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--label-1); border:1px solid #E4E4E9;border-radius:9px;padding:7px 12px;background:#fff}
  .cs-app[data-study="the-mirror"] .ck-pill svg{width:11px;height:11px;color:var(--label-2)}
  .cs-app[data-study="the-mirror"] .ck-h{font-size:19px;font-weight:400;letter-spacing:-.01em;margin:0 0 12px;color:var(--label-1)}
  .cs-app[data-study="the-mirror"] .ck-grid{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:14px;align-items:start}
  .cs-app[data-study="the-mirror"] .ck-card{background:#fff;border:1px solid #ECECF0;border-radius:14px;padding:16px 18px 14px; display:flex;flex-direction:column;min-height:180px;position:relative}
  .cs-app[data-study="the-mirror"] .ck-card .hd{display:flex;align-items:center;gap:8px}
  .cs-app[data-study="the-mirror"] .ck-card .hd b{font-size:14px;font-weight:600;letter-spacing:-.005em}
  .cs-app[data-study="the-mirror"] .ck-card .hd .cs-chev{margin-left:auto}
  .cs-app[data-study="the-mirror"] .ck-card .big{font-size:38px;font-weight:700;letter-spacing:-.035em;line-height:1.05;margin-top:6px; font-variant-numeric:tabular-nums}
  .cs-app[data-study="the-mirror"] .ck-card .avg{font-size:11px;color:var(--label-3);margin-top:3px}
  .cs-app[data-study="the-mirror"] .ck-card svg.spark{margin-top:auto;width:100%;height:64px}
  .cs-app[data-study="the-mirror"] .ck-card svg.spark path{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  @media (max-width:900px){.cs-app[data-study="the-mirror"] .ck-grid{grid-template-columns:1fr}}
  /* fortify-ai */
  .cs-app[data-study="fortify-ai"]{position:relative;isolation:isolate; background:var(--shot) center/cover no-repeat fixed}
  .cs-app[data-study="fortify-ai"] .cs-win{background:rgba(255,255,255,.30)}
  .cs-app[data-study="fortify-ai"] .cs-win,.cs-app[data-study="fortify-ai"] .cs-group,.cs-app[data-study="fortify-ai"] .cs-metric,.cs-app[data-study="fortify-ai"] .cs-stop,.cs-app[data-study="fortify-ai"] .fx-panel{backdrop-filter:blur(18px) saturate(140%); -webkit-backdrop-filter:blur(18px) saturate(140%)}
  .cs-app[data-study="fortify-ai"] .fx-grid{display:grid;grid-template-columns:270px 1fr;gap:14px;align-items:start}
  .cs-app[data-study="fortify-ai"] .cs-storycard + .fx-grid{margin-top:30px}
  .cs-app[data-study="fortify-ai"] .fx-panel{background:var(--card);border-radius:var(--r-group);padding:20px;box-shadow:var(--card-shadow)}
  .cs-app[data-study="fortify-ai"] .fx-dial{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px}
  .cs-app[data-study="fortify-ai"] .fx-dial h3{margin:0;font-size:17px;font-weight:600;letter-spacing:-.01em}
  .cs-app[data-study="fortify-ai"] .fx-dial svg{width:150px;height:150px}
  .cs-app[data-study="fortify-ai"] .fx-dial .val{font-size:34px;font-weight:600;letter-spacing:-.02em;fill:var(--tint)}
  .cs-app[data-study="fortify-ai"] .fx-dial p{margin:0;font-size:13px;line-height:1.5;color:var(--label-2);max-width:30ch}
  .cs-app[data-study="fortify-ai"] .fx-alert{background:rgba(255,246,232,.86);border-radius:var(--r-group);padding:18px 20px; box-shadow:inset 0 0 0 1px rgba(200,150,60,.28)}
  .cs-app[data-study="fortify-ai"] .fx-alert .tagrow{display:flex;align-items:center;gap:10px;margin-bottom:9px}
  .cs-app[data-study="fortify-ai"] .fx-alert .sev{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#8A5A22; background:rgba(226,178,90,.28);border-radius:6px;padding:4px 8px}
  .cs-app[data-study="fortify-ai"] .fx-alert .id{font-family:var(--mono);font-size:11px;color:#8A5A22;letter-spacing:.04em}
  .cs-app[data-study="fortify-ai"] .fx-alert h3{margin:0 0 6px;font-size:19px;font-weight:600;letter-spacing:-.015em}
  .cs-app[data-study="fortify-ai"] .fx-alert p{margin:0;font-size:13.5px;line-height:1.5;color:var(--label-2);max-width:70ch}
  .cs-app[data-study="fortify-ai"] .fx-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
  .cs-app[data-study="fortify-ai"] .fx-stat{background:var(--card);border-radius:var(--r-group);padding:16px 18px;box-shadow:var(--card-shadow)}
  .cs-app[data-study="fortify-ai"] .fx-stat em{font-style:normal;display:block;font-size:14px;font-weight:600}
  .cs-app[data-study="fortify-ai"] .fx-stat b{display:block;font-size:30px;font-weight:600;letter-spacing:-.03em;margin-top:6px; font-variant-numeric:tabular-nums}
  @media (max-width:900px){.cs-app[data-study="fortify-ai"] .fx-grid{grid-template-columns:1fr}}
  .cs-app[data-study="fortify-ai"]::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none; backdrop-filter:blur(46px) saturate(130%);-webkit-backdrop-filter:blur(46px) saturate(130%); background:rgba(244,248,247,.46)}
  /* Fortify lifts its children above the blurred ::before. The page chrome is fixed to
     the viewport, though - sweeping it into position:relative dropped the Back pill and
     both case-study rails into the flow, which is why they sat low and clipped here and
     nowhere else. */
  .cs-app[data-study="fortify-ai"] > *:not(.cs-head):not(.cs-pn){position:relative;z-index:1}
  .cs-app[data-study="fortify-ai"][data-mode="dark"]::before{background:rgba(10,16,18,.52)}
  .cs-app[data-study="fortify-ai"][data-mode="dark"] .cs-win{background:rgba(12,18,20,.42)}
  @media (max-width:860px){.cs-app[data-study="fortify-ai"]{background-attachment:scroll}}
  .cs-app[data-study="fortify-ai"][data-mode="dark"] .fx-alert{background:rgba(60,48,28,.55); box-shadow:inset 0 0 0 1px rgba(226,178,90,.22)}
  .cs-app[data-study="fortify-ai"][data-mode="dark"] .fx-alert .sev{color:#E8C27A;background:rgba(226,178,90,.18)}
  .cs-app[data-study="fortify-ai"][data-mode="dark"] .fx-alert .id{color:#E8C27A}
  .cs-app[data-study="fortify-ai"][data-mode="dark"] .fx-dial svg circle:first-child{stroke:rgba(255,255,255,.10)}

  /* --- dark mode -------------------------------------------------------------------
     Two studies carry it, and it lives on the .cs-app element - never on <html> or <body> -
     so it cannot reach the site around it. openApp resets it to light on every open. */
  .cs-app[data-study="fortify-ai"][data-mode="dark"]{background-image:var(--shot-dark)}
  .cs-app[data-study="fortify-ai"][data-mode="dark"]{--page:#0C1113; --canvas:transparent; --card:rgba(255,255,255,.045); --rail:rgba(255,255,255,.03); --bar:rgba(18,25,28,.72); --label-1:#EDF2F1; --label-2:rgba(237,242,241,.62); --label-3:rgba(237,242,241,.34); --head-1:#EDF2F1; --head-2:rgba(237,242,241,.55); --sep:rgba(255,255,255,.09); --fill-2:rgba(255,255,255,.12); --fill-3:rgba(255,255,255,.07); --fill-4:rgba(255,255,255,.05); --tint:#8FD6A8; --tint-fill:rgba(143,214,168,.16); --on-tint:#0C1113; --on-tint-2:rgba(12,17,19,.8); --on-tint-3:rgba(12,17,19,.55); --tint-shadow:0 6px 22px -8px rgba(143,214,168,.5); --focus:rgba(143,214,168,.3); --rail-on:rgba(255,255,255,.10); --rail-on-ink:#EDF2F1; --win-shadow:0 0 0 .5px rgba(255,255,255,.08),0 28px 64px -30px rgba(0,0,0,.9); --card-shadow:inset 0 0 0 1px rgba(255,255,255,.07); --story-ink:#EDF2F1; --story-ink-2:rgba(237,242,241,.62)}
  /* The site styles .rd-next's hover with its own ink token, which is invisible on a
     dark study. Inside the app the link follows the app's own label colour. */
  .cs-app .rd-next:hover{border-color:var(--label-1)}

  /* The page owns a few one-word class names the app also uses, and it declares them AFTER this
     block used to sit, so a page rule won on source order. The block is last in the sheet now, so
     that cannot happen again. Specificity is the other half: .stack is the folder's card stack and
     positions itself absolutely - the app's .cs-row.stack never names `position`, so all three
     scope rows on My role were being stacked at the top of the screen on top of each other. */
  #csHost .stack{position:static;inset:auto;will-change:auto}

  /* ---- after the merge ------------------------------------------------------------ */
  /* The pager sat under the stage as a 72px row, so a beat centred in the stage read as
     sitting high with a band of nothing beneath it. The pager comes out of the flow and the
     stage fills the panel, so a beat is centred in the panel a reader is actually looking at. */
  .cs-story{position:relative}
  .cs-ctrls{position:absolute;left:0;right:0;bottom:0;z-index:2}

  /* The Chatbot study's one-column variant was copied into all six source files, so it landed in
     the shared base unscoped - and the scoped three-column rule then out-specified it, which is
     why its metric card was a third of the width. Scoped, it wins again and fills the row. */
  .cs-app[data-study="the-mirror"] .ck-grid.one{grid-template-columns:1fr}
  .cs-app[data-study="the-mirror"] .ck-grid.one .ck-card{min-height:220px}
  .cs-app[data-study="the-mirror"] .ck-grid.one .big{font-size:48px}
  .cs-app[data-study="the-mirror"] .cs-storycard + .ck-grid{margin-top:30px}

  /* The dot used to be inverted by hand inside a case study, because a study is its own light
     interface on a site that was otherwise dark behind it. It now reads the ground everywhere,
     so that one special case is no longer a special case. */

  /* ===== the longer story, as a dialog =====
     It opens over the About screen instead of replacing it, so the thing it belongs to is still
     there behind it. The scrim and the cross both close it; so does Escape. The panel scrolls
     inside itself and the page behind does not, which is what keeps it feeling like a window on
     the same page rather than a jump to another one. */
  #storyWrap{position:fixed;inset:0;z-index:12;display:flex;align-items:center;justify-content:center;
    padding:clamp(16px,4vh,54px) var(--g)}
  #storyWrap[hidden]{display:none}
  #storyScrim{position:absolute;inset:0;background:rgba(24,20,16,.38);
    backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
    opacity:0;transition:opacity 320ms var(--ease)}
  #storyWrap.on #storyScrim{opacity:1}
  #story{position:relative;width:min(720px,100%);max-height:100%;display:flex;flex-direction:column;
    background:var(--paper);border-radius:26px;overflow:hidden;
    box-shadow:0 40px 120px rgba(19,19,19,.28),0 2px 8px rgba(19,19,19,.10),inset 0 0 0 1px rgba(255,255,255,.6);
    opacity:0;transform:translateY(14px) scale(.985);transform-origin:center;
    transition:opacity 320ms var(--ease),transform 420ms cubic-bezier(.32,.72,0,1)}
  #storyWrap.on #story{opacity:1;transform:none}
  /* the cross floats over the text and stays put while the text moves under it */
  #storyX{position:absolute;top:14px;right:14px;z-index:2;width:34px;height:34px;border:0;border-radius:50%;
    display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink);
    background:rgba(255,255,255,.72);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);
    box-shadow:inset 0 0 0 1px var(--hair),0 2px 10px rgba(19,19,19,.10);
    transition:background 200ms var(--ease),transform 200ms var(--ease)}
  #storyX:hover{background:var(--bg);transform:scale(1.06)}
  .sy-scroll{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;-ms-overflow-style:none}
  .sy-scroll::-webkit-scrollbar{display:none;width:0;height:0}
  .sy-body{padding:clamp(30px,4.4vh,46px) clamp(24px,4.4vw,54px) clamp(38px,5.4vh,58px)}
  .sy-body p{margin:0 0 1.05em;font-size:clamp(16px,1.16vw,17.5px);line-height:1.66;letter-spacing:-.006em;color:var(--ink)}
  .sy-body p:last-child{margin-bottom:0}
  /* both of these are <p>, so they have to out-weigh `.sy-body p` rather than just follow it */
  .sy-body p.sy-eyebrow{margin:0 0 clamp(18px,2.4vh,26px);font-size:11px;line-height:1.2;color:var(--ink2)}
  .sy-fig{margin:0 0 clamp(22px,3vh,32px);border-radius:16px;overflow:hidden;background:var(--hair)}
  .sy-fig img{display:block;width:100%;height:auto}
  .sy-fig.sy-tall{width:min(62%,340px);margin-top:clamp(26px,3.4vh,38px)}
  .sy-body p.sy-last{margin-top:clamp(26px,3.4vh,38px);font-size:clamp(21px,2vw,27px);line-height:1.24;
    letter-spacing:-.028em;font-weight:500}
  @media (max-width:560px){
    #storyWrap{padding:0}
    #story{width:100%;max-height:100%;border-radius:0}
    #storyX{top:10px;right:10px}
    .sy-fig.sy-tall{width:74%}
  }
  @media (prefers-reduced-motion:reduce){#storyScrim,#story{transition:none}}

  /* ---- Overview: the confidentiality note. Explains the missing imagery in
     place, rather than making the reader wonder. Apple studies carry the same
     sentence; Fortify carries its own. ---- */
  .cs-app .cs-note{display:flex;gap:12px;padding:14px 16px}
  .cs-app .cs-note .ic{flex:none;width:24px;height:24px;border-radius:7px;margin-top:1px;
    display:flex;align-items:center;justify-content:center;background:var(--fill-3);color:var(--label-2)}
  .cs-app .cs-note .ic svg{width:13px;height:13px}
  .cs-app .cs-note .tx{min-width:0}
  .cs-app .cs-note .tx p{margin:0;font-size:var(--t-subhead);line-height:1.47;color:var(--label-1);max-width:62ch}
  .cs-app .cs-note .tx ul{margin:11px 0 0;padding:0 0 0 17px;display:grid;gap:8px;max-width:62ch}
  .cs-app .cs-note .tx li{font-size:var(--t-subhead);line-height:1.47;color:var(--label-2)}
  .cs-app .cs-note .tx li::marker{color:var(--label-3)}
  .cs-app .cs-note .tx li b{font-weight:600;color:var(--label-1)}

  /* ---- The facts in the window header read as three centred pairs ---- */

  /* ---- Six tabs. Rather than crush six labels into a phone width, the bar
     scrolls - the same move the side rail already makes when it collapses. ---- */
  @media (max-width:700px){
    .cs-tabbar{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
    .cs-tabbar::-webkit-scrollbar{display:none}
    .cs-tabbar .cs-tab{flex:none;min-width:76px}
  }

  /* ---- Problem statement and solution, at the head of the Decisions screen ---- */
  .cs-ps{padding:15px 17px}
  .cs-ps > b{display:block;font-size:var(--t-headline);line-height:1.34;font-weight:600;
    letter-spacing:-.012em;color:var(--label-1);margin-bottom:11px;max-width:56ch}
  .cs-ps p{margin:0 0 10px;font-size:var(--t-subhead);line-height:1.5;color:var(--label-2);max-width:64ch}
  .cs-ps p:last-child{margin-bottom:0}
  .cs-ps p em{font-style:normal;font-weight:600;color:var(--label-1)}
  .cs-ps.sol p{color:var(--label-1)}
  .cs-ps.sol p em{color:var(--label-2)}
  .cs-row.one{display:block;padding:13px 16px}
  .cs-row.one .k{display:block;max-width:70ch;font-size:var(--t-subhead);line-height:1.47}
  .cs-row.one .k b{font-weight:600}

  /* ---- The user journey. One column, one rail, a marker per step: circles for
     what happens, a diamond for a point where the design had to choose. ---- */
  .cs-flow{list-style:none;margin:6px 0 0;padding:0}
  .cs-step{position:relative;display:grid;grid-template-columns:30px 1fr;
    column-gap:15px;padding:0 0 20px}
  .cs-step::before{content:"";position:absolute;left:14.2px;top:32px;bottom:-2px;
    width:1.5px;background:var(--sep)}
  .cs-step:last-child{padding-bottom:0}
  .cs-step:last-child::before{display:none}
  .cs-step .mk{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;
    justify-content:center;font-family:var(--mono);font-size:11px;font-weight:600;
    background:var(--fill-3);color:var(--label-2);box-shadow:inset 0 0 0 1px var(--sep);
    position:relative;z-index:1}
  .cs-step.start .mk,.cs-step.end .mk{background:var(--tint);color:var(--on-tint);box-shadow:none}
  .cs-step.decision .mk{background:var(--card);color:var(--tint);border-radius:9px;
    transform:rotate(45deg);box-shadow:inset 0 0 0 1.5px var(--tint)}
  .cs-step.decision .mk .n{display:block;transform:rotate(-45deg)}
  .cs-step .bd{padding-top:2px;min-width:0}
  .cs-step .kd{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;
    text-transform:uppercase;color:var(--label-3);margin-bottom:5px}
  .cs-step.decision .kd{color:var(--tint)}
  .cs-step b{display:block;font-size:var(--t-callout);line-height:1.34;font-weight:600;letter-spacing:-.01em}
  .cs-step p{margin:5px 0 0;font-size:var(--t-subhead);line-height:1.47;color:var(--label-2);max-width:62ch}

  /* ---- Persona ---- */
  .cs-pcard{display:flex;gap:15px;align-items:flex-start;padding:16px 17px;background:var(--card);
    border-radius:var(--r-group);box-shadow:var(--card-shadow)}
  .cs-pcard .av{flex:none;width:46px;height:46px;border-radius:50%;display:flex;align-items:center;
    justify-content:center;background:var(--tint-fill);color:var(--tint)}
  .cs-pcard .av svg{width:23px;height:23px}
  .cs-pcard .bd{min-width:0}
  .cs-pcard em{font-style:normal;display:block;font-family:var(--mono);font-size:9.5px;
    letter-spacing:.16em;text-transform:uppercase;color:var(--label-3);margin-bottom:5px}
  .cs-pcard b{display:block;font-size:var(--t-title1);line-height:1.2;font-weight:600;letter-spacing:-.018em}
  .cs-pcard .rl{margin:6px 0 0;font-size:var(--t-subhead);line-height:1.42;color:var(--label-1);max-width:52ch}
  .cs-pcard p.cx{margin:9px 0 0;font-size:var(--t-subhead);line-height:1.47;color:var(--label-2);max-width:56ch}
  @media (max-width:560px){
    .cs-pcard{gap:12px;padding:14px 15px}
    .cs-pcard .av{width:38px;height:38px}
    .cs-pcard .av svg{width:19px;height:19px}
  }

  /* ---- The case-study assistant ------------------------------------------
     Same serverless function mini Ines uses. The study slug selects the system
     prompt and the case file ON THE SERVER, so no prompt, no knowledge document
     and above all no API key ever reaches the browser. Built entirely from the
     study's own tokens, so it inherits each skin without a second rule. ---- */
  .cs-ask{padding:15px 16px 14px}
  .cs-ask .hd{display:flex;gap:12px;align-items:flex-start;margin-bottom:13px}
  .cs-ask .hd .ic{flex:none;width:28px;height:28px;border-radius:9px;display:flex;
    align-items:center;justify-content:center;background:var(--tint-fill);color:var(--tint)}
  .cs-ask .hd .ic svg{width:16px;height:16px}
  .cs-ask .hd .tx{min-width:0}
  .cs-ask .hd b{display:block;font-size:var(--t-subhead);font-weight:600;letter-spacing:-.008em}
  .cs-ask .hd span{display:block;margin-top:3px;font-size:var(--t-footnote);line-height:1.42;
    color:var(--label-2);max-width:58ch}
  .cs-ask .log{display:none;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto;
    margin-bottom:12px;scrollbar-width:none;-ms-overflow-style:none}
  .cs-pane.ask .cs-ask .log{max-height:none}
  .cs-ask .log::-webkit-scrollbar{display:none}
  .cs-ask.on .log{display:flex}
  .cs-ask .ln{max-width:86%;padding:9px 13px;border-radius:16px;font-size:var(--t-subhead);
    line-height:1.46;white-space:pre-wrap;animation:cs-in .26s var(--ease) both}
  .cs-ask .ln.me{align-self:flex-end;background:var(--tint);color:var(--on-tint);border-bottom-right-radius:6px}
  .cs-ask .ln.her{align-self:flex-start;background:var(--fill-3);color:var(--label-1);border-bottom-left-radius:6px}
  .cs-ask .ln.off{color:var(--label-2)}
  .cs-ask .ln.dots{display:flex;gap:4px;align-items:center;padding:13px}
  .cs-ask .ln.dots i{width:5px;height:5px;border-radius:50%;background:var(--label-3);
    animation:cs-dot 1.1s infinite}
  .cs-ask .ln.dots i:nth-child(2){animation-delay:.15s}
  .cs-ask .ln.dots i:nth-child(3){animation-delay:.3s}
  @keyframes cs-dot{0%,60%,100%{opacity:.3;transform:none}30%{opacity:1;transform:translateY(-2px)}}
  .cs-ask .chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:11px}
  .cs-ask .ch{padding:6px 11px;border-radius:999px;font-size:var(--t-caption1);line-height:1.3;
    color:var(--label-1);background:var(--fill-4);box-shadow:inset 0 0 0 1px var(--sep);
    transition:background .16s var(--ease)}
  .cs-ask .ch:hover{background:var(--fill-3)}
  .cs-ask .form{display:flex;gap:8px;align-items:center}
  .cs-ask .in{flex:1;min-width:0;height:36px;padding:0 14px;border:0;border-radius:999px;
    font:inherit;font-size:var(--t-subhead);color:var(--label-1);background:var(--fill-4);
    box-shadow:inset 0 0 0 1px var(--sep);outline:none;-webkit-appearance:none;appearance:none}
  .cs-ask .in::placeholder{color:var(--label-3)}
  .cs-ask .in:focus{box-shadow:inset 0 0 0 1.5px var(--tint)}
  .cs-ask .go{flex:none;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;
    justify-content:center;background:var(--tint);color:var(--on-tint);transition:opacity .16s ease}
  .cs-ask .go:disabled{opacity:.34;cursor:default}
  .cs-ask .go svg{width:16px;height:16px}

  /* ---- Tracker: its segmented control is the tab bar, so it sits under the
     header rather than inside it, where it reads as chrome. ---- */
  .cs-app[data-study="the-picture"] .vg-segbar{flex:none;padding:11px clamp(16px,2vw,24px);
    background:var(--bar);box-shadow:0 .5px 0 var(--sep);
    /* the story's beats are absolutely placed and are not clipped by the frame; without a
       stacking context of its own the strip sits under them and stops taking clicks */
    position:relative;z-index:3}
  .cs-app[data-study="the-picture"] .vg-segbar .vg-seg{margin-left:0;display:inline-flex;max-width:100%;
    overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
  .cs-app[data-study="the-picture"] .vg-segbar .vg-seg::-webkit-scrollbar{display:none}

  /* ---- Form Builder reads its story centred. ---- */
  .cs-app[data-study="the-standard"] .cs-beat{text-align:center}
  .cs-app[data-study="the-standard"] .cs-beat > *{margin-left:auto;margin-right:auto}
  .cs-app[data-study="the-standard"] .cs-beat ul{text-align:left;display:inline-block}

  /* The assistant card sits directly above Tracker's own sections; they were written
     to follow a metric row, not a panel, so they need the air back. */
  .cs-app[data-study="the-picture"] .vg-h{margin-top:26px}

  /* ---- Accessibility, shown rather than listed. One sentence, then the six
     things that actually got checked, as marks you can take in at a glance. ---- */
  /* fixed counts rather than auto-fit: six of them wrapping 5 + 1 reads as a mistake */
  .cs-app .cs-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;margin-top:14px;max-width:740px}
  @media (min-width:861px){.cs-app .cs-tiles{grid-template-columns:repeat(6,minmax(0,1fr))}}
  .cs-app .cs-tiles .ti{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
    gap:9px;padding:15px 9px 13px;border-radius:var(--r-ctl);background:var(--fill-4);
    box-shadow:inset 0 0 0 1px var(--sep);text-align:center}
  .cs-app .cs-tiles .ti svg{width:24px;height:24px;color:var(--tint);flex:none}
  .cs-app .cs-tiles .ti span{font-size:var(--t-caption1);line-height:1.28;font-weight:500;
    letter-spacing:-.004em;color:var(--label-1)}
  @media (max-width:560px){
    .cs-app .cs-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
    .cs-app .cs-tiles .ti{padding:13px 7px 11px;gap:8px}
    .cs-app .cs-tiles .ti svg{width:21px;height:21px}
  }

  /* ---- The two one-screen panes ------------------------------------------
     Journey and Persona are not documents you scroll; each is a single board
     that has to land whole. They replace .cs-scroll with a pane that is sized
     by the window rather than by its content. Below 861px the app stops being
     one screen tall anyway, so the track turns into a swipe and the card
     stacks - the reading order stays left to right either way. ---- */
  .cs-pane{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;
    padding:clamp(14px,2vh,22px) clamp(16px,2.6vw,28px) clamp(16px,2.2vh,24px)}
  .cs-pane.jr{gap:clamp(10px,1.5vh,16px)}

  .jr-say{flex:none;display:flex;gap:15px;align-items:center;padding:14px 17px;
    background:var(--card);border-radius:var(--r-group);box-shadow:var(--card-shadow)}
  .jr-say .jr-av{flex:none;color:var(--label-1);width:clamp(46px,5vh,58px);aspect-ratio:1;border-radius:50%;
    overflow:hidden;background:var(--tint-fill);display:block}
  .jr-say .jr-tx{min-width:0}
  .jr-say em{font-style:normal;display:block;font-family:var(--mono);font-size:9.5px;
    letter-spacing:.16em;text-transform:uppercase;color:var(--label-3);margin-bottom:5px}
  .jr-say p{margin:0;font-size:clamp(15px,1.28vw,19px);line-height:1.36;font-weight:500;
    letter-spacing:-.014em;color:var(--label-1)}
  .jr-say .jr-wh{display:block;margin-top:6px;font-family:var(--mono);font-size:10px;
    letter-spacing:.12em;text-transform:uppercase;color:var(--label-2)}

  /* the row sizes to its tallest panel and centres in whatever height is left,
     rather than stretching five cards to the floor over 120px of copy */
  .jr-track{flex:1;min-height:0;list-style:none;margin:0;padding:0;display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:auto;
    align-content:center;gap:12px}
  .jr-step{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;
    padding:14px 15px 14px;border-radius:var(--r-group);background:var(--card);
    box-shadow:var(--card-shadow)}
  /* the chevron that carries the eye to the next panel, sitting in the gap */
  .jr-step::after{content:"";position:absolute;right:-8.5px;top:calc(50% - 4px);width:6px;height:6px;
    border-top:1.6px solid var(--label-3);border-right:1.6px solid var(--label-3);
    transform:rotate(45deg);opacity:.8}
  .jr-step.last::after{display:none}
  .jr-step .jr-no{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.08em;color:var(--tint)}
  .jr-step .jr-hd{display:block;margin:7px 0 9px;font-size:var(--t-subhead);line-height:1.24;
    font-weight:600;letter-spacing:-.014em;color:var(--label-1)}
  .jr-step .jr-qt{margin:0 0 10px;font-size:13.5px;line-height:1.38;color:var(--label-1)}
  .jr-step .jr-dt{margin:0;font-size:12px;line-height:1.44;color:var(--label-2);
    overflow:hidden;min-height:0}
  .jr-step .jr-sy{margin:auto 0 0;padding-top:13px;box-shadow:inset 0 .5px 0 var(--sep);font-size:11.5px;line-height:1.4;color:var(--label-2)}
  .jr-step .jr-sy em{font-style:normal;display:block;font-family:var(--mono);font-size:9px;
    letter-spacing:.14em;text-transform:uppercase;color:var(--tint);margin-bottom:3px}

  /* ---- Persona: one profile card, the face doing real work ---- */
  .cs-pane.pr{display:grid;gap:12px;grid-template-columns:minmax(220px,290px) minmax(0,1fr);
    grid-template-areas:"id grid" "from from";grid-template-rows:minmax(0,1fr) auto}
  .pr-id{grid-area:id;display:flex;flex-direction:column;align-items:center;text-align:center;
    justify-content:center;min-height:0;padding:clamp(16px,2.4vh,24px) 18px;
    border-radius:var(--r-group);background:var(--card);box-shadow:var(--card-shadow)}
  .pr-id .pr-face{flex:none;color:var(--label-1);width:min(168px,28vh);aspect-ratio:1;border-radius:50%;
    overflow:hidden;background:var(--tint-fill);display:block}
  .pr-id b{margin-top:clamp(10px,1.6vh,16px);font-size:var(--t-title1);line-height:1.14;
    font-weight:600;letter-spacing:-.022em}
  .pr-id .pr-rl{margin-top:5px;font-size:var(--t-subhead);line-height:1.3;color:var(--label-1)}
  .pr-id .pr-tm{margin-top:4px;font-family:var(--mono);font-size:9.5px;letter-spacing:.13em;
    text-transform:uppercase;color:var(--label-3)}
  .pr-id .pr-mo{margin:clamp(11px,1.7vh,16px) 0 0;padding-top:clamp(10px,1.6vh,15px);
    box-shadow:inset 0 .5px 0 var(--sep);font-size:13.5px;line-height:1.42;color:var(--label-2)}

  /* content-height blocks, centred in the column: five stretched cards over three
     bullets each is a lot of nothing */
  .pr-grid{grid-area:grid;display:grid;grid-template-columns:1fr 1fr;
    grid-auto-rows:auto;align-content:center;gap:12px;min-height:0}
  .pr-b{min-height:0;overflow:hidden;padding:13px 15px;border-radius:var(--r-group);
    background:var(--card);box-shadow:var(--card-shadow)}
  .pr-b em{font-style:normal;display:block;font-family:var(--mono);font-size:9.5px;
    letter-spacing:.15em;text-transform:uppercase;color:var(--tint);margin-bottom:10px}
  .pr-b ul{margin:0;padding:0;list-style:none;display:grid;gap:8px}
  .pr-b li{position:relative;padding-left:14px;font-size:12.5px;line-height:1.42;color:var(--label-1)}
  .pr-b li::before{content:"";position:absolute;left:2px;top:7px;width:4px;height:4px;
    border-radius:50%;background:var(--label-3)}

  .pr-from{grid-area:from;display:flex;align-items:center;flex-wrap:wrap;gap:8px;
    padding:12px 15px;border-radius:var(--r-group);background:var(--card);box-shadow:var(--card-shadow)}
  .pr-from em{font-style:normal;font-family:var(--mono);font-size:9.5px;letter-spacing:.15em;
    text-transform:uppercase;color:var(--label-3);margin-right:4px}
  .pr-from .pr-ch{padding:6px 13px;border-radius:999px;background:var(--tint-fill);color:var(--tint);
    font-size:12.5px;font-weight:500;line-height:1.3}

  /* a short window is the one case where the board cannot land whole */
  @media (min-width:861px) and (max-height:600px){ .cs-pane{overflow:auto} }

  @media (max-width:860px){
    .cs-pane{overflow:visible}
    .jr-track{display:flex;overflow-x:auto;gap:10px;padding-bottom:4px;
      scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}
    .jr-track::-webkit-scrollbar{display:none}
    .jr-step{flex:0 0 76%;max-width:330px;min-height:290px;scroll-snap-align:start}
    .jr-step::after{display:none}
    .cs-pane.pr{grid-template-columns:minmax(0,1fr);
      grid-template-areas:"id" "grid" "from";grid-template-rows:auto auto auto}
    .pr-id{flex-direction:row;flex-wrap:wrap;align-items:center;text-align:left;gap:6px 16px}
    .pr-id .pr-face{width:92px}
    .pr-id b{margin-top:0}
    .pr-id b,.pr-id .pr-rl,.pr-id .pr-tm{width:calc(100% - 108px);margin-left:auto}
    .pr-id .pr-mo{flex:1 1 100%;margin-top:14px}
    .pr-grid{grid-auto-rows:auto}
  }
  @media (max-width:560px){ .pr-grid{grid-template-columns:1fr} }

  /* A 216px side rail is too much furniture on a 900-1000px window: it leaves the
     persona card and the storyboard fighting for what is left, and the one-screen
     panes start clipping. Between the phone breakpoint and roughly a laptop, the
     rail becomes the same horizontal strip it already uses on small screens. */
  @media (min-width:861px) and (max-width:1060px){
    .cs-frame{flex-direction:column}
    .cs-rail{width:auto;flex-direction:row;overflow-x:auto;gap:6px;padding:10px;
      box-shadow:inset 0 -.5px 0 var(--sep);scrollbar-width:none;-ms-overflow-style:none}
    .cs-rail::-webkit-scrollbar{display:none}
    .cs-rail .rl,.cs-rail .foot{display:none}
    .cs-rail .cs-tab{flex:none;white-space:nowrap;background:var(--card);box-shadow:0 0 0 .5px var(--sep)}
  }

  /* ---- Accessibility, as an editorial run of principles ------------------
     No cards, no borders: a hero, a line of intent, then blue mark / name /
     one sentence / a small drawing of the idea. Whitespace does the dividing. */
  /* .ax and .ap are both already taken by the page. Unique names, and an explicit
     display, so a stray page rule cannot leak in through a property we never set. */
  /* One rhythm for the Overview. Sections were butting into each other - the page needs
     to breathe between ideas, not just between paragraphs. */
  .cs-app{--sec:clamp(46px,7vh,90px)}
  .ax-sec,.ap-sec{display:block;margin:var(--sec) 0 0;width:100%}
  .ax-hero{display:block;width:100%;max-width:560px;margin:0 auto;
    background:radial-gradient(ellipse at 50% 45%,var(--tint-fill),transparent 70%);border-radius:20px}
  .ax-hero svg{display:block;width:100%;height:auto;max-height:190px}
  .ax-h{margin:14px 0 0;font-family:var(--display);font-weight:600;text-align:center;
    font-size:clamp(20px,2vw,26px);line-height:1.18;letter-spacing:-.022em;color:var(--head-1)}
  .ax-sub{margin:10px auto 0;max-width:56ch;text-align:center;font-size:var(--t-subhead);
    line-height:1.5;color:var(--label-2)}
  .ax-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
    gap:clamp(30px,4vw,48px) clamp(26px,3.4vw,46px);margin-top:clamp(34px,4.6vh,52px);max-width:900px}
  .ax-i .ic{display:block;color:var(--tint);width:26px;height:26px;margin-bottom:11px}
  .ax-i .ic svg{width:100%;height:100%}
  .ax-i b{display:block;font-size:var(--t-callout);line-height:1.26;font-weight:600;
    letter-spacing:-.014em;color:var(--label-1)}
  .ax-i p{margin:7px 0 0;font-size:12.5px;line-height:1.5;color:var(--label-2);max-width:44ch}
  .ax-d{margin-top:13px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}

  .ax-contrast .sw{display:flex;align-items:center;gap:8px;padding:7px 11px;border-radius:9px;background:var(--fill-4)}
  .ax-contrast .sw i{font-style:normal;font-size:16px;font-weight:600;line-height:1}
  .ax-contrast .sw u{text-decoration:none;font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;color:var(--label-2)}
  .ax-contrast .bad i{color:var(--label-3)}
  .ax-contrast .ok i{color:var(--label-1)}

  .ax-colour .r{display:flex;align-items:center;gap:7px}
  .ax-colour .dot{width:15px;height:15px;border-radius:50%;display:block}
  .ax-colour .red{background:#E5484D}.ax-colour .green{background:#2E9E5B}
  .ax-colour u{text-decoration:none;font-family:var(--mono);font-size:9px;letter-spacing:.12em;
    text-transform:uppercase;color:var(--label-3)}
  .ax-colour .tag{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:999px;
    font-size:11px;font-weight:600;line-height:1}
  .ax-colour .tag svg{width:11px;height:11px}
  .ax-colour .tag.red{background:rgba(229,72,77,.13);color:#C2373C}
  .ax-colour .tag.green{background:rgba(46,158,91,.14);color:#1F7D45}

  .ax-read{flex-direction:column;align-items:flex-start;gap:5px}
  .ax-read .l{color:var(--label-1);line-height:1.25}
  .ax-read .s1{font-size:11px;color:var(--label-3)}
  .ax-read .s2{font-size:14px;color:var(--label-2)}
  .ax-read .s3{font-size:18px;font-weight:500}

  .ax-vo{flex-direction:column;align-items:flex-start;gap:9px}
  .ax-vo .btn{padding:7px 14px;border-radius:9px;background:var(--tint);color:var(--on-tint);
    font-size:12px;font-weight:600;box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--tint)}
  .ax-vo .say{position:relative;padding:7px 12px;border-radius:11px;background:var(--fill-3);
    font-size:11.5px;line-height:1.35;color:var(--label-2)}
  .ax-vo .say::before{content:"";position:absolute;top:-4px;left:16px;width:8px;height:8px;
    background:var(--fill-3);transform:rotate(45deg)}

  .ax-hier{flex-direction:column;align-items:flex-start;gap:6px}
  .ax-hier span{display:block;border-radius:3px;background:var(--label-1)}
  .ax-hier .b1{width:112px;height:9px}
  .ax-hier .b2{width:78px;height:6px;opacity:.55}
  .ax-hier .b3{width:132px;height:4px;opacity:.24}
  .ax-hier .sh{width:96px}

  .ax-touch .hit{width:44px;height:44px;border-radius:11px;display:flex;align-items:center;
    justify-content:center;box-shadow:inset 0 0 0 1.5px var(--tint);
    background:var(--tint-fill);position:relative}
  .ax-touch .ctl{width:17px;height:17px;border-radius:5px;background:var(--tint)}
  .ax-touch u{text-decoration:none;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:var(--label-2)}

  .ax-adapt .sp{display:flex;border-radius:9px;overflow:hidden;box-shadow:inset 0 0 0 1px var(--sep)}
  .ax-adapt .sp b{width:38px;height:34px;display:flex;align-items:center;justify-content:center;
    font-size:13px;font-weight:600}
  .ax-adapt .lt{background:#FFFFFF;color:#131313}
  .ax-adapt .dk{background:#17171A;color:#F2F2F2}
  .ax-adapt .sz{display:flex;align-items:baseline;gap:7px;color:var(--label-1)}
  .ax-adapt .a1{font-size:11px;opacity:.45}.ax-adapt .a2{font-size:15px;opacity:.7}.ax-adapt .a3{font-size:20px;font-weight:500}

  /* ---- Apple standards: five moves, drawn ---- */
  .ap-flow{list-style:none;margin:clamp(32px,4.4vh,48px) 0 0;padding:0;display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));gap:clamp(12px,1.6vw,20px);max-width:900px}
  .ap-s{position:relative;min-width:0}
  .ap-s::after{content:"";position:absolute;right:calc(-1 * clamp(12px,1.6vw,20px) / 2 - 3px);top:34px;
    width:6px;height:6px;border-top:1.5px solid var(--label-3);border-right:1.5px solid var(--label-3);
    transform:rotate(45deg);opacity:.75}
  .ap-s.last::after{display:none}
  .ap-s .n{display:block;margin-top:12px;font-family:var(--mono);font-size:10px;font-weight:600;
    letter-spacing:.1em;color:var(--tint)}
  .ap-s b{display:block;margin-top:5px;font-size:var(--t-subhead);line-height:1.24;font-weight:600;
    letter-spacing:-.012em;color:var(--label-1)}
  .ap-s p{margin:6px 0 0;font-size:11.5px;line-height:1.46;color:var(--label-2)}
  .ap-d{height:72px;border-radius:11px;background:var(--fill-4);padding:10px;display:flex;
    box-shadow:inset 0 0 0 1px var(--sep)}
  .ap-d i{display:block;background:var(--label-3);opacity:.5;border-radius:3px}

  .ap-lib{flex-wrap:wrap;align-content:flex-start;gap:5px}
  .ap-lib .pill{width:34px;height:11px;border-radius:999px;background:var(--tint);opacity:.85}
  .ap-lib .sw{width:20px;height:11px;border-radius:999px;background:var(--tint);opacity:.4}
  .ap-lib .seg{width:38px;height:11px;border-radius:4px}
  .ap-lib .row{width:100%;height:6px}
  .ap-lib .chip{width:24px;height:8px;border-radius:999px}

  .ap-adapt{align-items:center;justify-content:center;gap:8px}
  .ap-adapt .a{width:26px;height:12px;border-radius:999px;background:var(--tint);opacity:.5}
  .ap-adapt .b{width:40px;height:16px;border-radius:999px;background:var(--tint);opacity:.95}
  .ap-adapt .ar{width:6px;height:6px;border-top:1.5px solid var(--label-3);
    border-right:1.5px solid var(--label-3);transform:rotate(45deg)}

  .ap-apply{flex-direction:column;gap:5px}
  .ap-apply .nav{width:100%;height:9px;border-radius:3px;opacity:.7}
  .ap-apply .ln{width:100%;height:7px}
  .ap-apply .ln.sh{width:64%}
  .ap-apply .bar{width:100%;height:9px;margin-top:auto;border-radius:3px;opacity:.7}
  .ap-apply.on .nav,.ap-apply.on .bar{background:var(--tint);opacity:.85}
  .ap-apply.on .ln{background:var(--tint);opacity:.34}

  .ap-val{flex-direction:column;justify-content:center;gap:7px}
  .ap-val .ck{width:100%;height:7px;border-radius:3px;position:relative;padding-left:14px;
    background:none;opacity:1}
  .ap-val .ck::before{content:"";position:absolute;left:0;top:-1px;width:9px;height:9px;border-radius:50%;
    background:var(--tint);opacity:.9}
  .ap-val .ck::after{content:"";position:absolute;left:14px;top:1px;right:0;height:5px;border-radius:3px;
    background:var(--label-3);opacity:.45}

  @media (max-width:760px){
    .ap-flow{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 14px}
    .ap-s::after{display:none}
    .ax-list{gap:24px 26px}
  }
  @media (max-width:440px){
    .ap-flow{grid-template-columns:minmax(0,1fr)}
    .ax-list{grid-template-columns:minmax(0,1fr)}
  }

  /* ---- The confidentiality note, in the same rhythm as Accessibility ---- */
  .cf-sec{text-align:center}
  .cf-ic{display:block;width:clamp(46px,5.6vw,60px);height:clamp(46px,5.6vw,60px);margin:0 auto;
    color:var(--tint);background:radial-gradient(circle at 50% 46%,var(--tint-fill),transparent 72%);
    border-radius:50%;padding:12px;box-sizing:border-box}
  .cf-ic svg{display:block;width:100%;height:100%}
  .cf-sec .ax-h{margin-top:16px}

  /* ---- Ask about this project, now a screen of its own ---- */
  .cs-pane.ask{align-items:center}
  .cs-pane.ask .cs-ask{flex:1;min-height:0;width:100%;max-width:760px;display:flex;
    flex-direction:column;padding:0;justify-content:center}
  /* empty, the panel sits in the middle of the screen; once there is a thread it
     becomes a chat, anchored top and bottom with the transcript growing between */
  .cs-pane.ask .cs-ask.on{justify-content:flex-start}
  .cs-pane.ask .cs-ask .hd{flex:none;flex-direction:column;align-items:center;text-align:center;
    gap:13px;margin-bottom:clamp(14px,2.2vh,22px)}
  .cs-pane.ask .cs-ask .hd .ic{width:clamp(44px,5vh,54px);height:clamp(44px,5vh,54px);border-radius:50%}
  .cs-pane.ask .cs-ask .hd .ic svg{width:52%;height:52%}
  .cs-pane.ask .cs-ask .hd b{font-family:var(--display);font-size:clamp(19px,2vw,25px);
    line-height:1.18;letter-spacing:-.022em;color:var(--head-1)}
  .cs-pane.ask .cs-ask .hd span{margin-top:7px;font-size:var(--t-subhead);line-height:1.5;max-width:52ch}
  .cs-pane.ask .cs-ask .log{display:flex;flex:1;min-height:0;margin-bottom:14px;
    padding-right:2px;justify-content:flex-end}
  .cs-pane.ask .cs-ask .ln{max-width:78%}
  .cs-pane.ask .cs-ask .chips{flex:none;justify-content:center;margin-bottom:13px}
  .cs-pane.ask .cs-ask .form{flex:none}
  .cs-pane.ask .cs-ask .in{height:42px;font-size:var(--t-callout)}
  .cs-pane.ask .cs-ask .go{width:42px;height:42px}

  /* ---- Previous / next case study ---------------------------------------
     The end of a case file should offer the next one, not only the way back. */
  /* ---- Previous / next, at the right end of the bar --------------------
     They were two rails standing in the margins of the screen with the names running
     vertically up them. One bar carries everything now, so they are two links in it,
     set the way the editorial studies set theirs. Below 640 the names go and the arrows
     stay: a chapter of six still has to be walkable on a phone. */
  .cs-pn{margin-left:auto;display:flex;gap:2px;flex:none}
  .cs-pn .pn{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:7px;
    text-decoration:none;color:var(--label-2);
    font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;
    white-space:nowrap;transition:background .18s var(--ease),color .18s var(--ease)}
  .cs-pn .pn:hover{background:var(--fill-3);color:var(--label-1)}
  .cs-pn .pn:focus-visible{outline:2px solid var(--label-1);outline-offset:2px}
  .cs-pn .ar{flex:none;display:flex;align-items:center;justify-content:center;
    width:11px;height:11px;color:currentColor;background:none;box-shadow:none}
  .cs-pn .ar svg{width:11px;height:11px}
  .cs-pn em{display:none}
  .cs-pn b{font:inherit;font-weight:500;color:inherit}
  @media (max-width:640px){ .cs-pn b{display:none} .cs-pn .pn{padding:6px 7px} }

  @media (max-width:700px){
    .cs-pn{position:static;display:grid;grid-template-columns:1fr 1fr;gap:8px;
      width:100%;max-width:1160px;margin:10px auto 0;padding:0 2px;box-sizing:border-box;
      pointer-events:auto;flex:none}
    .cs-pn .pn{position:static;transform:none;flex-direction:row;justify-content:flex-start;
      width:auto;height:auto;gap:11px;padding:10px 12px;border-radius:var(--r-ctl);min-width:0}
    .cs-pn .pn:hover{background:var(--fill-4)}
    .cs-pn .next{flex-direction:row-reverse;text-align:right}
    .cs-pn .ar{width:32px;height:32px;box-shadow:inset 0 0 0 1px var(--sep)}
    .cs-pn .tx{position:static;transform:none;writing-mode:horizontal-tb;display:block;
      text-align:left;min-width:0;max-height:none}
    .cs-pn .next .tx{text-align:right}
    .cs-pn .prev .tx{transform:none}
    .cs-pn em{margin:0 0 4px;letter-spacing:.14em}
    .cs-pn b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  }
  /* on a phone two columns leave no room for a project name, so they stack */
  @media (max-width:520px){
    .cs-pn{grid-template-columns:minmax(0,1fr);gap:2px}
    .cs-pn .next{flex-direction:row;text-align:left}
    .cs-pn .next .tx{text-align:left}
  }

  /* ---- The end of a story -------------------------------------------------
     Not a card, not a CTA - a line and a clip. The video is portrait and short,
     and it is the last thing in the case study on purpose: nothing follows it. */
  .cs-beat.egg{display:flex;flex-direction:column;align-items:center;justify-content:center;
    gap:clamp(16px,2.6vh,28px);text-align:center}
  .cs-beat.egg .egg-say{margin:0;max-width:30ch;font-family:var(--story);
    font-size:clamp(17px,1.9vw,23px);line-height:1.34;font-weight:500;letter-spacing:-.015em;
    color:var(--story-ink)}
  .cs-beat.egg .egg-vid{display:block;width:auto;height:clamp(220px,42vh,400px);
    max-width:100%;object-fit:cover;border-radius:18px;background:var(--fill-4);
    box-shadow:0 18px 50px -22px rgba(19,19,19,.42)}
  @media (max-width:560px){
    .cs-beat.egg .egg-vid{height:auto;width:min(72vw,260px)}
  }

  /* ==================================================================================
     THE CASE FILE READS AS A DOCUMENT
     ----------------------------------------------------------------------------------
     The window stays. The case-file numbering stays. Each study keeps the chrome that
     belonged to the product it describes - a tab bar, a segmented control, a rail. What
     changes is that the six screens are no longer swapped in place: they are stacked
     into one scroll, and the chrome becomes a set of anchors into it. Scrolling a case
     study now moves through the case study, which is the one gesture a visitor is
     guaranteed to make and the one thing the old app did not answer.
     Scoped to #csHost throughout, so the standalone files are untouched.
     ================================================================================== */
  @media (min-width:861px){ #csHost .cs-app{height:auto} }
  #csHost .cs-app{min-height:100%}
  #csHost .cs-win{flex:none;height:auto;overflow:visible;margin-bottom:clamp(18px,4vh,48px)}
  /* flex-start is what lets the rail sit at the top of a tall column instead of stretching
     the height of the whole document - but only while the frame is a row. Below 861px the
     frame stacks, and flex-start there shrink-wraps the body to its widest child and pushes
     the case study off the side of a phone. */
  #csHost .cs-frame{flex:none;min-height:0}
  @media (min-width:861px){ #csHost .cs-frame{align-items:flex-start} }
  #csHost .cs-body{position:static;display:block;flex:1 1 auto;min-width:0}
  /* every screen is on, all the time; the scroll-margin keeps an anchored jump clear of
     the site bar and the case-study bar above it */
  #csHost .cs-screen{position:static;inset:auto;display:flex;animation:none;
    scroll-margin-top:calc(var(--cs-top) + 20px)}
  #csHost .cs-screen + .cs-screen{border-top:.5px solid var(--sep)}
  /* the per-screen scrollers become plain flow, and lose the bottom fade, which only ever
     meant "there is more below this box" */
  #csHost .cs-scroll{flex:none;overflow:visible;min-height:0;
    -webkit-mask-image:none;mask-image:none}
  /* panes that were sized to exactly one screen size to their content instead */
  #csHost .cs-pane{flex:none;min-height:0;overflow:visible}
  #csHost .cs-pane.ask .cs-ask{flex:none;min-height:min(58vh,520px)}
  #csHost .cs-pane.ask .cs-ask .log{flex:none;min-height:110px}
  /* the chrome pins itself rather than sitting at a fixed foot */
  /* Anything that pins has to clear the two bars already fixed above the layer - the site's
     menu bar and the case study's own - so the offset is derived from --cs-top, not guessed. */
  #csHost .cs-tabbar{position:sticky;bottom:0;z-index:6}
  #csHost .vg-segbar{position:sticky;top:calc(var(--cs-top) + 6px);z-index:6;
    background:var(--page);box-shadow:0 .5px 0 var(--sep)}
  @media (min-width:861px){
    #csHost .cs-rail{position:sticky;top:calc(var(--cs-top) + 14px);align-self:flex-start;
      max-height:none;flex:none;z-index:6}
  }
  /* stacked, the rail is a scrolling strip of anchors pinned under the bars, not a sidebar */
  @media (max-width:860px){
    /* --page, not --canvas: two of the four studies give the window a translucent canvas, and
       a see-through strip pinned over a moving story is unreadable. */
    #csHost .cs-rail{position:sticky;top:calc(var(--cs-top) + 4px);z-index:6;
      max-width:100%;overflow-x:auto;scrollbar-width:none;
      background:var(--page);box-shadow:0 .5px 0 var(--sep);
      padding-top:8px;padding-bottom:8px}
    #csHost .cs-rail::-webkit-scrollbar{display:none}
  }

  /* The story is read by scrolling now. Each beat is a panel that arrives as it comes
     into view and stays put afterwards, so a reader can glance back at the line before -
     which the one-beat-at-a-time stepper never allowed. */
  #csHost .cs-story{flex:none;min-height:0;display:block;position:static}
  #csHost .cs-prog{position:sticky;top:calc(var(--cs-top) + 6px);z-index:5}
  #csHost .cs-stage{position:static;overflow:visible;min-height:0;display:block}
  #csHost .cs-beat{position:static;inset:auto;min-height:min(60vh,470px);
    opacity:0;transform:translateY(24px);filter:none;pointer-events:auto;
    transition:opacity .6s var(--ease),transform .6s var(--ease)}
  #csHost .cs-beat.seen{opacity:1;transform:none}
  #csHost .cs-ctrls{display:none}          /* the scroll is the control */
  @media (prefers-reduced-motion:reduce){
    #csHost .cs-beat{opacity:1;transform:none;transition:none}
  }

  /* On a phone the window chrome is cost without benefit: it steals the gutters, clips the
     metric cards and pushes the tab bar off the right edge. Below 560px the app is the
     document, full bleed, and the tab bar scrolls with the content instead of pinning. */
  @media (max-width:560px){
    #csHost .cs-app{padding-left:0;padding-right:0}
    #csHost .cs-win{border-radius:0;box-shadow:none;margin-bottom:0}
    #csHost .cs-nav{padding-left:16px;padding-right:16px}
    #csHost .cs-scroll{padding-left:16px;padding-right:16px}
    #csHost .cs-metrics{grid-template-columns:minmax(0,1fr)!important;display:grid}
    #csHost .cs-metric{min-width:0}
    #csHost .cs-tabbar{position:sticky;bottom:0;padding-left:6px;padding-right:6px}
    #csHost .cs-head{flex-wrap:nowrap;gap:8px;overflow:hidden}
    /* nothing inside the document may be wider than the phone */
    #csHost .cs-body,#csHost .cs-screen,#csHost .cs-scroll{max-width:100%;min-width:0}
    #csHost .cs-beat{min-height:min(54vh,380px)}
  }


  /* Below 700px the prev/next pair was written as a full-width two-column row that sat under
     the old floating rail. It lives inside the fixed bar now, so at that width it was a 362px
     grid inside a 294px slot and the "next case study" arrow sat off the right of a phone.
     Here it stays what it is in the bar: two compact arrows, labels dropped. */
  @media (max-width:700px){
    #csHost .cs-pn,#edHost .ed-bar .cs-pn{position:static;display:flex;grid-template-columns:none;
      width:auto;max-width:none;margin:0 0 0 auto;padding:0;gap:2px;flex:none;min-width:0}
    #csHost .cs-pn .pn,#edHost .ed-bar .cs-pn .pn{flex:none;width:auto;padding:6px 7px;gap:0}
    #csHost .cs-pn b,#edHost .ed-bar .cs-pn b{display:none}
    #csHost .cs-pn .ar,#edHost .ed-bar .cs-pn .ar{width:26px;height:26px;box-shadow:none}
    #csHost .cs-pn .tx,#edHost .ed-bar .cs-pn .tx{display:none}
  }

  /* A heading per section, present for a screen reader and for a search engine, absent for
     everyone else - the design says what these sections are without words, but the H key and
     the document outline had nothing to walk. Clipped rather than display:none, so it is still
     in the accessibility tree. And a real skip link, which the page did not have: 28 tab stops
     stood between the top of the document and the first piece of work. */
  .vh{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;
    clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
  .skiplink{position:fixed;top:8px;left:8px;z-index:60;transform:translateY(-160%);
    font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
    color:var(--ink);background:#fff;border:1px solid var(--hair);border-radius:999px;
    padding:11px 17px;text-decoration:none;box-shadow:0 10px 30px rgba(19,19,19,.10);
    transition:transform .18s var(--ease)}
  .skiplink:focus{transform:none}

  /* ---- two-up and stacked figures in the editorial reader ---------------------------------
     The reader was one column down the middle of the screen: at 1440 the right half of a case
     study was empty paper. These two blocks break the measure and take the width back, which
     is what a comparison wants anyway - a before beside an after, three versions of one line
     stacked so the only thing that moves between them is the word that changed. */
  .ed-duo,.ed-stack{width:100vw;margin-left:calc(50% - 50vw);
    margin-block:clamp(34px,6vh,76px) 0;padding-block:clamp(30px,5vh,62px);background:var(--wash)}
  .ed-duo .in{width:min(1560px,94vw);margin-inline:auto;display:grid;
    grid-template-columns:1fr 1fr;gap:clamp(18px,2.6vw,42px);align-items:start}
  .ed-duo figure,.ed-stack figure{margin:0}
  .ed-duo .sh{border-radius:clamp(9px,.8vw,14px);overflow:hidden;background:#fff;
    box-shadow:0 22px 48px rgba(16,20,26,.12),0 2px 5px rgba(16,20,26,.06)}
  .ed-duo .sh.bare{box-shadow:none;background:none}
  .ed-duo img,.ed-stack img{display:block;width:100%;height:auto}
  .ed-duo figcaption{margin:clamp(11px,1.6vh,16px) 0 0;font-family:var(--mono);font-size:9.5px;
    letter-spacing:.16em;text-transform:uppercase;color:var(--ink2);line-height:1.5}
  /* a tall page in a two-up is held to a window, like .ed-fig.tall is on its own */
  .ed-duo .sh.tall{max-height:min(64vh,700px);
    -webkit-mask-image:linear-gradient(to bottom,#000 82%,rgba(0,0,0,.3) 95%,transparent 100%);
    mask-image:linear-gradient(to bottom,#000 82%,rgba(0,0,0,.3) 95%,transparent 100%)}
  .ed-stack .in{width:min(1080px,92vw);margin-inline:auto;
    display:flex;flex-direction:column;gap:clamp(16px,2.6vh,32px)}
  .ed-stack b{display:block;margin:0 0 9px;font-family:var(--mono);font-weight:400;font-size:9.5px;
    letter-spacing:.18em;text-transform:uppercase;color:var(--ink2)}
  .ed-stack .sh{border-radius:clamp(8px,.7vw,12px);overflow:hidden;background:#fff;
    box-shadow:0 1px 0 var(--hair),0 14px 34px rgba(16,20,26,.09)}
  @media (max-width:760px){
    .ed-duo .in{grid-template-columns:minmax(0,1fr);gap:clamp(22px,4vh,34px)}
    .ed-duo .sh.tall{max-height:52vh}
  }

  /* A four-cell grid at three columns leaves the fourth on a row of its own. Four is a square. */
  .ed-grid:has(> .ed-cell:nth-child(4):last-child){grid-template-columns:repeat(2,minmax(0,1fr))}
  @media (max-width:700px){ .ed-grid:has(> .ed-cell:nth-child(4):last-child){grid-template-columns:minmax(0,1fr)} }

  /* ---- the Evaluator's two showable artefacts -------------------------------------------
     A diagram of hers, and a structure of hers rebuilt from scratch. Both sit in the same
     card the accessibility note and the confidentiality note sit in, because they are the
     same kind of thing: evidence offered inside a study that cannot offer screenshots. */
  .cs-app .sh-sec .sh-fig{margin:18px 0 0}
  .cs-app .sh-sec .sh-fig img{display:block;width:100%;height:auto;border-radius:10px;
    background:#fff;box-shadow:0 0 0 1px var(--sep),0 14px 34px rgba(16,20,26,.10)}
  .cs-app .sh-sec figcaption,.cs-app .sh-sec .sh-cap{margin:12px 0 0;
    font-size:var(--t-caption1);line-height:1.5;color:var(--label-3)}
  /* the reconstruction: three columns that read left to right, stacking when there is no room */
  .cs-app .fl{margin:18px 0 0;display:grid;grid-template-columns:auto 1fr 1fr;
    gap:clamp(10px,1.4vw,22px);align-items:start;
    padding:clamp(14px,1.8vw,22px);border-radius:12px;background:var(--fill-4);
    box-shadow:inset 0 0 0 1px var(--sep)}
  .cs-app .fl-col{display:grid;gap:10px;min-width:0}
  .cs-app .fl-node{background:var(--card);border-radius:10px;padding:10px 12px;
    box-shadow:0 0 0 .5px var(--sep),0 4px 10px rgba(16,20,26,.05);
    font-size:var(--t-caption1);line-height:1.45;color:var(--label-1);min-width:0}
  .cs-app .fl-node.start{background:var(--tint);color:#fff;box-shadow:none}
  .cs-app .fl-node.start b{display:block;font-size:var(--t-caption2);opacity:.85;font-weight:600}
  .cs-app .fl-topic{display:block;margin-top:5px;font-weight:600}
  .cs-app .fl-node.msg{color:var(--label-2)}
  .cs-app .fl-node.list b{display:block;font-weight:600;color:var(--label-1)}
  .cs-app .fl-sub{display:block;font-size:var(--t-caption2);color:var(--label-3);margin-top:1px}
  .cs-app .fl-node.list ul{list-style:none;margin:8px 0 0;padding:0;display:grid}
  .cs-app .fl-node.list li{display:flex;align-items:center;gap:7px;padding:6px 0;
    color:var(--label-1);box-shadow:inset 0 -.5px 0 var(--sep)}
  .cs-app .fl-node.list li.on{color:var(--tint);font-weight:600}
  .cs-app .fl-node.list li .i{flex:none;width:11px;height:11px;border-radius:3px;
    box-shadow:inset 0 0 0 1px var(--label-3);opacity:.5}
  .cs-app .fl-node.list li.on .i{box-shadow:inset 0 0 0 1px var(--tint);opacity:1}
  .cs-app .fl-add{display:block;margin-top:8px;color:var(--tint);font-weight:500;
    font-size:var(--t-caption2)}
  @media (max-width:860px){
    .cs-app .fl{grid-template-columns:minmax(0,1fr)}
  }

  /* ==================================================================================
     THE CASE FILE'S OWN HEADER STAYS PUT
     ----------------------------------------------------------------------------------
     Once a study became sixteen thousand pixels of document, the one thing you always
     need - which study this is, which case file, the client, the role, the year - was
     scrolling away in the first screen. It pins under the two bars already fixed above
     the layer, and everything else that pins is offset below it by --cs-navh, which the
     app measures rather than guesses.
     ================================================================================== */
  #csHost{--cs-navh:92px}
  #csHost .cs-nav{position:sticky;top:var(--cs-top);z-index:7}
  /* Pinned, the header has a moving document underneath it rather than the top of the page,
     and --bar alone was letting whole sentences read through it. An opaque underlay behind
     the bar tint, so the glass still reads as glass but nothing shows through the facts. */
  #csHost .cs-nav::before{content:"";position:absolute;inset:0;z-index:-1;
    background:var(--page);opacity:.88;pointer-events:none}
  /* the chrome below it moves down by exactly the header's height */
  #csHost .vg-segbar{top:calc(var(--cs-top) + var(--cs-navh) + 6px)}
  @media (min-width:861px){
    #csHost .cs-rail{top:calc(var(--cs-top) + var(--cs-navh) + 14px)}
  }
  @media (max-width:860px){
    #csHost .cs-rail{top:calc(var(--cs-top) + var(--cs-navh) + 4px)}
  }
  #csHost .cs-prog{top:calc(var(--cs-top) + var(--cs-navh) + 6px)}

  /* Air between the six sections. They used to be one screen at a time, so they never had
     to be told apart; stacked, a hairline is not enough of a boundary. */
  #csHost .cs-screen + .cs-screen{padding-top:clamp(26px,4.5vh,58px)}
  #csHost .cs-screen{padding-bottom:clamp(20px,3.5vh,46px)}

  /* ---- the left rail runs the whole length of the document ------------------------------
     A sticky rail is a short card floating beside a very long page. The column it sits in is
     drawn full height behind it instead, so the navigation reads as a side of the window
     rather than as a widget that ran out. */
  @media (min-width:861px){
    #csHost .cs-frame:has(> .cs-rail){position:relative}
    #csHost .cs-frame:has(> .cs-rail)::before{content:"";position:absolute;left:0;top:0;bottom:0;
      width:216px;background:var(--rail);box-shadow:inset -.5px 0 0 var(--sep);
      pointer-events:none;z-index:0}
    #csHost .cs-rail{background:transparent;box-shadow:none;z-index:1}
  }

  /* ---- Fortify: the photograph behind the app does not move --------------------------
     background-attachment:fixed inside a scrolling layer is unreliable - it is ignored on
     iOS outright and repaints against the wrong box in a container that scrolls. A fixed
     pseudo-element behind the app is neither. */
  #csHost .cs-app[data-study="fortify-ai"]{background:none}
  #csHost .cs-app[data-study="fortify-ai"]::before{content:"";position:fixed;inset:0;z-index:-1;
    background:var(--shot) center/cover no-repeat;pointer-events:none}
  #csHost .cs-app[data-study="fortify-ai"] .cs-screen{padding-block:clamp(34px,6vh,84px)}
  #csHost .cs-app[data-study="fortify-ai"] .cs-screen:first-child{padding-top:clamp(18px,3vh,38px)}

  /* ---- Tracker & Coaching: the navigation is a rail on the right ---------------------- */
  @media (min-width:861px){
    #csHost .cs-frame > .vg-segbar{order:2;flex:none;width:236px;align-self:stretch;
      margin:0;padding:0;background:var(--rail);box-shadow:inset .5px 0 0 var(--sep)}
    #csHost .cs-frame > .vg-segbar .vg-seg{position:sticky;
      top:calc(var(--cs-top) + var(--cs-navh) + 14px);
      display:flex;flex-direction:column;gap:3px;margin:16px 12px;padding:4px;border-radius:12px}
    #csHost .cs-app[data-study="the-picture"] .vg-seg{margin-left:12px}
    #csHost .cs-app[data-study="the-picture"] .vg-seg-b{justify-content:flex-start!important;
      padding:9px 14px!important;border-radius:9px;text-align:left}
  }
  @media (max-width:860px){
    /* stacked, it goes back to being a strip - a 236px column would be most of a phone */
    #csHost .cs-frame > .vg-segbar{order:-1;position:sticky;
      top:calc(var(--cs-top) + var(--cs-navh) + 4px);z-index:6;width:auto;align-self:auto;
      background:var(--page);box-shadow:0 .5px 0 var(--sep);
      overflow-x:auto;scrollbar-width:none;max-width:100%;padding:6px 0}
    #csHost .cs-frame > .vg-segbar::-webkit-scrollbar{display:none}
  }

  /* ---- Belstech breathes -----------------------------------------------------------------
     It is the wordiest of the two editorial studies and the one with the fewest pictures, so
     the shared rhythm packs it too tightly. Everything in it gets more room: between sections,
     between paragraphs, around every figure and around the quotes it turns on. */
  #edHost[data-study="belstech"] .ed-sec{margin-top:clamp(96px,16vh,215px)}
  #edHost[data-study="belstech"] .ed-p{margin-bottom:1.4em;line-height:1.74}
  #edHost[data-study="belstech"] .ed-h2{margin-bottom:clamp(24px,3.8vh,42px)}
  #edHost[data-study="belstech"] .ed-fig,
  #edHost[data-study="belstech"] .ed-duo,
  #edHost[data-study="belstech"] .ed-stack{margin-top:clamp(58px,9.5vh,126px)}
  #edHost[data-study="belstech"] .ed-fig.bleed,
  #edHost[data-study="belstech"] .ed-fig.device,
  #edHost[data-study="belstech"] .ed-duo,
  #edHost[data-study="belstech"] .ed-stack{padding-block:clamp(50px,8.5vh,100px)}
  #edHost[data-study="belstech"] .ed-quote{margin-block:clamp(52px,8.5vh,118px)}
  #edHost[data-study="belstech"] .ed-ul,
  #edHost[data-study="belstech"] .ed-steps,
  #edHost[data-study="belstech"] .ed-grid,
  #edHost[data-study="belstech"] .ed-flow{margin-block:clamp(32px,5.5vh,66px)}
  #edHost[data-study="belstech"] .ed-doc{padding-bottom:clamp(130px,19vh,230px)}

  /* A section label has no top margin - it is normally the first thing in a section, sitting
     under the gap .ed-sec already provides. Directly after a figure it had none, so a caption
     that wrapped onto two lines ran straight into the label of the next section. */
  .ed-fig + .ed-lab,.ed-duo + .ed-lab,.ed-stack + .ed-lab{margin-top:clamp(44px,7.5vh,104px)}
  .ed-fig + .ed-h2,.ed-duo + .ed-h2,.ed-stack + .ed-h2,
  .ed-fig + .ed-p,.ed-duo + .ed-p,.ed-stack + .ed-p{margin-top:clamp(34px,5.5vh,74px)}

  /* ==================================================================================
     THE VOICE GUIDE
     ----------------------------------------------------------------------------------
     A button that asks to be pressed until it is, a track, and a cue list that makes
     something on the page move at a named second of the recording.
     ================================================================================== */
  .unmute-btn{position:absolute;z-index:6;
    top:var(--ub-top,clamp(58px,9vh,104px));right:var(--ub-right,clamp(18px,3vw,44px));
    width:80px;height:80px;padding:0;border:0;border-radius:100%;
    background-color:#000;color:#fff;
    display:flex;align-items:center;justify-content:center;
    transition:transform .3s ease,box-shadow .3s ease;
    box-shadow:0 10px 30px rgba(16,20,26,.22)}
  /* No cursor:pointer. The page hides the system cursor and draws its own, and one
     pointer declaration anywhere brings the arrow back over that element. */
  /* The dashed ring sits outside the circle rather than on it, so it reads as the button's
     field rather than as a border. Dark, because the frame behind it here is a bright room -
     with a faint white halo under it so it survives if the shot ever goes dark. */
  .unmute-btn::after{content:"";position:absolute;inset:-11px;border-radius:50%;
    border:1px dashed rgba(20,23,28,.55);
    filter:drop-shadow(0 0 1px rgba(255,255,255,.45));
    transition:border-color .3s ease,inset .3s ease;pointer-events:none}
  .unmute-btn:hover{transform:scale(1.08);box-shadow:0 16px 42px rgba(16,20,26,.32)}
  /* a hover cue that does not use transform, so it still answers while the button is shaking */
  .unmute-btn:hover::after{border-color:rgba(20,23,28,.85)}
  .unmute-btn:focus-visible{outline:2px solid #fff;outline-offset:4px}
  .unmute-btn .ub-in{display:flex;align-items:center;justify-content:center;width:30px;height:30px}
  .unmute-btn .ub-i{position:absolute;width:30px;height:30px;transition:opacity .2s ease}
  .unmute-btn .ub-on{opacity:0}
  .unmute-btn[aria-pressed="true"] .ub-off{opacity:0}
  .unmute-btn[aria-pressed="true"] .ub-on{opacity:1}

  @keyframes vibrate{
    0%,100%{transform:translate(0,0)}
    10%{transform:translate(-1px,-1px)} 20%{transform:translate(1px,1px)}
    30%{transform:translate(-1px,1px)} 40%{transform:translate(1px,-1px)}
    50%{transform:translate(-.5px,-.5px)} 60%{transform:translate(.5px,.5px)}
    70%{transform:translate(-1px,0)} 80%{transform:translate(1px,0)}
    90%{transform:translate(0,-1px)}
  }
  /* The whole button shakes - circle, ring and icon together. Both the shake and the hover
     want to write transform, so while it is shaking the animation wins and the hover scale
     waits its turn; the ring above is what answers the pointer in the meantime. Once it has
     been pressed the class comes off for good and hover has the transform back. */
  .unmute-btn.vibrating{animation:vibrate .5s infinite}

  /* Three things were making this read as machinery rather than as a thing that moved.
     The shake was three identical jolts - real ones lose energy, so these decay and carry a
     fraction of a degree of rotation with them. The lift went straight from rest to full size
     and stopped dead at the top - it now dips a little first, overshoots slightly and settles
     back onto its full height, and drifts while it is held. And the whole thing ran on one
     easing curve; every phase has its own now, so the rise, the hold and the fall are not
     mirror images of each other. */
  /* The card no longer turns - its face does, using the card's own flip. Everything here is
     the lift; the turn is the separate animation below. */
  @keyframes card-attention{
    0%  {transform:scale(1) translate3d(0,0px,0) rotate(0deg);
         box-shadow:0 8px 18px rgba(16,20,26,.10);
         animation-timing-function:cubic-bezier(.36,.07,.31,1)}
    4%  {transform:scale(1.004) translate3d(0,-2.4px,0) rotate(-0.34deg);animation-timing-function:cubic-bezier(.45,0,.55,1)}
    9%  {transform:scale(1.004) translate3d(0,1.5px,0) rotate(0.27deg);animation-timing-function:cubic-bezier(.45,0,.55,1)}
    14% {transform:scale(1.003) translate3d(0,-1.5px,0) rotate(-0.2deg);animation-timing-function:cubic-bezier(.45,0,.55,1)}
    18% {transform:scale(1.002) translate3d(0,0.9px,0) rotate(0.12deg);animation-timing-function:cubic-bezier(.45,0,.55,1)}
    22% {transform:scale(1.001) translate3d(0,-0.6px,0) rotate(-0.06deg);animation-timing-function:cubic-bezier(.4,0,.5,1)}
    26% {transform:scale(1) translate3d(0,0.2px,0) rotate(0deg);animation-timing-function:cubic-bezier(.5,0,.75,0)}
    /* it gathers itself before it goes */
    32% {transform:scale(0.972) translate3d(0,2.4px,0) rotate(0deg);
         box-shadow:0 6px 14px rgba(16,20,26,.10);
         animation-timing-function:cubic-bezier(.19,.86,.26,1)}
    /* up, a shade past full size, then eased back down onto it */
    48% {transform:scale(2.055) translate3d(0,-17.5px,0) rotate(0deg);
         box-shadow:0 26px 52px rgba(16,20,26,.20);
         animation-timing-function:cubic-bezier(.33,0,.2,1)}
    55% {transform:scale(1.985) translate3d(0,-14.2px,0) rotate(0deg);animation-timing-function:cubic-bezier(.5,.02,.32,1)}
    /* held at full size while the face turns, drifting rather than frozen */
    90% {transform:scale(2.01) translate3d(0,-15.8px,0) rotate(0deg);
         box-shadow:0 26px 52px rgba(16,20,26,.20);
         animation-timing-function:cubic-bezier(.62,.02,.28,1)}
    /* down slower than it went up, and it settles rather than lands */
    96.5%{transform:scale(1.035) translate3d(0,-1.2px,0) rotate(0deg);animation-timing-function:cubic-bezier(.3,.9,.4,1)}
    98.8%{transform:scale(0.994) translate3d(0,0.5px,0) rotate(0deg);animation-timing-function:cubic-bezier(.4,0,.5,1)}
    100%{transform:scale(1) translate3d(0,0px,0) rotate(0deg);box-shadow:0 8px 18px rgba(16,20,26,.10)}
  }
  /* The turn is the card's own flip - the same inner element, the same axis and the same
     easing curve the hover uses - taken all the way round instead of half way. It runs on
     .tc-flip, so the label under the card stays upright while the face turns, exactly as it
     does on hover. No fill: when it finishes the element goes back to its natural state, so
     hovering still flips the card afterwards. */
  /* Paced in two halves rather than on the hover's single curve. That curve front-loads the
     motion - right for a 180 degree flip that settles, wrong for a full turn, where it threw
     the card past its back face in a frame or two and then coasted. Half the time to the back,
     half the time home, and the hover's soft landing kept for the second half. */
  @keyframes card-turn{
    0%  {transform:rotateY(0deg);   animation-timing-function:cubic-bezier(.42,0,.42,1)}
    48% {transform:rotateY(180deg); animation-timing-function:cubic-bezier(.4,0,.16,1)}
    100%{transform:rotateY(360deg)}
  }
  [data-card].highlighted .tc-flip{animation:card-turn .8s 1.75s;transition:none}
  /* Scoped to [data-card], not to .card - the page already has four .card elements in the
     work view, and the hero card this points at is an .ncard, so a bare .card.highlighted
     rule would have styled the wrong things and missed the right one. */
  /* Longer, and the shadow is animated with it rather than snapping on: a card that grows to
     twice its size without its shadow growing too reads as a flat sticker being zoomed. */
  [data-card].highlighted{animation:card-attention 3.1s both;
    z-index:100;will-change:transform,box-shadow}

  @media (max-width:700px){
    .unmute-btn{width:68px;height:68px}
    .unmute-btn::after{inset:-9px}
    .unmute-btn .ub-in,.unmute-btn .ub-i{width:26px;height:26px}
  }
  /* An animation that never stops is the one thing reduced motion exists for. The button
     still changes state and the cue still fires; neither of them shakes or leaps. */
  @media (prefers-reduced-motion:reduce){
    .unmute-btn,.unmute-btn:hover{transition:none;transform:none}
    .unmute-btn.vibrating{animation:none}
    .unmute-btn.vibrating{box-shadow:0 0 0 3px rgba(255,255,255,.55),0 10px 30px rgba(16,20,26,.22)}
    [data-card].highlighted{animation:none;box-shadow:0 20px 40px rgba(0,0,0,.18)}
    [data-card].highlighted .tc-flip{animation:none}
  }