:root{
  --night:#0A0F1F;
  --night-2:#131A33;
  --night-3:#1C2547;
  --paper:#F6F1E4;
  --paper-2:#ECE4CF;
  --ink:#121624;
  --ink-soft:#4C5266;
  --sun:#FFB21A;
  --sun-2:#FF6B1A;
  --sun-soft:#FFE7B0;
  --cell:#2448C9;
  --cell-lit:#4F7CFF;
  --ok:#22C97A;
  --warn:#FF4A3D;
  --line:rgba(18,22,36,.14);
  --line-d:rgba(246,241,228,.14);
  --font-display:"Unbounded",system-ui,sans-serif;
  --font-body:"Onest",system-ui,sans-serif;
  --gutter:clamp(16px,5vw,88px);
  --t-hero:clamp(2rem,.8rem + min(3.8vw,7vh),5.4rem);
  --t-h2:clamp(1.7rem,1rem + 2.6vw,3.6rem);
  --t-body:clamp(.98rem,.9rem + .3vw,1.15rem);
  --ease:cubic-bezier(.16,1,.3,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:var(--night);color:var(--ink);font-family:var(--font-body);font-size:var(--t-body);line-height:1.5;overflow:hidden;-webkit-font-smoothing:antialiased}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
h1,h2,h3{font-family:var(--font-display);font-weight:800;line-height:1.04;letter-spacing:-.02em}
h2{font-size:var(--t-h2)}
h3{font-size:clamp(.95rem,.85rem + .45vw,1.2rem);font-weight:600;letter-spacing:-.01em;line-height:1.2}
em{font-style:normal;color:var(--sun-2)}
.dark em{color:var(--sun)}
svg text{font-family:var(--font-body)}

/* ---------- deck ---------- */
.deck{position:fixed;inset:0}
.slide{position:absolute;inset:0;background:var(--paper);padding:clamp(72px,10vh,116px) var(--gutter) clamp(76px,10vh,108px);display:flex;flex-direction:column;justify-content:center;visibility:hidden;overflow:hidden}
.slide.dark{background:radial-gradient(120% 90% at 85% 0%,var(--night-3) 0%,var(--night) 60%);color:var(--paper)}
.slide.sun{background:linear-gradient(160deg,var(--sun) 0%,var(--sun-2) 100%);color:var(--ink)}
.slide.sun em{color:#fff}
.kicker{font-family:var(--font-display);font-size:.7rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--sun-2);display:flex;align-items:center;gap:.8em;margin-bottom:1.2rem}
.kicker::before{content:"";width:28px;height:2px;background:currentColor}
.dark .kicker{color:var(--sun)}
.sun .kicker{color:var(--ink)}
.lead{max-width:44ch;color:var(--ink-soft);margin-top:1.2rem}
.dark .lead{color:#AEB4CC}
.sun .lead{color:rgba(18,22,36,.78)}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(24px,5vw,80px);align-items:center}
.ticks{list-style:none;margin-top:1.4rem;display:grid;gap:.7rem}
.ticks li{display:grid;grid-template-columns:22px 1fr;gap:.7rem;align-items:start}
.ticks li::before{content:"";width:12px;height:12px;margin-top:.42em;border-radius:50%;background:var(--sun);box-shadow:0 0 0 4px rgba(255,178,26,.22)}
.ticks b{font-weight:700}

/* chrome */
.brand{position:fixed;top:clamp(18px,3vh,30px);left:var(--gutter);z-index:20;font-family:var(--font-display);font-weight:800;font-size:.82rem;letter-spacing:.06em;display:flex;align-items:center;gap:.6rem;mix-blend-mode:difference;color:#fff}
.brand svg{width:18px;height:18px}
.counter{position:fixed;top:clamp(18px,3vh,30px);right:var(--gutter);z-index:20;font-family:var(--font-display);font-size:.78rem;mix-blend-mode:difference;color:#fff}
.progress{position:fixed;left:0;bottom:0;height:4px;width:100%;background:linear-gradient(90deg,var(--sun),var(--sun-2));transform-origin:left;transform:scaleX(0);z-index:20}
.nav{position:fixed;bottom:clamp(16px,3vh,28px);right:var(--gutter);z-index:20;display:flex;gap:8px;color:#fff;mix-blend-mode:difference}
.nav button{width:46px;height:46px;border-radius:50%;border:1.5px solid currentColor;background:transparent;color:inherit;cursor:pointer;font-size:1.1rem;display:grid;place-items:center;transition:background .25s var(--ease),color .25s var(--ease),transform .25s var(--ease)}
.nav button:hover{background:#fff;color:#000;transform:translateY(-2px)}
.nav button:focus-visible{outline:2px solid #fff;outline-offset:3px}
.hint{position:fixed;bottom:clamp(26px,4vh,40px);left:var(--gutter);z-index:20;font-size:.75rem;letter-spacing:.08em;color:#fff;mix-blend-mode:difference;opacity:.7}

/* ---------- 1. cover ---------- */
.cover h1{font-size:var(--t-hero)}
.cover .split{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}
.cover h1 .row{display:block;overflow:hidden;padding-bottom:.06em}
.cover h1 .row span{display:inline-block}
.cover .meta{display:flex;gap:clamp(16px,3vw,40px);margin-top:2rem;flex-wrap:wrap}
.cover .meta div{border-left:2px solid var(--sun);padding-left:.8rem}
.cover .meta b{display:block;font-family:var(--font-display);font-size:clamp(1.1rem,.9rem + .8vw,1.6rem);color:#fff}
.cover .meta span{font-size:.8rem;color:#AEB4CC}
.cover-art{width:100%;max-height:72vh}

/* ---------- 2. task ---------- */
.reqs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(10px,1.4vw,18px);margin-top:clamp(20px,4vh,40px)}
.req{background:#fff;border:1px solid var(--line);border-radius:18px;padding:clamp(14px,1.6vw,22px);position:relative;transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.req:hover{transform:translateY(-4px);box-shadow:0 18px 40px -20px rgba(18,22,36,.35)}
.req b{font-family:var(--font-display);font-size:.72rem;color:var(--sun-2);display:block;margin-bottom:.6rem}
.req p{font-size:.86rem;color:var(--ink-soft);margin-top:.4rem;line-height:1.4}
.req.key{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.req.key p{color:#AEB4CC}
.req.key b{color:var(--sun)}

/* ---------- 3. architecture ---------- */
.arch{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;margin-top:clamp(24px,5vh,48px)}
.node{background:var(--night-2);border:1px solid var(--line-d);border-radius:22px;padding:clamp(16px,1.8vw,26px);position:relative}
.node .ico{width:44px;height:44px;border-radius:12px;background:rgba(255,178,26,.14);display:grid;place-items:center;margin-bottom:.9rem;color:var(--sun)}
.node .ico svg{width:24px;height:24px}
.node ul{list-style:none;margin-top:.7rem;font-size:.85rem;color:#AEB4CC;display:grid;gap:.25rem}
.node ul li::before{content:"— ";color:var(--sun)}
.wire{width:clamp(28px,5vw,80px);height:2px;background:var(--line-d);position:relative}
.wire i{position:absolute;inset:0;background:var(--sun);transform-origin:left;transform:scaleX(0)}
.wire .pkt{position:absolute;top:50%;left:0;width:10px;height:10px;margin-top:-5px;border-radius:50%;background:var(--sun);box-shadow:0 0 14px var(--sun);opacity:0}
.alerts{margin-top:clamp(16px,3vh,28px);display:flex;gap:10px;flex-wrap:wrap;align-items:center;font-size:.85rem;color:#AEB4CC}
.alerts span{border:1px solid var(--line-d);border-radius:999px;padding:.35rem .9rem;color:var(--paper)}

/* ---------- 5. roof / 6. sun ---------- */
.roof-art,.sun-art{width:100%;max-height:64vh;border-radius:24px;display:block}
.stats{display:flex;gap:clamp(12px,2vw,28px);margin-top:1.6rem;flex-wrap:wrap}
.stat b{display:block;font-family:var(--font-display);font-size:clamp(1.5rem,1rem + 1.6vw,2.5rem);color:var(--sun);line-height:1}
.stat span{font-size:.78rem;color:#AEB4CC}
.steps-mini{display:grid;gap:.6rem;margin-top:1.4rem;counter-reset:s}
.steps-mini div{display:grid;grid-template-columns:30px 1fr;gap:.6rem;font-size:.92rem;color:#C8CDE0}
.steps-mini div::before{counter-increment:s;content:counter(s);width:26px;height:26px;border-radius:50%;border:1.5px solid var(--sun);color:var(--sun);display:grid;place-items:center;font-size:.72rem;font-weight:700}
.sun-readout{display:flex;gap:10px;flex-wrap:wrap;margin-top:1.4rem}
.chip{background:#fff;border:1px solid var(--line);border-radius:14px;padding:.55rem .9rem;min-width:110px;transition:background .3s,border-color .3s}
.chip small{display:block;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.chip b{font-family:var(--font-display);font-size:1.15rem}
.chip.gold{background:var(--sun-soft);border-color:var(--sun)}

/* ---------- 7. calculator ---------- */
.toggle{display:inline-grid;grid-template-columns:1fr 1fr;position:relative;background:var(--night-2);border:1px solid var(--line-d);border-radius:999px;padding:5px;margin-top:1.4rem}
.toggle span{position:relative;z-index:1;flex:1;text-align:center;padding:.55rem 1.1rem;font-size:.85rem;font-weight:600;color:#AEB4CC;transition:color .3s;white-space:nowrap}
.toggle span.on{color:var(--ink)}
.toggle .knob{position:absolute;top:5px;bottom:5px;left:5px;width:calc(50% - 5px);border-radius:999px;background:var(--sun)}
.mode{margin-top:1.2rem;display:grid;gap:.5rem;font-size:.9rem;color:#C8CDE0}
.mode div{display:flex;justify-content:space-between;gap:1rem;border-bottom:1px dashed var(--line-d);padding-bottom:.4rem}
.mode div b{color:var(--paper);text-align:right}
.chart{background:var(--night-2);border:1px solid var(--line-d);border-radius:24px;padding:clamp(16px,2vw,28px)}
.chart-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}
.chart-head b{font-family:var(--font-display);font-size:clamp(1.6rem,1rem + 2vw,2.8rem);color:var(--sun);line-height:1}
.chart-head small{color:#AEB4CC;font-size:.8rem}
.bars{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(4px,.8vw,10px);align-items:end;height:clamp(140px,28vh,240px);margin-top:1.4rem}
.bars div{display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.bars i{display:block;width:100%;border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,var(--sun),var(--sun-2));transform-origin:bottom}
.bars span{font-size:.62rem;color:#AEB4CC}
.per-panel{margin-top:1rem;font-size:.85rem;color:#AEB4CC}
.per-panel b{color:var(--paper)}

/* ---------- 10. price ---------- */
.ptable{margin-top:clamp(14px,2.6vh,26px);display:grid}
.prow{display:grid;grid-template-columns:28px minmax(0,1.4fr) minmax(0,1fr) 90px;gap:clamp(8px,1.6vw,22px);align-items:center;padding:.5rem 0;border-bottom:1px solid var(--line-d)}
.prow .n{font-family:var(--font-display);font-size:.7rem;color:var(--sun)}
.prow h3{font-size:clamp(.82rem,.78rem + .28vw,.98rem)}
.prow p{font-size:.74rem;color:#AEB4CC;line-height:1.3;margin-top:.15rem}
.prow .bar{height:8px;border-radius:8px;background:rgba(255,178,26,.14);overflow:hidden}
.prow .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--sun),var(--sun-2));transform-origin:left;border-radius:8px}
.prow .v{text-align:right;font-family:var(--font-display);font-weight:600;font-size:.95rem}
.ptotal{display:flex;justify-content:space-between;align-items:baseline;margin-top:1rem;gap:1rem;flex-wrap:wrap}
.ptotal span{color:#AEB4CC}
.ptotal b{font-family:var(--font-display);font-size:clamp(2rem,1rem + 3vw,3.6rem);color:var(--sun);line-height:1}

/* ---------- add-on tariffs ---------- */
.addons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(10px,1.4vw,18px);margin-top:clamp(18px,3.5vh,34px)}
.addon{background:#fff;border:1px solid var(--line);border-radius:20px;padding:clamp(14px,1.6vw,22px);display:flex;flex-direction:column;gap:.4rem;transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s var(--ease)}
.addon:hover{transform:translateY(-4px);border-color:var(--sun);box-shadow:0 18px 40px -20px rgba(18,22,36,.35)}
.addon p{font-size:.84rem;color:var(--ink-soft);line-height:1.4;flex:1}
.addon-foot{display:flex;justify-content:space-between;align-items:baseline;margin-top:.6rem;padding-top:.7rem;border-top:1px dashed var(--line)}
.addon-foot b{font-family:var(--font-display);font-size:clamp(1.3rem,1rem + 1vw,1.8rem);color:var(--sun-2);display:inline-block}
.addon-foot b small{font-size:.5em;color:var(--ink-soft);font-family:var(--font-body);margin-left:.2em}
.addon-foot span{font-size:.78rem;color:var(--ink-soft);background:var(--paper-2);border-radius:999px;padding:.2rem .6rem}

/* ---------- 11. gantt ---------- */
.gantt{margin-top:clamp(18px,4vh,36px);display:grid;gap:10px}
.g-head,.g-row{display:grid;grid-template-columns:minmax(150px,26%) 1fr;gap:clamp(10px,2vw,24px);align-items:center}
.g-weeks{display:grid;grid-template-columns:repeat(var(--w),1fr);font-size:.66rem;color:var(--ink-soft);text-align:center}
.g-track{position:relative;height:30px;border-radius:10px;background:repeating-linear-gradient(90deg,transparent 0 calc(100%/var(--w) - 1px),var(--line) calc(100%/var(--w) - 1px) calc(100%/var(--w)))}
.g-bar{position:absolute;top:3px;bottom:3px;left:calc((var(--s) - 1) * 100% / var(--w));width:calc((var(--e) - var(--s) + 1) * 100% / var(--w));border-radius:8px;background:var(--ink);transform-origin:left;color:#fff;font-size:.66rem;font-weight:600;display:flex;align-items:center;padding:0 .6rem;white-space:nowrap;overflow:hidden}
.g-bar.accent{background:linear-gradient(90deg,var(--sun),var(--sun-2));color:var(--ink)}
.g-row h3{font-size:clamp(.8rem,.75rem + .25vw,.95rem)}
.g-foot{display:flex;gap:clamp(16px,4vw,48px);margin-top:1.4rem;flex-wrap:wrap}
.g-foot div b{font-family:var(--font-display);font-size:clamp(1.4rem,1rem + 1.4vw,2.2rem);display:block;line-height:1}
.g-foot div span{font-size:.8rem;color:var(--ink-soft)}

/* ---------- 12. payment ---------- */
.pay{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,2vw,24px);margin-top:clamp(20px,4vh,40px)}
.pay-c{border-top:3px solid var(--ink);padding-top:1rem}
.pay-c .pct{font-family:var(--font-display);font-size:clamp(2.4rem,1rem + 4vw,4.6rem);line-height:1}
.pay-c .sum{font-family:var(--font-display);font-size:1rem;margin-top:.4rem}
.pay-c p{font-size:.86rem;color:rgba(18,22,36,.75);margin-top:.5rem;max-width:30ch}
.pay-bar{height:10px;background:rgba(18,22,36,.15);border-radius:10px;margin-top:1rem;overflow:hidden}
.pay-bar i{display:block;height:100%;background:var(--ink);transform-origin:left}
.extras{display:flex;gap:10px;flex-wrap:wrap;margin-top:clamp(20px,4vh,36px)}
.extras span{background:rgba(255,255,255,.35);border-radius:999px;padding:.45rem 1rem;font-size:.85rem;font-weight:600}

/* ---------- 13. next ---------- */
.next{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,2vw,24px);margin-top:clamp(20px,4vh,40px)}
.nx{border:1px solid var(--line-d);border-radius:22px;padding:clamp(16px,2vw,26px);background:rgba(255,255,255,.03)}
.nx b{font-family:var(--font-display);color:var(--sun);font-size:.8rem}
.nx h3{margin:.6rem 0 .4rem}
.nx p{font-size:.86rem;color:#AEB4CC}
.final{display:flex;justify-content:space-between;align-items:flex-end;margin-top:clamp(24px,5vh,48px);gap:1rem;flex-wrap:wrap}
.sig{font-family:var(--font-display);font-weight:800;font-size:clamp(1.3rem,1rem + 1.4vw,2.2rem);line-height:1.05}
.final a{color:var(--sun);font-weight:600;text-decoration:none;border-bottom:1px solid currentColor}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .reqs,.addons{grid-template-columns:repeat(2,minmax(0,1fr))}
  .slide{justify-content:flex-start;overflow-y:auto;-webkit-overflow-scrolling:touch}
  .split,.cover .split{grid-template-columns:1fr}
  .arch{grid-template-columns:1fr}
  .wire{width:2px;height:28px;margin:0 auto}
  .wire i{transform-origin:top}
  .wire .pkt{left:50%;top:0;margin-left:-5px;margin-top:0}
  .prow{grid-template-columns:24px minmax(0,1fr) 80px}
  .prow .bar{display:none}
  .pay,.next{grid-template-columns:1fr}
  .g-head,.g-row{grid-template-columns:1fr}
  .g-head>div:first-child{display:none}
  .hint{display:none}
}
@media (max-width:520px){
  .reqs,.addons{grid-template-columns:1fr}
  .toggle span{padding:.5rem .7rem;font-size:.78rem}
}
@media (min-width:901px) and (max-height:860px){
  .prow{padding:.32rem 0}
  .prow p{display:none}
  .ptotal{margin-top:.6rem}
  .addons{margin-top:14px}
  .addon{padding:12px 16px;gap:.2rem}
  .addon-foot{margin-top:.3rem;padding-top:.5rem}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important}
}
