/* Refract design system v2: tokens, base elements, and shared components used by every page. */
:root{
  --canvas:#0A0F16;
  --canvas-2:#0D131C;
  --panel:#121A24;
  --panel-2:#17212D;
  --panel-3:#1D2836;
  --sunken:#080C12;
  --accent:#F1ECE2;
  --accent-hover:#FFFFFF;
  --accent-muted:rgba(241,236,226,.12);
  --text-primary:#EDF1F6;
  --text-secondary:#A3B2C2;
  --text-tertiary:#8494A6;
  --text-over:#D2DCE6;
  --line:rgba(160,180,200,.12);
  --line-2:rgba(160,180,200,.22);
  --border-strong:#5B6E82;
  --beam-tiktok:#7FF0DD;
  --beam-reels:#B7A2FF;
  --beam-youtube:#FF9874;
  --grad:linear-gradient(100deg,#7FF0DD 0%,#B7A2FF 50%,#FF9874 100%);
  --grad-soft:linear-gradient(100deg,rgba(127,240,221,.14),rgba(183,162,255,.14) 50%,rgba(255,152,116,.14));
  --ring:rgba(183,162,255,.32);
  --danger:#FF8C8C;
  --success:#7FF0B4;
  --warn:#FFD27A;
  --ease-out:cubic-bezier(.22,.8,.24,1);
  --ease-io:cubic-bezier(.65,.05,.36,1);
  --display:"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;
  --body:"Figtree",ui-sans-serif,system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --r-sm:10px;--r-md:14px;--r-lg:20px;--r-xl:28px;
  --shadow-1:0 1px 0 rgba(255,255,255,.04) inset,0 18px 44px rgba(0,0,0,.34);
  --glow:0 0 0 1px rgba(183,162,255,.24),0 12px 40px rgba(183,162,255,.16);
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{overflow-x:hidden;overflow-x:clip;-webkit-text-size-adjust:100%}
body{margin:0;overflow-x:hidden;overflow-x:clip;background:var(--canvas);color:var(--text-primary);font-family:var(--body);font-size:1.0625rem;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg,canvas,video{display:block;max-width:100%}
a{color:inherit}
p{margin:0}
h1,h2,h3,h4{margin:0;font-weight:inherit}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
::selection{background:rgba(183,162,255,.38);color:#fff}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.mono{font-family:var(--mono)}
.nw{white-space:nowrap}
:focus-visible{outline:2px solid var(--beam-reels);outline-offset:3px;border-radius:8px}
.skip{position:fixed;left:16px;top:-60px;z-index:200;background:var(--accent);color:var(--canvas);padding:10px 16px;border-radius:10px;text-decoration:none;font-weight:600;transition:top .3s var(--ease-out)}
.skip:focus{top:12px}

/* one bright environment: slow aurora and fine grain behind everything */
body::before{content:"";position:fixed;inset:-20%;z-index:-1;pointer-events:none;background:radial-gradient(34% 30% at 18% 12%,rgba(127,240,221,.09),transparent 70%),radial-gradient(36% 32% at 84% 30%,rgba(183,162,255,.10),transparent 70%),radial-gradient(34% 30% at 60% 92%,rgba(255,152,116,.07),transparent 70%);animation:envDrift 90s ease-in-out -30s infinite alternate}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.045;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' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@keyframes envDrift{from{transform:translate3d(-3%,-2%,0) rotate(-2deg)}to{transform:translate3d(3%,2%,0) rotate(2deg)}}
body.paused *,body.paused *::before,body.paused *::after{animation-play-state:paused!important}

/* type */
.kicker{font-family:var(--mono);font-size:.76rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-secondary)}
.h2{font-family:var(--display);font-weight:500;font-size:clamp(1.9rem,3.2vw,2.85rem);line-height:1.08;letter-spacing:-.025em;margin:14px 0 18px;max-width:20ch}
.lede{color:var(--text-secondary);font-size:1.1rem;max-width:56ch}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;position:relative;padding:13px 22px;border-radius:999px;border:1px solid transparent;background:var(--grad);background-size:180% 100%;background-position:0% 50%;color:#0A0F16;font-weight:600;font-size:1rem;line-height:1.2;text-decoration:none;text-shadow:none;white-space:nowrap;transition:background-position .6s var(--ease-out),transform .3s var(--ease-out),box-shadow .3s var(--ease-out),opacity .3s var(--ease-out)}
.btn:hover{background-position:100% 50%;transform:translateY(-1px);box-shadow:0 10px 30px rgba(183,162,255,.28)}
.btn:active{transform:translateY(0)}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.45;pointer-events:none}
.btn-2{background:rgba(255,255,255,.04);color:var(--text-primary);border-color:var(--line-2);font-weight:500}
.btn-2:hover{background:rgba(255,255,255,.07);border-color:var(--border-strong);box-shadow:none}
.btn-q{background:transparent;color:var(--text-secondary);border-color:transparent;padding-left:12px;padding-right:12px;font-weight:500}
.btn-q:hover{background:rgba(160,180,200,.08);color:var(--text-primary);transform:none;box-shadow:none}
.btn-sm{padding:9px 16px;font-size:.92rem}
.btn-xs{padding:6px 11px;font-size:.84rem;gap:6px}
.btn-danger{background:transparent;color:var(--danger);border-color:rgba(255,140,140,.45);font-weight:500}
.btn-danger:hover{background:rgba(255,140,140,.1);border-color:var(--danger);box-shadow:none}
.btn-light{background:var(--accent);color:#0A0F16}
.btn-light:hover{background:#fff}
.btn svg,.icon{width:16px;height:16px;flex:none}
.btn .spin{width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--text-secondary);transition:background-color .25s var(--ease-out),color .25s var(--ease-out),border-color .25s var(--ease-out)}
.icon-btn:hover{background:rgba(160,180,200,.1);color:var(--text-primary)}
.icon-btn svg{width:16px;height:16px}
.link{color:var(--text-primary);text-decoration:underline;text-decoration-color:rgba(183,162,255,.55);text-underline-offset:4px;transition:text-decoration-color .3s var(--ease-out)}
.link:hover{text-decoration-color:var(--beam-reels)}
.linkbtn{background:none;border:0;padding:0;color:var(--text-primary);text-decoration:underline;text-decoration-color:rgba(183,162,255,.55);text-underline-offset:4px;font:inherit}

/* fields */
.lbl{display:block;font-family:var(--mono);font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);margin:0 0 8px}
.field{width:100%;padding:13px 15px;border-radius:12px;border:1px solid var(--border-strong);background:var(--sunken);font-size:1.02rem;line-height:1.45;transition:border-color .25s var(--ease-out),box-shadow .25s var(--ease-out)}
.field::placeholder{color:var(--text-tertiary)}
.field:hover{border-color:#7489A0}
.field:focus{outline:none;border-color:var(--beam-reels);box-shadow:0 0 0 3px var(--ring)}
.field[aria-invalid="true"]{border-color:var(--danger)}
select.field{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23A3B2C2' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:38px}
textarea.field{resize:vertical;min-height:52px}
.help{font-size:.88rem;color:var(--text-secondary);margin-top:8px}
.err{font-size:.92rem;color:var(--danger);margin-top:8px}
.ok-msg{font-size:.92rem;color:var(--success);margin-top:8px}

/* chips, toggles, segmented controls, switches */
.chip-btn{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;border:1px solid var(--line-2);background:rgba(255,255,255,.03);font-family:var(--mono);font-size:.78rem;color:var(--text-secondary);transition:border-color .25s var(--ease-out),color .25s var(--ease-out),background-color .25s var(--ease-out)}
.chip-btn:hover{border-color:var(--border-strong);color:var(--text-primary);background:rgba(255,255,255,.06)}
.toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;border:1px solid var(--line-2);background:transparent;font-size:.95rem;color:var(--text-secondary);transition:border-color .25s var(--ease-out),background-color .25s var(--ease-out),color .25s var(--ease-out)}
.toggle::before{content:"";width:8px;height:8px;border-radius:50%;border:1px solid currentColor;transition:background-color .25s var(--ease-out),border-color .25s var(--ease-out)}
.toggle[aria-pressed="true"]{color:var(--text-primary);border-color:var(--border-strong);background:rgba(255,255,255,.06)}
.toggle.tt[aria-pressed="true"]{border-color:rgba(127,240,221,.55);background:rgba(127,240,221,.10)}
.toggle.rl[aria-pressed="true"]{border-color:rgba(183,162,255,.6);background:rgba(183,162,255,.12)}
.toggle.yt[aria-pressed="true"]{border-color:rgba(255,152,116,.6);background:rgba(255,152,116,.11)}
.toggle.tt[aria-pressed="true"]::before{background:var(--beam-tiktok);border-color:var(--beam-tiktok)}
.toggle.rl[aria-pressed="true"]::before{background:var(--beam-reels);border-color:var(--beam-reels)}
.toggle.yt[aria-pressed="true"]::before{background:var(--beam-youtube);border-color:var(--beam-youtube)}
.toggle.plain[aria-pressed="true"]::before{background:var(--accent);border-color:var(--accent)}
.seg{display:inline-flex;padding:3px;border-radius:999px;border:1px solid var(--line-2);background:var(--sunken)}
.seg label{position:relative}
.seg input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.seg span{display:block;padding:6px 14px;border-radius:999px;font-size:.9rem;color:var(--text-secondary);transition:background-color .2s var(--ease-out),color .2s var(--ease-out)}
.seg input:checked+span{background:var(--accent);color:#0A0F16;font-weight:500}
.seg input:focus-visible+span{outline:2px solid var(--beam-reels);outline-offset:2px}
.switch{position:relative;display:inline-block;width:44px;height:26px;flex:none}
.switch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer;z-index:1}
.switch span{position:absolute;inset:0;border-radius:999px;background:var(--line-2);transition:background-color .2s var(--ease-out)}
.switch span::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#C9D3DD;transition:transform .2s var(--ease-out),background-color .2s var(--ease-out)}
.switch input:checked+span{background:var(--grad)}
.switch input:checked+span::after{transform:translateX(18px);background:#0A0F16}
.switch input:focus-visible+span{outline:2px solid var(--beam-reels);outline-offset:3px}

/* platform tags and badges */
.tag{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;color:var(--text-secondary);white-space:nowrap}
.tag::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}
.tag.tt::before{background:var(--beam-tiktok)}
.tag.rl::before{background:var(--beam-reels)}
.tag.yt::before{background:var(--beam-youtube)}
.tag.rest::before{background:transparent;border:1px solid var(--text-secondary)}
.tag.plan::before{background:var(--accent)}
.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;padding:4px 9px;border-radius:999px;border:1px solid var(--line-2);color:var(--text-secondary);white-space:nowrap}
.badge.pro{border-color:transparent;background:var(--grad);color:#0A0F16;font-weight:500}
.badge.owner{border-color:rgba(255,210,122,.5);color:var(--warn)}
.badge.now{border-color:rgba(127,240,180,.5);color:var(--success)}

/* cards and dialogs */
.card{background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,0)) ,var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
dialog{border:1px solid var(--line-2);border-radius:var(--r-xl);background:#111924;color:var(--text-primary);padding:0;width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;box-shadow:0 30px 90px rgba(0,0,0,.6)}
dialog::backdrop{background:rgba(4,7,11,.72);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
dialog[open]{animation:dlgIn .35s var(--ease-out) both}
@keyframes dlgIn{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.dlg{padding:28px}
.dlg h2{font-family:var(--display);font-weight:500;font-size:1.65rem;letter-spacing:-.02em;line-height:1.15;margin:10px 0 8px}
.dlg-x{position:absolute;top:14px;right:14px}

/* toasts */
.toasts{position:fixed;left:50%;bottom:24px;translate:-50% 0;z-index:300;display:grid;gap:8px;justify-items:center;pointer-events:none;width:min(460px,calc(100vw - 32px))}
.toast{display:flex;align-items:center;gap:14px;padding:11px 12px 11px 16px;border-radius:14px;background:#EEF2F7;color:#0A0F16;font-size:.95rem;box-shadow:0 14px 44px rgba(0,0,0,.45);pointer-events:auto;animation:toastIn .35s var(--ease-out) both}
.toast.out{animation:toastOut .3s var(--ease-io) both}
.toast button{border:0;background:#0A0F16;color:#fff;border-radius:9px;padding:6px 11px;font-size:.88rem;font-weight:500}
@keyframes toastIn{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(6px)}}

/* Google sign-in button (brand colours kept as Google specifies) */
.gbtn{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;padding:12px 18px;border-radius:999px;border:1px solid #DADCE0;background:#fff;color:#1F1F1F;font-weight:500;font-size:1rem;transition:background-color .2s var(--ease-out),box-shadow .2s var(--ease-out)}
.gbtn:hover{background:#F7F8F8;box-shadow:0 2px 10px rgba(0,0,0,.2)}
.gbtn svg{width:18px;height:18px}

@media (pointer:coarse){.btn,.btn-sm,.toggle,.chip-btn{min-height:44px}.icon-btn{width:44px;height:44px}}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{animation:none!important;transition:none!important;transition-delay:0s!important}
}
