*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--py-bg);color:var(--py-text);font:400 var(--py-fs-base)/var(--py-lh) var(--py-font-sans);font-feature-settings:"cv11","ss01"}
a{color:var(--py-link);text-underline-offset:3px}a:hover{text-decoration-thickness:2px}
:focus-visible{outline:none;box-shadow:var(--py-focus);border-radius:var(--py-r-sm)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px}.skip:focus{left:16px;top:8px;z-index:99;background:var(--py-surface);padding:8px 12px}
.wrap{max-width:var(--py-max);margin:0 auto;padding:0 var(--py-s5)}.narrow{max-width:760px}
.mono,.price,time,.stamp{font-family:var(--py-font-mono);font-variant-numeric:tabular-nums}
h1,h2,h3{font-family:var(--py-font-display);letter-spacing:-.02em;line-height:var(--py-lh-tight);margin:0 0 var(--py-s3)}
h1{font-size:var(--py-fs-2xl);font-weight:750}h2{font-size:var(--py-fs-xl);font-weight:700}h3{font-size:var(--py-fs-md)}
.lede{color:var(--py-text-muted);font-size:var(--py-fs-md);max-width:60ch}
.eyebrow{font:500 var(--py-fs-sm) var(--py-font-mono);color:var(--py-text-muted);display:flex;align-items:center;gap:8px;margin:0 0 var(--py-s4)}
.live{width:8px;height:8px;border-radius:50%;background:var(--py-ok);box-shadow:0 0 0 4px var(--py-ok-bg)}
/* header */
.top{border-bottom:1px solid var(--py-border);background:color-mix(in srgb,var(--py-bg) 88%,transparent);position:sticky;top:0;z-index:20;backdrop-filter:blur(8px)}
.top__in{display:flex;align-items:center;gap:var(--py-s5);height:60px}
.wm{display:flex;align-items:center;gap:10px;color:var(--py-text);text-decoration:none;font:700 19px var(--py-font-display);letter-spacing:-.02em}.wm b{color:var(--py-accent)}
.top nav{display:flex;gap:var(--py-s5);flex:1}.top nav a{color:var(--py-text-muted);text-decoration:none;font-weight:500;font-size:var(--py-fs-sm)}
.top nav a[aria-current]{color:var(--py-text);box-shadow:inset 0 -2px 0 var(--py-accent);padding-bottom:19px;margin-bottom:-19px}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;border-radius:var(--py-r);padding:11px 18px;font:600 var(--py-fs-base) var(--py-font-sans);cursor:pointer;text-decoration:none;white-space:nowrap}
.btn--sm{padding:7px 12px;font-size:var(--py-fs-sm)}
.btn--accent{background:var(--py-accent);color:var(--py-on-accent)}.btn--accent:hover{background:var(--py-accent-hover)}
.btn--primary{background:var(--py-text);color:var(--py-bg)}.btn--ghost{border-color:var(--py-border-strong);color:var(--py-text);background:transparent}
/* chips & badges */
.vchip{--c:var(--py-v-windsurf);display:inline-flex;align-items:center;gap:6px;font:600 var(--py-fs-xs) var(--py-font-sans);letter-spacing:.02em;color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent);border:1px solid color-mix(in srgb,var(--c) 30%,transparent);padding:2px 8px;border-radius:var(--py-r-pill);white-space:nowrap}
.vchip i{width:6px;height:6px;border-radius:2px;background:var(--c)}
.vchip--cursor{--c:var(--py-v-cursor)}.vchip--anthropic{--c:var(--py-v-anthropic)}.vchip--openai{--c:var(--py-v-openai)}.vchip--github{--c:var(--py-v-github)}.vchip--cognition{--c:var(--py-v-cognition)}
.badge{display:inline-flex;align-items:center;gap:5px;font:600 var(--py-fs-xs) var(--py-font-sans);padding:2px 8px;border-radius:var(--py-r-sm);white-space:nowrap;border:1px solid}
.badge--ok{color:var(--py-ok);background:var(--py-ok-bg);border-color:color-mix(in srgb,var(--py-ok) 35%,transparent)}
.badge--warn{color:var(--py-warn);background:transparent;border-style:dashed;border-color:var(--py-warn)}
.badge--unk{color:var(--py-unk);background:var(--py-unk-bg);border-style:dotted;border-color:var(--py-unk)}
.lchip{display:inline-block;font:500 var(--py-fs-xs) var(--py-font-mono);color:var(--py-text);background:var(--py-surface-2);border:1px solid var(--py-border);padding:1px 6px;border-radius:var(--py-r-sm);margin:0 4px 4px 0;white-space:nowrap}
.lchip--na{color:var(--py-text-faint);border-style:dashed;background:none}
.src{font-size:var(--py-fs-xs);color:var(--py-link);word-break:break-all}.stamp{font-size:11px;color:var(--py-text-faint);display:block}
.empty-val{font-size:var(--py-fs-xs);color:var(--py-text-faint);font-style:italic}
/* hero */
.hero{border-bottom:1px solid var(--py-border);background:radial-gradient(900px 400px at 85% -10%,color-mix(in srgb,var(--py-accent) 10%,transparent),transparent),linear-gradient(var(--py-bg),var(--py-bg))}
.hero__in{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--py-s7);padding-top:var(--py-s8);padding-bottom:var(--py-s7);align-items:end}
.hero h1{font-size:var(--py-fs-3xl);max-width:14ch}.hero h1 em{font-style:normal;color:var(--py-accent)}
.hero__stats{display:flex;gap:var(--py-s6);margin-top:var(--py-s5);flex-wrap:wrap}.hero__stats div{display:flex;flex-direction:column}
.hero__stats b{font-size:var(--py-fs-xl);font-weight:600}.hero__stats span{font-size:var(--py-fs-xs);color:var(--py-text-muted)}
/* subscribe */
.sub{background:var(--py-surface);border:1px solid var(--py-border);border-radius:var(--py-r-lg);padding:var(--py-s5);box-shadow:var(--py-shadow-1)}
.sub__h{font-size:var(--py-fs-lg)}.sub__p{color:var(--py-text-muted);margin:0 0 var(--py-s4);font-size:var(--py-fs-sm)}
.sub__f{display:flex;gap:8px}.sub__f input{flex:1;min-width:0}
.sub__fine{font-size:var(--py-fs-xs);color:var(--py-text-faint);margin:var(--py-s2) 0 0}
.sub--hero{border-color:color-mix(in srgb,var(--py-accent) 40%,var(--py-border))}
.sub--footer{display:grid;grid-template-columns:1fr 1fr;gap:var(--py-s5);align-items:center;margin:var(--py-s7) 0}
.sticky-sub{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);display:flex;gap:16px;align-items:center;background:var(--py-surface-2);border:1px solid var(--py-border-strong);border-radius:var(--py-r-pill);padding:6px 6px 6px 18px;box-shadow:var(--py-shadow-2);font-size:var(--py-fs-sm);z-index:30;max-width:calc(100% - 24px)}
input,select,textarea{font:inherit;color:var(--py-text);background:var(--py-bg);border:1px solid var(--py-border-strong);border-radius:var(--py-r);padding:10px 12px;width:100%}
input::placeholder,textarea::placeholder{color:var(--py-text-faint)}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--py-link)}
/* board */
.board{padding-top:var(--py-s7)}.board__head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}
.asof{font:var(--py-fs-sm) var(--py-font-mono);color:var(--py-text-muted);margin:0}
.fbar{display:flex;flex-wrap:wrap;gap:var(--py-s3) var(--py-s5);align-items:center;padding:var(--py-s3) 0;margin:var(--py-s3) 0;border-top:1px solid var(--py-border);border-bottom:1px solid var(--py-border)}
.seg{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.fbar__l{font:600 11px var(--py-font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--py-text-faint);margin-right:6px}
.seg button{font:500 var(--py-fs-sm) var(--py-font-sans);color:var(--py-text-muted);background:transparent;border:1px solid var(--py-border);border-radius:var(--py-r-pill);padding:5px 12px;cursor:pointer}
.seg button[aria-pressed=true]{background:var(--py-text);color:var(--py-bg);border-color:var(--py-text)}
.sort{margin-left:auto;font-size:var(--py-fs-sm);color:var(--py-text-muted);display:flex;gap:8px;align-items:center}.sort select{width:auto;padding:5px 10px}
.legend{display:flex;flex-wrap:wrap;gap:8px 24px;font-size:var(--py-fs-xs);color:var(--py-text-muted);margin-bottom:var(--py-s4)}.legend span{display:flex;gap:8px;align-items:center}
.tablewrap{border:1px solid var(--py-border);border-radius:var(--py-r-lg);overflow:hidden;background:var(--py-surface)}
.sb{width:100%;border-collapse:collapse;font-size:var(--py-fs-sm)}
.sb thead th{background:var(--py-surface-2);text-align:left;font:600 11px var(--py-font-mono);text-transform:uppercase;letter-spacing:.07em;color:var(--py-text-muted);padding:10px 12px;border-bottom:1px solid var(--py-border)}
.th-sort{all:unset;cursor:pointer;color:var(--py-text)}
.sb td,.sb tbody th{padding:14px 12px;border-bottom:1px solid var(--py-border);vertical-align:top;text-align:left;font-weight:400}
.sb tbody tr:hover{background:var(--py-row-hover)}
.c-plan{width:17%}.c-plan .vchip{margin-bottom:6px}.plan-name{display:block;color:var(--py-text);font-weight:600;font-size:var(--py-fs-base);text-decoration:none;line-height:1.3}.plan-name:hover{text-decoration:underline}
.c-price{width:10%;white-space:nowrap}.price{font-size:22px;font-weight:600;letter-spacing:-.02em}.cur{font-size:.6em;color:var(--py-text-muted);vertical-align:.45em;margin-right:1px}
.per{font:var(--py-fs-xs) var(--py-font-mono);color:var(--py-text-faint);margin-left:2px}.price-note{display:block;font:11px/1.35 var(--py-font-mono);color:var(--py-text-muted);white-space:normal;max-width:16ch;margin-top:2px}
.price--na{color:var(--py-text-faint)}
.c-lim{width:25%}.c-mech{width:12%}.c-over{width:15%;color:var(--py-text-muted)}.c-rep{width:8%}.c-st{width:13%}.srcline{margin-top:6px}
.row--warn .c-lim,.row--warn .price{color:var(--py-text-muted)}.row--unk td,.row--unk .plan-name{color:var(--py-text-faint)}
.row--unk{background:repeating-linear-gradient(135deg,transparent 0 10px,rgba(154,163,178,.04) 10px 20px)}
.board__foot{font-size:var(--py-fs-sm);color:var(--py-text-muted)}
.latest{padding-top:var(--py-s7)}.latest__l{list-style:none;padding:0;margin:var(--py-s3) 0 0;border:1px solid var(--py-border);border-radius:var(--py-r-lg);background:var(--py-surface)}
.latest__l li{display:grid;grid-template-columns:100px 110px 1fr auto;gap:16px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--py-border);font-size:var(--py-fs-sm)}.latest__l li:last-child{border:0}
.latest__l time{color:var(--py-text-muted);font-size:var(--py-fs-xs)}
.trust{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--py-s5);padding-top:var(--py-s7)}
.trust>div{border-top:2px solid var(--py-border-strong);padding-top:var(--py-s4)}.trust p{color:var(--py-text-muted);font-size:var(--py-fs-sm)}.trust a{font-size:var(--py-fs-sm);font-weight:600}
/* footer */
.foot{border-top:1px solid var(--py-border);margin-top:var(--py-s8);padding:var(--py-s6) 0 96px;font-size:var(--py-fs-sm);color:var(--py-text-muted)}
.foot__in{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}.foot nav{display:flex;gap:20px;flex-wrap:wrap}.foot nav a{color:var(--py-text-muted)}
/* plan detail */
.crumbs{padding-top:var(--py-s5);font-size:var(--py-fs-sm);color:var(--py-text-faint)}.crumbs a{color:var(--py-text-muted)}
.pd{display:grid;grid-template-columns:1fr 340px;gap:var(--py-s7);padding-top:var(--py-s5)}.pd__title{display:flex;gap:8px;margin-bottom:var(--py-s3)}
.pd__price{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:var(--py-s4) 0 var(--py-s6)}.pd__price .price{font-size:56px}.pd__price .stamp{display:inline}
.facts{margin:0 0 var(--py-s7);border:1px solid var(--py-border);border-radius:var(--py-r-lg);background:var(--py-surface)}
.facts>div{display:grid;grid-template-columns:180px 1fr;gap:16px;padding:16px 20px;border-bottom:1px solid var(--py-border)}.facts>div:last-child{border:0}
.facts dt{font:600 11px var(--py-font-mono);text-transform:uppercase;letter-spacing:.07em;color:var(--py-text-muted);padding-top:3px}.facts dd{margin:0}.facts dd p{margin:6px 0 0;color:var(--py-text-muted);font-size:var(--py-fs-sm)}
.empty{display:flex;gap:16px;border:1px dashed var(--py-border-strong);border-radius:var(--py-r-lg);padding:var(--py-s5);margin-bottom:var(--py-s7)}
.empty__ic{font:600 28px var(--py-font-mono);color:var(--py-text-faint)}.empty p{color:var(--py-text-muted);font-size:var(--py-fs-sm)}
.metrics{display:flex;gap:24px;flex-wrap:wrap;margin:12px 0 16px}.metrics div{display:flex;flex-direction:column}.metrics span{font-size:var(--py-fs-xs);color:var(--py-text-faint)}.metrics b{font-size:var(--py-fs-lg);color:var(--py-text-faint)}
.tl{list-style:none;padding:0;margin:0;border-left:2px solid var(--py-border);margin-left:6px}.tl li{display:grid;grid-template-columns:100px 1fr;gap:12px;padding:0 0 20px 18px;position:relative}
.tl li:before{content:"";position:absolute;left:-6px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--py-bg);border:2px solid var(--py-border-strong)}
.tl time{font-size:var(--py-fs-xs);color:var(--py-text-muted);padding-top:2px}.tl p{margin:0 0 6px}
.card{background:var(--py-surface);border:1px solid var(--py-border);border-radius:var(--py-r-lg);padding:var(--py-s5);margin-bottom:var(--py-s5)}
.cmp{list-style:none;padding:0;margin:0}.cmp li{display:flex;justify-content:space-between;gap:8px;padding:10px 0;border-bottom:1px solid var(--py-border);font-size:var(--py-fs-sm)}.cmp li:last-child{border:0}
.cmp a{display:flex;flex-direction:column;gap:4px;color:var(--py-text);text-decoration:none;align-items:flex-start}
.pd__side .sub__f{flex-direction:column}
/* changes */
.page-h{padding-top:var(--py-s7)}.clist{display:grid;gap:12px}
.ce{background:var(--py-surface);border:1px solid var(--py-border);border-left:3px solid var(--py-border-strong);border-radius:var(--py-r);padding:16px 20px}
.ce__h{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.ce__h time{font-size:var(--py-fs-sm);color:var(--py-text-muted)}.ce__t{margin:10px 0 8px;font-size:var(--py-fs-md)}
.ce--diff{border-left-color:var(--py-accent)}.tag-example{font:700 11px var(--py-font-mono);letter-spacing:.06em;background:var(--py-accent);color:var(--py-on-accent);padding:2px 8px;border-radius:var(--py-r-sm)}
.diff{font:var(--py-fs-sm)/1.5 var(--py-font-mono);border:1px solid var(--py-border);border-radius:var(--py-r);overflow:hidden;margin-bottom:10px}
.diff__r{display:grid;grid-template-columns:80px 1fr 1fr;border-bottom:1px solid var(--py-border)}.diff__r:last-child{border:0}.diff__r>*{padding:8px 12px}
.diff__k{color:var(--py-text-faint)}del{background:var(--py-diff-del-bg);color:var(--py-diff-del);text-decoration:line-through}del:before{content:"− "}ins{background:var(--py-diff-add-bg);color:var(--py-diff-add);text-decoration:none}ins:before{content:"+ "}
.note{font-size:var(--py-fs-xs);color:var(--py-text-faint);margin:0}
/* form */
.form fieldset{border:1px solid var(--py-border);border-radius:var(--py-r-lg);padding:var(--py-s5);margin:0 0 var(--py-s5);background:var(--py-surface)}
.form legend{font:600 11px var(--py-font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--py-text-muted);padding:0 8px}
.field{margin-bottom:var(--py-s4)}.field label,.lab{display:block;font-weight:600;font-size:var(--py-fs-sm);margin-bottom:6px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--py-s4)}
.hint{font-size:var(--py-fs-xs);color:var(--py-text-faint);margin:6px 0 0}abbr{color:var(--py-accent);text-decoration:none}
.is-error input{border-color:var(--py-diff-del);box-shadow:0 0 0 1px var(--py-diff-del)}.is-error .hint{color:var(--py-diff-del)}.is-error .hint:before{content:"✕ "}
.is-ok input{border-color:var(--py-ok)}.is-ok .hint{color:var(--py-ok)}.is-ok .hint:before{content:"✓ "}
.radios{display:flex;flex-wrap:wrap;gap:8px}.radios label{display:flex;gap:8px;align-items:center;border:1px solid var(--py-border-strong);border-radius:var(--py-r);padding:8px 12px;font-weight:500;margin:0}.radios input,.check input{width:auto;accent-color:var(--py-accent)}
.check{display:flex;gap:10px;font-size:var(--py-fs-sm);align-items:flex-start}
.form__act{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.status--ok{color:var(--py-ok);font-size:var(--py-fs-sm);margin:0}
/* subscribe page */
.subpage{display:grid;grid-template-columns:1fr 1fr;gap:var(--py-s8);padding-top:var(--py-s8);align-items:start}.subpage h1{font-size:var(--py-fs-3xl)}
.ticks{list-style:none;padding:0;margin:var(--py-s5) 0}.ticks li{padding:6px 0 6px 28px;position:relative}.ticks li:before{content:"✓";position:absolute;left:0;color:var(--py-ok);font-weight:700}
.sub__f--lg input,.sub__f--lg .btn{padding:14px 18px;font-size:var(--py-fs-md)}
.preview{background:var(--py-surface);border:1px solid var(--py-border);border-radius:var(--py-r-lg);padding:var(--py-s5);box-shadow:var(--py-shadow-2)}
.preview__bar{display:flex;justify-content:space-between;font-size:var(--py-fs-xs);color:var(--py-text-faint);border-bottom:1px solid var(--py-border);padding-bottom:12px;margin-bottom:16px;gap:8px}
.pv{padding:12px 0;border-bottom:1px solid var(--py-border)}.pv p{margin:8px 0;font-size:var(--py-fs-sm)}
/* responsive */
@media (max-width:1024px){.hero__in,.pd,.subpage{grid-template-columns:1fr;gap:var(--py-s6)}.top .nav-desk{display:none}}
@media (max-width:760px){
 .wrap{padding:0 var(--py-s4)}h1,.hero h1,.subpage h1{font-size:34px}.hero__in{padding-top:var(--py-s6)}.hero__stats{gap:20px}
 .sort{margin-left:0}.seg{flex-wrap:nowrap;overflow-x:auto;width:100%;padding-bottom:2px}.seg button{flex:none}
 .tablewrap{border:0;background:none;border-radius:0;overflow:visible}.sb,.sb tbody,.sb tr,.sb td,.sb tbody th{display:block;width:auto}.sb thead{display:none}
 .sb tbody tr{background:var(--py-surface);border:1px solid var(--py-border);border-radius:var(--py-r-lg);margin-bottom:12px;padding:14px 16px;display:grid;grid-template-columns:1fr auto;gap:4px 12px}
 .sb td,.sb tbody th{border:0;padding:0}.c-plan{grid-column:1}.c-price{grid-column:2;grid-row:1;text-align:right}.c-price .price-note{margin-left:auto;text-align:right}
 .c-lim,.c-mech,.c-over,.c-rep,.c-st{grid-column:1/-1;display:grid!important;grid-template-columns:76px 1fr;gap:8px;padding-top:8px!important;border-top:1px solid var(--py-border)!important;margin-top:6px}
 .sb td[data-label]:not(.c-price):before{content:attr(data-label);font:600 10px/1.8 var(--py-font-mono);text-transform:uppercase;letter-spacing:.07em;color:var(--py-text-faint)}
 .c-st .srcline{grid-column:2;margin:0}.c-mech{align-items:start}
 .latest__l li{grid-template-columns:1fr auto;gap:6px 10px}.latest__l li>span:nth-of-type(2){grid-column:1/-1}
 .trust{grid-template-columns:1fr}.sub--footer{grid-template-columns:1fr}.sub__f{flex-direction:column}
 .sticky-sub{left:12px;right:12px;transform:none;border-radius:var(--py-r-lg);font-size:12px;bottom:12px}
 .top__in{gap:12px}.top .btn--sm{margin-left:auto}
 .facts>div{grid-template-columns:1fr;gap:4px}.pd__price .price{font-size:44px}.grid2{grid-template-columns:1fr}.tl li{grid-template-columns:1fr;gap:2px}
 .diff__r{grid-template-columns:1fr}.diff__k{padding-bottom:0!important}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
@media (prefers-color-scheme:light){:root:not([data-theme=dark]){}}
@media (max-width:760px){.sb td>*{justify-self:start}.chips{display:flex;flex-wrap:wrap}.sb .hero{} }
.hero{margin-bottom:0}.board{padding-top:var(--py-s7)}
