/* HostingBrain shared design system — used by the commercial pages (home, platform,
   solutions, data-methodology, pricing, sample-dossier, about, contact).
   Briefs, market pages and legal pages keep their own self-contained styles.
   Tokens match build.py (INK/MUT/ACC/LINE) — change both together. */
:root{
  --ink:#14161a;--mut:#5b6470;--line:#e6e8ec;--acc:#0a5cff;--bg:#fff;--soft:#f6f8fa;
  --warn-bg:#fff7e6;--warn-ink:#8a5a00;--ok-bg:#eefbf1;--ok-ink:#116329;--accsoft:#eef4ff
}
*{box-sizing:border-box;margin:0}
body{font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}
.wrap{max-width:60rem;margin:0 auto;padding:0 1.25rem}
a{color:var(--acc)}
header.hero{padding:4rem 0 3rem}
.kicker{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--acc);font-weight:700;margin-bottom:.9rem}
h1{font-size:2.6rem;line-height:1.15;letter-spacing:-.02em;max-width:40rem}
.sub{color:var(--mut);font-size:1.15rem;max-width:38rem;margin-top:1rem}
h2{font-size:1.5rem;margin:0 0 1rem;letter-spacing:-.01em}
h3{font-size:1.05rem}
section{padding:2.75rem 0;border-top:1px solid var(--line)}
.lead{max-width:42rem}
.note{color:var(--mut);font-size:.88rem;margin-top:.6rem}
code{background:var(--soft);padding:.1rem .35rem;border-radius:5px;font-size:.9em}
pre{background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:1rem;overflow-x:auto;font-size:.85rem;margin:.6rem 0}
/* buttons */
.btn{display:inline-block;border:0;border-radius:9px;padding:.65rem 1.1rem;font-size:.95rem;cursor:pointer;background:var(--acc);color:#fff;text-decoration:none}
.btn.ghost{background:var(--soft);color:var(--ink);border:1px solid var(--line)}
.ctarow{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1.6rem}
/* cards */
.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));margin-top:1.2rem}
.card{border:1px solid var(--line);border-radius:12px;padding:1.2rem 1.3rem;background:var(--bg)}
.card.soft{background:var(--soft)}
.card h3{margin-bottom:.4rem}
.card p{color:var(--mut);font-size:.92rem}
.card .cta{display:block;margin-top:.7rem;font-size:.9rem}
a.card{display:block;text-decoration:none;color:var(--ink)}
a.card:hover{border-color:var(--acc)}
.qa{background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:1.1rem 1.3rem;margin:.6rem 0}
.qa b{display:block;margin-bottom:.3rem}
.qa span{color:var(--mut);font-size:.95rem}
/* chips */
.badge{display:inline-block;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;padding:.15rem .5rem;border-radius:99px;background:var(--accsoft);color:var(--acc);margin-bottom:.5rem}
.badge.gray{background:var(--soft);color:var(--mut)}
.chip{display:inline-block;font-size:.78rem;padding:.18rem .6rem;border-radius:99px;border:1px solid var(--line);background:var(--soft);color:var(--mut);margin:.15rem .25rem .15rem 0}
.chip.warn{background:var(--warn-bg);color:var(--warn-ink);border-color:#f0dcb0}
.chip.ok{background:var(--ok-bg);color:var(--ok-ink);border-color:#c4ecd0}
/* tables */
.mtab{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:.7rem}
.mtab th,.mtab td{padding:.45rem .6rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.mtab th{color:var(--mut);font-weight:600}
.tscroll{overflow-x:auto}
/* product / chat demo */
.chat{border:1px solid var(--line);border-radius:14px;padding:1.1rem;margin:.8rem 0;background:#fff}
.msg{max-width:88%;padding:.7rem .95rem;border-radius:14px;margin:.45rem 0;font-size:.93rem;line-height:1.55}
.msg.user{background:var(--acc);color:#fff;margin-left:auto;border-bottom-right-radius:4px;width:fit-content}
.msg.ai{background:var(--soft);border:1px solid var(--line);border-bottom-left-radius:4px}
.msg.ai .src{display:block;margin-top:.5rem;color:var(--mut);font-size:.78rem}
.chatcap{color:var(--mut);font-size:.78rem;text-align:right;margin-top:.3rem}
/* evidence drawer (progressive enhancement: works without JS via <details>) */
details.evd{margin-top:.6rem;border:1px solid var(--line);border-radius:10px;background:var(--soft)}
details.evd summary{cursor:pointer;padding:.55rem .8rem;font-size:.85rem;color:var(--mut);list-style:none}
details.evd summary::before{content:"▸ ";color:var(--acc)}
details.evd[open] summary::before{content:"▾ "}
details.evd .evbody{padding:.2rem .9rem .8rem;font-size:.85rem;color:var(--mut);border-top:1px solid var(--line)}
/* stats / funnel (shared with homepage) */
.funnel{display:flex;align-items:stretch;gap:.7rem;flex-wrap:wrap;margin-top:2rem}
.ftier{flex:1 1 200px;min-width:0;background:var(--soft);border:1px solid var(--line);border-radius:12px;padding:1.05rem 1.15rem}
.ftier b{font-size:clamp(1.6rem,4.5vw,2.1rem);display:block;letter-spacing:-.02em;line-height:1}
.ftier span{color:var(--ink);font-size:.86rem;font-weight:600;display:block;margin-top:.3rem;letter-spacing:.01em}
.ftier em{font-style:normal;color:var(--mut);font-size:.8rem;display:block;margin-top:.35rem;line-height:1.45}
.ftier.floor{background:var(--accsoft);border-color:#bcd2ff}
.ftier.floor b{color:var(--acc)}
.farrow{font-size:1.3rem;color:#c2c8d1;align-self:center}
@media(max-width:950px){.farrow{display:none}}
.funnelcap{color:var(--mut);font-size:.9rem;margin-top:.9rem}
.funnelcap b{color:var(--ink);font-weight:600}
.metastats{margin-top:1rem;color:var(--mut);font-size:.85rem}
.metastats b{color:var(--ink);font-weight:600}
/* pricing */
.tier{border:1px solid var(--line);border-radius:12px;padding:1.3rem;display:flex;flex-direction:column}
.tier .price{font-size:1.5rem;margin:.4rem 0;letter-spacing:-.01em}
.tier .price small{font-size:.85rem;color:var(--mut);font-weight:400}
.tier .for{color:var(--mut);font-size:.88rem;margin:.1rem 0 .4rem}
.tier ul{padding-left:1.1rem;color:var(--mut);font-size:.92rem;margin:.6rem 0 1rem}
.tier li{margin:.25rem 0}
.tier .btn{margin-top:auto;text-align:center}
/* forms */
input,select,textarea{width:100%;padding:.6rem .7rem;font-size:.95rem;border:1px solid var(--line);border-radius:8px;margin:.3rem 0;font-family:inherit}
form{max-width:30rem}
.keybox{background:#101418;color:#8ff0a4;padding:1rem;border-radius:10px;font-family:ui-monospace,monospace;font-size:.9rem;word-break:break-all;margin-top:.8rem;display:none}
/* hero product composition (card #102) — static by default; the homepage script steps the
   .hbeat elements when motion is allowed. Keep selectors in sync with index.html's hero demo. */
.herogrid{display:grid;gap:2rem;grid-template-columns:1fr;align-items:start}
@media(min-width:950px){.herogrid{grid-template-columns:minmax(0,1fr) minmax(0,25rem)}}
/* Below the two-column breakpoint the composition would stack into a dense wall of boxes at
   phone width — hide it there (brief §11 responsive rule: mobile gets the controlled product
   demo in the #see section instead). */
@media(max-width:949px){.hdemo{display:none}}
.hdemo{border:1px solid var(--line);border-radius:14px;background:var(--bg);padding:1rem 1.1rem;
  font-size:.87rem;line-height:1.5;box-shadow:0 1px 3px rgba(20,22,26,.05)}
.hdemo .hq{display:flex;gap:.5rem;align-items:baseline;background:var(--soft);border:1px solid var(--line);
  border-radius:9px;padding:.5rem .7rem;color:var(--ink);min-height:2.15rem;margin-top:.7rem}
.hdemo .hq:first-child{margin-top:0}
.hdemo .hq::before{content:"\203A";color:var(--acc);font-weight:700}
.hdemo .caret{display:none;width:1px;height:1em;background:var(--ink);margin-left:1px;
  vertical-align:text-bottom;animation:hblink 1s steps(1) infinite}
@keyframes hblink{50%{opacity:0}}
.hdemo .hans{margin-top:.7rem;background:var(--soft);border:1px solid var(--line);border-radius:9px;padding:.6rem .8rem}
.hdemo .hans .hchips{margin-top:.45rem}
.hdemo .hfold{margin-top:.7rem}
.hdemo .hrow{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap;margin:.3rem 0}
.hdemo .hrow .arr{color:#c2c8d1}
.hdemo .hcap{color:var(--mut);font-size:.78rem;margin-top:.5rem}
.hdemo details.evd{margin-top:.7rem;background:var(--bg)}
@keyframes hfade{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.hdemo.js-anim .hbeat{display:none}
.hdemo.js-anim .hbeat.hshow{display:block;animation:hfade .45s ease}
.hdemo.js-anim .hrow{opacity:0}
.hdemo.js-anim .hshow .hrow{animation:hfade .4s ease forwards}
.hdemo.js-anim .hshow .hrow:nth-child(2){animation-delay:.25s}
.hdemo.js-anim .hshow .hrow:nth-child(3){animation-delay:.5s}
.hdemo.js-anim .caret{display:inline-block}
@media (prefers-reduced-motion: reduce){
  .hdemo .hbeat,.hdemo .hrow{animation:none!important;transition:none!important}
}
/* footer */
footer{padding:2.5rem 0 4rem;color:var(--mut);font-size:.9rem;border-top:1px solid var(--line)}
footer a{color:var(--mut)}
@media (max-width:480px){
  h1{font-size:2rem}
  .funnel{flex-direction:column;align-items:stretch;gap:.5rem}
  .farrow{display:none}
}
