/* Passport Sorted. Sibling of eSIM Sorted: same type, grid and rules; stamp-ink violet accent; measurement drawings as signature. See DESIGN.md. */
@font-face{font-family:"Plex Sans";src:url(/assets/fonts/plex-sans-400.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+0020-007E,U+00A0-00FF,U+2010-2027,U+2030-203A,U+20AC,U+2190-2193,U+2212,U+221E,U+2713}
@font-face{font-family:"Plex Sans";src:url(/assets/fonts/plex-sans-ext-400.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+0100-017F}
@font-face{font-family:"Plex Sans";src:url(/assets/fonts/plex-sans-500.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+0020-007E,U+00A0-00FF,U+2010-2027,U+2030-203A,U+20AC,U+2190-2193,U+2212,U+221E,U+2713}
@font-face{font-family:"Plex Sans";src:url(/assets/fonts/plex-sans-ext-500.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+0100-017F}
@font-face{font-family:"Plex Mono";src:url(/assets/fonts/plex-mono-400.woff2) format("woff2");font-weight:400;font-display:swap;unicode-range:U+0020-007E,U+00A0-00FF,U+2010-2027,U+20AC,U+2212,U+221E,U+2191,U+2193}
@font-face{font-family:"Plex Mono";src:url(/assets/fonts/plex-mono-500.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+0020-007E,U+00A0-00FF,U+2010-2027,U+20AC,U+2212,U+221E,U+2191,U+2193}
:root{
 --bg:#F6F4F0;--surface:#FCFBF8;--raised:#ECE8E1;--ink:#1C1A20;--ink2:#56515C;--mute:#6C6672;
 --line:rgba(31,27,22,.10);--line2:rgba(31,27,22,.18);--bar:rgba(31,27,22,.16);
 --accent:#46327A;--accent-ink:#46327A;--accent-soft:rgba(70,50,122,.09);--cheap:#1E6B44;--pass:#1E6B44;--warn:#8A5A00;--fail:#A0262E;
 --f:"Plex Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI","Hiragino Sans","Noto Sans CJK JP","Apple SD Gothic Neo","PingFang SC","Microsoft YaHei",sans-serif;
 --m:"Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
 --r1:6px;--r2:8px;--r3:12px;--ease:cubic-bezier(.22,1,.36,1);--w:1240px;
 color-scheme:light}
[data-theme=dark]{--bg:#0D0C12;--surface:#14131B;--raised:#1D1B26;--ink:#EEF0F5;--ink2:#A3A9B8;--mute:#8189A0;
 --line:rgba(238,240,245,.08);--line2:rgba(238,240,245,.16);--bar:rgba(238,240,245,.18);
 --accent:#B9A8F0;--accent-ink:#C9BCF5;--accent-soft:rgba(185,168,240,.12);--cheap:#5CC08A;--pass:#5CC08A;--warn:#E0B060;--fail:#F08A8A;color-scheme:dark}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0D0C12;--surface:#14131B;--raised:#1D1B26;--ink:#EEF0F5;--ink2:#A3A9B8;--mute:#8189A0;
 --line:rgba(238,240,245,.08);--line2:rgba(238,240,245,.16);--bar:rgba(238,240,245,.18);--accent:#B9A8F0;--accent-ink:#C9BCF5;--accent-soft:rgba(185,168,240,.12);--cheap:#5CC08A;--pass:#5CC08A;--warn:#E0B060;--fail:#F08A8A;color-scheme:dark}}
*,*:before,*:after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 15px/1.6 var(--f);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
a{color:inherit;text-decoration-color:var(--line2);text-underline-offset:3px;text-decoration-thickness:1px;transition:color .15s var(--ease),text-decoration-color .15s var(--ease)}
a:hover{text-decoration-color:currentColor}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
h1,h2,h3{font-weight:500;margin:0 0 12px;line-height:1.2;text-wrap:balance}
h1{font-size:clamp(32px,4.4vw,44px);letter-spacing:-.02em;line-height:1.1}
h2{font-size:22px;letter-spacing:-.01em}
h3{font-size:16px}
p{margin:0 0 12px}
b,strong{font-weight:500}
code,pre{font-family:var(--m);font-size:13px}
pre{background:var(--surface);border:1px solid var(--line);border-radius:var(--r2);padding:12px 16px;overflow:auto;line-height:1.5}
.num,.mono{font-family:var(--m);font-variant-numeric:tabular-nums}
.wrap{max-width:var(--w);margin:0 auto;padding:0 32px}
.skip{position:absolute;left:-999px}.skip:focus{left:16px;top:12px;z-index:9;background:var(--surface);padding:8px 12px;border-radius:var(--r2)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
/* header */
.hd{border-bottom:1px solid var(--line);background:var(--bg)}
.hd .wrap{display:flex;align-items:center;gap:32px;height:60px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-size:17px;font-weight:500;letter-spacing:-.01em}
.logo svg{width:18px;height:22px;color:var(--accent)}
.logo .wm span{color:var(--ink2);font-weight:400}
.nav{display:flex;gap:24px;font-size:14px}
.nav a{text-decoration:none;color:var(--ink2);padding:8px 0}.nav a:hover{color:var(--ink)}
.hd .tools{margin-left:auto;display:flex;align-items:center;gap:4px}
.lang{position:relative}
.lang summary{list-style:none;cursor:pointer;font:500 12px/1 var(--m);color:var(--ink2);min-width:44px;height:36px;display:grid;place-items:center;border-radius:var(--r2);user-select:none}
.lang summary::-webkit-details-marker{display:none}
.lang summary:hover,.tbtn:hover{background:var(--raised)}
.lang ul{position:absolute;right:0;top:40px;z-index:5;list-style:none;margin:0;padding:6px;background:var(--surface);border:1px solid var(--line2);border-radius:var(--r3);box-shadow:0 8px 24px rgba(0,0,0,.08);min-width:168px}
.lang li a{display:block;padding:8px 10px;border-radius:var(--r1);text-decoration:none;font-size:14px}
.lang li a:hover{background:var(--raised)}.lang li a[aria-current]{color:var(--accent-ink)}
.tbtn{width:44px;height:36px;border:0;background:none;color:var(--ink2);border-radius:var(--r2);cursor:pointer;display:grid;place-items:center}
.tbtn svg{width:16px;height:16px}.tbtn .moon{display:none}
[data-theme=dark] .tbtn .sun{display:none}[data-theme=dark] .tbtn .moon{display:block}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .tbtn .sun{display:none}:root:not([data-theme=light]) .tbtn .moon{display:block}}
/* crumbs + page head */
.crumbs ol{list-style:none;margin:0;padding:20px 0 0;display:flex;flex-wrap:wrap;gap:8px;font-size:13px;color:var(--mute)}
.crumbs li+li:before{content:"/";margin-right:8px;color:var(--line2)}
.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--ink)}
.hero{padding-top:32px;padding-bottom:24px}
.hero h1{max-width:22ch}
.lede{font-size:18px;line-height:1.55;color:var(--ink2);max-width:62ch}
.lede b{color:var(--ink)}
.eyebrow{display:none}
.ctx{font:400 13px/1.5 var(--m);color:var(--mute);margin:0 0 12px;display:flex;flex-wrap:wrap;gap:4px 16px}
.meta{display:flex;flex-wrap:wrap;gap:4px 16px;font:400 13px/1.5 var(--m);color:var(--mute);margin-top:12px}
.meta .dot{display:none}
/* signature: dateline stamp */
.stamp{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;font:400 12px/1.4 var(--m);color:var(--ink2);border-top:1px dashed var(--line2);border-bottom:1px dashed var(--line2);padding:8px 0;margin:16px 0 0}
.stamp b{font-weight:500;color:var(--ink)}
.stamp a{color:var(--ink2)}
/* answer block (country, region) */
.answer{display:grid;grid-template-columns:auto 1fr;gap:8px 32px;align-items:end;margin-top:24px;padding:24px 0 0;border-top:1px solid var(--line)}
.answer .fig{font:500 clamp(48px,7vw,72px)/1 var(--f);letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums}
.answer .what{font-size:16px;color:var(--ink2);padding-bottom:6px}
.answer .what b{color:var(--ink);font-size:18px}
.answer .lab{grid-column:1/-1;font-size:14px;color:var(--mute);order:-1}
.facts{list-style:none;padding:0;margin:20px 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0;border-top:1px solid var(--line)}
.facts li{padding:12px 16px 12px 0;border-bottom:1px solid var(--line);font-size:14px;color:var(--ink2)}
.facts li span{display:block;font-size:13px;color:var(--mute)}
.facts li b{font:500 15px/1.4 var(--m);color:var(--ink)}
.picks{display:none}
/* sections + layout */
.sec{padding-top:48px}
.sec-h{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:16px}
.sec-h p{margin:0;color:var(--ink2);max-width:64ch}
.sec-h>a{font-size:14px;white-space:nowrap}
.cols{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:48px;align-items:start}
.aside{font-size:14px;color:var(--ink2);position:sticky;top:24px}
.aside h2{font-size:15px;margin:0 0 8px;color:var(--ink)}
.aside section+section{margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}
.aside ul{list-style:none;margin:0;padding:0}
.aside li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--line)}
.aside li span{font-family:var(--m);color:var(--mute);font-size:13px}
.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 32px}
.inf{font-size:14px;color:var(--mute)}
/* list rows instead of cards */
.card{display:block;padding:16px 0;border-top:1px solid var(--line);text-decoration:none}
.card h3{margin:0 0 4px;font-size:16px}
a.card:hover h3{color:var(--accent-ink)}
.card p{margin:0;color:var(--ink2);font-size:14px}
.card .from{font:400 13px/1.5 var(--m);color:var(--mute);margin-top:4px}
.card .from b{color:var(--ink)}
/* filters: text toggles */
.ctrl{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;margin:0 0 8px;font-size:14px}
.ctrl .lab{display:none}
.seg{border:0;margin:0;padding:0;display:flex;align-items:center;gap:2px}
.seg legend{float:left;font-size:13px;color:var(--mute);margin-right:8px;padding:0}
.seg label{position:relative;cursor:pointer;user-select:none;-webkit-user-select:none}
.seg input{position:absolute;opacity:0;inset:0}
.seg span{display:inline-flex;align-items:center;min-height:36px;padding:0 8px;color:var(--ink2);border-bottom:2px solid transparent;transition:color .15s var(--ease),border-color .15s var(--ease)}
.seg label:hover span{color:var(--ink)}
.seg input:checked+span{color:var(--ink);border-bottom-color:var(--accent)}
.seg input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px;border-radius:4px}
.count{margin-left:auto;font:400 12px/1 var(--m);color:var(--mute)}
/* the board */
.tw{border-top:1px solid var(--line2);overflow-x:clip}
.pt{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
.pt thead th{position:sticky;top:0;z-index:1;background:var(--bg);text-align:left;font:400 12px/1 var(--m);color:var(--mute);height:40px;padding:0 12px 0 0;border-bottom:1px solid var(--line2)}
.pt th button{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:4px;min-height:40px}
.pt th button:hover{color:var(--ink)}
.pt th[aria-sort] button{color:var(--ink)}
.pt th[aria-sort=ascending] button:after{content:"↑"}.pt th[aria-sort=descending] button:after{content:"↓"}
.pt td{padding:8px 12px 8px 0;border-bottom:1px solid var(--line);vertical-align:middle;height:44px}
.pt tbody tr{transition:background-color .12s var(--ease)}
.pt tbody tr:hover{background:var(--surface)}
.pt .r{text-align:right}.pt th.r{text-align:right}.pt th.r button{justify-content:flex-end}
.pt .pv{font-weight:500}
.pt .dv,.pt td.num{font-family:var(--m)}
.pt .sub.sm{display:none}
.pt .sub{display:block;font-size:12px;color:var(--mute);margin-top:2px}
.pt .price{font:500 15px/1 var(--m)}
.pt .was{display:block;font:400 12px/1.4 var(--m);color:var(--mute);text-decoration:line-through}
.tag{font:400 11px/1 var(--m);color:var(--mute);margin-left:8px;white-space:nowrap}
.tag.n{color:var(--ink2)}
tr.best td:first-child{box-shadow:inset 2px 0 0 var(--cheap);padding-left:10px}
tr.best .pv:after{content:attr(data-best);font:400 11px/1 var(--m);color:var(--cheap);margin-left:8px}
.bar{display:grid;grid-template-columns:1fr 64px;align-items:center;gap:8px}
.bar i{display:block;height:4px;background:var(--line)}
.bar i b{display:block;height:4px;background:var(--bar)}
tr.best .bar i b{background:var(--cheap)}
.bar em{font:400 13px/1 var(--m);font-style:normal;text-align:right;color:var(--ink2)}
.inf.u,.pt .inf{font-family:var(--m)}
.go{display:inline-flex;align-items:center;min-height:36px;padding:0 4px;text-decoration:none;color:var(--accent-ink);font-size:13px;white-space:nowrap}
.go:hover{text-decoration:underline}
.go svg{display:none}
/* ranked lists with thin neutral bars (secondary charts) */
.chart{list-style:none;margin:0;padding:0}
.chart li{display:grid;grid-template-columns:minmax(120px,180px) 1fr 84px;gap:12px;align-items:center;min-height:36px;border-bottom:1px solid var(--line);font-size:14px}
.chart .t a{text-decoration:none}.chart .t a:hover{text-decoration:underline}
.chart .b{height:4px;background:var(--line)}
.chart .b b{display:block;height:4px;background:var(--bar)}
.chart li:first-child .b b{background:var(--accent)}
.chart .v{font:400 13px/1 var(--m);text-align:right}
.chart .v small{color:var(--mute);font-size:12px}
.chart.plain li:first-child .b b{background:var(--bar)}
/* main chart (home) */
.mc{position:relative;padding:8px 0 32px}
.mc .grid{position:absolute;inset:8px 84px 32px 180px;pointer-events:none}
.mc .grid i{position:absolute;top:0;bottom:-20px;border-left:1px solid var(--line)}
.mc .grid i span{position:absolute;bottom:0;left:4px;font:400 11px/1 var(--m);color:var(--mute)}
.mc ol{list-style:none;margin:0;padding:0;position:relative}
.mc li{display:grid;grid-template-columns:180px 1fr 84px;align-items:center;height:32px;font-size:14px}
.mc li a{text-decoration:none}.mc li a:hover{text-decoration:underline}
.mc .b{height:12px;position:relative}
.mc .b b{display:block;height:12px;background:var(--bar);border-radius:0 2px 2px 0}
.mc li:first-child .b b{background:var(--accent)}
.mc .v{font:400 13px/1 var(--m);text-align:right}
.mc .p{font:400 12px/1 var(--m);color:var(--mute);margin-left:8px}
/* home */
.split{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:56px;align-items:center;padding-top:72px;padding-bottom:32px}
.split h1{font-size:clamp(40px,5.4vw,64px);letter-spacing:-.03em;line-height:1.04;max-width:16ch}
.split .lede{font-size:18px;max-width:36rem}
.search{position:relative;margin-top:24px;max-width:28rem}
.search svg{position:absolute;left:14px;top:50%;width:16px;height:16px;transform:translateY(-50%);color:var(--mute)}
.search input{width:100%;height:48px;padding:0 16px 0 40px;font:400 16px var(--f);color:var(--ink);background:var(--surface);border:1px solid var(--line2);border-radius:var(--r2);transition:border-color .15s var(--ease)}
.search input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.board{background:var(--surface);border:1px solid var(--line2);border-radius:var(--r3);padding:20px 24px 16px}
.board h2{font-size:15px;margin:0;color:var(--ink)}
.board .pt td{height:40px;padding-top:6px;padding-bottom:6px}
.board .pt thead th{background:var(--surface)}
.board .stamp{margin:12px 0 0;border-bottom:0;padding-bottom:0}
.idx td:first-child a{text-decoration:none;font-weight:500}.idx td:first-child a:hover{text-decoration:underline}
.idx .muted{color:var(--mute);font-family:var(--m);font-size:13px}
dl.defs{margin:0;display:grid;grid-template-columns:minmax(180px,240px) 1fr;border-top:1px solid var(--line)}
dl.defs dt,dl.defs dd{margin:0;padding:12px 0;border-bottom:1px solid var(--line)}
dl.defs dt a{font-weight:500;text-decoration:none}dl.defs dt a:hover{text-decoration:underline}
dl.defs dd{color:var(--ink2);font-size:14px}
.rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.rows li{display:flex;justify-content:space-between;gap:16px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--line)}
.rows li a{font-weight:500;text-decoration:none}.rows li a:hover{text-decoration:underline}
.rows li span{color:var(--mute);font:400 13px/1.4 var(--m);text-align:right}
/* destination grids → dense link index */
.dest{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:0 24px}
.dest a{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);text-decoration:none;font-size:14px;min-height:40px;align-items:center}
.dest a:hover{color:var(--accent-ink)}
.dest a span{font:400 12px/1 var(--m);color:var(--mute)}
/* prose, faq, steps, sources */
.prose{max-width:68ch;font-size:16px}
.prose h2{margin-top:40px}.prose h3{margin-top:24px}
.prose ul,.prose ol{padding-left:20px;margin:0 0 16px}.prose li{margin-bottom:6px}
.prose a{color:var(--accent-ink)}
.prose table{border-collapse:collapse;width:100%;font-size:14px;margin:8px 0 20px;font-variant-numeric:tabular-nums}
.prose th,.prose td{border-bottom:1px solid var(--line);padding:8px 12px 8px 0;text-align:left;vertical-align:top}
.prose th{font:400 12px/1.4 var(--m);color:var(--mute)}
.callout{border-left:2px solid var(--accent);padding:4px 0 4px 16px;margin:16px 0;color:var(--ink2);font-size:15px}
.callout b{color:var(--ink)}
.steps{list-style:none;padding:0;margin:0;counter-reset:s}
.steps li{counter-increment:s;padding:10px 0 10px 32px;position:relative;border-bottom:1px solid var(--line)}
.steps li:before{content:counter(s);position:absolute;left:0;top:11px;font:400 13px/1.5 var(--m);color:var(--mute)}
.steps h3{display:inline;font-size:15px;margin:0}
.steps h3:after{content:". "}
.steps p,.steps div>p{display:inline;margin:0;color:var(--ink2);font-size:15px}
.faq{border-top:1px solid var(--line);max-width:72ch}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;list-style:none;min-height:48px;padding:12px 32px 12px 0;position:relative;font-weight:500;font-size:16px;user-select:none;-webkit-user-select:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary:after{content:"+";position:absolute;right:4px;top:12px;font:400 16px/1.5 var(--m);color:var(--mute)}
.faq details[open] summary:after{content:"−"}
.faq .a{padding:0 0 16px;color:var(--ink2)}
.src{font-size:13px;color:var(--ink2)}
.src a{color:var(--ink2);word-break:break-word}
.src ul{padding-left:16px;margin:8px 0}
.src h2{font-size:15px}
/* tools */
.tool{background:var(--surface);border:1px solid var(--line2);border-radius:var(--r3);padding:24px}
.field{display:grid;gap:4px;margin-bottom:16px}
.field label{font-size:13px;color:var(--ink2)}
.field input,.field select{font:400 16px var(--f);height:44px;padding:0 12px;border:1px solid var(--line2);border-radius:var(--r2);background:var(--bg);color:var(--ink);width:100%}
.field input:focus,.field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.out{font-size:15px;margin-top:8px}.out .big{font:500 40px/1.1 var(--m);letter-spacing:-.02em;margin:0 0 4px}
.ok{color:var(--cheap)}.no{color:#B4321F}[data-theme=dark] .no{color:#EF7A68}
/* footer */
.ft{margin-top:80px;border-top:1px solid var(--line2);padding:40px 0 32px;font-size:14px;color:var(--ink2)}
.ft .cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:32px}
.ft h2{font-size:13px;font-weight:500;color:var(--ink);margin:0 0 8px}
.ft ul{list-style:none;margin:0;padding:0}
.ft li a{display:inline-block;padding:4px 0;text-decoration:none}.ft li a:hover{color:var(--ink);text-decoration:underline}
.ft .all{margin-top:32px;border-top:1px solid var(--line);padding-top:8px}
.ft .all summary{cursor:pointer;list-style:none;min-height:44px;display:flex;align-items:center;font-weight:500;color:var(--ink);user-select:none;-webkit-user-select:none}
.ft .all summary::-webkit-details-marker{display:none}
.ft .all summary:after{content:"+";margin-left:8px;font-family:var(--m);color:var(--mute)}
.ft .all[open] summary:after{content:"−"}
.ft .all h3{font-size:13px;font-weight:500;color:var(--ink);margin:16px 0 4px}
.ft .all ul{columns:5 160px;column-gap:24px;font-size:13px}
.ft .all li a{padding:2px 0}
.ft .base{margin-top:32px;display:flex;justify-content:space-between;gap:24px;font-size:12px;color:var(--mute)}
.ft .base p{margin:0;max-width:80ch}
/* touch + mobile */
@media (hover:none){a:hover{text-decoration-color:var(--line2)}.pt tbody tr:hover{background:none}.lang summary:hover,.tbtn:hover{background:none}}
@media (max-width:900px){
 .wrap{padding-left:20px;padding-right:20px}
 .nav{display:none}
 .split{grid-template-columns:1fr;padding-top:32px;padding-bottom:8px;gap:32px}
 .split h1{font-size:40px}
 .cols{grid-template-columns:1fr;gap:32px}.aside{position:static}
 .g2,.g3{grid-template-columns:1fr;gap:0}
 .g2>div+div{margin-top:40px}
 .ft .cols{grid-template-columns:1fr 1fr}
 dl.defs{grid-template-columns:1fr}dl.defs dt{border-bottom:0;padding-bottom:0}
 .mc .grid{inset:8px 72px 32px 120px}.mc li{grid-template-columns:120px 1fr 72px}
 .chart li{grid-template-columns:110px 1fr 72px}
}
@media (max-width:640px){
 body{font-size:15px}
 h1{font-size:32px}
 .lede{font-size:16px}
 .sec{padding-top:40px}
 .sec-h{flex-direction:column;align-items:start;gap:8px}
 .hm{display:none}
 .pt{font-size:14px}
 .pt td{padding-right:8px}
 .pt .sub.hm{display:none}
 .answer{grid-template-columns:1fr;gap:4px}
 .answer .what{padding-bottom:0}
 .board{padding:16px}
 .ctrl{gap:4px 16px}.count{margin-left:0;width:100%}
 .ft .base{flex-direction:column}
 .tag{display:block;margin:2px 0 0}
 tr.best .pv:after{display:block;margin:4px 0 0}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
.g75{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px;align-items:start}
.g75 h3{font-size:14px;font-weight:500;color:var(--ink2);margin:8px 0 8px}
@media (max-width:900px){.g75{grid-template-columns:1fr;gap:32px}}
#plans th:nth-child(1){width:22%}#plans th:nth-child(2){width:28%}#plans th:nth-child(4){width:12%}#plans th:nth-child(5){width:22%}
#plans td:nth-child(5),#plans th:nth-child(5){padding-left:20px}
.bar{grid-template-columns:1fr 56px}
dl.defs dd .mono{display:block;font-size:13px;color:var(--mute);margin-top:2px}
.aside .src ul{padding:0}.aside .src li{display:block}
.what .go{padding:0}
@media (max-width:640px){#plans th,#plans td{width:auto!important}#plans td:nth-child(5){padding-left:0}}
@media (max-width:640px){.hs{display:none}.pt .sub.sm{display:block;font-family:var(--m)}}
@media (pointer:coarse){.seg span{min-height:44px}.go{min-height:44px}.pt th button{min-height:44px}.dest a,.aside li{min-height:44px}}

/* ---- passport sorted ---- */
.lede.sm{font-size:15px;color:var(--mute)}
.split{align-items:start}
.tool{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;padding:20px}
.tool .field{margin-bottom:12px}
.tool select{font:400 15px var(--f);height:44px;padding:0 10px;border:1px solid var(--line2);border-radius:var(--r2);background:var(--bg);color:var(--ink);width:100%}
.drop{display:grid;gap:2px;place-items:center;text-align:center;border:1px dashed var(--line2);border-radius:var(--r2);padding:16px 12px;cursor:pointer;transition:border-color .15s var(--ease),background-color .15s var(--ease)}
.drop:hover,.drop.over{border-color:var(--accent);background:var(--accent-soft)}
.drop:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.drop .dz{font-size:15px}.drop u{color:var(--accent-ink);text-underline-offset:3px}
.drop .dn{font-size:12px;color:var(--mute)}
.frame{margin:12px 0 0;display:grid;place-items:center;min-height:240px;background:var(--bg);border-radius:var(--r2);padding:12px}
.frame canvas{width:100%;max-width:300px;height:auto;display:block;border-radius:2px;box-shadow:0 0 0 1px var(--line2)}
.frame figcaption{font:400 12px/1 var(--m);color:var(--mute);margin-top:8px}
.draw{width:100%;max-width:260px;height:auto;display:block;overflow:visible}
.draw.big{max-width:300px}
.draw .pf{fill:var(--surface);stroke:var(--ink);stroke-width:1}
.draw .hd{fill:none;stroke:var(--ink2);stroke-width:1}
.draw .gl{stroke:var(--accent);stroke-width:.8;stroke-dasharray:3 3;fill:none}
.draw .dm{stroke:var(--mute);stroke-width:.8;fill:none}
.draw text{font:400 11px var(--m);fill:var(--ink2)}
.draw text.acc{fill:var(--accent-ink);font-weight:500}
.tool .th{font-size:15px;margin:0 0 8px}
.state{font:400 13px/1.4 var(--m);color:var(--accent-ink);min-height:18px;margin:0 0 4px}
.tool.busy .state:after{content:"";display:inline-block;width:8px;height:8px;margin-left:8px;border-radius:50%;background:var(--accent);animation:pl 1s infinite alternate}
@keyframes pl{to{opacity:.2}}
.checks{list-style:none;margin:0;padding:0;border-top:1px solid var(--line);font-size:14px}
.checks li{display:grid;grid-template-columns:44px 1fr;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);color:var(--ink2);line-height:1.45}
.checks li.empty{display:block;color:var(--mute)}
.checks b{font:500 11px/1.9 var(--m);text-transform:uppercase;letter-spacing:.04em}
.checks .pass b{color:var(--pass)}.checks .warn b{color:var(--warn)}.checks .fail b{color:var(--fail)}.checks .info b{color:var(--mute)}
.checks .fail{color:var(--ink)}
.buy{margin-top:16px;font-size:14px}
.buy p{margin:0 0 8px;color:var(--ink2)}
.cons{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--ink2);margin-bottom:12px;cursor:pointer}
.cons input{margin-top:3px;accent-color:var(--accent)}
.em{display:block;margin-bottom:12px}.em[hidden]{display:none}.em input{font:400 15px var(--f);width:100%;max-width:360px;height:44px;padding:0 12px;border:1px solid var(--line2);border-radius:var(--r2);background:var(--bg);color:var(--ink)}.em input:focus{outline:2px solid var(--accent);outline-offset:1px}
.buy[data-state=check] .em,.buy[data-state=soon] .em,.buy[data-state=bad] .em{display:none}
.btn{font:500 15px var(--f);height:44px;padding:0 20px;border:0;border-radius:var(--r2);background:var(--accent);color:#fff;cursor:pointer;transition:opacity .15s var(--ease)}
[data-theme=dark] .btn{color:#14131B}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .btn{color:#14131B}}
.btn:disabled{opacity:.4;cursor:not-allowed}
.buy[data-state=check] .cons{display:none}.buy[data-state=soon] .cons,.buy[data-state=bad] .cons{display:none}
.stamp span{color:var(--mute)}
.specg{align-items:start;margin-bottom:20px}
blockquote.q{margin:16px 0;padding:0 0 0 16px;border-left:2px solid var(--line2);color:var(--ink2);font-size:15px;max-width:68ch}
.notes{padding-left:18px;color:var(--ink2);font-size:15px;max-width:68ch}
.ft .mini{columns:2;column-gap:16px;font-size:13px}
.ft .cols{grid-template-columns:1fr 1fr 1fr 2fr}
.rows.plain li{flex-direction:column;gap:2px}.rows.plain li span{text-align:left}
.order .rows{margin:16px 0;max-width:640px}
@media (max-width:900px){.tool{grid-template-columns:1fr}.ft .cols{grid-template-columns:1fr 1fr}.specg{grid-template-columns:1fr}}
.frame canvas[hidden]{display:none}
.specg{grid-template-columns:minmax(0,280px) minmax(0,1fr);gap:32px}
.specg dl.defs{grid-template-columns:minmax(120px,170px) 1fr}
.frame #specfig{display:grid;place-items:center;width:100%}
@media (max-width:900px){.specg{grid-template-columns:1fr}}
#specfig[hidden]{display:none}
@media (max-width:640px){.answer .fig{font-size:40px}}
/* v5: live camera coach, redo, status notes, guarantee form, answers */
.camgo{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font:inherit;color:var(--ink);background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--r2);padding:12px 14px;margin:0 0 12px;cursor:pointer;transition:background-color .15s var(--ease)}
.camgo:hover{background:var(--surface)}.camgo:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.camgo svg{width:26px;height:26px;flex:none;color:var(--accent-ink)}.camgo span{display:grid;gap:2px}.camgo b{font-weight:600;font-size:15px}.camgo small{font-size:12px;color:var(--ink2)}
html.cam-open,html.cam-open body{overflow:hidden}
.cam{position:fixed;inset:0;z-index:100;background:#0b0c0e;color:#f3f4f6;display:flex;justify-content:center;overflow-y:auto}
.cam-in{width:100%;max-width:520px;display:flex;flex-direction:column;gap:8px;padding:max(8px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom))}
.cam-top{display:flex;align-items:center;gap:8px;min-height:44px}
.cam-x,.cam-flip{font:inherit;color:#f3f4f6;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:var(--r2);height:40px;padding:0 12px;cursor:pointer}
.cam-x{width:40px;padding:0;font-size:22px;line-height:1}
.cam-doc{flex:1;font:400 13px/1.3 var(--m);color:#c7cad1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cam-stage{position:relative;width:100%;max-height:62vh;margin:0 auto;border-radius:var(--r2);overflow:hidden;background:#000}
.cam-stage video,.cam-stage canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cam-stage video.mir{transform:scaleX(-1)}
.cam-say{font-size:16px;line-height:1.35;min-height:44px;margin:4px 0 0;font-weight:500}
.cam-chips{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}
.cam-chips li{font:400 12px/1 var(--m);padding:6px 8px;border-radius:999px;border:1px solid rgba(255,255,255,.2);color:#c7cad1}
.cam-chips li.ok{border-color:#2fa36b;color:#8fe0b7}.cam-chips li.ok:before{content:"✓ "}
.cam-chips li.no{border-color:#d9822b;color:#ffc58f}.cam-chips li.no:before{content:"• "}
.cam-bot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:4px}
.cam-auto{display:flex;align-items:center;gap:6px;font-size:14px;color:#c7cad1}
.cam-shoot{min-width:140px;height:48px}.cam-shoot:disabled{opacity:.45;cursor:not-allowed}
.cam-note{font-size:12px;line-height:1.4;color:#9aa0aa;margin:4px 0 0}
.redo{font-size:14px;border-left:2px solid var(--pass);padding:4px 0 4px 12px;margin:8px 0;color:var(--ink2)}
.buy[data-state=redo] .em,.buy[data-state=redo] .cons+.em{display:none}
.status{border:1px solid var(--warn);border-radius:var(--r2);padding:14px 16px;margin:16px 0;background:var(--surface)}
.status p{margin:0 0 8px;font-size:15px}.status .st-h{font:600 13px/1.3 var(--m);color:var(--warn);text-transform:uppercase;letter-spacing:.03em}
.st-src{margin:4px 0 0;padding-left:18px;font-size:13px}
.claim{max-width:560px;margin:16px 0}.claim fieldset{border:0;padding:0;margin:0 0 16px}.claim legend{font-size:13px;color:var(--ink2);margin-bottom:6px}
.claim .opt{display:flex;align-items:center;gap:8px;font-size:15px;color:var(--ink);min-height:36px}
.claim small{font-size:12px;color:var(--mute)}
.field textarea{font:400 16px var(--f);padding:10px 12px;border:1px solid var(--line2);border-radius:var(--r2);background:var(--bg);color:var(--ink);width:100%;resize:vertical}
.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.whys{padding-left:20px}.whys li{margin:0 0 8px}
.steps.fix h3{font-size:16px;margin:0 0 4px}
.rows.plain li{display:grid;gap:2px;padding:10px 0;border-bottom:1px solid var(--line)}.rows.plain li span{font-size:13px;color:var(--mute)}
