:root{
  --paper:#EDF0F3;
  --ink:#16202B;
  --grid:#CFD6DE;
  --muted:#56616E;
  --signal:#FFC22E;
  --signal-deep:#E0A200;
  --sheet:#1F7A4D;
  --white:#FFFFFF;
  --display:"ZCOOL QingKe HuangYou","Microsoft YaHei UI","PingFang SC",sans-serif;
  --body:"Microsoft YaHei UI","Microsoft YaHei","PingFang SC","Hiragino Sans GB","Noto Sans SC",sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.75 var(--body)}
a{color:inherit}
img{display:block;max-width:100%}
:focus-visible{outline:3px solid var(--ink);outline-offset:3px;border-radius:4px}
.wrap{width:min(1120px,100% - 32px);margin-inline:auto}

/* ---------- top bar ---------- */
.bar{border-bottom:1px solid var(--grid);background:var(--paper)}
.bar .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;height:64px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:700}
.brand img{width:30px;height:30px}
.bar nav{display:flex;align-items:center;gap:22px;font-size:15px}
.bar nav a{text-decoration:none;color:var(--muted)}
.bar nav a:hover{color:var(--ink)}
.bar nav a[aria-current]{color:var(--ink);font-weight:700}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 24px;border-radius:8px;font-weight:700;font-size:16px;text-decoration:none;border:1.5px solid var(--ink);background:var(--white);color:var(--ink);cursor:pointer}
.btn-go{background:var(--signal);border-color:var(--ink);box-shadow:0 3px 0 var(--ink)}
.btn-go:hover{background:#FFCF57}
.btn-go:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ink)}
.btn-sm{min-height:38px;padding:0 16px;font-size:14px}

/* ---------- hero ---------- */
.hero{padding:72px 0 88px}
.hero-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:56px;align-items:center}
h1,h2,h3{font-family:var(--display);font-weight:400;letter-spacing:.01em;margin:0}
h1{font-size:clamp(40px,6vw,72px);line-height:1.12}
.lead{font-size:18px;color:var(--muted);max-width:30em;margin:24px 0 32px}
.cta{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.cta-note{font-size:14px;color:var(--muted);margin:16px 0 0}

/* keycaps */
.keys{display:flex;align-items:center;gap:10px;margin:0 0 22px;padding:0;border:0;background:none;cursor:pointer;font:inherit;color:var(--ink)}
.cap{display:inline-grid;place-items:center;min-width:64px;height:60px;padding:0 16px;font:400 26px/1 var(--display);background:var(--white);border:1.5px solid var(--ink);border-radius:10px;box-shadow:0 6px 0 var(--ink);transition:transform .08s,box-shadow .08s}
.cap-q{background:var(--signal)}
.keys .plus{font:400 22px var(--display);color:var(--muted)}
.keys:hover .cap{transform:translateY(1px);box-shadow:0 5px 0 var(--ink)}
.keys.down .cap{transform:translateY(5px);box-shadow:0 1px 0 var(--ink)}

/* fake desktop */
.desk{position:relative;aspect-ratio:16/11;border:1.5px solid var(--ink);border-radius:14px;overflow:hidden;background:
  linear-gradient(var(--grid) 1px,transparent 1px) 0 0/28px 28px,
  linear-gradient(90deg,var(--grid) 1px,transparent 1px) 0 0/28px 28px,#E4E9EE}
.win{position:absolute;background:var(--white);border:1.5px solid var(--ink);border-radius:8px;overflow:hidden;display:flex;flex-direction:column}
.win-title{display:flex;align-items:center;justify-content:space-between;gap:8px;height:30px;padding:0 10px;font-size:12px;border-bottom:1.5px solid var(--ink);background:#F6F8FA;white-space:nowrap}
.win-title i{display:inline-flex;gap:5px}
.win-title i::before,.win-title i::after,.win-title b{content:"";width:9px;height:9px;border:1.5px solid var(--ink);border-radius:50%}
.win-title b{display:inline-block}

.w-sheet{left:5%;top:7%;width:72%;height:70%}
.mini-grid{flex:1;display:grid;grid-template-columns:26px repeat(4,1fr);font-size:11px;align-content:start}
.mini-grid span{border-right:1px solid var(--grid);border-bottom:1px solid var(--grid);padding:3px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}
.mini-grid .h{background:#F1F3F5;text-align:center;color:var(--muted)}
.mini-grid .t{color:var(--ink);font-weight:700}
.mini-grid .sel{outline:2px solid var(--sheet);outline-offset:-2px;color:var(--ink)}

.w-video{right:5%;top:22%;width:58%;height:58%;transition:opacity .22s ease,transform .22s ease;background:#1E2833;border-color:var(--ink)}
.w-video .win-title{background:#2A3542;color:#DDE3EA;border-color:#0F151C}
.w-video .win-title i::before,.w-video .win-title i::after,.w-video .win-title b{border-color:#8E9AA8}
.screen{flex:1;position:relative;display:grid;place-items:center;background:
  radial-gradient(circle at 30% 70%,#3B6E8F 0 18%,transparent 19%),
  radial-gradient(circle at 70% 40%,#F2B134 0 12%,transparent 13%),#26404F}
.play{width:46px;height:46px;border-radius:50%;background:#ffffffe0;display:grid;place-items:center}
.play::after{content:"";border-left:14px solid var(--ink);border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}
.progress{position:absolute;left:12px;right:12px;bottom:10px;height:4px;background:#ffffff40;border-radius:2px}
.progress::after{content:"";position:absolute;inset:0 62% 0 0;background:var(--signal);border-radius:2px}

.taskbar{position:absolute;left:0;right:0;bottom:0;height:40px;background:#F6F8FAEE;border-top:1.5px solid var(--ink);display:flex;align-items:center;justify-content:space-between;padding:0 12px;font-size:12px}
.taskbar .apps,.taskbar .tray{display:flex;gap:6px;align-items:center}
.taskbar .app{width:24px;height:24px;border:1.5px solid var(--ink);border-radius:5px;background:var(--white);display:grid;place-items:center;font-size:11px;transition:opacity .22s}
.taskbar .app.green{background:#D7EEDF}
.taskbar .app.dark{background:#2A3542;color:#fff}
.taskbar .dot{width:10px;height:10px;border-radius:50%;background:#F2B134;border:1.5px solid var(--ink);transition:opacity .22s}

.desk.hidden .w-video{opacity:0;transform:scale(.96);pointer-events:none}
.desk.hidden .gone{opacity:0}
.status{position:absolute;left:12px;bottom:50px;font-size:12px;background:var(--white);border:1.5px solid var(--ink);border-radius:20px;padding:2px 10px}
.demo-hint{font-size:14px;color:var(--muted);margin:14px 0 0}

/* ---------- sections ---------- */
.sec{padding:88px 0;border-top:1px solid var(--grid)}
h2{font-size:clamp(30px,4vw,44px);line-height:1.2}
.sec-intro{max-width:34em;color:var(--muted);margin:14px 0 40px;font-size:17px}

/* feature spreadsheet */
.xls{border:1.5px solid var(--ink);border-radius:10px;overflow:hidden;background:var(--white)}
.xls .win-title{height:36px;font-size:13px;padding:0 14px}
.formula{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--grid);font-size:14px;padding:6px 14px;color:var(--muted)}
.formula .ref{min-width:48px;border-right:1px solid var(--grid);padding-right:12px;color:var(--ink)}
.formula .fx{font-style:italic;font-family:Georgia,serif}
.formula output{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.table-scroll{overflow-x:auto}
table.feat{width:100%;border-collapse:collapse;min-width:640px;font-size:15px}
.feat th,.feat td{border-right:1px solid var(--grid);border-bottom:1px solid var(--grid);padding:12px 16px;text-align:left;vertical-align:top}
.feat thead th{background:#F1F3F5;color:var(--muted);font-weight:400;text-align:center;font-size:13px;padding:6px}
.feat .rn{width:44px;background:#F1F3F5;color:var(--muted);text-align:center;font-size:13px}
.feat td:nth-child(2){width:24%;font-weight:700;white-space:nowrap}
.feat td:nth-child(3){color:var(--muted)}
.feat tbody tr{cursor:cell}
.feat tbody tr:hover td:not(.rn){background:#F7FAF8}
.feat tbody tr.on td:nth-child(2){outline:2px solid var(--sheet);outline-offset:-2px}
.feat tbody tr.on .rn{background:#D7EEDF;color:var(--sheet);font-weight:700}

/* tier comparison table */
.tiers-scroll{overflow-x:auto;border:1.5px solid var(--ink);border-radius:12px;background:var(--white)}
table.tiers{width:100%;min-width:680px;border-collapse:collapse;table-layout:fixed;font-size:15px}
.tiers th,.tiers td{padding:16px 20px;border-bottom:1px solid var(--grid);text-align:center;vertical-align:middle}
.tiers tbody tr:last-child th,.tiers tbody tr:last-child td{border-bottom:0}
.tiers td+td,.tiers th+th,.tiers th+td{border-left:1px solid var(--grid)}
.tiers .tier-label,.tiers tbody th{width:24%;text-align:left;font-weight:700;color:var(--ink);background:#F6F8FA}
.tiers .tier-label{font:400 22px var(--display);vertical-align:bottom}
.tiers thead th{padding:24px 20px 22px;border-bottom:1.5px solid var(--ink);font-weight:400}
.tiers thead th>span{display:block}
.tiers .lv{font:700 13px/1 var(--body);color:var(--muted)}
.tiers .tn{font:400 26px/1.3 var(--display);margin:8px 0 6px;color:var(--ink)}
.tiers .tp{font:400 48px/1 var(--display);color:var(--ink);margin-bottom:18px}
.tiers .tp small{font-size:24px;vertical-align:.6em;margin-right:2px}
.tiers td{color:var(--muted)}
.tiers td small{display:block;font-size:13px;margin-top:2px;color:var(--muted)}
.tiers .pick{background:#FFF8E3}
.tiers thead th.pick{background:var(--signal);box-shadow:inset 0 4px 0 var(--ink)}
.tiers thead th.pick .lv{color:var(--ink)}
.tiers thead th.pick .btn-go{background:var(--white)}
.tiers .inf{color:var(--ink);font-weight:700}
.yes,.no{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;font-size:14px;font-weight:700}
.yes{background:#D7EEDF;color:var(--sheet)}
.no{background:#EEF0F2;color:#9AA3AD}
.plan-buy{margin:18px 0 0;color:var(--muted)}
.plan-buy a{color:var(--ink);font-weight:700}

/* steps */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:0;padding:0;counter-reset:s;border:1.5px solid var(--ink);border-radius:10px;background:var(--white);overflow:hidden}
.steps li{list-style:none;padding:28px 26px 30px;border-right:1px solid var(--grid)}
.steps li:last-child{border-right:0}
.steps li::before{counter-increment:s;content:counter(s);display:block;font:400 44px/1 var(--display);color:var(--signal-deep);margin-bottom:14px}
.steps h3{font-size:24px;margin-bottom:8px}
.steps p{margin:0;color:var(--muted)}
.steps kbd{font:13px var(--body);border:1px solid var(--ink);border-bottom-width:3px;border-radius:5px;padding:0 6px;background:var(--paper);color:var(--ink)}

/* faq */
.faq{max-width:780px}
.faq details{border-bottom:1px solid var(--grid)}
.faq summary{cursor:pointer;list-style:none;padding:20px 36px 20px 0;font-weight:700;font-size:17px;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:4px;top:14px;font:400 28px var(--display);color:var(--muted)}
.faq details[open] summary::after{content:"−"}
.faq details p{margin:0 0 22px;color:var(--muted);max-width:40em}

/* closing band */
.closing{background:var(--ink);color:var(--paper);padding:72px 0}
.closing .wrap{display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap}
.closing h2{color:var(--white)}
.closing p{margin:10px 0 0;color:#AEB8C3}

footer{padding:28px 0 40px;font-size:14px;color:var(--muted)}
footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
footer a{color:var(--ink)}

/* ---------- download page ---------- */
.dl-hero{padding:64px 0 72px}
.dl-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:48px;align-items:start}
.file{border:1.5px solid var(--ink);border-radius:12px;background:var(--white);overflow:hidden}
.file-head{display:flex;align-items:center;gap:18px;padding:24px 24px 20px;border-bottom:1px solid var(--grid)}
.file-head img{width:56px;height:56px}
.file-name{font-weight:700;font-size:19px;word-break:break-all}
.file-meta{color:var(--muted);font-size:14px}
.file dl{display:grid;grid-template-columns:auto 1fr;margin:0;font-size:15px}
.file dt,.file dd{margin:0;padding:12px 24px;border-bottom:1px solid var(--grid)}
.file dt{color:var(--muted);padding-right:0}
.file-act{padding:22px 24px 24px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.file-act .btn-go{flex:1 1 220px}
.alt{font-size:14px;color:var(--muted)}
.side h2{font-size:28px;margin-bottom:14px}
.side ol{padding-left:1.3em;margin:0 0 28px}
.side li{margin-bottom:10px}
.side li::marker{font-family:var(--display);color:var(--signal-deep)}
.box{border:1.5px solid var(--ink);border-radius:10px;padding:18px 20px;background:var(--white);margin-bottom:16px}
.box h3{font-size:20px;margin-bottom:6px}
.box p{margin:0;color:var(--muted);font-size:15px}
.box p+p{margin-top:8px}
.copy{font:inherit;border:0;background:none;padding:0;color:var(--ink);text-decoration:underline dotted;cursor:copy}
.log{max-width:780px}
.log h3{font-size:24px;margin:36px 0 4px}
.log h3:first-of-type{margin-top:0}
.log time{color:var(--muted);font-size:14px}
.log ul{margin:12px 0 0;padding-left:1.2em;color:var(--muted)}
.log li{margin-bottom:8px}
.log li b{color:var(--ink)}
.log article+article{margin-top:44px}
.log article h3{margin-top:0}
.log h4{font:700 15px/1.4 var(--body);color:var(--ink);margin:20px 0 0}
.log h4+ul{margin-top:8px}
.log ul ul{margin:6px 0 0;font-size:15px}
.log p{margin:10px 0 0;color:var(--muted)}
.log code{font-size:.9em;background:var(--white);border:1px solid var(--grid);border-radius:4px;padding:0 4px}
.log-src{margin:-28px 0 32px;font-size:14px;color:var(--muted)}
.log-src a{color:var(--ink)}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .hero-grid,.dl-grid{grid-template-columns:1fr;gap:40px}
  .hero{padding:48px 0 64px}
  .steps{grid-template-columns:1fr}
  .steps li{border-right:0;border-bottom:1px solid var(--grid)}
  .steps li:last-child{border-bottom:0}
}
@media (max-width:560px){
  .tiers th,.tiers td{padding:12px 12px}
  .tiers .tier-label,.tiers tbody th{position:sticky;left:0;z-index:1;width:110px}
  .tiers .tp{font-size:38px}
  .bar nav a.hide-sm{display:none}
  .cap{min-width:52px;height:50px;font-size:21px;padding:0 12px}
  .desk{aspect-ratio:4/3.4}
  .w-sheet{width:86%}
  .w-video{width:72%}
  .sec{padding:64px 0}
  .feat td:nth-child(2){white-space:normal}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;scroll-behavior:auto!important}
}
