/* extras 2: demos, numbers, portal status, sticky CTA, share */
.demo-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:8px}
@media(max-width:820px){.demo-grid{grid-template-columns:1fr}}
.dcard{background:linear-gradient(180deg,#121c3b,#0e1630);border:1px solid var(--line);border-radius:var(--r);padding:20px;display:flex;flex-direction:column;gap:12px;min-height:360px}
.dcard h3{font-size:1.05rem}
.dtag{align-self:flex-start;font-size:.66rem;letter-spacing:.14em;color:var(--pu2);border:1px solid var(--pu);border-radius:20px;padding:2px 10px}
.ringwrap{display:flex;align-items:center;gap:18px}
.ring{position:relative;width:120px;height:120px;flex:none}
.ring svg{width:120px;height:120px;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:10;stroke-linecap:round}
.ring .bg{stroke:#1e2a4d}
.ring .fg{stroke:url(#rg);stroke-dasharray:314;stroke-dashoffset:314;transition:stroke-dashoffset 1.2s cubic-bezier(.2,.8,.2,1)}
.ring b{position:absolute;inset:0;display:grid;place-items:center;font-size:1.7rem}
.checks{list-style:none;margin:0;padding:0;flex:1;font-size:.88rem}
.checks li{display:flex;justify-content:space-between;padding:5px 0;color:var(--mut);border-bottom:1px solid #1e2a4d66;opacity:.45;transition:opacity .3s,color .3s}
.checks li.ok{opacity:1;color:var(--tx)}
.checks li.ok span:last-child{color:#4ade80}
.dbtn{align-self:flex-start;border:0;border-radius:12px;padding:11px 18px;background:var(--btn);color:#050816;font:700 .9rem Sora,system-ui,sans-serif;cursor:pointer}
.dbtn:disabled{opacity:.6;cursor:default}
.dsum{color:var(--mut);font-size:.88rem;min-height:1.4em}
.chat{flex:1;display:flex;flex-direction:column;gap:8px;overflow:auto;max-height:230px;padding-right:4px}
.bub{flex:none;max-width:88%;padding:9px 13px;border-radius:14px;font-size:.88rem;line-height:1.45}
.bub.me{align-self:flex-end;background:linear-gradient(135deg,#48cdde33,#7c53cb55);border:1px solid #8f7cf566}
.bub.ai{align-self:flex-start;background:#0a1228;border:1px solid var(--line)}
.bub.ai.typing::after{content:"▍";animation:blink 1s steps(2) infinite;margin-left:2px;color:var(--cy)}
@keyframes blink{50%{opacity:0}}
.qchips{display:flex;flex-wrap:wrap;gap:8px}
.qchips button{border:1px solid var(--line);background:#0a1228;color:var(--tx);border-radius:20px;padding:7px 12px;font:.8rem Sora,system-ui,sans-serif;cursor:pointer}
.qchips button:hover{border-color:var(--cy)}
/* numbers */
.nums{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;text-align:center}
@media(max-width:760px){.nums{grid-template-columns:repeat(2,1fr)}}
.num{border:1px solid var(--line);border-radius:var(--r);padding:20px 10px;background:#0a1022}
.num b{display:block;font-size:2.2rem;line-height:1.1;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.num span{color:var(--mut);font-size:.82rem}
/* portal status */
.pstat{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;color:var(--mut);white-space:nowrap}
.pstat i{width:8px;height:8px;border-radius:50%;background:#6b7699}
.pstat.up i{background:#4ade80;box-shadow:0 0 8px #4ade80}
.pstat.down i{background:#ff7a8a}
/* sticky cta, to top, share */
.stick{position:fixed;left:12px;right:12px;bottom:12px;z-index:60;display:none;gap:8px;align-items:center;background:#0e1630f2;border:1px solid var(--line);border-radius:14px;padding:10px 12px;backdrop-filter:blur(8px);transform:translateY(140%);transition:transform .35s}
.stick.show{transform:none}
.stick span{flex:1;font-size:.85rem}
.stick a{background:var(--btn);color:#050816;border-radius:10px;padding:9px 14px;font-weight:700;font-size:.85rem;white-space:nowrap}
@media(max-width:700px){.stick{display:flex}}
.totop{position:fixed;right:16px;bottom:64px;z-index:70;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--tx);cursor:pointer;opacity:0;pointer-events:none;transition:opacity .25s}
.totop.show{opacity:1;pointer-events:auto}
@media(max-width:700px){.totop{bottom:76px}}
.sharebtn{background:none;border:1px solid var(--line);color:var(--mut);border-radius:10px;padding:6px 12px;font:inherit;font-size:.82rem;cursor:pointer;margin-left:8px}
.sharebtn:hover{border-color:var(--cy);color:var(--tx)}
