:root{
  --bg:#ffffff; --soft:#f5f6f8; --line:#e6e8ee; --ink:#0f1222; --ink2:#3a4057; --muted:#6b7189; --card:#ffffff; --navbg:#ffffffd9; --link:#4a5cff; --warnbg:#fff6e5; --warnline:#ffe2a8;
  --mg:linear-gradient(135deg,#ff3d6e,#7a5cff); --wu:linear-gradient(135deg,#2a86ff,#0757d8);
  --radius:18px; --font:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Text","Segoe UI","Inter",Roboto,Helvetica,Arial,sans-serif;
}
[data-theme=dark]{
  --bg:#0b0d14; --soft:#11141e; --line:#232838; --ink:#eef0f7; --ink2:#b9bfd3; --muted:#868da6; --card:#141826; --navbg:#0b0d14d9; --link:#8f9bff; --warnbg:#2a2210; --warnline:#5a4720;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px}
body{margin:0;background:var(--bg);transition:background .25s,color .25s;color:var(--ink);font:16px/1.6 var(--font);-webkit-font-smoothing:antialiased}
a{color:inherit}
img{max-width:100%;display:block}
svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.in{max-width:1140px;margin:0 auto;padding:0 28px}

/* nav */
.nav{position:sticky;top:0;z-index:20;background:var(--navbg);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid var(--line)}
.nav .in{display:flex;align-items:center;gap:28px;height:64px}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px;text-decoration:none;letter-spacing:-.01em}
.mark{width:34px;height:34px;border-radius:50%}
.nav nav{display:flex;gap:22px;margin-left:auto}
.nav nav a{text-decoration:none;color:var(--ink2);font-size:14.5px;font-weight:500}
.nav nav a:hover{color:var(--ink)}
.lang{display:flex;padding:3px;border-radius:10px;background:var(--soft);border:1px solid var(--line)}
.lang button{border:0;background:none;font:600 12px var(--font);color:var(--muted);padding:5px 9px;border-radius:7px;cursor:pointer}
.lang button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px #0f122214}

/* hero */
.hero{text-align:center;padding:96px 28px 72px}
.hero-logo{width:96px;height:96px;margin:0 auto 22px;border-radius:50%;box-shadow:0 18px 40px #0f122233}
.fl{display:flex;align-items:center;gap:10px}.fl img{width:22px;height:22px;border-radius:50%}
.kicker{display:inline-block;margin:0 0 18px;padding:6px 14px;border-radius:999px;background:var(--soft);border:1px solid var(--line);font-size:13px;font-weight:600;color:var(--ink2)}
.hero h1{margin:0;font-size:clamp(40px,6.2vw,72px);line-height:1.04;letter-spacing:-.035em;font-weight:800}
.lead{max-width:600px;margin:22px auto 0;font-size:19px;color:var(--muted)}
.apps{display:flex;justify-content:center;gap:14px;margin-top:38px;flex-wrap:wrap}
.app-chip{display:flex;align-items:center;gap:12px;padding:10px 20px 10px 10px;border-radius:16px;border:1px solid var(--line);text-decoration:none;background:var(--card);box-shadow:0 1px 2px #0f12220d;transition:.2s}
.app-chip:hover{transform:translateY(-2px);box-shadow:0 12px 30px #0f122214}
.app-chip img{width:44px;height:44px;border-radius:11px}
.app-chip b{display:block;font-size:15px} .app-chip small{color:var(--muted);font-size:13px}

/* products */
.product{padding:84px 0;border-top:1px solid var(--line)}
.product.alt{background:var(--soft)}
.grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:64px;align-items:center}
.grid.rev .copy{order:2}
.ptitle{display:flex;align-items:center;gap:16px}
.ptitle img{width:64px;height:64px;border-radius:16px;box-shadow:0 10px 26px #0f12221f}
.ptitle h2{margin:0;font-size:38px;letter-spacing:-.025em;line-height:1.1}
.ver{font-size:13px;color:var(--muted);font-weight:500}
.pitch{font-size:19px;color:var(--ink2);margin:20px 0 22px}
.feats{list-style:none;padding:0;margin:0 0 28px;display:grid;gap:9px}
.feats li{position:relative;padding-left:28px;color:var(--ink2)}
.feats li::before{content:"";position:absolute;left:0;top:5px;width:18px;height:18px;border-radius:50%;background:#e9f8f1 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2318a36b' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12 4 4 8-8'/%3E%3C/svg%3E") center/12px no-repeat}
.feats b{color:var(--ink);font-weight:650}
.shot{margin:0;border-radius:20px;overflow:hidden;box-shadow:0 30px 70px #0f122233,0 0 0 1px #0f122214;background:#0b0d14}
.fine{font-size:13px;color:var(--muted);margin:16px 0 0}

/* download buttons */
.dl{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
.btn{display:inline-flex;align-items:center;gap:12px;height:56px;padding:0 26px 0 22px;border-radius:14px;color:#fff;text-decoration:none;font-weight:700;font-size:16.5px;transition:.2s;border:0}
.btn small{display:block;font-weight:500;font-size:12.5px;opacity:.85;margin-top:-2px}
.btn span{line-height:1.25}
.btn.mg{background:var(--mg);box-shadow:0 12px 30px #ff3d6e40}
.btn.wu{background:var(--wu);box-shadow:0 12px 30px #2a86ff40}
.btn:hover{transform:translateY(-2px);filter:brightness(1.05)}
.others{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:14px;color:var(--muted)}
.others a{color:var(--ink2);font-weight:600;text-decoration:none;border-bottom:1px solid var(--line)}
.others a:hover{border-color:var(--ink2)}
.na{font-size:14px;color:var(--muted);padding:10px 14px;border-radius:12px;background:var(--warnbg);border:1px solid var(--warnline)}

/* help */
.help,.faq{padding-top:84px;padding-bottom:20px}
.help h2,.faq h2{font-size:38px;letter-spacing:-.025em;margin:0}
.sub{color:var(--muted);max-width:640px;font-size:17px}
.cards{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;margin-top:28px}
.card{border:1px solid var(--line);border-radius:var(--radius);padding:24px 26px;background:var(--card)}
.card h3{display:flex;align-items:center;gap:10px;margin:0 0 6px;font-size:20px}
.card ol{margin:10px 0 0;padding-left:20px;color:var(--ink2);display:grid;gap:8px}
.code{display:flex;align-items:center;gap:10px;margin-top:14px;padding:6px 6px 6px 16px;border-radius:12px;background:#0f1222;color:#e6e9f5}
.code code{flex:1;font:14px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-x:auto;white-space:nowrap}
.copybtn{border:0;border-radius:9px;padding:8px 12px;background:#ffffff1a;color:#fff;font:600 13px var(--font);cursor:pointer}
.copybtn:hover{background:#ffffff2b}

/* faq */
.faq{padding-bottom:96px}
details{border-bottom:1px solid var(--line);padding:18px 0}
details:first-of-type{margin-top:18px;border-top:1px solid var(--line)}
summary{cursor:pointer;font-weight:650;font-size:17px;list-style:none;display:flex;justify-content:space-between;gap:20px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-weight:400;font-size:24px;line-height:1;color:var(--muted);transition:.2s}
details[open] summary::after{transform:rotate(45deg)}
details p{margin:10px 0 0;color:var(--ink2);max-width:760px}
details a,.legal a{color:var(--link)}

.foot{border-top:1px solid var(--line);padding:26px 0;font-size:14px;color:var(--muted)}
.foot .in{display:flex;gap:20px;align-items:center}
.foot .sp{flex:1}
.foot a{text-decoration:none} .foot a:hover{color:var(--ink)}

/* legal pages */
.legal{max-width:760px;margin:0 auto;padding:60px 28px 90px}
.legal h1{font-size:40px;letter-spacing:-.03em;margin:0 0 24px}
.legal h2{font-size:20px;margin:30px 0 8px}
.legal p,.legal li{color:var(--ink2)}
.todo{background:var(--warnbg);border:1px solid var(--warnline);border-radius:8px;padding:1px 6px}

@media (max-width:900px){
  .grid{grid-template-columns:minmax(0,1fr);gap:36px}
  .grid.rev .copy{order:0}
  .cards{grid-template-columns:minmax(0,1fr)}
  .nav nav{display:none}
  .lang{margin-left:auto}
  .hero{padding:64px 16px 48px}
  .in{padding:0 16px}
  .product{padding:56px 0}
}
@media (max-width:520px){
  .btn{width:100%;justify-content:center}
  .dl{align-items:stretch}
  .ptitle h2{font-size:30px}
}

/* theme toggle: a small switch with sun and moon */
.theme{position:relative;width:60px;height:32px;border-radius:999px;border:1px solid var(--line);background:var(--soft);cursor:pointer;flex:none;padding:0;transition:background .3s,border-color .3s}
.theme svg{position:absolute;top:7px;width:16px;height:16px;transition:opacity .3s,color .3s}
.theme .sun{left:8px;color:#f5a623}
.theme .moon{right:8px;color:var(--muted)}
.theme::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--card);box-shadow:0 2px 6px #0f122233;transition:transform .3s cubic-bezier(.4,.2,.2,1)}
.theme .sun,.theme .moon{z-index:1}
.theme::after{z-index:0}
[data-theme=dark] .theme{background:#1a1f30;border-color:#2b3147}
[data-theme=dark] .theme::after{transform:translateX(28px);background:#2b3147}
[data-theme=dark] .theme .moon{color:#c9d1ff}
[data-theme=dark] .theme .sun{color:var(--muted)}
.theme:focus-visible{outline:2px solid #7a5cff;outline-offset:2px}
[data-theme=dark] .hero-logo,[data-theme=dark] .mark,[data-theme=dark] .fl img{box-shadow:0 0 0 2px #ffffff26}
[data-theme=dark] .shot{box-shadow:0 30px 70px #0008,0 0 0 1px #ffffff14}
[data-theme=dark] .feats li::before{background-color:#123326}
[data-theme=dark] .app-chip:hover{box-shadow:0 12px 30px #0006}

/* changelog: timeline */
.changelog{padding-top:84px}
.changelog h2{font-size:38px;letter-spacing:-.025em;margin:0}
.cl-tabs{display:inline-flex;gap:4px;padding:4px;border-radius:12px;background:var(--soft);border:1px solid var(--line);margin:18px 0 30px;flex-wrap:wrap}
.cl-tabs button{border:0;background:none;padding:7px 14px;border-radius:8px;font:600 14px var(--font);color:var(--muted);cursor:pointer}
.cl-tabs button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px #0f122214}
.cl-list{position:relative;display:grid;gap:22px}
.cl-list::before{content:"";position:absolute;left:150px;top:10px;bottom:10px;width:2px;background:linear-gradient(var(--line),var(--line) 80%,transparent)}
.tl{display:grid;grid-template-columns:128px 44px minmax(0,1fr);align-items:start}
.tl-when{text-align:right;padding-top:18px;color:var(--muted);font-size:14px;font-weight:500}
.tl-dot{position:relative;justify-self:center;margin-top:20px;width:14px;height:14px;border-radius:50%;background:var(--bg);border:3px solid var(--line);z-index:1}
.tl.mediagrab .tl-dot{border-color:#c04bd6}
.tl.uploader .tl-dot{border-color:#2a86ff}
.tl.latest .tl-dot{width:18px;height:18px;margin-top:18px;border:0;background:var(--mg);box-shadow:0 0 0 5px #ff3d6e22}
.tl.uploader.latest .tl-dot{background:var(--wu);box-shadow:0 0 0 5px #2a86ff22}
.tl-card{border:1px solid var(--line);border-radius:18px;background:var(--card);padding:18px 22px 20px;transition:transform .2s,box-shadow .2s}
.tl-card:hover{transform:translateY(-2px);box-shadow:0 14px 34px #0f122214}
.tl.latest .tl-card{background:linear-gradient(var(--card),var(--card)) padding-box,linear-gradient(135deg,#ff3d6e66,#7a5cff66) border-box;border:1px solid transparent}
.tl.uploader.latest .tl-card{background:linear-gradient(var(--card),var(--card)) padding-box,linear-gradient(135deg,#2a86ff66,#0757d866) border-box}
.tl-card header{display:flex;align-items:center;gap:12px}
.tl-card header img{width:38px;height:38px;border-radius:10px}
.tl-app{display:block;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.tl-card header b{font-size:20px;letter-spacing:-.01em}
.tl-latest{margin-left:auto;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;color:#fff;background:var(--mg)}
.tl.uploader .tl-latest{background:var(--wu)}
.tl-card ul{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:9px}
.tl-card li{display:flex;gap:10px;align-items:baseline;color:var(--ink2)}
.tg{flex:none;font-size:11px;font-weight:700;letter-spacing:.04em;padding:2px 8px;border-radius:6px;min-width:88px;text-align:center}
.tg.new{background:#e9f8f1;color:#138a5b}
.tg.imp{background:#eaf1ff;color:#2457d6}
.tg.fix{background:#fff1e6;color:#c25a12}
[data-theme=dark] .tg.new{background:#123326;color:#4fd69c}
[data-theme=dark] .tg.imp{background:#162447;color:#8fb2ff}
[data-theme=dark] .tg.fix{background:#3a2412;color:#ffb27a}
.tl-more{justify-self:start;margin-left:172px;border:1px solid var(--line);background:var(--card);color:var(--ink2);font:600 14px var(--font);padding:10px 16px;border-radius:12px;cursor:pointer}
.tl-more:hover{color:var(--ink);border-color:var(--muted)}
@media (max-width:700px){
  .cl-list::before{left:7px}
  .tl{grid-template-columns:16px minmax(0,1fr);column-gap:14px}
  .tl-when{grid-column:2;text-align:left;padding:0 0 6px}
  .tl-dot{grid-column:1;grid-row:1 / span 2;margin-top:4px}
  .tl.latest .tl-dot{margin-top:2px}
  .tl-card{grid-column:2}
  .tl-more{margin-left:30px}
  .tg{min-width:0}
}

/* projects */
.projects{padding-top:20px;padding-bottom:84px}
.projects h2{font-size:38px;letter-spacing:-.025em;margin:0}
.pj-tabs{display:inline-flex;gap:4px;padding:4px;border-radius:12px;background:var(--soft);border:1px solid var(--line);margin:18px 0 26px;flex-wrap:wrap}
.pj-tabs button{border:0;background:none;padding:7px 14px;border-radius:8px;font:600 14px var(--font);color:var(--muted);cursor:pointer}
.pj-tabs button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 3px #0f122214}
.pj-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.pj{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--card);text-decoration:none;color:inherit;transition:transform .2s,box-shadow .2s,border-color .2s}
.pj:hover{transform:translateY(-4px);box-shadow:0 18px 40px #0f12221f;border-color:transparent}
[data-theme=dark] .pj:hover{box-shadow:0 18px 40px #0008}
.pj-img{position:relative;aspect-ratio:16/10;background:#0b0d14;overflow:hidden}
.pj-img img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.pj:hover .pj-img img{transform:scale(1.04)}
.pj-kind{position:absolute;left:12px;top:12px;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;background:#ffffffe6;color:#0f1222;backdrop-filter:blur(6px)}
.pj-body{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}
.pj-body h3{margin:0;font-size:19px;letter-spacing:-.01em}
.pj-body p{margin:6px 0 14px;color:var(--ink2);font-size:15px;flex:1}
.pj-foot{display:flex;align-items:center;gap:10px;justify-content:space-between;flex-wrap:wrap}
.pj-tags{display:flex;gap:6px;flex-wrap:wrap}
.pj-tags span{font-size:12px;font-weight:600;color:var(--muted);padding:3px 8px;border-radius:6px;background:var(--soft);border:1px solid var(--line)}
.pj-go{font-size:14px;font-weight:650;color:var(--ink)}
.pj.app .pj-go{background:var(--mg);-webkit-background-clip:text;background-clip:text;color:transparent}
@media (max-width:1000px){.pj-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.pj-grid{grid-template-columns:minmax(0,1fr)}}
