/* PatchVault design system (t54u). Vanilla CSS. */
:root{--bg:#07090E;--card:rgba(17,24,39,.7);--line:rgba(255,255,255,.08);--txt:#E5E7EB;--mut:#94A3B8;--em:#10B981;--cy:#22D3EE;--red:#F43F5E;--amb:#F59E0B;--mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;--sans:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
html{scroll-behavior:smooth;scroll-padding-top:76px}
body.pv{margin:0!important;max-width:none!important;padding:0!important;background:var(--bg)!important;color:var(--txt)!important;font:16px/1.6 var(--sans)!important;-webkit-font-smoothing:antialiased;position:relative;overflow-x:hidden}
body.pv:before{content:"";position:absolute;inset:0 0 auto 0;height:900px;background:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(16,185,129,.15),transparent);pointer-events:none;z-index:0}
body.pv:after{content:"";position:fixed;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:linear-gradient(#000,transparent 85%);mask-image:linear-gradient(#000,transparent 85%);pointer-events:none;z-index:0}
body.pv>*{position:relative;z-index:1}
body.pv a{color:#6EE7B7}
body.pv h1,body.pv h2,body.pv h3{font-family:var(--sans);letter-spacing:-.03em;color:#F8FAFC;line-height:1.15}
body.pv code,body.pv pre,body.pv kbd{font-family:var(--mono)}
.pv-w{max-width:1160px;margin:0 auto;padding:0 20px}
/* nav */
.pv-nav{position:sticky;top:0;z-index:50!important;background:rgba(7,9,14,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.pv-nav .pv-w{display:flex;align-items:center;gap:22px;height:62px}
.pv-logo{display:flex;align-items:center;gap:9px;font-weight:800;font-size:17px;letter-spacing:-.02em;color:#F8FAFC!important;text-decoration:none}
.pv-links{display:flex;gap:20px;margin-left:8px}.pv-links a{color:var(--mut)!important;text-decoration:none;font-size:14px;font-weight:500}.pv-links a:hover{color:#F8FAFC!important}
.pv-pill{margin-left:auto;font:500 12px var(--mono);color:#A7F3D0;border:1px solid rgba(16,185,129,.35);background:rgba(16,185,129,.08);padding:6px 11px;border-radius:999px;white-space:nowrap}
@media(max-width:860px){.pv-links{display:none}.pv-pill{font-size:10.5px;padding:5px 8px}}
@media(max-width:420px){.pv-pill{display:none}}
/* buttons */
.pv-btn{display:inline-flex;align-items:center;gap:8px;font:600 15px var(--sans);padding:12px 18px;border-radius:12px;text-decoration:none!important;border:1px solid var(--line);color:#F8FAFC!important;background:rgba(255,255,255,.04);cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s}
.pv-btn:hover{transform:translateY(-1px);border-color:rgba(34,211,238,.5)}
.pv-btn.pri{background:linear-gradient(135deg,#10B981,#059669);border-color:transparent;color:#03140D!important;box-shadow:0 0 0 1px rgba(16,185,129,.4),0 8px 30px -8px rgba(16,185,129,.6)}
.pv-btn.pri:hover{box-shadow:0 0 0 1px rgba(16,185,129,.7),0 10px 36px -6px rgba(16,185,129,.8)}
/* bento */
.pv-card{background:var(--card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:16px;transition:transform .2s,border-color .2s,box-shadow .2s}
.pv-card:hover{transform:translateY(-3px);border-color:rgba(16,185,129,.45);box-shadow:0 0 0 1px rgba(34,211,238,.15),0 18px 50px -20px rgba(16,185,129,.45)}
/* hero */
.pv-hero{display:grid;grid-template-columns:1fr 1.08fr;gap:44px;align-items:center;padding:72px 0 56px}
@media(max-width:980px){.pv-hero{grid-template-columns:1fr;padding-top:44px}}
.pv-eyebrow{display:inline-block;font:500 12px var(--mono);color:#6EE7B7;border:1px solid var(--line);background:rgba(255,255,255,.03);border-radius:999px;padding:5px 12px;margin-bottom:18px}
.pv-h1{font-size:clamp(36px,5.2vw,60px);font-weight:800;margin:0 0 18px;background:linear-gradient(180deg,#fff 30%,#A7F3D0 70%,#22D3EE);-webkit-background-clip:text;background-clip:text;color:transparent!important}
.pv-sub{color:var(--mut);font-size:18px;max-width:560px;margin:0 0 22px}
.pv-trust{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 26px}.pv-trust span{font:500 12.5px var(--mono);color:#CBD5E1;border:1px solid var(--line);border-radius:8px;padding:5px 10px;background:rgba(255,255,255,.03)}
.pv-trust b{color:var(--em)}.pv-ctas{display:flex;gap:12px;flex-wrap:wrap}
/* mac window */
.pv-win{border-radius:14px;border:1px solid var(--line);background:rgba(10,13,20,.92);box-shadow:0 30px 80px -30px rgba(0,0,0,.8),0 0 0 1px rgba(16,185,129,.08);overflow:hidden}
.pv-bar{display:flex;align-items:center;gap:7px;padding:10px 12px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.02)}
.pv-dot{width:11px;height:11px;border-radius:50%}.pv-dot.r{background:#FF5F57}.pv-dot.y{background:#FEBC2E}.pv-dot.g{background:#28C840}
.pv-ttl{margin-left:8px;font:500 12px var(--mono);color:var(--mut)}
.pv-tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line);background:rgba(255,255,255,.015)}.pv-tabs::-webkit-scrollbar{display:none}
.pv-tab{font:500 12px var(--mono);color:var(--mut);background:none;border:0;border-bottom:2px solid transparent;padding:9px 13px;cursor:pointer;white-space:nowrap}
.pv-tab[aria-selected=true]{color:#F8FAFC;border-bottom-color:var(--em);background:rgba(16,185,129,.06)}
.pv-diff{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);font:12px/1.6 var(--mono)}
.pv-diff>div{min-width:0;overflow:hidden}.pv-diff>div+div{border-left:1px solid var(--line)}
.pv-dh{font:600 11px var(--mono);letter-spacing:.04em;padding:7px 10px;color:var(--mut);border-bottom:1px solid var(--line)}
.pv-ln{display:block;white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;padding:0 8px 0 2.6em;text-indent:-2.6em;min-height:1.6em;font-size:12px}.pv-ln i{display:inline-block;width:2.6em;padding-right:.6em;box-sizing:border-box;text-indent:0;text-align:right;color:#475569;font-style:normal;user-select:none}
.pv-ln.del{background:rgba(244,63,94,.13);box-shadow:inset 3px 0 #F43F5E}.pv-ln.add{background:rgba(16,185,129,.14);box-shadow:inset 3px 0 #10B981}.pv-ln.todo{background:rgba(245,158,11,.10);box-shadow:inset 3px 0 #F59E0B}
.pv-term{font:12px/1.6 var(--mono);color:#CBD5E1;background:#05070B;border-top:1px solid var(--line);padding:11px 13px;white-space:pre-wrap;word-break:break-word;max-height:210px;overflow:auto}
.pv-term .c{color:#FB7185}.pv-term .h{color:#FDBA74}.pv-term .m{color:#67E8F9}.pv-term .ok{color:#6EE7B7}.pv-term .p{color:#64748B}
@media(max-width:640px){.pv-diff{grid-template-columns:1fr}.pv-diff>div+div{border-left:0;border-top:1px solid var(--line)}}
/* sections */
.pv-sec{padding:56px 0}.pv-sec h2{font-size:clamp(28px,3.6vw,40px);margin:0 0 10px}.pv-lead{color:var(--mut);margin:0 0 28px;max-width:680px}
.pv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:18px}
@media(max-width:400px){.pv-grid{grid-template-columns:1fr}}
.pv-prod{display:flex;flex-direction:column;gap:12px;padding:22px}
.pv-ph{display:flex;align-items:center;gap:12px}.pv-ico{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:rgba(16,185,129,.1);border:1px solid rgba(16,185,129,.25);flex:none}
.pv-ph h3{margin:0;font-size:18px}.pv-ph h3 a{color:#F8FAFC!important;text-decoration:none}
.pv-tagrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pv-cat{font:500 11px var(--mono);color:#67E8F9;border:1px solid rgba(34,211,238,.3);background:rgba(34,211,238,.07);padding:3px 8px;border-radius:6px}
.pv-price{font:700 12px var(--mono);color:#03140D;background:#6EE7B7;padding:3px 9px;border-radius:999px}
.pv-prod p{margin:0;color:var(--mut);font-size:14.5px;flex:1}
.pv-cmd{display:flex;align-items:center;gap:8px;background:#05070B;border:1px solid var(--line);border-radius:10px;padding:6px 6px 6px 11px;min-width:0}
.pv-cmd code{flex:1;min-width:0;overflow-x:auto;white-space:nowrap;scrollbar-width:none;font-size:12px;color:#A7F3D0;background:none!important;padding:0!important}.pv-cmd code::-webkit-scrollbar{display:none}
.pv-cmd .s{color:#475569}
.pv-copy{font:600 11.5px var(--mono);border:1px solid var(--line);background:rgba(255,255,255,.06);color:#E2E8F0;border-radius:7px;padding:6px 9px;cursor:pointer;white-space:nowrap;transition:background .2s,color .2s}
.pv-copy.ok{background:#10B981;color:#03140D;border-color:#10B981}
.pv-chips{display:flex;gap:6px;flex-wrap:wrap}.pv-chips span{font:500 11.5px var(--mono);color:#CBD5E1;border:1px dashed rgba(255,255,255,.15);border-radius:8px;padding:6px 9px}
.pv-act{display:flex;gap:8px;flex-wrap:wrap}.pv-act .pv-btn{font-size:13.5px;padding:10px 13px;flex:1;justify-content:center}
/* file tree */
.pv-tree{display:grid;grid-template-columns:1.1fr 1fr;gap:18px}@media(max-width:860px){.pv-tree{grid-template-columns:1fr}}
.pv-tree pre{margin:0;padding:22px;font:13.5px/1.9 var(--mono);color:#CBD5E1;white-space:pre;overflow-x:auto}.pv-tree pre b{color:#6EE7B7;font-weight:600}.pv-tree pre em{color:#64748B;font-style:normal}
.pv-feat{padding:20px}.pv-feat h3{margin:0 0 6px;font-size:16px}.pv-feat p{margin:0;color:var(--mut);font-size:14px}
.pv-feats{display:grid;gap:12px}
/* faq */
.pv-faq details{padding:16px 20px;margin-bottom:10px}.pv-faq summary{cursor:pointer;font-weight:600;color:#F8FAFC;list-style:none}.pv-faq summary::-webkit-details-marker{display:none}.pv-faq summary:after{content:"+";float:right;color:var(--em)}
.pv-faq details[open] summary:after{content:"–"}.pv-faq p{color:var(--mut);margin:10px 0 0;font-size:15px}
.pv-foot{border-top:1px solid var(--line);padding:30px 0 50px;color:#64748B;font-size:14px}.pv-foot a{color:#94A3B8!important;margin-right:16px;text-decoration:none}
/* IDE sandbox */
.pv-ide{margin:26px 0 30px;border-radius:14px;border:1px solid var(--line);background:#0A0D14;overflow:hidden;box-shadow:0 30px 80px -40px rgba(16,185,129,.35)}
.pv-ide .pv-bar{gap:10px;flex-wrap:wrap}
.pv-ide .pv-tabs{flex:1;border:0;background:none;min-width:0}
.pv-run{font:700 13px var(--mono);color:#03140D;background:#10B981;border:0;border-radius:9px;padding:9px 14px;cursor:pointer;box-shadow:0 0 0 1px rgba(16,185,129,.5),0 0 24px rgba(16,185,129,.55);animation:pvglow 2.4s ease-in-out infinite;white-space:nowrap}
.pv-run:disabled{opacity:.6;animation:none}
@keyframes pvglow{50%{box-shadow:0 0 0 1px rgba(16,185,129,.8),0 0 36px rgba(16,185,129,.85)}}
.pv-sevbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:9px 12px;border-bottom:1px solid var(--line);font:500 12px var(--mono);color:var(--mut);background:rgba(255,255,255,.015)}
.pv-sev{padding:2px 8px;border-radius:6px;font-weight:700}.pv-sev.c{background:rgba(244,63,94,.15);color:#FB7185}.pv-sev.h{background:rgba(249,115,22,.15);color:#FDBA74}.pv-sev.m{background:rgba(34,211,238,.12);color:#67E8F9}.pv-sev.a{background:rgba(16,185,129,.14);color:#6EE7B7}
.pv-prog{height:2px;background:transparent}.pv-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,#22D3EE,#10B981);transition:width .05s}
.pv-split{display:grid;grid-template-columns:1fr 1fr;min-height:320px}.pv-split>div{min-width:0;display:flex;flex-direction:column}.pv-split>div+div{border-left:1px solid var(--line)}
.pv-pane{flex:1;overflow:auto;max-height:440px;font:12.5px/1.65 var(--mono);padding:6px 0}
.pv-ide textarea{flex:1;width:100%;box-sizing:border-box;min-height:300px;max-height:440px;background:transparent!important;color:#E2E8F0!important;border:0!important;outline:0;resize:vertical;padding:10px 12px!important;font:12.5px/1.65 var(--mono)!important;height:auto!important}
.pv-empty{color:#475569;padding:18px;font:12.5px var(--mono)}
@media(max-width:760px){.pv-split{grid-template-columns:1fr}.pv-split>div+div{border-left:0;border-top:1px solid var(--line)}}
.pv-finds{margin:0;padding:10px 14px 4px;list-style:none;border-top:1px solid var(--line);font:12.5px/1.5 var(--mono);max-height:200px;overflow:auto}.pv-finds li{margin:0 0 7px;color:#CBD5E1}.pv-finds small{color:var(--mut)}
.pv-conv{display:flex;flex-wrap:wrap;gap:14px;align-items:center;padding:14px;border-top:1px solid var(--line);background:linear-gradient(90deg,rgba(16,185,129,.09),rgba(34,211,238,.05))}
.pv-kpi{min-width:120px}.pv-kpi b{display:block;font:800 22px var(--sans);letter-spacing:-.02em;color:#F8FAFC}.pv-kpi span{font:500 11px var(--mono);color:var(--mut)}
.pv-conv .pv-btns{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.pv-note{font:11.5px var(--mono);color:#64748B;padding:0 14px 12px;margin:0}
.pv-ide .pv-cmd{margin:0 14px 14px}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* dark overrides for legacy product-page content */
body.pv .ds,body.pv .ds-hero{background:transparent!important;color:var(--txt)!important;border:0!important;box-shadow:none!important}
body.pv .ds-wrap{max-width:1160px!important;margin:0 auto!important;padding:28px 20px!important}
body.pv>section,body.pv>h2,body.pv>p,body.pv>div:not(.ds):not(.pv-nav):not(.pv-w),body.pv>table,body.pv>ul,body.pv>footer{max-width:1120px;margin-left:auto!important;margin-right:auto!important;padding-left:20px;padding-right:20px;box-sizing:border-box}
body.pv .ds-h1{font:800 clamp(32px,4.6vw,52px)/1.08 var(--sans)!important;letter-spacing:-.03em!important;color:#F8FAFC!important;background:none!important}
body.pv .ds-eyebrow{font:500 12px var(--mono)!important;color:#6EE7B7!important;background:rgba(16,185,129,.08)!important;border:1px solid rgba(16,185,129,.3)!important;border-radius:999px!important;padding:4px 11px!important;box-shadow:none!important}
body.pv .ds-lead,body.pv .thorp-hook,body.pv p{color:#CBD5E1}
body.pv .ds-badge{background:rgba(255,255,255,.03)!important;color:#CBD5E1!important;border:1px solid var(--line)!important;box-shadow:none!important;border-radius:8px!important;font:500 12.5px var(--mono)!important}
body.pv .ds-badge b{color:var(--em)!important}
body.pv .ds-card,body.pv .ds-grid2>div,body.pv .ds-not,body.pv .thorp-cli,body.pv .cta,body.pv .ds-price,body.pv .ds-ba figure,body.pv #faq,body.pv #methodology,body.pv #compare,body.pv #key-takeaways{background:var(--card)!important;color:var(--txt)!important;border:1px solid var(--line)!important;border-radius:16px!important;box-shadow:none!important}
body.pv .ds-card,body.pv .ds-grid2>div,body.pv .thorp-cli,body.pv .ds-price,body.pv #faq,body.pv #methodology,body.pv #compare{padding:20px!important;margin:18px auto!important}
body.pv .ds-ba figure{padding:14px!important}body.pv .ds-ba figcaption{color:var(--mut)!important;font:500 12px var(--mono)!important}
body.pv .ds-ba .before pre{box-shadow:inset 3px 0 #F43F5E}body.pv .ds-ba .after pre{box-shadow:inset 3px 0 #10B981}
body.pv pre{background:#05070B!important;color:#E2E8F0!important;border:1px solid var(--line)!important;border-radius:10px!important}
body.pv code{background:rgba(255,255,255,.06)!important;color:#A7F3D0!important;border-radius:5px}
body.pv .ds-price strong{color:#6EE7B7!important}body.pv .ds-price s{color:#64748B!important}body.pv small{color:#94A3B8!important}
body.pv .ds-cta,body.pv .cta a,body.pv .tsb-buy{background:linear-gradient(135deg,#10B981,#059669)!important;color:#03140D!important;border:0!important;box-shadow:0 8px 28px -10px rgba(16,185,129,.7)!important;border-radius:11px!important;font-weight:700!important;text-decoration:none!important}
body.pv .ds-table{border-collapse:collapse;width:100%;background:var(--card);border-radius:12px;overflow:hidden}body.pv .ds-table td,body.pv .ds-table th{border:1px solid var(--line)!important;padding:9px 12px;color:#CBD5E1;background:transparent!important}
body.pv .ds-table .y{color:#6EE7B7!important}body.pv .ds-table .n{color:#FB7185!important}
body.pv .thorp-cli button,body.pv button:not(.pv-run):not(.pv-tab):not(.pv-copy){background:rgba(255,255,255,.06)!important;color:#E2E8F0!important;border:1px solid var(--line)!important;border-radius:9px!important}
body.pv textarea,body.pv select,body.pv input{background:#05070B!important;color:#E2E8F0!important;border:1px solid var(--line)!important;border-radius:10px!important}
body.pv .f{background:rgba(255,255,255,.03)!important;color:#CBD5E1}
body.pv footer#thorp-foot{border-top:1px solid var(--line);padding-top:20px;padding-bottom:40px}
body.pv .thorp-guarantee{color:#CBD5E1!important}

/* t55u mobile + overflow */
html,body.pv{overflow-x:hidden;max-width:100%}
body.pv pre{white-space:pre-wrap!important;word-break:break-word;overflow-wrap:anywhere}
.pv-split{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
@media(max-width:768px){.pv-hero{grid-template-columns:1fr!important;gap:28px;padding:32px 0 28px}.pv-diff,.pv-split{grid-template-columns:1fr!important}
.pv-diff>div+div,.pv-split>div+div{border-left:0!important;border-top:1px solid var(--line)}.pv-grid,.pv-tree{grid-template-columns:1fr!important}
.pv-w{padding:0 14px}.pv-h1{font-size:34px}.pv-sub{font-size:16px}.pv-act{flex-direction:column}.pv-conv .pv-btns{margin-left:0;width:100%}.pv-conv .pv-btn{width:100%;justify-content:center;white-space:normal;text-align:center}
.pv-ide .pv-bar{flex-wrap:wrap}.pv-run{width:100%}.pv-pane,.pv-ide textarea{max-height:340px}body.pv table{display:block;overflow-x:auto;max-width:100%}body.pv img,body.pv svg,body.pv video{max-width:100%;height:auto}
body.pv>section,body.pv>div:not(.ds):not(.pv-nav):not(.pv-w),body.pv>h2,body.pv>p,body.pv>ul,body.pv>footer{padding-left:14px!important;padding-right:14px!important}}
/* t55b: real 375px overflow fixes */
@media(max-width:768px){
.pv-grid,.pv-tree,.pv-split,.pv-diff,.pv-hero{grid-template-columns:minmax(0,1fr)!important}
.pv-card,.pv-prod,.pv-grid>*,.pv-split>*,.pv-diff>*,.pv-hero>*,.pv-tree>*{min-width:0;max-width:100%}
body.pv a,body.pv code,body.pv .f,body.pv .tree em{overflow-wrap:anywhere;word-break:break-word}
body.pv code{white-space:pre-wrap}
body.pv .tree{white-space:pre-wrap}
body.pv .f{min-width:0;max-width:100%}
body.pv img,body.pv svg,body.pv video,body.pv iframe,body.pv textarea,body.pv input,body.pv select{max-width:100%}
body.pv *{min-width:0}
}
@media(max-width:768px){body.pv table{display:block;max-width:100%;overflow-x:auto}}
