/* Allie UI: logo palette (indigo #6246EA to violet #8B3CE0, darkened for text), system fonts only (strict CSP), AA contrast in light and dark. */
:root{color-scheme:light dark;
--ink:#1a1535;--mute:#4b4668;--line:#e4def7;--line-s:#7f77a8;--soft:#f3f0ff;--bg:#faf8ff;--card:#fff;
--brand:#5a3fe0;--brand-d:#4527b8;--brand-soft:#f3f0ff;--on-brand:#fff;--ring:#4527b8;--brand-line:#d4c9fb;
--grad:linear-gradient(135deg,#5a3fe0,#6d28d9);--grad-h:linear-gradient(135deg,#4527b8,#5b21b6);--grad-soft:linear-gradient(135deg,#ece8ff,#f6ecff);
--crit:#991b1b;--crit-bg:#fee2e2;--ser:#9a3412;--ser-bg:#ffedd5;--mod:#854d0e;--mod-bg:#fef3c7;--min:#3b3659;--min-bg:#e8e4f5;
--ok:#166534;--ok-bg:#dcfce7;--ok-line:#86efac;--err:#991b1b;--err-bg:#fef2f2;--err-line:#fca5a5;
--code-bg:#1a1535;--code-ink:#ece8ff;--head-bg:rgba(255,255,255,.88);
--shadow:0 1px 2px rgba(69,39,184,.05),0 8px 24px -8px rgba(69,39,184,.14);
--r:16px;--r-s:10px;
--font:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
@media (prefers-color-scheme:dark){:root{
--ink:#f3f0ff;--mute:#b4aed3;--line:#2f2858;--line-s:#8379bd;--soft:#1f1a3d;--bg:#0e0b1f;--card:#17132f;
--brand:#a592ff;--brand-d:#c9bdff;--brand-soft:#231c4f;--on-brand:#120d2b;--ring:#c9bdff;--brand-line:#443a8c;
--grad:linear-gradient(135deg,#a592ff,#c9a2ff);--grad-h:linear-gradient(135deg,#c9bdff,#dcc0ff);--grad-soft:linear-gradient(135deg,#231c4f,#2e1b52);
--crit:#fecaca;--crit-bg:#4c1519;--ser:#fed7aa;--ser-bg:#48200c;--mod:#fde68a;--mod-bg:#40300a;--min:#e4def7;--min-bg:#3a3265;
--ok:#bbf7d0;--ok-bg:#12331f;--ok-line:#1f6b3a;--err:#fecaca;--err-bg:#3b1217;--err-line:#7f2a31;
--code-bg:#080614;--code-ink:#ece8ff;--head-bg:rgba(14,11,31,.88);--shadow:0 1px 2px rgba(0,0,0,.35),0 8px 24px -8px rgba(0,0,0,.6)}}
*{box-sizing:border-box}
html{scroll-padding-top:90px;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.6;font-size:1rem;min-height:100vh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased}
main{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:3rem 1.5rem 4.5rem}
h1,h2,h3{line-height:1.2;margin:0 0 .6rem;letter-spacing:-.015em;font-weight:700}
h1{font-size:clamp(2.1rem,5.2vw,3.4rem);letter-spacing:-.03em;font-weight:800}
h2{font-size:1.45rem}h3{font-size:1.1rem}
p{margin:0 0 1rem}
a{color:var(--brand);text-underline-offset:.2em}a:hover{color:var(--brand-d)}
:focus-visible{outline:3px solid var(--ring);outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:.5rem;top:-4rem;background:var(--ink);color:var(--bg);padding:.7rem 1.1rem;border-radius:var(--r-s);z-index:100;text-decoration:none;font-weight:600}
.skip:focus{top:.5rem}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* header / footer */
.site-header{background:var(--head-bg);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.site-header .in{max-width:1040px;margin:0 auto;padding:.6rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.logo{display:flex;align-items:center;gap:.6rem;font-weight:800;font-size:1.25rem;letter-spacing:-.02em;color:var(--ink);text-decoration:none;min-height:44px}
.logo:hover{color:var(--ink)}
.logo-img{display:block;height:40px;width:auto}
.foot-logo{display:block;height:28px;width:auto;margin-bottom:1rem}
.nav{display:flex;gap:.25rem;align-items:center;flex-wrap:wrap}
.nav a,.nav button{color:var(--mute);text-decoration:none;padding:.5rem .9rem;border-radius:999px;font:inherit;font-weight:600;font-size:.95rem;background:none;border:0;cursor:pointer;min-height:44px;display:inline-flex;align-items:center}
.nav a:hover,.nav button:hover{background:var(--soft);color:var(--ink)}
.nav a[aria-current=page]{color:var(--brand-d);background:var(--brand-soft)}
.nav .cta{background:var(--grad);color:var(--on-brand)}.nav .cta:hover{background:var(--grad-h);color:var(--on-brand)}
.site-footer{border-top:1px solid var(--line);color:var(--mute);font-size:.875rem;background:var(--card)}
.site-footer .in{max-width:1040px;margin:0 auto;padding:2rem 1.5rem}
.site-footer p{margin:0 0 .6rem;max-width:46rem}
.site-footer a{color:var(--mute)}.site-footer a:hover{color:var(--ink)}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:44px;padding:.65rem 1.3rem;border-radius:12px;border:1.5px solid var(--brand);background:var(--grad);color:var(--on-brand);font:inherit;font-weight:650;font-size:.97rem;cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s,box-shadow .15s,transform .1s;box-shadow:0 1px 2px rgba(15,23,42,.12)}
.btn:hover{background:var(--grad-h);border-color:var(--brand-d);color:var(--on-brand)}
.btn:active{transform:translateY(1px)}
.btn.secondary{background:var(--card);background-image:none;color:var(--brand-d);border-color:var(--line-s);box-shadow:none}
.btn.secondary:hover{background:var(--brand-soft);background-image:none;border-color:var(--brand);color:var(--brand-d)}
.btn.small{padding:.35rem .95rem;font-size:.9rem;border-radius:10px}
.btn[disabled],.btn[aria-disabled=true]{opacity:.65;cursor:not-allowed}
/* cards */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.75rem;box-shadow:var(--shadow)}
/* hero */
.hero{text-align:center;padding:3.5rem 1rem 2.5rem;position:relative;border-radius:28px;background:radial-gradient(60% 70% at 50% 0%,var(--brand-soft),transparent 75%)}
.hero h1 em{font-style:normal;color:var(--brand-d)}
.hero::before{content:"";position:absolute;inset:0 0 auto 0;height:5px;border-radius:28px 28px 0 0;background:var(--grad);opacity:.9}
.hero h1{max-width:20ch;margin:0 auto 1.25rem}
.eyebrow{display:inline-block;margin:0 0 1.25rem;padding:.3rem .9rem;border-radius:999px;background:var(--grad-soft);color:var(--brand-d);border:1px solid var(--brand-line);font-size:.85rem;font-weight:650}
.hero p.lead{font-size:1.2rem;color:var(--mute);max-width:40rem;margin:0 auto 2.25rem;line-height:1.6}
.scan-form{display:flex;gap:.6rem;max-width:44rem;margin:0 auto;flex-wrap:wrap;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:1rem;box-shadow:var(--shadow)}
.scan-form .field{flex:1 1 18rem}
.scan-form .btn{align-self:flex-end;min-height:52px;padding-inline:1.75rem;font-size:1.02rem}
.scan-form input{min-height:52px;font-size:1.05rem}
label{font-weight:600;display:block;margin-bottom:.4rem;font-size:.93rem}
input[type=text],input[type=email],input[type=password],input[type=url]{width:100%;min-height:48px;padding:.65rem .95rem;font:inherit;border:1.5px solid var(--line-s);border-radius:12px;background:var(--card);color:var(--ink);transition:border-color .15s,box-shadow .15s}
input::placeholder{color:var(--mute);opacity:.85}
input:hover{border-color:var(--mute)}
input:focus{outline:3px solid var(--ring);outline-offset:1px;border-color:var(--ring)}
input[aria-invalid=true]{border-color:var(--err)}
.hint{color:var(--mute);font-size:.92rem;margin-top:.75rem}
.err{background:var(--err-bg);color:var(--err);border:1px solid var(--err-line);border-radius:var(--r-s);padding:.8rem 1rem;margin:1rem 0;font-weight:600}
.err[hidden],[hidden]{display:none}
.notice{background:var(--brand-soft);border:1px solid var(--brand-line);border-radius:var(--r-s);padding:.8rem 1rem;margin:1rem 0}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem;margin-top:4rem}
.grid3 .card{padding:1.5rem;box-shadow:none}
.grid3 h2,.grid3 h3{display:flex;gap:.5rem;align-items:center;font-size:1.1rem}
.grid3 p{color:var(--mute);margin:0}
/* progress */
.steps{list-style:none;padding:0;margin:1.5rem 0;display:grid;gap:.6rem;max-width:36rem}
.steps li{display:flex;align-items:center;gap:.75rem;padding:.85rem 1.1rem;border-radius:12px;background:var(--soft);color:var(--mute);font-weight:600}
.steps li .dot{width:24px;height:24px;border-radius:50%;border:2px solid var(--line-s);flex:none;display:grid;place-items:center;font-size:.8rem}
.steps li.done{color:var(--ok);background:var(--ok-bg)}.steps li.done .dot{background:var(--ok);border-color:var(--ok);color:var(--ok-bg)}
.steps li.now{color:var(--brand-d);background:var(--brand-soft)}.steps li.now .dot{border-color:var(--brand);border-top-color:transparent;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* results */
.bar{position:sticky;top:0;z-index:20;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.25rem;display:flex;gap:.75rem;align-items:center;justify-content:space-between;flex-wrap:wrap;box-shadow:var(--shadow);margin:1.5rem 0}
.bar .sum{font-weight:750;font-size:1.25rem;letter-spacing:-.01em}.bar .acts{display:flex;gap:.5rem;flex-wrap:wrap}
.meta{color:var(--mute);margin:0 0 .25rem;overflow-wrap:anywhere}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin:1.25rem 0 2rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.1rem 1rem;text-align:left;box-shadow:var(--shadow);border-top:4px solid var(--line-s)}
.stat:nth-child(1){border-top-color:var(--crit)}.stat:nth-child(2){border-top-color:var(--ser)}.stat:nth-child(3){border-top-color:var(--mod)}.stat:nth-child(4){border-top-color:var(--min)}
.stat b{display:block;font-size:2.25rem;line-height:1.1;letter-spacing:-.03em}.stat span{color:var(--mute);font-size:.9rem;font-weight:600}
.badge{display:inline-block;padding:.2rem .7rem;border-radius:999px;font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border:1px solid currentColor}
.b-critical{background:var(--crit-bg);color:var(--crit)}.b-serious{background:var(--ser-bg);color:var(--ser)}.b-moderate{background:var(--mod-bg);color:var(--mod)}.b-minor{background:var(--min-bg);color:var(--min)}
.group{margin:2.5rem 0}
.group h2{display:flex;gap:.75rem;align-items:center;margin-bottom:1rem}
.issue{background:var(--card);border:1px solid var(--line);border-radius:var(--r);margin:.75rem 0;overflow:hidden;box-shadow:var(--shadow)}
.issue summary{cursor:pointer;padding:1rem 1.25rem;font-weight:650;list-style:none;display:flex;gap:.75rem;align-items:flex-start;min-height:44px}
.issue summary:hover{background:var(--soft)}
.issue summary::-webkit-details-marker{display:none}
.issue summary::before{content:"\25B8";color:var(--brand-d);flex:none;transition:transform .15s}
.issue[open] summary::before{transform:rotate(90deg)}
.issue summary small{display:block;font-weight:500;color:var(--mute);margin-top:.15rem}
.issue .body{padding:0 1.25rem 1.25rem;border-top:1px solid var(--line)}
.issue h3{font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin:1.25rem 0 .4rem;font-weight:700}
pre,code{font-family:var(--mono)}
pre{background:var(--code-bg);color:var(--code-ink);padding:1rem 1.15rem;border-radius:12px;overflow:auto;margin:0;font-size:.85rem;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid var(--line)}
.codewrap{position:relative}
.codewrap .btn{margin-top:.5rem}
.fix{background:var(--ok-bg);border:1px solid var(--ok-line);color:var(--ok);padding:.85rem 1.1rem;border-radius:12px}
table{width:100%;border-collapse:collapse;font-size:.95rem}
th,td{text-align:left;padding:.65rem .75rem;border-bottom:1px solid var(--line)}
th{color:var(--mute);font-size:.82rem;font-weight:650}
.tablewrap{overflow-x:auto}
.s-Fail{color:var(--err);font-weight:700}.s-Pass{color:var(--ok);font-weight:700}.s-Needs{color:var(--mod);font-weight:700}
details.plain{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:.5rem 1.25rem;margin:2rem 0;box-shadow:var(--shadow)}
details.plain summary{cursor:pointer;font-weight:650;min-height:44px;display:flex;align-items:center}
/* pricing */
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.25rem;margin:2.5rem 0}
.plan{display:flex;flex-direction:column}
.plan{position:relative;overflow:hidden}.plan::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--grad)}
.plan.cur{border:2px solid var(--brand)}
.plan h2{font-size:1.15rem;color:var(--mute);font-weight:650}
.plan .price{font-size:2.6rem;font-weight:800;letter-spacing:-.03em;line-height:1.1}.plan .price small{font-size:.95rem;color:var(--mute);font-weight:500;letter-spacing:0}
.plan ul{padding-left:1.1rem;margin:1.25rem 0 1.5rem;flex:1;color:var(--mute)}.plan li{margin-bottom:.4rem}
.plan .btn{width:100%}
.plan .soon{margin:0;font-weight:650}.plan .soon-list{margin:.4rem 0 1.5rem;flex:1}.plan ul.tight{flex:0;margin-bottom:1rem}
.lock{border:2px solid var(--brand);background:linear-gradient(var(--card),var(--card)) padding-box,var(--grad-soft)}.lock .acts{margin-top:1rem}
/* forms */
.formcard{max-width:27rem;margin:2.5rem auto;padding:2.25rem}
.formcard h1{font-size:1.85rem;margin-bottom:1.5rem}
.formcard .row{margin-bottom:1.15rem}
.fielderr{color:var(--err);font-weight:600;font-size:.9rem;margin-top:.3rem}
.fielderr:empty{display:none}
.hist td a{overflow-wrap:anywhere}
.banner{background:var(--brand-soft);border-bottom:1px solid var(--brand-line);color:var(--ink)}
.banner .in{max-width:1040px;margin:0 auto;padding:.6rem 1.5rem;display:flex;gap:.75rem;align-items:center;justify-content:space-between;flex-wrap:wrap}
h2.h3x{font-size:1.15rem}
.t-s{font-size:clamp(1.7rem,3.5vw,2.1rem)}.t-m{font-size:clamp(2rem,4vw,2.6rem)}.tc{text-align:center}.mt{margin-top:2.5rem}.pad{padding:4rem 0}
.formcard .btn+.btn{margin-top:.5rem;width:100%}
.usebar{width:100%;height:12px;accent-color:var(--brand);margin-bottom:1rem}
.full{width:100%}
[tabindex="-1"]:focus{outline:none}
@media (max-width:600px){
main{padding:1.75rem 1rem 3rem}
.site-header .in,.site-footer .in,.banner .in{padding-left:1rem;padding-right:1rem}
.hero{padding-top:1.5rem}.hero p.lead{font-size:1.08rem}
.scan-form{padding:.75rem;border-radius:16px}.scan-form .btn{width:100%}
.nav a,.nav button{padding:.5rem .7rem}
.bar{}.bar .acts{width:100%}.bar .acts .btn{flex:1 1 auto;padding:.35rem .7rem;font-size:.9rem}.bar .acts .btn:first-child{flex:1 1 100%}
.grid3{margin-top:2.5rem}.formcard{padding:1.5rem;margin:1rem auto}
.stat b{font-size:1.9rem}}
/* dashboard */
.scan-card,.usage-card{margin:1.25rem 0}
.scan-card .scan-form.flat{border:0;box-shadow:none;padding:0;margin:0;max-width:none;background:transparent}
.scan-card .err{margin-bottom:0}
.usage-card .plan-line{font-size:1.05rem}
.usage-card .acts{display:flex;gap:.6rem;flex-wrap:wrap;margin:1rem 0 0}
.err.inline{display:block;margin:.5rem 0}
.hist td.url{overflow-wrap:anywhere;max-width:22rem}
.hist .sev{display:block;color:var(--mute);font-size:.82rem}
.hist td{vertical-align:top}
@media (max-width:600px){.hist{font-size:.9rem}.hist th,.hist td{padding:.5rem .4rem}}
/* trust / marketing sections */
.hero-xl{padding:4.5rem 1.25rem 3rem}
.hero-xl h1{font-size:clamp(2.4rem,6.2vw,4.1rem);max-width:19ch;letter-spacing:-.035em;line-height:1.08}
.hero-xl p.lead{font-size:1.3rem;max-width:44rem;margin-bottom:1rem}
.hero .aud{max-width:40rem;margin:0 auto 2.25rem;color:var(--mute);font-size:1.02rem}
.scan-form.big{max-width:50rem;padding:1.15rem;border:2px solid var(--brand-line);box-shadow:0 18px 40px -18px rgba(69,39,184,.35)}
.scan-form.big input{min-height:58px;font-size:1.15rem}.scan-form.big .btn{min-height:58px;font-size:1.08rem;padding-inline:2rem}
.trust{list-style:none;margin:2.25rem auto 0;padding:1.1rem 0 0;display:flex;flex-wrap:wrap;gap:.6rem 1.5rem;justify-content:center;max-width:56rem;border-top:1px solid var(--line)}
.trust li{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:.95rem;color:var(--ink)}
.trust li::before{content:"\2713";display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--brand-soft);color:var(--brand-d);border:1px solid var(--brand-line);font-size:.8rem;font-weight:800;flex:none}
.sec{margin-top:5rem}
.sec-h{font-size:clamp(1.6rem,3.4vw,2.1rem);text-align:center;margin-bottom:1.75rem;letter-spacing:-.02em}
.sec-h.left{text-align:left}
.sec .grid3{margin-top:0}
.cards-ol{list-style:none;padding:0;margin:0}
.card .num{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--grad);color:var(--on-brand);font-weight:800;margin-bottom:.9rem}
.card h3{font-size:1.15rem}.sec .card p{color:var(--mute);margin:0}
.sample{display:grid;grid-template-columns:1fr minmax(260px,420px);gap:2.5rem;align-items:center}
.sample p{color:var(--mute)}
.sample-fig{margin:0}
.sample-fig img{display:block;width:100%;height:auto;border-radius:12px;border:1px solid var(--line-s);box-shadow:var(--shadow);background:#fff}
.sample-fig figcaption{color:var(--mute);font-size:.88rem;margin-top:.6rem;text-align:center}
.callout{background:var(--brand-soft);border:1px solid var(--brand-line);border-left:6px solid var(--brand);border-radius:var(--r);padding:1.75rem 2rem}
.callout h2{font-size:1.4rem}.callout p:last-child{margin:0}
.faqs{max-width:48rem;margin:0 auto}
.faq{background:var(--card);border:1px solid var(--line);border-radius:var(--r-s);margin:.6rem 0;box-shadow:var(--shadow)}
.faq summary{cursor:pointer;padding:1rem 1.25rem;font-weight:650;min-height:44px;list-style:none;display:flex;gap:.75rem;align-items:flex-start}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"+";color:var(--brand-d);font-weight:800;width:1ch;flex:none}
.faq[open] summary::before{content:"\2212"}
.faq summary:hover{background:var(--soft);border-radius:var(--r-s)}
.faq-a{padding:0 1.25rem 1rem 2.6rem;color:var(--mute)}.faq-a p{margin:0}
.cta-band{text-align:center;background:var(--grad);color:var(--on-brand);border-radius:28px;padding:3rem 1.5rem}
.cta-band h2{font-size:clamp(1.6rem,3.6vw,2.2rem)}.cta-band p{margin-bottom:1.5rem}
.cta-band a:not(.btn){color:inherit}
.cta-acts{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}
.cta-band .btn{background:var(--card);background-image:none;color:var(--brand-d);border-color:var(--card)}
.cta-band .btn:hover{background:var(--brand-soft);color:var(--brand-d)}
.cta-band .btn.secondary{background:transparent;color:var(--on-brand);border-color:var(--on-brand)}
.cta-band .btn.secondary:hover{background:rgba(255,255,255,.18);color:var(--on-brand)}
.foot-nav{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;margin:1rem 0}
.foot-nav a{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
.prose{max-width:46rem;margin:0 auto}
.prose h2{margin-top:2.25rem;font-size:1.4rem}
.prose ul{padding-left:1.25rem}.prose li{margin:.4rem 0}
.prose .lead2{font-size:1.2rem;color:var(--mute);margin-bottom:1.5rem}
.prose code{background:var(--soft);padding:.1rem .4rem;border-radius:6px;font-size:.9em}
.defs dt{font-weight:700;margin-top:1rem}.defs dd{margin:.2rem 0 0;color:var(--mute)}
@media (max-width:760px){.sample{grid-template-columns:1fr}.sec{margin-top:3.5rem}.hero-xl{padding-top:2rem}.hero-xl p.lead{font-size:1.1rem}.trust{justify-content:flex-start;padding-left:.25rem}.callout{padding:1.25rem}}
