:root{--bg:#f6f7fb;--card:#fff;--ink:#14162b;--muted:#5b6078;--brand:#4f46e5;--brand-2:#06b6d4;--line:#e4e6f0;--ok:#0f7a3b;--warn:#9a5b00;--err:#b3261e;--soft:#eef0ff;--radius:16px;--shadow:0 6px 24px rgba(20,22,43,.07)}
@media (prefers-color-scheme:dark){:root{--bg:#0e1020;--card:#171a31;--ink:#eceefb;--muted:#a3a9c9;--line:#2a2e4d;--soft:#20244a;--ok:#4ade80;--warn:#fbbf24;--err:#f87171;--shadow:0 6px 24px rgba(0,0,0,.35)}}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
a{color:var(--brand)}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
.top{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;justify-content:space-between;height:60px}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.1rem;color:var(--ink);text-decoration:none}
.logo svg{width:30px;height:30px}
.top nav a{margin-left:22px;color:var(--muted);text-decoration:none;font-weight:600;font-size:.95rem}
.top nav a:hover{color:var(--brand)}
.hero{background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 45%,#06b6d4 100%);color:#fff;padding:64px 0 76px;position:relative;overflow:hidden}
.hero:after{content:"";position:absolute;inset:auto -10% -60% -10%;height:70%;background:radial-gradient(closest-side,rgba(255,255,255,.18),transparent);pointer-events:none}
.hero h1{font-size:clamp(2rem,5vw,3.2rem);line-height:1.1;margin:0 0 14px;letter-spacing:-.02em;max-width:18ch}
.hero p{font-size:1.15rem;max-width:56ch;margin:0 0 24px;opacity:.95}
.chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:0}
.chips li{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);padding:6px 14px;border-radius:999px;font-size:.9rem;font-weight:600}
.toolhead .chips li{background:var(--soft);border-color:var(--line);color:var(--brand)}
.btn{display:inline-block;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:10px 18px;border-radius:12px;font:inherit;font-weight:700;cursor:pointer;text-decoration:none}
.btn:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover:not(:disabled){background:#4338ca;color:#fff}
.btn.ghost{background:transparent}
.hero .btn{margin-top:22px;background:#fff;color:#3730a3;border-color:#fff}
.cat{margin:56px 0 0}
.cat h2{display:flex;align-items:center;gap:12px;font-size:1.5rem;margin:0 0 4px}
.cat h2 svg,.ic svg{width:26px;height:26px}
.cat>p{margin:0 0 18px;color:var(--muted)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.card{display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow);transition:transform .15s,border-color .15s;position:relative}
a.card:hover{transform:translateY(-3px);border-color:var(--brand)}
.card .ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--soft);color:var(--brand)}
.card h3{margin:6px 0 0;font-size:1.05rem}
.card p{margin:0;color:var(--muted);font-size:.93rem}
.card .tag{position:absolute;top:14px;right:14px;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:3px 9px;border-radius:999px;background:var(--soft);color:var(--brand)}
.card.soon{opacity:.72;box-shadow:none;border-style:dashed}
.card.soon .tag{background:transparent;border:1px solid var(--line);color:var(--muted)}
.why{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:64px 0}
.why div{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.why h3{margin:0 0 6px}.why p{margin:0;color:var(--muted)}
.crumbs{font-size:.88rem;color:var(--muted);margin:22px 0 10px}
.crumbs a{color:var(--muted)}
.toolhead h1{font-size:clamp(1.7rem,4vw,2.5rem);line-height:1.15;margin:0 0 10px;letter-spacing:-.015em}
.lead{color:var(--muted);font-size:1.08rem;max-width:70ch;margin:0 0 14px}
.tool{background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:22px;margin:24px 0}
.drop{border:2px dashed var(--line);border-radius:16px;padding:34px 16px;text-align:center;cursor:pointer;transition:.15s;background:var(--soft)}
.drop:hover,.drop.over,.drop:focus-visible{border-color:var(--brand);outline:none}
.drop svg{width:40px;height:40px;color:var(--brand)}
.drop-t{font-weight:800;font-size:1.15rem;margin:8px 0 0}.drop-s{margin:2px 0 0;color:var(--muted);font-size:.93rem}
.msg{min-height:1.4em;margin:10px 0 0;font-size:.92rem}.msg.warn{color:var(--warn)}.msg.err{color:var(--err)}
.opts{display:flex;flex-wrap:wrap;gap:14px 22px;margin:16px 0;padding:16px;border:1px solid var(--line);border-radius:14px}
.f{display:flex;flex-direction:column;gap:4px;font-size:.9rem;font-weight:600;border:0;padding:0;margin:0}
.f legend{padding:0;margin-bottom:4px}
.f input[type=number],.f select{font:inherit;padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);min-width:120px}
.f input[type=number]{width:120px}
.f input[type=color]{width:56px;height:38px;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:2px}
.f input[type=range]{width:200px;accent-color:var(--brand)}
.f label{font-weight:500}
.seg{flex-direction:row;gap:14px;align-items:center;flex-wrap:wrap}
.seg legend{width:100%}
.pre{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:4px}
.pre button{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:5px 12px;font:inherit;font-size:.85rem;font-weight:700;cursor:pointer}
.pre button:hover,.pre button.on{border-color:var(--brand);color:var(--brand);background:var(--soft)}
.hint{width:100%;margin:0;color:var(--muted);font-size:.85rem}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 14px}
.list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.row{display:grid;grid-template-columns:56px 1fr auto;gap:14px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:10px 12px;background:var(--card)}
.row img,.row .ph{width:56px;height:56px;object-fit:cover;border-radius:10px;background:var(--soft)}
.row .nm{font-weight:700;word-break:break-all}
.row .sub{font-size:.88rem;color:var(--muted)}
.ok{color:var(--ok)}.warn{color:var(--warn)}.err{color:var(--err)}
.row .go{display:flex;gap:6px;align-items:center}
.row .go button{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;width:34px;height:34px;cursor:pointer;font-size:1rem}
progress{width:100%;height:8px;accent-color:var(--brand)}
.stage{margin:16px 0;text-align:center}
.stage canvas{max-width:100%;border-radius:12px;border:1px solid var(--line);background:repeating-conic-gradient(#8883 0 25%,transparent 0 50%) 0 0/16px 16px}
.dims{color:var(--muted);font-size:.9rem;margin:6px 0 0}
.how,.faq,.related{margin:44px 0 0}
.how h2,.faq h2,.related h2{font-size:1.4rem;margin:0 0 12px}
.how ol{padding-left:22px;margin:0}.how li{margin:6px 0}
details{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin:8px 0}
summary{cursor:pointer;font-weight:700}
details p{margin:8px 0 0;color:var(--muted)}
.prose{max-width:760px;margin:30px auto}.prose h1{font-size:2rem}.prose h2{margin-top:28px}
.note{background:var(--soft);border-left:4px solid var(--brand);padding:10px 14px;border-radius:8px;font-size:.92rem}
footer{margin-top:80px;border-top:1px solid var(--line);padding:28px 0 40px;color:var(--muted);font-size:.9rem}
footer .wrap{display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between}
footer a{color:var(--muted);margin-right:16px}
@media (max-width:560px){.row{grid-template-columns:48px 1fr}.row .go{grid-column:1/-1}.hero{padding:44px 0 56px}.top nav a{margin-left:14px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.ad{margin:44px auto 0;max-width:728px;min-height:120px;text-align:center}
.ad-l{display:block;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.ad.demo div{display:grid;place-items:center;height:110px;border:2px dashed var(--line);border-radius:12px;color:var(--muted);background:var(--soft)}
