/* ============================================================
   Websitekuu — Page section layout.
   From ui_kits/websitekuu/kit.css in the design handoff.
   Colours, type and spacing all come from the tokens.

   Changed from the handoff source:
     - layout variants for the dropped prototype tweak bar
       (.wk-hero--center, .wk-price-grid--stacked) and the unused
       .wk-port-grid removed
     - animation durations retuned — each is marked RETUNED with
       the original value, so you can put any of them back
   Layout fixes and the sizing pass live in overrides.css.
   ============================================================ */
.wk-page{background:var(--surface-page);min-height:100vh}
.wk-sec{padding-block:var(--section-y)}
.wk-sec--sunken{background:var(--surface-sunken)}
.wk-hide-sm{}
@media (max-width:720px){.wk-hide-sm{display:none!important}}
.wk-sec__head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:40px}

/* ---------- Hero ---------- */
.wk-hero{padding-top:clamp(3rem,6vw,5rem)}
.wk-hero__inner{max-width:var(--container-xl);margin-inline:auto;padding-inline:var(--gutter);display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.wk-hero__copy{display:flex;flex-direction:column;gap:22px;align-items:flex-start}
.wk-hero__title{font-size:clamp(2.4rem,1.4rem + 3.6vw,4rem);line-height:1.02;letter-spacing:-.03em;margin:0}
/* RETUNED shimmer 7s -> 11s */
.wk-hero__title .accent{color:var(--blue-500);background:linear-gradient(100deg,var(--blue-500) 30%,var(--blue-300) 50%,var(--blue-500) 70%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:wk-shimmer 11s linear infinite}
@keyframes wk-shimmer{0%{background-position:135% 0}100%{background-position:-135% 0}}
@media (prefers-reduced-motion:reduce){.wk-hero__title .accent{animation:none;-webkit-text-fill-color:var(--blue-500)}}
.wk-hero__sub{font-size:var(--text-lg);color:var(--text-muted);line-height:1.5;max-width:46ch;margin:0}
.wk-hero__ctas{display:flex;gap:12px;flex-wrap:wrap}
.wk-hero__trust{display:flex;align-items:center;gap:12px}
.wk-hero__avatars{display:flex}
.wk-hero__avatars span{width:30px;height:30px;border-radius:50%;border:2px solid var(--surface-page);margin-left:-8px}
.wk-hero__avatars span:first-child{margin-left:0}
.wk-hero__trusttext{font-size:var(--text-sm);color:var(--text-muted);line-height:1.3}
.wk-hero__stars{display:flex;gap:1px;color:#F6B01E}
.wk-hero__stars .wk-ic{width:14px;height:14px}
.wk-hero__trusttext span{display:block}

/* Hero art — browser mock + floating chips */
.wk-hero__art{position:relative;will-change:transform;transform-origin:center bottom;backface-visibility:hidden}
.wk-browser{background:var(--white);border:1px solid var(--cream-300);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);overflow:hidden}
.wk-browser__bar{display:flex;align-items:center;gap:7px;padding:13px 16px;background:var(--cream-50);border-bottom:1px solid var(--cream-200)}
.wk-browser__bar .d{width:10px;height:10px;border-radius:50%}
.wk-browser__addr{margin-left:12px;display:flex;align-items:center;gap:6px;height:24px;padding:0 12px;background:var(--white);border:1px solid var(--cream-300);border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}
.wk-browser__view{padding:16px}
.wk-browser__nav{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.wk-browser__nav .logo{width:26px;height:26px;border-radius:7px;background:var(--ink-950)}
.wk-browser__nav .nl{width:42px;height:8px;border-radius:var(--radius-pill);background:var(--cream-200)}
.wk-browser__nav .pill{width:64px;height:24px;border-radius:var(--radius-pill);background:var(--blue-500);margin-left:auto}
.wk-browser__hero{display:grid;grid-template-columns:1.1fr .9fr;gap:16px;align-items:center;padding:14px;background:var(--cream-50);border-radius:var(--radius-lg);margin-bottom:14px}
.wk-browser__htext{display:flex;flex-direction:column;gap:9px}
.wk-browser__htext .l{height:11px;border-radius:var(--radius-pill);background:var(--ink-200)}
.wk-browser__htext .l.w70{width:70%}.wk-browser__htext .l.w90{width:90%}.wk-browser__htext .l.w50{width:50%}
.wk-browser__htext .btn{width:96px;height:28px;border-radius:var(--radius-sm);background:var(--ink-950);margin-top:6px}
.wk-browser__hart{height:110px;border-radius:var(--radius-md);background:var(--ink-900)}
.wk-browser__cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.wk-browser__cards span{height:56px;border-radius:var(--radius-md);background:var(--cream-100);border:1px solid var(--cream-200)}
.wk-hero__float{position:absolute;display:flex;align-items:center;gap:10px;background:var(--white);border:1px solid var(--cream-200);box-shadow:var(--shadow-lg);border-radius:var(--radius-md);padding:10px 14px;font-size:var(--text-xs)}
.wk-hero__float b{display:block;font-family:var(--font-display);font-size:13px;color:var(--text-strong)}
.wk-hero__float span{color:var(--text-muted)}
.wk-hero__float .wk-ic{color:var(--blue-600)}
/* RETUNED float 5s -> 7.5s, offset .6s -> 1s */
.wk-hero__float--a{top:22px;left:-26px;animation:wk-float 7.5s var(--ease-in-out) infinite}
.wk-hero__float--b{bottom:30px;right:-22px;animation:wk-float 7.5s var(--ease-in-out) infinite 1s}
@keyframes wk-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@media (max-width:1200px){.wk-hero__float--a{left:0}.wk-hero__float--b{right:0}}
@media (prefers-reduced-motion:reduce){.wk-hero__float--a,.wk-hero__float--b{animation:none}}

.wk-hero__stats{max-width:var(--container-lg);margin:clamp(3rem,6vw,5rem) auto 0;padding:32px var(--gutter);display:grid;grid-template-columns:repeat(4,1fr);gap:24px;border-top:1px solid var(--border-soft)}

/* ---------- Pricing ---------- */
.wk-price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;align-items:stretch;margin-top:48px}
/* 21st.dev-style fan: popular card raised & forward, side cards scaled + raked back */
.wk-price-grid--fan{perspective:1200px}
/* RETUNED entrance 1.05s -> 1.25s, curve .22,1.18 -> .22,1.1, opacity .55s -> .8s */
.wk-price-grid--fan .wk-price{transition:transform 1.25s cubic-bezier(.22,1.1,.36,1),box-shadow var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),opacity .8s var(--ease-out);will-change:transform,opacity;backface-visibility:hidden}
.wk-price-grid--fan .wk-price:nth-child(1){transform:translateX(26px) translateZ(-60px) rotateY(9deg) scale(.94);transform-origin:right center;z-index:1}
.wk-price-grid--fan .wk-price:nth-child(2){transform:translateY(-22px);z-index:3}
.wk-price-grid--fan .wk-price:nth-child(3){transform:translateX(-26px) translateZ(-60px) rotateY(-9deg) scale(.94);transform-origin:left center;z-index:1}
.wk-price-grid--fan .wk-price:nth-child(1):hover{transform:translateX(26px) translateZ(-28px) rotateY(9deg) scale(.96)}
.wk-price-grid--fan .wk-price:nth-child(2):hover{transform:translateY(-30px)}
.wk-price-grid--fan .wk-price:nth-child(3):hover{transform:translateX(-26px) translateZ(-28px) rotateY(-9deg) scale(.96)}
/* entrance start state — js/main.js removes .wk-anim-start on scroll-in */
.wk-price-grid--fan.wk-anim-start .wk-price{opacity:0;transform:translateY(52px) scale(.95)!important;transition:none}
@media (max-width:960px){
  .wk-price-grid--fan{perspective:none}
  .wk-price-grid--fan .wk-price,.wk-price-grid--fan .wk-price:hover{transform:none}
  .wk-price-grid--fan.wk-anim-start .wk-price{transform:translateY(30px)!important}
}
@media (prefers-reduced-motion:reduce){
  .wk-price-grid--fan .wk-price{transition:none}
  .wk-price-grid--fan.wk-anim-start .wk-price{opacity:1;transform:none!important}
}
.wk-price-note{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:24px;font-size:var(--text-sm);color:var(--text-muted)}
.wk-price-note .wk-ic{color:var(--text-faint)}

/* ---------- Add-ons ---------- */
.wk-addon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:44px}
.wk-addon{display:flex!important;align-items:center;gap:16px}
.wk-addon__ic{flex:none;width:46px;height:46px;border-radius:var(--radius-md);background:var(--blue-50);color:var(--blue-600);display:grid;place-items:center}
.wk-addon__ic .wk-ic{width:22px;height:22px}
.wk-addon__body{flex:1}
.wk-addon__name{font-family:var(--font-display);font-size:var(--text-md);font-weight:var(--fw-semibold);color:var(--text-strong);margin:0}
.wk-addon__note{font-size:var(--text-sm);color:var(--text-muted);margin:2px 0 0}
.wk-addon__price{font-family:var(--font-mono);font-weight:700;font-size:var(--text-md);color:var(--blue-600);white-space:nowrap}
.wk-addon__cta{display:flex;justify-content:center;margin-top:28px}

/* Domain & hosting explainer — visual "Domain + Hosting = Website" */
.wk-explain{position:relative;overflow:hidden;margin-top:26px;background:var(--surface-card);border:1px solid var(--border-soft);border-radius:var(--radius-xl);padding:30px 32px;box-shadow:var(--shadow-sm)}
.wk-explain__head{position:relative;display:flex;align-items:center;gap:13px;margin-bottom:14px}
/* Flat near-black, same as .wk-proc__ic. Was a blue gradient with a blue
   glow shadow — brand.md calls for flat colour fields and no gradients. */
.wk-explain__ic{flex:none;width:44px;height:44px;border-radius:var(--radius-md);background:var(--ink-950);color:var(--cream-50);display:grid;place-items:center}
.wk-explain__ic .wk-ic{width:22px;height:22px}
.wk-explain__title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--text-strong);margin:2px 0 0;letter-spacing:var(--tracking-tight)}
.wk-explain__lead{position:relative;font-size:var(--text-base);color:var(--text-muted);line-height:1.6;margin:0 0 24px;max-width:74ch}
.wk-explain__lead b{color:var(--text-body)}
.wk-explain__flow{position:relative;display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:stretch;gap:14px}
/* White, not cream. brand.md: "white cards that pop off the cream page" —
   cream-on-white made these read as sunken/disabled instead of as cards. */
.wk-flow__node{position:relative;display:flex;flex-direction:column;gap:7px;padding:20px 18px 18px;background:var(--surface-card);border:1px solid var(--border-soft);border-radius:var(--radius-lg);border-top:3px solid var(--node);box-shadow:var(--shadow-md);transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}
.wk-flow__node:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
/* The two ingredients read as neutral near-black; the result carries the
   brand accent, so blue marks the payoff instead of decorating a step.
   Previously the third node was a blue gradient sitting on a third
   background mood, and its `border-color` override silently killed its
   own top accent (declared after `border-top`, so it won). */
.wk-flow__node--domain,
.wk-flow__node--host{--node:var(--ink-800)}
.wk-flow__node--live{--node:var(--blue-500)}
.wk-flow__ic{width:40px;height:40px;border-radius:var(--radius-md);display:grid;place-items:center;color:#fff;background:var(--node)}
.wk-flow__ic .wk-ic{width:20px;height:20px}
/* The globe used to spin forever. Caught at any angle its equator line
   tilts, so the icon read as a broken spinner — and perpetual ambient
   motion isn't in the brand's vocabulary (hover, press, entrance only). */
/* RETUNED live dot 2.2s -> 3.2s */
.wk-flow__node--live::after{content:"";position:absolute;top:16px;right:16px;width:9px;height:9px;border-radius:50%;background:var(--success);box-shadow:0 0 0 0 var(--success);animation:wk-live 3.2s var(--ease-out) infinite}
@keyframes wk-live{0%{box-shadow:0 0 0 0 rgba(21,128,61,.5)}70%,100%{box-shadow:0 0 0 9px rgba(21,128,61,0)}}
.wk-flow__node b{font-family:var(--font-display);font-size:var(--text-md);color:var(--text-strong)}
.wk-flow__desc{font-size:var(--text-sm);color:var(--text-muted);line-height:1.5}
/* Answers the question the panel actually asks — who you pay, how often.
   margin-top:auto pins it to the bottom, so the three cards stop showing
   uneven dead space when their descriptions differ in length. */
.wk-flow__pay{margin-top:auto;padding-top:14px;border-top:1px solid var(--border-soft);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted)}
.wk-flow__node--live .wk-flow__pay{color:var(--blue-600)}
.wk-flow__op{align-self:center;font-family:var(--font-mono);font-weight:700;font-size:32px;color:var(--ink-300);line-height:1}
.wk-flow__op--eq{color:var(--blue-500)}
/* The closing reassurance was a green pill chip in the handoff. It reads as
   running prose now — see section 8 of overrides.css. */
.wk-explain__foot{position:relative;margin:24px 0 0;padding-top:22px;border-top:1px solid var(--border-soft);font-size:var(--text-base);color:var(--text-muted);line-height:1.6;max-width:74ch}
.wk-explain__foot b{color:var(--text-body)}
/* entrance — js/main.js adds .is-in on scroll-in.
   RETUNED durations .5/.55s -> .7/.78s and delays stretched. */
.wk-explain__flow .wk-flow__node,.wk-explain__flow .wk-flow__op{opacity:0;transform:translateY(16px);transition:opacity .7s var(--ease-out),transform .78s var(--ease-out)}
.wk-explain__flow .wk-flow__op{transform:scale(.4)}
.wk-explain.is-in .wk-flow__node,.wk-explain.is-in .wk-flow__op{opacity:1;transform:none}
.wk-explain.is-in .wk-flow__node:nth-child(1){transition-delay:.08s}
.wk-explain.is-in .wk-flow__op:nth-child(2){transition-delay:.34s;transition-timing-function:var(--ease-spring)}
.wk-explain.is-in .wk-flow__node:nth-child(3){transition-delay:.5s}
.wk-explain.is-in .wk-flow__op:nth-child(4){transition-delay:.76s;transition-timing-function:var(--ease-spring)}
.wk-explain.is-in .wk-flow__node:nth-child(5){transition-delay:.92s}
@media (max-width:760px){
  .wk-explain__flow{grid-template-columns:1fr;gap:10px}
  .wk-flow__op{transform:rotate(90deg);justify-self:center}
  .wk-explain.is-in .wk-flow__op{transform:rotate(90deg)}
}
@media (prefers-reduced-motion:reduce){
  .wk-flow__node--live::after{animation:none}
  .wk-explain__flow .wk-flow__node,.wk-explain__flow .wk-flow__op{opacity:1;transform:none;transition:none}
  .wk-explain.is-in .wk-flow__op{transform:none}
}

/* ---------- Process ----------
   The handoff's flat 4-across card row was replaced wholesale by the
   pinned-note layout. It is entirely our design, so it lives with the
   rest of our work in overrides.css section 9. */

/* ---------- Testimonials ---------- */
.wk-voice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:48px;align-items:stretch}

/* ---------- FAQ ---------- */
.wk-faq{display:grid;grid-template-columns:1fr 1.3fr;gap:48px;align-items:start}
.wk-faq__list{margin-top:4px}

/* ---------- Contact ---------- */
.wk-contact{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(2rem,5vw,4.5rem);align-items:start}
.wk-contact__channels{display:flex;flex-direction:column;gap:14px;margin-top:28px}
.wk-chan{display:flex;align-items:center;gap:16px;padding:16px 18px;border-radius:var(--radius-lg);border:1px solid var(--border-soft);background:var(--surface-card);box-shadow:var(--shadow-xs);color:var(--text-strong);transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),border-color var(--dur-base)}
.wk-chan:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);color:var(--text-strong)}
.wk-chan__ic{flex:none;width:48px;height:48px;border-radius:var(--radius-md);display:grid;place-items:center;color:#fff}
.wk-chan__ic .wk-ic{width:24px;height:24px}
.wk-chan--wa .wk-chan__ic{background:#25D366}
.wk-chan--ig .wk-chan__ic{background:linear-gradient(45deg,#F58529,#DD2A7B,#8134AF)}
.wk-chan__body{flex:1;display:flex;flex-direction:column}
.wk-chan__body b{font-family:var(--font-display);font-size:var(--text-md)}
.wk-chan__body span{font-size:var(--text-sm);color:var(--text-muted)}
.wk-chan>.wk-ic{color:var(--text-faint)}
.wk-contact__form{box-shadow:var(--shadow-md)!important}
.wk-form{display:flex;flex-direction:column;gap:16px}
.wk-form__row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.wk-form__fine{font-size:var(--text-xs);color:var(--text-muted);text-align:center;margin:2px 0 0}
.wk-contact__done{display:flex;flex-direction:column;gap:16px;align-items:center;text-align:center;padding:12px 0}
.wk-contact__doneic{width:60px;height:60px;border-radius:50%;background:var(--success-soft);color:var(--success);display:grid;place-items:center}
.wk-contact__doneic .wk-ic{width:30px;height:30px}

/* ---------- Final CTA band ---------- */
.wk-band{background:var(--surface-inverse)}
.wk-band__inner{padding-block:clamp(3rem,6vw,4.5rem);display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap}
.wk-band__title{color:var(--cream-50);font-size:clamp(1.8rem,1.2rem + 2vw,2.6rem);margin:0;letter-spacing:-.02em}
.wk-band__sub{color:var(--ink-300);margin:8px 0 0;font-size:var(--text-md)}
.wk-band__ctas{display:flex;gap:12px;flex-wrap:wrap}

/* ---------- Legal page (tnc.html) ---------- */
.wk-legal{max-width:var(--container-md);margin-inline:auto;padding-inline:var(--gutter)}
.wk-legal__head{padding:clamp(3rem,6vw,5rem) 0 2rem}
.wk-legal__crumb{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:20px}
.wk-legal__crumb a{color:var(--text-muted)}
.wk-legal__crumb a:hover{color:var(--text-strong)}
.wk-legal__title{font-size:clamp(2.2rem,1.5rem + 2.4vw,3rem);letter-spacing:-.03em;margin:0}
.wk-legal__meta{margin-top:12px;font-size:var(--text-sm);color:var(--text-muted)}
.wk-legal__note{max-width:var(--container-md);margin:0 auto 8px}
.wk-legal__grid{display:grid;grid-template-columns:220px 1fr;gap:48px;padding-bottom:5rem;align-items:start}
.wk-legal__toc{position:sticky;top:88px;display:flex;flex-direction:column;gap:4px}
.wk-legal__toc a{font-size:var(--text-sm);color:var(--text-muted);padding:7px 12px;border-radius:var(--radius-sm);border-left:2px solid transparent;transition:all var(--dur-fast) var(--ease-out)}
.wk-legal__toc a:hover{color:var(--text-strong);background:var(--surface-card)}
.wk-legal__toc a.on{color:var(--text-strong);border-left-color:var(--blue-500);background:var(--surface-card);font-weight:var(--fw-semibold)}
.wk-legal__body h2{font-size:var(--text-xl);margin:36px 0 12px;scroll-margin-top:88px}
.wk-legal__body h2:first-child{margin-top:0}
.wk-legal__body p,.wk-legal__body li{color:var(--text-body);line-height:1.7;font-size:var(--text-base)}
.wk-legal__body p{margin:0 0 14px}
.wk-legal__body ul{margin:0 0 14px;padding-left:20px;display:flex;flex-direction:column;gap:8px}
.wk-legal__body strong{color:var(--text-strong)}
@media (max-width:820px){.wk-legal__grid{grid-template-columns:1fr}.wk-legal__toc{display:none}}

/* ---------- Responsive ---------- */
@media (max-width:960px){
  .wk-hero__inner{grid-template-columns:1fr;gap:3rem}
  .wk-hero__art{max-width:520px}
  .wk-hero__stats{grid-template-columns:repeat(2,1fr);gap:28px}
  .wk-price-grid,.wk-addon-grid,.wk-proc-grid,.wk-voice-grid{grid-template-columns:1fr 1fr}
  .wk-faq,.wk-contact{grid-template-columns:1fr;gap:32px}
  .wk-hero__float--a{left:0}.wk-hero__float--b{right:0}
}
@media (max-width:600px){
  .wk-price-grid,.wk-addon-grid,.wk-proc-grid,.wk-voice-grid{grid-template-columns:1fr}
  .wk-form__row{grid-template-columns:1fr}
  .wk-sec__head-row{flex-direction:column;align-items:flex-start}
}
