/* bullumi.com — landing page v1.0
   Layout: one centred column (max 1120px, 20px gutters); hero and two feature sections split 2-up from 900px.
   Palette and shapes follow the Bullumi app: cream ground, grape primary, apricot accent, soft 3D cards. */
:root{
  --paper:#fff9f0; --paper-deep:#f7efe6; --surface:#ffffff;
  --ink:#2b1f3d; --ink-2:#55476a; --muted:#857596; --line:#ece3f1;
  --grape:#7953c7; --grape-deep:#5d3d97; --lilac:#efe8fa; --lilac-2:#f7f2fd;
  --apricot:#ffae78; --apricot-deep:#c96a26; --apricot-soft:#fff0e0;
  --mint:#3f8f79; --mint-soft:#e2f4ee; --night:#271b38;
  --font-display:"Segoe UI Variable Display","SF Pro Display",-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --font-body:"Segoe UI Variable Text","SF Pro Text",-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --r-l:28px; --r-m:20px; --r-s:14px;
  --lift:0 6px 0 #ece1f5;
  --float:0 22px 50px -24px rgba(58,38,92,.42);
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.6 var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--font-display);margin:0;text-wrap:balance}
p{margin:0}
:focus-visible{outline:3px solid var(--apricot-deep);outline-offset:3px;border-radius:10px}
.wrap{width:min(1120px,100% - 40px);margin-inline:auto}
.skip{position:absolute;left:16px;top:-80px;z-index:20;background:var(--surface);color:var(--grape-deep);padding:10px 16px;border-radius:12px;font-weight:700;text-decoration:none;box-shadow:var(--float)}
.skip:focus{top:12px}
main:focus{outline:none}
.seg{display:inline-block}
.hero-grid>*,.world-grid>*,.co-grid>*,.co-demo>*{min-width:0}

/* ---------- header ---------- */
.top{position:sticky;top:0;z-index:10;background:rgba(255,249,240,.86);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid transparent;transition:border-color .2s}
.top.is-scrolled{border-bottom-color:var(--line)}
.top-in{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding-top:env(safe-area-inset-top,0px)}
.brand{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--grape);font:850 26px/1 var(--font-display);letter-spacing:-.045em;min-height:44px}
.lang{display:flex;padding:4px;border-radius:16px;background:var(--lilac);gap:2px}
.lang a{display:grid;place-items:center;min-width:52px;min-height:38px;padding:0 12px;border-radius:12px;font-weight:700;font-size:14px;color:var(--grape-deep);text-decoration:none;transition:background .15s,color .15s}
.lang a[aria-current="true"]{background:var(--surface);color:var(--grape);box-shadow:0 2px 0 #e2d4f4}
.lang a:hover{color:var(--grape)}

/* ---------- shared bits ---------- */
.section{padding-block:76px}
.kicker{font:800 13px/1.4 var(--font-body);letter-spacing:.09em;text-transform:uppercase;color:var(--grape)}
:lang(zh-CN) .kicker{letter-spacing:.12em}
h2{margin-top:10px;font-size:clamp(1.95rem,4.6vw,3rem);line-height:1.1;font-weight:800;letter-spacing:-.03em;max-width:20ch}
:lang(zh-CN) h2{letter-spacing:-.01em;line-height:1.2}
.lead{margin-top:16px;font-size:clamp(1.05rem,1.8vw,1.2rem);color:var(--ink-2);max-width:40ch}
.fine{margin-top:18px;font-size:13.5px;color:var(--muted);max-width:56ch}
.pill{display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:0 12px;border-radius:999px;font-size:13px;font-weight:700;white-space:nowrap}
.pill svg{width:16px;height:16px}
.pill.status{background:var(--apricot-soft);color:var(--apricot-deep)}
.pill.status i{width:7px;height:7px;border-radius:50%;background:var(--apricot);box-shadow:0 0 0 3px rgba(255,174,120,.3);animation:pulse 2.4s ease-in-out infinite}
.pill.soft{background:var(--lilac);color:var(--grape-deep);min-height:46px;padding:0 16px;font-size:14px}
.btn{display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 24px;border-radius:18px;background:var(--grape);color:#fff;font-weight:750;font-size:16px;text-decoration:none;box-shadow:0 5px 0 var(--grape-deep);transition:transform .12s,box-shadow .12s}
.btn svg{width:20px;height:20px}
.btn:hover{transform:translateY(-2px);box-shadow:0 7px 0 var(--grape-deep)}
.btn:active{transform:translateY(3px);box-shadow:0 2px 0 var(--grape-deep)}
.tile{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;border-radius:14px;background:var(--tile,#d8dce9);color:#24263a;font:800 19px/1 var(--font-display);box-shadow:inset 0 -3px 0 rgba(36,38,58,.08)}

/* ---------- hero ---------- */
.hero{padding-block:36px 24px;overflow-x:clip}
.hero-grid{display:grid;gap:28px;align-items:center}
.eyebrow{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;font-size:14px;font-weight:700;color:var(--grape-deep)}
h1{margin-top:18px;font-size:clamp(2.55rem,7.4vw,4.6rem);line-height:1.02;font-weight:850;letter-spacing:-.04em;max-width:13ch}
:lang(zh-CN) h1{font-size:clamp(2.3rem,6.2vw,4rem);letter-spacing:-.015em;line-height:1.14;max-width:11em}
h1 em{font-style:normal;color:var(--grape);background:linear-gradient(transparent 70%,var(--apricot-soft) 70%)}
.hero .lead{max-width:30ch}
.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:28px}
.hero-visual{position:relative;max-width:520px;width:100%;justify-self:center}
.hero-art{width:100%;height:auto;overflow:visible}
.peek{position:relative;margin:-36px auto 0;width:min(320px,100%);background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:16px 16px 14px;box-shadow:var(--float)}
.peek-head{display:flex;align-items:center;gap:12px}
.peek-name{flex:1;min-width:0;display:grid;line-height:1.2}
.peek-name b{font:800 16.5px/1.2 var(--font-display);white-space:nowrap;letter-spacing:-.01em}
.peek-name small{font-size:11px;font-weight:800;color:var(--grape);letter-spacing:.12em}
.tile.snap{background:var(--lilac);color:var(--grape)}
.tile.snap svg{width:24px;height:24px}
.peek ul{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:9px}
.peek li{display:flex;align-items:center;gap:10px;font-size:14.5px;line-height:1.35;color:var(--ink);font-weight:650}
.peek li>span{flex:1;display:grid;gap:6px}
.peek li i{display:block;width:var(--w);height:6px;border-radius:4px;background:#efe7f8}
.peek li svg{width:30px;height:30px;flex-shrink:0;padding:6px;border-radius:10px;background:var(--lilac);color:var(--grape)}
.peek-note{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line);font-size:12px;font-weight:700;color:var(--muted)}
.timer{position:relative;display:grid;place-items:center;width:44px;height:44px;flex-shrink:0}
.timer svg{position:absolute;inset:0;transform:rotate(-90deg)}
.timer b{font-size:11px;font-weight:800;color:var(--grape-deep)}
.t-track{fill:none;stroke:var(--lilac);stroke-width:3.5}
.t-fill{fill:none;stroke:var(--grape);stroke-width:3.5;stroke-linecap:round;stroke-dasharray:94.25;stroke-dashoffset:0;animation:countdown 2.6s cubic-bezier(.3,.6,.3,1) .4s both}

/* ---------- how it works ---------- */
.steps{list-style:none;margin:40px 0 0;padding:0;display:grid;gap:18px;counter-reset:step}
.step{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:16px 16px 22px;box-shadow:var(--lift);counter-increment:step}
.step::before{content:counter(step);position:absolute;top:26px;left:26px;z-index:1;display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:var(--surface);color:var(--grape);font:800 14px/1 var(--font-display);box-shadow:0 2px 0 #e2d4f4}
.step-art{display:grid;place-items:center;height:168px;border-radius:var(--r-m);background:radial-gradient(circle at 50% 60%,#f3eafd,var(--lilac-2) 70%);margin-bottom:18px;overflow:hidden}
.step-art svg{width:min(230px,90%);height:auto}
.step h3{font-size:1.25rem;font-weight:800;letter-spacing:-.015em;padding-inline:6px}
.step p{margin-top:6px;color:var(--ink-2);padding-inline:6px}
.mock-search{display:grid;gap:12px;justify-items:center}
.ms-bar{display:flex;align-items:center;gap:10px;width:210px;height:48px;padding:0 14px;border-radius:16px;background:var(--surface);box-shadow:0 4px 0 #e6daf0;color:var(--grape)}
.ms-bar svg{width:22px;height:22px}
.ms-typed{font:800 17px/1 var(--font-display);letter-spacing:.06em;color:var(--ink)}
.ms-caret{width:2px;height:20px;background:var(--grape);animation:blink 1.1s steps(2) infinite}
.ms-chips{display:flex;gap:8px}
.ms-chips i{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--c);font:800 15px/1 var(--font-display);font-style:normal;color:#24263a;box-shadow:0 3px 0 rgba(36,38,58,.1)}
.mock-brief{position:relative;display:grid;gap:10px;width:210px;padding:16px;border-radius:18px;background:var(--surface);box-shadow:0 4px 0 #e6daf0}
.mb-row{display:flex;align-items:center;gap:10px;color:var(--grape)}
.mb-row svg{width:28px;height:28px;padding:5px;border-radius:9px;background:var(--lilac)}
.mb-row i{height:8px;width:var(--w);border-radius:5px;background:#e9e0f3}
.mb-timer{position:absolute;right:-14px;top:-14px;background:var(--surface);border-radius:50%;box-shadow:0 3px 0 #e6daf0}

/* ---------- financial town ---------- */
.world{background:linear-gradient(var(--paper),#f5eefd 30%,#f5eefd 70%,var(--paper))}
.world-grid{display:grid;gap:44px;align-items:center}
.legend{list-style:none;margin:28px 0 0;padding:0;display:grid;gap:4px}
.legend li{display:flex;align-items:center;gap:14px;padding:8px 0;border-bottom:1px solid var(--line)}
.legend li:last-child{border-bottom:0}
.legend svg{width:84px;height:70px;flex-shrink:0}
.legend li>span{display:grid;gap:2px}
.legend b{font:800 16px/1.3 var(--font-display)}
.legend li>span>span{font-size:14px;color:var(--muted)}
.phone-shot{margin:0;justify-self:center;display:grid;gap:12px;justify-items:center}
.phone-frame{width:min(300px,78vw);padding:9px;border-radius:44px;background:var(--night);box-shadow:0 40px 70px -34px rgba(39,27,56,.6)}
.shot{width:100%;height:auto;border-radius:35px;background:var(--paper)}
html[lang="en"] .shot-zh,html[lang="zh-CN"] .shot-en{display:none}
.phone-shot figcaption{font-size:13px;font-weight:700;color:var(--muted)}

/* ---------- understand a company ---------- */
.company{background:radial-gradient(120% 80% at 80% 20%,#ede2fc 0,#f6f0fe 46%,var(--paper) 100%)}
.co-grid{display:grid;gap:36px;align-items:start}
.co-demo{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.tabs{display:flex;gap:8px;padding:6px;border-radius:20px;background:rgba(255,255,255,.7);border:1px solid var(--line);width:max-content;max-width:100%;justify-self:start;overflow-x:auto}
.tabs button{display:flex;align-items:center;gap:9px;min-height:46px;padding:0 14px 0 6px;border:0;border-radius:15px;background:transparent;font:700 15px/1 var(--font-body);color:var(--ink-2);cursor:pointer;white-space:nowrap}
.tabs .tile{width:34px;height:34px;border-radius:11px;font-size:15px}
.tabs button[aria-selected="true"]{background:var(--surface);color:var(--ink);box-shadow:0 3px 0 #e6daf0}
.brief{background:var(--surface);border:1px solid var(--line);border-radius:30px;padding:22px 20px 18px;box-shadow:0 34px 70px -38px rgba(58,38,92,.5)}
.brief[hidden]{display:none}
.brief-head{display:flex;align-items:center;gap:14px}
.brief-head .tile{width:52px;height:52px;border-radius:16px;font-size:22px}
.brief-id{flex:1;min-width:0}
.brief-id h3{font-size:1.45rem;font-weight:800;letter-spacing:-.02em}
.brief-id p{font-size:13.5px;color:var(--muted);font-weight:600}
.badge{align-self:flex-start;padding:5px 10px;border-radius:999px;background:var(--apricot-soft);color:var(--apricot-deep);font-size:12px;font-weight:800;white-space:nowrap}
.brief-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 12px;margin:14px 0 4px;padding-bottom:12px;border-bottom:1px dashed var(--line);font-size:13px;color:var(--muted);font-weight:600}
.read{display:inline-flex;align-items:center;gap:5px;color:var(--grape-deep)}
.read svg{width:15px;height:15px}
.qa{padding-top:16px}
.qa h4{display:flex;align-items:center;gap:10px;font-size:1.05rem;font-weight:800}
.qa h4 svg{width:32px;height:32px;padding:6px;border-radius:10px;background:var(--lilac);color:var(--grape);flex-shrink:0}
.qa p{margin-top:8px;color:var(--ink-2);font-size:15.5px;line-height:1.65}
.mix{display:flex;gap:3px;height:14px;margin-top:14px;border-radius:8px;overflow:hidden}
.mix i{display:block;height:100%;background:var(--c)}
.mix-legend{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13.5px;color:var(--ink-2)}
.mix-legend li{display:flex;align-items:center;gap:6px}
.mix-legend i{width:10px;height:10px;border-radius:3px;background:var(--c)}
.mix-legend b{font-variant-numeric:tabular-nums;color:var(--ink)}
.brief-foot{margin-top:18px;padding-top:12px;border-top:1px solid var(--line);font-size:13px}
.brief-foot a{display:inline-flex;align-items:center;gap:6px;color:var(--grape-deep);font-weight:700;text-decoration:none;min-height:36px}
.brief-foot a:hover{text-decoration:underline}
.brief-foot svg{width:15px;height:15px}

/* ---------- one idea, two languages ---------- */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:30px}
.chips button{min-height:44px;padding:0 16px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font:700 14.5px/1 var(--font-body);color:var(--ink-2);cursor:pointer}
.chips button[aria-selected="true"]{background:var(--grape);border-color:var(--grape);color:#fff;box-shadow:0 3px 0 var(--grape-deep)}
.pair{display:grid;gap:14px;align-items:center;margin-top:22px}
.pair[hidden]{display:none}
.lcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:22px 22px 20px;box-shadow:var(--lift);height:100%}
.lcard.zh{background:linear-gradient(160deg,#fff,var(--lilac-2))}
.lc-lang{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.08em;color:var(--grape);text-transform:uppercase}
.lcard h3{margin-top:6px;font-size:clamp(1.9rem,4vw,2.4rem);font-weight:850;letter-spacing:-.03em}
.lcard.zh h3{letter-spacing:0}
.lcard p{margin-top:8px;color:var(--ink-2);font-size:16px}
.lcard .ex{margin-top:14px;padding:10px 14px;border-radius:14px;background:var(--apricot-soft);color:#7a4b1f;font-size:14.5px}
.swap{justify-self:center;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--lilac);color:var(--grape);transform:rotate(90deg)}
.swap svg{width:22px;height:22px}

/* ---------- future ---------- */
.tiles{list-style:none;margin:36px 0 0;padding:0;display:grid;gap:16px}
.tcard{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto auto;column-gap:16px;row-gap:4px;align-items:start;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:20px}
.t-icon{grid-row:1/4;display:grid;place-items:center;width:56px;height:56px;border-radius:18px;background:var(--lilac);color:var(--grape)}
.t-icon svg{width:28px;height:28px}
.t-icon.coin{background:#fff3df}
.t-icon.coin svg{width:38px;height:38px}
.tcard .pill{justify-self:start;min-height:26px;padding:0 10px;font-size:12px}
.pill.plan{background:var(--lilac);color:var(--grape-deep)}
.pill.preview{background:var(--apricot-soft);color:var(--apricot-deep)}
.pill.dev{background:var(--mint-soft);color:var(--mint)}
.tcard h3{font-size:1.15rem;font-weight:800;margin-top:4px}
.tcard p{color:var(--ink-2);font-size:15px}

/* ---------- footer ---------- */
.foot{background:var(--night);color:#e8def5;padding-block:56px 32px}
.foot .brand{color:#fff}
.foot-grid{display:grid;gap:32px}
.foot-brand{display:grid;gap:12px;justify-items:start}
.foot-brand p{color:#cbbde0}
.foot .pill.status{background:rgba(255,174,120,.16);color:#ffc89e}
.foot-info{display:grid;gap:18px;margin:0}
.foot-info dt{font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#b9a6d4}
.foot-info dd{margin:4px 0 0;color:#e8def5;font-size:15px;max-width:44ch}
.foot .mail{display:inline-flex;align-items:center;min-height:44px;color:#fff;font-weight:700;text-decoration:underline;text-decoration-color:rgba(255,255,255,.4);text-underline-offset:4px}
.foot .mail:hover{text-decoration-color:#fff}
.foot-bottom{display:grid;gap:6px;margin-top:40px;padding-top:20px;border-top:1px solid rgba(255,255,255,.12);font-size:13.5px;color:#b9a6d4}
.foot-bottom b{color:#fff}
.sig{margin-top:6px;color:#8f7ca8}

/* ---------- 404 (served only for missing URLs) ---------- */
.nf{min-height:calc(100vh - 64px);min-height:calc(100svh - 64px);display:grid;align-items:center;padding-block:40px 72px}
.nf-in{display:grid;justify-items:center;text-align:center}
.nf-bumi{width:150px;height:auto}
.nf-code{margin-top:6px;font:850 clamp(3.4rem,12vw,5.6rem)/1 var(--font-display);letter-spacing:-.04em;color:var(--grape)}
.nf-title{margin-top:14px;max-width:none;font-size:clamp(1.5rem,4.6vw,2.2rem);line-height:1.25;letter-spacing:-.02em}
.nf-title span{display:block}
.nf-title span[lang="zh-CN"]{margin-top:6px;font-size:.82em;letter-spacing:0;color:var(--ink-2)}
.nf-actions{justify-content:center;margin-top:26px}
.nf-actions .pill{min-height:52px;text-decoration:none}

/* ---------- art motion ---------- */
.b-rise{animation:rise .9s cubic-bezier(.2,.8,.2,1) both}
.b-d1{animation-delay:.1s}.b-d2{animation-delay:.22s}.b-d3{animation-delay:.34s}
.b-bob{animation:bob 2s ease-in-out infinite}
.b-float{animation:floaty 4s ease-in-out infinite}
.b-twinkle{animation:twinkle 3s ease-in-out infinite}
.b-cloud{animation:drift 9s ease-in-out infinite alternate}
@keyframes rise{from{translate:0 22px;opacity:0}to{translate:0 0;opacity:1}}
@keyframes bob{0%,100%{translate:0 0}50%{translate:0 -6px}}
@keyframes floaty{0%,100%{translate:0 0}50%{translate:0 -4px}}
@keyframes twinkle{0%,100%{opacity:.5}50%{opacity:1}}
@keyframes drift{from{translate:-6px 0}to{translate:8px 0}}
@keyframes pulse{0%,100%{box-shadow:0 0 0 3px rgba(255,174,120,.3)}50%{box-shadow:0 0 0 6px rgba(255,174,120,.12)}}
@keyframes countdown{from{stroke-dashoffset:94.25}to{stroke-dashoffset:0}}
@keyframes blink{50%{opacity:0}}

/* ---------- larger screens ---------- */
@media (max-width:440px){
  .tabs{width:100%;gap:4px}
  .tabs button{flex:1;justify-content:center;padding:0 6px}
  .tabs .tile{display:none}
}
@media (min-width:640px){
  .tiles{grid-template-columns:repeat(3,1fr)}
  .tcard{grid-template-columns:1fr;grid-template-rows:auto;row-gap:10px;padding:24px}
  .t-icon{grid-row:auto}
  .pair{grid-template-columns:1fr auto 1fr}
  .swap{transform:none}
}
@media (min-width:760px){
  .steps{grid-template-columns:repeat(3,1fr)}
  .foot-grid{grid-template-columns:1fr 1.3fr}
}
@media (min-width:900px){
  .section{padding-block:112px}
  .hero{padding-block:56px 16px}
  .world-grid{grid-template-columns:1fr auto;gap:72px}
  .co-grid{grid-template-columns:.8fr 1.2fr;gap:64px}
  .co-copy{position:sticky;top:110px}
  .brief{padding:28px 30px 22px}
}

@media (min-width:1200px){
  .hero{padding-block:64px 72px}
  .hero-grid{grid-template-columns:1.05fr .95fr;gap:40px}
  .hero-visual{justify-self:end}
  .peek{position:absolute;left:-27%;bottom:-9%;margin:0;width:300px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
