/* ============================================================================
   OLOX — OLOtheme Experience design system (replica pixel-perfect olotheme.com)
   Fonte: sito-marketing (olo-dark.css + olo-manual.css + stili per-pagina + home).
   Tutto scoped sotto .oloxp per non inquinare il resto della pagina.
   Gli elementi fixed si attivano solo con .oloxp-live (frontend, non nel canvas).
   ============================================================================ */

.oloxp{
  --bg:#0C0E13; --bg-2:#12151D; --bg-3:#181C27;
  --line:rgba(250,247,242,.1); --line-2:rgba(250,247,242,.18);
  --panelline:rgba(250,247,242,.1);
  --paper:#FAF7F2; --dim:rgba(250,247,242,.62); --faint:rgba(250,247,242,.34);
  --olo:#E8453D;
  --build:#E8453D; --booking:#3D8BFF; --lang:#E8409A;
  --tour:#12A19A; --tutor:#38C172; --secur:#26B8E8;
  --c:var(--olo);
  background:transparent; color:var(--paper);
  font-family:'Inter',system-ui,sans-serif; -webkit-font-smoothing:antialiased;
  font-size:16px; line-height:1.55; margin:0; padding:0;
}
.oloxp, .oloxp *, .oloxp *::before, .oloxp *::after{box-sizing:border-box;}
.oloxp a{color:var(--paper); text-decoration:none;}
.oloxp a:hover{color:var(--c);}
.oloxp img{max-width:100%; display:block; border:none;}
.oloxp ::selection{background:var(--c); color:#0C0E13;}
.oloxp .wrap{max-width:1280px; margin:0 auto; padding:0 32px;}
.oloxp .mono{font-family:'JetBrains Mono',monospace;}
.oloxp p{margin:0;}
.oloxp h1,.oloxp h2,.oloxp h3{margin:0;}
/* Il tema/template WP impone color e line-height su heading e link con stile
   inline nel body (pari specificità ma ordine successivo): doppia classe per
   vincere sempre. Il line-height 1.55 replica l'inheritance dal body del
   design; le regole più specifiche del design (h1.d, .panel h2, …) lo
   sovrascrivono dove serve. */
.oloxp.oloxp h1,.oloxp.oloxp h2,.oloxp.oloxp h3,.oloxp.oloxp h4{color:var(--paper); line-height:1.55;}
.oloxp.oloxp a{color:var(--paper); text-decoration:none;}
.oloxp.oloxp a:hover{color:var(--c);}
.oloxp.oloxp h1 em,.oloxp.oloxp h2 em{font-style:italic; color:var(--c);}
.oloxp-home .panel.intro h1 em{color:var(--olo);}
.oloxp button{font-family:inherit;}

/* ---------- NAV ---------- */
.oloxp .dnav{left:0; right:0; top:0; z-index:80; position:relative;
  background:rgba(12,14,19,.7); backdrop-filter:blur(12px); border-bottom:1px solid var(--line);}
.oloxp-live .dnav{position:fixed;}
.oloxp .dnav .row{display:flex; align-items:center; gap:28px; padding:14px 26px;}
.oloxp .dnav .logo img{height:24px; width:auto; max-width:40vw; object-fit:contain; object-position:left center; filter:brightness(0) invert(1);}
.oloxp .dnav .links{display:flex; gap:20px; font-family:'JetBrains Mono',monospace; font-size:10.5px;
  font-weight:600; letter-spacing:.12em; text-transform:uppercase; flex-wrap:wrap;}
.oloxp .dnav .links a{color:var(--faint);}
.oloxp .dnav .links a:hover{color:var(--paper);}
.oloxp .dnav .links a.on{color:var(--pc,var(--c));}
.oloxp .dnav .exp{margin-left:0; font-family:'JetBrains Mono',monospace; font-size:10.5px; font-weight:700;
  letter-spacing:.12em; text-transform:uppercase; color:var(--paper);
  border:1px solid var(--line-2); border-radius:100px; padding:9px 16px; transition:all .18s;}
.oloxp .dnav .exp:hover{border-color:var(--c); color:var(--c);}

/* ---------- LANG SWITCHER ---------- */
.oloxp .langsw{position:relative; display:flex; gap:2px; align-items:center; font-family:'JetBrains Mono',monospace; font-size:9.5px;
  font-weight:700; letter-spacing:.1em; text-transform:uppercase; margin-left:auto;}
.oloxp .langsw a{color:var(--faint); padding:5px 6px; border-radius:6px;}
.oloxp .langsw a:hover{color:var(--paper);}
.oloxp .langsw a.on{color:var(--c); background:color-mix(in srgb, var(--c) 14%, transparent);}
.oloxp .langsw .lsw-t{display:none; align-items:center; gap:5px; font:inherit; letter-spacing:inherit; text-transform:inherit;
  color:var(--paper); background:rgba(12,14,19,.6); border:1px solid var(--line-2); border-radius:8px; padding:6px 10px; cursor:pointer;}
.oloxp .langsw .lsw-list{display:flex; gap:2px; align-items:center;}

/* ---------- TYPE / PIECES ---------- */
.oloxp .k{font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.26em;
  text-transform:uppercase; color:var(--c); display:flex; align-items:center; gap:12px; margin-bottom:24px;}
.oloxp .k::before{content:""; width:34px; height:1px; background:var(--c); flex-shrink:0;}
.oloxp h1.d{font-family:'Fraunces',serif; font-weight:400; font-size:clamp(44px,5.6vw,88px);
  line-height:.96; letter-spacing:-.032em; margin:0 0 24px; text-wrap:balance;}
.oloxp h2.d{font-family:'Fraunces',serif; font-weight:400; font-size:clamp(32px,3.8vw,56px);
  line-height:1.02; letter-spacing:-.026em; margin:0 0 18px; text-wrap:balance;}
.oloxp h1.d em, .oloxp h2.d em, .oloxp .em{font-style:italic; color:var(--c);}
.oloxp .sub{font-size:16px; line-height:1.62; color:var(--dim); max-width:52ch; margin:0 0 30px; text-wrap:pretty;}
.oloxp .sub strong{color:var(--paper); font-weight:600;}
.oloxp .plogo{height:36px; width:auto; max-width:80vw; object-fit:contain; object-position:left center; filter:brightness(0) invert(1); opacity:.92; margin-bottom:26px;}

.oloxp .tags{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:34px;}
.oloxp .tags span{font-family:'JetBrains Mono',monospace; font-size:10px; font-weight:600; letter-spacing:.08em;
  padding:6px 13px; border-radius:100px; border:1px solid var(--line); color:var(--dim);}
.oloxp .tags span.hot{border-color:var(--c); color:var(--c);}

.oloxp .cta{display:inline-flex; align-items:center; gap:12px; font-family:'JetBrains Mono',monospace;
  font-size:12px; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color:#0C0E13; background:var(--c); padding:15px 26px; border-radius:2px; transition:all .18s; border:none; cursor:pointer;}
.oloxp .cta:hover{transform:translate(3px,-3px); box-shadow:-5px 5px 0 rgba(250,247,242,.22); color:#0C0E13;}
.oloxp .cta.ghost{background:transparent; color:var(--paper); border:1px solid var(--line-2);}
.oloxp .cta.ghost:hover{border-color:var(--paper); box-shadow:none; color:var(--paper); transform:translate(0,-2px);}
.oloxp .cta:focus-visible,.oloxp a:focus-visible,.oloxp button:focus-visible{outline:2px solid var(--c); outline-offset:3px;}

/* ---------- HERO SCAFFOLD ---------- */
.oloxp .dhero{min-height:100vh; display:flex; align-items:center; position:relative; overflow:hidden; padding:120px 0 80px;}
.oloxp .dhero .grid2{display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:5vw; align-items:center;}
@media(max-width:960px){ .oloxp .dhero .grid2{grid-template-columns:1fr; gap:60px;} }

/* stats strip */
.oloxp .dstats{display:flex; gap:0; flex-wrap:wrap; border-top:1px solid var(--line); margin-top:56px;}
.oloxp .dstat{flex:1 1 150px; padding:20px 24px 0 0; border-right:1px dashed var(--line); margin-right:24px;}
.oloxp .dstat:last-child{border-right:none; margin-right:0;}
.oloxp .dstat b{display:block; font-family:'Fraunces',serif; font-weight:500; font-size:32px; letter-spacing:-.02em; line-height:1;}
.oloxp .dstat b em{font-style:italic; color:var(--c);}
.oloxp .dstat span{display:block; margin-top:7px; font-family:'JetBrains Mono',monospace;
  font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--faint);}
@media(max-width:640px){ .oloxp .dstat{border-right:none;} }

/* ---------- SECTIONS ---------- */
.oloxp .dsec{padding:110px 0; position:relative; border-top:1px solid var(--line);}
.oloxp .dsec .head{max-width:720px; margin-bottom:56px;}
.oloxp .dsec .head p{font-size:16px; color:var(--dim); margin:0; text-wrap:pretty;}

/* generic dark card */
.oloxp .dcard{background:var(--bg-2); border:1px solid var(--line); border-radius:12px; padding:26px;}
.oloxp .dcard h3{font-family:'Fraunces',serif; font-weight:500; font-size:21px; letter-spacing:-.015em; margin:0 0 10px;}
.oloxp .dcard h3 em{font-style:italic; color:var(--c);}
.oloxp .dcard p{font-size:13.5px; line-height:1.6; color:var(--dim); margin:0; text-wrap:pretty;}
.oloxp .dcard p strong{color:var(--paper);}
.oloxp .dcard .kk{display:block; font-family:'JetBrains Mono',monospace; font-size:9.5px; font-weight:700;
  letter-spacing:.18em; text-transform:uppercase; color:var(--c); margin-bottom:14px;}
.oloxp .dgrid3{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
@media(max-width:900px){ .oloxp .dgrid3{grid-template-columns:1fr;} }

/* reveal */
@media (prefers-reduced-motion: no-preference){
  .oloxp-live .rv{opacity:0; transform:translateY(22px); transition:opacity .7s ease, transform .7s cubic-bezier(.2,.9,.3,1);}
  .oloxp-live .rv.in{opacity:1; transform:none;}
}

/* ---------- MARQUEE ---------- */
.oloxp .dmarq{overflow:hidden; border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:14px 0; white-space:nowrap;}
.oloxp .dmarq .in{display:inline-block; animation:oloxmarq var(--marq-dur,28s) linear infinite; font-family:'JetBrains Mono',monospace;
  font-size:12px; letter-spacing:.3em; text-transform:uppercase; color:var(--faint);}
.oloxp .dmarq .in b{color:var(--c); font-weight:700; margin:0 26px;}
.oloxp .dmarq.rev .in{animation-direction:reverse;}
@keyframes oloxmarq{from{transform:translateX(0);}to{transform:translateX(-50%);}}

/* ---------- NEXT / FOOTER / FOLLOW ---------- */
.oloxp .dnext{border-top:1px solid var(--line);}
.oloxp .dnext .wrap{display:flex; align-items:center; justify-content:space-between; gap:24px; padding-top:36px; padding-bottom:36px;}
.oloxp .dnext .lbl{font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--faint);}
.oloxp .dnext a.nx{font-family:'Fraunces',serif; font-weight:500; font-size:28px; letter-spacing:-.02em;}
.oloxp .dnext a.nx em{font-style:italic; color:var(--nc,var(--c));}
.oloxp .dnext a.nx:hover{color:var(--nc,var(--c));}
.oloxp .dfoot{border-top:1px solid var(--line); background:var(--bg-2);}
.oloxp .dfoot .wrap{display:flex; align-items:center; gap:26px; flex-wrap:wrap; padding-top:34px; padding-bottom:64px;}
.oloxp .dfoot img{height:22px; width:auto; max-width:60vw; object-fit:contain; object-position:left center; filter:brightness(0) invert(1); opacity:.85;}
.oloxp .dfoot .lnk{display:flex; gap:18px; font-family:'JetBrains Mono',monospace; font-size:10px;
  font-weight:600; letter-spacing:.12em; text-transform:uppercase; flex-wrap:wrap;}
.oloxp .dfoot .lnk a{color:var(--faint);}
.oloxp .dfoot .lnk a:hover{color:var(--paper);}
.oloxp .dfoot .fine{margin-left:auto; font-family:'JetBrains Mono',monospace; font-size:10px;
  letter-spacing:.18em; text-transform:uppercase; color:var(--faint);}
@media(max-width:760px){ .oloxp .dfoot .fine{margin-left:0;} }

.oloxp .follow{border-top:1px solid var(--line); background:color-mix(in srgb, var(--c) 6%, var(--bg-2));}
.oloxp .follow .wrap{display:flex; align-items:center; gap:20px; padding-top:22px; padding-bottom:22px; flex-wrap:wrap;}
.oloxp .follow .fk{font-family:'JetBrains Mono',monospace; font-size:9.5px; font-weight:700; letter-spacing:.2em;
  text-transform:uppercase; color:var(--c); border:1px dashed var(--c); border-radius:100px; padding:6px 13px; flex-shrink:0; white-space:nowrap;}
.oloxp .follow p{margin:0; font-size:14px; line-height:1.6; color:var(--dim);}
.oloxp .follow a{color:var(--c); text-decoration:underline; text-underline-offset:3px; font-weight:600;}
.oloxp .follow a:hover{color:var(--paper);}

/* ---------- CREDITS (fixed, sempre visibili) ---------- */
.oloxp .credits{left:0; right:0; bottom:0; z-index:92; text-align:center; pointer-events:none; padding:22px 10px 9px;
  background:linear-gradient(180deg, transparent, rgba(12,14,19,.85) 60%);
  font-family:'JetBrains Mono',monospace; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--faint); position:relative;}
.oloxp-live .credits{position:fixed;}
.oloxp .credits a{pointer-events:auto; color:var(--dim);}
.oloxp .credits a:hover{color:var(--c);}
.oloxp .credits b{color:var(--dim); font-weight:600;}

/* nav responsive (pallini colorati) */
@media(max-width:900px){
  .oloxp .dnav .row{flex-wrap:nowrap; gap:12px; padding:12px 16px;}
  .oloxp .dnav .links{gap:9px; flex-wrap:nowrap;}
  .oloxp .dnav .links a{font-size:0; width:11px; height:11px; border-radius:50%; flex-shrink:0; opacity:.85; background:var(--pc,#888);}
  .oloxp .dnav .links a.on{opacity:1; box-shadow:0 0 0 2px var(--bg), 0 0 0 3.5px var(--pc,var(--c));}
  .oloxp .langsw{margin-left:auto; font-size:9px;}
  .oloxp .langsw .lsw-t{display:inline-flex;}
  .oloxp .langsw .lsw-list{display:none; position:absolute; top:calc(100% + 8px); right:0; z-index:120; flex-direction:column; align-items:stretch;
    background:rgba(12,14,19,.96); border:1px solid var(--line-2); border-radius:10px; padding:6px; box-shadow:0 20px 50px -20px rgba(0,0,0,.8);}
  .oloxp .langsw.open .lsw-list{display:flex;}
  .oloxp .langsw .lsw-list a{padding:8px 16px; text-align:center;}
  .oloxp .dnav .exp{margin-left:0; padding:7px 12px; font-size:9px; white-space:nowrap;}
  .oloxp .credits{font-size:8px; letter-spacing:.06em; padding:0 10px;}
}

@media (prefers-reduced-motion: reduce){
  .oloxp .dmarq .in{animation:none;}
}

/* ============================================================================
   MANUALI (olo-manual.css)
   ============================================================================ */
.oloxp .man-head{padding:150px 0 60px; border-bottom:1px solid var(--line);}
.oloxp .man-head .doc{font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.26em;
  text-transform:uppercase; color:var(--faint); margin-bottom:18px; display:flex; gap:14px; flex-wrap:wrap;}
.oloxp .man-head .doc b{color:var(--c);}
.oloxp .man-layout{display:grid; grid-template-columns:230px minmax(0,1fr); gap:60px; padding:70px 0 90px;}
@media(max-width:960px){ .oloxp .man-layout{grid-template-columns:1fr; gap:40px;} }
.oloxp .toc{position:sticky; top:90px; align-self:start; display:flex; flex-direction:column; gap:2px;}
@media(max-width:960px){ .oloxp .toc{position:static; flex-direction:row; flex-wrap:wrap; gap:8px;} }
.oloxp .toc a{font-family:'JetBrains Mono',monospace; font-size:10.5px; font-weight:600; letter-spacing:.1em;
  text-transform:uppercase; color:var(--faint); padding:8px 12px; border-left:2px solid var(--line);
  transition:all .15s;}
.oloxp .toc a:hover{color:var(--paper);}
.oloxp .toc a.on{color:var(--c); border-left-color:var(--c); background:linear-gradient(90deg, color-mix(in srgb, var(--c) 10%, transparent), transparent);}
.oloxp .toc .tspec{margin-top:14px; border-left-color:var(--c); color:var(--c);}
.oloxp .ch{padding:50px 0 56px; border-bottom:1px dashed var(--line); scroll-margin-top:90px;}
.oloxp .ch:first-child{padding-top:0;}
.oloxp .ch .chno{font-family:'Fraunces',serif; font-style:italic; font-weight:300; font-size:52px; color:color-mix(in srgb, var(--c) 55%, transparent); line-height:1; display:block; margin-bottom:14px;}
.oloxp .ch h2{font-family:'Fraunces',serif; font-weight:400; font-size:clamp(26px,3vw,40px); letter-spacing:-.022em; line-height:1.05; margin:0 0 18px; text-wrap:balance;}
.oloxp .ch h2 em{font-style:italic; color:var(--c);}
.oloxp .ch p{font-size:15px; line-height:1.7; color:var(--dim); max-width:68ch; margin:0 0 16px; text-wrap:pretty;}
.oloxp .ch p strong{color:var(--paper); font-weight:600;}
.oloxp .ch code, .oloxp .mono-inline{font-family:'JetBrains Mono',monospace; font-size:.86em; color:var(--c);
  background:color-mix(in srgb, var(--c) 10%, transparent); padding:2px 7px; border-radius:5px;}
.oloxp .ch h3{font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.22em;
  text-transform:uppercase; color:var(--c); margin:34px 0 14px;}
.oloxp .ch ul.dash{list-style:none; margin:0 0 16px; padding:0; display:flex; flex-direction:column; gap:9px; max-width:68ch;}
.oloxp .ch ul.dash li{font-size:14px; line-height:1.6; color:var(--dim); padding-left:22px; position:relative;}
.oloxp .ch ul.dash li::before{content:"—"; position:absolute; left:0; color:var(--c);}
.oloxp .ch ul.dash li strong{color:var(--paper);}
.oloxp .dtab{width:100%; border-collapse:collapse; margin:8px 0 10px;}
.oloxp .dtab td{padding:12px 16px; border:1px solid var(--line); font-size:13.5px; line-height:1.55; color:var(--dim); vertical-align:top;}
.oloxp .dtab td strong{color:var(--paper);}
.oloxp .dtab td.f{width:28%; font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700;
  letter-spacing:.08em; text-transform:uppercase; color:var(--paper); background:var(--bg-2);}
.oloxp .dtab td.f span{display:block; font-weight:400; color:var(--faint); text-transform:none; letter-spacing:.02em; margin-top:4px;}
.oloxp .notice{border:1px solid color-mix(in srgb, var(--c) 40%, transparent); border-radius:10px;
  background:color-mix(in srgb, var(--c) 7%, transparent); padding:18px 22px; margin:20px 0; max-width:68ch;}
.oloxp .notice .nl{font-family:'JetBrains Mono',monospace; font-size:9.5px; font-weight:700; letter-spacing:.22em;
  text-transform:uppercase; color:var(--c); display:block; margin-bottom:8px;}
.oloxp .notice p{margin:0; font-size:13.5px;}
.oloxp .spec-close{scroll-margin-top:90px; margin-top:60px; border:1px solid color-mix(in srgb, var(--c) 45%, transparent); border-radius:16px; overflow:hidden;
  background:linear-gradient(180deg, color-mix(in srgb, var(--c) 9%, var(--bg-2)), var(--bg-2) 30%);}
.oloxp .spec-close .sc-head{padding:34px 34px 26px; border-bottom:1px solid var(--line); display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap;}
.oloxp .spec-close .sc-head h2{font-family:'Fraunces',serif; font-weight:400; font-size:clamp(28px,3.4vw,44px); letter-spacing:-.024em; margin:0;}
.oloxp .spec-close .sc-head h2 em{font-style:italic; color:var(--c);}
.oloxp .spec-close .sc-head .vv{font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--faint); text-align:right;}
.oloxp .spec-close .sc-head .vv b{color:var(--c); display:block; font-size:13px; margin-bottom:4px;}
.oloxp .spec-close .sc-body{padding:10px 34px 34px;}
.oloxp .spec-close .dtab{margin-top:18px;}
.oloxp .sc-foot{display:flex; gap:12px; flex-wrap:wrap; margin-top:26px;}

/* ============================================================================
   PAGINA OLOBUILD (scene + sezioni dedicate)
   ============================================================================ */
.oloxp .dhero.oxbg-build{background:
  linear-gradient(rgba(232,69,61,.05) 1px, transparent 1px),
  linear-gradient(90deg, rgba(232,69,61,.05) 1px, transparent 1px),
  var(--bg);
  background-size:44px 44px, 44px 44px;}
.oloxp .dhero.oxbg-booking{background:radial-gradient(circle at 78% 30%, rgba(61,139,255,.08) 0%, transparent 50%), var(--bg);}
.oloxp .dhero.oxbg-lang{background:radial-gradient(circle at 20% 75%, rgba(232,64,154,.09) 0%, transparent 50%), var(--bg);}
.oloxp .dhero.oxbg-secur{background:radial-gradient(circle at 80% 20%, rgba(38,184,232,.08) 0%, transparent 46%), var(--bg);}
.oloxp .dhero.oxbg-tutor{background:radial-gradient(circle at 20% 25%, rgba(56,193,114,.08) 0%, transparent 46%), var(--bg);}

/* titolo che "cade" a blocchi */
.oloxp .drop span{display:inline-block;}
.oloxp-live .drop span{animation:oloxdrop .7s cubic-bezier(.2,1.5,.4,1) both; animation-delay:var(--d);}
@keyframes oloxdrop{from{opacity:0; transform:translateY(-50px) rotate(4deg);}to{opacity:1; transform:none;}}
@media (prefers-reduced-motion: reduce){ .oloxp .drop span{animation:none;} }

/* muro hero build */
.oloxp .ox-hwall{display:grid; grid-template-columns:repeat(12,1fr); gap:7px; width:min(100%,520px); position:relative;}
.oloxp .ox-hwall i{aspect-ratio:1; background:var(--bg-2); border:1px solid rgba(232,69,61,.26); border-radius:3px;}
.oloxp-live .ox-hwall i{opacity:0; transform:translateY(-46px) rotate(6deg);}
.oloxp-live .ox-hwall.go i{animation:oloxbrick .55s cubic-bezier(.2,1.4,.4,1) both; animation-delay:var(--d);}
@keyframes oloxbrick{to{opacity:1; transform:none;}}
.oloxp .ox-hwall i.k1{background:rgba(232,69,61,.85); border-color:transparent;}
.oloxp .ox-hwall i.k2{background:rgba(232,69,61,.28);}
.oloxp .ox-hwall .count{position:absolute; bottom:-46px; right:0; font-family:'JetBrains Mono',monospace; font-size:12px; letter-spacing:.18em; color:var(--c);}
.oloxp .ox-hwall .count b{font-family:'Fraunces',serif; font-size:44px; font-weight:500; color:var(--paper); margin-right:8px;}
@media (prefers-reduced-motion: reduce){ .oloxp-live .ox-hwall i{opacity:1; transform:none; animation:none;} }

/* ASSEMBLER (sticky) */
.oloxp .ox-asmrail{height:340vh; position:relative;}
.oloxp .ox-asmview{position:sticky; top:0; height:100vh; display:flex; align-items:center; overflow:hidden;}
.oloxp .asm-grid{display:grid; grid-template-columns:.85fr 1.15fr; gap:5vw; align-items:center; width:100%;}
@media(max-width:960px){ .oloxp .asm-grid{grid-template-columns:1fr; gap:40px;} }
.oloxp .browser{width:100%; max-width:640px; aspect-ratio:16/10.5; background:var(--bg-2);
  border:1px solid var(--line-2); border-radius:12px; overflow:hidden; position:relative;
  box-shadow:0 50px 100px -40px rgba(0,0,0,.8);}
.oloxp .browser .bar{height:34px; border-bottom:1px solid var(--line); display:flex; align-items:center; gap:6px; padding:0 14px;}
.oloxp .browser .bar i{width:9px; height:9px; border-radius:50%; background:var(--faint); display:block;}
.oloxp .browser .bar i:first-child{background:var(--c);}
.oloxp .browser .url{margin-left:10px; font-family:'JetBrains Mono',monospace; font-size:9.5px; color:var(--faint); letter-spacing:.08em;}
.oloxp .browser .stage{position:absolute; inset:34px 0 0 0; padding:10px; display:flex; flex-direction:column; gap:8px;}
.oloxp .blk{border-radius:6px; border:1px solid rgba(232,69,61,.4); background:rgba(232,69,61,.1);
  display:flex; align-items:center; justify-content:center; gap:10px;
  font-family:'JetBrains Mono',monospace; font-size:9.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--dim);
  will-change:transform;}
.oloxp .blk b{color:var(--c); font-weight:700;}
.oloxp .blk[data-b="0"]{height:13%;}
.oloxp .blk[data-b="1"]{height:30%; background:rgba(232,69,61,.22);}
.oloxp .blk[data-b="2"]{height:22%;}
.oloxp .blk[data-b="3"]{height:18%;}
.oloxp .blk[data-b="4"]{height:11%;}
.oloxp-live .blk{opacity:0;}
.oloxp-live .blk[data-b="0"]{transform:translateX(-120%);}
.oloxp-live .blk[data-b="1"]{transform:translateX(120%);}
.oloxp-live .blk[data-b="2"]{transform:translateY(140%);}
.oloxp-live .blk[data-b="3"]{transform:translateX(-120%) rotate(-4deg);}
.oloxp-live .blk[data-b="4"]{transform:translateY(160%);}
.oloxp .blk.set{opacity:1; transform:none; transition:transform .6s cubic-bezier(.2,1.25,.35,1), opacity .3s;}
.oloxp .asm-copy .step{font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.24em;
  text-transform:uppercase; color:var(--faint); margin-bottom:18px;}
.oloxp .asm-copy .step b{color:var(--c);}
.oloxp .asm-copy .stepname{font-family:'Fraunces',serif; font-size:clamp(28px,3vw,44px); font-weight:400;
  letter-spacing:-.02em; line-height:1.05; min-height:2.2em;}
.oloxp .asm-copy .stepname em{font-style:italic; color:var(--c);}
.oloxp .asm-hint{margin-top:26px; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--faint);}

/* FAMIGLIE = MATTONI */
.oloxp .bricks{display:flex; flex-wrap:wrap; gap:10px;}
.oloxp .brickcard{flex:1 1 260px; background:var(--bg-2); border:1px solid var(--line); border-radius:10px;
  padding:20px 22px; position:relative; overflow:hidden;}
.oloxp .brickcard::before{content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--c); opacity:.7;}
.oloxp .brickcard .n{font-family:'Fraunces',serif; font-style:italic; font-weight:300; font-size:38px;
  color:color-mix(in srgb, var(--c) 90%, transparent); line-height:1; float:right; margin-left:14px;}
.oloxp .brickcard h3{font-family:'Fraunces',serif; font-weight:500; font-size:19px; margin:0 0 6px; letter-spacing:-.01em;}
.oloxp .brickcard p{font-size:12.5px; line-height:1.5; color:var(--dim); margin:0;}
@media (prefers-reduced-motion: no-preference){
  .oloxp-live .brickcard{opacity:0; transform:translateX(var(--fx,-60px)) rotate(var(--fr,-2deg));
    transition:opacity .6s ease, transform .65s cubic-bezier(.2,1.2,.35,1); transition-delay:var(--d,0s);}
  .oloxp-live .brickcard.in{opacity:1; transform:none;}
}

/* FREE / PRO, gru */
.oloxp .slabs{display:grid; grid-template-columns:1fr 1fr; gap:18px; align-items:end;}
@media(max-width:860px){ .oloxp .slabs{grid-template-columns:1fr;} }
.oloxp .slab{background:var(--bg-2); border:1px solid var(--line); border-radius:14px; padding:34px 30px; position:relative;}
.oloxp .slab .price{font-family:'Fraunces',serif; font-weight:500; font-size:54px; letter-spacing:-.03em; line-height:1; margin:14px 0 6px;}
.oloxp .slab .price em{font-style:italic; color:var(--c);}
.oloxp .slab .per{font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--faint); margin-bottom:22px;}
.oloxp .slab ul{list-style:none; margin:0 0 28px; padding:0; display:flex; flex-direction:column; gap:10px;}
.oloxp .slab li{font-size:14px; color:var(--dim); padding-left:22px; position:relative;}
.oloxp .slab li::before{content:"▪"; position:absolute; left:0; color:var(--c);}
.oloxp .slab li strong{color:var(--paper);}
.oloxp .slab.pro{border-color:color-mix(in srgb, var(--c) 60%, transparent); background:linear-gradient(180deg, color-mix(in srgb, var(--c) 10%, transparent), var(--bg-2) 40%);}
.oloxp .cablewrap{position:relative;}
.oloxp .cable{position:absolute; left:50%; bottom:100%; width:2px; height:120px; background:repeating-linear-gradient(180deg, var(--c) 0 6px, transparent 6px 10px); opacity:0;}
@media (prefers-reduced-motion: no-preference){
  .oloxp-live .slab.pro{transform:translateY(-90px); opacity:0; transition:transform 1s cubic-bezier(.3,1.2,.3,1), opacity .5s;}
  .oloxp-live .slab.pro.in{transform:none; opacity:1;}
  .oloxp-live .slab.pro.in .cable{opacity:1; transition:opacity .4s .5s;}
}
.oloxp .hook{position:absolute; top:-13px; left:50%; transform:translateX(-50%); width:26px; height:13px;
  border:2px solid var(--c); border-bottom:none; border-radius:13px 13px 0 0;}

/* ============================================================================
   PAGINA OLOBOOKING
   ============================================================================ */
.oloxp .clockface{width:min(46vh,340px); aspect-ratio:1; border-radius:50%; border:1px solid rgba(61,139,255,.4);
  position:relative; background:radial-gradient(circle, rgba(61,139,255,.07), transparent 70%);}
.oloxp .clockface::before{content:""; position:absolute; inset:14%; border-radius:50%; border:1px dashed rgba(61,139,255,.25);}
.oloxp .hand{position:absolute; left:50%; bottom:50%; width:3px; height:38%; background:var(--c); border-radius:3px;
  transform-origin:bottom center; transform:rotate(var(--rot,0deg)); box-shadow:0 0 14px rgba(61,139,255,.5);}
.oloxp .hand.h2{height:26%; width:5px; opacity:.6;}
.oloxp .pin{position:absolute; left:50%; top:50%; width:12px; height:12px; border-radius:50%; background:var(--c); transform:translate(-50%,-50%);}
.oloxp .clocklbl{position:absolute; bottom:-52px; left:50%; transform:translateX(-50%); text-align:center; white-space:nowrap;
  font-family:'JetBrains Mono',monospace; font-size:12px; letter-spacing:.2em; color:var(--c);}
.oloxp .clocklbl b{font-family:'Fraunces',serif; font-size:40px; font-weight:500; letter-spacing:0; color:var(--paper); display:block;}

/* GIORNATA STICKY */
.oloxp .ox-dayrail{height:380vh;}
.oloxp .ox-dayview{position:sticky; top:0; height:100vh; overflow:hidden; display:flex; align-items:center;}
.oloxp .day-grid{display:grid; grid-template-columns:.8fr 1.2fr; gap:5vw; width:100%; align-items:center;}
@media(max-width:960px){ .oloxp .day-grid{grid-template-columns:1fr; gap:36px;} }
.oloxp .daytime{font-family:'Fraunces',serif; font-weight:400; font-size:clamp(64px,8vw,130px); letter-spacing:-.03em; line-height:1;}
.oloxp .daytime em{font-style:italic; color:var(--c);}
.oloxp .dayocc{margin-top:18px; font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--faint);}
.oloxp .dayocc b{color:var(--c); font-size:15px;}
.oloxp .slots{display:flex; flex-direction:column; gap:9px; max-height:74vh;}
.oloxp .slot{display:flex; align-items:center; gap:16px; border:1px solid var(--line); border-radius:9px;
  background:var(--bg-2); padding:12px 18px; position:relative; overflow:hidden;}
.oloxp .slot .hh{font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.12em; color:var(--faint); width:52px; flex-shrink:0;}
.oloxp .slot .what{font-family:'Fraunces',serif; font-size:17px; letter-spacing:-.01em;}
.oloxp .slot .who{margin-left:auto; font-family:'JetBrains Mono',monospace; font-size:10px; color:var(--faint); letter-spacing:.08em;}
.oloxp .slot .stamp{position:absolute; right:14px; top:50%; transform:translateY(-50%) rotate(-8deg) scale(2.6); opacity:0;
  font-family:'JetBrains Mono',monospace; font-size:9px; font-weight:700; letter-spacing:.22em; text-transform:uppercase;
  color:var(--c); border:2px solid var(--c); border-radius:4px; padding:3px 8px; pointer-events:none;}
.oloxp .slot.b{border-color:rgba(61,139,255,.5); background:linear-gradient(90deg, rgba(61,139,255,.12), var(--bg-2) 60%);}
.oloxp .slot.b .who{opacity:0;}
.oloxp .slot.b .stamp{opacity:1; transform:translateY(-50%) rotate(-8deg) scale(1);
  transition:transform .3s cubic-bezier(.2,1.6,.4,1), opacity .15s;}

/* BIGLIETTI VERTICALI */
.oloxp .tickets{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
@media(max-width:980px){ .oloxp .tickets{grid-template-columns:repeat(2,1fr);} }
@media(max-width:640px){ .oloxp .tickets{grid-template-columns:1fr;} }
.oloxp .ticket{position:relative; background:var(--bg-2); border:1px solid var(--line); border-radius:12px;
  padding:24px 24px 20px; overflow:hidden;}
.oloxp .ticket::before, .oloxp .ticket::after{content:""; position:absolute; width:22px; height:22px; border-radius:50%;
  background:var(--bg); border:1px solid var(--line); top:50%; transform:translateY(-50%);}
.oloxp .ticket::before{left:-12px;} .oloxp .ticket::after{right:-12px;}
.oloxp .ticket .rip{border-top:1.5px dashed var(--line-2); margin:16px -24px 14px;}
.oloxp .ticket .tk{font-family:'JetBrains Mono',monospace; font-size:9.5px; font-weight:700; letter-spacing:.22em;
  text-transform:uppercase; color:var(--c); margin-bottom:10px; display:block;}
.oloxp .ticket h3{font-family:'Fraunces',serif; font-weight:500; font-size:22px; margin:0 0 8px; letter-spacing:-.015em;}
.oloxp .ticket p{font-size:13px; line-height:1.55; color:var(--dim); margin:0;}
.oloxp .ticket .code{font-family:'JetBrains Mono',monospace; font-size:9.5px; letter-spacing:.3em; color:var(--faint);
  display:flex; justify-content:space-between; align-items:center;}
.oloxp .ticket .code i{font-style:normal; letter-spacing:0; background:repeating-linear-gradient(90deg, var(--paper) 0 2px, transparent 2px 5px);
  width:74px; height:16px; opacity:.55; display:inline-block;}
@media (prefers-reduced-motion: no-preference){
  .oloxp-live .ticket{opacity:0; transform:translateY(40px) rotate(var(--tr,2deg)); transition:all .6s cubic-bezier(.2,1.2,.35,1); transition-delay:var(--d,0s);}
  .oloxp-live .ticket.in{opacity:1; transform:none;}
}

/* caparra stamp */
.oloxp .noshow{position:relative; border:1px solid var(--line); border-radius:16px; background:var(--bg-2);
  padding:52px 48px; overflow:hidden;}
.oloxp .noshow .bigstamp{position:absolute; right:5%; top:50%; transform:translateY(-50%) rotate(9deg);
  font-family:'JetBrains Mono',monospace; font-weight:700; font-size:clamp(15px,2vw,24px); letter-spacing:.3em; text-transform:uppercase;
  color:var(--c); border:4px solid var(--c); border-radius:8px; padding:14px 22px; opacity:.9;}
@media(max-width:860px){ .oloxp .noshow .bigstamp{position:static; transform:rotate(-4deg); display:inline-block; margin-top:26px;} }

/* ============================================================================
   PAGINA OLOLANG
   ============================================================================ */
.oloxp .scramble{font-family:'Fraunces',serif; font-style:italic; color:var(--c); display:inline-block; min-width:6.2ch;}
.oloxp .console{background:var(--bg-2); border:1px solid var(--line); border-radius:12px; overflow:hidden;
  width:min(100%,520px); box-shadow:0 40px 90px -40px rgba(232,64,154,.3);}
.oloxp .console .cbar{display:flex; align-items:center; gap:8px; padding:11px 16px; border-bottom:1px solid var(--line);
  font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--faint);}
.oloxp .console .cbar b{color:var(--c);}
.oloxp .console .rows{padding:16px; display:flex; flex-direction:column; gap:9px; font-family:'JetBrains Mono',monospace; font-size:12px;}
.oloxp .crow{display:grid; grid-template-columns:44px 1fr auto; gap:12px; align-items:center;}
.oloxp .crow .lc{color:var(--faint); letter-spacing:.1em;}
.oloxp .crow .bar{height:7px; border-radius:100px; background:rgba(250,247,242,.07); overflow:hidden;}
.oloxp .crow .bar i{display:block; height:100%; width:var(--w); border-radius:100px; background:var(--c); transition:width 1.1s cubic-bezier(.3,.9,.3,1); transition-delay:var(--d);}
.oloxp-live .console .crow .bar i{width:0%;}
.oloxp-live .console.go .crow .bar i{width:var(--w);}
.oloxp .crow .pc{color:var(--dim); font-size:10.5px; min-width:38px; text-align:right;}

/* FLIPBOARD */
.oloxp .flips{display:flex; flex-direction:column; gap:12px; perspective:1200px;}
.oloxp .fliprow{display:grid; grid-template-columns:1fr auto 1fr; gap:22px; align-items:center;
  border:1px solid var(--line); border-radius:10px; background:var(--bg-2); padding:18px 24px;}
@media(max-width:760px){ .oloxp .fliprow{grid-template-columns:1fr; gap:8px; text-align:center;} }
.oloxp .fliprow .src{font-family:'Fraunces',serif; font-size:clamp(17px,2vw,23px); letter-spacing:-.01em;}
.oloxp .fliprow .arrow{font-family:'JetBrains Mono',monospace; color:var(--c); font-weight:700;}
.oloxp .fliprow .dst{font-family:'Fraunces',serif; font-style:italic; font-size:clamp(17px,2vw,23px); color:var(--c); text-align:right;}
@media(max-width:760px){ .oloxp .fliprow .dst{text-align:center;} }
.oloxp .fliprow .lab{display:block; font-family:'JetBrains Mono',monospace; font-size:9px; font-style:normal; letter-spacing:.22em;
  text-transform:uppercase; color:var(--faint); margin-bottom:5px;}
@media (prefers-reduced-motion: no-preference){
  .oloxp-live .fliprow{opacity:0; transform:rotateX(-84deg); transform-origin:top center;
    transition:opacity .5s ease, transform .8s cubic-bezier(.2,1.2,.35,1); transition-delay:var(--d,0s);}
  .oloxp-live .fliprow.in{opacity:1; transform:none;}
}

/* SEO STREAM */
.oloxp .urlstream{display:flex; flex-direction:column; gap:10px; font-family:'JetBrains Mono',monospace; font-size:13px;}
.oloxp .urlstream .url{display:flex; align-items:center; gap:14px; padding:13px 18px; border:1px solid var(--line); border-radius:100px;
  background:var(--bg-2); color:var(--dim); white-space:nowrap; overflow:hidden;}
.oloxp .urlstream .url b{color:var(--c); font-weight:600;}
.oloxp .urlstream .url .ok{margin-left:auto; color:var(--tutor); font-size:10px; letter-spacing:.16em; text-transform:uppercase;}
@media (prefers-reduced-motion: no-preference){
  .oloxp-live .urlstream .url{opacity:0; transform:translateX(var(--fx,-80px)); transition:all .6s cubic-bezier(.25,1,.35,1); transition-delay:var(--d,0s);}
  .oloxp-live .urlstream .url.in{opacity:1; transform:none;}
}

/* ============================================================================
   PAGINA OLOSECURITY
   ============================================================================ */
.oloxp .ox-scan{left:0; right:0; top:0; height:2px; z-index:70; pointer-events:none; position:relative;
  background:linear-gradient(90deg, transparent, rgba(38,184,232,.85), transparent);
  box-shadow:0 0 24px rgba(38,184,232,.5); opacity:.7;}
.oloxp-live .ox-scan{position:fixed;}
.oloxp .ox-scan::after{content:"SCANNING"; position:absolute; right:26px; top:6px;
  font-family:'JetBrains Mono',monospace; font-size:8.5px; letter-spacing:.34em; color:var(--secur); opacity:.8;}
.oloxp .term{background:#0A0C10; border:1px solid rgba(38,184,232,.3); border-radius:10px; overflow:hidden;
  width:min(100%,540px); box-shadow:0 40px 90px -40px rgba(38,184,232,.3);}
.oloxp .term .tbar{display:flex; align-items:center; gap:8px; padding:10px 16px; border-bottom:1px solid var(--line);
  font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--faint);}
.oloxp .term .tbar b{color:var(--c);}
.oloxp.oloxp .term pre{margin:0; padding:18px; font-family:'JetBrains Mono',monospace; font-size:11.5px; line-height:1.9;
  color:var(--dim); white-space:pre-wrap; min-height:275px; background:transparent; border:none; border-radius:0; overflow:visible;}
.oloxp .term .ok{color:var(--tutor);} .oloxp .term .bad{color:var(--build);} .oloxp .term .cy{color:var(--c);}
.oloxp .term .cursor{display:inline-block; width:8px; height:13px; background:var(--c); vertical-align:-2px; animation:oloxblink 1s steps(1) infinite;}
@keyframes oloxblink{50%{opacity:0;}}
.oloxp .bigcounter{font-family:'Fraunces',serif; font-weight:500; font-size:clamp(64px,9vw,150px); letter-spacing:-.04em; line-height:1; color:var(--paper);}
.oloxp .bigcounter em{font-style:italic; color:var(--c);}
.oloxp .redgrid{display:grid; grid-template-columns:repeat(2,1fr); gap:18px;}
@media(max-width:860px){ .oloxp .redgrid{grid-template-columns:1fr;} }
.oloxp .redcard{position:relative; background:var(--bg-2); border:1px solid var(--line); border-radius:12px; padding:28px; overflow:hidden;}
.oloxp .redcard .kk{display:block; font-family:'JetBrains Mono',monospace; font-size:9.5px; font-weight:700;
  letter-spacing:.2em; text-transform:uppercase; color:var(--c); margin-bottom:14px;}
.oloxp .redcard h3{font-family:'Fraunces',serif; font-weight:500; font-size:24px; margin:0 0 10px; letter-spacing:-.015em;}
.oloxp .redcard p{font-size:13.5px; line-height:1.6; color:var(--dim); margin:0;}
.oloxp .redcard p strong{color:var(--paper);}
.oloxp .redcard .veil{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; gap:12px;
  background:repeating-linear-gradient(0deg, #0A0C10 0 14px, #10141B 14px 28px);
  font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.4em; text-transform:uppercase; color:var(--faint);}
.oloxp .redcard .veil b{color:var(--c); letter-spacing:.2em;}
.oloxp:not(.oloxp-live) .redcard .veil{display:none;}
@media (prefers-reduced-motion: no-preference){
  .oloxp-live .redcard .veil{transition:transform .8s cubic-bezier(.6,0,.2,1) var(--d,0s), opacity .4s calc(var(--d,0s) + .5s);}
  .oloxp-live .redcard.in .veil{transform:translateY(-101%); opacity:0;}
}
@media (prefers-reduced-motion: reduce){ .oloxp .redcard .veil{display:none;} }
.oloxp .zerozero{display:flex; align-items:baseline; gap:26px; flex-wrap:wrap;}
.oloxp .zerozero .zz{font-family:'Fraunces',serif; font-weight:500; font-size:clamp(60px,8vw,120px); letter-spacing:-.04em; color:var(--c); line-height:1;}

/* ============================================================================
   PAGINA OLOTOUR
   ============================================================================ */
.oloxp .ox-panobg{position:absolute; inset:0; z-index:-1; overflow:hidden;}
.oloxp-live .ox-panobg{position:fixed;}
.oloxp .ox-panobg .strip{position:absolute; top:0; bottom:0; left:0; width:280%; will-change:transform;
  background:
    radial-gradient(circle at 12% 34%, rgba(245,166,35,.5) 0%, rgba(245,166,35,.14) 4%, transparent 9%),
    radial-gradient(circle at 58% 30%, rgba(245,166,35,.35) 0%, rgba(245,166,35,.1) 3%, transparent 7%),
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--tour) 22%, transparent) 0 3px, transparent 3px 130px),
    repeating-linear-gradient(90deg, rgba(250,247,242,.05) 0 60px, transparent 60px 260px),
    linear-gradient(180deg, transparent 63.6%, rgba(245,166,35,.5) 63.8%, transparent 64.2%),
    linear-gradient(180deg, #10131C 0%, #1A2233 42%, #33283A 60%, #0E0C14 100%);
  opacity:.75;}
.oloxp .ox-panobg::after{content:""; position:absolute; inset:0; background:radial-gradient(circle at 50% 50%, transparent 34%, rgba(12,14,19,.82) 80%);}
.oloxp .degbox{right:26px; bottom:22px; z-index:70; font-family:'JetBrains Mono',monospace;
  font-size:11px; letter-spacing:.2em; color:var(--tour); text-align:right; pointer-events:none; position:absolute;}
.oloxp-live .degbox{position:fixed;}
.oloxp .degbox b{font-family:'Fraunces',serif; font-size:34px; font-weight:500; letter-spacing:0; color:var(--paper); display:block;}
.oloxp .compassbar{left:0; right:0; top:58px; z-index:70; overflow:hidden; pointer-events:none; position:absolute;
  font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:.5em; color:color-mix(in srgb, var(--tour) 65%, transparent);
  text-transform:uppercase; white-space:nowrap; padding:8px 0; border-bottom:1px solid color-mix(in srgb, var(--tour) 16%, transparent);}
.oloxp-live .compassbar{position:fixed;}
.oloxp .compassbar .cin{display:inline-block; will-change:transform;}
.oloxp .ox-porthole{width:min(46vh,360px); aspect-ratio:1; border-radius:50%; overflow:hidden; position:relative;
  border:2px solid color-mix(in srgb, var(--tour) 55%, transparent); box-shadow:0 0 0 16px color-mix(in srgb, var(--tour) 6%, transparent), 0 50px 100px -30px rgba(0,0,0,.85);}
.oloxp .ox-porthole .pano{position:absolute; top:0; bottom:0; left:0; width:300%; will-change:transform;
  background:
    repeating-linear-gradient(90deg, color-mix(in srgb, var(--tour) 16%, transparent) 0 2px, transparent 2px 84px),
    linear-gradient(180deg, #1B2030 0%, #26304A 46%, #3E3245 62%, #171320 100%);}
.oloxp .spot{position:absolute; width:14px; height:14px; border-radius:50%; background:var(--tour);
  animation:oloxping 2.2s ease-out infinite; cursor:pointer;}
@keyframes oloxping{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--c, var(--tour)) 55%, transparent);}70%{box-shadow:0 0 0 16px color-mix(in srgb, var(--c, var(--tour)) 0%, transparent);}100%{box-shadow:0 0 0 0 color-mix(in srgb, var(--c, var(--tour)) 0%, transparent);}}
.oloxp .rooms{display:flex; align-items:center; gap:0; flex-wrap:wrap;}
.oloxp .room{flex:1 1 200px; background:var(--bg-2); border:1px solid var(--line); border-radius:12px; padding:24px 22px; position:relative; z-index:1;}
.oloxp .room h3{font-family:'Fraunces',serif; font-weight:500; font-size:20px; margin:0 0 8px; letter-spacing:-.01em;}
.oloxp .room p{font-size:12.5px; line-height:1.5; color:var(--dim); margin:0;}
.oloxp .room .rn{font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:.24em; text-transform:uppercase; color:var(--c); display:block; margin-bottom:10px;}
.oloxp .corridor{flex:0 0 54px; height:2px; background:repeating-linear-gradient(90deg, var(--c) 0 7px, transparent 7px 13px); position:relative;}
.oloxp .corridor::after{content:"▸"; position:absolute; right:-4px; top:50%; transform:translateY(-58%); color:var(--c); font-size:13px;}
@media(max-width:900px){ .oloxp .corridor{flex-basis:100%; height:34px; width:2px; background:repeating-linear-gradient(180deg, var(--c) 0 7px, transparent 7px 13px); margin:0 auto;}
  .oloxp .corridor::after{right:auto; left:50%; top:auto; bottom:-6px; transform:translateX(-50%) rotate(90deg);} }
@media (prefers-reduced-motion: no-preference){
  .oloxp-live .room{opacity:0; transform:scale(.86); transition:all .55s cubic-bezier(.2,1.3,.35,1); transition-delay:var(--d,0s);}
  .oloxp-live .room.in{opacity:1; transform:none;}
  .oloxp-live .corridor{transform:scaleX(0); transform-origin:left; transition:transform .5s ease; transition-delay:var(--d,0s);}
  .oloxp-live .corridor.in{transform:scaleX(1);}
}
.oloxp .hs-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px;}
@media(max-width:900px){ .oloxp .hs-grid{grid-template-columns:1fr;} }
.oloxp .hs{border:1px solid var(--line); border-radius:12px; background:rgba(18,21,29,.82); backdrop-filter:blur(6px); padding:26px;}
.oloxp .hs .dot{width:15px; height:15px; border-radius:50%; background:var(--c); margin-bottom:16px; animation:oloxping 2.4s ease-out infinite;}
.oloxp .hs h3{font-family:'Fraunces',serif; font-weight:500; font-size:21px; margin:0 0 8px; letter-spacing:-.015em;}
.oloxp .hs h3 em{font-style:italic; color:var(--c);}
.oloxp .hs p{font-size:13.5px; line-height:1.6; color:var(--dim); margin:0;}
.oloxp .hs p strong{color:var(--paper);}

/* ============================================================================
   PAGINA OLOTUTOR
   ============================================================================ */
.oloxp .xpfix{top:53px; left:0; right:0; z-index:70; background:rgba(12,14,19,.85); position:relative;
  backdrop-filter:blur(8px); border-bottom:1px solid var(--line); padding:8px 26px;
  display:flex; align-items:center; gap:16px; font-family:'JetBrains Mono',monospace; font-size:10px;
  letter-spacing:.16em; text-transform:uppercase; color:var(--faint);}
.oloxp-live .xpfix{position:fixed;}
.oloxp .xpfix .bar{flex:1; height:7px; border-radius:100px; background:rgba(250,247,242,.08); overflow:hidden;}
.oloxp .xpfix .bar i{display:block; height:100%; width:0%; border-radius:100px; background:linear-gradient(90deg,#2E8A5B,var(--tutor));}
.oloxp .xpfix b{color:var(--tutor); min-width:70px; text-align:right;}
.oloxp .lvltoast{top:104px; right:26px; z-index:75; background:var(--tutor); color:#0C0E13; position:absolute;
  font-family:'JetBrains Mono',monospace; font-size:10px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
  padding:11px 18px; border-radius:6px; box-shadow:0 18px 40px -12px rgba(56,193,114,.55);
  opacity:0; transform:translateY(-14px); transition:all .4s cubic-bezier(.2,1.4,.4,1); pointer-events:none;}
.oloxp-live .lvltoast{position:fixed;}
.oloxp .lvltoast.pop{opacity:1; transform:none;}
.oloxp .medal{width:min(40vh,300px); aspect-ratio:1; border-radius:50%; position:relative; flex-shrink:0;
  background:radial-gradient(circle, rgba(56,193,114,.12), transparent 68%);
  border:1px dashed rgba(56,193,114,.5); display:flex; align-items:center; justify-content:center;}
.oloxp .medal .inner{width:62%; aspect-ratio:1; border-radius:50%; background:var(--tutor); color:#0C0E13;
  display:flex; flex-direction:column; align-items:center; justify-content:center; transform:rotate(-6deg);
  font-family:'JetBrains Mono',monospace; font-size:10px; font-weight:700; letter-spacing:.2em; text-transform:uppercase;
  box-shadow:0 30px 70px -20px rgba(56,193,114,.5);}
.oloxp .medal .inner b{font-family:'Fraunces',serif; font-size:64px; font-weight:500; letter-spacing:-.02em; line-height:1;}
.oloxp .medal .orbit{position:absolute; inset:-8px; border-radius:50%; animation:oloxorbit 18s linear infinite;}
.oloxp .medal .orbit i{position:absolute; top:-5px; left:50%; width:10px; height:10px; border-radius:50%; background:var(--tutor);}
@keyframes oloxorbit{to{transform:rotate(360deg);}}
.oloxp .path{position:relative; max-width:760px; margin:0 auto;}
.oloxp .path::before{content:""; position:absolute; left:26px; top:0; bottom:0; width:2px;
  background:repeating-linear-gradient(180deg, rgba(56,193,114,.5) 0 8px, transparent 8px 15px);}
.oloxp .lez{position:relative; margin:0 0 22px; padding-left:74px;}
.oloxp .lez .node{position:absolute; left:9px; top:14px; width:36px; height:36px; border-radius:50%;
  background:var(--bg-2); border:2px solid var(--tutor); color:var(--tutor); display:flex; align-items:center; justify-content:center;
  font-size:15px; font-weight:700; z-index:1; transition:all .4s;}
.oloxp .lez .box{background:var(--bg-2); border:1px solid var(--line); border-radius:12px; padding:22px 26px; position:relative; overflow:hidden;}
.oloxp .lez h3{font-family:'Fraunces',serif; font-weight:500; font-size:21px; margin:0 0 7px; letter-spacing:-.015em;}
.oloxp .lez p{font-size:13.5px; line-height:1.6; color:var(--dim); margin:0;}
.oloxp .lez .xp{position:absolute; top:16px; right:18px; font-family:'JetBrains Mono',monospace; font-size:10px;
  font-weight:700; letter-spacing:.14em; color:var(--tutor);}
.oloxp .lez .lockveil{position:absolute; inset:0; background:rgba(10,12,16,.88); display:flex; align-items:center; justify-content:center;
  gap:12px; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.3em; text-transform:uppercase; color:var(--faint);
  transition:opacity .5s, transform .6s cubic-bezier(.6,0,.3,1);}
.oloxp .lez.unlocked .lockveil{opacity:0; transform:translateX(101%); pointer-events:none;}
.oloxp .lez.unlocked .node{background:var(--tutor); color:#0C0E13; box-shadow:0 0 18px rgba(56,193,114,.5);}
.oloxp:not(.oloxp-live) .lez .lockveil{display:none;}
.oloxp:not(.oloxp-live) .lez .node{background:var(--tutor); color:#0C0E13;}
.oloxp .quiz{max-width:640px; margin:0 auto; background:var(--bg-2); border:1px solid var(--line); border-radius:14px; padding:34px;}
.oloxp .quiz .q{font-family:'Fraunces',serif; font-size:24px; letter-spacing:-.015em; margin:0 0 22px;}
.oloxp .quiz .q em{font-style:italic; color:var(--c);}
.oloxp .ans{display:flex; flex-direction:column; gap:10px;}
.oloxp .ans button{text-align:left; font-family:'Inter',sans-serif; font-size:14.5px; color:var(--paper);
  background:var(--bg-3); border:1px solid var(--line); border-radius:9px; padding:15px 18px; cursor:pointer; transition:all .18s;}
.oloxp .ans button:hover{border-color:var(--c);}
.oloxp .ans button.right{background:rgba(56,193,114,.18); border-color:var(--tutor); color:var(--tutor); font-weight:600;}
.oloxp .ans button.wrong{background:rgba(232,69,61,.12); border-color:rgba(232,69,61,.6); color:#F0857F;}
.oloxp .quiz .verdict{margin-top:18px; font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--faint); min-height:1.4em;}
.oloxp .quiz .verdict b{color:var(--c);}
.olox-confetti{position:fixed; width:8px; height:8px; z-index:99; pointer-events:none; border-radius:2px;}

/* ============================================================================
   HOME EXPERIENCE (index.html) — scoped .oloxp-home
   ============================================================================ */
.oloxp-home{overflow:visible;}
.oloxp-home .chrome{top:0; left:0; right:0; z-index:90; display:flex; align-items:center;
  gap:22px; padding:16px 26px; pointer-events:none; position:relative;}
.oloxp-live.oloxp-home .chrome{position:fixed;}
.oloxp-home .chrome > *{pointer-events:auto;}
.oloxp-home .chrome .logo img{height:26px; width:auto; max-width:42vw; object-fit:contain; object-position:left center; filter:brightness(0) invert(1); display:block;}
.oloxp-home .chrome .langsw{margin-left:0;}
.oloxp-home .chrome .jump{margin-left:auto; display:flex; gap:4px;}
.oloxp-home .chrome .jump button{width:34px; height:34px; border-radius:50%; border:1px solid var(--panelline);
  background:rgba(12,14,19,.6); backdrop-filter:blur(8px); cursor:pointer; padding:0;
  display:flex; align-items:center; justify-content:center; transition:all .18s;}
.oloxp-home .chrome .jump button span{width:9px; height:9px; border-radius:50%; background:var(--jc,var(--c)); display:block; opacity:.55; transition:all .18s;}
.oloxp-home .chrome .jump button:hover span, .oloxp-home .chrome .jump button.on span{opacity:1; box-shadow:0 0 10px var(--jc,var(--c));}
/* Home con header/footer condivisi (template olobuild): la dnav porta già logo
   e lingue, il footer porta i credits → il chrome tiene solo i pallini di salto,
   DENTRO la barra come sul sito originale: chrome sovrapposto alla dnav (52px,
   entrambi fixed; chrome z:90 > dnav z:80, pointer-events:none sul contenitore
   lascia cliccabili menu e lingue sotto), pallini centrati (padding 9 = (52-34)/2)
   e allineati al padding destro 26px della dnav. Il langsw della dnav si scosta
   di 322px = 8 pallini ×34 + 7 gap ×4 + 22 di distacco. Solo frontend: nel
   canvas builder manca .oloxp-live. Sotto i 900px resta la riga sotto la barra
   (lì i link della dnav diventano già pallini). */
body:has(.oloxp-live .dnav) .oloxp-live.oloxp-home .chrome{top:0; padding:9px 26px;}
body:has(.oloxp-live .dnav) .oloxp-live.oloxp-home .chrome .logo,
body:has(.oloxp-live .dnav) .oloxp-live.oloxp-home .chrome .langsw{display:none;}
@media(min-width:901px){
  body:has(.oloxp-live.oloxp-home) .oloxp-live .dnav .langsw{margin-right:322px;}
}
body:has(.oloxp-live .dfoot) .oloxp-live.oloxp-home .credits{display:none;}
.oloxp-home .progress{bottom:0; left:0; right:0; height:3px; z-index:90; background:rgba(250,247,242,.08); position:relative;}
.oloxp-live.oloxp-home .progress{position:fixed;}
.oloxp-home .progress i{display:block; height:100%; width:0%;
  background:linear-gradient(90deg,var(--build),var(--booking),var(--lang),var(--secur),var(--tour),var(--tutor));}
.oloxp-home .hint{bottom:34px; right:26px; z-index:90; font-family:'JetBrains Mono',monospace; position:absolute;
  font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--faint);
  display:flex; align-items:center; gap:10px; transition:opacity .4s;}
.oloxp-live.oloxp-home .hint{position:fixed;}
.oloxp-home .hint b{color:var(--paper); font-weight:600; animation:oloxnudge 1.6s ease-in-out infinite;}
@keyframes oloxnudge{0%,100%{transform:translateX(0);}50%{transform:translateX(7px);}}
.oloxp-home .hint.gone{opacity:0;}
.oloxp-home .ox-halo{inset:-10%; z-index:55; pointer-events:none; mix-blend-mode:screen; opacity:.42; position:absolute;
  background:radial-gradient(ellipse 75% 60% at 50% 56%, var(--halo, rgba(232,69,61,.5)) 0%, transparent 68%);
  transition:opacity .4s;}
.oloxp-live.oloxp-home .ox-halo{position:fixed;}
.oloxp-home .hint .hd, .oloxp-home .hint .hm{display:inline-flex; align-items:center; gap:10px;}
.oloxp-home .hint .hm{display:none;}
@media(max-width:900px){
  .oloxp-home .hint .hd{display:none;}
  .oloxp-home .hint .hm{display:inline-flex;}
  .oloxp-home .hint .hm b{animation:oloxnudgey 1.6s ease-in-out infinite;}
}
@keyframes oloxnudgey{0%,100%{transform:translateY(0);}50%{transform:translateY(6px);}}

/* "olonica" lampeggiante + modale */
.oloxp-home .olw{font:inherit; letter-spacing:inherit; text-transform:inherit; background:none; border:none; padding:0;
  color:var(--olo); cursor:pointer; border-bottom:1.5px dashed var(--olo);
  animation:oloxolwblink 1.5s ease-in-out infinite;}
.oloxp-home .olw:hover{animation-play-state:paused; color:#F0857F;}
@keyframes oloxolwblink{0%,100%{opacity:1;}50%{opacity:.35;}}
.oloxp-home .opb{position:fixed; inset:0; z-index:96; background:rgba(12,14,19,.72); backdrop-filter:blur(8px);
  display:none; align-items:center; justify-content:center; padding:22px;}
.oloxp-home .opb.open{display:flex;}
.oloxp-home .opcard{position:relative; max-width:600px; width:100%; max-height:86vh; overflow:auto;
  background:var(--bg-2); border:1px solid rgba(232,69,61,.5); border-radius:16px; padding:34px 36px;
  box-shadow:0 60px 120px -40px rgba(0,0,0,.9);}
.oloxp-home .opcard .k{margin-bottom:18px;}
.oloxp-home .opcard h3{font-family:'Fraunces',serif; font-weight:400; font-size:clamp(26px,3vw,36px); letter-spacing:-.02em; line-height:1.05; margin:0 0 14px;}
.oloxp-home .opcard h3 em{font-style:italic; color:var(--olo);}
.oloxp-home .opcard p{font-size:14.5px; line-height:1.65; color:var(--dim); margin:0 0 14px; text-wrap:pretty;}
.oloxp-home .opcard p strong{color:var(--paper);}
.oloxp-home .opclose{position:absolute; top:12px; right:16px; background:none; border:none; color:var(--faint); font-size:16px; cursor:pointer;}
.oloxp-home .opclose:hover{color:var(--paper);}
.oloxp-home .battles{display:flex; flex-direction:column; gap:9px; margin-top:20px;}
.oloxp-home .battle{display:flex; align-items:center; gap:14px; flex-wrap:wrap; border:1px solid var(--panelline);
  border-radius:10px; background:var(--bg); padding:12px 16px;}
.oloxp-home .battle .bq{font-family:'Fraunces',serif; font-size:15.5px; letter-spacing:-.01em; flex:1 1 180px;}
.oloxp-home .battle .bc{display:flex; gap:5px; flex-wrap:wrap;}
.oloxp-home .battle .bc i{font-style:normal; font-family:'JetBrains Mono',monospace; font-size:9px; font-weight:700;
  letter-spacing:.04em; padding:4px 10px; border-radius:100px; color:#0C0E13; background:var(--pc);}

/* RAIL MECHANICS */
.oloxp-home .ox-rail{height:calc(var(--panels) * 130vh);}
.oloxp-home .ox-view{position:sticky; top:0; height:100vh; overflow:hidden;}
.oloxp-home .ox-track{display:flex; height:100vh; will-change:transform;}
.oloxp-home .panel{flex:0 0 100vw; height:100vh; position:relative; overflow:hidden;
  border-right:1px solid var(--panelline); display:flex; align-items:center;}
.oloxp-home .panel .inner{width:100%; max-width:1560px; margin:0 auto; padding:0 7vw;
  display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:5vw; align-items:center;}
.oloxp-home .panel .idx{position:absolute; top:20px; right:28px; font-family:'JetBrains Mono',monospace;
  font-size:11px; letter-spacing:.24em; color:var(--faint);}
.oloxp-home .panel .bigno{position:absolute; bottom:-6vh; left:2vw; font-family:'Fraunces',serif; font-weight:700;
  font-size:36vh; line-height:1; color:transparent; -webkit-text-stroke:1px rgba(250,247,242,.07); pointer-events:none; user-select:none;}
.oloxp-home .k{margin-bottom:26px;}
.oloxp-home .panel h2{font-family:'Fraunces',serif; font-weight:400; font-size:clamp(40px,4.6vw,72px);
  line-height:.98; letter-spacing:-.03em; margin:0 0 22px; text-wrap:balance;}
.oloxp-home .panel h2 em{font-style:italic; color:var(--c,var(--olo));}
.oloxp-home .panel .sub{font-size:16px; line-height:1.6; color:var(--dim); max-width:46ch; margin:0 0 30px; text-wrap:pretty;}
.oloxp-home .panel .sub strong{color:var(--paper); font-weight:600;}
.oloxp-home .plogo{height:34px; margin-bottom:26px; display:block;}
.oloxp-home .scene{position:relative; height:min(66vh,620px); display:flex; align-items:center; justify-content:center;}
.oloxp-live.oloxp-home .rise{transform:translateX(calc((1 - min(var(--pp,0)*2.4,1)) * 60px)); opacity:min(calc(var(--pp,0)*2.6),1);
  transition:transform .1s linear, opacity .1s linear;}
/* --pp la imposta SOLO il runtime del rail dopo l'assemblaggio: finché il
   pannello è ancora nel wrapper sorgente (canvas-iframe del builder, o frontend
   un istante prima di railassemble) il default 0 renderebbe il testo invisibile
   → qui il pannello è "fermo alla sua fermata": testo pieno. */
.oloxp-home.olox-panel-src .rise{transform:none; opacity:1;}

/* PANEL 0, INTRO */
.oloxp-home .panel.intro{background:radial-gradient(circle at 30% 40%, #161A24 0%, var(--bg) 60%);}
.oloxp-home .panel.intro .inner{grid-template-columns:1fr; text-align:left; padding-bottom:130px;}
@media (max-height:760px){
  .oloxp-home .panel.intro h1{font-size:clamp(40px,7vw,90px);}
  .oloxp-home .panel.intro .sub{margin-bottom:20px;}
}
.oloxp-home .panel.intro h1{font-family:'Fraunces',serif; font-weight:400; font-size:clamp(56px,9vw,150px);
  line-height:.92; letter-spacing:-.04em; margin:0 0 30px; max-width:12ch;}
.oloxp-home .panel.intro h1 em{font-style:italic; color:var(--olo);}
.oloxp-home .panel.intro h1 .strike{position:relative; white-space:nowrap;}
.oloxp-home .panel.intro h1 .strike::after{content:""; position:absolute; left:-2%; right:-2%; top:54%; height:.08em;
  background:var(--olo); transform:rotate(-2deg);}
.oloxp-home .marq{position:absolute; left:0; right:0; bottom:60px; overflow:hidden; border-top:1px solid var(--panelline);
  border-bottom:1px solid var(--panelline); padding:14px 0; white-space:nowrap;}
.oloxp-home .marq .in{display:inline-block; animation:oloxmarq 26s linear infinite; font-family:'JetBrains Mono',monospace;
  font-size:12px; letter-spacing:.3em; text-transform:uppercase; color:var(--faint);}
.oloxp-home .marq .in b{color:var(--olo); font-weight:700; margin:0 26px;}

/* SCENA BUILD — forza 4 */
.oloxp-home .wall{display:grid; grid-template-columns:repeat(12,1fr); gap:7px; width:100%;}
.oloxp-home .wall i{aspect-ratio:1; border:1px dashed rgba(232,69,61,.42); border-radius:3px; background:transparent;
  opacity:.55; cursor:pointer; transition:background .25s, border-color .25s, opacity .25s; pointer-events:auto;}
.oloxp-home .wall i:hover{border-style:solid; border-color:var(--build); opacity:1;}
.oloxp-home .wall i.on{border-color:transparent; background:rgba(232,69,61,.32); opacity:1;}
.oloxp-home .wall i.p1{border-color:transparent; background:var(--build); opacity:1;}
.oloxp-home .wall i.p2{border-color:transparent; background:rgba(250,247,242,.85); opacity:1;}
.oloxp-home .wall i.winc{animation:oloxwinpulse .9s ease-in-out infinite; box-shadow:0 0 16px rgba(232,69,61,.8);}
@keyframes oloxwinpulse{50%{filter:brightness(1.5); transform:scale(1.08);}}
.oloxp-home .wall i.pop{animation:oloxtilepop .35s cubic-bezier(.2,1.6,.4,1);}
@keyframes oloxtilepop{40%{transform:scale(1.35) rotate(-5deg);}}
.oloxp-home .wfoot{display:flex; align-items:center; justify-content:space-between; gap:14px; margin-top:14px; flex-wrap:wrap;}
.oloxp-home .wstat{font-family:'JetBrains Mono',monospace;
  font-size:11px; font-weight:600; letter-spacing:.18em; text-transform:uppercase; color:var(--dim);}
.oloxp-home .wstat b{color:var(--build);}
.oloxp-home .wreset{font-family:'JetBrains Mono',monospace; flex-shrink:0;
  font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--paper);
  background:transparent; border:1px solid var(--panelline); border-radius:100px; padding:7px 14px; cursor:pointer; transition:all .15s;}
.oloxp-home .wreset:hover{border-color:var(--build); color:var(--build);}
.oloxp-home .crane{position:absolute; top:-8px; left:8%; right:8%; height:2px; background:linear-gradient(90deg,transparent,rgba(232,69,61,.7),transparent);}

/* SCENA BOOKING — minigioco imprevisti */
.oloxp-home .cal{width:min(100%,520px); border:1px solid var(--panelline); border-radius:10px; overflow:hidden; background:var(--bg-2);}
.oloxp-home .cal .head{display:flex; justify-content:space-between; align-items:center; padding:14px 18px; border-bottom:1px solid var(--panelline);
  font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--dim);}
.oloxp-home .cal .head b{color:var(--booking);}
.oloxp-home .arena{position:relative; height:290px; background-image:radial-gradient(circle, rgba(250,247,242,.05) 1px, transparent 1px); background-size:22px 22px;}
.oloxp-home .imp{position:absolute; font-family:'JetBrains Mono',monospace; font-size:10.5px; font-weight:700;
  letter-spacing:.1em; text-transform:uppercase; white-space:nowrap; color:#FFB4AE;
  border:1.5px dashed rgba(232,69,61,.8); background:rgba(232,69,61,.14); border-radius:100px;
  padding:9px 15px; cursor:pointer; transform-origin:center;
  animation:oloximppop .15s cubic-bezier(.2,1.5,.4,1) both;}
@keyframes oloximppop{from{opacity:0; transform:scale(.4) rotate(-8deg);}to{opacity:1; transform:scale(1);}}
.oloxp-home .imp.hit{animation:none; border-style:solid; border-color:#38C172; background:#38C172; color:#0C0E13;
  pointer-events:none; transition:opacity .5s .45s, transform .3s; transform:scale(1.08);}
.oloxp-home .imp.gone{animation:none; opacity:0; transform:scale(.5) rotate(10deg); transition:all .25s; pointer-events:none;}
.oloxp-home .arena .final{position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px;
  background:rgba(12,14,19,.82); font-family:'JetBrains Mono',monospace; text-transform:uppercase; letter-spacing:.18em; text-align:center;}
.oloxp-home .arena .final b{font-family:'Fraunces',serif; font-size:30px; font-weight:500; letter-spacing:-.01em; text-transform:none; color:var(--booking);}
.oloxp-home .arena .final span{font-size:10px; color:var(--dim);}
.oloxp-home .cal .foot{padding:12px 18px; border-top:1px solid var(--panelline); display:flex; justify-content:space-between;
  font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.12em; color:var(--dim);}
.oloxp-home .cal .foot b{color:var(--paper);}
.oloxp-home .cal .foot .win{color:#38C172;}
.oloxp-home .stub{position:absolute; right:-4%; bottom:6%; background:var(--booking); color:#0C0E13; border-radius:8px;
  padding:14px 18px; transform:rotate(5deg); font-family:'JetBrains Mono',monospace; font-size:10px; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase; box-shadow:0 18px 40px -14px rgba(61,139,255,.5);}
.oloxp-home .stub::before{content:""; position:absolute; left:-7px; top:50%; width:14px; height:14px; border-radius:50%;
  background:var(--bg); transform:translateY(-50%);}
.oloxp-home .stub b{display:block; font-family:'Fraunces',serif; font-size:22px; font-weight:600; letter-spacing:-.01em; text-transform:none; margin-top:3px;}

/* SCENA LANG — quiz lingue */
.oloxp-home .langbox{width:100%; text-align:center; position:relative;}
.oloxp-home .hello{font-family:'Fraunces',serif; font-weight:400; font-style:italic; font-size:clamp(48px,5.4vw,84px);
  letter-spacing:-.02em; color:var(--paper); min-height:1.2em; line-height:1.1;}
.oloxp-home .hello .cur{color:var(--lang); border-bottom:3px solid var(--lang); padding-bottom:.04em;}
.oloxp-home .hello .cur.flash{animation:oloxhelloin .35s cubic-bezier(.2,1.4,.4,1);}
@keyframes oloxhelloin{from{opacity:0; transform:translateY(10px);}}
.oloxp-home .langflow{overflow:hidden; white-space:nowrap; margin-top:36px; opacity:.85;}
.oloxp-home .langflow .in{display:inline-block; animation:oloxmarq 30s linear infinite; font-family:'JetBrains Mono',monospace;
  font-size:13px; letter-spacing:.14em; color:var(--faint);}
.oloxp-home .langflow .in em{font-style:normal; color:var(--lang); margin:0 18px;}
.oloxp-home .langflow.rev .in{animation-direction:reverse; animation-duration:36s;}
.oloxp-home .lcode{position:absolute; top:-40px; left:50%; transform:translateX(-50%); font-family:'JetBrains Mono',monospace;
  font-size:11px; letter-spacing:.3em; color:var(--faint); text-transform:uppercase; white-space:nowrap;}
.oloxp-home .lcode b{color:var(--lang);}
.oloxp-home .langpicks{display:flex; gap:7px; flex-wrap:wrap; justify-content:center; margin-top:30px;}
.oloxp-home .langpicks button{font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.14em;
  color:rgba(250,247,242,.7); background:transparent; border:1px solid var(--panelline); border-radius:100px;
  padding:9px 18px; cursor:pointer; transition:all .15s; text-transform:uppercase;}
.oloxp-home .langpicks button:hover{color:#fff; border-color:var(--lang);}
.oloxp-home .langpicks button.ok{color:#0C0E13; background:#38C172; border-color:#38C172;}
.oloxp-home .langpicks button.ko{color:#F0857F; border-color:rgba(232,69,61,.8); animation:oloxlshake .3s ease;}
@keyframes oloxlshake{25%{transform:translateX(-6px);}75%{transform:translateX(6px);}}

/* SCENA SECURITY — radar */
.oloxp-home .radarwrap{display:flex; gap:34px; align-items:center; width:100%; justify-content:center;}
.oloxp-home .radar{width:min(46vh,320px); aspect-ratio:1; border-radius:50%; position:relative; flex-shrink:0;
  background:radial-gradient(circle, rgba(38,184,232,.06) 0%, transparent 70%);
  border:1px solid rgba(38,184,232,.3); cursor:crosshair;}
.oloxp-home .radar::before, .oloxp-home .radar::after{content:""; position:absolute; border-radius:50%; border:1px solid rgba(38,184,232,.18);}
.oloxp-home .radar::before{inset:18%;} .oloxp-home .radar::after{inset:36%;}
.oloxp-home .radar .cross{position:absolute; inset:0;}
.oloxp-home .radar .cross::before{content:""; position:absolute; left:50%; top:0; bottom:0; width:1px; background:rgba(38,184,232,.14);}
.oloxp-home .radar .cross::after{content:""; position:absolute; top:50%; left:0; right:0; height:1px; background:rgba(38,184,232,.14);}
.oloxp-home .sweep{position:absolute; inset:0; border-radius:50%; overflow:hidden;}
.oloxp-home .sweep::before{content:""; position:absolute; inset:0; border-radius:50%;
  background:conic-gradient(from 0deg, rgba(38,184,232,.5) 0deg, transparent 70deg);
  animation:oloxsweep 3.4s linear infinite;}
@keyframes oloxsweep{to{transform:rotate(360deg);}}
.oloxp-home .seclog{font-family:'JetBrains Mono',monospace; font-size:11.5px; line-height:2.1; color:var(--dim); min-width:0;}
.oloxp-home .seclog div{white-space:nowrap;}
.oloxp-live.oloxp-home .seclog div{opacity:0; transform:translateX(14px); transition:all .4s ease; transition-delay:var(--d);}
.oloxp-live.oloxp-home .scene.go .seclog div{opacity:1; transform:none;}
.oloxp-home .seclog .ok{color:var(--tutor);} .oloxp-home .seclog .bad{color:var(--build);} .oloxp-home .seclog .cy{color:var(--secur);}
.oloxp-home .shieldring{position:absolute; inset:-14px; border-radius:50%; border:1px dashed rgba(38,184,232,.35); animation:oloxspin 24s linear infinite;}
@keyframes oloxspin{to{transform:rotate(360deg);}}
.oloxp-home .atk{position:absolute; width:11px; height:11px; border-radius:50%; background:#F0857F;
  box-shadow:0 0 12px rgba(232,69,61,.85); transform:translate(-50%,-50%); pointer-events:none; z-index:2;}
.oloxp-home .atk.boom{animation:oloxatkboom .3s ease-out forwards;}
@keyframes oloxatkboom{to{transform:translate(-50%,-50%) scale(2.6); opacity:0; filter:brightness(2);}}
.oloxp-home .beam{position:absolute; left:50%; top:50%; height:2px; width:50%; transform-origin:left center;
  background:linear-gradient(90deg, var(--secur), transparent); pointer-events:none; z-index:2;
  animation:oloxbeamfade .22s ease-out forwards;}
@keyframes oloxbeamfade{from{opacity:1;}to{opacity:0;}}
.oloxp-home .radar.breach{animation:oloxbreachflash .45s ease;}
@keyframes oloxbreachflash{30%{border-color:#E8453D; box-shadow:inset 0 0 40px rgba(232,69,61,.6);}}
.oloxp-home .radhud{position:absolute; bottom:-46px; left:50%; transform:translateX(-50%); white-space:nowrap;
  font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--dim);}
.oloxp-home .radhud b{color:var(--secur);}
.oloxp-home .rovl{position:absolute; inset:0; border-radius:50%; background:rgba(12,14,19,.8); z-index:3;
  display:flex; flex-direction:column; gap:10px; align-items:center; justify-content:center; text-align:center;
  font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.18em; text-transform:uppercase; color:var(--dim); padding:10%;}
.oloxp-home .rovl b{font-family:'Fraunces',serif; font-size:24px; font-weight:500; letter-spacing:-.01em; text-transform:none; color:var(--secur);}

/* SCENA TOUR — oblò con paesaggio */
.oloxp-home .porthole{width:min(50vh,380px); aspect-ratio:1; border-radius:50%; overflow:hidden; position:relative;
  border:2px solid color-mix(in srgb, var(--tour) 50%, transparent); box-shadow:0 0 0 14px color-mix(in srgb, var(--tour) 7%, transparent), 0 40px 80px -30px rgba(0,0,0,.8);
  cursor:grab; touch-action:none;}
.oloxp-home .porthole.grabbing{cursor:grabbing;}
.oloxp-home .vista{position:absolute; top:0; bottom:0; left:0; width:300%; will-change:transform;}
.oloxp-home .vista.sky{background:
    radial-gradient(circle at 22% 30%, #FFD98A 0%, rgba(245,166,35,.75) 4.5%, rgba(245,166,35,.16) 9%, transparent 13%),
    radial-gradient(circle at 71% 24%, rgba(250,247,242,.14) 0%, transparent 4%),
    radial-gradient(ellipse 8% 2.4% at 36% 26%, rgba(250,247,242,.2) 60%, transparent 100%),
    radial-gradient(ellipse 10% 2.8% at 58% 36%, rgba(250,247,242,.16) 60%, transparent 100%),
    linear-gradient(180deg, #131A2C 0%, #2A3352 42%, #7A4A46 72%, #C97845 100%);
  transform:translateX(calc(var(--pp,0) * -22% + var(--drag,0px) * .35));}
.oloxp-home .vista.far{background:#241E33;
  clip-path:polygon(0 100%, 0 66%, 4% 58%, 8% 64%, 13% 50%, 18% 60%, 23% 46%, 29% 58%, 34% 52%, 40% 62%, 46% 44%, 52% 58%, 58% 50%, 64% 60%, 69% 42%, 75% 56%, 81% 48%, 87% 62%, 93% 52%, 100% 60%, 100% 100%);
  transform:translateX(calc(var(--pp,0) * -40% + var(--drag,0px) * .6));}
.oloxp-home .vista.near{background:#12101B;
  clip-path:polygon(0 100%, 0 84%, 5% 74%, 11% 82%, 17% 68%, 24% 80%, 31% 72%, 38% 84%, 45% 70%, 53% 82%, 60% 74%, 68% 86%, 75% 72%, 83% 82%, 90% 76%, 100% 84%, 100% 100%);
  transform:translateX(calc(var(--pp,0) * -58% + var(--drag,0px) * 1));}
.oloxp-home .spot{box-shadow:0 0 0 0 color-mix(in srgb, var(--tour) 50%, transparent); pointer-events:auto;}
.oloxp-home .compass{position:absolute; bottom:-10px; left:50%; transform:translateX(-50%);
  font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.4em; color:var(--tour);}
.oloxp-home .tg-card{position:absolute; z-index:7; left:50%; top:50%; transform:translate(-50%,-50%); width:84%;
  background:rgba(12,14,19,.94); border:1px solid color-mix(in srgb, var(--tour) 55%, transparent); border-radius:14px; padding:20px 22px;
  text-align:center; box-shadow:0 30px 70px -20px rgba(0,0,0,.9);}
.oloxp-home .tg-card .tg-k{font-family:'JetBrains Mono',monospace; font-size:9px; font-weight:700; letter-spacing:.22em;
  text-transform:uppercase; color:var(--tour); display:block; margin-bottom:10px;}
.oloxp-home .tg-card .tg-r{font-family:'Fraunces',serif; font-style:italic; font-size:16.5px; line-height:1.45; color:var(--paper); text-wrap:pretty;}
.oloxp-home .tg-close{position:absolute; top:8px; right:12px; background:none; border:none; color:var(--faint); cursor:pointer; font-size:14px;}
.oloxp-home .tg-close:hover{color:var(--paper);}
.oloxp-home .tg-digits{display:flex; gap:10px; justify-content:center; margin:12px 0 14px;}
.oloxp-home .tg-dig{display:flex; flex-direction:column; align-items:center; gap:4px;}
.oloxp-home .tg-dig button{width:34px; height:22px; background:transparent; border:1px solid color-mix(in srgb, var(--tour) 40%, transparent); border-radius:5px;
  color:var(--tour); cursor:pointer; font-size:10px; line-height:1;}
.oloxp-home .tg-dig button:hover{background:color-mix(in srgb, var(--tour) 15%, transparent);}
.oloxp-home .tg-dig .dv{font-family:'JetBrains Mono',monospace; font-size:26px; font-weight:700; color:var(--paper);
  width:34px; padding:4px 0; border:1px solid color-mix(in srgb, var(--tour) 55%, transparent); border-radius:6px; background:var(--bg-2); text-align:center;}
.oloxp-home .tg-card.wrong{animation:oloxlshake .3s ease;}
.oloxp-home .tg-ok{font-family:'JetBrains Mono',monospace; font-size:9.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--faint); margin-top:8px; display:block;}
.oloxp-home .tg-win{position:absolute; inset:0; z-index:8; border-radius:50%; background:rgba(12,14,19,.85);
  display:flex; flex-direction:column; gap:10px; align-items:center; justify-content:center; text-align:center;
  font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:var(--dim);}
.oloxp-home .tg-win b{font-family:'Fraunces',serif; font-size:26px; font-weight:500; letter-spacing:-.01em; text-transform:none; color:var(--tour);}

/* SCENA TUTOR — percorso + quiz drag */
.oloxp-home .course{width:min(100%,500px);}
.oloxp-home .xpbar{height:10px; border-radius:100px; background:rgba(250,247,242,.08); overflow:hidden; margin-bottom:26px;}
.oloxp-home .xpbar i{display:block; height:100%; border-radius:100px; background:linear-gradient(90deg,#2E8A5B,var(--tutor));
  width:calc(min(var(--pp,0)*1.7,1) * 100%);}
.oloxp-home .xphead{display:flex; justify-content:space-between; font-family:'JetBrains Mono',monospace; font-size:11px;
  letter-spacing:.18em; text-transform:uppercase; color:var(--dim); margin-bottom:10px;}
.oloxp-home .xphead b{color:var(--tutor);}
.oloxp-home .badge{position:absolute; top:-8px; right:2%; width:82px; height:82px; border-radius:50%; background:var(--tutor); color:#0C0E13;
  display:flex; flex-direction:column; align-items:center; justify-content:center; transform:rotate(8deg);
  font-family:'JetBrains Mono',monospace; font-size:8.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  box-shadow:0 16px 36px -12px rgba(56,193,114,.5);}
.oloxp-home .badge b{font-family:'Fraunces',serif; font-size:26px; letter-spacing:0;}
.oloxp-home .tquiz{display:flex; flex-direction:column; gap:18px;}
.oloxp-home .tq-q{font-family:'Fraunces',serif; font-size:clamp(18px,1.8vw,24px); line-height:1.5; letter-spacing:-.01em;}
.oloxp-home .tq-slot{display:inline-block; min-width:150px; text-align:center; padding:4px 14px; border-radius:100px;
  border:2px dashed rgba(56,193,114,.6); color:var(--tutor); font-family:'JetBrains Mono',monospace;
  font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; vertical-align:middle; transition:all .2s;}
.oloxp-home .tq-slot.over{background:rgba(56,193,114,.15); border-style:solid;}
.oloxp-home .tq-slot.okk{background:var(--tutor); border-color:var(--tutor); color:#0C0E13;}
.oloxp-home .tq-slot.kko{animation:oloxlshake .3s ease; border-color:rgba(232,69,61,.8); color:#F0857F;}
.oloxp-home .tq-chips{display:flex; gap:10px; flex-wrap:wrap;}
.oloxp-home .tq-chip{font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; color:var(--tutor); background:var(--bg-2); border:1.5px solid rgba(56,193,114,.6);
  border-radius:100px; padding:11px 20px; cursor:grab; user-select:none; touch-action:none;}
.oloxp-home .tq-chip:hover{background:rgba(56,193,114,.12);}
.oloxp-home .tq-chip.drag{position:fixed; z-index:99; pointer-events:none; transform:translate(-50%,-50%) rotate(-3deg);
  box-shadow:0 18px 40px -12px rgba(56,193,114,.5); cursor:grabbing;}
.oloxp-home .tq-stat{font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:var(--faint);}
.oloxp-home .tq-stat b{color:var(--tutor);}

/* PANEL FINALE */
.oloxp-home .panel.outro{background:radial-gradient(circle at 70% 60%, #161A24 0%, var(--bg) 62%);}
.oloxp-home .panel.outro .inner{grid-template-columns:1fr; text-align:center;}
.oloxp-home .panel.outro h2{max-width:none;}
.oloxp-home .panel.outro .inner.outro-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr); text-align:left; gap:5vw;}
@media(max-width:900px){ .oloxp-home .panel.outro .inner.outro-grid{grid-template-columns:1fr; gap:50px;} }
.oloxp-home .madwrap{position:relative;}
.oloxp-home .madcard{position:relative; background:var(--bg-2); border:1px solid var(--panelline); border-radius:14px;
  padding:26px 28px 24px; transform:rotate(-1.4deg); box-shadow:0 40px 90px -40px rgba(0,0,0,.8);
  background-image:radial-gradient(circle, rgba(250,247,242,.05) 1px, transparent 1px); background-size:22px 22px;}
.oloxp-home .madcard::before{content:""; position:absolute; left:18px; right:18px; top:-1px; height:10px;
  background:repeating-linear-gradient(90deg, var(--olo) 0 14px, var(--booking) 14px 28px, var(--lang) 28px 42px, var(--secur) 42px 56px, var(--tour) 56px 70px, var(--tutor) 70px 84px);
  border-radius:0 0 6px 6px; opacity:.85;}
.oloxp-home .madhead{display:flex; justify-content:space-between; align-items:center; gap:12px; margin:8px 0 20px;
  font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:.24em; text-transform:uppercase; color:var(--faint);}
.oloxp-home .blinkdot{width:8px; height:8px; border-radius:50%; background:var(--olo); animation:oloxbl 1.2s steps(1) infinite;}
@keyframes oloxbl{50%{opacity:.15;}}
.oloxp-home .madlib{font-family:'Fraunces',serif; font-weight:400; font-size:clamp(19px,1.7vw,26px); line-height:2.05; letter-spacing:-.01em;}
.oloxp-home .madlib input{font-family:'Fraunces',serif !important; font-style:italic !important; font-size:inherit !important;
  color:var(--olo) !important; line-height:normal !important;
  background:transparent !important; border:none !important; border-bottom:2px dashed rgba(232,69,61,.55) !important;
  outline:none; box-shadow:none !important; border-radius:0 !important; height:auto !important;
  padding:0 6px 2px !important; margin:0 4px; max-width:100%; transition:all .2s; display:inline-block; width:auto;}
.oloxp-home .madlib input:focus{border-bottom-style:solid; box-shadow:0 10px 24px -14px rgba(232,69,61,.7); transform:rotate(-.6deg);}
.oloxp-home .madlib input::placeholder{color:rgba(232,69,61,.4);}
.oloxp-home .pick{display:inline-flex; gap:6px; flex-wrap:wrap; vertical-align:middle; margin:0 6px;}
.oloxp-home .pick button{font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.06em;
  color:var(--c); background:transparent; border:1.5px dashed var(--c); border-radius:100px;
  padding:5px 13px; cursor:pointer; transition:all .18s; transform:rotate(var(--tilt,0deg));}
.oloxp-home .pick button:nth-child(odd){--tilt:-2deg;} .oloxp-home .pick button:nth-child(even){--tilt:2deg;}
.oloxp-home .pick button:hover{transform:rotate(0deg) translateY(-2px);}
.oloxp-home .pick button.sel{background:var(--c); color:#0C0E13; border-style:solid; transform:rotate(0deg) scale(1.06);
  box-shadow:0 10px 26px -10px var(--c);}
.oloxp-home .madfoot{display:flex; align-items:center; gap:16px; margin-top:22px; flex-wrap:wrap;}
.oloxp-home .madnote{font-family:'JetBrains Mono',monospace; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--faint);}
.oloxp-home .madcard .bigstamp{position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:none;
  font-family:'JetBrains Mono',monospace; font-weight:700; font-size:clamp(18px,2vw,30px); letter-spacing:.3em; text-transform:uppercase;
  color:var(--olo); opacity:0;}
.oloxp-home .madcard .bigstamp::before{content:""; position:absolute; width:78%; height:52%; border:5px solid var(--olo); border-radius:12px;}
.oloxp-home .madcard.stamped .bigstamp{animation:oloxstampin .5s cubic-bezier(.2,1.6,.4,1) both; transform:rotate(-10deg);}
@keyframes oloxstampin{from{opacity:0; transform:rotate(-10deg) scale(3);}60%{opacity:1;}to{opacity:.95; transform:rotate(-10deg) scale(1);}}
.oloxp-home .madcard.stamped .madlib, .oloxp-home .madcard.stamped .madfoot{filter:blur(1px); opacity:.45;}
.oloxp-home .madcard.shake{animation:oloxshake .4s ease;}
@keyframes oloxshake{0%,100%{transform:rotate(-1.4deg) translateX(0);}25%{transform:rotate(-1.4deg) translateX(-8px);}75%{transform:rotate(-1.4deg) translateX(8px);}}
.oloxp-home .outro-links{display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-top:38px;}
.oloxp-home .outro-links a{font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:600; letter-spacing:.12em;
  text-transform:uppercase; padding:11px 20px; border:1px solid var(--panelline); border-radius:100px; color:var(--dim); transition:all .18s;}
.oloxp-home .outro-links a:hover{border-color:var(--c); color:var(--c); transform:translateY(-2px);}
.oloxp-home .outro .fine, .oloxp-home .panel.outro .fine{margin-top:52px; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.26em;
  text-transform:uppercase; color:var(--faint);}

/* decorazioni vettoriali */
.oloxp-home .deco{position:absolute; pointer-events:none; z-index:0;}
.oloxp-home .d-ring{border:1px dashed rgba(250,247,242,.14); border-radius:50%;}
.oloxp-home .d-ring.c{border-color:color-mix(in srgb, var(--c,#fff) 30%, transparent);}
.oloxp-home .d-ring.spin{animation:oloxdspin 60s linear infinite;}
@keyframes oloxdspin{to{transform:rotate(360deg);}}
.oloxp-home .d-cross{width:20px; height:20px;}
.oloxp-home .d-cross::before, .oloxp-home .d-cross::after{content:""; position:absolute; background:rgba(250,247,242,.25);}
.oloxp-home .d-cross::before{left:50%; top:0; bottom:0; width:1px;}
.oloxp-home .d-cross::after{top:50%; left:0; right:0; height:1px;}
.oloxp-home .d-coord{font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:.3em; text-transform:uppercase; color:rgba(250,247,242,.22); white-space:nowrap;}
.oloxp-home .d-dots{background-image:radial-gradient(circle, rgba(250,247,242,.14) 1px, transparent 1px); background-size:16px 16px;}
.oloxp-home .d-bar{background:repeating-linear-gradient(90deg, color-mix(in srgb, var(--c,#fff) 40%, transparent) 0 10px, transparent 10px 18px); height:2px;}

/* MOBILE: torna verticale */
@media(max-width:900px){
  .oloxp-home .ox-rail{height:auto;}
  .oloxp-home .ox-view{position:static; height:auto; overflow:visible;}
  .oloxp-home .ox-track{display:block; height:auto; transform:none !important;}
  .oloxp-home .panel{flex:none; width:100%; height:auto; min-height:100vh; padding:90px 0 120px; border-right:none; border-bottom:1px solid var(--panelline);}
  .oloxp-home .panel .inner{grid-template-columns:minmax(0,1fr); gap:56px;}
  .oloxp-home .scene{height:auto; min-height:340px;}
  .oloxp-home .bigno{display:none;}
  .oloxp-home .chrome{gap:10px; padding:12px 14px; background:rgba(12,14,19,.88); backdrop-filter:blur(10px); border-bottom:1px solid var(--panelline);}
  body:has(.oloxp-live .dnav) .oloxp-live.oloxp-home .chrome{top:52px; background:transparent; backdrop-filter:none; border-bottom:0; padding-top:8px;}
  .oloxp-home .chrome .jump{gap:2px;}
  .oloxp-home .chrome .jump button{width:24px; height:24px;}
  .oloxp-home .chrome .jump button span{width:7px; height:7px;}
  .oloxp-home .langsw{margin-left:0;}
  .oloxp-home .hint{bottom:58px; right:14px;}
  .oloxp-home .radarwrap{flex-wrap:wrap; row-gap:70px;}
  .oloxp-home .marq{bottom:76px;}
}
@media (prefers-reduced-motion: reduce){
  .oloxp-home .marq .in, .oloxp-home .langflow .in, .oloxp-home .sweep::before, .oloxp-home .shieldring,
  .oloxp .spot, .oloxp-home .hint b, .oloxp .medal .orbit, .oloxp .hs .dot{animation:none;}
  .oloxp-live.oloxp-home .wall i, .oloxp-live.oloxp-home .seclog div{transition:none; opacity:1; transform:none;}
}

/* hint interazione (play) */
.oloxp-home .play{position:absolute; z-index:5; display:inline-flex; align-items:center; gap:8px;
  font-family:'JetBrains Mono',monospace; font-size:9.5px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
  color:var(--c,var(--olo)); background:rgba(12,14,19,.75); border:1px dashed color-mix(in srgb, var(--c,#fff) 55%, transparent);
  border-radius:100px; padding:7px 14px; backdrop-filter:blur(6px); pointer-events:none;}
.oloxp-home .play::before{content:"◈"; animation:oloxplaypulse 1.6s ease-in-out infinite;}
@keyframes oloxplaypulse{50%{opacity:.35;}}

/* Pagina con panorama fisso (tour): le tile diventano trasparenti, come il
   body del sito sorgente; la classe la aggiunge il modulo JS "pano". */
.oloxp.oloxp-clear{background:transparent;}

/* Il full-bleed dei template pagina usa transform:translateX(-50%) e
   container-query: entrambi creano un containing block che ROMPE i
   position:fixed interni (nav, chrome, progress, credits, scanline,
   panorama, barra XP). Quando il template contiene tile olox live, si
   ottiene lo stesso centraggio con un margin negativo — che un containing
   block non lo crea — e si spegne il container. */
.olo-template:has(.oloxp-live){
  transform:none;
  container:none;
  left:auto;
  margin-left:0;
  width:100%;
}

/* Stesso problema, altra trappola: i wrapper di olobuild creano stacking
   context (header fixed z:1000, footer relative z:1, .olo-tile-content
   relative z:2) e gli elementi FIXED delle tile olox (dnav 80, chrome/progress
   90, credits 92, scanline/xp) restano intrappolati nel layer del proprio
   wrapper invece di comporsi fra loro. Sul sito originale sono tutti figli di
   body: qui si replica quella gerarchia — i tile-content che contengono olox
   perdono lo z-index (i fixed salgono al root con i loro z di design) e
   l'header wrapper scende a 80 = lo z della dnav originale (sopra il
   contenuto, sotto chrome 90 e credits 92). */
.olo-tile-content:has(.oloxp-live){
  z-index:auto;
}
footer.olo-site-footer:has(.oloxp-live){
  z-index:auto;
}
header.olo-site-header:has(.oloxp-live){
  z-index:80;
}

/* ---- Canvas builder: neutralizza le altezze viewport dentro l'editor ---- */
.oloxp:not(.oloxp-live) .dhero{min-height:70vh;}
.oloxp:not(.oloxp-live) .ox-rail{height:auto;}
.oloxp:not(.oloxp-live) .ox-view{height:auto; overflow:visible; position:static;}
.oloxp:not(.oloxp-live) .ox-track{height:auto; overflow-x:auto;}
.oloxp:not(.oloxp-live) .panel{height:78vh; min-height:560px; flex:0 0 92%;}
.oloxp:not(.oloxp-live) .ox-asmrail{height:auto;}
.oloxp:not(.oloxp-live) .ox-asmview{height:auto; position:static; padding:80px 0;}
.oloxp:not(.oloxp-live) .blk{opacity:1; transform:none;}
.oloxp:not(.oloxp-live) .ox-dayrail{height:auto;}
.oloxp:not(.oloxp-live) .ox-dayview{height:auto; position:static; padding:80px 0;}
.oloxp:not(.oloxp-live) .slot.b .stamp{opacity:1; transform:translateY(-50%) rotate(-8deg) scale(1);}
