@charset "UTF-8";
/* IPFAST v3 blog — 1:1 editorial layout (prototype ipfast-blog*) */
body.blog-page {
  --paper:#F5F8FC; --surface:#FFFFFF; --ink:#0B1B36; --muted:#56667F;
  --line:#DCE4EF; --line-strong:#C3CFDF;
  --brand:#0064CF; --btn:#0064CF; --btn-hover:#0052AB; --ice:#E7F0FC;
  --deep:#061630; --deep-2:#0C2452; --on-deep:#EAF1FF; --on-deep-muted:#9FB2D3; --sky:#6DB0FF;
  --serif:"Noto Serif TC","Songti TC",serif;
  --sans:"Inter","Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
  background:var(--paper);
  color:var(--ink);
}
@media (prefers-color-scheme:dark) {
  :root:not([data-theme="light"]) body.blog-page {
    --paper:#050C1A; --surface:#0B162D; --ink:#E8EEFA; --muted:#93A4C1;
    --line:#172541; --line-strong:#243659;
    --brand:#5AA2FF; --btn:#1F6FE0; --btn-hover:#3383F0; --ice:#0E2242;
    --deep:#0A1B3C; --deep-2:#102B5C;
  }
}
:root[data-theme="dark"] body.blog-page {
  --paper:#050C1A; --surface:#0B162D; --ink:#E8EEFA; --muted:#93A4C1;
  --line:#172541; --line-strong:#243659;
  --brand:#5AA2FF; --btn:#1F6FE0; --btn-hover:#3383F0; --ice:#0E2242;
  --deep:#0A1B3C; --deep-2:#102B5C;
}
body.blog-page main { background:var(--paper); }
body.blog-page main h1, body.blog-page main h2, body.blog-page main h3, body.blog-page main h4 {
  font-family:var(--serif);
}
body.blog-page .ic{width:1.15em;height:1.15em;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
body.blog-page .visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.blog-page .cv--photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
body.blog-page .cv--photo::before,body.blog-page .cv--photo::after{opacity:.35}
body.blog-page .blog-fallback-banner{padding:12px 0;color:var(--muted);font-size:.92rem}
body.blog-page .wrap{width:100%;max-width:1200px;margin-inline:auto;padding-inline:clamp(20px,4vw,40px)}

/* ===== Content sites: editorial system (hairlines, open cards, quiet tags) ===== */
.lbl{font:600 .72rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.84rem;color:var(--muted);padding-top:22px}
.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--ink)}.crumbs .sep{opacity:.45}
.crumbs [aria-current]{color:var(--ink);font-weight:500}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font:600 .72rem var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--brand)}
.eyebrow::before{content:"";width:24px;height:1px;background:currentColor}
.arr{width:16px;height:16px;transition:transform .25s}
/* tabs */
.tabs{display:flex;gap:30px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{flex:none;padding:14px 0;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;background:transparent;color:var(--muted);font-size:.95rem;font-weight:500;cursor:pointer;transition:color .2s,border-color .2s;text-decoration:none}
.tab sup{font-size:.68rem;margin-left:4px;color:var(--muted);font-weight:600}
.tab:hover{color:var(--ink)}
.tab[aria-pressed="true"],.tab[aria-current]{color:var(--ink);border-bottom-color:var(--ink)}
/* quiet chips */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:999px;border:0;background:color-mix(in srgb,var(--ink) 5.5%,transparent);color:var(--ink);font-size:.82rem;font-weight:500;letter-spacing:.01em;text-decoration:none;cursor:pointer;transition:background .2s,color .2s}
.chip:hover{background:var(--ink);color:var(--paper)}
.chip::before{content:"#";opacity:.4;margin-right:3px;font-weight:400}
.chip.plain::before{display:none}
.chip.ghost{background:rgba(255,255,255,.1);color:#fff}.chip.ghost:hover{background:#fff;color:#0B1B36}
/* cover (homepage guide-card thumbnail look) */
.cv{position:relative;overflow:hidden;aspect-ratio:1200/630;background:linear-gradient(150deg,var(--deep),var(--deep-2) 120%);isolation:isolate;border-radius:5px}
.cv::before{content:"";position:absolute;inset:0;background:radial-gradient(120% 130% at 88% -10%,var(--rc),transparent 60%);opacity:.55;mix-blend-mode:screen;z-index:-1}
.cv::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:22px 22px;-webkit-mask-image:radial-gradient(80% 90% at 30% 100%,#000,transparent);mask-image:radial-gradient(80% 90% at 30% 100%,#000,transparent);z-index:-1}
.cv-wm{position:absolute;right:-6%;bottom:-16%;width:46%;height:auto;aspect-ratio:1;color:#fff;opacity:.16;stroke-width:1.1;transition:transform .7s cubic-bezier(.22,.85,.2,1)}
.cv-bd{position:absolute;top:14px;left:14px;width:34px;height:34px;border-radius:5px;background:rgba(255,255,255,.14);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;border:1px solid rgba(255,255,255,.3);color:#fff}
.cv-bd .ic{width:17px;height:17px}
.cv-t{position:absolute;left:18px;right:36%;bottom:16px;color:#fff;font:700 clamp(.9rem,1.5vw,1.15rem)/1.4 var(--serif);letter-spacing:.01em;text-shadow:0 1px 14px rgba(0,0,0,.25)}
/* open cards */
.card{display:block;text-decoration:none;color:inherit}
.card .cv{box-shadow:0 22px 34px -26px rgba(6,22,48,.55);transition:transform .45s cubic-bezier(.22,.85,.2,1),box-shadow .45s}
.card:hover .cv{transform:translateY(-4px);box-shadow:0 30px 40px -26px rgba(6,22,48,.6)}
.card:hover .cv-wm{transform:scale(1.07) translate(-2%,-2%)}
.card-b{padding:18px clamp(14px,2vw,22px) clamp(20px,2.6vw,28px)}
body.blog-page .grid3{align-items:stretch}
body.blog-page .grid3 > div{display:flex;min-height:100%}
body.blog-page .grid3 .card{display:flex;flex-direction:column;width:100%;height:100%}
body.blog-page .grid3 .card .card-b{flex:1;display:flex;flex-direction:column}
body.blog-page .grid3 .card h3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:4.35em}
body.blog-page .grid3 .card p.ex{flex:1}
body.blog-page .grid3 .card .meta{margin-top:auto;padding-top:4px}
.bh .lede .blog-lede-link{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink)}
.bh .lede .blog-lede-link:hover{color:var(--brand);border-bottom-color:var(--brand)}
.blog-topics-block{margin-top:clamp(48px,6vw,88px)}
.blog-topics-block .sh{margin:0 0 clamp(22px,3.2vw,36px)}
.blog-topics-block .topics{margin-top:0}
.blog-rc--0,.blog-rc--0.cv{--rc:#0EA5B7}
.blog-rc--1,.blog-rc--1.cv{--rc:#7C5CFC}
.blog-rc--2,.blog-rc--2.cv{--rc:#4C8DFF}
.blog-rc--3,.blog-rc--3.cv{--rc:#0FA968}
.blog-rc--4,.blog-rc--4.cv{--rc:#E0663D}
.blog-rc--5,.blog-rc--5.cv{--rc:#B855D6}
.blog-rc--6,.blog-rc--6.cv{--rc:#2D7FF9}
.lh .stat-count{margin-top:20px;font-size:.9rem;color:var(--muted)}
.lh .stat-count b{font-weight:600;color:var(--ink);margin-right:.35em}
.kick{font:600 .7rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--rc,var(--brand))}
.card h3{font-size:1.2rem;line-height:1.45;margin-top:8px;transition:color .2s}
.card:hover h3{color:var(--brand)}
.card p.ex{margin-top:8px;color:var(--muted);font-size:.92rem;line-height:1.75;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.meta{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin-top:14px;font-size:.8rem;color:var(--muted)}
.meta i{width:3px;height:3px;border-radius:50%;background:var(--line-strong);display:inline-block}
.av{width:30px;height:30px;border-radius:50%;display:inline-grid;place-items:center;background:linear-gradient(150deg,var(--deep),var(--deep-2));color:#fff;font-size:.7rem;font-weight:700;flex:none;box-shadow:0 0 0 2px var(--paper),0 0 0 3px var(--line-strong)}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(30px,3.4vw,48px) clamp(22px,2.6vw,36px)}
/* rows */
.rows{border-bottom:1px solid var(--line)}
.rw{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:center;padding:22px 4px;border-top:1px solid var(--line);text-decoration:none;color:inherit;transition:background .25s,padding .25s}
.rw:hover{padding-inline:14px;background:color-mix(in srgb,var(--ink) 2.5%,transparent)}
.rw h3{font-size:1.15rem;line-height:1.5;transition:color .2s}
.rw:hover h3{color:var(--brand)}
.rw p{margin-top:5px;color:var(--muted);font-size:.92rem;line-height:1.7;max-width:46em}
.rw .meta{margin-top:10px}
.rw .go{width:38px;height:38px;border-radius:50%;border:1px solid var(--line-strong);display:grid;place-items:center;color:var(--muted);transition:all .25s}
.rw:hover .go{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.rw .go .ic{width:16px;height:16px}
.rw .kick{display:block;margin-bottom:6px}
.rw.th{grid-template-columns:clamp(150px,19vw,230px) minmax(0,1fr) auto;gap:clamp(18px,2.6vw,32px);padding-block:26px}
.rw.th:hover{padding-inline:4px}
.rw.th .cv{box-shadow:0 18px 28px -22px rgba(6,22,48,.55);transition:transform .4s cubic-bezier(.22,.85,.2,1)}
.rw.th:hover .cv{transform:translateY(-3px)}
.rw.th:hover .cv-wm{transform:scale(1.07) translate(-2%,-2%)}
.rw.th .cv-bd{top:10px;left:10px;width:28px;height:28px}
.rw.th .cv-bd .ic{width:14px;height:14px}
.rw.th .rt .cv{aspect-ratio:1200/700}
/* section heads */
.sh{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin:clamp(56px,7vw,96px) 0 clamp(18px,2.4vw,30px)}
.sh h2{font-size:clamp(1.5rem,2.6vw,2.1rem)}
.sh a.all{display:inline-flex;align-items:center;gap:6px;font-size:.9rem;font-weight:600;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-strong);padding-bottom:2px}
.sh a.all:hover{border-color:var(--ink)}
/* pager */
.pager{display:flex;justify-content:center;gap:4px;margin-top:44px}
.pager a{min-width:40px;height:40px;display:grid;place-items:center;border-radius:50%;text-decoration:none;font-weight:500;font-size:.92rem;color:var(--muted)}
.pager a:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 5%,transparent)}
.pager a[aria-current]{background:var(--ink);color:var(--paper)}
/* subscribe */
.sub{display:grid;grid-template-columns:1fr minmax(0,440px);gap:clamp(24px,4vw,64px);align-items:end;margin-top:clamp(64px,8vw,112px);padding-block:clamp(36px,5vw,56px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.sub h3{font-size:clamp(1.5rem,2.8vw,2.1rem)}
.sub p{margin-top:10px;color:var(--muted);max-width:30em}
.sub form{display:flex;align-items:center;border-bottom:1px solid var(--ink);padding-bottom:8px}
.sub input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);font:inherit;font-size:1.05rem;padding:8px 0}
.sub input:focus{outline:0}.sub input::placeholder{color:var(--muted)}
.sub button{width:44px;height:44px;border-radius:50%;border:0;background:var(--ink);color:var(--paper);cursor:pointer;display:grid;place-items:center;transition:transform .2s,background .2s}
.sub button:hover{background:var(--brand);color:#fff;transform:translateX(3px)}
.sub .ok{color:#14A67F;font-weight:500}
.sub-note{font-size:.78rem;color:var(--muted);margin-top:10px}
/* icon buttons */
.ibtns{display:flex;gap:8px;flex-wrap:wrap}
.ib{position:relative;width:40px;height:40px;border-radius:50%;border:1px solid var(--line-strong);background:transparent;display:inline-grid;place-items:center;color:var(--muted);cursor:pointer;text-decoration:none;transition:all .22s}
.ib .ic{width:17px;height:17px}
.ib:hover{background:var(--ink);border-color:var(--ink);color:var(--paper);transform:translateY(-2px)}
.ib::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px);padding:4px 9px;border-radius:4px;background:var(--ink);color:var(--paper);font-size:.72rem;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transition:all .18s}
.ib:hover::after,.ib:focus-visible::after{opacity:1;transform:translate(-50%,0)}
.ib.ok{background:#14A67F;border-color:#14A67F;color:#fff}
/* ===== Blog ===== */
.bh{padding-block:clamp(36px,6vw,80px) clamp(28px,4vw,48px)}
.bh h1{font-size:clamp(2.6rem,6.4vw,4.8rem);margin-top:18px;letter-spacing:-.02em;line-height:1.08}
.bh p.lede{margin-top:20px;max-width:34em;color:var(--muted);font-size:1.12rem}
.feat{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(24px,4vw,64px);align-items:center;margin-top:clamp(28px,4vw,48px);text-decoration:none;color:inherit}
.feat .cv{aspect-ratio:1200/700;box-shadow:0 40px 60px -36px rgba(6,22,48,.6);transition:transform .5s cubic-bezier(.22,.85,.2,1)}
.feat:hover .cv{transform:translateY(-4px)}
.feat:hover .cv-wm{transform:scale(1.06) translate(-2%,-2%)}
.feat h2{font-size:clamp(1.7rem,3vw,2.6rem);line-height:1.25;margin-top:14px;transition:color .2s}
.feat:hover h2{color:var(--brand)}
.feat p.ex{margin-top:16px;color:var(--muted);font-size:1.04rem;line-height:1.85}
.feat .more{display:inline-flex;align-items:center;gap:8px;margin-top:22px;font-weight:600;border-bottom:1px solid var(--ink);padding-bottom:2px}
.feat:hover .more .arr{transform:translateX(5px)}
.topics{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
/* ===== Article ===== */
.rp{position:fixed;left:0;top:0;height:3px;width:100%;z-index:70;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--brand),#7C5CFC);pointer-events:none}
.ah{padding-block:clamp(26px,4.4vw,56px) clamp(22px,3vw,34px);max-width:860px}
.ah .kick{display:inline-flex;align-items:center;gap:10px;text-decoration:none;margin-top:26px}
.ah .kick::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--rc)}
.ah h1{font-size:clamp(2rem,4.4vw,3.2rem);margin-top:16px;letter-spacing:-.01em;line-height:1.2}
.ah .lede{margin-top:18px;font-size:1.12rem;color:var(--muted);max-width:38em;line-height:1.85}
.byline{display:flex;flex-wrap:wrap;align-items:center;gap:14px 28px;margin-top:30px;padding-block:18px;border-block:1px solid var(--line)}
.author{display:flex;align-items:center;gap:12px;text-decoration:none}
.author .av{width:40px;height:40px;font-size:.84rem}
.author b{display:block;font-size:.94rem;line-height:1.3}.author small{display:block;color:var(--muted);font-size:.8rem}
.author:hover b{color:var(--brand)}
.facts2{display:flex;flex-wrap:wrap;gap:6px 22px;font-size:.84rem;color:var(--muted)}
.facts2 span{display:inline-flex;align-items:center;gap:7px}.facts2 .ic{width:15px;height:15px}
.a-cover{aspect-ratio:1200/420;margin-bottom:clamp(28px,4vw,52px);box-shadow:0 36px 60px -40px rgba(6,22,48,.6)}
.a-cover .cv-wm{width:30%}
.a-grid{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:clamp(32px,5vw,88px);align-items:start}
.prose{max-width:720px;font-size:1.0625rem;line-height:1.95}
.prose>*+*{margin-top:1.25em}
.prose h2{font-size:clamp(1.5rem,2.6vw,1.95rem);margin-top:2.6em;scroll-margin-top:92px}
.prose h2 .n{display:block;font:500 .78rem var(--mono);color:var(--brand);letter-spacing:.14em;margin-bottom:10px}
.prose h3{font-size:1.28rem;margin-top:1.9em;scroll-margin-top:92px}
.prose h2+*,.prose h3+*{margin-top:.8em}
.prose a:not(.btn):not(.ib):not(.chip):not(.pn a){color:var(--brand);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--brand) 35%,transparent);text-underline-offset:3px}
.prose code{font:500 .86em var(--mono);background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink);padding:2px 6px;border-radius:4px}
.prose strong{font-weight:700}
.prose ul.ul{list-style:none;display:grid;gap:10px}
.prose ul.ul li{position:relative;padding-left:24px}
.prose ul.ul li::before{content:"";position:absolute;left:2px;top:.95em;width:10px;height:1px;background:var(--brand)}
.lede-box{font-size:1.14rem;color:var(--muted);line-height:1.9}
.pq{margin-inline:0;padding:6px 0 6px 28px;border-left:2px solid var(--brand);font:500 clamp(1.25rem,2.2vw,1.6rem)/1.6 var(--serif);color:var(--ink)}
.pq small{display:block;margin-top:10px;font:500 .84rem var(--sans);color:var(--muted)}
/* callouts: quiet */
.co{display:grid;grid-template-columns:22px 1fr;gap:14px;padding:18px 20px;border-radius:5px;background:color-mix(in srgb,var(--c,var(--brand)) 7%,transparent);font-size:.97rem;line-height:1.8}
.co .ic{color:var(--c,var(--brand));margin-top:.3em;width:20px;height:20px}
.co b{display:block;margin-bottom:2px}
.co.tip{--c:#14A67F}.co.warn{--c:#D98A1F}
/* steps */
ol.steps{counter-reset:s;display:grid;list-style:none;padding:0}
ol.steps>li{counter-increment:s;position:relative;padding:0 0 24px 54px;margin:0}
ol.steps>li::before{content:counter(s);position:absolute;left:0;top:0;width:34px;height:34px;border-radius:50%;border:1px solid var(--ink);display:grid;place-items:center;color:var(--ink);font:500 .92rem var(--serif)}
ol.steps>li::after{content:"";position:absolute;left:16.5px;top:42px;bottom:6px;width:1px;background:var(--line-strong)}
ol.steps>li:last-child{padding-bottom:0}ol.steps>li:last-child::after{display:none}
ol.steps>li>b{display:block;line-height:1.5;margin-top:5px}
ol.steps>li>span{display:block;color:var(--muted);font-size:.96rem;line-height:1.8;margin-top:4px}
/* tables: hairline */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tw table{width:100%;min-width:560px;border-collapse:collapse;font-size:.94rem;line-height:1.7}
.tw th{text-align:left;font:600 .72rem var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:12px 16px 12px 0;white-space:nowrap;border-bottom:1px solid var(--ink)}
.tw td{padding:14px 16px 14px 0;border-bottom:1px solid var(--line);vertical-align:top}
.tw td:first-child{font-weight:600;white-space:nowrap}
.tw-hint{display:none;font-size:.76rem;color:var(--muted);margin-top:8px}
/* code */
.code{border-radius:5px;background:#061630;color:#DCE8FF;overflow:hidden;box-shadow:0 24px 40px -30px rgba(6,22,48,.7)}
.code-h{display:flex;justify-content:space-between;align-items:center;padding:8px 8px 8px 18px;border-bottom:1px solid #16305f;font:500 .76rem var(--mono);color:#7F95BC}
.code-h button{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border:0;border-radius:4px;background:rgba(255,255,255,.07);color:#DCE8FF;cursor:pointer;font:500 .78rem var(--sans);transition:background .2s}
.code-h button:hover{background:rgba(255,255,255,.14)}.code-h button .ic{width:14px;height:14px}
.code-h button.ok{color:#7DE3C0}
.code pre{margin:0;padding:18px 20px;overflow-x:auto;font:400 .88rem/1.85 var(--mono)}
.code code{background:none;color:inherit;padding:0;font:inherit}
.code .c{color:#6C86B0}.code .k{color:#7DB6FF}
/* figures */
figure.shot{margin-inline:0;margin-bottom:0}
figure.shot .fr{border-radius:5px;overflow:hidden;background:var(--surface);cursor:zoom-in;position:relative;box-shadow:0 0 0 1px var(--line),0 28px 44px -30px rgba(6,22,48,.45);transition:box-shadow .25s}
figure.shot .fr:hover{box-shadow:0 0 0 1px var(--brand),0 34px 50px -30px rgba(0,100,207,.5)}
figure.shot svg[role=img]{display:block;width:100%;height:auto}
figure.shot .zm{position:absolute;right:10px;top:10px;width:30px;height:30px;border-radius:50%;background:color-mix(in srgb,var(--surface) 88%,transparent);display:grid;place-items:center;color:var(--muted);box-shadow:0 0 0 1px var(--line)}
figure.shot .zm .ic{width:15px;height:15px}
figure.shot figcaption{margin-top:12px;font-size:.84rem;color:var(--muted);text-align:center;line-height:1.6}
.lb{position:fixed;inset:0;z-index:90;background:rgba(3,10,24,.84);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:grid;place-items:center;padding:clamp(12px,4vw,48px);cursor:zoom-out}
.lb[hidden]{display:none}
.lb .in{width:min(1100px,100%);max-height:100%;overflow:auto;border-radius:5px;background:var(--surface);box-shadow:0 40px 80px -30px #000}
.lb svg{display:block;width:100%;height:auto}
.lb button{position:absolute;right:16px;top:16px;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;cursor:pointer;font-size:20px;line-height:1}
/* inline CTA */
.cta-card{position:relative;overflow:hidden;display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;padding:clamp(24px,3vw,36px);border-radius:5px;color:var(--on-deep);background:linear-gradient(150deg,var(--deep),var(--deep-2) 130%)}
.cta-card::before{content:"";position:absolute;inset:0;background:radial-gradient(90% 140% at 100% -20%,rgba(45,127,249,.6),transparent 60%);pointer-events:none}
.cta-card::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:22px 22px;-webkit-mask-image:radial-gradient(70% 100% at 0% 100%,#000,transparent);mask-image:radial-gradient(70% 100% at 0% 100%,#000,transparent);pointer-events:none}
.cta-card>*{position:relative;z-index:1}
.cta-card small{display:block;font:600 .7rem var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--sky)}
.cta-card h4{font-family:var(--serif);font-size:1.45rem;color:#fff;margin:8px 0 6px;line-height:1.3}
.cta-card p{font-size:.92rem;color:var(--on-deep-muted);line-height:1.7}
.cta-card .cta-row{display:flex;gap:10px;flex-wrap:wrap}
.prose .cta-card a.btn{text-decoration:none}
/* aside (open, hairline) */
.a-aside{position:sticky;top:92px;display:grid;gap:28px}
.toc h4,.aside-s h4{font:600 .72rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.toc ol{list-style:none;margin:0;padding:0}
.toc a{display:block;padding:7px 0 7px 16px;font-size:.9rem;line-height:1.5;text-decoration:none;color:var(--muted);border-left:1px solid var(--line-strong);transition:color .2s,border-color .2s}
.toc a.l3{padding-left:30px;font-size:.84rem}
.toc a:hover{color:var(--ink)}
.toc a.on{color:var(--ink);border-left:2px solid var(--brand);padding-left:15px;font-weight:600}
.toc a.l3.on{padding-left:29px}
.toc-m{display:none;margin-bottom:28px;border-block:1px solid var(--line)}
.toc-m summary{display:flex;justify-content:space-between;align-items:center;padding:16px 0;cursor:pointer;font-weight:600;list-style:none}
.toc-m summary::-webkit-details-marker{display:none}.toc-m summary .ic{transition:transform .25s;color:var(--muted)}
.toc-m[open] summary .ic{transform:rotate(180deg)}
.toc-m ol{list-style:none;margin:0;padding:0 0 12px}.toc-m a{display:block;padding:9px 0;text-decoration:none;font-size:.94rem;color:var(--ink)}.toc-m a.l3{padding-left:16px;color:var(--muted)}
.aside-s{padding-top:24px;border-top:1px solid var(--line)}
.side-cta{border-radius:5px;padding:24px;position:relative;overflow:hidden;color:var(--on-deep);background:linear-gradient(150deg,var(--deep),var(--deep-2) 130%)}
.side-cta::before{content:"";position:absolute;inset:0;background:radial-gradient(110% 120% at 90% -10%,rgba(45,127,249,.55),transparent 60%);pointer-events:none}
.side-cta>*{position:relative}
.side-cta small{font:600 .68rem var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--sky)}
.side-cta h4{font-family:var(--serif);font-size:1.25rem;color:#fff;margin:8px 0 6px}
.side-cta p{font-size:.88rem;color:var(--on-deep-muted)}
.side-cta .btn{width:100%;margin-top:16px}
.side-cta .tl{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font-size:.88rem;color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.4)}
/* end matter (open) */
.fb{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;margin-top:3.2em;padding-block:20px;border-top:1px solid var(--line)}
.fb b{font-size:.98rem;font-weight:600}
.fb .bt{display:flex;gap:8px}
.fb .bt button{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 16px;border:0;border-radius:999px;background:color-mix(in srgb,var(--ink) 5.5%,transparent);color:var(--ink);cursor:pointer;font:500 .88rem var(--sans);transition:all .2s}
.fb .bt button .ic{width:16px;height:16px}
.fb .bt button:hover{background:color-mix(in srgb,var(--ink) 11%,transparent)}
.fb .bt button.on{background:var(--ink);color:var(--paper)}
.fb .thx{color:#14A67F;font-size:.9rem;font-weight:500}
.sharebar{display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px;padding-bottom:26px}
.sharebar .lbl{margin-right:2px}
.blog-article-end .blog-article-tags{margin-top:2.4em;margin-bottom:0}
.blog-article-end>.fb{margin-top:clamp(18px,2.4vw,28px);margin-bottom:0;padding-block:20px 0;border-top:1px solid var(--line)}
.blog-article-end>.blog-article-tags+.fb{margin-top:clamp(18px,2.4vw,28px)}
.blog-article-end>.sharebar{margin-top:2.4em;padding-bottom:0;margin-bottom:clamp(22px,3.2vw,32px)}
.blog-article-end>.fb+.sharebar{margin-top:clamp(18px,2.4vw,28px)}
.blog-article-end>.blog-article-tags+.sharebar{margin-top:clamp(18px,2.4vw,28px)}
.blog-article-end .abox{margin-top:0;border-top:1px solid var(--line)}
.fb .bt button:disabled{opacity:.55;cursor:default}
.av.av--img{object-fit:cover;padding:0;line-height:0;color:transparent;background:color-mix(in srgb,var(--ink) 8%,var(--paper))}
.author .av.av--byline.av--img,.av.av--byline.av--img{width:40px;height:40px}
.abox .av.av--abox.av--img,.av.av--abox.av--img{width:60px;height:60px}
.abox{display:grid;grid-template-columns:auto 1fr auto;gap:22px;align-items:center;padding-block:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.abox .av{width:60px;height:60px;font-size:1.05rem}
.abox h4{font-family:var(--serif);font-size:1.15rem}
.abox p{margin-top:4px;font-size:.92rem;color:var(--muted);line-height:1.75}
.abox .tl{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:.9rem;text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:2px;white-space:nowrap}
.pn{display:grid;grid-template-columns:1fr 1fr}
.pn a{display:flex;flex-direction:column;gap:8px;padding:30px 0;text-decoration:none;color:var(--ink)}
.pn a+a{border-left:1px solid var(--line);padding-left:clamp(20px,3vw,40px);text-align:right;align-items:flex-end;padding-right:0}
.pn a:first-child{padding-right:clamp(20px,3vw,40px)}
.pn small{font:600 .7rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);display:inline-flex;align-items:center;gap:6px}
.pn b{font-family:var(--serif);font-size:1.12rem;line-height:1.5;transition:color .2s}
.pn a:hover b{color:var(--brand)}
.pn small .ic{width:14px;height:14px;transition:transform .2s}
.pn a:first-child small .ic{transform:scaleX(-1)}.pn a:first-child:hover small .ic{transform:scaleX(-1) translateX(4px)}.pn a:last-child:hover small .ic{transform:translateX(4px)}
.rel{margin-top:clamp(40px,5vw,72px);border-top:1px solid var(--line);padding-top:clamp(36px,5vw,56px)}
.mbar{display:none}
/* ===== Listing header (category / tag / author) ===== */
.lh{padding-block:clamp(36px,5.6vw,72px) clamp(24px,3vw,40px);border-bottom:1px solid var(--line)}
.lh h1{font-size:clamp(2.2rem,5vw,3.6rem);margin-top:18px;letter-spacing:-.01em}
.lh p.lede{margin-top:16px;color:var(--muted);font-size:1.08rem;max-width:36em}
.lh .stat{display:flex;gap:32px;margin-top:26px;color:var(--muted);font-size:.9rem}
.lh .stat b{display:block;font:500 1.7rem/1.1 var(--serif);color:var(--ink)}
.two{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:clamp(32px,5vw,80px);align-items:start;margin-top:12px}
.sidecat{position:sticky;top:92px}
.sidecat h4{font:600 .72rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.sidecat ul{list-style:none}.sidecat li a{display:flex;justify-content:space-between;padding:11px 0;border-top:1px solid var(--line);text-decoration:none;font-size:.94rem}
.sidecat li:last-child a{border-bottom:1px solid var(--line)}
.sidecat li a:hover{color:var(--brand)}.sidecat li a span{color:var(--muted);font-size:.82rem}
.sidecat li a[aria-current]{font-weight:700;color:var(--brand)}
.ah-hero{display:grid;grid-template-columns:auto 1fr;gap:clamp(20px,3vw,40px);align-items:center;margin-top:24px}
.ah-hero .av{width:104px;height:104px;font-size:1.8rem;box-shadow:0 0 0 3px var(--paper),0 0 0 4px var(--line-strong)}
.ah-hero h1{margin-top:0}
.ah-hero .role{margin-top:6px;color:var(--muted)}
.ah-hero .ibtns{margin-top:18px}
@media (max-width:1020px){
  .a-grid{grid-template-columns:minmax(0,1fr)}.a-aside{display:none}.toc-m{display:block}
  .grid3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cg{grid-template-columns:repeat(2,1fr)}.two{grid-template-columns:minmax(0,1fr)}.sidecat{position:static}
}
@media (max-width:760px){
  .grid3{grid-template-columns:1fr}.feat{grid-template-columns:1fr}.cg{grid-template-columns:1fr}.cg a{min-height:0}
  .path{grid-template-columns:1fr;gap:28px}.path a+a{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:26px}
  .faq2{grid-template-columns:1fr}.contact{grid-template-columns:1fr}.contact a+a{border-left:0;border-top:1px solid var(--line)}
  .sub{grid-template-columns:1fr}
  .cta-card{grid-template-columns:1fr}.abox{grid-template-columns:auto 1fr}.abox .tl{grid-column:1/-1}
  .pn{grid-template-columns:1fr}.pn a+a{border-left:0;border-top:1px solid var(--line);text-align:left;align-items:flex-start;padding-left:0}
  .pn a:first-child{padding-right:0}
  .tw-hint{display:block}.prose{font-size:1.03rem}
  .rw{grid-template-columns:1fr}.rw .go{display:none}.rw:hover{padding-inline:4px}
  .hs kbd{display:none}.ah-hero{grid-template-columns:1fr}
  .mbar{display:grid;grid-template-columns:1fr 1fr 44px;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:45;padding:10px 14px calc(10px + env(safe-area-inset-bottom,0px));background:color-mix(in srgb,var(--paper) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);transform:translateY(110%);transition:transform .3s}
  .mbar.show{transform:none}
  .mbar .btn{height:46px;justify-content:center;padding:0 10px}
  .mbar a.ct{display:grid;place-items:center;height:46px;border:1px solid var(--line-strong);border-radius:5px;background:var(--surface);color:var(--ink)}
  .back-top{bottom:78px}footer{padding-bottom:90px}
}
@media (max-width:640px){.nav-tools{flex-wrap:nowrap}.lang-btn #langLabel,.lang-btn .chev{display:none}.lang-btn{padding-inline:10px}.nav-cta{padding-inline:14px}}

/* Override v3r-design .chip (map pin transform) on blog pages — load order: blog.css after v3r-design.css */
body.v3-page.blog-page .topics a.chip,
body.v3-page.blog-page .blog-topics-block a.chip,
body.v3-page.blog-page .chips a.chip,
body.blog-page .topics .chip,
body.blog-page .chips .chip,
body.blog-page main .chip{
  transform:none!important;
  translate:none!important;
  position:relative;
  inset:auto;
  height:32px;
  padding:0 14px;
  border-radius:999px;
  border:0;
  background:color-mix(in srgb,var(--ink) 5.5%,transparent);
  color:var(--ink);
  font-size:.82rem;
  font-weight:500;
  letter-spacing:.01em;
  line-height:1.4;
  white-space:normal;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  gap:0;
}
body.blog-page .topics .chip::before,
body.blog-page .chips .chip:not(.plain)::before,
body.blog-page main .chip:not(.plain)::before{
  content:"#";
  opacity:.4;
  margin-right:3px;
  font-weight:400;
}
body.blog-page .blog-article-tags .chip.plain::before{display:none}
body.blog-page .topics .chip:hover,
body.blog-page .chips .chip:hover{
  background:var(--ink);
  color:var(--paper);
}
body.blog-page #blog-category-tabs .blog-tab{
  position:relative;
  z-index:1;
  cursor:pointer;
  pointer-events:auto;
}
body.blog-page .blog-card--hidden{display:none!important}
body.blog-page .rows.blog-rows{
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
body.blog-page .rows.blog-rows > .rw:first-child{
  border-top:1px solid var(--line);
}
body.blog-page .rows.blog-rows > .rw:last-child{
  border-bottom:1px solid var(--line);
}
