/* QuickTurn full-screen opening (from Ryan's ChatGPT handoff, quickturn-intro.css).
   Palette aligned to the site: #111310 -> #0A0A0A, #f5f5ed -> #FFF, greenish greys -> neutral #A3A3A3 / #4A4A4A / #1C1C1C. */
.qt-intro{position:fixed;inset:0;z-index:9999;background:#0A0A0A;color:#FFFFFF;overflow:hidden;font-family:var(--sans,"Inter Tight",Arial,Helvetica,sans-serif);isolation:isolate}
.qt-intro[hidden]{display:none}
.qt-intro:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 42%,#1C1C1C 0,transparent 65%);pointer-events:none}
.qt-center{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:40px 18px 70px}
.qt-symbol{width:clamp(70px,9vw,112px);height:clamp(70px,9vw,112px);margin-bottom:25px;overflow:visible}
.qt-symbol-line{stroke-dasharray:1;stroke-dashoffset:0}
.qt-wordmark{display:flex;justify-content:center;align-items:baseline;white-space:nowrap;font-size:clamp(54px,14.4vw,210px);font-weight:500;line-height:1.14;letter-spacing:-.085em;padding-right:.08em}
.qt-word-mask{display:block;overflow:hidden;padding:0 .04em .1em;margin:0 -.04em}
.qt-word-mask>span{display:block;transform-origin:0 100%}
.qt-turn{color:#A3A3A3}.qt-period{color:#FFFFFF;margin-left:.03em}
.qt-descriptor{font-family:var(--mono,monospace);font-size:clamp(10px,1.1vw,14px);letter-spacing:.65em;margin-top:24px;margin-left:.65em;color:#A3A3A3}
.qt-corner{position:absolute;font-family:var(--mono,monospace);font-size:10px;letter-spacing:1.6px;color:#A3A3A3;z-index:1}
.qt-corner-top{top:max(36px,env(safe-area-inset-top));left:4.2vw}
.qt-corner-bottom{left:4.2vw;right:4.2vw;bottom:max(36px,env(safe-area-inset-bottom));display:flex;justify-content:space-between;gap:20px;line-height:1.7}
.qt-skip{position:absolute;right:4.2vw;top:max(22px,env(safe-area-inset-top));z-index:3;border:1px solid #4A4A4A;color:#FFFFFF;background:transparent;border-radius:30px;min-height:44px;padding:10px 18px;font:500 12px/1 var(--sans,"Inter Tight",Arial,sans-serif);letter-spacing:.01em;display:flex;gap:24px;align-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background var(--ix-base,250ms) var(--ix-ease,ease),color var(--ix-base,250ms) var(--ix-ease,ease),border-color var(--ix-base,250ms) var(--ix-ease,ease),transform var(--ix-fast,150ms) var(--ix-ease,ease)}
.qt-skip span{display:inline-block;transition:transform var(--ix-base,250ms) var(--ix-ease,ease)}
.qt-skip:focus-visible{border-color:#A3A3A3}
@media(hover:hover){.qt-skip:hover{background:#FFFFFF;color:#0A0A0A;border-color:#FFFFFF}.qt-skip:hover span{transform:translate(2px,-2px)}}
.qt-skip:active{transform:scale(.97)}
.qt-skip:focus-visible{outline:1.5px solid #FFFFFF;outline-offset:5px;border-radius:30px}
.qt-opening-line{position:absolute;left:0;top:50%;height:1px;width:100%;background:linear-gradient(90deg,transparent,#FFFFFF,transparent);transform-origin:left;opacity:0}
.qt-timeline{position:absolute;bottom:0;left:0;right:0;height:2px;background:#FFFFFF;opacity:.55;transform-origin:left}
.qt-intro.is-playing{animation:qt-curtain 3200ms cubic-bezier(.76,0,.24,1) both}
.is-playing .qt-opening-line{animation:qt-flashline 700ms ease-out both}
.is-playing .qt-center{animation:qt-center-out 3200ms ease both}
.is-playing .qt-symbol{animation:qt-symbol-turn 1100ms 180ms cubic-bezier(.22,1,.36,1) both}
.is-playing .qt-symbol-line{animation:qt-draw 850ms 180ms cubic-bezier(.65,0,.25,1) both}
.is-playing .qt-symbol-tip{animation:qt-fade 300ms 650ms both}
.is-playing .qt-quick{animation:qt-word-in 850ms 420ms cubic-bezier(.22,1,.36,1) both}
.is-playing .qt-turn{animation:qt-turn-in 950ms 630ms cubic-bezier(.22,1,.36,1) both}
.is-playing .qt-period{animation:qt-fade 380ms 1200ms both}
.is-playing .qt-descriptor{animation:qt-descriptor-in 650ms 1100ms cubic-bezier(.22,1,.36,1) both}
.is-playing .qt-timeline{animation:qt-track 2650ms linear both}
@keyframes qt-curtain{0%,76%{clip-path:inset(0 0 0 0)}100%{clip-path:inset(0 0 100% 0)}}
@keyframes qt-center-out{0%,70%{opacity:1;transform:translateY(0)}89%,100%{opacity:0;transform:translateY(-45px)}}
@keyframes qt-word-in{from{transform:translateY(115%)}to{transform:translateY(0)}}
@keyframes qt-turn-in{from{transform:translateY(120%) rotate(18deg)}to{transform:translateY(0) rotate(0)}}
@keyframes qt-symbol-turn{from{transform:rotate(-150deg);opacity:0}30%{opacity:1}to{transform:rotate(0);opacity:1}}
@keyframes qt-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes qt-fade{from{opacity:0}to{opacity:1}}
@keyframes qt-descriptor-in{from{opacity:0;transform:translateY(10px);letter-spacing:.95em}to{opacity:1;transform:translateY(0);letter-spacing:.65em}}
@keyframes qt-flashline{0%{transform:scaleX(0);opacity:0}30%{opacity:.65}65%{transform:scaleX(1);opacity:.25}100%{opacity:0;transform:scaleX(1)}}
@keyframes qt-track{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-width:600px){.qt-corner-top{font-size:8px;letter-spacing:1px;left:22px;top:38px}.qt-skip{right:22px;gap:12px}.qt-corner-bottom{left:22px;right:22px;font-size:8px;flex-direction:column;gap:5px}.qt-center{padding-bottom:50px}.qt-symbol{margin-bottom:20px}.qt-descriptor{margin-top:17px}}
@media(prefers-reduced-motion:reduce){.qt-intro{display:none!important}.qt-intro *{animation:none!important}}

/* Pre-paint cover: an inline head script adds .qt-pending when the intro will play, so the site never flashes before it. */
html.qt-pending .qt-intro[hidden]{display:block}
html.qt-pending .qt-intro[hidden]>*{visibility:hidden}
@media(prefers-reduced-motion:reduce){html.qt-pending .qt-intro[hidden]{display:none!important}}
