/* =========================================================
   Chiara — due facce, una tendina.
   Profilo tecnico sotto, consulente sopra.
   Struttura: le due "pane" stanno nella STESSA cella di grid,
   quindi hanno sempre la stessa altezza. Quella sopra (.cons)
   viene ritagliata con clip-path: nessun layout per frame,
   solo il ritaglio -> scorre fluida anche su telefono.
   ========================================================= */

/* --split è registrata: così è animabile via transition */
@property --split {
  syntax: '<percentage>';
  inherits: true;
  initial-value: 50%;
}

:root{
  /* lato sviluppatrice */
  --tech-bg:#0e1a2b; --tech-fg:#dfe7f2; --tech-muted:#9fb0c5; --tech-dim:#7d8ea6; --tech-acc:#7cf5c8;
  /* lato consulente */
  --cons-bg:#f4efe6;  --cons-fg:#1b1a17;  --cons-muted:#4a463f; --cons-dim:#6f6a61;  --cons-acc:#b8321a;

  --split:50%;          /* posizione della tendina (aggiornata da curtain.js) */
  --handle:#fff;
  --handle-y:50%;       /* altezza della maniglia nel viewport */
  --grip:44px;          /* zona di presa, larga quanto un dito */
  --handle-w:56px;      /* metà maniglia (valore di riserva: curtain.js la misura davvero) */
  --pad-x:clamp(18px,5vw,64px);
  --sect:clamp(48px,9vh,110px);
}

*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--tech-bg);
  overflow-x:hidden;
  -webkit-tap-highlight-color:transparent;
}
a{color:inherit}
img,svg{max-width:100%}

/* ---------- palco ---------- */
.stage{
  position:relative;
  display:grid;              /* le due pane si impilano nella stessa cella */
  min-height:100vh;
  min-height:100svh;
  user-select:none;
  -webkit-user-select:none;
}
.stage > .pane{grid-area:1/1}

.pane{min-width:0;min-height:100vh;min-height:100svh}
.pane-inner{max-width:1200px;margin:0 auto;padding:0 var(--pad-x) clamp(64px,14vh,130px)}

.topbar{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 24px;padding:22px 0;font-size:12px}
.hero{padding-top:var(--sect)}
.hero h1{margin-top:20px;font-size:clamp(38px,7.4vw,84px);line-height:.98}
.hero p{margin-top:clamp(20px,3vh,28px)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:clamp(20px,3vw,28px);padding-top:var(--sect)}
.cell{padding-top:16px;min-height:140px}
.cta{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:24px;padding-top:var(--sect)}
.btn{display:inline-block;padding:14px 26px;text-decoration:none;transition:background .15s}

/* ---------- profilo tecnico (sotto) ---------- */
.tech{background:var(--tech-bg);color:var(--tech-fg);font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace}
.tech .topbar{color:var(--tech-dim)}
.tech .tag{font-size:12px;color:var(--tech-acc)}
.tech h1{font-weight:500;letter-spacing:-.04em}
.tech h1 span{color:var(--tech-acc)}
.tech .hero p{font-size:clamp(14px,3.4vw,16px);line-height:1.65;color:var(--tech-muted);max-width:60ch}

/* lista comandi */
.cmdlist{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 28px;padding-top:clamp(36px,7vh,80px)}
.cmdlist button{
  width:100%;text-align:left;background:none;border:0;border-top:1px solid rgba(223,231,242,.2);
  padding:16px 0;color:inherit;font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:4px;
  -webkit-tap-highlight-color:transparent;
}
.cmdlist b{font-weight:500;color:var(--tech-acc);font-size:15px}
.cmdlist span{font-size:13px;color:var(--tech-muted)}
.cmdlist button:hover b,.cmdlist button:focus-visible b{text-decoration:underline;text-underline-offset:4px}
.cmdlist button:focus-visible{outline:2px solid var(--tech-acc);outline-offset:-2px}

/* terminale */
.term{
  margin-top:clamp(36px,7vh,80px);background:#08111d;border:1px solid rgba(223,231,242,.15);border-radius:6px;
  overflow:hidden;user-select:text;-webkit-user-select:text;cursor:text
}
.term-bar{display:flex;align-items:center;gap:7px;padding:9px 12px;background:#0b1626;font-size:12px;color:var(--tech-dim)}
.term-bar i{width:10px;height:10px;border-radius:50%;background:#2a3a52}
.term-bar span{margin-left:8px}
.term-out{
  padding:14px 16px 0;font-size:14px;line-height:1.6;color:var(--tech-muted);
  max-height:clamp(180px,46svh,440px);overflow-y:auto;-webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;white-space:pre-wrap;word-break:break-word
}
.term-out > div{animation:fade .18s ease both}
@keyframes fade{from{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}
.term-out .in{color:var(--tech-fg)}
.term-out .in::before{content:"~ $ ";color:var(--tech-acc)}
.term-out .k{color:var(--tech-acc)}
.term-out .err{color:#f0a37c}
.term-out a{color:var(--tech-acc)}
.term-line{display:flex;gap:10px;padding:10px 16px 14px}
.prompt{color:var(--tech-acc);font-size:14px;line-height:1.6}
#term-in{
  flex:1;min-width:0;background:none;border:0;color:var(--tech-fg);font:inherit;
  font-size:16px;              /* 16px = niente zoom automatico su iOS */
  outline:none;caret-color:var(--tech-acc)
}
#term-in::placeholder{color:var(--tech-dim)}

.tech .cell{border-top:1px solid rgba(223,231,242,.2)}
.tech .cta h2{font-size:clamp(24px,5vw,30px);line-height:1.1;font-weight:500;letter-spacing:-.03em}
.tech .cta small{display:block;font-size:14px;color:var(--tech-muted);margin-top:10px}
.tech .btn{border:1px solid var(--tech-acc);color:var(--tech-acc);font-size:14px}
.tech .btn:hover{background:rgba(124,245,200,.12)}

/* ---------- consulente (sopra, ritagliato) ---------- */
.cons{
  background:var(--cons-bg);color:var(--cons-fg);font-family:'Bricolage Grotesque',system-ui,sans-serif;
  clip-path:inset(0 0 0 var(--split));
}
/* durante il trascinamento promuoviamo il livello: il ritaglio resta fluido */
html.dragging .cons{will-change:clip-path}
.cons .topbar{color:var(--cons-dim)}
.cons .tag{font-size:13px;color:var(--cons-acc);font-weight:600}
.cons h1{font-weight:800;letter-spacing:-.035em}
.cons h1 em{font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-weight:400;color:var(--cons-acc);letter-spacing:-.01em}
.cons .hero p{font-size:clamp(17px,4.2vw,19px);line-height:1.5;color:var(--cons-muted);max-width:52ch}
.cons .cell{border-top:1px solid var(--cons-fg)}
.cons .t{font-size:clamp(20px,4.6vw,22px);font-weight:700;letter-spacing:-.01em}
.cons .d{font-size:15px;line-height:1.5;color:var(--cons-muted);margin-top:8px}
.cons .cta h2{font-size:clamp(28px,6.4vw,36px);line-height:1.05;font-weight:800;letter-spacing:-.03em}
.cons .cta small{display:block;font-size:15px;color:var(--cons-muted);margin-top:10px}
.cons .btn{background:var(--cons-fg);color:var(--cons-bg);font-size:15px;font-weight:600}
.cons .btn:hover{background:var(--cons-acc)}

/* riquadro del test, lato consulente */
.promo{
  margin-top:var(--sect);display:flex;justify-content:space-between;align-items:flex-end;
  gap:clamp(18px,3vw,32px);flex-wrap:wrap;
  border:1px solid var(--cons-fg);padding:clamp(20px,3vw,32px);background:rgba(27,26,23,.04)
}
.promo > div{max-width:58ch}
.promo .btn{flex:0 0 auto;white-space:nowrap}

/* =========================================================
   La tendina. Elementi figli di <body> e position:fixed:
   - restano sempre nel viewport (niente maniglia persa
     a metà pagina quando si scrolla sul telefono)
   - figli diretti del body -> mix-blend-mode difference
     continua a funzionare (nessun contenitore che isola)
   ========================================================= */
.divider{
  position:fixed;top:0;bottom:0;left:var(--split);width:2px;margin-left:-1px;
  background:var(--handle);mix-blend-mode:difference;pointer-events:none;z-index:8
}
.grip{
  position:fixed;top:0;bottom:0;width:var(--grip);
  /* la presa segue la tendina ma resta sempre tutta dentro allo schermo */
  left:clamp(calc(var(--grip) / 2), var(--split), calc(100% - var(--grip) / 2));
  transform:translateX(-50%);cursor:col-resize;
  touch-action:pan-y;           /* orizzontale = trascino la tendina, verticale = la pagina scorre */
  z-index:9
}
.handle{
  position:fixed;top:var(--handle-y);transform:translate(-50%,-50%);
  /* idem: agli estremi la maniglia si appoggia al bordo, la linea la attraversa */
  left:clamp(var(--handle-w), var(--split), calc(100% - var(--handle-w)));
  display:flex;gap:10px;align-items:center;background:var(--handle);color:var(--cons-fg);
  padding:11px 15px;border-radius:999px;font:11px/1 'JetBrains Mono',ui-monospace,monospace;
  box-shadow:0 6px 18px rgba(0,0,0,.28);cursor:grab;border:0;
  touch-action:none;z-index:10;white-space:nowrap
}
.handle .sm{display:none}          /* etichette corte: solo su telefono */
.handle:active,html.dragging .handle{cursor:grabbing}
.handle .arrows{color:var(--cons-acc);letter-spacing:.1em}
.handle .side{opacity:.55;font-weight:500}
.handle:focus-visible{outline:3px solid var(--tech-acc);outline-offset:3px}

.hint{
  position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));transform:translateX(-50%);
  font:12px 'JetBrains Mono',ui-monospace,monospace;color:#fff;mix-blend-mode:difference;
  pointer-events:none;transition:opacity .4s;white-space:nowrap;z-index:8
}
html:not(.idle) .hint{opacity:0}

/* transizione morbida quando la tendina si sposta da sola (tap, tastiera) */
html.anim{transition:--split .35s ease}

/* pulsazione finché non si interagisce */
@keyframes pulse{
  0%,100%{transform:translate(-50%,-50%) scale(1);box-shadow:0 6px 18px rgba(0,0,0,.28)}
  50%{transform:translate(-50%,-50%) scale(1.1);box-shadow:0 6px 18px rgba(0,0,0,.28),0 0 0 14px rgba(255,255,255,.18)}
}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
html.idle .handle{animation:pulse 1.6s ease-in-out infinite}
html.idle .handle .arrows{animation:blink 1.6s ease-in-out infinite}

/* ---------- telefono ---------- */
@media (max-width:640px){
  :root{--grip:56px;--handle-y:64%;--handle-w:84px}  /* presa più larga, maniglia a portata di pollice */
  .topbar{font-size:11px;gap:4px 12px}
  .topbar span:last-child{display:none}
  .cta,.promo{align-items:flex-start;flex-direction:column}
  .btn{padding:14px 22px}
  .handle{padding:12px 16px;font-size:12px;gap:8px}
  .handle .lg{display:none}
  .handle .sm{display:inline}
}
@media (pointer:coarse){
  :root{--grip:56px}
}

/* ---------- meno movimento ---------- */
@media (prefers-reduced-motion:reduce){
  html.idle .handle,html.idle .handle .arrows,.term-out > div{animation:none}
  html.anim{transition:none}
  .btn{transition:none}
}
