/* Motion and polish across the app, plus the Body tab visuals. */

/* Ambient glow behind everything */
body::before{content:"";position:fixed;inset:-20% -10% auto;height:70vh;background:radial-gradient(60% 60% at 20% 0%,#ffc83714,transparent 60%),radial-gradient(50% 50% at 90% 10%,#2563eb12,transparent 60%);pointer-events:none;z-index:0}
.app,.login{position:relative;z-index:1}

/* Cards rise in, lift on hover */
@keyframes rise{from{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}
.content .card,.content .stat,.content .gauge,.content .bodyfig,.content .ib-old,.content .grid>*{animation:rise .45s cubic-bezier(.2,.8,.2,1) both}
.content .g3>*:nth-child(2),.content .stats>*:nth-child(2),.content .gauges>*:nth-child(2){animation-delay:.06s}
.content .g3>*:nth-child(3),.content .stats>*:nth-child(3),.content .gauges>*:nth-child(3){animation-delay:.12s}
.content .stats>*:nth-child(4){animation-delay:.18s}
.card,.stat,.th,.ext,.thr{transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
.card:hover{border-color:#3a4150;box-shadow:0 10px 30px -18px #000,0 0 0 1px #ffc83712}
.btn{transition:transform .12s ease,background .2s ease,box-shadow .2s ease}
.btn:active{transform:scale(.97)}
.btn:not(.g):not(.danger):hover{box-shadow:0 6px 20px -8px #ffc83799}

/* Headline gradient */
h2{background:linear-gradient(90deg,#fff,#cfd6e4 60%,#ffc837);-webkit-background-clip:text;background-clip:text;color:transparent}
h2 small{-webkit-text-fill-color:var(--txt2)}

/* Loading shimmer instead of "…" */
.empty:only-child{background:linear-gradient(90deg,transparent,#ffffff08,transparent) 0 0/200% 100%;animation:shimmer 1.2s linear infinite;border-radius:14px}
@keyframes shimmer{to{background-position:-200% 0}}

/* Capture button breathes; agent orb pulses */
@keyframes breathe{0%,100%{box-shadow:0 6px 22px #ffc83755,0 0 0 5px var(--bg)}50%{box-shadow:0 6px 30px #ffc837aa,0 0 0 5px var(--bg)}}
.bottom .cap .orb{animation:breathe 3s ease-in-out infinite}
@keyframes orb{0%,100%{box-shadow:0 0 14px #ffc83740}50%{box-shadow:0 0 26px #ffc83790}}
.orb,.agbtn{animation:orb 3.2s ease-in-out infinite}
.m{animation:rise .3s ease both}

/* Recovery ring draws in */
@property --p{syntax:'<number>';inherits:false;initial-value:0}
.ring{transition:--p 1s cubic-bezier(.2,.8,.2,1)}

/* ---------- Body tab ---------- */
.ib-hero{background:radial-gradient(120% 140% at 0% 0%,#2b241166,transparent 55%),linear-gradient(180deg,var(--s2),var(--s1));border:1px solid var(--line);border-radius:22px;padding:18px;position:relative;overflow:hidden}
.ib-hero::after{content:"";position:absolute;inset:auto -30% -60% auto;width:340px;height:340px;background:radial-gradient(circle,#10b98122,transparent 60%);pointer-events:none}
.ib-head{display:flex;align-items:center;gap:10px;justify-content:space-between;margin-bottom:6px}
.ib-date{font-size:20px;font-weight:800}
.gauges{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 4px}
.gauge{position:relative;text-align:center}
.gauge svg{width:100%;max-width:220px;display:block;margin:0 auto}
.gauge .track{fill:none;stroke:#222630;stroke-width:12;stroke-linecap:round}
.gauge .goodband{fill:none;stroke:#10b98133;stroke-width:12;stroke-linecap:round}
.gauge .val{fill:none;stroke-width:12;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;animation:draw 1.1s .2s cubic-bezier(.2,.8,.2,1) forwards;filter:drop-shadow(0 0 6px currentColor)}
@keyframes draw{to{stroke-dashoffset:var(--to)}}
.gauge .gv{position:absolute;left:0;right:0;top:44%;display:flex;justify-content:center;align-items:baseline;gap:2px}
.gauge .gv b{font-size:clamp(20px,3.4vw,30px);font-weight:800}
.gauge .gv small{color:var(--txt2);font-size:12px}
.gauge .gl{color:var(--txt2);font-size:12px;margin-top:-6px;text-transform:uppercase;letter-spacing:.6px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:10px}
.stat{background:#0d0f14aa;border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.stat .sl{font-size:11px;color:var(--txt2);text-transform:uppercase;letter-spacing:.6px}
.stat .sv{display:flex;align-items:baseline;gap:4px;margin-top:2px}
.stat .sv b{font-size:24px;font-weight:800}.stat .sv small{color:var(--txt2)}
.trend{width:100%;height:26px;margin-top:4px;opacity:.9}
.goal{margin-top:14px;padding:12px;border-radius:14px;background:#0d0f14aa;border:1px solid var(--line)}
.goal-top{display:flex;justify-content:space-between;margin-bottom:8px}
.goal-bar{height:10px;border-radius:999px;background:#222630;overflow:hidden;margin-bottom:6px}
.goal-bar i{display:block;height:100%;width:var(--w);background:linear-gradient(90deg,var(--gold),var(--green));border-radius:999px;animation:grow 1.2s .3s cubic-bezier(.2,.8,.2,1) both}
@keyframes grow{from{width:0}}
.figs{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.bodyfig{margin:0;background:radial-gradient(80% 60% at 50% 30%,#1b1f2a,var(--s1));border:1px solid var(--line);border-radius:20px;padding:12px 10px 10px}
.bodyfig figcaption{font-size:11.5px;text-transform:uppercase;letter-spacing:.7px;color:var(--txt2);font-weight:600;text-align:center}
.bodyfig svg{width:100%;max-height:340px;display:block}
.bodyfig .seg{stroke-width:1.5;transform-box:fill-box;transform-origin:center;animation:pop .6s var(--d) cubic-bezier(.2,.9,.3,1.3) both;transition:filter .2s}
.bodyfig .seg:hover{filter:brightness(1.25) drop-shadow(0 0 8px currentColor)}
@keyframes pop{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
.bodyfig .seglbl .v{font-size:13px;font-weight:800;fill:#F8FAFC}
.bodyfig .seglbl .u{font-size:9px;fill:#94A3B8;font-weight:500}
.bodyfig .seglbl .p{font-size:11px;font-weight:700}
.bodyfig .legend{display:flex;justify-content:center;gap:12px;font-size:11px;color:var(--txt2)}
.bodyfig .legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-inline-end:4px}
.figs.sm .bodyfig svg{max-height:220px}
.ib-old{border:1px solid var(--line);border-radius:14px;background:var(--s2);margin-bottom:8px;overflow:hidden}
.ib-old summary{list-style:none;display:flex;gap:14px;align-items:center;padding:12px 14px;cursor:pointer;font-size:13.5px}
.ib-old summary::-webkit-details-marker{display:none}
.ib-old summary .sp{flex:1}
.ib-old summary .chev{transition:transform .2s;color:var(--gold);font-size:18px}
.ib-old[open] summary .chev{transform:rotate(90deg)}
.ib-old-body{padding:0 14px 14px;animation:rise .3s ease both}
.mini-stat{background:var(--s1);border:1px solid var(--line);border-radius:12px;padding:8px 10px}
.mini-stat b{font-size:17px}
.hero-empty{text-align:center;padding:30px}
@media (max-width:700px){
  .stats{grid-template-columns:1fr 1fr}
  .gauges{gap:2px}.gauge .gl{font-size:10px}
  .figs{grid-template-columns:1fr 1fr;gap:8px}
  .bodyfig .seglbl .v{font-size:15px}
  .ib-old summary{gap:8px;font-size:12.5px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
