/* Trivup — client story tickets. Namespaced .tvs-*; inherits site tokens when present. */
.tvs{--t-ink:var(--ink,#0D2545);--t-muted:var(--muted,#57709A);--t-bg:var(--bg,#F2F6FC);--t-surface:var(--surface,#fff);--t-line:var(--line,#D8E2F0);--t-brand:var(--brand,#1A4E96);--t-accent:var(--accent,#E2700C);
  --t-display:var(--display,"Bricolage Grotesque","Public Sans",system-ui,sans-serif);--t-body:var(--body,"Public Sans",system-ui,sans-serif);--t-mono:var(--mono,"IBM Plex Mono",ui-monospace,monospace);
  padding-block:72px;color:var(--t-ink);font-family:var(--t-body);overflow:hidden}
.tvs *,.tvs *::before,.tvs *::after{box-sizing:border-box}
.tvs-in{max-width:1240px;margin:0 auto;padding-inline:26px}
.tvs-top{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:34px}
/* .tvs-scoped, so a page rule like `.pg p{margin:0}` (six trivup.com pages) cannot take the spacing away */
.tvs .tvs-eyebrow{font:600 11px/1 var(--t-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--t-accent);margin:0 0 14px}
.tvs h2{font:800 clamp(32px,4.4vw,52px)/1.02 var(--t-display);letter-spacing:-.025em;margin:0;max-width:14ch}
.tvs h2 em{font-style:normal;color:var(--t-brand);text-decoration:underline;text-decoration-color:var(--t-accent);text-decoration-thickness:5px;text-underline-offset:7px}

.tvs .tvs-lede{color:var(--t-muted);font-size:16px;line-height:1.55;max-width:46ch;margin:16px 0 0}
.tvs-ctrl{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tvs-chips{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--t-line);border-radius:999px;background:var(--t-surface)}
.tvs-chip{font:600 13px/1 var(--t-body);color:var(--t-muted);background:none;border:0;border-radius:999px;padding:9px 14px;cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.tvs-chip i{width:9px;height:9px;border-radius:50%;background:var(--c,var(--t-ink))}
.tvs-chip[aria-pressed="true"]{background:var(--t-ink);color:var(--t-surface)}
.tvs-arrows{display:flex;gap:8px}
.tvs-arrow{width:42px;height:42px;border-radius:50%;border:1px solid var(--t-line);background:var(--t-surface);color:var(--t-ink);display:grid;place-items:center;cursor:pointer}
.tvs-arrow:disabled{opacity:.35;cursor:default}
.tvs-arrow svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* rail */
.tvs-rail{--g:max(26px,calc(50vw - 594px));display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--g);padding:16px var(--g) 60px;margin:0 calc(50% - 50vw) -30px;scrollbar-width:none}
.tvs-rail::-webkit-scrollbar{display:none}
.tvs-rail>[hidden]{display:none}
/* data-player="only" (stories.js): only the video player is kept; the tickets are never shown, so their photos never load */
.tvs.tvs-player-only{padding:0;height:0;border:0;background:none}
.tvs-player-only>:not(.tvs-modal){display:none}
/* dragging with a mouse (stories.js): no snapping while the hand moves it, a hand cursor where a mouse is used */
@media (hover:hover) and (pointer:fine){.tvs-rail{cursor:grab}}
.tvs-rail.tvs-dragging{scroll-snap-type:none;scroll-behavior:auto;cursor:grabbing;user-select:none;-webkit-user-select:none}
.tvs-rail.tvs-dragging .tvs-card{cursor:grabbing}

/* ticket */
.tvs-card{--lc:#1A4E96;--lc2:#123A73;--stamp:#E2700C;--notch:11px;--stub:78px;
  flex:0 0 auto;width:320px;aspect-ratio:9/16;scroll-snap-align:start;position:relative;display:flex;flex-direction:column;
  text-decoration:none;color:var(--t-ink);cursor:pointer;filter:drop-shadow(0 18px 26px rgba(13,37,69,.22)) drop-shadow(0 2px 3px rgba(13,37,69,.12));
  transition:transform .45s cubic-bezier(.2,.8,.2,1),filter .45s;outline:none}
.tvs-card[data-line="f"]{--lc:#E2700C;--lc2:#B95A07}
.tvs-card[data-line="g"]{--lc:#A8781E;--lc2:#7E5710}
.tvs-card[data-line="v"]{--lc:#0E6F79;--lc2:#094F57}
.tvs-body{flex:1;display:flex;flex-direction:column;padding:12px 12px 14px;border-radius:22px 22px 6px 6px;position:relative;overflow:hidden;
  background:
    radial-gradient(120% 60% at 100% 0%,color-mix(in srgb,var(--lc) 7%,transparent),transparent 62%),
    var(--t-surface);
  -webkit-mask:radial-gradient(circle var(--notch) at 0 100%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% 100%,#0000 98%,#000) right/51% 100% no-repeat;
          mask:radial-gradient(circle var(--notch) at 0 100%,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% 100%,#0000 98%,#000) right/51% 100% no-repeat}
.tvs-head{display:flex;align-items:center;gap:8px;height:30px;padding:0 2px 0 0;font:600 10px/1 var(--t-mono);letter-spacing:.12em;text-transform:uppercase}
.tvs-badge{width:26px;height:26px;border-radius:50%;background:var(--lc);color:#fff;display:grid;place-items:center;font:800 14px/1 var(--t-display);letter-spacing:0;flex:none}
.tvs-lname{flex:1;color:var(--t-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvs-no{color:var(--t-muted);opacity:.8;letter-spacing:.06em}
.tvs-pw{position:relative;flex:1;min-height:0;margin-top:10px;display:flex}
.tvs-photo{position:relative;flex:1;min-height:0;border-radius:14px;overflow:hidden;background:var(--t-line);isolation:isolate}
.tvs-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 22%);transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.tvs-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.0) 55%,rgba(0,0,0,.42));pointer-events:none}
.tvs-dur{position:absolute;top:10px;left:10px;z-index:2;font:600 10.5px/1 var(--t-mono);letter-spacing:.06em;color:#fff;background:rgba(8,20,40,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:6px 8px;border-radius:999px}
.tvs-play{position:absolute;left:12px;bottom:12px;z-index:2;width:54px;height:54px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 6px 18px rgba(0,0,0,.28);transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.tvs-play::before{content:"";position:absolute;inset:-7px;border-radius:50%;border:2px solid rgba(255,255,255,.7);opacity:0;transform:scale(.85);transition:.35s}
.tvs-play svg{width:20px;height:20px;margin-left:3px;fill:var(--lc)}
.tvs-stamp{position:absolute;right:-10px;bottom:-12px;z-index:3;width:118px;height:118px;color:var(--stamp);transform:rotate(-14deg);opacity:.95;transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
.tvs-stamp text{font-family:var(--t-mono);font-weight:600}
.tvs-route{position:relative;margin:14px 4px 0;height:34px}
.tvs-route::before{content:"";position:absolute;left:5px;right:7px;top:5px;height:2px;background:var(--t-line)}
.tvs-route ol{list-style:none;margin:0;padding:0;display:flex;justify-content:space-between;position:relative}
.tvs-route li{margin:0;padding:0;display:flex;flex-direction:column;align-items:center;gap:7px;font:600 8.5px/1 var(--t-mono);letter-spacing:.08em;color:var(--t-muted)}
.tvs-route li::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--t-line);box-shadow:0 0 0 2px var(--t-surface)}
.tvs-route li:first-child{align-items:flex-start}
.tvs-route li:last-child{align-items:flex-end;color:var(--t-ink)}
.tvs-route li:last-child::before{width:14px;height:14px;margin-top:-1px;background:var(--lc);border:3.5px solid var(--t-surface);box-shadow:0 0 0 4px color-mix(in srgb,var(--lc) 18%,transparent)}
.tvs-who{margin:12px 4px 0;min-height:82px;display:flex;flex-direction:column;justify-content:flex-end}
.tvs-name{font:800 29px/.96 var(--t-display);letter-spacing:-.02em;margin:0}
.tvs-name span{display:block}
.tvs-role{font:500 13px/1.3 var(--t-body);color:var(--t-muted);margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* stub */
.tvs-stub{height:var(--stub);flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 16px;color:var(--t-ink);border-radius:6px 6px 20px 20px;position:relative;
  background:var(--t-surface) padding-box;transform-origin:92% 0;transition:transform .5s cubic-bezier(.2,.8,.2,1);
  -webkit-mask:radial-gradient(circle var(--notch) at 0 0,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% 0,#0000 98%,#000) right/51% 100% no-repeat;
          mask:radial-gradient(circle var(--notch) at 0 0,#0000 98%,#000) left/51% 100% no-repeat,radial-gradient(circle var(--notch) at 100% 0,#0000 98%,#000) right/51% 100% no-repeat}
.tvs-stub::before{content:"";position:absolute;left:calc(var(--notch) + 6px);right:calc(var(--notch) + 6px);top:-1px;border-top:2px dashed var(--t-line)}
.tvs-watch{display:flex;flex-direction:column;gap:6px;min-width:0}
.tvs-watch small{font:600 9.5px/1 var(--t-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--t-muted)}
.tvs-watch b{font:800 17px/1 var(--t-display);letter-spacing:-.01em;display:flex;align-items:center;gap:7px;white-space:nowrap}
.tvs-watch b svg{width:18px;height:18px;flex:none;fill:var(--lc)}
.tvs-bar{height:40px;width:92px;flex:none;color:var(--t-ink)}

/* interaction */
@media (hover:hover){
  .tvs-card:hover{transform:translateY(-6px) rotate(-.6deg);filter:drop-shadow(0 28px 34px rgba(13,37,69,.3)) drop-shadow(0 3px 4px rgba(13,37,69,.14))}
  .tvs-card:hover .tvs-photo img{transform:scale(1.06)}
  .tvs-card:hover .tvs-stub{transform:translateY(5px) rotate(3.2deg)}
  .tvs-card:hover .tvs-stamp{transform:rotate(-4deg) scale(1.06)}
  .tvs-card:hover .tvs-play{transform:scale(1.08)}
  .tvs-card:hover .tvs-play::before{opacity:1;transform:scale(1);animation:tvs-pulse 1.4s ease-out infinite}
}
.tvs-card:focus-visible{outline:3px solid var(--t-accent);outline-offset:4px;border-radius:22px}
@keyframes tvs-pulse{0%{transform:scale(.9);opacity:.9}100%{transform:scale(1.5);opacity:0}}
@media (prefers-reduced-motion:reduce){.tvs-card,.tvs-card *{transition:none!important;animation:none!important}}
@media (max-width:640px){.tvs{padding-block:56px}.tvs-in{padding-inline:16px}.tvs-rail{--g:16px;gap:14px}.tvs-card{width:min(78vw,300px)}.tvs-arrows{display:none}.tvs-chips{overflow-x:auto;max-width:100%}}

/* lightbox */
.tvs-modal{border:0;padding:0;background:transparent;max-width:none;max-height:none;width:100%;height:100%;color:#fff;font-family:var(--t-body)}
.tvs-modal::backdrop{background:rgba(5,12,26,.82);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.tvs-mwrap{height:100%;display:flex;align-items:center;justify-content:center;gap:34px;padding:24px}
.tvs-player{height:min(86vh,780px);aspect-ratio:9/16;border-radius:20px;overflow:hidden;background:#000;box-shadow:0 30px 80px rgba(0,0,0,.5);flex:none;max-width:calc(100vw - 48px)}
.tvs-player iframe{width:100%;height:100%;border:0;display:block}
.tvs-info{width:320px;display:flex;flex-direction:column;gap:14px}
.tvs-info .tvs-head{color:#fff}
.tvs-modal .tvs-info h3{font:800 40px/1 var(--t-display);letter-spacing:-.025em;margin:0;color:#fff}
.tvs-modal .tvs-info p{margin:0;color:rgba(255,255,255,.75);line-height:1.55;font-size:15px}
.tvs-go{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;background:var(--t-accent);color:#fff;text-decoration:none;font:700 15px/1 var(--t-body);padding:14px 18px;border-radius:12px;margin-top:6px}
.tvs-mnav{display:flex;gap:8px;margin-top:10px}
.tvs-mnav button,.tvs-close{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;display:grid;place-items:center;cursor:pointer}
.tvs-mnav svg,.tvs-close svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round}
.tvs-close{position:fixed;top:18px;right:18px;z-index:2}
@media (max-width:860px){.tvs-info{display:none}.tvs-player{height:auto;width:min(100%,calc((100vh - 90px) * 9 / 16))}}
