:root{--bg:#F2F5F9;--ink:#0E1A2B;--mute:#4D5B70;--line:#D8DFEA;--brand:#2F3FD4;--brand-d:#2230A8;--mint:#19C3A0;--card:#fff}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 "IBM Plex Sans",system-ui,sans-serif}
h1,h2,h3{font-family:"Bricolage Grotesque",system-ui,sans-serif;line-height:1.15;margin:0 0 .6em;letter-spacing:-.01em}
a{color:var(--brand)}a:focus-visible,button:focus-visible,select:focus-visible,textarea:focus-visible,input:focus-visible{outline:3px solid var(--mint);outline-offset:2px}
.top{position:sticky;top:0;z-index:5;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(16px,4vw,40px);height:60px}
.top a{color:#fff;text-decoration:none}.logo{font:700 21px "Bricolage Grotesque",sans-serif}.logo b{color:var(--mint)}
.top nav{display:flex;gap:22px;font-size:15px}.top nav a:hover{color:var(--mint)}
.app{display:grid;grid-template-columns:1fr 330px;gap:20px;padding:20px clamp(16px,4vw,40px);min-height:calc(100vh - 60px);align-content:start}
.editor,.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px}
.editor h1{font-size:clamp(26px,3.4vw,38px);margin-bottom:.2em}.sub{margin:0 0 16px;color:var(--mute)}
.bar{display:flex;justify-content:space-between;font-size:14px;font-weight:600;margin-bottom:6px}#wc.over{color:#C0392B}
textarea{width:100%;height:clamp(240px,42vh,460px);resize:vertical;border:1px solid var(--line);border-radius:10px;padding:16px;font:inherit;background:#FBFCFE;color:var(--ink)}
.row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:center}
.chip,.ghost{font:inherit;font-size:14px;border:1px solid var(--line);background:#fff;border-radius:99px;padding:6px 14px;cursor:pointer;color:var(--ink)}.chip:hover,.ghost:hover{border-color:var(--brand);color:var(--brand)}.ghost{margin-left:auto;border-radius:8px}
.panel h2{font-size:20px}.panel label{display:block;font-size:14px;font-weight:600;margin:14px 0 5px}
select{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;font:inherit;background:#fff}
input[type=range]{width:100%;accent-color:var(--brand)}
#go{width:100%;margin-top:20px;padding:15px;border:0;border-radius:10px;background:var(--brand);color:#fff;font:600 18px "Bricolage Grotesque",sans-serif;cursor:pointer}
#go:hover{background:var(--brand-d)}#go:disabled{background:#98A2B8;cursor:not-allowed}
#st{min-height:24px;margin:10px 0 0;font-size:14px;color:var(--mute)}#st.err{color:#C0392B}
.dock{grid-column:1/-1;position:sticky;bottom:12px;background:var(--ink);border-radius:14px;padding:14px 18px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.dock[hidden]{display:none}.dock audio{flex:1;min-width:220px;height:40px}
.dock a{background:var(--mint);color:var(--ink);font-weight:700;text-decoration:none;padding:10px 18px;border-radius:8px}
main.wrap,.info{max-width:820px;margin:0 auto;padding:40px clamp(16px,4vw,24px)}
.info{max-width:1000px}.info section{margin-bottom:44px}.info h2,.wrap h2{font-size:28px;margin-top:1.4em}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:0;list-style:none;counter-reset:s}
.steps li{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;counter-increment:s}
.steps li:before{content:counter(s);display:block;font:700 28px "Bricolage Grotesque";color:var(--brand)}
.faq details{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 18px;margin-bottom:10px}.faq summary{font-weight:600;cursor:pointer}
.wrap h1{font-size:clamp(30px,4.5vw,46px)}.wrap p,.wrap li{max-width:68ch}.meta{color:var(--mute);font-size:15px}
.post{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:22px;margin:18px 0}.post h2{margin:0 0 .3em}
form.c label{display:block;font-weight:600;margin-top:14px}form.c input,form.c textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;font:inherit}
form.c textarea{height:150px}form.c button{margin-top:16px;padding:12px 24px;border:0;border-radius:8px;background:var(--brand);color:#fff;font:600 16px inherit;cursor:pointer}
footer{background:var(--ink);color:#B9C4D6;padding:32px clamp(16px,4vw,40px);font-size:15px}footer a{color:#fff;margin-right:18px}footer p{margin:10px 0 0}
@media(max-width:860px){.app{grid-template-columns:1fr}.steps{grid-template-columns:1fr}.top nav{gap:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
