*{box-sizing:border-box}
html{scroll-behavior:auto}
[hidden]{display:none!important}
.signal-frame{position:absolute;inset:0;overflow:hidden;z-index:-1;pointer-events:none}
body{margin:0;background:var(--bg);color:var(--ink);font:400 18px/1.55 var(--text)}
a{color:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.wrap{max-width:1200px;margin:0 auto;padding:0 clamp(20px,5vw,64px)}
.proto{background:var(--accent);color:var(--accent-ink);font-size:14px;text-align:center;padding:6px var(--s2)}
header.top{display:flex;justify-content:space-between;align-items:center;padding:var(--s3) 0}
.brand{font:700 24px/1 var(--display);letter-spacing:-.04em}
.btn{display:inline-flex;align-items:center;gap:10px;border-radius:var(--radius-pill);padding:14px 24px;font:500 16px/1 var(--text);
  text-decoration:none;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);
  transition:transform var(--ui) var(--ease),background var(--ui)}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}

/* Hero */
.hero{position:relative;isolation:isolate;padding:var(--s5) 0 var(--s6);min-height:min(88svh,860px);display:flex;flex-direction:column;justify-content:center}
h1{font:700 clamp(46px,6.1vw,88px)/.98 var(--display);letter-spacing:-.06em;margin:0 0 var(--s4);max-width:9.5em}
h1 em{font-style:normal;color:var(--accent)}
.lead{font-size:clamp(18px,2vw,23px);max-width:31em;color:var(--ink);margin:0 0 var(--s4)}
.cta-row{display:flex;flex-wrap:wrap;gap:var(--s2)}
.signal{position:absolute;right:-18vw;top:6%;z-index:-1;width:62vw;height:62vw;max-width:900px;max-height:900px;
  border:5.5vw solid var(--signal);border-radius:42%;transform:rotate(-22deg);animation:arrive var(--story) var(--ease) both}
.signal::after{content:"";position:absolute;inset:7vw;border:2px solid var(--signal);border-radius:35%}
@keyframes arrive{from{opacity:0;transform:translateX(8vw) rotate(-8deg)}to{opacity:1;transform:translateX(0) rotate(-22deg)}}


section{padding:var(--s6) 0}
h2{font:600 clamp(30px,4.6vw,56px)/1.05 var(--display);letter-spacing:-.045em;margin:0 0 var(--s3);max-width:15em}
.kicker{font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 var(--s2)}
.muted{color:var(--ink-soft)}
.story h2{font-size:clamp(28px,3.4vw,44px);overflow-wrap:anywhere}

/* Story: the delay scenario */
.story{background:var(--bg-deep)}
.story-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--s5);align-items:start}
.steps{list-style:none;margin:0;padding:0;counter-reset:s}
.steps li{counter-increment:s}
.steps a{text-decoration:none;box-sizing:border-box;display:grid;grid-template-columns:44px 1fr;gap:var(--s2);width:100%;cursor:pointer;
  padding:var(--s2) 0;border-top:1px solid var(--line);color:var(--ink-soft);transition:color var(--ui)}
.steps a::before{content:counter(s,decimal-leading-zero);font:600 15px/1.7 var(--display);color:var(--ink-soft);transition:color var(--ui)}
.steps a:hover,.steps a[aria-selected="true"]{color:var(--ink)}
.steps a[aria-selected="true"]::before{color:var(--accent)}
.steps a:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
.steps b{display:block;font-weight:500;color:var(--ink)}
.panel{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-panel);padding:var(--s4);min-height:520px;position:relative}
.who{font-size:14px;color:var(--accent);margin:0 0 var(--s3)}
.feed{display:flex;flex-direction:column;gap:var(--s2)}
.msg{max-width:88%;padding:14px 18px;border-radius:var(--radius-message);background:var(--surface);color:var(--surface-ink);font-size:16px;line-height:1.45;
  animation:in var(--story) var(--ease) both}
.msg.me{align-self:flex-end;background:var(--accent);color:var(--accent-ink)}
.msg small{display:block;color:var(--surface-muted);font-size:13px;margin-top:6px}
@keyframes in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.board{margin-top:var(--s3);display:grid;gap:10px}
.visit{display:grid;grid-template-columns:92px 1fr auto;gap:var(--s2);align-items:center;padding:12px 16px;border-radius:var(--radius-row);
  border:1px solid var(--line);font-size:15px;transition:background var(--story) var(--ease),border-color var(--story)}
.visit time{font-variant-numeric:tabular-nums}
.visit .was{text-decoration:line-through;margin-right:8px}
.visit.hit{background:var(--hit);border-color:var(--accent)}
.tag{font-size:13px;border-radius:var(--radius-pill);padding:4px 10px;border:1px solid var(--line);white-space:nowrap}
.visit.hit .tag{border-color:var(--accent);color:var(--accent)}
.nav{display:flex;gap:var(--s2);margin-top:var(--s4)}

/* Today vs in progress: two columns of plain lines, not cards */
.status-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s5)}
.status-grid ul{list-style:none;margin:0;padding:0}
.status-grid li{padding:var(--s2) 0;border-top:1px solid var(--line);display:flex;gap:var(--s2)}
.status-grid li::before{content:"";flex:0 0 10px;height:10px;margin-top:9px;border-radius:50%;background:var(--accent)}
.status-grid .later li::before{background:transparent;border:2px solid var(--line)}

/* Process */
.process{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s3);counter-reset:p;margin-top:var(--s4)}
.process div{counter-increment:p;border-top:4px solid var(--accent);padding-top:var(--s2)}
.process div::before{content:counter(p);font:700 44px/1 var(--display);display:block;margin-bottom:var(--s2)}

.contact{background:var(--accent);color:var(--accent-ink)}
.contact h2{color:var(--accent-ink)}
.contact .btn{background:var(--accent-ink);border-color:var(--accent-ink);color:var(--ink)}
.note{font-size:15px;margin-top:var(--s2)}
footer.end{padding:var(--s4) 0;font-size:14px;color:var(--ink-soft);display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s2)}

@media (max-width:900px){
  .story-grid,.status-grid{grid-template-columns:1fr;gap:var(--s4)}
  .panel{position:static;min-height:0;padding:var(--s3)}
  .process{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  body{font-size:17px}
  h1{font-size:34px}
  header.top .btn{display:none}
  .signal{width:96vw;height:96vw;right:-58vw;top:14%;border-width:10vw}
  .process{grid-template-columns:1fr}
  .visit{grid-template-columns:76px 1fr;}
  .visit .tag{grid-column:2;justify-self:start}
  section{padding:var(--s5) 0}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .msg{opacity:1;transform:none}
  html{scroll-behavior:auto}
}

/* WEB-02: progressive enhancement and the selected Signal direction. */
.skip{position:absolute;z-index:5;top:var(--s2);left:var(--s2);transform:translateY(-200%);background:var(--accent);color:var(--accent-ink);padding:var(--s2)}
.skip:focus{transform:none}
main:focus{outline:none}
.brand{text-decoration:none}
.top nav{display:flex;align-items:center;gap:var(--s3)}
.top nav>a:not(.btn){text-underline-offset:6px;font-size:16px}
.demo-note{border-left:3px solid var(--accent);padding-left:var(--s2);font-size:16px;max-width:38em;margin:0 0 var(--s4);color:var(--ink-soft)}
.story-view{min-width:0}
.story-view .panel+.panel{margin-top:var(--s3)}
.story-ready .story-view .panel{margin-top:0}
.panel h3{font:500 20px/1.35 var(--text);margin:0 0 var(--s3)}
.panel .stage-status{font-size:14px;color:var(--accent);margin:0 0 var(--s2)}
.story-ready .story-view{position:sticky;top:var(--s3)}
.progress{font-size:14px;color:var(--ink-soft);margin:var(--s2) 0 0}
.btn:disabled{cursor:default;opacity:.55;transform:none}
.btn:disabled:hover{transform:none}
.visit time{display:flex;flex-direction:column}
.visit .was{margin:0}
.roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s4);margin-top:var(--s5)}
.roles article{border-top:1px solid var(--line);padding-top:var(--s3)}
.roles h3{font:500 28px/1.2 var(--text);margin:0 0 var(--s2)}
.roles p{color:var(--ink-soft);margin:0}
.faq{max-width:800px}
details{border-top:1px solid var(--line);padding:var(--s3) 0}
details:last-child{border-bottom:1px solid var(--line)}
summary{cursor:pointer;font-size:20px;font-weight:500;padding-right:var(--s2)}
details p{color:var(--ink-soft);max-width:38em;margin:var(--s2) 0 0}
.contact :focus-visible{outline-color:var(--accent-ink)}
.contact p{max-width:38em}
.process-section{background:var(--bg-deep)}
@media(min-width:901px){.story-ready .steps{position:sticky;top:var(--s3)}}
@media(max-width:900px){.story-ready .story-view{position:static}.roles{grid-template-columns:1fr;gap:var(--s3)}}
@media(max-width:560px){.top nav>a:not(.btn){font-size:14px}.top nav{gap:var(--s2)}.panel{padding:var(--s2)}.msg{max-width:100%}.visit{gap:var(--s1);padding:var(--s2)}.story-grid{gap:var(--s3)}.nav .btn{padding:14px 20px}.hero{min-height:0;padding-top:var(--s4)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

@media(max-width:900px){.story-ready .steps{display:flex;gap:var(--s1)}.story-ready .steps li{flex:1;min-width:0}.story-ready .steps a{display:flex;justify-content:center;padding:var(--s2) 0}.story-ready .steps a span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.story-ready .steps a[aria-selected="true"]{border-top-color:var(--accent)}}

/* WEB-05: business site. All motion is CSS (the VPS CSP forbids scripts): one staggered hero entrance,
   scroll-linked reveals and 120 ms hovers. No infinite animation; reduced-motion disables everything. */
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.hero h1{font-size:clamp(40px,3.9vw,60px)}
@media (max-width:900px){.hero h1{font-size:clamp(34px,7.4vw,60px)}}
.badge{display:inline-flex;align-items:center;gap:10px;font-size:14px;border:1px solid var(--line);border-radius:var(--radius-pill);
  padding:6px 14px;margin:0 0 var(--s3);color:var(--ink-soft)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}
.facts{list-style:none;padding:0;margin:var(--s4) 0 0;display:flex;flex-wrap:wrap;gap:var(--s1) var(--s3);font-size:15px;color:var(--ink-soft)}
.facts li{display:flex;align-items:center;gap:10px}
.facts li::before{content:"";width:12px;height:6px;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(-45deg) translateY(-2px)}


/* Without JS (the VPS) the step list stays in view as a table of contents while the panels scroll. */
@media (min-width:901px){.story-grid>div:first-child{align-self:stretch}.steps{position:sticky;top:var(--s3)}}

@supports (animation-timeline:view()){
  .reveal{animation:rise linear both;animation-timeline:view();animation-range:entry 5% entry 45%}
}

.pain{background:var(--bg-deep)}
.pain-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--s5);align-items:start}
.pain-list{list-style:none;margin:0;padding:0;counter-reset:pn}
.pain-list li{counter-increment:pn;display:grid;grid-template-columns:48px 1fr;column-gap:var(--s2);padding:var(--s3) 0;border-top:1px solid var(--line)}
.pain-list li::before{content:counter(pn,decimal-leading-zero);grid-row:span 2;font:600 15px/1.7 var(--display);color:var(--accent)}
.pain-list b{font-weight:500;font-size:20px}
.pain-list span{color:var(--ink-soft)}

.features{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s3);margin-top:var(--s5)}
.feature{background:var(--bg-deep);border:1px solid var(--line);border-radius:var(--radius-message);padding:var(--s4) var(--s3);
  transition:transform var(--ui) var(--ease),border-color var(--ui) var(--ease)}
.feature:hover{transform:translateY(-4px);border-color:var(--accent)}
.feature svg{width:40px;height:40px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;margin-bottom:var(--s3)}
.feature h3{font:600 20px/1.25 var(--display);letter-spacing:-.02em;margin:0 0 var(--s1)}
.feature p{margin:0;color:var(--ink-soft);font-size:16px}

.roles h3{font:600 24px/1.2 var(--display);letter-spacing:-.03em}
.role-tag{display:inline-block;font-size:13px;font-weight:500;border-radius:var(--radius-pill);padding:4px 12px;margin-bottom:var(--s2);
  background:var(--accent);color:var(--accent-ink)}

.cabinet-section{background:var(--bg-deep)}
.cabinet-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--s5);align-items:center}
.ticks{list-style:none;margin:var(--s3) 0 0;padding:0;display:grid;gap:var(--s2)}
.ticks li{display:grid;grid-template-columns:22px 1fr;gap:var(--s1);color:var(--ink-soft)}
.ticks li::before{content:"";width:12px;height:6px;margin-top:9px;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(-45deg)}
.ticks.dark li{color:var(--surface-ink)}
.ticks.dark li::before{border-color:var(--bg)}
.screen{background:var(--ink-soft);color:var(--surface-ink);border-radius:var(--radius-message);overflow:hidden;font-size:13px;border:1px solid var(--line)}
.screen-bar{display:flex;justify-content:space-between;gap:var(--s2);background:var(--bg);color:var(--ink);padding:12px var(--s2)}
.screen-bar b{font:700 14px var(--display)}
.screen-bar span{color:var(--ink-soft)}
.screen-body{display:grid;grid-template-columns:130px 1fr;gap:var(--s2);padding:var(--s2)}
.screen-nav{list-style:none;margin:0;padding:0;display:grid;gap:4px;align-content:start}
.screen-nav li{padding:8px 10px;border-radius:10px;border-left:3px solid transparent}
.screen-nav li.on{background:var(--surface);border-left-color:var(--accent);font-weight:500}
.screen-main{min-width:0}
.screen-card{background:var(--surface);border-radius:var(--radius-row);padding:var(--s2);display:grid;gap:8px}
.screen-head{display:flex;justify-content:space-between;gap:var(--s1);align-items:center;margin:0}
.screen-head b{font:600 15px var(--display)}
.screen-pill{background:var(--accent);color:var(--accent-ink);border-radius:var(--radius-pill);padding:3px 10px;font-size:12px;white-space:nowrap}
.screen-meta{margin:0;color:var(--surface-muted)}
.screen-row{display:grid;grid-template-columns:1fr auto auto;gap:var(--s2);padding:8px 0;border-top:1px solid var(--ink-soft);font-variant-numeric:tabular-nums}
.screen-options{display:flex;flex-wrap:wrap;gap:6px;padding-top:4px}
.screen-options span{border:1px solid var(--ink-soft);border-radius:10px;padding:6px 10px}
.screen-options span:first-child{border-color:var(--bg);color:var(--bg);font-weight:500}

.trust{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s3);margin-top:var(--s5)}
.trust div{border-top:1px solid var(--line);padding-top:var(--s3)}
.trust b{display:block;font:600 20px/1.25 var(--display);letter-spacing:-.02em;margin-bottom:var(--s1)}
.trust p{margin:0;color:var(--ink-soft);font-size:16px}

.col-title{font-weight:500;margin:0 0 var(--s2);color:var(--ink)}

.contact-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--s5);align-items:center}
.contact .kicker{color:var(--accent-ink)}
.contact-card{background:var(--surface);color:var(--surface-ink);border-radius:var(--radius-panel);padding:var(--s4)}
.contact-label{font-weight:500;margin:0}
.contact-soon{margin:var(--s3) 0 0;padding-top:var(--s2);border-top:1px solid var(--ink-soft);color:var(--surface-muted);font-size:15px}
.contact-card .btn{width:100%;justify-content:center;margin-top:var(--s3)}
.contact-card .btn+.btn{margin-top:var(--s1)}
.contact .contact-card .btn.ghost{background:transparent;color:var(--surface-ink);border-color:var(--signal-line)}
.contact-card :focus-visible{outline-color:var(--bg)}
footer.end a{text-underline-offset:4px}
.contact-hint{margin:var(--s1) 0 0;font-size:14px;color:var(--surface-muted);text-align:center}
.contact-card .contact-hint{margin-top:var(--s2)}
/* WEB-03: request form (works without JavaScript) */
.lead-form{display:grid;gap:var(--s2)}
.lead-form label{display:grid;gap:6px;font-size:15px;font-weight:500}
.lead-form label span{font-weight:400;color:var(--surface-muted)}
.lead-form input:not([type=checkbox]),.lead-form textarea{width:100%;font:400 16px/1.4 var(--text);color:var(--surface-ink);
  background:var(--surface);border:1px solid var(--signal-line);border-radius:var(--radius-row);padding:12px var(--s2);
  transition:border-color var(--ui) var(--ease)}
.lead-form textarea{resize:vertical;min-height:84px}
.lead-form input:hover,.lead-form textarea:hover{border-color:var(--signal)}
.lead-form input:focus-visible,.lead-form textarea:focus-visible{outline:2px solid var(--bg);outline-offset:1px;border-color:var(--bg)}
.lead-form .consent{grid-template-columns:20px 1fr;align-items:start;gap:var(--s1);font-weight:400;font-size:14px}
.lead-form .consent span{color:var(--surface-muted)}
.lead-form .consent input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--bg)}
.lead-form .hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.contact-card .lead-form .btn{margin-top:var(--s1)}
.lead-answer{min-height:100svh;display:flex;align-items:center;padding:var(--s5) 0}
.lead-answer h1{font-size:clamp(40px,5vw,64px)}
.lead-answer p:not(.kicker){max-width:32em;margin:0 0 var(--s4)}
.brand.small{font-size:18px;color:var(--ink)}

@media (max-width:900px){
  .pain-grid,.cabinet-grid,.contact-grid{grid-template-columns:1fr;gap:var(--s4)}
  .features,.trust{grid-template-columns:1fr 1fr}
  .top nav>a:not(.btn){display:none}
}
@media (max-width:560px){
  header.top .btn{display:inline-flex;padding:10px 16px;font-size:14px}
  .features,.trust{grid-template-columns:1fr}
  .screen-body{grid-template-columns:1fr}
  .screen-nav{display:flex}
  .screen-nav li:not(.on){display:none}
  .contact-card{padding:var(--s3)}
}

/* WEB-06: hero background video (owner's request 17.10.2026). The video's plain left part is --bg,
   and a --bg scrim keeps the text readable; from 1440px it is a full-bleed background, below that
   a square block under the text, cropped to the action. Reduced motion: poster only (see <source media>). */
.hero{padding:0;min-height:min(92svh,900px);overflow:hidden}
.hero-inner{position:relative;z-index:1;width:100%;padding-top:var(--s4);padding-bottom:var(--s5)}
@media (min-width:1440px){
  /* The video also runs under the header, so the only CSS/video edge is the soft scrim. */
  :root{--head:94px}
  .top{position:relative;z-index:2}
  .hero{margin-top:calc(var(--head) * -1)}
  .hero-inner{padding-top:calc(var(--head) + var(--s3));padding-bottom:var(--s4)}
  .hero h1{font-size:clamp(40px,3.5vw,60px)}
  .hero .video-toggle{top:calc(var(--head) + var(--s2));bottom:auto}
}
.hero-text{max-width:520px}
.hero-video{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;object-position:right center;background:var(--bg)}
.hero::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(90deg,var(--bg) 0,var(--bg) 36%,transparent 52%)}
.video-toggle{position:absolute;z-index:2;right:clamp(20px,5vw,64px);bottom:var(--s3);font:500 14px/1 var(--text);cursor:pointer;
  color:var(--ink);background:var(--bg-deep);border:1px solid var(--line);border-radius:var(--radius-pill);padding:10px 16px;
  transition:border-color var(--ui) var(--ease)}
.video-toggle:hover{border-color:var(--ink)}
@media (max-width:1439px){
  .hero{min-height:0}
  .hero::after{display:none}
  .hero-inner{padding-bottom:var(--s4)}
  .hero-text{max-width:720px}
  .hero-video{position:relative;inset:auto;order:2;display:block;height:auto;aspect-ratio:1/1;
    width:calc(100% - 2 * clamp(20px,5vw,64px));max-width:640px;
    margin:0 0 var(--s5) max(clamp(20px,5vw,64px),calc((100% - 1200px) / 2 + clamp(20px,5vw,64px)));
    border-radius:var(--radius-panel);border:1px solid var(--line)}
  .video-toggle{position:static;order:3;align-self:flex-start;
    margin:calc(var(--s4) * -1) 0 var(--s5) max(clamp(20px,5vw,64px),calc((100% - 1200px) / 2 + clamp(20px,5vw,64px)))}
}

