/* =========================================================================
   PoolConcept 2026 — Bureau d'étude 3D (CSS dedicat paginii)
   Identitate: planșă tehnică vie — creion, cote, extrudare 2D → 3D.
   ========================================================================= */
:root{
  --e-noir:#070708; --e-noir2:#0c0c0e;
  --e-ivoire:#EFEBE3; --e-gris:#9a9a9e;
  --e-or:#C8A24C; --e-or2:#E4C879; --e-orsoft:rgba(200,162,76,.34);
  --e-line:rgba(239,235,227,.12);
  --e-disp:"Bodoni Moda", Georgia, serif;
  --e-ui:"Space Grotesk", system-ui, sans-serif;
  --e-mono:"Space Mono", ui-monospace, monospace;
  --e-ease:cubic-bezier(.22,.61,.36,1); --e-slow:cubic-bezier(.16,1,.3,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--e-noir);color:var(--e-ivoire);font-family:var(--e-ui);font-weight:300;
  overflow-x:hidden;-webkit-font-smoothing:antialiased}

/* planșă: grilă blueprint fixă, discretă */
body::before{content:"";position:fixed;inset:0;z-index:-1;opacity:.5;
  background-image:linear-gradient(var(--e-line) 1px,transparent 1px),linear-gradient(90deg,var(--e-line) 1px,transparent 1px);
  background-size:44px 44px}
body::after{content:"";position:fixed;inset:0;z-index:-1;
  background:radial-gradient(120% 90% at 50% 30%,transparent 40%,rgba(7,7,8,.8) 100%)}

/* ---------- reticul CAD (urmărește cursorul, doar pointer fin) ---------- */
.cad-x,.cad-y{position:fixed;z-index:5;pointer-events:none;background:var(--e-orsoft);opacity:0;transition:opacity .4s var(--e-ease)}
.cad-x{left:0;right:0;height:1px}
.cad-y{top:0;bottom:0;width:1px}
.cad-read{position:fixed;right:clamp(1rem,2.6vw,2.2rem);bottom:1rem;z-index:5;pointer-events:none;
  font-family:var(--e-mono);font-size:.64rem;letter-spacing:.16em;color:var(--e-or2);opacity:0;transition:opacity .4s var(--e-ease)}
@media (pointer:fine){ body.cad-on .cad-x,body.cad-on .cad-y{opacity:.45} body.cad-on .cad-read{opacity:.9} }

/* ---------- HERO : scenă sticky, scroll = extrudare ---------- */
.h-track{height:260vh;position:relative}
.h-stick{position:sticky;top:0;height:100vh;overflow:hidden;display:grid;place-items:center}

.h-head{position:absolute;top:clamp(5.2rem,12vh,8rem);left:0;right:0;text-align:center;z-index:3;padding-inline:1rem}
.h-head .eyebrow{font-family:var(--e-mono);font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;color:var(--e-or2)}
.h-head h1{font-family:var(--e-disp);font-weight:500;font-size:clamp(2.2rem,6vw,4.6rem);line-height:1.05;margin:.5rem 0 0}
.h-head h1 .ch{opacity:0}
.h-head h1 .ch.on{opacity:1}
.h-head h1 .caret{display:inline-block;width:2px;height:.85em;background:var(--e-or2);vertical-align:-.08em;
  margin-left:2px;animation:eCaret 1s steps(2) infinite}
@keyframes eCaret{50%{opacity:0}}
.h-head .sub{font-family:var(--e-ui);color:var(--e-gris);font-size:.95rem;margin-top:.8rem;opacity:0;transform:translateY(10px);
  transition:.7s var(--e-ease)}
.h-head .sub.on{opacity:1;transform:none}

/* scena 3D */
.scene{position:relative;width:min(60vw,620px);aspect-ratio:16/10;perspective:1200px;z-index:2;--p:0}
.world{position:absolute;inset:0;transform-style:preserve-3d;
  transform:rotateX(calc(84deg - var(--p)*30deg)) rotateZ(calc(-4deg - var(--p)*24deg));
  transition:transform .08s linear}
.face{position:absolute;transform-style:preserve-3d}
/* conturul bazinului (plan) */
.rim{inset:6% 8%;border:1.5px solid var(--e-or2);box-shadow:0 0 24px rgba(200,162,76,.14)}
/* radier (fund) */
.floorp{inset:6% 8%;border:1px solid var(--e-orsoft);background:rgba(200,162,76,.04);
  transform:translateZ(calc(var(--p)*-110px))}
/* pereți: se ridică odată cu extrudarea */
.wall{background:linear-gradient(180deg,rgba(200,162,76,.10),rgba(200,162,76,.02));border:1px solid var(--e-orsoft)}
.wall.n{left:8%;right:8%;top:6%;height:calc(var(--p)*110px);transform-origin:top;transform:rotateX(-90deg)}
.wall.s{left:8%;right:8%;bottom:6%;height:calc(var(--p)*110px);transform-origin:bottom;transform:rotateX(90deg)}
.wall.w{top:6%;bottom:6%;left:8%;width:calc(var(--p)*110px);transform-origin:left;transform:rotateY(90deg)}
.wall.e{top:6%;bottom:6%;right:8%;width:calc(var(--p)*110px);transform-origin:right;transform:rotateY(-90deg)}
/* apă: apare la finalul extrudării */
.water{inset:6% 8%;transform:translateZ(calc(var(--p)*-34px));opacity:calc((var(--p) - .78)*4.5);
  background:linear-gradient(135deg,rgba(200,162,76,.16),rgba(120,160,190,.12));
  border:1px solid rgba(200,162,76,.2);backdrop-filter:blur(1px)}
/* grilă a planului, se estompează pe măsură ce urcă 3D-ul */
.plangrid{inset:6% 8%;opacity:calc(.65 - var(--p)*.55);
  background-image:linear-gradient(var(--e-line) 1px,transparent 1px),linear-gradient(90deg,var(--e-line) 1px,transparent 1px);
  background-size:12.5% 20%}

/* cote (dimension lines) */
.dim{position:absolute;font-family:var(--e-mono);font-size:.62rem;letter-spacing:.14em;color:var(--e-or2);opacity:0;transition:opacity .5s var(--e-ease)}
.dim.on{opacity:.95}
.dim .ln{position:absolute;background:var(--e-orsoft)}
.dim.top{left:8%;right:8%;top:-1.4rem;text-align:center}
.dim.top .ln{left:0;right:0;top:1.15em;height:1px}
.dim.top .ln::before,.dim.top .ln::after{content:"";position:absolute;top:-3.5px;width:1px;height:8px;background:var(--e-orsoft)}
.dim.top .ln::before{left:0}.dim.top .ln::after{right:0}
.dim.side{top:6%;bottom:6%;right:-1.2rem;writing-mode:vertical-rl;text-align:center}
.dim.side .ln{top:0;bottom:0;left:1.15em;width:1px}
.dim.side .ln::before,.dim.side .ln::after{content:"";position:absolute;left:-3.5px;width:8px;height:1px;background:var(--e-orsoft)}
.dim.side .ln::before{top:0}.dim.side .ln::after{bottom:0}
.dim.depth{left:50%;bottom:-2rem;transform:translateX(-50%)}

/* etichete de fază (colț scenă) */
.phase{position:absolute;top:-2.2rem;left:0;font-family:var(--e-mono);font-size:.64rem;letter-spacing:.24em;
  text-transform:uppercase;color:var(--e-gris)}
.phase b{color:var(--e-or2);font-weight:400}

/* colțuri planșă */
.h-stick .tick{position:absolute;width:clamp(30px,4vw,54px);height:clamp(30px,4vw,54px);z-index:3;opacity:.8}
.h-stick .tick.tl{top:clamp(4.6rem,10vh,6.4rem);left:clamp(1.2rem,3vw,2.4rem);border-top:1px solid var(--e-orsoft);border-left:1px solid var(--e-orsoft)}
.h-stick .tick.br{bottom:clamp(1rem,3vh,2rem);right:clamp(1.2rem,3vw,2.4rem);border-bottom:1px solid var(--e-orsoft);border-right:1px solid var(--e-orsoft)}

.h-cue{position:absolute;bottom:1.4rem;left:50%;transform:translateX(-50%);z-index:3;
  font-family:var(--e-mono);font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:var(--e-gris);
  display:flex;flex-direction:column;align-items:center;gap:.5rem}
.h-cue .bar{width:1px;height:30px;background:linear-gradient(var(--e-or2),transparent);animation:eCue 2s var(--e-ease) infinite}
@keyframes eCue{0%,100%{transform:scaleY(.4);opacity:.4}50%{transform:scaleY(1);opacity:1}}

/* ---------- PROCES : 4 pași care se trasează ---------- */
.steps{max-width:1100px;margin-inline:auto;padding:clamp(4rem,10vh,7rem) clamp(1.2rem,4vw,3rem)}
.steps h2{font-family:var(--e-disp);font-weight:500;font-size:clamp(1.9rem,4.4vw,3.2rem);margin:0 0 .4rem}
.steps .lead{color:var(--e-gris);max-width:56ch;margin:0 0 clamp(2.2rem,6vh,3.6rem)}
.step{position:relative;display:grid;grid-template-columns:auto 1fr;gap:clamp(1.2rem,3vw,2.4rem);
  padding:clamp(1.4rem,3.4vh,2.2rem) 0 clamp(1.4rem,3.4vh,2.2rem) clamp(1rem,2vw,1.6rem)}
.step .rail{position:absolute;left:0;top:0;bottom:0;width:1px;background:var(--e-line);overflow:hidden}
.step .rail i{position:absolute;left:0;top:0;width:100%;height:100%;background:var(--e-or2);
  transform:scaleY(0);transform-origin:top;transition:transform 1s var(--e-slow)}
.step.in .rail i{transform:scaleY(1)}
.step .no{font-family:var(--e-mono);font-size:.7rem;letter-spacing:.2em;color:var(--e-or2);padding-top:.4rem}
.step h3{font-family:var(--e-disp);font-weight:500;font-size:clamp(1.3rem,2.6vw,1.9rem);margin:0;position:relative;display:inline-block}
.step h3 .u{position:absolute;left:0;bottom:-6px;height:1px;width:100%;background:var(--e-orsoft);
  transform:scaleX(0);transform-origin:left;transition:transform .9s var(--e-slow) .15s}
.step.in h3 .u{transform:scaleX(1)}
.step p{color:var(--e-gris);max-width:52ch;margin:.7rem 0 0}
.step .no,.step h3,.step p{opacity:0;transform:translateY(12px);transition:.7s var(--e-ease)}
.step.in .no,.step.in h3,.step.in p{opacity:1;transform:none}
.step.in p{transition-delay:.12s}

/* ---------- CTA ---------- */
.cta{max-width:1100px;margin-inline:auto;padding:0 clamp(1.2rem,4vw,3rem) clamp(5rem,12vh,8rem);text-align:center}
.cta .rule{width:1px;height:clamp(40px,8vh,70px);background:linear-gradient(transparent,var(--e-or2));margin:0 auto clamp(1.4rem,4vh,2.2rem)}
.cta h2{font-family:var(--e-disp);font-weight:500;font-size:clamp(1.8rem,4.6vw,3.4rem);margin:0 0 1.6rem}
.cta h2 em{font-style:italic;color:var(--e-or2)}
.cta a{display:inline-flex;align-items:center;gap:.7rem;font-family:var(--e-mono);font-size:.72rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--e-ivoire);text-decoration:none;border:1px solid var(--e-or);
  padding:.9rem 1.8rem;border-radius:1px;transition:.35s var(--e-ease)}
.cta a:hover{background:var(--e-or);color:#000}

/* a11y / motion */
a:focus-visible,button:focus-visible{outline:2px solid var(--e-or2);outline-offset:3px}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001s!important;transition-duration:.001s!important}
  .h-track{height:auto}
  .scene{--p:1}
  .h-head h1 .ch{opacity:1}
  .h-head .sub{opacity:1;transform:none}
  .dim{opacity:.95}
  .step .no,.step h3,.step p{opacity:1;transform:none}
}
@media (max-width:760px){
  .scene{width:86vw}
  .dim.side{right:-.9rem}
}
