:root{--bg:#f4f7fb;--card:rgba(255,255,255,.86);--tx:#0b1220;--mut:#334155;--acc:#1e40af;--bd:#94a3b8;--btn:#1e40af;--btx:#fff;--sb:#991b1b;--sx:#fff;--warn:#92400e;--wbg:#fef3c7;--ok:#065f46;--okbg:#d1fae5;--bad:#991b1b;--bbg:#fee2e2;--run:#0c4a6e;--rbg:#e0f2fe;--grid:rgba(30,64,175,.09);color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#060a12;--card:rgba(15,23,42,.86);--tx:#f1f5f9;--mut:#cbd5e1;--acc:#7dd3fc;--bd:#475569;--btn:#38bdf8;--btx:#04111f;--sb:#fca5a5;--sx:#450a0a;--warn:#fde68a;--wbg:#451a03;--ok:#a7f3d0;--okbg:#022c22;--bad:#fecaca;--bbg:#450a0a;--run:#bae6fd;--rbg:#082f49;--grid:rgba(125,211,252,.08);color-scheme:dark}}:root[data-theme="dark"]{--bg:#060a12;--card:rgba(15,23,42,.86);--tx:#f1f5f9;--mut:#cbd5e1;--acc:#7dd3fc;--bd:#475569;--btn:#38bdf8;--btx:#04111f;--sb:#fca5a5;--sx:#450a0a;--warn:#fde68a;--wbg:#451a03;--ok:#a7f3d0;--okbg:#022c22;--bad:#fecaca;--bbg:#450a0a;--run:#bae6fd;--rbg:#082f49;--grid:rgba(125,211,252,.08);color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(env(safe-area-inset-top,0px) + 70px)}body{margin:0;background:var(--bg) linear-gradient(var(--grid) 1px,transparent 1px) 0 0/32px 32px;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);color:var(--tx);font:16px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);background:var(--card);backdrop-filter:blur(12px);z-index:20}a{color:var(--acc)}header{position:sticky;top:env(safe-area-inset-top,0px);z-index:21;display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--card);backdrop-filter:blur(12px);border-bottom:1px solid var(--bd)}.logo{font-weight:800;color:var(--acc);text-decoration:none;margin-right:auto}nav{display:flex;gap:14px}nav a{color:var(--mut);text-decoration:none;font-size:14px}button,.btn{font:inherit;font-weight:700;font-size:14px;cursor:pointer;border:1px solid transparent;border-radius:10px;padding:9px 16px;background:var(--btn);color:var(--btx);text-decoration:none;display:inline-block;transition:transform .15s}button:hover:not(:disabled),.btn:hover{transform:translateY(-2px)}button:disabled{opacity:.45;cursor:not-allowed}.ghost{background:transparent;color:var(--tx);border-color:var(--bd)}.stop{background:var(--sb);color:var(--sx)}.off{opacity:.55}main{max-width:1120px;margin:0 auto;padding:0 16px}.card{background:var(--card);backdrop-filter:blur(12px);border:1px solid var(--bd);border-radius:16px;padding:18px}.hero{text-align:center;padding:56px 0 30px}h1{font-size:clamp(28px,5vw,52px);line-height:1.15;margin:.3em 0}h1 span{color:var(--acc)}h2{font-size:clamp(22px,3.4vw,32px);margin:50px 0 16px;text-align:center}.sub{max-width:720px;margin:0 auto 22px;color:var(--mut);font-size:18px}.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.grid h3{margin:.2em 0}.grid p{margin:0;color:var(--mut)}.bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0}.tabs button{background:transparent;color:var(--tx);border-color:var(--bd)}.tabs button.on{background:var(--btn);color:var(--btx)}.st{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:12px;padding:10px;border:1px solid var(--bd);border-radius:12px}.badge{padding:4px 12px;border-radius:99px;font-weight:700;font-size:13px;background:var(--card);color:var(--tx);border:1px solid var(--bd)}.badge.run{background:var(--rbg);color:var(--run)}.badge.stp{background:var(--wbg);color:var(--warn)}.badge.done{background:var(--okbg);color:var(--ok)}.radar{width:34px;height:34px;border-radius:50%;border:2px solid var(--bd);position:relative;flex:none}.radar.on{border-color:var(--acc);background:conic-gradient(from 0deg,transparent 70%,var(--acc));animation:sp 1s linear infinite}.radar.on::after{content:"";position:absolute;inset:-2px;border-radius:50%;border:2px solid var(--acc);animation:pu 1.2s ease-out infinite}@keyframes sp{to{transform:rotate(360deg)}}@keyframes pu{from{transform:scale(1);opacity:.8}to{transform:scale(1.7);opacity:0}}.tick{flex:1;min-width:140px;font:12px/1.3 ui-monospace,Consolas,monospace;color:var(--mut);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pbar{height:8px;border-radius:9px;background:var(--bd);flex-basis:100%;overflow:hidden}.pbar i{display:block;height:100%;width:0;background:var(--btn);transition:width .2s}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.chip{padding:5px 12px;border:1px solid var(--bd);border-radius:99px;font-size:13px;cursor:pointer;user-select:none}.chip.on{background:var(--btn);color:var(--btx);border-color:transparent}input[type=search],input[type=text]{background:var(--bg);color:var(--tx);border:1px solid var(--bd);border-radius:10px;padding:8px 12px;font:inherit;min-width:0}.tw{overflow:auto;max-height:420px;border:1px solid var(--bd);border-radius:12px;margin-top:8px}table{border-collapse:collapse;width:100%;font-size:13px}th,td{padding:7px 10px;text-align:left;border-bottom:1px solid var(--bd);white-space:nowrap;max-width:340px;overflow:hidden;text-overflow:ellipsis}th{position:sticky;top:0;background:var(--bg);color:var(--tx)}tr.g td{background:var(--rbg);color:var(--run);font-weight:700}.nm{cursor:pointer;color:var(--acc);text-decoration:underline}.keep{color:var(--ok);font-weight:700}.dupl{color:var(--bad);font-weight:700}.fl{color:var(--warn);background:var(--wbg);border-radius:6px;padding:1px 6px}.split{display:grid;grid-template-columns:1fr 300px;gap:12px}#pv{border:1px solid var(--bd);border-radius:12px;padding:10px;max-height:460px;overflow:auto;font-size:13px;word-break:break-all}#pv img,#pv video{max-width:100%;border-radius:8px}#pv audio{width:100%}pre{white-space:pre-wrap;margin:0;font:11px/1.4 ui-monospace,Consolas,monospace}.cards{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.cards div{border:1px solid var(--bd);border-radius:12px;padding:10px}.cards b{display:block;font-size:22px;color:var(--acc)}.bars div{display:grid;grid-template-columns:100px 1fr 90px;gap:8px;align-items:center;margin:6px 0;font-size:13px}.bars i{display:block;height:14px;border-radius:7px;background:var(--btn)}#cf,#toast{display:none;margin-top:10px;padding:10px 12px;border-radius:10px;background:var(--wbg);color:var(--warn);font-weight:600}#cf.on,#toast.on{display:block}.dl{text-align:center}.dl .btn{margin-top:8px}details{margin:8px 0;padding:12px 16px;border:1px solid var(--bd);border-radius:12px;background:var(--card)}summary{cursor:pointer;font-weight:600}details p{margin:8px 0 0;color:var(--mut)}footer{padding:30px 16px 50px;text-align:center;color:var(--mut);font-size:13px}@media (max-width:820px){nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;padding:8px 16px;background:var(--bg);border-bottom:1px solid var(--bd)}nav.open{display:flex}nav a{padding:10px 0;font-size:16px}#mn{display:inline-block}.split{grid-template-columns:1fr}#pv{max-height:260px}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}.logo{display:flex;align-items:center;gap:8px}#mn{display:none}nav a.on{color:var(--acc);font-weight:700}#pm{display:none;position:fixed;inset:0;z-index:50;background:rgba(2,6,23,.72);align-items:center;justify-content:center;padding:16px}#pm.on{display:flex}.pb{background:var(--bg);color:var(--tx);border:1px solid var(--bd);border-radius:18px;padding:22px;max-width:540px;width:100%;max-height:92vh;overflow:auto}.pb h2{margin:6px 0;text-align:left}.pb label{display:flex;gap:10px;align-items:flex-start;padding:10px;border:1px solid var(--bd);border-radius:12px;margin:8px 0;cursor:pointer}.pb label span{display:block;color:var(--mut);font-size:13px}.pb input{margin-top:4px;width:18px;height:18px;flex:none}.steps{counter-reset:s}.steps .card::before{counter-increment:s;content:counter(s);display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--btn);color:var(--btx);font-weight:800;margin-bottom:8px}.pg{padding:36px 0 6px}.pg h1{font-size:clamp(26px,4vw,40px);margin:.2em 0}.pg p,.txt p,.txt li{color:var(--mut)}.txt h2{text-align:left;margin:30px 0 8px;font-size:22px}.note{padding:12px 14px;border-radius:12px;background:var(--wbg);color:var(--warn);font-weight:600;margin:14px 0}table.cmp{min-width:560px}table.cmp th,table.cmp td{white-space:normal;max-width:none}.cmpw{overflow:auto;border:1px solid var(--bd);border-radius:12px}footer a{color:var(--mut);margin:0 8px}.sm{font-size:13px;color:var(--mut)}:root{--sec-free:#d5dbe5;--sec-used:#8b9ab0;--sec-dup:#c2410c;--sec-rec:#047857;--sec-unk:#eef1f6;--bd:#b7c0cf;--btn:#1d4ed8}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--sec-free:#1b2740;--sec-used:#4a5d7d;--sec-dup:#fb923c;--sec-rec:#34d399;--sec-unk:#111a2d;--bd:#33425e;--btn:#60a5fa}}:root[data-theme="dark"]{--sec-free:#1b2740;--sec-used:#4a5d7d;--sec-dup:#fb923c;--sec-rec:#34d399;--sec-unk:#111a2d;--bd:#33425e;--btn:#60a5fa}body{font-size:17px;line-height:1.65;background-image:none;font-family:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,sans-serif}:focus-visible{outline:3px solid var(--acc);outline-offset:2px}.skip{position:absolute;left:-999px;top:0;background:var(--btn);color:var(--btx);padding:10px 14px;z-index:99}.skip:focus{left:8px;top:8px}header,.card{backdrop-filter:none}header{background:var(--bg)}.logo span{letter-spacing:-.01em}nav a{font-size:15px}h1,h2,h3{font-family:"Segoe UI Variable Display","Segoe UI",system-ui,sans-serif;letter-spacing:-.02em}h1{font-size:clamp(2rem,4.8vw,3.4rem);line-height:1.08;margin:0 0 .45em;text-align:left;max-width:20ch}h2{text-align:left;font-size:clamp(1.4rem,2.6vw,1.9rem);margin:56px 0 14px}.btn,button{border-radius:6px}.card{background:transparent;border:0;border-top:1px solid var(--bd);border-radius:0;padding:18px 0;margin:0}#app.card{border:1px solid var(--bd);border-radius:10px;padding:18px;background:var(--card);margin-bottom:24px}.grid .card,.dl .card{border:1px solid var(--bd);border-radius:8px;padding:16px;background:var(--card)}.hero2{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:40px;align-items:center;padding:48px 0 24px}.hero2 .lead{font-size:1.15rem;color:var(--mut);max-width:52ch}.hero2 .acts{display:flex;gap:10px;flex-wrap:wrap;margin:22px 0 10px}.map{border:1px solid var(--bd);border-radius:10px;padding:12px;background:var(--card)}.map canvas{display:block;width:100%}.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin:10px 0 0;padding:0;list-style:none;font-size:14px;color:var(--mut)}.legend i{display:inline-block;width:12px;height:12px;margin-right:6px;vertical-align:-1px;border-radius:2px}.l0{background:var(--sec-free)}.l1{background:var(--sec-used)}.l2{background:var(--sec-dup)}.l3{background:var(--sec-rec)}.rows{margin:0;padding:0;list-style:none}.rows li{border-top:1px solid var(--bd)}.rows li:last-child{border-bottom:1px solid var(--bd)}.rows a{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:4px 36px;padding:18px 0;color:var(--tx);text-decoration:none}.rows a:hover h3{text-decoration:underline}.rows h3{margin:0;font-size:1.15rem}.rows p{margin:0;color:var(--mut)}.crumbs{font-size:14px;color:var(--mut);margin:22px 0 0}.crumbs a{color:var(--mut)}.crumbs span[aria-current]{color:var(--tx)}.article{max-width:70ch}.article h2{margin:2em 0 .4em}.article p,.article li{color:var(--tx)}.article ul,.article ol{padding-left:1.3em}.article li{margin:.35em 0}.lead{font-size:1.15rem;color:var(--mut)}.try{border:1px solid var(--bd);border-left:4px solid var(--btn);padding:16px 18px;margin:2em 0;border-radius:4px;background:var(--card)}.try p{margin:.2em 0 .8em}.related{border-top:1px solid var(--bd);margin-top:2.4em;padding-top:1em}.related h2{margin:0 0 .4em;font-size:1.2rem}.related ul{margin:0;padding-left:1.2em}.fgrid{display:grid;grid-template-columns:2fr 1fr 1.3fr 1.5fr;gap:24px;text-align:left;max-width:1120px;margin:0 auto;padding:30px 16px 10px;border-top:1px solid var(--bd)}.fgrid ul{list-style:none;margin:6px 0 0;padding:0}.fgrid li{margin:4px 0}.fgrid p{margin:6px 0;color:var(--mut)}.fgrid b{color:var(--tx)}footer{padding:10px 0 40px;text-align:left}footer>.sm{max-width:1120px;margin:10px auto 0;padding:0 16px;text-align:left;color:var(--mut)}footer a{margin:0}@media (max-width:820px){.hero2{grid-template-columns:1fr;padding-top:28px}.rows a{grid-template-columns:1fr}.fgrid{grid-template-columns:1fr 1fr}h1{max-width:none}}@media (max-width:480px){.fgrid{grid-template-columns:1fr}}header{flex-wrap:nowrap}header .logo{min-width:0}.logo span{white-space:nowrap}.nav-dl{display:none}@media (max-width:820px){header{gap:8px;padding:8px 12px}header .btn,header button{padding:8px 12px;font-size:14px;min-height:40px}}@media (max-width:560px){header>.btn{display:none}nav.open .nav-dl{display:block}.logo span{font-size:16px}}body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(var(--bd) 1px,transparent 1.3px);background-size:28px 28px;opacity:.32}.btn,button{box-shadow:0 3px 0 rgba(0,0,0,.22);transition:transform .12s,box-shadow .12s}.btn:active,button:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 rgba(0,0,0,.22)}.map,.try,.grid .card,#app.card{box-shadow:0 1px 0 var(--bd),0 14px 26px -18px rgba(5,10,30,.45)}.ad-slot{margin:28px 0;min-height:0;text-align:center}.ad-slot[hidden]{display:none}.ad-slot small{display:block;color:var(--mut);font-size:12px;margin-bottom:4px}.tool{border:1px solid var(--bd);border-radius:10px;padding:18px;margin:18px 0;background:var(--card)}.tool h2{margin:0 0 6px;font-size:1.3rem}.tool input[type=file]{margin:8px 0;max-width:100%}.tool .out{margin-top:10px;word-break:break-all}.tool code{font-size:13px;word-break:break-all}.out .row{padding:10px 0;border-top:1px solid var(--bd)}#cc{position:fixed;left:12px;right:12px;bottom:12px;z-index:60;max-width:720px;margin:auto;background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:14px 16px;box-shadow:0 10px 30px rgba(0,0,0,.35)}#cc p{margin:0 0 10px;color:var(--tx);font-size:15px}.fgrid{grid-template-columns:1.6fr 1fr 1.2fr 1.4fr 1.1fr}@media (max-width:820px){.fgrid{grid-template-columns:1fr 1fr}}@media (max-width:480px){.fgrid{grid-template-columns:1fr}}@media (max-width:560px){#th{font-size:0;padding:8px 12px}#th::before{content:"\25D0";font-size:20px;line-height:1}header .logo span{font-size:15px}}@media (max-width:820px){#mn{display:inline-block}}:root{--glow:rgba(29,78,216,.10);--noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--glow:rgba(96,165,250,.16)}}:root[data-theme="dark"]{--glow:rgba(96,165,250,.16)}body{background-image:var(--noise);background-repeat:repeat}header{background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.hero2{position:relative;isolation:isolate}.hero2::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(460px circle at var(--mx,72%) var(--my,35%),var(--glow),transparent 70%)}.floor{position:absolute;left:-6%;right:-6%;bottom:-70px;height:240px;z-index:-1;perspective:420px;overflow:hidden;pointer-events:none;-webkit-mask-image:linear-gradient(to top,#000 10%,transparent);mask-image:linear-gradient(to top,#000 10%,transparent)}.floor::before{content:"";position:absolute;inset:0;transform:rotateX(64deg);transform-origin:50% 100%;background-image:linear-gradient(var(--bd) 1px,transparent 1px),linear-gradient(90deg,var(--bd) 1px,transparent 1px);background-size:46px 46px;opacity:.55;animation:floor 3.2s linear infinite}@keyframes floor{to{background-position:0 46px}}.hero2 .lead,.hero2 h1,.hero2 .acts,.hero2 .sm{animation:up .7s cubic-bezier(.2,.7,.2,1) both}.hero2 .lead{animation-delay:.08s}.hero2 .acts{animation-delay:.16s}.hero2 .sm{animation-delay:.24s}.hero2 .map{animation:up .9s .15s cubic-bezier(.2,.7,.2,1) both}@keyframes up{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}.js .rv{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.2,1)}.js .rv.in{opacity:1;transform:none}.js .tilt.rv.in{transition:transform .15s ease-out,opacity .6s}.map{transform-style:preserve-3d;will-change:transform}.btn{position:relative;overflow:hidden}.btn::after{content:"";position:absolute;top:0;left:-70%;width:50%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-20deg);transition:left .5s}.btn:hover::after{left:130%}.rows a{transition:padding-left .2s,background .2s}.rows a:hover{padding-left:12px;background:linear-gradient(90deg,var(--glow),transparent)}.article a:not(.btn){text-underline-offset:3px}@media (max-width:820px){.floor{height:160px;bottom:-40px}}@media (prefers-reduced-motion:reduce){.floor::before,.hero2 *{animation:none!important}.btn::after{display:none}}html,body{overflow-x:clip}main{overflow-x:clip}:root{--r:6px;--font:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}body{background:var(--bg)!important;background-image:none!important;font-family:var(--font);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}body::after,.hero2::after,.floor{display:none!important}h1,h2,h3{font-weight:650;letter-spacing:-.015em;line-height:1.2}h1{font-size:clamp(1.9rem,3.6vw,2.6rem);max-width:20ch}h2{font-size:1.45rem;margin-top:2.4rem}h3{font-size:1.05rem}.hero2{padding:56px 0 32px;gap:56px}.hero2 .lead{font-size:1.08rem;max-width:50ch}.hero2 *{animation:none!important}.btn,button,.ghost{border-radius:var(--r)!important;box-shadow:none!important;border-bottom-width:1px!important;font-weight:600;transition:background .15s,border-color .15s}.btn::after{display:none!important}.btn:hover,button:hover{transform:none!important;filter:none}.btn:not(.ghost):hover{filter:brightness(1.1)}.map,.try,.grid .card,#app.card,.card{box-shadow:none!important;border-radius:8px!important;background:var(--card)!important;transform:none!important}.map{padding:14px}header{background:var(--bg)!important;backdrop-filter:none!important;border-bottom:1px solid var(--bd)}.logo span{font-weight:650;color:var(--tx)!important;letter-spacing:-.01em}.rows a{transition:none!important}.rows a:hover{padding-left:0!important;background:transparent!important}.rows a:hover h3{text-decoration:underline;text-underline-offset:3px}#th{padding:6px 10px;font-size:13px;color:var(--mut)}.chip,.pill,[class*="chip"]{border-radius:var(--r)!important}h1,h2,h3,.lead{text-shadow:none!important}#th{font-weight:500}