/* Session kit css. Generated by build.py from src/ (base, then database, schedule, prompt-builder, video).
   Do not edit this file: edit src/, then run python3 build.py. */

/* ==================== base ==================== */
/* Session kit: tokens and shared parts (src/base.css). The Bites house style, ~/bites/DESIGN.md.
   Light and dark follow the system setting. Paper is white (#1c1c1b in dark), never beige.

   Every component is one figure:
     <figure class="kit">
       <kit-NAME> ...real HTML: the data, the text, the controls... </kit-NAME>
       <figcaption class="kit-say">One sentence: what it shows, and what changes when you poke it.</figcaption>
     </figure>
   The HTML inside <kit-NAME> must make sense with no JS (an agent reads the raw page). JS only adds the moving parts.
   Tokens are --k-* so they never clash with a page's own variables. A page can set --k-accent to change the accent. */

:root{
  --k-ink:#1c1c1a; --k-ink-hover:#000; --k-on-ink:#fff;
  --k-body:#62625f; --k-muted:#70706c;
  --k-page:#fcfcfc; --k-surface:#fff; --k-soft:#f7f7f5; --k-sunken:#f0f0ee; --k-hair:#e6e6e3;
  --k-accent:#2456f5; --k-on-accent:#fff;
  --k-live:#2f8f4e; --k-error:#b3261e;
  /* note colours: margin notes and annotation labels, in turn. Not accents. */
  --k-blue:#3b72c4; --k-amber:#b8751a; --k-green:#2f8f5b;
  --k-chart-2:#8a8a86; --k-chart-3:#b9b9b5; --k-chart-4:#dcdcd8;
  --k-ann:oklch(0.62 0.005 30);
  --k-shadow:0 0 0;
  --k-ring:0 0 0 1px rgb(var(--k-shadow) / .08);
  --k-raised:0 0 0 1px rgb(var(--k-shadow) / .05), 0 1px 3px rgb(var(--k-shadow) / .05), 0 4px 10px -4px rgb(var(--k-shadow) / .05);
  --k-raised-hover:0 0 0 1px rgb(var(--k-shadow) / .08), 0 1px 3px rgb(var(--k-shadow) / .07), 0 4px 10px -4px rgb(var(--k-shadow) / .08);
  --k-pop:0 0 0 1px rgb(var(--k-shadow) / .08), 0 12px 32px -8px rgb(var(--k-shadow) / .18);
  --k-track:0 0 0 1px rgb(var(--k-shadow) / .05), 0 2px 8px -2px rgb(var(--k-shadow) / .08);
  --k-sans:"Inter", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --k-mono:"Berkeley Mono", "JetBrains Mono", "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
  --k-hand:"Shantell Sans", cursive;
  --k-ease:cubic-bezier(.23, 1, .32, 1);           /* everything: colour, transform, fades */
  --k-ease-drawer:cubic-bezier(.32, .72, 0, 1);    /* things that slide in or pop over */
  --k-hairw:1px;
}
@media (prefers-color-scheme: dark){:root{
  --k-ink:#ededea; --k-ink-hover:#fff; --k-on-ink:#121212;
  --k-body:#a8a8a3; --k-muted:#8f8f8a;
  --k-page:#121212; --k-surface:#1c1c1b; --k-soft:#181817; --k-sunken:#222220; --k-hair:#2e2e2b;
  --k-accent:#7c9dff; --k-on-accent:#121212;
  --k-live:#57b874; --k-error:#f2867b;
  --k-blue:#7ea3e0; --k-amber:#d39a4a; --k-green:#6cb890;
  --k-chart-2:#8e8e89; --k-chart-3:#5c5c58; --k-chart-4:#3a3a37;
  --k-shadow:255 255 255;
}}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi){:root{--k-hairw:.5px}}

/* ---------- the figure ---------- */
/* 24px from the prose around it. From 1024px it breaks out 32px past each side of the column, like the
   post's cards and frames; its caption keeps to the prose edge. Add .kit-flush to stay inside the column. */
.kit{display:block;margin:24px 0;font-family:var(--k-sans);color:var(--k-body);-webkit-tap-highlight-color:transparent}
.kit *,.kit *::before,.kit *::after{box-sizing:border-box}
@media (min-width:1024px){
  .kit:not(.kit-flush){margin-left:-32px;margin-right:-32px}
  .kit:not(.kit-flush) > .kit-say{padding:0 32px}
}
.kit [hidden]{display:none!important}

/* the sentence under every component: what it shows. Real text, so it reads with no JS. */
.kit-say{margin:10px 0 0;font-size:13px;line-height:1.5;color:var(--k-muted);text-wrap:pretty}

/* the usual surface for a component: white, a hairline ring, 12px corners */
.kit-card{background:var(--k-surface);border-radius:12px;box-shadow:var(--k-ring);padding:16px}
@media (max-width:639px){.kit-card{padding:12px}}

.kit-label{margin:0;font:500 12px/16px var(--k-sans);letter-spacing:.01em;color:var(--k-muted)}
.kit-hand{font:400 15px/1.3 var(--k-hand);color:var(--k-ann)}
.kit-num{font-variant-numeric:tabular-nums}
.kit code,.kit-mono{font-family:var(--k-mono)}
.kit-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* controls that only work with JS: hidden (space kept, so nothing jumps) until the component is ready */
.kit-js{visibility:hidden}
[data-ready] .kit-js{visibility:visible}

/* ---------- controls ---------- */
:where(.kit) button{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:pointer;touch-action:manipulation}
.kit :focus-visible{outline:2px solid var(--k-ink);outline-offset:2px}

/* pill switch: flick between versions of one thing. One option is always on (aria-pressed="true").
     <div class="kit-pills" role="group" aria-label="..."><button type="button" aria-pressed="true">A</button>...</div> */
.kit-pills{display:inline-flex;flex-wrap:wrap;max-width:100%;padding:3px;border-radius:18px;background:var(--k-soft);box-shadow:var(--k-track)}
.kit-pills > button{position:relative;height:26px;padding:1px 14px;border-radius:9999px;font-size:13px;line-height:24px;color:var(--k-body);white-space:nowrap;
  transition:color 150ms var(--k-ease),background-color 150ms var(--k-ease),transform 150ms var(--k-ease)}
.kit-pills > button::after{content:"";position:absolute;inset:-9px -2px}
.kit-pills > button[aria-pressed="true"]{background:var(--k-ink);color:var(--k-page)}
.kit-pills > button:active{transform:scale(.96)}
@media (hover:hover) and (pointer:fine){.kit-pills > button:not([aria-pressed="true"]):hover{color:var(--k-ink)}}

/* buttons: .kit-btn is the ink pill (the one action that matters); .kit-btn.quiet is the white raised pill.
   32px tall, 44px to tap. */
.kit-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 14px;border-radius:9999px;
  background:var(--k-ink);color:var(--k-on-ink);font:500 14px/1 var(--k-sans);text-decoration:none;white-space:nowrap;
  transition:background-color 150ms var(--k-ease),box-shadow 150ms var(--k-ease),transform 150ms var(--k-ease),opacity 150ms var(--k-ease)}
.kit-btn::after{content:"";position:absolute;inset:-6px}
.kit-btn:active{transform:scale(.96)}
.kit-btn svg{width:14px;height:14px;flex:none}
.kit-btn[disabled]{opacity:.45;cursor:default;transform:none}
@media (hover:hover) and (pointer:fine){.kit-btn:not([disabled]):hover{background:var(--k-ink-hover);color:var(--k-on-ink)}}
.kit-btn.quiet{background:var(--k-surface);color:var(--k-ink);box-shadow:var(--k-raised)}
@media (hover:hover) and (pointer:fine){.kit-btn.quiet:not([disabled]):hover{background:var(--k-surface);color:var(--k-ink);box-shadow:var(--k-raised-hover)}}

/* icon button: 32px, muted, 44px to tap. Always give it an aria-label. */
.kit-icon-btn{position:relative;flex:none;width:32px;height:32px;display:inline-grid;place-items:center;border-radius:6px;color:var(--k-muted);
  transition:background-color 150ms var(--k-ease),color 150ms var(--k-ease),transform 150ms var(--k-ease)}
.kit-icon-btn::after{content:"";position:absolute;inset:-6px}
.kit-icon-btn svg{width:16px;height:16px;grid-area:1/1}
.kit-icon-btn:active{transform:scale(.96)}
@media (hover:hover) and (pointer:fine){.kit-icon-btn:hover{background:var(--k-sunken);color:var(--k-ink)}}

/* copy button: <button type="button" class="kit-icon-btn kit-copy" aria-label="Copy"></button>, inside an element
   with data-copy. kit.js fills in the icons and copies that element's text (or the value of data-copy, if it has one). */
.kit-copy:empty{visibility:hidden}
.kit-copy svg{transition:opacity 150ms var(--k-ease),transform 150ms var(--k-ease),filter 150ms var(--k-ease)}
.kit-copy .ck{opacity:0;transform:scale(.6);filter:blur(2px)}
.kit-copy.is-done .cp{opacity:0;transform:scale(.6);filter:blur(2px)}
.kit-copy.is-done .ck{opacity:1;transform:none;filter:none;color:var(--k-ink)}

/* slider: <input type="range" class="kit-slider">. JS may set --fill (0%–100%) to ink the part left of the thumb. */
.kit-slider{-webkit-appearance:none;appearance:none;display:block;width:100%;height:32px;margin:0;background:none;cursor:pointer;touch-action:pan-y;--fill:0%}
.kit-slider::-webkit-slider-runnable-track{height:4px;border-radius:9999px;background:linear-gradient(to right,var(--k-ink) var(--fill),var(--k-sunken) var(--fill))}
.kit-slider::-moz-range-track{height:4px;border-radius:9999px;background:var(--k-sunken)}
.kit-slider::-moz-range-progress{height:4px;border-radius:9999px;background:var(--k-ink)}
.kit-slider::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;margin-top:-8px;border-radius:50%;background:var(--k-surface);
  box-shadow:0 0 0 1px rgb(var(--k-shadow) / .14),0 2px 6px rgb(var(--k-shadow) / .16);transition:transform 150ms var(--k-ease)}
.kit-slider::-moz-range-thumb{width:20px;height:20px;border:0;border-radius:50%;background:var(--k-surface);box-shadow:0 0 0 1px rgb(var(--k-shadow) / .14),0 2px 6px rgb(var(--k-shadow) / .16)}
.kit-slider:active::-webkit-slider-thumb{transform:scale(1.1)}
.kit-slider:focus-visible{outline:none}
.kit-slider:focus-visible::-webkit-slider-thumb{outline:2px solid var(--k-ink);outline-offset:2px}
.kit-slider:focus-visible::-moz-range-thumb{outline:2px solid var(--k-ink);outline-offset:2px}

/* toggle: <button type="button" class="kit-toggle" role="switch" aria-checked="false"><span class="kit-toggle-track" aria-hidden="true"></span>Label</button> */
.kit-toggle{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:32px;font-size:14px;color:var(--k-ink)}
.kit-toggle::after{content:"";position:absolute;inset:-6px}
.kit-toggle-track{position:relative;flex:none;width:34px;height:20px;border-radius:9999px;background:var(--k-chart-4);transition:background-color 150ms var(--k-ease)}
.kit-toggle-track::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--k-surface);
  box-shadow:0 1px 3px rgb(0 0 0 / .2);transition:transform 200ms var(--k-ease)}
.kit-toggle[aria-checked="true"] .kit-toggle-track{background:var(--k-ink)}
.kit-toggle[aria-checked="true"] .kit-toggle-track::after{transform:translateX(14px)}
@media (prefers-color-scheme: dark){.kit-toggle[aria-checked="true"] .kit-toggle-track::after{background:var(--k-page)}}

/* popover: a small surface that opens from the thing you tapped. Add .is-open to show it. Set transform-origin to the trigger side. */
.kit-pop{position:absolute;z-index:20;padding:6px;border-radius:14px;background:var(--k-surface);box-shadow:var(--k-pop);
  opacity:0;transform:scale(.97) translateY(-4px);transform-origin:top left;pointer-events:none;
  transition:opacity 150ms var(--k-ease),transform 150ms var(--k-ease)}
.kit-pop.is-open{opacity:1;transform:none;pointer-events:auto;transition-duration:180ms}

/* the legend lives in the prose (as on Sam Who's pages): an inline glyph in the caption or the post text that matches a mark
   in the visual, so the visual needs no labels. Each component defines its own glyph shapes on top of this. */
.kit-glyph{display:inline-block;width:.75em;height:.75em;margin:0 .2em 0 .05em;vertical-align:-.04em;border-radius:50%;background:var(--k-ink)}

/* live sentence: the one line that says what you are looking at right now (it changes as you poke). */
.kit-live{margin:0;font:500 20px/1.3 var(--k-sans);letter-spacing:-.01em;color:var(--k-ink);text-wrap:balance}
.kit-live-sub{margin:4px 0 0;font:400 15px/1.5 var(--k-sans);color:var(--k-body);text-wrap:pretty}
@media (max-width:639px){.kit-live{font-size:18px}}

/* big number: a count that matters. Inter 500, tabular, in ink. */
.kit-big{font:500 56px/1 var(--k-sans);letter-spacing:-.02em;color:var(--k-ink);font-variant-numeric:tabular-nums}
@media (max-width:639px){.kit-big{font-size:48px}}

/* ---------- cards ---------- */
/* prompt card: what a person typed to an agent. Shown in full, as typed. */
.kit-prompt{position:relative;margin:0;background:var(--k-soft);border-radius:12px;padding:12px 52px 12px 16px;
  font:400 13px/24px var(--k-mono);color:var(--k-body);white-space:pre-wrap;overflow-wrap:anywhere;text-align:left}
.kit-prompt > .kit-copy{position:absolute;top:8px;right:8px}

/* browser frame: the working thing. The address is the real address and nothing else. */
.kit-frame{position:relative;background:var(--k-surface);border-radius:12px;box-shadow:var(--k-ring);overflow:hidden}
.kit-frame-bar{display:flex;align-items:center;gap:10px;height:44px;padding:0 8px 0 14px;background:var(--k-soft);border-bottom:1px solid var(--k-sunken)}
.kit-dots{display:flex;gap:8px;flex:none}
.kit-dots i{width:12px;height:12px;border-radius:50%;background:#ff5f57}
.kit-dots i:nth-child(2){background:#febc2e}
.kit-dots i:nth-child(3){background:#28c840}
.kit-url{display:block;flex:1;min-width:0;height:28px;padding:0 12px;background:var(--k-surface);border:1px solid var(--k-sunken);border-radius:7px;
  font:400 13px/26px var(--k-mono);color:var(--k-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:639px){
  .kit-frame-bar{height:40px;gap:8px;padding-left:12px}
  .kit-dots{gap:6px}.kit-dots i{width:10px;height:10px}
  .kit-url{height:26px;padding:0 10px;font-size:12px;line-height:24px}
}

/* ---------- motion ---------- */
/* Reduced motion: things still change, nothing travels. Components also skip their choreography (Kit.reduced()). */
@media (prefers-reduced-motion: reduce){
  .kit *,.kit *::before,.kit *::after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}
}

/* ==================== database ==================== */
/* <kit-database>: a card file on a desk. A tray of paper slips; a question pulls the matching ones out. */
kit-database{display:block}
.kit-db-ask{position:relative;display:flex;align-items:center;gap:14px;margin:0 0 16px;min-height:44px}
.kit-db-hint{font-size:17px;color:var(--k-ann);opacity:0;transition:opacity 400ms var(--k-ease);pointer-events:none;white-space:nowrap}
.kit-db-hint.is-on{opacity:1}
.kit-db-tray{position:relative;list-style:none;margin:0;padding:10px 8px 8px;border-radius:14px 14px 18px 18px;background:var(--k-soft);display:grid;gap:6px;
  box-shadow:inset 0 2px 4px rgb(var(--k-shadow) / .09),inset 0 0 0 1px rgb(var(--k-shadow) / .05),0 4px 0 -1px var(--k-sunken),0 5px 0 -1px rgb(var(--k-shadow) / .08),0 12px 16px -12px rgb(var(--k-shadow) / .3)}
.kit-db-slip{position:relative;display:grid;grid-template-columns:22px auto minmax(0,1fr) auto;align-items:center;gap:0 10px;height:44px;padding:0 14px 0 11px;
  border-radius:9px;background:var(--k-surface);box-shadow:var(--k-raised);font-size:13px;line-height:1.3;color:var(--k-body);
  transform:translateX(0) rotate(var(--r,0deg));
  transition:transform 260ms var(--k-ease),opacity 200ms var(--k-ease),box-shadow 260ms var(--k-ease)}
.kit-db-slip i{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--k-sunken);color:var(--k-muted);font:500 11px/1 var(--k-sans);font-style:normal}
.kit-db-slip b{font-weight:500;color:var(--k-ink);white-space:nowrap}
.kit-db-slip span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kit-db-slip time{font:400 12px/1 var(--k-mono);color:var(--k-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.kit-db-slip.is-out{transform:translateX(22px) rotate(0deg);transition-timing-function:cubic-bezier(.34,1.4,.64,1);
  box-shadow:0 0 0 1px rgb(var(--k-shadow) / .08),0 8px 18px -8px rgb(var(--k-shadow) / .28)}
.kit-db-slip.is-in{opacity:.38}
.kit-db-wait .kit-db-slip{opacity:0}
.kit-db-scan{position:absolute;left:4px;right:4px;top:6px;height:2px;border-radius:2px;background:var(--k-accent);opacity:0;pointer-events:none;z-index:2}
.kit-db-foot{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-top:24px}
.kit-db-answer{display:flex;align-items:baseline;gap:12px;margin:0;min-width:0}
.kit-db-answer .kit-live-sub{margin:0}
.kit-db-n{min-width:.7em;font-variant-numeric:tabular-nums}
.kit-db-foot .kit-btn{flex:none;gap:6px}
.kit-db-foot .kit-btn svg{width:16px;height:16px}
@media (max-width:639px){
  .kit-db-hint{display:none}
  .kit-db-slip{grid-template-columns:22px minmax(0,1fr) auto;grid-template-rows:auto auto;height:auto;padding:8px 12px 8px 10px;gap:2px 10px}
  .kit-db-slip i{grid-row:1 / 3}
  .kit-db-slip b{grid-column:2}
  .kit-db-slip time{grid-column:3;grid-row:1}
  .kit-db-slip span{grid-column:2 / 4;grid-row:2}
  .kit-db-slip.is-out{transform:translateX(14px) rotate(0deg)}
  .kit-db-foot{flex-direction:column;align-items:flex-start}
}
@media (prefers-reduced-motion:reduce){.kit-db-slip,.kit-db-hint{transition:none}}

/* ==================== schedule ==================== */
/* <kit-schedule>: a week as a thread with beads. See docs/schedule.md */
kit-schedule{display:block}
.kit-sch-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 14px}
.kit-sch-replay{margin-right:-4px}
.kit-sch-intro{margin:0 0 6px;font:400 13px/1.5 var(--k-sans);color:var(--k-muted)}
.kit-sch-saves{margin:0 0 12px;padding:0;list-style:none;font:400 12px/1.6 var(--k-mono);color:var(--k-muted);display:flex;flex-wrap:wrap;gap:0 12px}
.kit-sch-stage{position:relative;height:150px;margin-top:18px;overflow:visible}
.kit-sch-say{margin-top:18px;min-height:1.3em}
.kit-sch-say .kit-num{font-variant-numeric:tabular-nums}
/* with JS: the list stays for screen readers only */
kit-schedule[data-ready] .kit-sch-saves,kit-schedule[data-ready] .kit-sch-intro{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.kit-sch-layer{position:absolute;inset:0;will-change:transform}
.kit-sch-thread{position:absolute;left:0;top:0;width:100%;height:150px;overflow:visible;pointer-events:none}
.kit-sch-thread path{fill:none;stroke:var(--k-chart-3);stroke-width:1.5;stroke-linecap:round}
.kit-sch-bead{position:absolute;left:0;top:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--k-ink);
  opacity:0;transform:translate(var(--x),var(--y)) translateY(var(--lift,0px));
  transition:transform 260ms cubic-bezier(.34,1.4,.64,1) var(--d,0ms),opacity 200ms var(--k-ease) var(--d,0ms),background-color 200ms var(--k-ease),box-shadow 200ms var(--k-ease)}
.kit-sch-bead.is-in{opacity:1}
.kit-sch-bead.is-old{background:var(--k-surface);box-shadow:inset 0 0 0 1.5px var(--k-chart-2)}
.kit-sch-bead.is-up.is-old{box-shadow:inset 0 0 0 2px var(--k-accent)}
.kit-sch-bead.is-drop{transform:translate(var(--x),calc(var(--y) - 6px))}
.kit-sch-ghost{position:absolute;left:0;top:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--k-surface);
  box-shadow:inset 0 0 0 1.5px var(--k-chart-2);opacity:0;transform:translate(var(--x),var(--y));transition:opacity 200ms var(--k-ease) var(--d,0ms)}
.kit-sch-ghost.is-on{opacity:.45}
.kit-sch-lift{position:absolute;left:0;top:0;width:0;border-left:1px dotted var(--k-chart-3);transform-origin:50% 100%;
  transform:translate(var(--x),var(--y)) translateY(-100%) scaleY(0);transition:transform 220ms var(--k-ease) var(--d,0ms)}
.kit-sch-lift.is-on{transform:translate(var(--x),var(--y)) translateY(-100%) scaleY(1)}
.kit-sch-reach{position:absolute;top:22px;height:28px;border-radius:14px;background:color-mix(in oklch,var(--k-accent) 9%,transparent);
  box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--k-accent) 30%,transparent);transform-origin:100% 50%;transform:scaleX(0);
  transition:transform 320ms cubic-bezier(.42,0,.58,1)}
.kit-sch-line{position:absolute;top:4px;bottom:20px;width:0;transform-origin:50% 0;transform:scaleY(0);transition:transform 260ms var(--k-ease)}
.kit-sch-line.is-on{transform:scaleY(1)}
.kit-sch-send{border-left:1.5px dashed var(--k-muted)}
.kit-sch-runline{width:2px;margin-left:-1px;background:var(--k-accent)}
.kit-sch-note{position:absolute;top:-16px;left:0;font:400 14px/1 var(--k-hand);color:var(--k-ann);white-space:nowrap;transform:translateX(-50%) rotate(-3deg)}
.kit-sch-runline .kit-sch-note{left:1px;color:var(--k-accent)}
.kit-sch-days{position:absolute;left:0;right:0;bottom:0;height:16px;font:400 11px/16px var(--k-mono);color:var(--k-muted)}
.kit-sch-days span{position:absolute;left:0;transform:translateX(-50%)}
.kit-sch-snap .kit-sch-bead,.kit-sch-snap .kit-sch-ghost,.kit-sch-snap .kit-sch-lift,.kit-sch-snap .kit-sch-reach,.kit-sch-snap .kit-sch-line{transition:none}
@media (prefers-reduced-motion:reduce){
  .kit-sch-bead,.kit-sch-ghost,.kit-sch-lift,.kit-sch-reach,.kit-sch-line{transition:none}
}

/* ==================== prompt-builder ==================== */
kit-prompt-builder{display:block;position:relative}
.kit-pb-note{position:relative;margin:0;padding:34px 24px 24px;border-radius:12px;background:var(--k-surface);
  box-shadow:0 0 0 1px rgb(var(--k-shadow) / .06),0 1px 2px rgb(var(--k-shadow) / .05),0 10px 24px -12px rgb(var(--k-shadow) / .22);
  font:400 15px/30px var(--k-mono);color:var(--k-body);overflow-wrap:anywhere}
/* perforation holes along the top edge */
.kit-pb-note::before{content:"";position:absolute;left:14px;right:14px;top:9px;height:6px;
  background:radial-gradient(circle at 50% 50%,var(--k-sunken) 0 2.5px,transparent 3px) 0 0 / 16px 6px repeat-x;opacity:.9}
.kit-pb-slot{position:relative;display:inline;padding:0 3px;margin:0 1px;font:400 19px/1 var(--k-hand);color:var(--k-accent);white-space:nowrap;border-radius:6px}
.kit-pb-slot::after{content:"";position:absolute;left:2px;right:2px;bottom:-5px;height:6px;background:currentColor;opacity:.7;transform-origin:left center;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 6' preserveAspectRatio='none'%3E%3Cpath d='M1 3.5c6-2 10 1.5 16 0s9-2 15-.2 10 1.6 15 .1 8-1.5 12-.4' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 6' preserveAspectRatio='none'%3E%3Cpath d='M1 3.5c6-2 10 1.5 16 0s9-2 15-.2 10 1.6 15 .1 8-1.5 12-.4' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E") center / 100% 100% no-repeat}
.kit-pb-slot[role="button"]{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.kit-pb-slot[role="button"]::before{content:"";position:absolute;inset:-12px -3px}
.kit-pb-slot:focus-visible{outline:2px solid var(--k-accent);outline-offset:3px}
.kit-pb-slot.is-open{background:color-mix(in oklch,var(--k-accent) 10%,transparent)}
.kit-pb-slot.is-hidden::after{transform:scaleX(0)}
.kit-pb-slot.is-line::after{animation:kit-pb-line 200ms var(--k-ease) both}
@keyframes kit-pb-line{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (hover:hover) and (pointer:fine){.kit-pb-slot[role="button"]:hover{background:color-mix(in oklch,var(--k-accent) 8%,transparent)}}
.kit-pb-pop{left:0;top:0;transform-origin:var(--ox,0) 0;max-width:calc(100% - 8px)}
.kit-pb-pop.is-up{transform-origin:var(--ox,0) 100%}
.kit-pb-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px}
.kit-pb-actions .kit-btn svg+svg{display:none}
.kit-pb-tear{position:absolute;margin:0;pointer-events:none;z-index:30;will-change:transform,opacity}
@media (max-width:639px){
  .kit-pb-note{padding:32px 18px 20px}
  /* phones: Copy on its own row, the two Open links side by side under it */
  .kit-pb-actions{display:grid;grid-template-columns:1fr 1fr}
  .kit-pb-actions [data-copy-btn]{grid-column:1 / -1}
}
.kit-pb-actions [data-copy-btn]{min-width:92px}

/* ==================== video ==================== */
/* video slot: Ben talking over the post. A poster that links to YouTube; with JS, a tap plays it in place. */
kit-video{display:block}
.kit-vid-poster{position:relative;display:block;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:var(--k-sunken);box-shadow:var(--k-ring);-webkit-tap-highlight-color:transparent}
.kit-vid-poster img{display:block;width:100%;height:100%;object-fit:cover}
.kit-vid-play{position:absolute;left:50%;top:50%;width:60px;height:60px;margin:-30px 0 0 -30px;border-radius:50%;background:var(--k-ink);color:var(--k-on-ink);
  display:grid;place-items:center;box-shadow:0 0 0 1px rgb(0 0 0 / .08),0 8px 24px -6px rgb(0 0 0 / .35);transition:transform 150ms var(--k-ease)}
.kit-vid-play svg{width:22px;height:22px;margin-left:3px}
.kit-vid-poster:active .kit-vid-play{transform:scale(.96)}
@media (hover:hover) and (pointer:fine){.kit-vid-poster:hover .kit-vid-play{transform:scale(1.05)}.kit-vid-poster:hover:active .kit-vid-play{transform:scale(.96)}}
.kit-vid-box{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:#000;box-shadow:var(--k-ring)}
.kit-vid-box iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* no video yet: one quiet line, not a fake player */
.kit-vid-soon{display:flex;align-items:center;gap:12px;margin:0;padding:10px 14px;min-height:44px;border-radius:12px;background:var(--k-soft);font-size:14px;line-height:20px;color:var(--k-muted)}
.kit-vid-soon::before{content:"";flex:none;width:28px;height:28px;border-radius:50%;
  background:var(--k-sunken) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6.5v11l9-5.5z' fill='%238a8a86'/%3E%3C/svg%3E") 55% 50% / 15px no-repeat}
