/* LocoLink tutorials V2 (2026-09-30): visual library, railway route, cinematic player.
   This file also loads on every public page (nav link + tutorial teaser), so the
   library styles are scoped to .tutorials-page / .tt-* classes. */

/* Shared on all pages: navigation and the tutorial teaser (integrate-tutorial-links.js) */
.nav-links .lang-btn { color:var(--text-secondary); }
.tutorial-home-link { text-align:center; margin:0; }
.tutorial-home-link .tutorial-inline-link { margin-top:10px; }
.tutorial-teaser [hidden] { display:none !important; }
.tutorial-teaser { border-top:1px solid var(--border-light); padding:60px 0; }
.tutorial-teaser-grid { display:grid; grid-template-columns:1fr .88fr; align-items:center; gap:60px; }
.tutorial-teaser .tutorial-eyebrow { color:var(--accent); text-transform:uppercase; letter-spacing:2px; font-size:11px; font-weight:800; margin-bottom:16px; }
.tutorial-teaser h2 { font-size:clamp(28px,3.5vw,42px); letter-spacing:-1.5px; line-height:1.15; margin-bottom:17px; }
.tutorial-teaser p:not(.tutorial-eyebrow) { font-size:15px; line-height:1.8; color:var(--text-secondary); margin-bottom:24px; }
.tutorial-teaser-visual { position:relative; display:block; border-radius:18px; overflow:hidden; border:1px solid var(--border-light); box-shadow:var(--shadow-md); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s; }
.tutorial-teaser-visual:hover { transform:translateY(-4px); box-shadow:0 26px 60px -24px rgba(245,158,11,.55); }
.tutorial-teaser-visual img { width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; display:block; }
.tutorial-teaser-visual > span { position:absolute; bottom:18px; right:18px; background:linear-gradient(135deg,#f59e0b,#f97316); color:#1a1204; padding:9px 15px; border-radius:100px; font-weight:800; font-size:12px; box-shadow:0 8px 24px rgba(245,158,11,.4); }
.tutorial-inline-link { display:inline-flex; align-items:center; gap:9px; color:var(--accent); font-size:13px; font-weight:650; margin-top:14px; }
@media (min-width:641px) and (max-width:1120px) { nav .container { gap:12px; padding-inline:18px; } .nav-links { gap:1px; } .nav-links a { padding-inline:8px; font-size:12px; } .nav-logo-byline { font-size:9px; } .lang-btn { padding-inline:2px; font-size:16px; } }
@media (min-width:641px) and (max-width:860px) { nav .container { flex-wrap:wrap; justify-content:center; } .nav-logo { margin-right:auto; } .nav-links { justify-content:center; flex-wrap:wrap; } nav .nav-links { width:100%; } }
@media (max-width:960px) { .tutorial-teaser-grid { gap:30px; } }
@media (max-width:700px) { .tutorial-teaser-grid { grid-template-columns:1fr; } .tutorial-teaser-visual { max-width:600px; } }
@media (max-width:640px) { .tutorial-teaser { padding:45px 0; } }

/* Tokens */
.tutorials-page { --tt-accent-text:#b45309; --tt-glass:rgba(255,255,255,.8); --tt-rail:#c9c9d6; --tt-sleeper:rgba(17,17,24,.16); --tt-card-shadow:0 24px 60px -34px rgba(24,24,60,.35); }
[data-theme="dark"] .tutorials-page { --tt-accent-text:#fbbf24; --tt-glass:rgba(24,24,36,.74); --tt-rail:#3a3a4c; --tt-sleeper:rgba(255,255,255,.12); --tt-card-shadow:0 24px 60px -30px rgba(0,0,0,.7); }
.tutorials-page [data-group="all"] { --ch:#f59e0b; }
.tutorials-page [data-group="start"] { --ch:#f59e0b; }
.tutorials-page [data-group="drive"] { --ch:#3b82f6; }
.tutorials-page [data-group="layout"] { --ch:#10b981; }
.tutorials-page [data-group="automation"] { --ch:#8b5cf6; }
.tutorials-page [data-group="decoder"] { --ch:#ec4899; }
.tutorials-page [hidden] { display:none !important; }
.tutorials-page svg { flex:none; }
.tutorial-skip { position:fixed; top:-70px; left:24px; z-index:2000; padding:12px 18px; background:var(--accent); color:#111; border-radius:10px; font-weight:700; }
.tutorial-skip:focus { top:12px; }
.tutorials-page :is(button,a):focus-visible { outline:3px solid var(--accent); outline-offset:4px; }
.tt-wrap { max-width:1180px; margin:0 auto; padding:0 var(--v5-gap,24px); }
.tt-cdot { display:inline-block; width:9px; height:9px; border-radius:50%; background:var(--ch,#f59e0b); flex:none; }
.tutorials-page [data-group="all"] .tt-cdot { background:conic-gradient(#f59e0b 0 20%,#3b82f6 0 40%,#10b981 0 60%,#8b5cf6 0 80%,#ec4899 0); }
.tt-head { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:20px; }
.tt-head h2 { margin:0; font-size:clamp(26px,3vw,36px); font-weight:900; letter-spacing:-.035em; line-height:1.08; color:var(--text-primary); }

/* Hero */
.tt-hero { position:relative; isolation:isolate; padding:136px 0 40px; text-align:center; overflow-x:clip; }
.tt-hero::before { content:""; position:absolute; inset:-10% -10% auto; height:1100px; z-index:-1; pointer-events:none;
  background:radial-gradient(38% 36% at 50% 16%,rgba(245,158,11,.22),transparent 70%),radial-gradient(26% 32% at 12% 58%,rgba(59,130,246,.16),transparent 70%),radial-gradient(26% 32% at 88% 58%,rgba(139,92,246,.18),transparent 70%); filter:blur(10px); }
.tt-hero h1 { text-wrap:balance; margin:26px auto 20px; font-size:clamp(46px,7.8vw,104px); line-height:.97; letter-spacing:-.048em; font-weight:900; color:var(--text-primary); }
.tt-hero h1 span { display:block; padding-bottom:.08em; background:linear-gradient(95deg,var(--v5-amber,#f59e0b) 10%,var(--v5-amber-2,#fbbf24) 55%,#fde68a); -webkit-background-clip:text; background-clip:text; color:transparent; }
.tt-lead { max-width:32em; margin:0 auto; text-wrap:balance; font-size:clamp(17px,1.7vw,21px); line-height:1.5; color:var(--text-secondary); }
.tt-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:14px; margin-top:34px; }
.tt-cta { min-height:58px; padding:0 30px; font-size:17px; }
.tt-cta svg { width:20px; height:20px; }
.tt-lang { display:inline-flex; align-items:center; gap:3px; padding:5px; border-radius:999px; background:var(--tt-glass); border:1px solid var(--v5-glass-border); box-shadow:0 10px 30px -18px rgba(20,20,50,.35); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); }
.tt-lang > svg { width:18px; height:18px; margin:0 6px 0 10px; color:var(--text-muted); }
.tt-lang button { padding:11px 16px; border:0; border-radius:999px; background:transparent; color:var(--text-secondary); font:inherit; font-size:14px; font-weight:750; cursor:pointer; transition:background .2s,color .2s,box-shadow .2s; }
.tt-lang button:hover { color:var(--text-primary); }
.tt-lang button[aria-checked="true"] { background:var(--bg-card); color:var(--text-primary); box-shadow:0 0 0 1px var(--border-light),0 4px 14px rgba(0,0,0,.12); }

/* Hero stage: the featured lesson with the next two tilted behind it */
.tt-stage { position:relative; max-width:1180px; margin:66px auto 0; padding:0 var(--v5-gap,24px) 26px; perspective:1800px; }
.tt-screen { position:relative; z-index:2; display:block; width:min(760px,64%); margin:0 auto; border-radius:18px; overflow:hidden; background:#0b0b12; color:#fff; text-decoration:none;
  box-shadow:0 0 0 1px rgba(255,255,255,.1),0 0 0 9px rgba(255,255,255,.05),0 60px 110px -30px rgba(14,12,40,.6),0 40px 140px -40px rgba(245,158,11,.6); transition:transform .4s cubic-bezier(.2,.8,.2,1); }
.tt-screen:hover { transform:translateY(-6px); }
.tt-screen-bar { display:flex; align-items:center; gap:8px; height:40px; padding:0 14px 0 16px; background:linear-gradient(#23232f,#191922); border-bottom:1px solid rgba(255,255,255,.06); font-size:13px; font-weight:700; color:#b8b8ca; text-align:left; }
.tt-screen-bar i { width:12px; height:12px; border-radius:50%; background:#ff5f57; flex:none; }
.tt-screen-bar i:nth-child(2) { background:#febc2e; }
.tt-screen-bar i:nth-child(3) { background:#28c840; }
#featured-label { min-width:0; margin-left:10px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.tt-screen-time { margin-left:auto; padding:3px 10px; border-radius:999px; background:rgba(255,255,255,.08); font-variant-numeric:tabular-nums; }
.tt-screen-img { position:relative; display:block; }
.tt-screen-img img { display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; }
.tt-bigplay { position:absolute; left:5%; bottom:8%; width:84px; height:84px; display:grid; place-items:center; border-radius:50%; background:linear-gradient(135deg,#f59e0b,#f97316); color:#1a1204; box-shadow:0 16px 46px rgba(245,158,11,.6),inset 0 1px 0 rgba(255,255,255,.45); transition:transform .3s cubic-bezier(.2,.8,.2,1); }
.tt-bigplay svg { width:34px; height:34px; margin-left:5px; }
.tt-bigplay::before { content:""; position:absolute; inset:-12px; border-radius:50%; border:2px solid rgba(251,191,36,.6); animation:tt-pulse 2.4s ease-out infinite; }
.tt-screen:hover .tt-bigplay { transform:scale(1.08); }
.tt-side { position:absolute; z-index:1; top:calc(50% - 13px); width:40%; border-radius:16px; overflow:hidden; background:#0b0b12; box-shadow:0 30px 70px -24px rgba(10,10,30,.55); transition:transform .5s cubic-bezier(.2,.8,.2,1),filter .3s; filter:brightness(.8) saturate(.9); }
.tt-side img { display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; }
.tt-side-l { left:var(--v5-gap,24px); transform:translateY(-50%) rotateY(22deg) scale(.82); transform-origin:left center; }
.tt-side-r { right:var(--v5-gap,24px); transform:translateY(-50%) rotateY(-22deg) scale(.82); transform-origin:right center; }
.tt-side-l:hover { transform:translateY(-50%) rotateY(14deg) scale(.85); filter:none; }
.tt-side-r:hover { transform:translateY(-50%) rotateY(-14deg) scale(.85); filter:none; }
.tt-float { position:absolute; z-index:3; display:inline-flex; align-items:center; gap:8px; padding:11px 17px; border-radius:999px; background:var(--tt-glass); border:1px solid var(--v5-glass-border); box-shadow:0 16px 36px -14px rgba(20,20,50,.35); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); color:var(--text-secondary); font-size:14px; font-weight:600; white-space:nowrap; animation:tt-float 6s ease-in-out infinite; }
.tt-float b { color:var(--text-primary); font-weight:850; font-variant-numeric:tabular-nums; }
.tt-float svg { width:18px; height:18px; color:#f59e0b; }
.tt-float-a { left:calc(var(--v5-gap,24px) + 6%); top:4%; }
.tt-float-b { right:calc(var(--v5-gap,24px) + 5%); bottom:13%; animation-delay:-2s; }
.tt-float-c { right:calc(var(--v5-gap,24px) + 7%); top:16%; animation-delay:-4s; }
.tt-float-b svg { color:#8b5cf6; }
.tt-float-c svg { color:#3b82f6; }
@keyframes tt-pulse { 0% { transform:scale(.86); opacity:1; } 100% { transform:scale(1.4); opacity:0; } }
@keyframes tt-float { 50% { transform:translateY(-8px); } }

/* Route: ten stations on a railway line, the train waits at the next lesson */
.tt-route-section { padding:78px 0 0; }
.tt-route-card { padding:30px 34px 26px; border-radius:28px; background:var(--bg-card); border:1px solid var(--border-light); box-shadow:var(--tt-card-shadow); }
.tt-route-card .tt-head { margin-bottom:6px; }
.tt-progress { display:inline-flex; align-items:center; gap:10px; font-size:14px; font-weight:600; color:var(--text-secondary); }
.tt-progress b { color:var(--text-primary); font-variant-numeric:tabular-nums; }
.tt-ring { width:26px; height:26px; border-radius:50%; background:conic-gradient(#f59e0b calc(var(--p,0) * 1%),var(--border-light) 0); -webkit-mask:radial-gradient(circle,transparent 7.5px,#000 8.5px); mask:radial-gradient(circle,transparent 7.5px,#000 8.5px); }
.tt-route-scroll { margin:0 -12px; padding:0 12px; }
.tt-line { position:relative; --at:0; padding-top:50px; }
.tt-rails { position:absolute; left:5%; right:5%; top:64px; height:13px; border-block:3px solid var(--tt-rail); background:repeating-linear-gradient(90deg,var(--tt-sleeper) 0 4px,transparent 4px 15px); border-radius:2px; }
.tt-rails-lit { position:absolute; left:0; top:-3px; bottom:-3px; width:calc(var(--at) / 9 * 100%); border-block:3px solid #f59e0b; background:repeating-linear-gradient(90deg,rgba(245,158,11,.5) 0 4px,transparent 4px 15px); box-shadow:0 0 18px rgba(245,158,11,.35); transition:width .8s cubic-bezier(.3,.9,.3,1); }
.tt-train { position:absolute; z-index:3; top:0; left:calc(5% + var(--at) * 10%); width:42px; height:42px; margin-left:-21px; transition:left .8s cubic-bezier(.3,.9,.3,1); animation:tt-bob 1.8s ease-in-out infinite; }
.tt-train img { display:block; width:100%; height:100%; border-radius:12px; box-shadow:0 8px 20px rgba(245,158,11,.45),0 0 0 2px var(--bg-card); }
.tt-train::after { content:""; position:absolute; left:50%; bottom:-6px; margin-left:-5px; border:5px solid transparent; border-top-color:#f59e0b; border-bottom:0; }
.tt-line.is-complete .tt-train::after { display:none; }
@keyframes tt-bob { 50% { transform:translateY(-3px); } }
.tt-stops { position:relative; z-index:2; display:grid; grid-template-columns:repeat(10,minmax(0,1fr)); margin:0; padding:0; list-style:none; }
.tt-stop a { position:relative; display:flex; flex-direction:column; align-items:center; gap:11px; padding:0 2px 4px; color:var(--text-secondary); text-decoration:none; }
.tt-dot { position:relative; display:grid; place-items:center; width:42px; height:42px; border-radius:50%; border:3px solid var(--ch); background:color-mix(in srgb,var(--ch) 14%,var(--bg-card)); color:color-mix(in srgb,var(--ch) 62%,var(--text-primary)); font-size:15px; font-weight:900; transition:transform .25s cubic-bezier(.2,.8,.2,1),background .25s,box-shadow .25s; }
.tt-dot svg { display:none; width:20px; height:20px; }
.tt-stop.is-watched .tt-dot { background:var(--ch); color:#fff; }
.tt-stop.is-watched .tt-dot b { display:none; }
.tt-stop.is-watched .tt-dot svg { display:block; }
.tt-stop.is-next .tt-dot { box-shadow:0 0 0 7px color-mix(in srgb,var(--ch) 22%,transparent); }
.tt-stop a:hover .tt-dot, .tt-stop a:focus-visible .tt-dot { transform:scale(1.14); }
.tt-stop-name { max-width:11ch; font-size:13px; font-weight:750; line-height:1.25; text-align:center; transition:color .2s; }
.tt-stop.is-next .tt-stop-name, .tt-stop a:hover .tt-stop-name { color:var(--text-primary); }
.tt-peek { position:absolute; z-index:6; bottom:calc(100% + 4px); left:50%; width:210px; border-radius:12px; overflow:hidden; background:#0b0b12; box-shadow:0 22px 44px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.12); opacity:0; pointer-events:none; transform:translate(-50%,10px) scale(.95); transition:opacity .2s,transform .25s cubic-bezier(.2,.8,.2,1); }
.tt-peek img { display:block; width:100%; height:auto; }
.tt-stop a:hover .tt-peek, .tt-stop a:focus-visible .tt-peek { opacity:1; transform:translate(-50%,0) scale(1); }
.tt-stop:first-child .tt-peek { left:0; transform:translate(0,10px) scale(.95); }
.tt-stop:first-child a:hover .tt-peek, .tt-stop:first-child a:focus-visible .tt-peek { transform:translate(0,0) scale(1); }
.tt-stop:last-child .tt-peek { left:auto; right:0; transform:translate(0,10px) scale(.95); }
.tt-stop:last-child a:hover .tt-peek, .tt-stop:last-child a:focus-visible .tt-peek { transform:translate(0,0) scale(1); }

/* Library */
.tt-library { padding:96px 0 30px; scroll-margin-top:80px; }
.tt-head-library { flex-wrap:wrap; align-items:flex-end; margin-bottom:30px; }
.tt-chips { display:flex; flex-wrap:wrap; gap:8px; }
.tt-chips button { display:inline-flex; align-items:center; gap:8px; padding:10px 16px; border:1px solid var(--border-light); border-radius:999px; background:var(--bg-card); color:var(--text-secondary); font:inherit; font-size:14px; font-weight:700; cursor:pointer; white-space:nowrap; transition:color .18s,border-color .18s,background .18s,transform .18s; }
.tt-chips button:hover { color:var(--text-primary); border-color:var(--ch); transform:translateY(-1px); }
.tt-chips button[aria-pressed="true"] { background:var(--text-primary); color:var(--bg-primary); border-color:transparent; }
.tutorials-page .tutorial-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:38px 26px; }
.tutorials-page .lesson-card { min-width:0; }
.tutorials-page .lesson-open { display:block; color:inherit; text-decoration:none; }
.tutorials-page .lesson-art { position:relative; overflow:hidden; border-radius:18px; background:#0d1426; box-shadow:0 0 0 1px var(--border-light),0 16px 36px -22px rgba(15,15,40,.55); transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s; }
.tutorials-page .lesson-art img { display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; transition:transform .6s cubic-bezier(.2,.8,.2,1),filter .3s; }
.tutorials-page .lesson-open:hover .lesson-art { transform:translateY(-6px); box-shadow:0 0 0 2px var(--ch),0 30px 56px -24px color-mix(in srgb,var(--ch) 70%,transparent); }
.tutorials-page .lesson-open:hover .lesson-art img { transform:scale(1.045); }
.tutorials-page .lesson-play { position:absolute; left:50%; top:50%; width:60px; height:60px; margin:-30px 0 0 -30px; display:grid; place-items:center; border-radius:50%; background:rgba(255,255,255,.95); color:#14141e; box-shadow:0 12px 30px rgba(0,0,0,.4); opacity:0; transform:scale(.75); transition:opacity .25s,transform .3s cubic-bezier(.2,.8,.2,1); }
.tutorials-page .lesson-play svg { width:24px; height:24px; margin-left:3px; }
.tutorials-page .lesson-open:hover .lesson-play, .tutorials-page .lesson-open:focus-visible .lesson-play { opacity:1; transform:scale(1); }
.tutorials-page .lesson-duration { position:absolute; right:10px; bottom:10px; padding:3px 8px; border-radius:7px; background:rgba(8,10,20,.84); color:#fff; font-size:12px; font-weight:800; font-variant-numeric:tabular-nums; }
.tutorials-page .lesson-flag { position:absolute; top:10px; right:10px; display:inline-flex; align-items:center; gap:5px; padding:5px 11px; border-radius:999px; background:linear-gradient(135deg,#f59e0b,#f97316); color:#1a1204; font-size:12px; font-weight:850; box-shadow:0 6px 18px rgba(0,0,0,.3); }
.tutorials-page .lesson-flag.is-seen { background:#10b981; color:#fff; }
.tutorials-page .lesson-flag svg { width:14px; height:14px; }
.tutorials-page .lesson-card.is-watched .lesson-art img { filter:saturate(.7) brightness(.78); }
.tutorials-page .lesson-card.is-next .lesson-art { box-shadow:0 0 0 3px #f59e0b,0 24px 50px -22px rgba(245,158,11,.75); }
.tutorials-page .lesson-body { padding:17px 4px 0; }
.tutorials-page .lesson-body h3 { margin:0 0 7px; font-size:18px; font-weight:800; letter-spacing:-.02em; line-height:1.3; color:var(--text-primary); }
.tutorials-page .lesson-meta { display:inline-flex; align-items:center; gap:8px; font-size:13px; font-weight:650; color:var(--text-secondary); }
.tutorials-page .lesson-card.is-entering { animation:tt-in .4s cubic-bezier(.2,.8,.2,1) both; }
@keyframes tt-in { from { opacity:0; transform:translateY(12px); } }
.tt-privacy { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:8px 16px; margin:52px 0 0; font-size:13px; color:var(--text-muted); }
.tt-privacy svg { width:15px; height:15px; margin-right:-8px; }
.tt-privacy a { color:var(--text-secondary); font-weight:700; text-underline-offset:4px; }

/* Shorts (appear once published) */
.tt-shorts { padding:84px 0 0; }
.tt-shorts .tt-head { align-items:flex-end; }
.tt-shorts .tt-head p { margin:8px 0 0; font-size:15px; color:var(--text-secondary); }
.tt-more { color:var(--tt-accent-text); font-size:14px; font-weight:750; text-decoration:none; white-space:nowrap; }
.tt-short-row { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(168px,1fr); gap:20px; overflow-x:auto; padding:8px 4px 18px; scroll-snap-type:x mandatory; scrollbar-width:thin; }
.tt-short { scroll-snap-align:start; color:var(--text-primary); text-decoration:none; }
.tt-short-img { position:relative; display:block; margin:6px; overflow:hidden; border-radius:26px; background:#000; box-shadow:0 0 0 5px #0b0b12,0 0 0 6.5px rgba(255,255,255,.14),0 24px 44px -18px rgba(0,0,0,.5); }
.tt-short-img img { display:block; width:100%; height:auto; aspect-ratio:9/16; object-fit:cover; transition:transform .5s; }
.tt-short:hover .tt-short-img img { transform:scale(1.05); }
.tt-short-play { position:absolute; left:50%; top:50%; width:50px; height:50px; margin:-25px 0 0 -25px; display:grid; place-items:center; border-radius:50%; background:rgba(255,255,255,.92); color:#111; }
.tt-short-play svg { width:20px; height:20px; margin-left:2px; }
.tt-short strong { display:block; margin:14px 6px 0; font-size:14px; font-weight:750; line-height:1.4; }

/* Closing card */
.tt-ready { padding:104px 0 116px; }
.tt-ready-card { position:relative; isolation:isolate; display:grid; grid-template-columns:1.15fr .85fr; align-items:center; gap:30px; overflow:hidden; padding:64px 0 0 64px; border-radius:34px; color:#f5f5fa;
  background:radial-gradient(55% 85% at 88% 18%,rgba(139,92,246,.42),transparent 62%),radial-gradient(48% 75% at 6% 108%,rgba(245,158,11,.36),transparent 62%),linear-gradient(135deg,#12121d,#1c1732); box-shadow:0 44px 100px -46px rgba(20,15,60,.75); }
.tt-ready-copy { padding-bottom:64px; }
.tt-ready-icon { display:block; width:74px; height:74px; border-radius:19px; box-shadow:0 14px 34px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.12); }
.tt-ready h2 { margin:26px 0 14px; font-size:clamp(32px,3.8vw,50px); font-weight:900; letter-spacing:-.04em; line-height:1.04; color:#fff; }
.tt-ready p { margin:0 0 32px; font-size:18px; line-height:1.5; color:rgba(255,255,255,.72); }
.tt-ready-actions { display:flex; flex-wrap:wrap; gap:12px; }
.tt-btn-glass { background:rgba(255,255,255,.1); color:#fff; border:1px solid rgba(255,255,255,.18); cursor:pointer; font:inherit; font-weight:800; }
.tt-btn-glass:hover { background:rgba(255,255,255,.17); transform:translateY(-2px); }
.tt-btn-glass svg { width:18px; height:18px; }
.tt-ready-devices { position:relative; align-self:stretch; min-height:400px; }
.tt-ready-devices .dev-phone { position:absolute; width:214px; }
.tt-phone-a { right:14%; bottom:-150px; transform:rotate(7deg); }
.tt-phone-b { right:46%; bottom:-190px; transform:rotate(-9deg); opacity:.95; }

/* Player */
.tt-dialog { width:min(1060px,calc(100% - 32px),max(560px,calc((100dvh - 350px) * 16 / 9))); max-height:calc(100dvh - 32px); margin:auto; padding:0; overflow-y:auto; border:1px solid rgba(255,255,255,.08); border-radius:24px; background:#0e0f18; color:#f0f0f5; box-shadow:0 40px 120px rgba(0,0,0,.6); }
.tt-dialog[open] { animation:tt-pop .3s cubic-bezier(.2,.9,.3,1.1); }
.tt-dialog::backdrop { background:rgba(5,6,14,.84); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); }
@keyframes tt-pop { from { opacity:0; transform:translateY(18px) scale(.98); } }
.tt-dialog-top { display:flex; align-items:center; gap:16px; padding:12px 14px 12px 22px; }
.tt-chip { display:inline-flex; align-items:center; gap:9px; margin:0; font-size:13px; font-weight:800; white-space:nowrap; color:var(--text-primary); }
.tt-chip span { color:var(--text-secondary); font-weight:600; }
.tt-dialog .tt-chip { color:#fff; }
.tt-dialog .tt-chip span { color:#9a9aae; }
.tt-dots { display:flex; gap:6px; margin-left:auto; }
.tt-dots button { width:22px; height:6px; padding:0; border:0; border-radius:99px; background:rgba(255,255,255,.14); cursor:pointer; transition:width .25s,background .25s; }
.tt-dots button.is-watched { background:color-mix(in srgb,var(--ch) 65%,transparent); }
.tt-dots button.is-current { width:36px; background:var(--ch); }
.tt-dots button:hover { background:rgba(255,255,255,.45); }
.tt-icon-btn { display:grid; place-items:center; width:40px; height:40px; border:0; border-radius:12px; background:rgba(255,255,255,.07); color:#fff; cursor:pointer; transition:background .2s; }
.tt-icon-btn:hover { background:rgba(255,255,255,.14); }
.tt-icon-btn svg { width:20px; height:20px; }
.tt-player { position:relative; aspect-ratio:16/9; background:#000; }
.tt-player-frame, .tt-player-frame iframe { position:absolute; inset:0; display:block; width:100%; height:100%; border:0; }
.tt-endcard { position:absolute; inset:0; z-index:2; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; padding:24px; text-align:center; background:linear-gradient(rgba(8,8,16,.7),rgba(8,8,16,.88)),var(--next,none) center/cover; animation:tt-in .35s ease both; }
.tt-endcard-check { display:grid; place-items:center; width:64px; height:64px; border-radius:50%; background:#10b981; color:#fff; box-shadow:0 0 0 10px rgba(16,185,129,.2); }
.tt-endcard-check svg { width:32px; height:32px; }
.tt-endcard strong { font-size:clamp(20px,2.4vw,28px); font-weight:850; letter-spacing:-.02em; }
.tt-endcard-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:12px; margin-top:8px; }
.tt-endcard-actions .v5-btn { border:0; cursor:pointer; font:inherit; font-weight:800; }
.tt-endcard-actions .tt-btn-glass { border:1px solid rgba(255,255,255,.18); }
.tt-dialog-body { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; padding:24px 26px 6px; }
.tt-dialog-body h2:focus { outline:none; }
.tt-dialog-body h2 { margin:0 0 8px; font-size:clamp(22px,2.4vw,28px); font-weight:850; letter-spacing:-.025em; line-height:1.2; color:#fff; }
.tt-dialog-body p { max-width:580px; margin:0; font-size:15px; line-height:1.55; color:#a4a4b8; }
.tt-dialog-tools { display:flex; flex:none; gap:10px; }
.tt-dialog-tools button, .tt-dialog-tools a { display:inline-flex; align-items:center; gap:8px; height:42px; padding:0 17px; border:1px solid rgba(255,255,255,.14); border-radius:999px; background:rgba(255,255,255,.06); color:#fff; font:inherit; font-size:14px; font-weight:750; text-decoration:none; cursor:pointer; transition:background .2s,border-color .2s; }
.tt-dialog-tools button:hover, .tt-dialog-tools a:hover { background:rgba(255,255,255,.12); }
.tt-dialog-tools svg { width:16px; height:16px; }
#player-watched[aria-pressed="true"] { background:#10b981; border-color:#10b981; }
.tt-dialog-nav { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 26px 22px; }
.tt-prev { display:inline-flex; align-items:center; gap:8px; height:44px; padding:0 18px; border:1px solid rgba(255,255,255,.12); border-radius:999px; background:transparent; color:#d8d8e4; font:inherit; font-size:14px; font-weight:700; cursor:pointer; }
.tt-prev svg { width:18px; height:18px; }
.tt-prev:hover:not(:disabled) { background:rgba(255,255,255,.08); }
.tt-prev:disabled { opacity:.3; cursor:default; }
.tt-next { display:flex; align-items:center; gap:14px; max-width:440px; margin-left:auto; padding:8px 18px 8px 8px; border:1px solid rgba(255,255,255,.12); border-radius:18px; background:rgba(255,255,255,.05); color:#fff; font:inherit; text-align:left; cursor:pointer; transition:background .2s,border-color .2s,transform .2s; }
.tt-next:hover { background:rgba(255,255,255,.1); border-color:var(--ch); transform:translateX(3px); }
.tt-next img { flex:none; width:118px; height:auto; aspect-ratio:16/9; object-fit:cover; border-radius:11px; }
.tt-next small { display:block; margin-bottom:3px; color:var(--ch); font-size:11.5px; font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.tt-next strong { font-size:15px; line-height:1.3; }
.tt-next > svg { width:20px; height:20px; }

/* Watch pages: one lesson per page, same visual language */
.tt-watch { padding:128px 0 96px; }
.tt-watch-wrap { max-width:1120px; }
.tutorial-watch-back { display:inline-flex; align-items:center; gap:8px; font-size:14px; font-weight:700; color:var(--text-secondary); text-decoration:none; }
.tutorial-watch-back svg { width:17px; height:17px; }
.tutorial-watch-back:hover { color:var(--text-primary); }
.tutorial-watch-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:32px; margin:30px 0 28px; }
.tutorial-watch-heading h1 { margin:14px 0 12px; font-size:clamp(32px,4.4vw,54px); font-weight:900; letter-spacing:-.04em; line-height:1.05; color:var(--text-primary); }
.tt-watch-summary { max-width:620px; margin:0; font-size:17px; line-height:1.55; color:var(--text-secondary); }
.tutorial-watch-languages { display:flex; flex-shrink:0; gap:3px; padding:5px; border-radius:999px; background:var(--tt-glass); border:1px solid var(--v5-glass-border); }
.tutorial-watch-languages a { padding:9px 14px; border-radius:999px; color:var(--text-secondary); font-size:13px; font-weight:750; text-decoration:none; }
.tutorial-watch-languages a:hover { color:var(--text-primary); }
.tutorial-watch-languages a[aria-current] { background:var(--bg-card); color:var(--text-primary); box-shadow:0 0 0 1px var(--border-light),0 4px 14px rgba(0,0,0,.1); }
.tutorial-watch-player { overflow:hidden; aspect-ratio:16/9; border-radius:22px; background:#080d1b; box-shadow:0 0 0 1px rgba(255,255,255,.08),0 0 0 9px rgba(255,255,255,.05),0 50px 100px -40px rgba(14,12,40,.6),0 40px 130px -50px color-mix(in srgb,var(--ch,#f59e0b) 80%,transparent); }
.tutorial-watch-player iframe { display:block; width:100%; height:100%; border:0; }
.tt-mini { position:relative; display:grid; grid-template-columns:repeat(10,minmax(0,1fr)); margin:36px 0 0; padding:0; list-style:none; }
.tt-mini::before { content:""; position:absolute; left:5%; right:5%; top:50%; height:8px; margin-top:-4px; border-block:2px solid var(--tt-rail); background:repeating-linear-gradient(90deg,var(--tt-sleeper) 0 3px,transparent 3px 11px); }
.tt-mini li { position:relative; display:flex; justify-content:center; }
.tt-mini a { display:grid; place-items:center; width:30px; height:30px; border-radius:50%; border:2.5px solid var(--ch); background:color-mix(in srgb,var(--ch) 14%,var(--bg-card)); color:color-mix(in srgb,var(--ch) 62%,var(--text-primary)); font-size:12px; font-weight:900; text-decoration:none; transition:transform .2s; }
.tt-mini a:hover { transform:scale(1.15); }
.tt-mini a[aria-current] { width:40px; height:40px; background:var(--ch); color:#fff; font-size:14px; box-shadow:0 0 0 6px color-mix(in srgb,var(--ch) 22%,transparent); }
.tt-watch-nav { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:18px; margin-top:34px; }
.tt-watch-card { display:flex; align-items:center; gap:14px; min-width:0; padding:8px; border:1px solid var(--border-light); border-radius:18px; background:var(--bg-card); color:var(--text-primary); text-decoration:none; transition:transform .2s,border-color .2s,box-shadow .2s; }
.tt-watch-card:hover { border-color:var(--ch); box-shadow:0 18px 40px -24px color-mix(in srgb,var(--ch) 70%,transparent); }
.tt-watch-card img { flex:none; width:120px; height:auto; aspect-ratio:16/9; object-fit:cover; border-radius:11px; }
.tt-watch-card span { min-width:0; }
.tt-watch-card small { display:block; margin-bottom:3px; color:var(--text-secondary); font-size:12px; font-weight:750; }
.tt-watch-card strong { display:block; font-size:15px; line-height:1.3; }
.tt-watch-prev:hover { transform:translateX(-3px); }
.tt-watch-next { flex-direction:row-reverse; text-align:right; }
.tt-watch-next:hover { transform:translateX(3px); }
.tt-watch-youtube { display:inline-flex; align-items:center; gap:8px; color:var(--text-secondary); font-size:14px; font-weight:750; text-decoration:none; white-space:nowrap; }
.tt-watch-youtube svg { width:16px; height:16px; }
.tt-watch-youtube:hover { color:var(--text-primary); }

/* Responsive */
@media (max-width:1080px) {
  .tt-screen { width:min(760px,68%); }
  .tt-side { width:38%; }
}
@media (max-width:900px) {
  .tt-route-scroll { overflow-x:auto; overflow-y:hidden; scrollbar-width:none; -webkit-overflow-scrolling:touch; -webkit-mask:linear-gradient(90deg,transparent,#000 22px,#000 calc(100% - 22px),transparent); mask:linear-gradient(90deg,transparent,#000 22px,#000 calc(100% - 22px),transparent); }
  .tt-route-scroll::-webkit-scrollbar { display:none; }
  .tt-line { width:860px; }
  .tt-peek { display:none; }
  .tutorials-page .tutorial-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 20px; }
  .tt-ready-card { grid-template-columns:1fr; padding:48px 40px 0; }
  .tt-ready-copy { padding-bottom:0; }
  .tt-ready-devices { min-height:300px; }
  .tt-phone-a { right:18%; bottom:-230px; }
  .tt-phone-b { right:auto; left:18%; bottom:-260px; }
  .tt-dialog-body { flex-direction:column; gap:18px; }
  .tutorial-watch-heading { flex-direction:column; align-items:flex-start; gap:22px; }
}
@media (max-width:700px) {
  .tt-hero { padding:118px 0 18px; }
  .tt-hero h1 { margin-top:22px; }
  .tt-stage { display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin-top:44px; padding-bottom:0; perspective:none; }
  .tt-screen { flex-basis:100%; width:100%; margin-bottom:14px; }
  .tt-side { display:none; }
  .tt-float { position:static; gap:6px; padding:8px 11px; font-size:12.5px; animation:none; box-shadow:none; }
  .tt-float svg { width:15px; height:15px; }
  .tt-stage { gap:6px; }
  .tt-bigplay { width:60px; height:60px; }
  .tt-bigplay svg { width:24px; height:24px; margin-left:3px; }
  .tt-bigplay::before { inset:-8px; }
  .tt-route-section { padding-top:56px; }
  .tt-route-card { padding:22px 18px 18px; border-radius:22px; }
  .tt-library { padding-top:70px; }
  .tt-chips { flex-wrap:nowrap; overflow-x:auto; margin:0 calc(var(--v5-gap,20px) * -1); padding:2px var(--v5-gap,20px) 6px; scrollbar-width:none; }
  .tt-chips::-webkit-scrollbar { display:none; }
  .tt-head-library { gap:16px; }
  .tt-watch { padding-top:112px; }
  .tt-watch-nav { grid-template-columns:1fr 1fr; }
  .tt-watch-youtube { grid-column:1 / -1; grid-row:2; justify-self:center; }
  .tt-watch-card img { width:84px; }
  .tt-mini a { width:24px; height:24px; font-size:10px; border-width:2px; }
  .tt-mini a[aria-current] { width:32px; height:32px; font-size:12px; }
}
@media (max-width:640px) {
  .tt-hero { padding-top:112px; }
  .tt-hero h1 { font-size:clamp(40px,12vw,56px); }
  .tt-lead { font-size:17px; }
  .tt-actions { flex-direction:column; gap:12px; }
  .tt-cta { width:100%; max-width:360px; justify-content:center; }
  .tt-lang button { padding:10px 13px; font-size:13.5px; }
  .tt-screen-bar { height:34px; font-size:12px; }
  .tt-screen-bar i { width:10px; height:10px; }
  .tt-head h2 { font-size:26px; }
  .tutorials-page .tutorial-grid { grid-template-columns:1fr; gap:14px; }
  .tutorials-page .lesson-open { display:grid; grid-template-columns:46% minmax(0,1fr); align-items:center; gap:14px; }
  .tutorials-page .lesson-art { border-radius:13px; }
  .tutorials-page .lesson-body { padding:0; }
  .tutorials-page .lesson-body h3 { margin-bottom:6px; font-size:15.5px; }
  .tutorials-page .lesson-meta { font-size:12px; gap:6px; }
  .tutorials-page .lesson-play { display:none; }
  .tutorials-page .lesson-duration { right:6px; bottom:6px; padding:2px 6px; font-size:11px; }
  .tutorials-page .lesson-flag { top:6px; right:6px; padding:3px 8px; font-size:10.5px; }
  .tutorials-page .lesson-open:hover .lesson-art { transform:none; }
  .tt-privacy { margin-top:36px; }
  .tt-shorts { padding-top:64px; }
  .tt-shorts .tt-head { flex-direction:column; align-items:flex-start; gap:10px; }
  .tt-short-row { grid-auto-columns:150px; gap:12px; margin:0 calc(var(--v5-gap,20px) * -1); padding-inline:var(--v5-gap,20px); }
  .tt-ready { padding:76px 0 84px; }
  .tt-ready-card { padding:38px 24px 0; border-radius:26px; }
  .tt-ready-icon { width:62px; height:62px; border-radius:16px; }
  .tt-ready p { font-size:16px; }
  .tt-ready-actions .v5-btn { flex:1 1 auto; justify-content:center; }
  .tt-ready-devices { min-height:230px; }
  .tt-ready-devices .dev-phone { width:150px; }
  .tt-phone-a { right:10%; bottom:-150px; }
  .tt-phone-b { left:10%; bottom:-175px; }
  .tt-dialog { width:calc(100% - 12px); max-height:calc(100dvh - 12px); border-radius:18px; }
  .tt-dialog-top { gap:10px; padding:8px 8px 8px 16px; }
  .tt-dialog .tt-chip span { display:none; }
  .tt-dots { gap:4px; }
  .tt-dots button { width:12px; height:5px; }
  .tt-dots button.is-current { width:22px; }
  .tt-dialog-body { padding:18px 18px 4px; }
  .tt-dialog-body p { font-size:14px; }
  .tt-dialog-tools { flex-wrap:wrap; }
  .tt-dialog-nav { padding:14px 18px 18px; gap:10px; }
  .tt-prev { width:44px; padding:0; justify-content:center; flex:none; }
  .tt-prev span { display:none; }
  .tt-next { flex:1; min-width:0; padding-right:12px; }
  .tt-next img { width:88px; }
  .tt-next strong { font-size:14px; }
  .tutorial-watch-player { border-radius:14px; }
  .tt-watch-card { padding:6px; border-radius:14px; }
  .tt-watch-card img { display:none; }
  .tt-watch-card strong { font-size:13.5px; }
  .tt-watch-summary { font-size:15.5px; }
}
@media (hover:none) {
  .tt-peek { display:none; }
}
@media (prefers-reduced-motion:reduce) {
  .tutorials-page *, .tutorials-page *::before, .tutorials-page *::after, .tutorial-teaser * { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
}
