/* Longevity Funnel — Admin design system */
:root{
  --ink:#12313A; --ink-soft:#4A6670; --ink-faint:#8AA0A6;
  --line:#D5DEDD; --paper:#F2F5F4; --card:#fff;
  --brand:#12313A; --accent:#1F6F63;
  --err:#A32D1E; --ok:#1F6F63; --ok-bg:#DCEBE2; --err-bg:#F6E3DF;
  --radius:14px; --radius-s:9px;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  /* motion tokens */
  --m-fast:140ms; --m-med:220ms; --m-ease:cubic-bezier(0.34,1.3,0.64,1);
}
*{box-sizing:border-box} html,body{margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;}

/* ---------- Shell ---------- */
.shell{display:flex;min-height:100vh;}
.sidebar{width:230px;flex:0 0 230px;background:var(--ink);color:#E8EFEE;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;}
.brand{padding:22px 20px 18px;border-bottom:1px solid rgba(255,255,255,.12);}
.brand b{font-size:16px;letter-spacing:.01em;display:block;}
.brand span{font-size:12px;color:rgba(255,255,255,.55);}
.nav{padding:12px 10px;display:flex;flex-direction:column;gap:2px;flex:1;}
.nav a{display:flex;align-items:center;gap:10px;color:rgba(255,255,255,.72);text-decoration:none;font-size:14.5px;font-weight:600;padding:10px 12px;border-radius:8px;transition:background var(--m-fast) ease,color var(--m-fast) ease;}
.nav a:hover{background:rgba(255,255,255,.08);color:#fff;}
.nav a.active{background:rgba(255,255,255,.14);color:#fff;}
.nav .icon{width:17px;height:17px;flex:0 0 17px;opacity:.85;}
.sidebar-foot{padding:14px 12px;border-top:1px solid rgba(255,255,255,.12);font-size:13px;color:rgba(255,255,255,.55);}
.sidebar-foot form{margin:0;}
.main{flex:1;min-width:0;padding:28px 32px 64px;}
.page-head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:20px;flex-wrap:wrap;}
.page-head h1{font-size:22px;margin:0;}
.page-head .sub{color:var(--ink-soft);font-size:14px;margin-top:2px;}
@media(max-width:760px){
  .shell{flex-direction:column}
  .sidebar{width:100%;flex:none;height:auto;position:static;flex-direction:row;align-items:center;}
  .brand{padding:12px 16px;border-bottom:none;}
  .brand span{display:none}
  .nav{flex-direction:row;padding:8px;}
  .sidebar-foot{border-top:none;padding:8px 12px;margin-left:auto;}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;animation:none!important;}
}

/* ---------- Cards / sections ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;margin-bottom:16px;}
.card h2{font-size:16.5px;margin:0 0 14px;}
.muted{color:var(--ink-soft);font-size:14px;}
code{background:#E4EAE9;border-radius:5px;padding:1px 6px;font-size:13px;font-family:var(--mono);}
.url-cell{display:inline-flex;align-items:center;gap:3px;}
.url-cell a{text-decoration:none;color:var(--ink);}
.url-cell a:hover code{background:#D5DEDD;color:var(--ink);}
.url-cell a:hover code{background:#D5DEDD;}
.copy-btn{border:none;background:transparent;cursor:pointer;color:var(--ink-faint);padding:3px;border-radius:6px;display:inline-flex;transition:background var(--m-fast) ease,color var(--m-fast) ease;}
.copy-btn svg{width:14px;height:14px;}
.copy-btn:hover{color:var(--ink);background:#E4EAE9;}
.copy-btn.copied{color:var(--ok);}

/* ---------- Status dots ---------- */
.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:0 0 10px;}
.status-dot.on{background:#2FA47A;box-shadow:0 0 6px rgba(47,164,122,.55);}
.status-dot.off{background:#D6543F;box-shadow:0 0 6px rgba(214,84,63,.45);}
.status-wrap{display:inline-flex;align-items:center;gap:8px;}
.actions .btn .status-dot{margin-right:2px;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 20px;}
@media(max-width:640px){.grid2{grid-template-columns:1fr;}}

/* ---------- Forms ---------- */
.field{margin-bottom:14px;}
.field label,.check label b{display:block;font-size:13.5px;font-weight:600;margin-bottom:5px;}
.field input[type=text],.field input[type=email],.field input[type=password],.field input[type=url],.field input[type=number],.field textarea,.field select{
  width:100%;font-size:15px;padding:10px 12px;border:1.5px solid var(--line);border-radius:var(--radius-s);font-family:var(--sans);background:#fff;color:var(--ink);
  transition:border-color var(--m-fast) ease,box-shadow var(--m-fast) ease;}
.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px rgba(18,49,58,.12);}
.field textarea{resize:vertical;}
.field small,.hint{display:block;color:var(--ink-soft);font-size:12.5px;margin-top:4px;}
.color-row{display:flex;align-items:center;gap:12px;}
.field input[type=color]{width:64px;height:42px;padding:3px;border:1.5px solid var(--line);border-radius:var(--radius-s);background:#fff;cursor:pointer;}
.color-hex{font-size:13px;color:var(--ink-soft);font-family:var(--mono);}
.check{display:flex;gap:10px;align-items:flex-start;margin:12px 0;}
.check input{width:19px;height:19px;accent-color:var(--ink);flex:0 0 auto;margin-top:2px;}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:600;padding:9px 16px;border-radius:var(--radius-s);border:1.5px solid var(--brand);background:var(--brand);color:#fff;text-decoration:none;cursor:pointer;font-family:inherit;line-height:1.3;
  transition:transform var(--m-fast) var(--m-ease),box-shadow var(--m-fast) ease,background var(--m-fast) ease;}
.btn:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(18,49,58,.18);}
.btn:active{transform:translateY(0);box-shadow:none;}
.btn-secondary{background:transparent;color:var(--ink);border-color:var(--line);}
.btn-secondary:hover{border-color:var(--ink-soft);box-shadow:0 2px 8px rgba(18,49,58,.10);}
.btn-danger{background:transparent;color:var(--err);border-color:var(--err);}
.btn-danger:hover{box-shadow:0 2px 8px rgba(163,45,30,.18);}
.btn-s{font-size:13px;padding:6px 12px;}
.row-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap;}
.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.actions form{margin:0;}

/* ---------- Alerts ---------- */
.alert-success{background:var(--ok-bg);border:1.5px solid var(--ok);border-radius:10px;padding:11px 15px;margin-bottom:16px;color:var(--ok);font-weight:600;font-size:14px;}
.alert-error{background:var(--err-bg);border:1.5px solid var(--err);border-radius:10px;padding:11px 15px;margin-bottom:16px;color:var(--err);font-weight:600;font-size:14px;}

/* ---------- Pills / badges ---------- */
.pill{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.06em;padding:2.5px 9px;border-radius:99px;background:#E4EAE9;color:var(--ink-soft);text-transform:uppercase;}
.pill.on{background:var(--ok-bg);color:var(--ok);}
.pill.warn{background:#F7ECD9;color:#8A4B08;}

/* ---------- Data tables ---------- */
.table-tools{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap;}
.search{position:relative;flex:1;max-width:320px;}
.search input{width:100%;font-size:14px;padding:9px 12px 9px 34px;border:1.5px solid var(--line);border-radius:var(--radius-s);font-family:var(--sans);background:#fff;color:var(--ink);transition:border-color var(--m-fast) ease,box-shadow var(--m-fast) ease;}
.search input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px rgba(18,49,58,.12);}
.search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--ink-faint);pointer-events:none;}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff;}
table.data{width:100%;border-collapse:collapse;font-size:14px;}
table.data th{text-align:left;font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);padding:11px 14px;border-bottom:1.5px solid var(--line);background:#F7FAF9;white-space:nowrap;}
table.data td{padding:11px 14px;border-bottom:1px solid #EAF0EF;vertical-align:middle;}
table.data tbody tr{transition:background var(--m-fast) ease;}
table.data tbody tr:hover{background:#F4F8F7;}
table.data tbody tr:last-child td{border-bottom:none;}
table.data .empty{color:var(--ink-soft);padding:22px 14px;text-align:center;}
.table-count{font-size:13px;color:var(--ink-faint);}

/* ---------- Stats ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:16px;}
.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;}
.stat-card b{font-size:24px;display:block;line-height:1.2;}
.stat-card span{font-size:12.5px;color:var(--ink-soft);}

/* ---------- Tabs ---------- */
.tabs{display:flex;gap:4px;border-bottom:2px solid var(--line);margin-bottom:20px;flex-wrap:wrap;}
.tabs button{font-family:var(--sans);font-size:14px;font-weight:600;padding:10px 15px;border:none;background:transparent;color:var(--ink-soft);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:color var(--m-fast) ease;}
.tabs button:hover{color:var(--ink);}
.tabs button.active{color:var(--ink);border-bottom-color:var(--ink);}
.tabpane.hidden{display:none;}
.tabpane.enter{animation:paneIn var(--m-med) var(--m-ease) both;}
@keyframes paneIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}

/* ---------- Guide ---------- */
.guide{background:#F4F8F7;border:1.5px solid var(--line);border-radius:var(--radius);padding:15px 17px;font-size:13.5px;color:var(--ink-soft);}
.guide ol{margin:8px 0 0;padding-left:20px;}
.guide li{margin-bottom:4px;}
.question-block{border-top:1.5px dashed var(--line);margin-top:18px;padding-top:14px;}

/* ---------- Stats chart ---------- */
.chart-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;}
.chart-card h2{margin:0;font-size:17px;}
.chart-range{display:flex;gap:3px;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:3px;}
.chart-range button{font-family:var(--sans);font-size:12.5px;font-weight:600;border:none;background:transparent;color:var(--ink-soft);padding:5px 12px;border-radius:999px;cursor:pointer;transition:background var(--m-fast) var(--m-ease),color var(--m-fast) var(--m-ease);}
.chart-range button:hover{color:var(--ink);}
.chart-range button.active{background:var(--ink);color:#fff;}
.chart-legend{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 6px;}
.chart-legend .chip{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:12.5px;font-weight:600;border:1px solid var(--line);background:var(--card);color:var(--ink-soft);padding:4px 12px;border-radius:999px;cursor:pointer;transition:opacity var(--m-fast) var(--m-ease),border-color var(--m-fast) ease;}
.chart-legend .chip:hover{border-color:var(--ink-faint);}
.chart-legend .chip:not(.on){opacity:.35;}
.chart-legend .chip i{width:9px;height:9px;border-radius:50%;display:inline-block;flex:0 0 auto;}
.chart-wrap{position:relative;width:100%;height:280px;}
.chart-wrap svg{display:block;}
.chart-wrap text{font-family:var(--sans);font-size:11px;fill:var(--ink-faint);}
.chart-tip{position:absolute;pointer-events:none;background:var(--ink);color:#E8EFEE;border-radius:9px;padding:8px 12px;font-size:12.5px;line-height:1.6;box-shadow:0 6px 18px rgba(18,49,58,.28);opacity:0;transition:opacity var(--m-fast) ease;z-index:5;white-space:nowrap;}
.chart-tip b{display:block;margin-bottom:2px;}
.chart-tip .row{display:flex;align-items:center;gap:7px;}
.chart-tip .row i{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 auto;}
.chart-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--ink-faint);font-size:13.5px;}
@media (prefers-reduced-motion: reduce){
  .chart-wrap svg *{transition:none !important;}
}

/* ---------- Copy line (guide) ---------- */
.copy-line{display:inline-flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin-top:6px;max-width:100%;}
.copy-line code{font-family:var(--mono);font-size:12px;word-break:break-all;color:var(--ink);}
