:root{--bg:#f6f7fb;--card:#fff;--ink:#12142b;--mute:#5d6280;--line:#e3e6f0;--brand:#4f46e5;--brand2:#4338ca;--brandsoft:#eef0ff;--accent:#0ea5a4;--ok:#15803d;--oksoft:#e7f6ec;--warn:#b45309;--warnsoft:#fff4e0;--err:#b91c1c;--errsoft:#fdecec;--dark:#0f1230;--dark2:#1b1f4b;--r:14px;--sh:0 1px 2px rgba(18,20,43,.06),0 8px 24px rgba(18,20,43,.06)}
@media(prefers-color-scheme:dark){:root{--bg:#0d0f24;--card:#151836;--ink:#eceefb;--mute:#a1a6c9;--line:#272b52;--brand:#818cf8;--brand2:#a5b4fc;--brandsoft:#1d2152;--accent:#2dd4bf;--ok:#4ade80;--oksoft:#10301f;--warn:#fbbf24;--warnsoft:#3a2b0b;--err:#f87171;--errsoft:#3b1414;--sh:0 8px 24px rgba(0,0,0,.35)}}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3{line-height:1.2;margin:0 0 .5em;letter-spacing:-.015em}h1{font-size:clamp(2rem,5vw,3.3rem)}h2{font-size:clamp(1.5rem,3.2vw,2.1rem)}h3{font-size:1.1rem}
p{margin:0 0 1em}.mute{color:var(--mute)}.small{font-size:.86rem}.c{text-align:center}.hidden{display:none!important}
.wrap{max-width:1120px;margin:0 auto;padding:0 20px}.narrow{max-width:760px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4em;border:1px solid transparent;border-radius:10px;padding:.7em 1.2em;font:inherit;font-weight:600;cursor:pointer;background:var(--brand);color:#fff;text-decoration:none!important;transition:transform .08s,background .15s}
.btn:hover{background:var(--brand2)}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.55;cursor:not-allowed}
.btn.alt{background:var(--card);color:var(--ink);border-color:var(--line)}.btn.alt:hover{background:var(--brandsoft)}
.btn.ghost{background:transparent;color:var(--brand)}.btn.danger{background:var(--err);color:#fff}.btn.sm{padding:.4em .8em;font-size:.88rem;border-radius:8px}.btn.lg{padding:.9em 1.6em;font-size:1.05rem}
.btn.light{background:#fff;color:#2b2f8f}.btn.light:hover{background:#eef0ff}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.nav{position:sticky;top:0;z-index:20;background:rgba(15,18,48,.92);backdrop-filter:blur(10px);color:#fff}.nav .wrap{display:flex;align-items:center;gap:20px;height:62px}
.logo{font-weight:800;font-size:1.1rem;color:#fff;display:flex;align-items:center;gap:.5em;text-decoration:none!important}.logo i{display:inline-block;width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,#6366f1,#14b8a6)}
.nav nav{display:flex;gap:18px;margin-left:auto;align-items:center}.nav nav a{color:#cfd3f5;font-size:.95rem}.nav nav a:hover{color:#fff;text-decoration:none}
.hero{background:radial-gradient(1000px 420px at 70% -10%,#3b3fc4 0,transparent 60%),linear-gradient(180deg,var(--dark),var(--dark2));color:#fff;padding:72px 0 80px}
.hero .grid{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center}.hero p.lead{font-size:1.15rem;color:#c8cdf3;max-width:34em}
.hero .cta{display:flex;gap:12px;flex-wrap:wrap;margin:26px 0 14px}.hero .fine{color:#a9afe0;font-size:.9rem}
.hero .shot{border-radius:14px;border:1px solid rgba(255,255,255,.14);box-shadow:0 30px 60px rgba(0,0,0,.45);width:100%;height:auto}
.badge{display:inline-block;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);color:#dfe2ff;border-radius:999px;padding:.25em .9em;font-size:.85rem;margin-bottom:16px}
.trust{background:var(--card);border-bottom:1px solid var(--line)}.trust .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;padding:22px 20px}
.trust div{display:flex;gap:10px;align-items:flex-start;font-size:.92rem}.trust b{display:block}.ico{flex:none;width:36px;height:36px;border-radius:10px;background:var(--brandsoft);color:var(--brand);display:grid;place-items:center;font-size:1.1rem}
section.sec{padding:64px 0}section.alt{background:var(--card);border-block:1px solid var(--line)}.sec .head{text-align:center;max-width:640px;margin:0 auto 36px}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;box-shadow:var(--sh)}
.feat h3{display:flex;align-items:center;gap:.6em}.feat ul{margin:.4em 0 0;padding-left:1.1em;color:var(--mute);font-size:.93rem}.feat li{margin:.25em 0}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;counter-reset:s}.steps .card{position:relative;padding-top:50px}.steps .card:before{counter-increment:s;content:counter(s);position:absolute;top:14px;left:20px;width:28px;height:28px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-weight:700}
.shots{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.shots figure{margin:0}.shots img{width:100%;height:auto;border-radius:12px;border:1px solid var(--line);box-shadow:var(--sh)}.shots figcaption{font-size:.88rem;color:var(--mute);margin-top:8px}
.toggle{display:inline-flex;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:4px;margin:0 auto 28px}.toggle button{border:0;background:transparent;color:var(--mute);font:inherit;font-weight:600;padding:.5em 1.2em;border-radius:999px;cursor:pointer}.toggle button[aria-pressed=true]{background:var(--brand);color:#fff}.toggle .save{font-size:.75rem;background:var(--oksoft);color:var(--ok);border-radius:999px;padding:.1em .6em;margin-left:.4em}
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;align-items:stretch}.plan{display:flex;flex-direction:column;position:relative}.plan.pop{border:2px solid var(--brand)}.plan .tag{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--brand);color:#fff;font-size:.75rem;font-weight:700;padding:.2em .9em;border-radius:999px}
.price{font-size:2.3rem;font-weight:800;letter-spacing:-.03em}.price small{font-size:.95rem;font-weight:500;color:var(--mute)}.plan ul{list-style:none;padding:0;margin:14px 0;flex:1}.plan li{padding:.28em 0 .28em 1.5em;position:relative;font-size:.93rem}.plan li:before{content:"\2713";position:absolute;left:0;color:var(--ok);font-weight:700}
.plan details summary{cursor:pointer;color:var(--brand);font-size:.9rem;margin:6px 0}.strike{text-decoration:line-through;color:var(--mute);font-size:.95rem;margin-left:.4em}
table.t{width:100%;border-collapse:collapse;font-size:.93rem}.t th,.t td{text-align:left;padding:.6em .7em;border-bottom:1px solid var(--line);vertical-align:middle}.t th{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--mute);background:var(--bg)}.t td.n{text-align:right;font-variant-numeric:tabular-nums}.tw{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.faq details{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 18px;margin-bottom:10px}.faq summary{cursor:pointer;font-weight:600}.faq p{margin:.7em 0 0;color:var(--mute)}
.final{background:linear-gradient(135deg,#4338ca,#0f766e);color:#fff;text-align:center;padding:60px 0}.final p{color:#dfe3ff}
footer.ft{background:var(--dark);color:#aab0dc;padding:36px 0;font-size:.9rem}footer.ft .wrap{display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px}footer.ft a{color:#cfd3f5;display:block;margin:.3em 0}footer.ft b{color:#fff}
.banner{background:var(--brand);color:#fff;text-align:center;padding:9px 16px;font-size:.92rem}.banner.warn{background:var(--warn)}
.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth .side{background:linear-gradient(160deg,var(--dark),var(--dark2));color:#fff;padding:56px;display:flex;flex-direction:column;justify-content:center}.auth .side ul{padding:0;list-style:none;color:#c8cdf3}.auth .side li{margin:.6em 0;padding-left:1.6em;position:relative}.auth .side li:before{content:"\2713";position:absolute;left:0;color:#5eead4}
.auth .form{display:flex;align-items:center;justify-content:center;padding:32px}.auth .box{width:100%;max-width:400px}
label{display:block;font-weight:600;font-size:.9rem;margin:14px 0 5px}input,select,textarea{width:100%;font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.65em .8em}input:focus,select:focus,textarea:focus{outline:3px solid var(--brandsoft);border-color:var(--brand)}textarea{min-height:90px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem}
input[type=checkbox],input[type=radio]{width:auto}.code{font-size:1.6rem;letter-spacing:.5em;text-align:center;font-variant-numeric:tabular-nums}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.row>*{flex:0 0 auto}.row .grow{flex:1 1 180px}
.msg{padding:.7em 1em;border-radius:10px;margin:12px 0;font-size:.93rem}.msg.err{background:var(--errsoft);color:var(--err)}.msg.ok{background:var(--oksoft);color:var(--ok)}.msg.warn{background:var(--warnsoft);color:var(--warn)}.msg.info{background:var(--brandsoft);color:var(--brand2)}
.top{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.top .wrap{display:flex;align-items:center;gap:14px;height:60px}.top .logo{color:var(--ink)}.top nav{display:flex;gap:4px;margin-left:12px;flex-wrap:wrap}.top nav button{border:0;background:transparent;color:var(--mute);font:inherit;font-weight:600;padding:.45em .9em;border-radius:8px;cursor:pointer}.top nav button[aria-current=page]{background:var(--brandsoft);color:var(--brand)}.top .sp{flex:1}
main.page{padding:28px 0 60px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}.kpi .l{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--mute)}.kpi .v{font-size:1.8rem;font-weight:800;letter-spacing:-.02em}.kpi .s{font-size:.85rem;color:var(--mute)}
.meter{height:10px;background:var(--line);border-radius:99px;overflow:hidden;margin:8px 0}.meter i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--accent));border-radius:99px}.meter.low i{background:var(--warn)}.meter.zero i{background:var(--err)}
.pill{display:inline-block;border-radius:999px;padding:.1em .7em;font-size:.78rem;font-weight:700;background:var(--brandsoft);color:var(--brand2)}.pill.ok{background:var(--oksoft);color:var(--ok)}.pill.warn{background:var(--warnsoft);color:var(--warn)}.pill.err{background:var(--errsoft);color:var(--err)}.pill.mute{background:var(--line);color:var(--mute)}
.check{list-style:none;margin:0;padding:0}.check li{display:flex;gap:10px;align-items:center;padding:.5em 0;border-bottom:1px solid var(--line)}.check li:last-child{border:0}.check .dot{flex:none;width:22px;height:22px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;font-size:.8rem}.check .done .dot{background:var(--ok);border-color:var(--ok);color:#fff}.check .done span{color:var(--mute);text-decoration:line-through}
.opt{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:8px 0;cursor:pointer;background:var(--card)}.opt:has(input:checked){border-color:var(--brand);background:var(--brandsoft)}
.sidebar{display:grid;grid-template-columns:220px 1fr;gap:24px}.sidebar>nav{display:flex;flex-direction:column;gap:2px;position:sticky;top:76px;align-self:start}.sidebar>nav button{text-align:left;border:0;background:transparent;color:var(--ink);font:inherit;padding:.55em .8em;border-radius:8px;cursor:pointer}.sidebar>nav button:hover{background:var(--brandsoft)}.sidebar>nav button[aria-current=page]{background:var(--brand);color:#fff}.sidebar>nav .grp{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin:14px 8px 4px}
.modal{position:fixed;inset:0;background:rgba(10,12,30,.6);display:grid;place-items:center;z-index:50;padding:16px}.modal .card{max-width:640px;width:100%;max-height:90vh;overflow:auto}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:.7em 1.2em;border-radius:10px;z-index:60;box-shadow:var(--sh)}
.spin{display:inline-block;width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:sp .8s linear infinite;vertical-align:-3px}@keyframes sp{to{transform:rotate(360deg)}}
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;font-size:.93rem}.kv dt{color:var(--mute)}.kv dd{margin:0;word-break:break-word}.sechead{display:flex;align-items:center;gap:12px;margin:0 0 14px}.sechead h2{margin:0;font-size:1.3rem}.sechead .sp{flex:1}
code,.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.86em;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:.1em .4em}
.legal h2{font-size:1.25rem;margin-top:1.8em}.legal li{margin:.3em 0}
@media(max-width:900px){.hero .grid,.cards,.steps,.shots,.grid2,.grid3,.sidebar,.auth,footer.ft .wrap{grid-template-columns:1fr}.trust .wrap,.grid4{grid-template-columns:1fr 1fr}.auth .side{display:none}.sidebar>nav{position:static;flex-direction:row;flex-wrap:wrap}.nav nav a.hide-sm{display:none}.hero{padding:44px 0}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.btn.wide{width:100%}.auth .box{margin-top:12px}.h2{font-size:1.8rem;margin-top:.6em}.auth .form .logo{color:var(--ink);margin-bottom:18px}
.top-gap{margin-top:18px}.top-gap2{margin-top:32px}.pre,.pre-line{white-space:pre-wrap}.pre-line{display:block}.brk{word-break:break-all}.pad{padding:1em;text-align:left}.h1s{font-size:1.7rem;margin:0}
.meter i.w0{width:0}EOF
python3 - <<'EOF'
# meter width classes (CSP forbids inline style)
css=open('/home/claude/saas/public/style.css').read()
css=css.replace(".meter i.w0{width:0}","")
css+="".join(f".meter i.w{i}{{width:{i}%}}" for i in range(0,101))+"\n"
open('/home/claude/saas/public/style.css','w').write(css)
input.sm{max-width:90px}.checks{display:grid;grid-template-columns:repeat(2,1fr);gap:0 14px}.opt.cmp{margin:3px 0;padding:6px 10px}.t input,.t select{padding:.35em .5em;font-size:.9rem}td .row{flex-wrap:nowrap}
@media(max-width:900px){.checks{grid-template-columns:1fr}}
textarea.tall{min-height:260px}.narrow2{max-width:640px}code.big{font-size:1.05rem;letter-spacing:.05em}.top-gap2s{margin-top:12px}
.btn{white-space:nowrap}.page .h1s{margin-bottom:14px}.sechead .mute{margin:0}
.logo{white-space:nowrap}.top .wrap{flex-wrap:nowrap}.top nav{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none;min-width:0}.top nav button{white-space:nowrap}
@media(max-width:1100px){.top .hide-sm{display:none}}
@media(max-width:700px){.nav .wrap{gap:10px}.nav nav{gap:10px}.logo{font-size:.95rem}.top .wrap{gap:8px}.top .logo{font-size:0}.top .logo i{margin:0}.wrap{padding:0 14px}.hero h1{font-size:1.9rem}.btn.lg{padding:.8em 1.1em}.tw{-webkit-overflow-scrolling:touch}}
@media(max-width:700px){.nav nav a:not(.btn){display:none}.legal.sec{padding:32px 14px}}
