/* ============ Cloudi waitlist splash — additions on top of site.css ============ */

/* ---------- hero waitlist form ---------- */
.waitlist{margin-top:30px;max-width:540px;background:rgba(255,255,255,.86);border:1px solid rgba(13,18,48,.08);border-radius:24px;padding:20px 20px 16px;box-shadow:var(--shadow-card);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.wl-head{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-bottom:16px}
.wl-head b{font-family:var(--font-display);font-size:18px;letter-spacing:-.02em;color:var(--ink)}
.wl-head span:last-child{font-size:14px;color:var(--muted);font-weight:600}
/* live dot: green, fades in and out while a ring pulses outward */
.wl-dot{position:relative;width:9px;height:9px;border-radius:50%;background:#22c55e;flex:none;animation:wlDotFade 1.6s ease-in-out infinite}
.wl-dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:#22c55e;animation:wlDotRing 1.6s ease-out infinite}
@keyframes wlDotFade{0%,100%{background-color:#22c55e}50%{background-color:rgba(34,197,94,.35)}}
@keyframes wlDotRing{0%{transform:scale(1);opacity:.55}100%{transform:scale(3);opacity:0}}
@media (prefers-reduced-motion:reduce){.wl-dot{animation:none;box-shadow:0 0 0 4px rgba(34,197,94,.18)}.wl-dot::after{display:none}}
.wl-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.wl-field{display:grid;gap:6px;min-width:0}
.wl-field.wl-wide{grid-column:1/-1}
.wl-field label{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.wl-field label em{font-style:normal;text-transform:none;letter-spacing:0;font-weight:600;color:#5a6180;margin-left:4px}
.wl-field input,.wl-combo{height:50px;border:1.5px solid rgba(13,18,48,.12);border-radius:14px;background:#fff;font:inherit;font-size:15.5px;font-weight:600;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.wl-field>input{width:100%;padding:0 14px;outline:0}
.wl-field input::placeholder{color:#6b7290;font-weight:500}
.wl-field>input:focus,.wl-combo:focus-within{border-color:var(--cloudi);box-shadow:0 0 0 4px rgba(47,139,255,.16)}
.wl-combo{display:flex;align-items:center;overflow:hidden}
.wl-plat{position:relative;display:flex;align-items:center;height:100%;background:#f4f8ff;border-right:1.5px solid rgba(13,18,48,.08);flex:none}
.wl-plat img{position:absolute;left:12px;top:50%;width:24px;height:24px;margin-top:-12px;border-radius:7px;pointer-events:none}
/* the select spans the whole pill (icon + word + arrow) so a tap anywhere opens it; icon and arrow are click-through overlays */
.wl-plat select{appearance:none;-webkit-appearance:none;border:0;background:transparent;font:inherit;font-size:15px;font-weight:700;color:var(--ink);cursor:pointer;outline:0;height:100%;padding:0 32px 0 44px}
.wl-plat select:focus-visible{text-decoration:underline;text-underline-offset:4px}
.wl-chev{position:absolute;right:11px;top:50%;width:11px;height:8px;margin-top:-4px;color:var(--muted);pointer-events:none}
.wl-at{padding:0 2px 0 14px;color:var(--muted);font-weight:700}
.wl-combo input{flex:1;min-width:0;height:100%;border:0;background:transparent;padding:0 14px 0 2px;outline:0;box-shadow:none}
.wl-err{min-height:0;font-size:12.5px;font-weight:700;color:#d92d42}
.wl-err:empty{display:none}
.wl-field.bad>input,.wl-field.bad .wl-combo{border-color:#e0384a;box-shadow:0 0 0 4px rgba(224,56,74,.12)}
.wl-submit{width:100%;margin-top:16px}
.wl-submit[disabled]{opacity:.75;cursor:progress}
.wl-msg{font-size:13.5px;font-weight:700;color:#d92d42;margin-top:10px}
.wl-msg:empty{display:none}
.wl-fine{margin-top:10px;font-size:12.5px;color:var(--muted);text-align:center}
.wl-how{display:inline-flex;align-items:center;gap:8px;margin-top:18px;font-weight:700;font-size:15px;color:var(--ink-2)}
.wl-how .arrow{width:16px;height:16px}
.wl-how:hover{color:var(--ink)}

/* success state */
.wl-done{margin-top:30px;max-width:540px;display:flex;gap:16px;align-items:flex-start;background:#fff;border:1px solid rgba(34,197,94,.28);border-radius:24px;padding:22px;box-shadow:var(--shadow-card);outline:0}
.wl-check{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff;display:grid;place-items:center;flex:none;box-shadow:0 10px 22px rgba(22,163,74,.28)}
.wl-check svg{width:22px;height:22px}
.wl-done b{font-family:var(--font-display);font-size:20px;letter-spacing:-.02em;color:var(--ink);display:block}
.wl-done p{margin-top:6px;font-size:15px;color:var(--ink-2);line-height:1.55}
.wl-done p strong{color:var(--ink)}
.wl-done [data-wl-pos]{display:block;margin-top:4px;color:var(--muted);font-size:14px}
.wl-done-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:14px}
.wl-reset{border:0;background:none;padding:6px 2px;font:inherit;font-size:13.5px;font-weight:700;color:var(--muted);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.wl-reset:hover{color:var(--ink)}
.wl-pop{animation:wlPop .5s cubic-bezier(.2,.9,.3,1.3)}
@keyframes wlPop{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}

/* ---------- library preview: Overview tab ---------- */
.lib-shell.app-look>.ov-panel{margin:14px 20px 20px;border-radius:22px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-soft);overflow:hidden}
.ov-mark{width:46px;height:46px;border-radius:14px;background:var(--cloudi-soft);display:grid;place-items:center;flex:none}
.ov-mark img{width:30px;height:auto}
.ov-panel .p-head h2{font-size:22px}
.ov-body{padding:20px 22px 22px;display:grid;gap:18px}
.ov-storage{border:1px solid var(--line);border-radius:18px;padding:16px 18px;background:linear-gradient(180deg,#f8fbff,#fff)}
.ov-st-top{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px 14px;font-size:14px;color:var(--ink-2);font-weight:600}
.ov-st-top b{font-family:var(--font-display);font-size:24px;letter-spacing:-.02em;color:var(--ink);margin-right:4px}
.ov-free{color:var(--muted);font-size:13px}
.ov-pct{color:#15803d;font-weight:800}
.ov-bar{display:flex;height:12px;border-radius:999px;overflow:hidden;background:#eef2f8;margin-top:12px;gap:2px}
.ov-bar i{display:block;height:100%}
.ov-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:12px;font-size:13px;font-weight:700;color:var(--ink-2)}
.ov-legend span{display:inline-flex;align-items:center;gap:7px}
.ov-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.ov-legend em{font-style:normal;color:var(--muted);font-weight:600}
.ov-accounts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.ov-acct{display:grid;gap:12px;text-align:left;border:1px solid var(--line);border-radius:18px;background:#fff;padding:14px;font:inherit;color:inherit;cursor:pointer;transition:border-color .18s,box-shadow .18s,transform .18s}
.ov-acct:hover{border-color:rgba(47,139,255,.45);box-shadow:var(--shadow-soft);transform:translateY(-2px)}
.ov-acct:focus-visible{outline:3px solid rgba(47,139,255,.45);outline-offset:2px}
.oa-top{display:flex;align-items:center;gap:10px;min-width:0}
.oa-top>img{width:34px;height:34px;border-radius:10px;flex:none}
.oa-top>span:nth-child(2){display:grid;min-width:0}
.oa-top b{font-size:15px;color:var(--ink)}
.oa-top small{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.oa-ok{margin-left:auto;display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:999px;background:#e8f8ee;color:#15803d;font-size:11px;font-weight:800;flex:none}
.oa-ok svg{width:11px;height:11px}
.oa-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.oa-thumbs img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;display:block}
.oa-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);font-weight:600}
.oa-foot b{color:var(--ink);font-size:14px}
.ov-note{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;color:var(--muted);line-height:1.5}
.ov-note svg{width:16px;height:16px;flex:none;margin-top:2px;color:var(--cloudi)}

@media (max-width:1060px){.ov-accounts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){
  .waitlist,.wl-done{padding:16px;border-radius:20px}
  .wl-grid{grid-template-columns:1fr}
  .lib-shell.app-look>.ov-panel{margin:12px}
  .ov-body{padding:16px}
}
@media (max-width:480px){.ov-accounts{grid-template-columns:1fr}.wl-plat select{padding-right:28px}}
@media (prefers-reduced-motion:reduce){.wl-pop{animation:none}.ov-acct{transition:none}}

/* hero intro copy — a shade darker than --muted so it reads easily on the sky background */
.hero .body{color:#474e70}

/* landing page only: slide the whole hero picture (cloud, creator, logos, cards) right so
   "Social media cloud storage." reads clearly. Side-by-side layout only (>1060px); stacked layouts are unchanged.
   `left` (not transform) so the picture's layers keep their stacking order against the text.
   On 1061–1399px screens the Fanbase icon moves ~4% less so it never runs past the right edge. */
@media (min-width:1061px){ .hero .scene{left:15%} }
@media (min-width:1061px) and (max-width:1399px){ .hero .scene .app.fb{left:72%} }

/* landing page only: Spark logo and the Dani Rivers post sit closer under the cloud (was sp 50% / post 63%; phones 52% / 77%) */
.hero .scene .app.sp{top:45%}
.hero .scene .xpost{top:57%}
@media (max-width:760px){
  .hero .scene .app.sp{top:44%}
  .hero .scene .xpost{top:64%}
}

/* spam trap — kept off-screen (not display:none, which some bots skip) */
.wl-hp{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}

/* =====================================================================
   Accessibility (WCAG 2.2 AA) — RFC-001 Phase 2
   ===================================================================== */
/* A3 skip link: hidden until focused */
.skip-link{position:absolute;left:12px;top:-200px;z-index:1000;font-family:var(--font-body),system-ui,sans-serif;font-size:15px;padding:12px 18px;border-radius:12px;background:#fff;color:#0d1230;
  font-weight:800;box-shadow:0 10px 30px rgba(13,18,48,.25);outline:3px solid #1a63e8;outline-offset:2px}
.skip-link:focus{top:12px}
main:focus{outline:none}

/* A1 focus: one solid ring, ≥3:1 against every light surface on the page (#1a63e8 = 5.3:1 on white) */
:focus-visible{outline:3px solid #1a63e8;outline-offset:2px}
.btn:focus-visible,.nav-links .btn-primary:focus-visible,.mode button:focus-visible,.srcbtn:focus-visible,
.fake-nav .nv:focus-visible,.ov-acct:focus-visible,.chip:focus-visible,.dest button:focus-visible,
.carousel-controls button:focus-visible,.nav-toggle:focus-visible,.tour-toggle:focus-visible{outline:3px solid #1a63e8;outline-offset:3px}
.switch input:focus-visible+.sw{outline:3px solid #1a63e8;outline-offset:2px}
/* on dark surfaces (video tiles, selection bar) use white */
.story .play:focus-visible,.sel-bar :focus-visible,.tile .expand:focus-visible{outline:3px solid #fff;outline-offset:-5px;box-shadow:0 0 0 6px #1a63e8}
/* form fields: solid border + outer ring instead of a faint glow */
.wl-field>input:focus,.wl-combo:focus-within{border-color:#1a63e8;box-shadow:0 0 0 1px #1a63e8,0 0 0 5px rgba(26,99,232,.28)}
.wl-plat select:focus-visible{outline:3px solid #1a63e8;outline-offset:-4px;border-radius:12px;text-decoration:none}
.wl-field.bad>input:focus,.wl-field.bad .wl-combo:focus-within{border-color:#c4213a;box-shadow:0 0 0 1px #c4213a,0 0 0 5px rgba(196,33,58,.22)}

/* A2 demo pause/play control */
.tour-toggle{display:inline-flex;align-items:center;gap:8px;margin-top:12px;margin-left:8px;min-height:36px;padding:8px 14px;border-radius:999px;
  border:1.5px solid rgba(13,18,48,.18);background:#fff;color:#0d1230;font-weight:700;font-size:14px;vertical-align:middle}
.tour-toggle svg{width:14px;height:14px;fill:currentColor}
.tour-toggle:hover{border-color:#1a63e8;color:#1a63e8}
.tour-toggle .i-play,.tour-toggle.is-paused .i-pause{display:none}
.tour-toggle.is-paused .i-play{display:block}
@media (prefers-reduced-motion:reduce){.tour-toggle{display:none}}

/* A7 preview headings demoted h2 → h3 (keep the same look) */
.p-head h3{font-size:21px;margin:0;letter-spacing:-.02em;font-weight:800}
.ov-panel .p-head h3{font-size:22px}

/* A9 standalone links get a ≥24px target */
.wl-how,.watch{min-height:24px;display:inline-flex;align-items:center}
.footer .links a{display:inline-flex;align-items:center;min-height:24px;padding-block:2px}

/* A5 "Tap to play" sits on video thumbnails — give it the same dark pill as the tags */
.story .hint{padding:4px 10px;border-radius:999px;background:rgba(13,18,48,.78);text-shadow:none}

/* focus rings appear instantly (the tabs had transition:all, which animated the outline in from 0) */
.fake-nav .nv{transition:background-color .18s,border-color .18s,color .18s,box-shadow .18s}

/* consent line under the Join button (links must be visibly links) */
.wl-consent{margin-top:4px}
.wl-consent a{white-space:nowrap;color:#1655cc;text-decoration:underline;text-underline-offset:2px;font-weight:600}
.wl-consent a:hover{color:#0d1230}
