/* GENERATED by build.py write_ltbot_css() from assets/style.css. Do not edit. */
/* ============================================================
   CHAT ASSISTANT WIDGET (Frankie)
   Drawn by assets/chatbot.js once /api/chat/ says it is switched on. The
   structure is Cornerstone's widget (14 Oct 2026); the look is this site's
   stamp idiom: ink borders, hard offset shadows, square corners, pink.
   Every rule sits under .ltbot so nothing here can touch a page.
   ============================================================ */
.ltbot{position:fixed;right:20px;bottom:20px;z-index:200;font-family:var(--sans);color:var(--ink)}
.ltbot [hidden]{display:none!important}
.ltbot button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0;margin:0}
.ltbot button:disabled{cursor:default}
.ltbot svg{display:block;flex:none}
.ltbot :focus-visible{outline:2px solid var(--pink);outline-offset:2px}
@media print{.ltbot{display:none}}

/* the button */
.ltbot .ltbot-fab{
  display:inline-flex;align-items:center;gap:.55rem;
  background:var(--pink);color:#fff;border:2px solid var(--ink);
  box-shadow:var(--shadow-stamp-sm);font-weight:800;font-size:.92rem;
  padding:.7rem 1.05rem .7rem .8rem;transition:transform .15s ease,box-shadow .15s ease;
}
.ltbot .ltbot-fab:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-stamp)}
.ltbot-fab-ic{width:26px;height:26px;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none}
.ltbot-fab-ic img{width:16px;height:16px}
.ltbot.ltbot-open .ltbot-fab{display:none}

/* the panel */
.ltbot-panel{
  display:flex;flex-direction:column;overflow:hidden;
  width:min(400px,calc(100vw - 40px));
  height:min(620px,calc(100vh - 40px));height:min(620px,calc(100dvh - 40px));
  background:var(--paper);border:2px solid var(--ink);box-shadow:var(--shadow-stamp);
  animation:ltbot-in .22s ease;
}
@keyframes ltbot-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.ltbot-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.75rem .5rem .75rem 1rem;background:var(--ink);color:var(--paper)}
.ltbot-who{display:flex;align-items:center;gap:.65rem;min-width:0}
.ltbot-avatar{width:32px;height:32px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;flex:none}
.ltbot-avatar img{width:18px;height:18px}
.ltbot-title{font-weight:800;font-size:1rem;line-height:1.2}
.ltbot-status{display:flex;align-items:center;gap:.45rem;margin-top:.2rem;font-family:var(--mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;line-height:1.3;color:rgba(247,244,238,.7)}
.ltbot-live{flex:none;width:8px;height:8px;border-radius:50%;background:var(--pink);animation:ltbot-pulse 1.4s ease-in-out infinite}
@keyframes ltbot-pulse{50%{opacity:.35}}
.ltbot-tools{flex:none;display:flex;gap:2px}
.ltbot .ltbot-tool{display:grid;place-items:center;width:40px;height:40px;color:var(--paper);opacity:.85;transition:color .15s ease,opacity .15s ease}
.ltbot .ltbot-tool:hover{opacity:1;color:var(--pink)}
.ltbot-tool svg{width:19px;height:19px}

/* the conversation, on the site's grid paper */
.ltbot-log{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:1rem;background:
  linear-gradient(var(--grid) 1px,transparent 1px),
  linear-gradient(90deg,var(--grid) 1px,transparent 1px) var(--paper);
  background-size:26px 26px}
.ltbot-msg{width:fit-content;max-width:86%;margin-top:.6rem;padding:.65rem .85rem;font-size:.95rem;line-height:1.45;border:1.5px solid var(--ink);background:#fff;overflow-wrap:anywhere}
.ltbot-log>.ltbot-msg:first-child{margin-top:0}
.ltbot-msg.ltbot-user{margin-left:auto;background:var(--pink);color:#fff}
.ltbot-msg.ltbot-pending{opacity:.6}
.ltbot-wait{display:flex;gap:5px;width:fit-content;margin-top:.6rem;padding:.85rem;border:1.5px solid var(--ink);background:#fff}
.ltbot-wait span{width:6px;height:6px;border-radius:50%;background:var(--ink);animation:ltbot-bob 1s infinite}
.ltbot-wait span:nth-child(2){animation-delay:.15s}
.ltbot-wait span:nth-child(3){animation-delay:.3s}
@keyframes ltbot-bob{0%,60%,100%{transform:none;opacity:.35}30%{transform:translateY(-4px);opacity:.9}}
.ltbot-notice{margin-top:.75rem;font-family:var(--mono);font-size:.8rem;line-height:1.45;color:var(--pink-deep)}

/* the call-back form that opens inside the chat */
.ltbot-lead{margin-top:.6rem;padding:1rem .9rem .9rem;border:1.5px solid var(--ink);background:#fff;box-shadow:4px 4px 0 var(--pink)}
.ltbot-lead-h{font-weight:800;font-size:.95rem;line-height:1.35}
.ltbot-lead label{display:block;margin-top:.7rem;font-family:var(--mono);font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.ltbot-lead input{display:block;width:100%;height:44px;margin-top:.3rem;padding:0 .75rem;border:1.5px solid var(--ink);background:#fff;font:400 16px/1.2 var(--sans);color:var(--ink)}
.ltbot-lead input:focus{outline:none;box-shadow:2px 2px 0 var(--pink)}
.ltbot-hp{position:absolute;left:-9999px}
.ltbot-lead-err{font-weight:600;font-size:.88rem;color:var(--pink-deep)}
.ltbot-lead-err:not(:empty){margin-top:.7rem}
.ltbot .ltbot-lead-go{display:flex;align-items:center;justify-content:center;gap:.55rem;width:100%;margin-top:.9rem;padding:.8rem 1rem;border:2px solid var(--ink);background:var(--pink);color:#fff;font-weight:800;box-shadow:var(--shadow-stamp-sm);transition:transform .15s ease,box-shadow .15s ease}
.ltbot .ltbot-lead-go:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:5px 5px 0 var(--ink)}
.ltbot .ltbot-lead-go:disabled{opacity:.6}
.ltbot-lead-go svg{width:14px;height:14px}
.ltbot-lead-note{margin-top:.7rem;font-size:.8rem;line-height:1.45;color:rgba(20,22,31,.7)}

/* a film that answers the question: a card in the chat, played over the page */
.ltbot .ltbot-film{display:flex;align-items:center;gap:.8rem;width:100%;margin-top:.6rem;padding:.45rem .8rem .45rem .45rem;border:1.5px solid var(--ink);background:#fff;text-align:left;transition:transform .15s ease,box-shadow .15s ease}
.ltbot .ltbot-film:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}
.ltbot-film-shot{position:relative;flex:none;display:grid;place-items:center;width:72px;aspect-ratio:16/9;overflow:hidden;background:var(--ink)}
.ltbot-film-shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ltbot-film-play{position:relative;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--pink);color:#fff}
.ltbot-film-play svg{width:12px;height:12px;margin-left:2px}
.ltbot-film-words{display:grid;gap:.15rem;min-width:0}
.ltbot-film-title{font-weight:800;font-size:.92rem;line-height:1.3}
.ltbot-film-len{font-family:var(--mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--pink-deep)}
.ltbot-filmbox{position:fixed;inset:0;z-index:210;display:grid;place-items:center;padding:24px;background:rgba(20,22,31,.86)}
.ltbot-filmbox[hidden]{display:none}
.ltbot-filmbox-in{position:relative;width:min(1100px,100%,calc((100vh - 48px)*var(--ltbot-film-ar,1.7778)));width:min(1100px,100%,calc((100dvh - 48px)*var(--ltbot-film-ar,1.7778)))}
.ltbot-filmbox video{display:block;width:100%;height:auto;border:2px solid var(--paper);background:#000}
.ltbot-filmbox-x{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:44px;height:44px;border:2px solid var(--ink);background:var(--paper);color:var(--ink);cursor:pointer}
.ltbot-filmbox-x:hover{background:var(--pink);color:#fff}
.ltbot-filmbox-x svg{width:20px;height:20px}
.ltbot-filmbox-x:focus-visible{outline:2px solid var(--pink);outline-offset:2px}
html.ltbot-film-open{overflow:hidden}

/* page links and quick replies */
.ltbot-links{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.75rem}
.ltbot-link{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .7rem;border:1.5px solid var(--ink);background:var(--ink);color:var(--paper);font-family:var(--mono);font-size:.76rem;font-weight:600;letter-spacing:.02em;line-height:1.25;text-decoration:none;transition:background .12s ease,border-color .12s ease}
.ltbot-link:hover{background:var(--pink);border-color:var(--pink)}
.ltbot-link svg{width:12px;height:12px}
.ltbot-link.ltbot-busy{animation:ltbot-pulse 1.4s ease-in-out infinite}
.ltbot-chips{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.4rem;margin-top:.9rem}
.ltbot-hint{flex-basis:100%;font-family:var(--mono);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:rgba(20,22,31,.6)}
.ltbot .ltbot-chip{padding:.45rem .7rem;border:1.5px solid var(--ink);background:var(--paper);font-size:.84rem;font-weight:600;line-height:1.3;text-align:left;transition:background .12s ease,color .12s ease}
.ltbot .ltbot-chip:hover{background:var(--ink);color:var(--paper)}

/* the box you type in */
.ltbot-form{flex:none;display:flex;align-items:center;gap:.4rem;padding:.65rem;border-top:1.5px solid var(--ink);background:var(--paper)}
.ltbot .ltbot-round{flex:none;display:grid;place-items:center;width:42px;height:42px;border:1.5px solid var(--ink);transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease}
.ltbot .ltbot-round:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:2px 2px 0 var(--ink)}
.ltbot .ltbot-round:disabled{opacity:.4}
.ltbot .ltbot-mic{background:#fff}
.ltbot .ltbot-mic.ltbot-on{background:var(--pink);color:#fff;animation:ltbot-ring 1.4s ease-in-out infinite}
@keyframes ltbot-ring{0%,100%{box-shadow:0 0 0 0 rgba(225,16,123,.5)}50%{box-shadow:0 0 0 6px rgba(225,16,123,0)}}
.ltbot-mic svg{width:19px;height:19px}
.ltbot-mic.ltbot-on svg{width:14px;height:14px}
.ltbot .ltbot-send{background:var(--pink);color:#fff}
.ltbot-send svg{width:15px;height:15px}
.ltbot-input{flex:1;min-width:0;height:42px;padding:0 .75rem;border:1.5px solid var(--ink);background:#fff;font:400 16px/1.2 var(--sans);color:var(--ink)}
.ltbot-input::placeholder{color:rgba(20,22,31,.55);opacity:1}
.ltbot-input:focus{outline:none;box-shadow:2px 2px 0 var(--pink)}
.ltbot-input:disabled{opacity:.6}

/* phone: the button is the round mark alone, the panel nearly fills the screen */
@media(max-width:560px){
  .ltbot{right:14px;bottom:14px}
  .ltbot.ltbot-open{right:8px;bottom:8px}
  .ltbot .ltbot-fab{padding:.7rem}
  .ltbot-fab-tx{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .ltbot-panel{width:calc(100vw - 16px);height:min(640px,calc(100vh - 16px));height:min(640px,calc(100dvh - 16px))}
}
@media(prefers-reduced-motion:reduce){
  .ltbot-panel,.ltbot-live,.ltbot-wait span,.ltbot-link.ltbot-busy,.ltbot .ltbot-mic.ltbot-on{animation:none}
  .ltbot .ltbot-fab:hover,.ltbot .ltbot-round:hover:not(:disabled),.ltbot .ltbot-film:hover,.ltbot .ltbot-lead-go:hover:not(:disabled){transform:none}
}

/* ---- FIELD PLATES ----------------------------------------------------
   The site's diagram system. The frame, grid paper and plate reference are
   drawn inside the SVG itself, so the artwork survives being saved, shared
   or opened on its own. Everything below is only the mount: a hard offset
   shadow in the brand's stamp idiom, and a mono caption hung off a pink
   rule. The rule sits beside the caption, never across the drawing. */
.plate{margin:2.6rem 0;max-width:900px}
.plate img{
  width:100%;height:auto;display:block;
  filter:drop-shadow(6px 6px 0 rgba(20,22,31,.15));
}
.plate-cap{
  font-family:var(--mono);font-size:.74rem;line-height:1.6;
  letter-spacing:.015em;opacity:.72;max-width:70ch;
  margin-top:1.1rem;padding-left:1rem;border-left:2px solid var(--pink);
}
.dark .plate img{filter:drop-shadow(6px 6px 0 rgba(247,244,238,.13))}
.dark .plate-cap{opacity:.82}
/* inside a two-column split the plate is a full-width row underneath, never
   a squeezed thumbnail in one column */
.split > .plate{grid-column:1/-1}
.plate + .plate{margin-top:3.2rem}
.plate-hint{display:none}
@media(max-width:720px){
  .plate{margin:1.8rem 0}
  .plate img{filter:drop-shadow(4px 4px 0 rgba(20,22,31,.15))}
  .plate-cap{font-size:.7rem;padding-left:.75rem}
  /* phones: the drawing stays 760px wide, so its smallest text is about
     9px, and the strip swipes sideways instead of shrinking it to 3px */
  .plate-scroll{overflow-x:auto;overscroll-behavior-x:contain;padding:0 6px 6px 0}
  .plate-scroll img{width:760px;max-width:none}
  .plate-hint{
    display:flex;align-items:center;gap:.4rem;margin-bottom:.6rem;
    font-family:var(--mono);font-size:.7rem;font-weight:600;letter-spacing:.1em;
    text-transform:uppercase;color:var(--pink-deep);
  }
  .dark .plate-hint{color:var(--paper)}
}
@media print{.plate img{filter:none}}

