/* Team Hub — design system & screens (extracted from the UI) */
/* ============ TOKENS ============ */
:root{
  /* product palette (the phone screen commits to one light world) */
  --blue:#2563EB; --blue-d:#1D4ED8; --blue-50:#EFF4FF; --blue-100:#DBE6FF;
  --bg:#F7F8FA; --bg-2:#F1F3F8; --surface:#FFFFFF;
  --ink:#111827; --ink-2:#6B7280; --ink-3:#9CA3AF;
  --ok:#16A34A; --ok-bg:#ECFDF3;
  --warn:#F59E0B; --warn-bg:#FFF8EB;
  --danger:#DC2626; --danger-bg:#FEF2F2;
  --line:#E5E7EB; --line-2:#EEF0F4;

  --r-sm:10px; --r:14px; --r-lg:18px; --r-xl:24px;
  --sh-1:0 1px 2px rgba(17,24,39,.05);
  --sh-2:0 2px 8px rgba(17,24,39,.06), 0 1px 2px rgba(17,24,39,.04);
  --sh-3:0 8px 28px rgba(17,24,39,.10), 0 2px 6px rgba(17,24,39,.05);
  --sh-up:0 -1px 0 var(--line), 0 -8px 24px rgba(17,24,39,.04);

  --f-disp:"Assistant","Heebo",system-ui,"Segoe UI",sans-serif;
  --f-ui:"Heebo","Assistant",system-ui,"Segoe UI",sans-serif;

  /* desktop surround ג€” theme aware */
  --stage:#E9ECF1;
  --stage-glow:rgba(37,99,235,.10);
  --stage-ink:#6B7280;
  --bezel:#1B1F27;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --stage:#0C0E13; --stage-glow:rgba(37,99,235,.18); --stage-ink:#8A93A3; --bezel:#000;
  }
}
:root[data-theme="dark"]{
  --stage:#0C0E13; --stage-glow:rgba(37,99,235,.18); --stage-ink:#8A93A3; --bezel:#000;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{ margin:0; background:var(--bg); color:var(--ink); font-family:var(--f-ui); }
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
input,textarea,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:6px}

/* ============ WEB SHELL ============ */
#app{min-height:100dvh;display:flex;flex-direction:column}
.topbar{
  flex:0 0 auto;position:sticky;top:0;z-index:20;
  background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid var(--line-2);
  display:flex;align-items:center;gap:14px;padding:10px 20px;
}
.topbar[hidden]{display:none}
.topbar .brand{font-family:var(--f-disp);font-weight:800;font-size:19px;letter-spacing:-.02em;color:var(--ink);flex:0 0 auto}
.topbar .brand b{color:var(--blue)}
.topbar nav{display:flex;gap:4px;flex:1;justify-content:center;flex-wrap:wrap;min-width:0}
.navlink{
  display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;border-radius:11px;
  font-weight:600;font-size:14px;color:var(--ink-2);transition:background .15s,color .15s;position:relative;
}
.navlink:hover{background:var(--bg-2)}
.navlink:active{transform:scale(.97)}
.navlink.on{background:var(--blue-50);color:var(--blue-d)}
.navlink .dot{width:7px;height:7px;border-radius:50%;background:var(--danger);display:block}
.profilebtn{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:4px 10px 4px 5px;border-radius:999px;border:1px solid var(--line);background:var(--surface);transition:background .15s,box-shadow .15s}
.profilebtn:hover{box-shadow:var(--sh-1)}
.profilebtn .pn{font-weight:600;font-size:13.5px;color:var(--ink-2);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:640px){
  .topbar{padding:8px 12px;gap:8px}
  .topbar .brand{font-size:17px}
  .navlink{height:34px;padding:0 11px;font-size:13px}
  .navlink .lbl{display:none}
  .profilebtn .pn{display:none}
}

/* ============ PAGE / ROUTER ============ */
.viewport{position:relative;flex:1 1 auto;overflow:hidden}
.page{
  position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;scroll-behavior:smooth;
  display:flex;flex-direction:column;
}
.page::-webkit-scrollbar{width:0}
@keyframes pgFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes pgPush{from{opacity:.4;transform:translateX(-26%)}to{opacity:1;transform:none}}
@keyframes pgPop{from{opacity:.4;transform:translateX(26%)}to{opacity:1;transform:none}}
.a-fade{animation:pgFade .26s cubic-bezier(.22,.8,.3,1) both}
.a-push{animation:pgPush .3s cubic-bezier(.22,.8,.3,1) both}
.a-pop{animation:pgPop .3s cubic-bezier(.22,.8,.3,1) both}
@media (prefers-reduced-motion:reduce){
  .a-fade,.a-push,.a-pop{animation-duration:.01ms}
  .page{scroll-behavior:auto}
}

/* ============ HEADERS ============ */
.hdr{
  position:sticky;top:0;z-index:4;background:rgba(247,248,250,.86);
  backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);
  padding:14px 20px 12px;border-bottom:1px solid transparent;transition:border-color .2s;
}
.hdr.solid{background:rgba(255,255,255,.9)}
.hdr-line{border-bottom-color:var(--line-2)}
.hdr-row{display:flex;align-items:center;gap:12px;min-height:36px}
.hdr h1{font-family:var(--f-disp);font-size:26px;font-weight:800;margin:0;letter-spacing:-.02em}
.hdr .sub{color:var(--ink-2);font-size:13.5px;font-weight:500;margin-top:2px}
.iconbtn{
  width:36px;height:36px;border-radius:50%;display:grid;place-items:center;
  color:var(--ink);background:transparent;flex:0 0 auto;transition:background .16s,transform .12s;
}
.iconbtn:hover{background:var(--bg-2)}
.iconbtn:active{transform:scale(.9)}
.iconbtn.filled{background:var(--surface);box-shadow:var(--sh-1);border:1px solid var(--line)}
.navtitle{font-family:var(--f-disp);font-size:17px;font-weight:700}
.navtitle .s{display:block;font-family:var(--f-ui);font-size:12px;font-weight:500;color:var(--ok);margin-top:-1px}

.body{padding:16px 20px 40px;display:flex;flex-direction:column;gap:16px}
.hdr,.body{max-width:720px;margin-inline:auto;width:100%}
.spacer{flex:1 1 auto}

/* small inline action buttons on cards (edit / delete) */
.rowacts{display:flex;gap:4px;margin-inline-start:auto}
.actbtn{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;color:var(--ink-3);background:transparent;transition:background .15s,color .15s}
.actbtn:hover{background:var(--bg-2);color:var(--ink)}
.actbtn.danger:hover{background:var(--danger-bg);color:var(--danger)}

/* external-link button inside a task */
.linkbtn{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 16px;border-radius:12px;background:var(--blue-50);color:var(--blue-d);font-weight:700;font-size:14.5px;transition:background .15s}
.linkbtn:hover{background:var(--blue-100)}

/* targeting picker (task modal) */
.pickwrap{display:flex;flex-direction:column;gap:8px;max-height:230px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:8px;background:var(--bg)}
.pickgrp{font-size:11.5px;font-weight:800;color:var(--ink-3);letter-spacing:.02em;padding:4px 4px 0}
.pickrow{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;background:var(--surface);border:1px solid var(--line);text-align:start;transition:border-color .15s,background .15s}
.pickrow:hover{border-color:var(--ink-3)}
.pickrow.on{border-color:var(--blue);background:var(--blue-50)}
.pickrow .box{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--line);display:grid;place-items:center;flex:0 0 auto;color:#fff;transition:all .15s}
.pickrow.on .box{background:var(--blue);border-color:var(--blue)}
.pickrow .pl{font-size:14px;font-weight:600}
.pickrow .ps{font-size:11.5px;color:var(--ink-2);margin-inline-start:auto}

/* native select styled like .inp */
select.inp{appearance:none;-webkit-appearance:none;background-image:none}

/* profile page */
.prof-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:26px 20px}
.prof-hero .pname{font-family:var(--f-disp);font-size:23px;font-weight:800;margin-top:12px;letter-spacing:-.02em}
.prof-hero .pteam{color:var(--ink-2);font-size:14px;font-weight:500;margin-top:2px}
.prof-list{display:flex;flex-direction:column}
.prof-row{display:flex;align-items:center;gap:12px;width:100%;text-align:start;padding:15px 16px;transition:background .15s}
.prof-row+.prof-row{border-top:1px solid var(--line-2)}
.prof-row:hover{background:var(--bg-2)}
.prof-row .pi{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--blue-50);color:var(--blue-d);flex:0 0 auto}
.prof-row .pt{font-size:15px;font-weight:600}
.prof-row .pd{font-size:12.5px;color:var(--ink-2);margin-top:1px}
.prof-row.danger .pi{background:var(--danger-bg);color:var(--danger)}
.prof-row.danger .pt{color:var(--danger)}

/* ============ PRIMITIVES ============ */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-2)}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:50px;padding:0 20px;border-radius:var(--r);background:var(--blue);color:#fff;
  font-family:var(--f-disp);font-weight:700;font-size:16px;
  box-shadow:0 4px 14px rgba(37,99,235,.28);transition:transform .12s,box-shadow .18s,background .18s;
}
.btn:hover{background:var(--blue-d)}
.btn:active{transform:scale(.975);box-shadow:0 2px 8px rgba(37,99,235,.24)}
.btn.block{width:100%}
.btn.ghost{background:var(--surface);color:var(--ink);border:1px solid var(--line);box-shadow:var(--sh-1)}
.btn.ghost:hover{background:var(--bg-2)}
.btn.soft{background:var(--blue-50);color:var(--blue-d);box-shadow:none}
.btn.soft:hover{background:var(--blue-100)}
.btn.danger{background:var(--danger);box-shadow:0 4px 14px rgba(220,38,38,.26)}
.btn.danger:hover{background:#B91C1C}
.btn.sm{height:38px;font-size:14px;padding:0 14px;border-radius:11px}
.btn[disabled]{opacity:.42;pointer-events:none;box-shadow:none}

.badge{
  display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:8px;
  font-size:11.5px;font-weight:700;letter-spacing:-.01em;
}
.b-red{background:var(--danger-bg);color:var(--danger)}
.b-amber{background:var(--warn-bg);color:#B45309}
.b-green{background:var(--ok-bg);color:#15803D}
.b-blue{background:var(--blue-50);color:var(--blue-d)}
.b-gray{background:var(--bg-2);color:var(--ink-2)}
.badge i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block}

.sect{font-family:var(--f-disp);font-size:13px;font-weight:700;color:var(--ink-2);letter-spacing:.01em;margin:2px 0 -4px}
.sect.big{font-size:19px;color:var(--ink);font-weight:800;letter-spacing:-.02em}

.av{
  width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;
  font-family:var(--f-disp);font-weight:700;font-size:15px;
}
.av.lg{width:44px;height:44px;font-size:17px}
.av.sm{width:28px;height:28px;font-size:12.5px}

.tabs{display:flex;gap:6px;background:var(--bg-2);padding:4px;border-radius:12px}
.tabs button{
  flex:1;height:34px;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--ink-2);
  transition:background .2s,color .2s,box-shadow .2s;
}
.tabs button.on{background:var(--surface);color:var(--ink);box-shadow:var(--sh-1);font-weight:700}

.field{display:flex;flex-direction:column;gap:7px}
.field label{font-size:12.5px;font-weight:700;color:var(--ink-2)}
.inp{
  width:100%;height:46px;border-radius:12px;border:1px solid var(--line);background:var(--surface);
  padding:0 13px;font-size:15px;font-weight:500;transition:border-color .18s,box-shadow .18s;
}
textarea.inp{height:96px;padding:12px 13px;resize:none;line-height:1.55}
.inp::placeholder{color:var(--ink-3);font-weight:400}
.inp:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-50)}

.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{
  height:36px;padding:0 14px;border-radius:11px;border:1px solid var(--line);background:var(--surface);
  font-size:13.5px;font-weight:600;color:var(--ink-2);display:inline-flex;align-items:center;gap:6px;
  transition:all .16s;
}
.chip:hover{border-color:var(--ink-3)}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.chip.on.red{background:var(--danger);border-color:var(--danger)}
.chip.on.amber{background:var(--warn);border-color:var(--warn)}

.prog{height:8px;border-radius:99px;background:var(--line-2);overflow:hidden}
.prog i{display:block;height:100%;border-radius:99px;background:var(--blue);transition:width .7s cubic-bezier(.22,.8,.3,1)}
.prog.green i{background:var(--ok)}

.mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}

/* ============ LOGIN ============ */
.login{
  flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;
  padding:0 34px 40px;text-align:center;gap:0;
  background:
    radial-gradient(120% 60% at 50% 0%, #EEF4FF 0%, transparent 62%),
    linear-gradient(180deg,#fff 0%, var(--bg) 100%);
}
.logo{
  width:76px;height:76px;border-radius:24px;display:grid;place-items:center;color:#fff;
  background:linear-gradient(150deg,#3B82F6,#1D4ED8);
  box-shadow:0 14px 34px rgba(37,99,235,.35), 0 0 0 1px rgba(255,255,255,.5) inset;
  animation:pop .5s cubic-bezier(.3,1.5,.5,1) both;
}
@keyframes pop{from{opacity:0;transform:scale(.7) translateY(10px)}to{opacity:1;transform:none}}
.login h1{
  font-family:var(--f-disp);font-size:40px;font-weight:800;letter-spacing:-.035em;margin:22px 0 0;
  animation:pgFade .5s .06s cubic-bezier(.22,.8,.3,1) both;
}
.login p{
  color:var(--ink-2);font-size:15.5px;font-weight:500;margin:9px 0 0;max-width:24ch;line-height:1.6;
  animation:pgFade .5s .12s cubic-bezier(.22,.8,.3,1) both;
}
.login .btn{margin-top:38px;width:100%;height:54px;animation:pgFade .5s .2s cubic-bezier(.22,.8,.3,1) both}
.login .fine{margin-top:16px;font-size:12px;color:var(--ink-3);font-weight:500;animation:pgFade .5s .26s both}

/* role sheet */
.sheet-wrap{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;justify-content:flex-end}
.scrim{position:absolute;inset:0;background:rgba(17,24,39,.42);backdrop-filter:blur(2px);animation:fadein .22s both}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.sheet{
  position:relative;background:var(--surface);border-radius:26px 26px 0 0;padding:10px 20px 26px;
  box-shadow:0 -12px 40px rgba(17,24,39,.18);animation:sheetUp .34s cubic-bezier(.22,.9,.3,1) both;
  max-height:86%;overflow-y:auto;
}
@keyframes sheetUp{from{transform:translateY(102%)}to{transform:none}}
.grab{width:38px;height:4.5px;border-radius:3px;background:var(--line);margin:0 auto 16px}
.sheet h2{font-family:var(--f-disp);font-size:21px;font-weight:800;margin:0 0 4px;letter-spacing:-.02em}
.sheet .sh-sub{color:var(--ink-2);font-size:13.5px;margin:0 0 18px;font-weight:500}
@media (prefers-reduced-motion:reduce){.sheet,.scrim,.logo,.login h1,.login p,.login .btn,.login .fine{animation-duration:.01ms}}

.rolecard{
  width:100%;display:flex;align-items:center;gap:14px;padding:15px;border-radius:var(--r-lg);
  border:1.5px solid var(--line);background:var(--surface);text-align:start;transition:all .18s;
}
.rolecard:hover{border-color:var(--blue);background:var(--blue-50);transform:translateY(-1px)}
.rolecard:active{transform:scale(.985)}
.rolecard .t{font-family:var(--f-disp);font-weight:800;font-size:16px}
.rolecard .d{font-size:12.5px;color:var(--ink-2);margin-top:1px;font-weight:500}
.rolecard .ico{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;flex:0 0 auto}

/* ============ TIMELINE ============ */
.weekstrip{display:flex;gap:6px;justify-content:space-between}
.day{
  flex:1;height:60px;border-radius:13px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:3px;background:var(--surface);border:1px solid var(--line);
  transition:all .18s;
}
.day .dn{font-size:10.5px;font-weight:600;color:var(--ink-3)}
.day .dd{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
.day:hover{border-color:var(--ink-3)}
.day.on{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:var(--sh-2)}
.day.on .dn{color:rgba(255,255,255,.66)}
.day.now .dd{color:var(--blue)}
.day.on.now .dd{color:#fff}

.tl{display:flex;flex-direction:column}
.tl-row{display:grid;grid-template-columns:46px 18px 1fr;gap:0;position:relative}
.tl-time{
  font-size:12.5px;font-weight:700;color:var(--ink-2);padding-top:16px;text-align:start;
  font-variant-numeric:tabular-nums;
}
.tl-rail{position:relative;display:flex;justify-content:center}
.tl-rail::before{content:"";position:absolute;top:0;bottom:0;width:2px;background:var(--line)}
.tl-row:first-child .tl-rail::before{top:22px}
.tl-row:last-child .tl-rail::before{bottom:calc(100% - 22px)}
.tl-dot{
  position:relative;margin-top:16px;width:11px;height:11px;border-radius:50%;
  background:var(--surface);border:2.5px solid var(--line-2);z-index:1;
}
.tl-row.done .tl-dot{background:var(--line);border-color:var(--line)}
.tl-row.live .tl-dot{background:var(--blue);border-color:#fff;box-shadow:0 0 0 3px var(--blue-100)}
.tl-card{
  margin:6px 0 12px;padding:14px 15px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh-2);text-align:start;width:100%;
  transition:transform .16s,box-shadow .2s,border-color .2s;
}
.tl-card:hover{box-shadow:var(--sh-3);transform:translateY(-1px)}
.tl-card:active{transform:scale(.99)}
.tl-row.done .tl-card{opacity:.62;box-shadow:none}
.tl-row.live .tl-card{border-color:var(--blue-100);box-shadow:0 4px 18px rgba(37,99,235,.12)}
.tl-head{display:flex;align-items:center;gap:9px}
.evico{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto}
.tl-card .t{font-family:var(--f-disp);font-size:15.5px;font-weight:700;letter-spacing:-.01em}
.tl-card .m{display:flex;align-items:center;gap:5px;color:var(--ink-2);font-size:12.5px;margin-top:2px;font-weight:500}
.tl-more{display:flex;align-items:center;gap:4px;color:var(--blue);font-size:12.5px;font-weight:700;margin-top:10px;padding-top:10px;border-top:1px solid var(--line-2)}
.livepill{
  margin-inline-start:auto;font-size:10.5px;font-weight:800;color:var(--blue);background:var(--blue-50);
  padding:3px 8px;border-radius:7px;display:flex;align-items:center;gap:5px;
}
.livepill i{width:5px;height:5px;border-radius:50%;background:var(--blue);animation:pulse 1.8s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}

/* ============ TASK CARDS ============ */
.task{
  position:relative;display:block;width:100%;text-align:start;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-2);
  padding:15px 16px 15px 15px;overflow:hidden;transition:transform .16s,box-shadow .2s;
}
.task::before{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:3.5px;background:var(--line)}
.task.p1::before{background:var(--danger)}
.task.p2::before{background:var(--warn)}
.task.pdone::before{background:var(--ok)}
.task:hover{box-shadow:var(--sh-3);transform:translateY(-1px)}
.task:active{transform:scale(.99)}
.task.is-done{opacity:.66}
.task .tt{font-family:var(--f-disp);font-size:16.5px;font-weight:700;margin-top:9px;letter-spacing:-.015em}
.task .td{color:var(--ink-2);font-size:13px;margin-top:3px;line-height:1.5;font-weight:500}
.task-foot{display:flex;align-items:center;gap:10px;margin-top:13px;padding-top:13px;border-top:1px solid var(--line-2)}
.cdown{
  display:inline-flex;align-items:center;gap:6px;background:var(--danger-bg);color:var(--danger);
  height:32px;padding:0 11px;border-radius:10px;font-weight:800;font-size:14px;
  font-variant-numeric:tabular-nums;letter-spacing:.01em;
}
.cdown.amber{background:var(--warn-bg);color:#B45309}
.statustxt{font-size:12.5px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;gap:5px}
.statustxt.ok{color:var(--ok)}

/* task detail */
.hero{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--sh-2);
  padding:22px 20px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;
}
.hero h2{font-family:var(--f-disp);font-size:24px;font-weight:800;margin:12px 0 0;letter-spacing:-.025em;line-height:1.25}
.hero p{color:var(--ink-2);font-size:14px;margin:8px 0 0;line-height:1.6;font-weight:500;max-width:30ch}
.bigcount{
  font-family:var(--f-ui);font-size:44px;font-weight:800;letter-spacing:-.02em;color:var(--danger);
  font-variant-numeric:tabular-nums;margin-top:20px;line-height:1;
}
.bigcount.amber{color:#B45309}
.countlbl{font-size:12px;font-weight:700;color:var(--ink-3);letter-spacing:.06em;margin-top:8px}
.metarow{display:flex;justify-content:space-between;align-items:center;padding:13px 16px}
.metarow+.metarow{border-top:1px solid var(--line-2)}
.metarow .k{font-size:13px;color:var(--ink-2);font-weight:600}
.metarow .v{font-size:13.5px;font-weight:700}

/* sticky CTA */
.cta-bar{
  position:sticky;bottom:0;margin-top:auto;padding:14px 20px calc(14px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,rgba(247,248,250,0),var(--bg) 34%);
}

/* ============ QUESTIONNAIRE ============ */
.qcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-2);padding:18px}
.qnum{font-size:11.5px;font-weight:800;color:var(--blue);letter-spacing:.08em}
.qtxt{font-family:var(--f-disp);font-size:17px;font-weight:700;margin-top:6px;line-height:1.4;letter-spacing:-.015em}
.opts{display:flex;gap:10px;margin-top:15px}
.opt{
  flex:1;height:50px;border-radius:13px;border:1.5px solid var(--line);background:var(--surface);
  font-family:var(--f-disp);font-weight:700;font-size:15.5px;color:var(--ink-2);
  display:flex;align-items:center;justify-content:center;gap:8px;transition:all .18s;
}
.opt:hover{border-color:var(--ink-3)}
.opt.on{border-color:var(--blue);background:var(--blue-50);color:var(--blue-d);box-shadow:0 0 0 3px var(--blue-50)}
.opt .tick{width:19px;height:19px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;transition:all .18s}
.opt.on .tick{background:var(--blue);border-color:var(--blue);color:#fff}
.opt.on .tick svg{animation:tickIn .28s cubic-bezier(.3,1.5,.5,1) both}
@keyframes tickIn{from{transform:scale(0) rotate(-25deg)}to{transform:none}}

/* success */
.success{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 34px 60px;gap:0}
.sring{
  width:96px;height:96px;border-radius:50%;background:var(--ok-bg);display:grid;place-items:center;color:var(--ok);
  animation:ringIn .5s cubic-bezier(.3,1.5,.5,1) both;
}
@keyframes ringIn{from{transform:scale(.4);opacity:0}to{transform:none;opacity:1}}
.sring svg path{stroke-dasharray:30;stroke-dashoffset:30;animation:draw .45s .18s cubic-bezier(.5,0,.3,1) forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.success h2{font-family:var(--f-disp);font-size:25px;font-weight:800;margin:24px 0 0;letter-spacing:-.025em;animation:pgFade .4s .3s both}
.success p{color:var(--ink-2);font-size:14.5px;margin:8px 0 0;font-weight:500;animation:pgFade .4s .38s both}
.success .btn{margin-top:34px;width:100%;animation:pgFade .4s .46s both}
@media (prefers-reduced-motion:reduce){.sring,.sring svg path,.success h2,.success p,.success .btn{animation-duration:.01ms}}

/* ============ MESSAGES ============ */
.search{position:relative}
.search svg{position:absolute;inset-inline-start:12px;top:50%;transform:translateY(-50%);color:var(--ink-3)}
.search .inp{padding-inline-start:38px;height:42px;border-radius:12px;background:var(--bg-2);border-color:transparent}
.search .inp:focus{background:var(--surface);border-color:var(--blue)}

.convo{
  display:flex;align-items:center;gap:12px;width:100%;text-align:start;padding:11px 12px;
  border-radius:var(--r);transition:background .16s;background:transparent;
}
.convo:hover{background:var(--surface)}
.convo:active{background:var(--bg-2)}
.convo .mid{flex:1;min-width:0}
.convo .n{font-family:var(--f-disp);font-size:15px;font-weight:700;display:flex;align-items:center;gap:5px}
.convo .p{color:var(--ink-2);font-size:13px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}
.convo.unread .p{color:var(--ink);font-weight:600}
.convo .end{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:0 0 auto}
.convo .tm{font-size:11.5px;color:var(--ink-3);font-weight:500}
.pill-n{min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:var(--blue);color:#fff;font-size:11.5px;font-weight:800;display:grid;place-items:center}
.divider{height:1px;background:var(--line-2);margin:0 12px}

/* chat */
.chatbg{
  flex:1;padding:16px 16px 8px;display:flex;flex-direction:column;gap:8px;
  background:
    radial-gradient(circle at 12% 20%, rgba(37,99,235,.045) 0 1.5px, transparent 2px) 0 0/26px 26px,
    var(--bg);
}
.daychip{align-self:center;background:rgba(17,24,39,.06);color:var(--ink-2);font-size:11.5px;font-weight:700;padding:4px 11px;border-radius:99px;margin-bottom:4px}
.msg{max-width:78%;padding:9px 13px 8px;border-radius:16px;font-size:14.5px;line-height:1.5;position:relative;box-shadow:var(--sh-1);animation:msgIn .26s cubic-bezier(.22,.9,.3,1) both}
@keyframes msgIn{from{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}
.msg.them{align-self:flex-start;background:var(--surface);border-bottom-left-radius:5px;border:1px solid var(--line)}
.msg.me{align-self:flex-end;background:var(--blue);color:#fff;border-bottom-right-radius:5px}
.msg .tm{font-size:10.5px;opacity:.55;margin-top:3px;display:block;text-align:end;font-weight:500}
.msg.me .tm{opacity:.78}
.msg .who{font-size:11.5px;font-weight:800;color:var(--blue-d);margin-bottom:2px}
.composer{
  flex:0 0 auto;display:flex;align-items:flex-end;gap:9px;padding:10px 14px 12px;
  background:rgba(255,255,255,.95);backdrop-filter:blur(12px);border-top:1px solid var(--line-2);
}
.composer .inp{height:44px;border-radius:22px;background:var(--bg-2);border-color:transparent;padding:0 16px}
.composer .inp:focus{background:var(--surface)}
.sendbtn{width:44px;height:44px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;flex:0 0 auto;box-shadow:0 3px 12px rgba(37,99,235,.32);transition:transform .14s}
.sendbtn:active{transform:scale(.9)}

/* ============ ATTENDANCE ============ */
.attcard{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--sh-2);
  padding:24px 20px;display:flex;flex-direction:column;align-items:center;text-align:center;
}
.attdate{font-family:var(--f-disp);font-size:15px;font-weight:700;color:var(--ink-2)}
.attbig{font-family:var(--f-disp);font-size:52px;font-weight:800;letter-spacing:-.04em;line-height:1.05;margin-top:2px;font-variant-numeric:tabular-nums}
.attstate{margin-top:14px;font-size:14px;font-weight:600;color:var(--ink-2)}
.attcard .btn{margin-top:20px;width:100%;height:54px;font-size:17px}
.checkmark{
  width:74px;height:74px;border-radius:50%;background:var(--ok-bg);color:var(--ok);display:grid;place-items:center;
  margin-top:6px;animation:ringIn .48s cubic-bezier(.3,1.5,.5,1) both;
}
.checkmark svg path{stroke-dasharray:30;stroke-dashoffset:30;animation:draw .4s .16s ease-out forwards}

.hist{display:flex;flex-direction:column}
.histrow{display:flex;align-items:center;gap:12px;padding:13px 16px}
.histrow+.histrow{border-top:1px solid var(--line-2)}
.histrow .d{font-weight:700;font-size:14px;font-variant-numeric:tabular-nums;width:52px}
.histrow .w{color:var(--ink-2);font-size:13px;flex:1;font-weight:500}
.mini{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto}
.mini.ok{background:var(--ok-bg);color:var(--ok)}
.mini.no{background:var(--bg-2);color:var(--ink-3)}

/* ============ LEADER ============ */
.statscroll{display:flex;gap:12px;overflow-x:auto;padding:2px 20px 6px;margin:0 -20px;scroll-snap-type:x mandatory}
.statscroll::-webkit-scrollbar{height:0}
.stat{
  flex:0 0 152px;scroll-snap-align:start;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh-2);padding:15px;text-align:start;transition:transform .16s,box-shadow .2s;
}
.stat:hover{transform:translateY(-2px);box-shadow:var(--sh-3)}
.stat .lbl{font-size:12px;font-weight:700;color:var(--ink-2);display:flex;align-items:center;gap:6px}
.stat .num{font-family:var(--f-disp);font-size:32px;font-weight:800;letter-spacing:-.035em;margin-top:8px;line-height:1;font-variant-numeric:tabular-nums}
.stat .num small{font-size:17px;color:var(--ink-3);font-weight:700}
.stat .cap{font-size:12px;color:var(--ink-2);margin-top:5px;font-weight:500}
.stat.alert .num{color:var(--warn)}
.stat .prog{margin-top:11px}

.qa{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.qabtn{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-2);
  padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:8px;transition:all .16s;
}
.qabtn:hover{transform:translateY(-2px);box-shadow:var(--sh-3);border-color:var(--blue-100)}
.qabtn:active{transform:scale(.97)}
.qabtn .qi{width:38px;height:38px;border-radius:12px;background:var(--blue-50);color:var(--blue-d);display:grid;place-items:center}
.qabtn span{font-size:12.5px;font-weight:700}

.atask{
  display:block;width:100%;text-align:start;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh-2);padding:16px;transition:transform .16s,box-shadow .2s;
}
.atask:hover{transform:translateY(-1px);box-shadow:var(--sh-3)}
.atask .tt{font-family:var(--f-disp);font-size:16px;font-weight:700;letter-spacing:-.015em}
.progrow{display:flex;align-items:center;gap:10px;margin-top:12px}
.progrow .prog{flex:1}
.progrow .n{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums;flex:0 0 auto}

.person{display:flex;align-items:center;gap:11px;padding:11px 16px}
.person+.person{border-top:1px solid var(--line-2)}
.person .nm{flex:1;font-size:14.5px;font-weight:600}
.grouphead{display:flex;align-items:center;gap:8px;padding:11px 16px;background:var(--bg-2);font-size:12.5px;font-weight:800;color:var(--ink-2)}
.grouphead .c{margin-inline-start:auto;font-weight:800}

.splitstat{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ss{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-2);padding:16px}
.ss .h{display:flex;align-items:center;justify-content:space-between}
.ss .h b{font-family:var(--f-disp);font-size:15px;font-weight:800}
.ss .big{font-family:var(--f-disp);font-size:34px;font-weight:800;letter-spacing:-.035em;line-height:1;margin-top:8px}
.ss.yes .big{color:var(--ok)}
.ss.no .big{color:var(--ink-3)}
.ss .prog{margin-top:10px}
.ss .prog i{background:var(--ok)}
.ss.no .prog i{background:var(--ink-3)}
.namechips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.nchip{background:var(--bg-2);border-radius:8px;padding:4px 9px;font-size:12px;font-weight:600;color:var(--ink-2)}

/* ============ SKELETON ============ */
@keyframes shimmer{to{background-position-x:-200%}}
.sk{
  background:linear-gradient(90deg,var(--line-2) 8%,#F7F8FA 18%,var(--line-2) 33%);
  background-size:200% 100%;animation:shimmer 1.25s linear infinite;border-radius:8px;
}
@media (prefers-reduced-motion:reduce){.sk{animation:none}}
.skcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;display:flex;flex-direction:column;gap:10px}

/* ============ EMPTY ============ */
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;padding:48px 30px;gap:0}
.empty .e{font-size:40px;line-height:1}
.empty h3{font-family:var(--f-disp);font-size:19px;font-weight:800;margin:14px 0 0;letter-spacing:-.02em}
.empty p{color:var(--ink-2);font-size:13.5px;margin:6px 0 0;font-weight:500;max-width:26ch;line-height:1.55}

/* ============ MODAL / TOAST ============ */
.modal-wrap{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;justify-content:flex-end}
.alert-wrap{position:absolute;inset:0;z-index:30;display:grid;place-items:center;padding:28px}
.alert{
  position:relative;background:var(--surface);border-radius:22px;padding:24px 20px 18px;width:100%;
  text-align:center;box-shadow:var(--sh-3);animation:alertIn .26s cubic-bezier(.3,1.3,.5,1) both;
}
@keyframes alertIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}
.alert .ai{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;margin:0 auto 14px}
.alert h3{font-family:var(--f-disp);font-size:19px;font-weight:800;margin:0;letter-spacing:-.02em}
.alert p{color:var(--ink-2);font-size:13.5px;margin:7px 0 0;line-height:1.55;font-weight:500}
.alert .acts{display:flex;gap:9px;margin-top:20px}
.alert .acts .btn{flex:1}

.toast{
  position:absolute;left:16px;right:16px;bottom:16px;z-index:40;
  background:#111827;color:#fff;border-radius:14px;padding:13px 15px;
  display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;
  box-shadow:0 10px 30px rgba(0,0,0,.28);animation:toastIn .3s cubic-bezier(.22,.9,.3,1) both;
}
.toast.out{animation:toastOut .24s ease-in forwards}
@keyframes toastIn{from{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(14px) scale(.97)}}
.toast .ti{width:22px;height:22px;border-radius:50%;background:var(--ok);display:grid;place-items:center;flex:0 0 auto}

.radios{display:flex;flex-direction:column;gap:9px}
.radio{
  display:flex;align-items:center;gap:11px;padding:13px 14px;border-radius:13px;border:1.5px solid var(--line);
  background:var(--surface);text-align:start;width:100%;transition:all .16s;
}
.radio:hover{border-color:var(--ink-3)}
.radio.on{border-color:var(--blue);background:var(--blue-50)}
.radio .rr{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;flex:0 0 auto;transition:all .16s}
.radio.on .rr{border-color:var(--blue);border-width:6px}
.radio .rt{font-size:14.5px;font-weight:600}
.radio .rd{font-size:12px;color:var(--ink-2);margin-top:1px;font-weight:500}

.roleswitch{
  display:flex;align-items:center;gap:9px;width:100%;padding:13px 15px;border-radius:var(--r);
  background:var(--bg-2);font-size:13.5px;font-weight:600;color:var(--ink-2);transition:background .16s;
}
.roleswitch:hover{background:var(--line-2)}
