/* ============ FX · livello "Apple" (animazioni, cursore, profondità) ============
   Tutte le animazioni sono attivate solo con html.fx (JS attivo e nessun prefers-reduced-motion):
   senza, il sito resta statico e perfettamente leggibile. */
:root{--ease:cubic-bezier(.16,1,.3,1);--ease2:cubic-bezier(.65,0,.35,1)}
html{scroll-behavior:auto}
::selection{background:var(--accent);color:#fff}

/* ---- barra di avanzamento ---- */
#progress{position:fixed;left:0;top:0;height:2px;width:100%;z-index:80;transform-origin:left;transform:scaleX(0);background:linear-gradient(90deg,#ff7a1a,#ffb27a);pointer-events:none}

/* ---- HERO: scritta gigante + due battiti ---- */
.hero{height:280vh;min-height:0;padding:0;display:block;position:relative;overflow:visible}
.hero-pin{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:96px 24px 40px;gap:16px;
  background:radial-gradient(90% 70% at 50% 45%,#141417,#09090a 62%,#050506)}
.hero-bg{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.hero-bg .blob{position:absolute;border-radius:50%;opacity:.55}
.hero-bg .b1{width:46vw;height:46vw;left:-10vw;top:-12vw;background:radial-gradient(closest-side,rgba(255,122,26,.40),transparent);animation:drift1 16s ease-in-out infinite alternate}
.hero-bg .b2{width:40vw;height:40vw;right:-8vw;bottom:-14vw;background:radial-gradient(closest-side,rgba(255,170,90,.26),transparent);animation:drift2 19s ease-in-out infinite alternate}
@keyframes drift1{to{transform:translate(12vw,10vw) scale(1.2)}}
@keyframes drift2{to{transform:translate(-10vw,-8vw) scale(1.15)}}
.hero-flash{position:absolute;left:73%;top:48%;width:56vw;height:34vw;max-height:60vh;transform:translate(-50%,-50%);background:radial-gradient(closest-side,rgba(255,110,10,.55),transparent);opacity:0}
.hero.lit .hero-flash{opacity:1}
.hero-title{position:relative;z-index:2;font-size:clamp(44px,13.4vw,214px);font-weight:800;letter-spacing:-.045em;line-height:.95;white-space:nowrap;margin:0;
  color:#f5f5f7;transition:none}
/* "luce accesa": acceso/spento netto, nessuna sfumatura */
.hero-title .off{display:inline-block}
.hero-title.lit .off{color:#ff7a1a;
  text-shadow:0 0 6px rgba(255,150,60,.95),0 0 28px rgba(255,122,26,.9),0 0 80px rgba(255,100,0,.7),0 0 180px rgba(255,90,0,.5)}
.hero-sub,.hero-text,.hero .cta-row{position:relative;z-index:2}
.hero-sub{font-size:clamp(18px,2.6vw,32px);color:#d8d8dd}
.hero-cue{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);margin:0;z-index:2}

/* ---- tipografia: rivelazione parola per parola ---- */
.sw{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
.swi{display:inline-block}
html.fx .reveal-words .swi{transform:translateY(112%);transition:transform 1.05s var(--ease);transition-delay:calc(var(--i) * 55ms)}
html.fx .reveal-words.in .swi{transform:none}
html.fx .scrubline .sw{overflow:visible}
html.fx .scrubline .swi{opacity:.16;transition:opacity .25s linear}
h2{letter-spacing:-.03em}
section>h2,.inner>h2{font-size:clamp(34px,5.6vw,76px);line-height:1.04;font-weight:800}
.eyebrow{display:inline-flex;align-items:center;gap:8px;letter-spacing:.14em;text-transform:uppercase;font-size:12px}
.eyebrow::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 rgba(255,122,26,.6);animation:ping 2.4s infinite}
@keyframes ping{70%{box-shadow:0 0 0 9px rgba(255,122,26,0)}100%{box-shadow:0 0 0 0 rgba(255,122,26,0)}}
.model-title .eyebrow::before{display:none}
.big-line{font-size:clamp(30px,5.6vw,72px);letter-spacing:-.035em}

/* ---- rivelazioni generiche ---- */
html.fx .reveal,html.fx .reveal-photo,html.fx .seq{opacity:1;transform:none;filter:none}
html.fx .rv{opacity:0;transform:translateY(46px) scale(.985);filter:blur(6px);transition:opacity 1s var(--ease),transform 1s var(--ease),filter .9s var(--ease);transition-delay:calc(var(--i,0) * 80ms)}
html.fx .rv.in{opacity:1;transform:none;filter:none}
html.fx .rv-img{clip-path:inset(0 0 70% 0 round 22px);transform:scale(1.12);opacity:1;filter:none;transition:clip-path 1.3s var(--ease),transform 1.6s var(--ease);transition-delay:calc(var(--i,0) * 80ms)}
html.fx .rv-img.in{clip-path:inset(0 0 0 0 round 22px);transform:none}

/* ---- sezioni ---- */
#progetto{position:relative;max-width:none;padding:150px max(24px,calc((100vw - 1120px)/2)) 120px;background:linear-gradient(#fff,#f5f5f7)}
#progetto .lede{font-size:clamp(17px,1.6vw,21px);max-width:760px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:40px}
.stat{padding:30px 26px;border-radius:28px;background:#fff;border:1px solid var(--line);box-shadow:0 20px 60px -30px rgba(0,0,0,.18);transition:transform .6s var(--ease),box-shadow .6s}
.stat:hover{transform:translateY(-6px);box-shadow:0 30px 70px -28px rgba(255,122,26,.35)}
.stat b{display:block;font-family:'Sora',sans-serif;font-size:clamp(56px,8vw,112px);line-height:1;letter-spacing:-.05em;font-weight:800;background:linear-gradient(135deg,#ff7a1a,#ffb27a 70%);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat span{display:block;margin-top:10px;color:var(--ink-soft);font-size:15px}

.ticker{overflow:hidden;max-width:none;padding:34px 0;border-block:1px solid rgba(255,255,255,.08);background:#050506}
.ticker-track{display:flex;gap:56px;width:max-content;animation:tick 38s linear infinite;font-family:'Sora',sans-serif;font-weight:800;font-size:clamp(40px,7vw,96px);letter-spacing:-.04em;white-space:nowrap}
.ticker-track span{color:transparent;-webkit-text-stroke:1.5px rgba(255,255,255,.55)}
.ticker-track span:nth-child(3n+1){-webkit-text-stroke-color:var(--accent);color:rgba(255,122,26,.12)}
.ticker-track span::after{content:"•";margin-left:56px;color:var(--accent);-webkit-text-stroke:0}
@keyframes tick{to{transform:translateX(-50%)}}

.founder-sec{position:relative;overflow:hidden;padding:150px 24px}
.founder-sec::before{content:"";position:absolute;width:60vw;height:60vw;left:-20vw;top:-10vw;background:radial-gradient(closest-side,rgba(255,122,26,.22),transparent);filter:blur(30px);pointer-events:none}
.founder-photo{box-shadow:0 40px 120px -30px rgba(255,122,26,.45)}
.founder-text h2{font-size:clamp(36px,5vw,64px)}

#versioni{position:relative;max-width:none;padding:150px max(24px,calc((100vw - 1120px)/2)) 130px;background:linear-gradient(#fff,#f2f2f4)}
.models{gap:26px}
.card{border-radius:28px;padding:26px;background-color:#fff;box-shadow:0 24px 70px -34px rgba(0,0,0,.28);transition:transform .7s var(--ease),border-color .3s,box-shadow .6s}
.card:hover{transform:translateY(-8px);box-shadow:0 40px 90px -30px rgba(255,122,26,.38)}
.cover-img{height:250px;border-radius:20px}
.card.featured{border-color:transparent;background:linear-gradient(#fff,#fff) padding-box,conic-gradient(from var(--ang,0deg),#ff7a1a,#ffd0a8,#ff7a1a,#ffb27a,#ff7a1a) border-box;border:1.5px solid transparent;animation:spin 6s linear infinite}
@property --ang{syntax:'<angle>';inherits:false;initial-value:0deg}
@keyframes spin{to{--ang:360deg}}
.card .cta-link{display:inline-flex;gap:6px;transition:gap .3s var(--ease)}
.card:hover .cta-link{gap:12px}

#media{position:relative;max-width:none;padding:140px 24px;background:radial-gradient(80% 60% at 50% 0,#1a1a1e,#08080a);overflow:hidden}
#media .stage{box-shadow:0 50px 140px -40px rgba(255,122,26,.35);border:1px solid rgba(255,255,255,.1);border-radius:30px}
.dark .stage-idx button{color:#8c8c93}.dark .stage-idx button.on{color:#fff}

#stampa{max-width:none;padding:140px max(24px,calc((100vw - 1120px)/2));background:#fff}
.press a{border-radius:22px;background-color:#fff;box-shadow:0 20px 60px -34px rgba(0,0,0,.25)}

.btn{position:relative;overflow:hidden;padding:15px 30px;font-size:15px}
@keyframes sheen{0%,55%{left:-60%}100%{left:130%}}

footer.dark-foot{background:#050506;color:#8c8c93;border-top:1px solid rgba(255,255,255,.08);padding:80px 24px 44px;overflow:hidden}
.foot-mark{font-family:'Sora',sans-serif;font-weight:800;font-size:clamp(28px,12.4vw,230px);letter-spacing:-.05em;line-height:.9;margin:0 0 30px!important;white-space:nowrap;
  background:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,.02));-webkit-background-clip:text;background-clip:text;color:transparent;user-select:none}
.foot-links{display:flex;gap:26px;justify-content:center;margin:0 0 22px!important;font-size:14px}
.foot-links a{color:#d8d8dd}.foot-links a:hover{color:var(--accent)}

/* ---- pagine Beta / V1 / V2 ---- */
.page{background:#fff}
.phero{position:relative}
.phero:not(.phero-full){padding:150px 24px 0}
.phero::before{content:"";position:absolute;inset:-20% -10% auto;height:90%;background:radial-gradient(40% 50% at 30% 30%,rgba(255,122,26,.20),transparent 70%),radial-gradient(34% 40% at 75% 20%,rgba(255,170,90,.12),transparent 70%);pointer-events:none;animation:drift1 18s ease-in-out infinite alternate}
.phero>*{position:relative}
.phero h1{font-size:clamp(40px,9.6vw,150px);font-weight:800;letter-spacing:-.045em;line-height:.95;background:linear-gradient(180deg,#fff 30%,#a9a9b0);-webkit-background-clip:text;background-clip:text;color:transparent}
.phero .hero-sub{font-size:clamp(20px,2.8vw,34px);color:#e8e8ec}
.phero:not(.phero-full) .phero-img{width:min(1100px,92vw);border-radius:34px 34px 0 0;max-height:none;box-shadow:0 -30px 120px -30px rgba(255,122,26,.4);border:1px solid rgba(255,255,255,.12);border-bottom:0;margin-top:46px}
.phero-full{padding-bottom:70px}
.phero-full .phero-img{filter:drop-shadow(0 0 80px rgba(255,122,26,.18))}
/* timeline delle versioni (inserita da fx.js) */
.vline{position:sticky;top:52px;z-index:40;display:flex;justify-content:center;gap:6px;padding:12px 16px;background:rgba(10,10,11,.72);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border-bottom:1px solid rgba(255,255,255,.08);margin-top:-1px}
.vline a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 22px;border-radius:999px;color:#9a9aa2;font-family:'Sora',sans-serif;font-weight:700;font-size:14px;transition:color .3s,background .3s}
.vline a small{font:500 10.5px 'Inter',sans-serif;letter-spacing:.04em;opacity:.75}
.vline a:hover{color:#fff}
.vline a.on{color:#fff;background:linear-gradient(135deg,rgba(255,122,26,.95),rgba(255,150,70,.85));box-shadow:0 8px 30px -8px rgba(255,122,26,.8)}
.vline a.on small{opacity:.95}
@media(max-width:560px){.vline a{padding:7px 12px;font-size:12.5px}.vline a small{display:none}}
.page section:not(.dark):not(.alt){padding:130px 24px}
.page section.alt{padding:130px 24px;background:#f5f5f7}
.page section.dark{padding:140px 24px;background:radial-gradient(70% 60% at 50% 0,#17171b,#070708)}
.page .lede{font-size:clamp(17px,1.5vw,20px)}
.page section.reveal>.lede,.page section.reveal>p.lede{max-width:720px}
.ticks{grid-template-columns:repeat(2,1fr);gap:16px;counter-reset:t}
.ticks li{counter-increment:t;padding:28px 26px;border-radius:26px;background:#fff;border:1px solid var(--line);font-family:'Sora',sans-serif;font-weight:600;font-size:clamp(17px,1.7vw,21px);line-height:1.35;box-shadow:0 20px 60px -38px rgba(0,0,0,.3);transition:transform .6s var(--ease),box-shadow .5s}
.ticks li::before{content:counter(t,decimal-leading-zero);display:block;width:auto;height:auto;margin:0 0 14px;background:none;border-radius:0;font-size:13px;letter-spacing:.16em;color:var(--accent)}
.ticks li:hover{transform:translateY(-6px);box-shadow:0 30px 70px -30px rgba(255,122,26,.4)}
.words{font-size:clamp(34px,7vw,92px);font-weight:800;letter-spacing:-.04em;gap:24px;margin-top:20px}
.words span{background:linear-gradient(135deg,#232326,#6d6d73);-webkit-background-clip:text;background-clip:text;color:transparent}
.words span:last-of-type{background:linear-gradient(135deg,#ff7a1a,#ffb27a);-webkit-background-clip:text;background-clip:text}
.pair{gap:22px}.pair img{height:420px;border-radius:28px;box-shadow:0 30px 80px -36px rgba(0,0,0,.4)}
.center-sec .btn{margin-top:14px}
.page .alt .chips span{background:#fff}
.chips b{box-shadow:0 10px 36px -8px rgba(255,122,26,.7);animation:beat 2.2s ease-in-out infinite}
@keyframes beat{0%,100%{transform:scale(1)}12%{transform:scale(1.08)}24%{transform:scale(1)}36%{transform:scale(1.06)}48%{transform:scale(1)}}
.pipe li,.trio div,.points li,.plist li,.facts div{transition:transform .5s var(--ease),border-color .3s}
.pipe li{border-radius:18px;background-color:#fff}
.trio div{border-radius:26px;padding:28px;background-color:#fff;box-shadow:0 20px 60px -38px rgba(0,0,0,.3)}
.dark .pipe li,.dark .points li{background-color:rgba(255,255,255,.05)}
.pipe li:hover,.trio div:hover{transform:translateY(-5px)}
.acc details,#modules details{border:1px solid var(--line);border-radius:22px;padding:20px 24px;margin-bottom:12px;background-color:#fff;transition:box-shadow .4s,border-color .3s}
.dark .acc details,.dark #modules details{background-color:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12)}
.acc details[open],#modules details[open]{box-shadow:0 24px 60px -34px rgba(255,122,26,.5);border-color:rgba(255,122,26,.5)}
.acc summary,#modules summary{font-size:clamp(17px,1.6vw,21px)}
.mod{border-top:0;margin-bottom:16px;padding:40px 36px;border-radius:30px;background-color:#fff;border:1px solid var(--line);box-shadow:0 24px 70px -40px rgba(0,0,0,.3)}
.mod .num{font-size:clamp(48px,6vw,84px);letter-spacing:-.05em;background:linear-gradient(135deg,#ff7a1a,#ffb27a);-webkit-background-clip:text;background-clip:text;color:transparent}
.page .status{border-radius:18px}
.foot-fig img{box-shadow:0 40px 100px -40px rgba(61,220,132,.4)}
.facts div{transition:padding-left .4s var(--ease)}.facts div:hover{padding-left:12px}

/* ---- navbar: più "vetro" ---- */
nav.scrolled{background:rgba(255,255,255,.62);backdrop-filter:saturate(1.8) blur(22px);-webkit-backdrop-filter:saturate(1.8) blur(22px)}
.nav-links a{position:relative}
.nav-links>a:not(.dd-btn)::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:1.5px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease)}
.nav-links>a:hover::after{transform:scaleX(1)}

@media(max-width:820px){
  .stats{grid-template-columns:1fr}
  .ticks{grid-template-columns:1fr}
  .hero{height:240vh}
  .hero-title{font-size:clamp(40px,14.4vw,120px)}
  #progetto,#versioni,#stampa{padding-top:100px;padding-bottom:90px}
  #media,.founder-sec{padding-top:100px;padding-bottom:100px}
  .mod{padding:28px 20px}
  .pair img{height:240px}
}
@media (prefers-reduced-motion:reduce){
  .hero{height:auto}.hero-pin{position:relative;height:100svh}
  .hero-bg .blob,.ticker-track,.card.featured,.chips b,.eyebrow::before,.btn::after{animation:none!important}
  #progress{display:none}
}

/* ---- privacy / note legali ---- */
.skip{position:fixed;left:12px;top:-60px;z-index:400;background:#fff;color:#000;padding:10px 16px;border-radius:10px;font-weight:600;transition:top .2s}
.skip:focus{top:12px}
.noscript{margin:0;padding:12px 24px;background:#fff3e8;color:#6b3300;text-align:center;font-size:14px}
a.inl{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.page-legal .legal-hero{padding:150px 24px 70px}
.page-legal .legal-hero h1{font-size:clamp(44px,8vw,110px)}
.page-legal .legal-hero::before{height:120%}
.page-legal section.legal{max-width:780px;padding:90px 24px 120px}
.legal h2{font-size:clamp(22px,2.6vw,30px)!important;line-height:1.2!important;margin:46px 0 14px!important;letter-spacing:-.02em;font-weight:700}
.legal h2:first-child{margin-top:0!important}
.legal h3{font-size:17px;margin:22px 0 6px}
.legal p,.legal li{color:#3a3a40;line-height:1.75;font-size:16px}
.legal ul{padding-left:1.2em;margin:10px 0 16px}.legal li{margin-bottom:8px}
.legal .back{margin-top:50px}
.foot-links{flex-wrap:wrap}
.page-legal .legal-hero .hero-sub{font-size:clamp(15px,1.6vw,19px);max-width:640px;color:#b4b4ba}

.btn:not(.ghost)::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-20deg);animation:sheen 3.6s ease-in-out infinite}
.foot-note{max-width:760px;margin:14px auto 0!important;font-size:12px;line-height:1.6;color:#6f6f77}
/* accessibilità: focus visibile da tastiera */
a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid #ff7a1a;outline-offset:3px;border-radius:6px}
.ai-note{margin:22px auto 0;max-width:640px;text-align:center;font-size:12.5px;line-height:1.55;color:#8c8c93}

.foot-contact{text-align:center;margin:0 0 26px;font-size:12px;line-height:1.6;color:#8c8c93}
.foot-contact p{margin:0}.foot-contact small{font-size:11px;color:#6f6f77}
.foot-contact a{color:#d8d8dd;text-decoration:underline;text-underline-offset:2px}
.foot-contact a:hover,.foot-contact a:focus-visible{color:var(--accent)}

/* card "scopri di più": icona + e apertura fluida */
.acc summary,#modules summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px}
.acc summary::-webkit-details-marker,#modules summary::-webkit-details-marker{display:none}
.acc summary::after,#modules summary::after{content:"+";flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:20px;line-height:1;font-weight:400;color:#ff7a1a;border:1px solid rgba(255,122,26,.45);transition:transform .45s cubic-bezier(.2,.8,.2,1),background .3s,color .3s}
.acc details[open]>summary::after,#modules details[open]>summary::after{transform:rotate(135deg);background:#ff7a1a;color:#fff}
.acc details.is-anim,#modules details.is-anim{overflow:hidden;box-sizing:border-box}

html.i18n-wait body{opacity:0}
body{transition:opacity .25s}

/* ---- selettore lingua ---- */
.lang-sel{appearance:none;-webkit-appearance:none;font:600 12px 'Sora',sans-serif;letter-spacing:.06em;color:inherit;background:transparent;border:1px solid currentColor;border-radius:999px;padding:5px 24px 5px 11px;cursor:pointer;opacity:.85;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 13px) 55%,calc(100% - 9px) 55%;background-size:4px 4px;background-repeat:no-repeat}
.lang-sel:hover,.lang-sel:focus-visible{opacity:1;border-color:#ff7a1a}
.lang-sel option{color:#111;background:#fff}
html{hyphens:auto;-webkit-hyphens:auto}
h1,h2,.micro,.eyebrow,.foot-mark,.brand{hyphens:manual}
.lang-note{max-width:640px;margin-inline:auto;color:#b4b4ba}

/* ---- visualizzatore 3D esplorabile ---- */
.xp .lede{margin-bottom:28px}
.xp-wrap>*{min-width:0}
.xp-wrap{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:28px;align-items:stretch}
.xp-wrap.xp-solo{grid-template-columns:minmax(0,1fr)}
.xp-view{position:relative;min-width:0;height:clamp(440px,66vh,640px);border-radius:26px;overflow:hidden;background:radial-gradient(70% 60% at 50% 45%,rgba(255,122,26,.16),transparent 70%),#0d0d10;border:1px solid rgba(255,255,255,.12)}
.xp-solo .xp-view{height:clamp(360px,60vh,600px)}
.xp-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:pan-y;cursor:grab;outline:none}
.xp-canvas.grab{cursor:grabbing}
.xp-canvas:focus-visible{box-shadow:inset 0 0 0 2px #ff7a1a}
.xp-spots{position:absolute;inset:0;pointer-events:none}
.xp-spot{position:absolute;left:0;top:0;width:26px;height:26px;border-radius:50%;border:2px solid #ff7a1a;background:rgba(255,122,26,.25);pointer-events:auto;cursor:pointer;padding:0;transition:background .3s,box-shadow .3s,scale .3s}
.xp-spot::before{content:"";position:absolute;inset:-9px;border-radius:50%;border:1px solid rgba(255,122,26,.55);animation:xpPulse 2.2s ease-out infinite}
.xp-spot::after{content:attr(data-label);position:absolute;left:50%;bottom:calc(100% + 10px);translate:-50% 0;white-space:nowrap;font:600 11px 'Sora',sans-serif;letter-spacing:.06em;color:#fff;background:rgba(10,10,12,.85);padding:5px 10px;border-radius:8px;opacity:0;pointer-events:none;transition:opacity .25s}
.xp-spot:hover::after,.xp-spot:focus-visible::after,.xp-spot.on::after{opacity:1}
.xp-spot:hover,.xp-spot.on{background:#ff7a1a;box-shadow:0 0 0 6px rgba(255,122,26,.25),0 0 28px rgba(255,122,26,.7);scale:1.12}
.xp-spot:focus-visible{outline:2px solid #fff;outline-offset:3px}
@keyframes xpPulse{0%{transform:scale(.8);opacity:.9}100%{transform:scale(1.7);opacity:0}}
.xp-hint{position:absolute;left:18px;bottom:14px;margin:0;font-size:12px;color:#8c8c93;pointer-events:none;letter-spacing:.04em}
.xp-wrap.ready .xp-hint{opacity:.8}
.xp-tools{position:absolute;right:14px;bottom:14px;display:flex;gap:8px}
.xp-tools button{width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(10,10,12,.6);backdrop-filter:blur(8px);color:#fff;font-size:18px;line-height:1;cursor:pointer;transition:background .25s,border-color .25s}
.xp-tools button:hover,.xp-tools button:focus-visible{background:rgba(255,122,26,.3);border-color:#ff7a1a}
.xp-panel{display:flex;flex-direction:column;gap:18px;padding:26px;border-radius:26px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12)}
.xp-empty{color:#b4b4ba;margin:0}
.xp-card{animation:xpIn .5s cubic-bezier(.2,.8,.2,1)}
@keyframes xpIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.xp-card[hidden]{display:none}
.xp-name{font-size:clamp(24px,2.6vw,32px);margin:6px 0 2px}
.xp-pos{color:#ff9a4d;margin:0 0 12px;font-size:14px}
.xp-desc{color:#d8d8dd;line-height:1.6;margin:0 0 12px}
.xp-sig{color:#b4b4ba;font-size:14px;line-height:1.55;margin:0}
.xp-sig strong{display:block;color:#fff;font-size:12px;letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px}
.xp-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}
.xp-chips button{font:600 12px 'Sora',sans-serif;letter-spacing:.05em;color:#e8e8ec;background:transparent;border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:8px 14px;cursor:pointer;transition:background .25s,border-color .25s,color .25s}
.xp-chips button:hover{border-color:#ff7a1a}
.xp-chips button.on{background:#ff7a1a;border-color:#ff7a1a;color:#fff}
.xp .note{margin-top:18px;font-size:12.5px;color:#8c8c93}
@media (max-width:860px){.xp-wrap{grid-template-columns:minmax(0,1fr)}.xp-view,.xp-solo .xp-view{height:min(66vh,520px)}}

/* ---- timeline ---- */
#timeline{padding-bottom:70px}
.tl{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;padding:34px 4px 26px;margin-top:10px;scrollbar-width:none;outline:none}
.tl::-webkit-scrollbar{display:none}
.tl:focus-visible{box-shadow:0 0 0 2px #ff7a1a;border-radius:12px}
.tl-track{list-style:none;margin:0;padding:0;display:flex;gap:0;position:relative;width:max-content}
.tl-track::before{content:"";position:absolute;left:0;right:0;top:6px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.28) 4%,rgba(255,255,255,.28) 96%,transparent)}
.tl-item{position:relative;flex:none;width:270px;padding:30px 24px 0 0;scroll-snap-align:start}
.tl-item::before{content:"";position:absolute;left:0;top:0;width:14px;height:14px;border-radius:50%;background:#0b0b0c;border:2px solid #8c8c93;transition:border-color .3s,background .3s,box-shadow .3s}
.tl-item.ver{width:320px}
.tl-item.ver::before{width:18px;height:18px;top:-2px;border-color:#ff7a1a;background:#ff7a1a;box-shadow:0 0 0 6px rgba(255,122,26,.22),0 0 24px rgba(255,122,26,.7)}
.tl-item a{display:block;color:inherit;padding:18px 18px 20px;border-radius:18px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);transition:transform .45s cubic-bezier(.2,.8,.2,1),border-color .3s,background .3s;height:calc(100% - 4px)}
.tl-item a:hover,.tl-item a:focus-visible{transform:translateY(-4px);border-color:rgba(255,122,26,.6);background:rgba(255,122,26,.07)}
.tl-item.ver a{border-color:rgba(255,122,26,.4)}
.tl-item time{display:block;color:#ff9a4d;font:600 12.5px 'Sora',sans-serif;letter-spacing:.05em;margin-bottom:8px}
.tl-kick{display:block;font:600 10.5px 'Inter',sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#8c8c93;margin-bottom:6px}
.tl-item h3{font-size:16px;line-height:1.35;margin:0 0 8px;color:#fff;font-weight:600}
.tl-item.ver h3{font-size:20px;font-weight:700}
.tl-item p{margin:0;color:#b4b4ba;font-size:13.5px;line-height:1.5}
.tl-bar{height:3px;margin-top:14px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}
.tl-bar i{display:block;height:100%;width:18%;background:linear-gradient(90deg,#ff7a1a,#ffb27a);border-radius:3px;transition:width .15s linear}
.html-fx .tl-item,.fx .tl-item{animation:none}
@media (max-width:600px){.tl-item{width:230px}.tl-item.ver{width:260px}}
