/* Scholiq Design Tokens — extracted from the reference system */

:root{
  /* Brand — Indigo */
  --p50:#EEF2FF; --p100:#E0E7FF; --p200:#C7D2FE; --p300:#A5B4FC;
  --p400:#818CF8; --p500:#6366F1; --p600:#4F46E5; --p700:#4338CA;
  --p800:#3730A3; --p900:#312E81;

  /* Accent — Coral */
  --c50:#FFF1F2; --c100:#FFE4E6; --c200:#FECDD3; --c300:#FDA4AF;
  --c400:#FB7185; --c500:#F43F5E; --c600:#E11D48; --c700:#BE123C;

  /* Semantic */
  --success:#10B981; --success-50:#ECFDF5; --success-100:#D1FAE5;
  --warning:#F59E0B; --warning-50:#FFFBEB; --warning-100:#FEF3C7;
  --error:#EF4444;   --error-50:#FEF2F2;   --error-100:#FEE2E2;
  --info:#3B82F6;    --info-50:#EFF6FF;    --info-100:#DBEAFE;

  /* Neutrals */
  --n50:#F9FAFB; --n100:#F3F4F6; --n200:#E5E7EB; --n300:#D1D5DB;
  --n400:#9CA3AF; --n500:#6B7280; --n600:#4B5563; --n700:#374151;
  --n800:#1F2937; --n900:#111827;

  /* Gradients */
  --grad-hero: linear-gradient(135deg,#6366F1 0%,#8B5CF6 50%,#F43F5E 100%);
  --grad-cool: linear-gradient(135deg,#4F46E5 0%,#7C3AED 100%);
  --grad-warm: linear-gradient(135deg,#FB7185 0%,#F59E0B 100%);
  --grad-soft-indigo: linear-gradient(135deg,#EEF2FF 0%,#E0E7FF 100%);
  --grad-soft-coral: linear-gradient(135deg,#FFF1F2 0%,#FFE4E6 100%);

  /* Type */
  --font: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --mono: 'JetBrains Mono', ui-monospace, Menlo, monospace;

  /* Radius */
  --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:20px; --r-2xl:24px; --r-pill:999px;

  /* Elevation */
  --el-1: 0 1px 2px rgba(15,23,42,.04), 0 1px 1px rgba(15,23,42,.03);
  --el-2: 0 4px 12px -2px rgba(15,23,42,.08), 0 2px 4px -1px rgba(15,23,42,.04);
  --el-3: 0 12px 24px -6px rgba(15,23,42,.12), 0 4px 8px -2px rgba(15,23,42,.06);
  --el-4: 0 24px 48px -12px rgba(15,23,42,.18), 0 8px 16px -4px rgba(15,23,42,.08);
  --el-glow: 0 8px 24px -4px rgba(99,102,241,.4);
}

/* Reset */
*{box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
html,body{font-family:var(--font);color:var(--n900);background:#0B0F1E;line-height:1.5;font-feature-settings:'kern' 1,'liga' 1,'calt' 1,'ss01' 1;text-rendering:optimizeLegibility}
body{min-height:100vh;display:grid;place-items:center;overflow:hidden}
img,svg{display:block;max-width:100%}
button{font:inherit;border:0;background:none;cursor:pointer;color:inherit;padding:0}

/* Stage — fills viewport, dark canvas backdrop */
.stage{
  position:fixed;inset:0;
  display:grid;place-items:center;
  background:
    radial-gradient(circle at 30% 10%, rgba(99,102,241,.18) 0%, transparent 45%),
    radial-gradient(circle at 70% 90%, rgba(244,63,94,.14) 0%, transparent 45%),
    linear-gradient(180deg,#0B0F1E 0%,#08091A 100%);
  overflow:hidden;
}
.stage::before{
  content:""; position:absolute; inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: radial-gradient(circle at center, black 0%, transparent 70%);
}

/* Phone */
.phone{
  width:375px;height:812px;
  border-radius:54px;
  background:linear-gradient(160deg,#1E293B 0%,#0F172A 50%,#020617 100%);
  padding:11px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.10),
    inset 0 0 0 2px rgba(255,255,255,.06),
    inset 0 -2px 0 rgba(0,0,0,.4),
    0 60px 120px -32px rgba(0,0,0,.7),
    0 32px 64px -20px rgba(99,102,241,.25),
    0 12px 24px -8px rgba(15,23,42,.4);
  position:relative;flex-shrink:0;
}
.phone-screen{
  width:100%;height:100%;
  border-radius:44px;
  background:#fff;
  overflow:hidden;
  position:relative;
  display:flex;flex-direction:column;
  isolation:isolate;
}
.notch{position:absolute;top:11px;left:50%;transform:translateX(-50%);width:115px;height:32px;border-radius:18px;background:#000;z-index:50;box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 2px 6px rgba(0,0,0,.5)}
.home-ind{position:absolute;left:50%;transform:translateX(-50%);bottom:8px;width:134px;height:5px;background:var(--n900);border-radius:99px;opacity:.55;z-index:30}
.home-ind.light{background:#fff;opacity:.9}

/* Status bar */
.sb{
  height:54px;flex-shrink:0;
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 28px 0;
  font-size:14px;font-weight:600;color:var(--n900);
  position:relative;z-index:7;
}
.sb.dark{position:absolute;top:0;left:0;right:0;background:transparent;color:#fff}
.sb.dark *{color:#fff !important}
.sb-time{font-variant-numeric:tabular-nums;font-size:15px;font-weight:600}
.sb-icons{display:flex;gap:6px;align-items:center}
.sb-bars{display:flex;gap:1.5px;align-items:flex-end;height:10px}
.sb-bars i{width:3px;background:currentColor;border-radius:1px;display:block}
.sb-bars i:nth-child(1){height:3px}.sb-bars i:nth-child(2){height:5px}
.sb-bars i:nth-child(3){height:7px}.sb-bars i:nth-child(4){height:9px}
.sb-batt{width:24px;height:11px;border:1.2px solid currentColor;border-radius:3px;position:relative;display:grid;align-items:center;padding:1px}
.sb-batt::after{content:"";position:absolute;right:-3px;top:50%;transform:translateY(-50%);width:1.5px;height:5px;background:currentColor;border-radius:1px}
.sb-batt b{display:block;width:78%;height:100%;background:currentColor;border-radius:1px}
.sb-wifi{width:14px;height:10px}

/* App chrome */
.app{flex:1;overflow:hidden;display:flex;flex-direction:column;position:relative;background:#fff}
.app-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:0 20px 100px;display:flex;flex-direction:column;gap:14px;-webkit-overflow-scrolling:touch}
.app-body > *{flex-shrink:0}
.app-body.no-pad{padding:0;padding-bottom:100px}
.app-body::-webkit-scrollbar{display:none}
.app-body{scrollbar-width:none}

/* Bottom nav */
.bnav{
  position:absolute;bottom:0;left:0;right:0;
  height:84px;background:rgba(255,255,255,.92);
  backdrop-filter:blur(20px) saturate(180%);
  -webkit-backdrop-filter:blur(20px) saturate(180%);
  border-top:1px solid var(--n100);
  display:grid;grid-template-columns:repeat(5,1fr);
  padding:8px 4px 24px;z-index:20;
}
.bnav-item{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:6px 0;gap:4px;color:var(--n400);position:relative;transition:color .15s}
.bnav-item.active{color:var(--p600)}
.bnav-item i{width:24px;height:24px;display:grid;place-items:center}
.bnav-item span{font-size:10px;font-weight:600;letter-spacing:.01em}
.bnav-item.active::before{content:"";position:absolute;top:-1px;width:32px;height:3px;background:var(--p600);border-radius:0 0 3px 3px}

/* Utilities */
.row{display:flex;align-items:center;gap:12px}
.col{display:flex;flex-direction:column;gap:8px}
.spread{display:flex;align-items:center;justify-content:space-between;gap:12px}
.center{display:grid;place-items:center}
.muted{color:var(--n500)}
.tnum{font-variant-numeric:tabular-nums}
.eyebrow{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--p600)}
.divider{height:1px;background:var(--n100)}
.tiny{font-size:11px}.xs{font-size:12px}.sm{font-size:13px}.md{font-size:15px}.lg{font-size:17px}.xl{font-size:20px}.xxl{font-size:24px}
.b{font-weight:600}.bb{font-weight:700}.bbb{font-weight:800}

/* Avatars */
.av{border-radius:50%;background:var(--p100);color:var(--p700);display:grid;place-items:center;font-weight:700;flex-shrink:0;overflow:hidden}
.av-32{width:32px;height:32px;font-size:11px}
.av-36{width:36px;height:36px;font-size:12px}
.av-40{width:40px;height:40px;font-size:13px}
.av-44{width:44px;height:44px;font-size:14px}
.av-48{width:48px;height:48px;font-size:15px}
.av-56{width:56px;height:56px;font-size:17px}
.av.coral{background:var(--c100);color:var(--c700)}
.av.amber{background:var(--warning-100);color:#78350F}
.av.green{background:var(--success-100);color:#065F46}
.av.violet{background:#EDE9FE;color:#5B21B6}
.av.sky{background:#E0F2FE;color:#075985}

/* Cards */
.card{background:#fff;border:1px solid var(--n100);border-radius:var(--r-lg);padding:16px;box-shadow:var(--el-1)}
.card-flat{background:var(--n50);border-radius:var(--r-lg);padding:14px}
.card-tinted{background:var(--p50);border-radius:var(--r-lg);padding:14px;border:1px solid var(--p100)}
.card-grad{background:var(--grad-cool);color:#fff;border-radius:var(--r-xl);padding:18px;box-shadow:var(--el-glow);position:relative;overflow:hidden}
.card-grad::after{content:"";position:absolute;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 60%);right:-50px;top:-50px;pointer-events:none}
.card-grad-coral{background:var(--grad-warm);color:#fff;border-radius:var(--r-xl);padding:18px;box-shadow:0 8px 24px -4px rgba(244,63,94,.4);position:relative;overflow:hidden}

/* Pills */
.pill{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:var(--r-pill);font-size:11px;font-weight:600;background:var(--n100);color:var(--n700);white-space:nowrap}
.pill-p{background:var(--p100);color:var(--p700)}
.pill-c{background:var(--c100);color:var(--c700)}
.pill-s{background:var(--success-100);color:#065F46}
.pill-w{background:var(--warning-100);color:#78350F}
.pill-e{background:var(--error-100);color:#991B1B}
.pill-i{background:var(--info-100);color:#1E40AF}
.pill-dark{background:var(--n900);color:#fff}
.pill-outline{background:transparent;border:1px solid var(--n200);color:var(--n700)}
.dot{width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 20px;border-radius:var(--r-md);font-weight:600;font-size:15px;background:var(--p600);color:#fff;box-shadow:var(--el-glow);width:100%;transition:transform .1s, box-shadow .15s;white-space:nowrap}
.btn:active{transform:scale(.98)}
.btn-sm{height:34px;font-size:12.5px;padding:0 12px;border-radius:10px;width:auto;box-shadow:none;font-weight:600}
.btn-ghost{background:transparent;color:var(--p600);box-shadow:none}
.btn-outline{background:transparent;color:var(--n800);box-shadow:none;border:1px solid var(--n200)}
.btn-coral{background:var(--c500);box-shadow:0 8px 24px -4px rgba(244,63,94,.4)}
.btn-dark{background:var(--n900);box-shadow:0 8px 24px -4px rgba(17,24,39,.3)}
.btn-soft{background:var(--p50);color:var(--p700);box-shadow:none}

/* Input */
.input{height:48px;border-radius:var(--r-md);border:1px solid var(--n200);background:#fff;padding:0 16px;display:flex;align-items:center;font-size:14px;color:var(--n900);width:100%;gap:10px}
.input.focus{border-color:var(--p500);box-shadow:0 0 0 3px var(--p100)}
.input-lab{font-size:12px;font-weight:600;color:var(--n600);margin-bottom:6px;display:block}

/* Segmented */
.seg{background:var(--n100);border-radius:12px;padding:4px;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:0;font-size:13px;font-weight:600}
.seg button{height:34px;border-radius:8px;color:var(--n500);transition:.15s}
.seg button.on{background:#fff;color:var(--n900);box-shadow:var(--el-1)}

/* Toggle */
.tog{width:40px;height:24px;background:var(--n200);border-radius:99px;position:relative;flex-shrink:0;transition:background .2s;cursor:pointer}
.tog::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:var(--el-1);transition:left .2s}
.tog.on{background:var(--p500)}.tog.on::after{left:18px}

/* Progress */
.prog{height:6px;background:var(--n100);border-radius:99px;overflow:hidden}
.prog b{display:block;height:100%;background:var(--p500);border-radius:99px;transition:width .4s ease}
.prog.coral b{background:var(--c500)}
.prog.green b{background:var(--success)}

/* Hero header gradient */
.head-grad{background:var(--grad-cool);color:#fff;padding:56px 22px 28px;border-radius:0 0 28px 28px;position:relative;overflow:hidden}
.head-grad::after{content:"";position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 60%);right:-60px;top:-60px;pointer-events:none}
.head-grad::before{content:"";position:absolute;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,rgba(244,63,94,.35) 0%,transparent 60%);right:60px;bottom:-70px;pointer-events:none}
.head-grad > *{position:relative;z-index:1}

/* Tabs */
.tabs{display:flex;gap:24px;border-bottom:1px solid var(--n100);margin:0 -20px;padding:0 20px}
.tabs button{padding:12px 0;font-size:13px;font-weight:600;color:var(--n500);position:relative;transition:.15s}
.tabs button.on{color:var(--n900)}
.tabs button.on::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2.5px;background:var(--p600);border-radius:2px}

/* Icon tile */
.itile{display:grid;place-items:center;flex-shrink:0;border-radius:10px}
.itile-32{width:32px;height:32px;border-radius:8px}
.itile-36{width:36px;height:36px;border-radius:10px}
.itile-40{width:40px;height:40px;border-radius:10px}
.itile-44{width:44px;height:44px;border-radius:12px}

/* Calendar */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;font-size:12px}
.cal-d{aspect-ratio:1;display:grid;place-items:center;border-radius:10px;font-weight:600;color:var(--n700);position:relative}
.cal-d.h{font-size:10px;font-weight:600;color:var(--n400);text-transform:uppercase;letter-spacing:.05em}
.cal-d.muted{color:var(--n300)}
.cal-d.present{background:var(--success-100);color:#065F46}
.cal-d.absent{background:var(--error-100);color:#991B1B}
.cal-d.leave{background:var(--warning-100);color:#78350F}
.cal-d.hol{background:var(--n100);color:var(--n400)}
.cal-d.today{background:var(--p600);color:#fff;box-shadow:var(--el-glow)}

/* Icon strokes */
.ic{width:20px;height:20px;display:inline-block;flex-shrink:0;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none;vertical-align:middle}
.ic-14{width:14px;height:14px;stroke-width:2.2}
.ic-16{width:16px;height:16px;stroke-width:2.1}
.ic-18{width:18px;height:18px}
.ic-22{width:22px;height:22px;stroke-width:1.9}
.ic-24{width:24px;height:24px;stroke-width:1.8}
.ic-28{width:28px;height:28px;stroke-width:1.7}
.ic-fill{fill:currentColor;stroke:none}

/* Animations */
@keyframes pulse-soft{0%,100%{opacity:1}50%{opacity:.6}}
@keyframes flicker{0%,100%{transform:scale(1) rotate(-2deg);filter:brightness(1)}25%{transform:scale(1.06) rotate(1deg);filter:brightness(1.15)}50%{transform:scale(.96) rotate(-1deg)}75%{transform:scale(1.04) rotate(2deg)}}
@keyframes float-soft{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes confetti-fall{0%{transform:translate(0,-40px) rotate(0);opacity:0}10%{opacity:1}100%{transform:translate(var(--cx,20px),420px) rotate(var(--cr,720deg));opacity:0}}
@keyframes screen-in{0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:translateY(0)}}
@keyframes sheet-up{0%{transform:translateY(100%)}100%{transform:translateY(0)}}
@keyframes fade-in{0%{opacity:0}100%{opacity:1}}
@keyframes check-draw{from{stroke-dashoffset:32}to{stroke-dashoffset:0}}
@keyframes ring-fill{from{stroke-dasharray:0 360}to{stroke-dasharray:var(--ring-dash,270) 360}}

.flame{display:inline-block;transform-origin:center bottom;animation:flicker 2.4s ease-in-out infinite}
.float-soft{animation:float-soft 3.2s ease-in-out infinite}
.screen-in{animation:screen-in .25s cubic-bezier(.2,.8,.2,1) both}
.sheet-up{animation:sheet-up .3s cubic-bezier(.2,.8,.2,1) both}
.fade-in{animation:fade-in .2s ease both}

/* Confetti */
.confetti-burst{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.confetti-burst i{position:absolute;top:30%;left:50%;width:8px;height:12px;border-radius:1px;animation:confetti-fall 2.4s cubic-bezier(.2,.6,.4,1) infinite}

/* Ring */
.ring-svg{transform:rotate(-90deg)}
.ring-svg .ring-bg{fill:none;stroke:rgba(255,255,255,.2);stroke-width:8}
.ring-svg .ring-fg{fill:none;stroke:#fff;stroke-width:8;stroke-linecap:round;stroke-dasharray:var(--ring-dash,270) 360;animation:ring-fill 1.2s .3s cubic-bezier(.2,.8,.2,1) backwards}

/* Sheet backdrop */
.sheet-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.4);backdrop-filter:blur(2px);z-index:40;animation:fade-in .2s ease}
.sheet{position:absolute;left:0;right:0;bottom:0;background:#fff;border-radius:24px 24px 0 0;z-index:41;box-shadow:0 -12px 24px -8px rgba(0,0,0,.2);max-height:80%;display:flex;flex-direction:column;overflow:hidden}
.sheet-handle{width:36px;height:4px;background:var(--n200);border-radius:99px;margin:8px auto 0;flex-shrink:0}

/* Stage info badge */
.stage-info{position:fixed;left:24px;bottom:24px;z-index:5;color:rgba(255,255,255,.6);font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;display:flex;flex-direction:column;gap:2px;pointer-events:none}
.stage-info b{color:#fff;font-size:13px;letter-spacing:0;text-transform:none;font-family:var(--font);font-weight:700;display:flex;align-items:center;gap:8px}
.stage-info b::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--p400);box-shadow:0 0 12px var(--p400);animation:pulse-soft 2s ease-in-out infinite}
