@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f7f7f8;--panel:#fff;--panel-2:#f2f2f4;--ink:#0d0e10;--muted:#5d6169;--accent:#4f5bd5;--accent-ink:#fff;--signal:#d99a00;--warn:#8a5a00;--danger:#c4322b;--ok:#1f7a4a;--field:#fff;--focus:#4f5bd5;--violet:#6e56cf;--line:#0d0e1017;--line-strong:#0d0e1029;--hover:#0d0e100a;--active:#0d0e100f;--field-bg:#0d0e1005;--nav-ink:var(--muted);--btn-bg:linear-gradient(180deg, #2b2d33 0%, #111216 100%);--btn-ink:#fff;--btn-edge:#ffffff24;--glow:#4f5bd52e;--glow-a:#4f5bd514;--glow-b:#6e56cf0d;--glow-line:#4f5bd580;--glow-fill:#4f5bd50d;--shadow:0 1px 2px #0d0e100a;--shadow-lg:0 24px 48px -24px #0d0e102e;--grad-text:linear-gradient(180deg, #0d0e10 0%, #3a3d45 60%, #5d6169 100%);--sheen:#ffffff38;--glass:#fffc;--hair:var(--line);--r-sm:8px;--r:12px;--r-card:16px;--r-lg:24px;--radius:var(--r-card);--radius-sm:var(--r-sm);--radius-lg:var(--r-lg);--h:40px;--h-sm:32px;--font:"Geist Variable", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--mono:ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;--fs-xs:12px;--fs-sm:13px;--fs:14.5px;--fs-md:16px;--ease:cubic-bezier(.16, 1, .3, 1);--t:.4s;--dur:.8s;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#08090a;--panel:#111214;--panel-2:#17181b;--ink:#f7f8f8;--muted:#8a8f98;--accent:#8b93ff;--accent-ink:#08090a;--signal:#f0b92b;--warn:#f2c94c;--danger:#ff8a80;--ok:#5fd39a;--field:#0d0e10;--focus:#8b93ff;--violet:#b4a6ff;--line:#ffffff14;--line-strong:#ffffff24;--hover:#ffffff0a;--active:#ffffff12;--field-bg:#ffffff05;--btn-bg:linear-gradient(180deg, #fff 0%, #e2e3e6 100%);--btn-ink:#08090a;--btn-edge:#ffffff80;--glow:#8b93ff29;--glow-a:#8b93ff0f;--glow-b:#b4a6ff0a;--glow-line:#d6daff80;--glow-fill:#ffffff08;--shadow:0 1px 0 #ffffff08 inset;--shadow-lg:0 32px 64px -32px #000c;--grad-text:linear-gradient(180deg, #fff 0%, #e6e7ea 45%, #8f939b 100%);--sheen:#ffffffe6;--glass:#ffffff05}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:16px}body{background:var(--bg);color:var(--ink);font:var(--fs)/1.6 var(--font);font-feature-settings:"ss01", "cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0}body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(70vw 50vh at 60% -18%, var(--glow-a), transparent 70%), radial-gradient(40vw 40vh at 100% 0%, var(--glow-b), transparent 70%);position:fixed;inset:0}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.mono,code,pre,.hash-val{font-family:var(--mono);font-size:.92em}h1{letter-spacing:-.03em;color:var(--ink);text-wrap:balance;margin:0 0 8px;font-size:clamp(28px,3vw,36px);font-weight:600;line-height:1.12}h2{letter-spacing:-.02em;margin:40px 0 16px;font-size:18px;font-weight:600;line-height:1.3}h3{letter-spacing:-.01em;margin:0 0 8px;font-size:15px;font-weight:600}p{margin:0 0 12px}a{color:var(--accent);transition:color var(--t) var(--ease);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.lead{color:var(--muted);max-width:64ch;font-size:15px;line-height:1.65}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}[hidden]{display:none!important}::selection{background:color-mix(in srgb, var(--accent) 35%, transparent)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-sm)}.skip{z-index:100;background:var(--ink);color:var(--bg);border-radius:var(--r-sm);padding:10px 14px;position:absolute;top:-60px;left:8px}.skip:focus{top:8px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.app{grid-template-columns:264px minmax(0,1fr);min-height:100vh;display:grid}.side{border-right:1px solid var(--line);background:color-mix(in srgb, var(--bg) 70%, transparent);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex-direction:column;align-self:start;gap:20px;height:100vh;padding:20px 12px 20px 16px;display:flex;position:sticky;top:0;overflow:auto}.side-top{align-items:center;display:flex}.brand{height:var(--h);letter-spacing:-.02em;color:var(--ink);align-items:center;gap:10px;padding:0 12px;font-size:17px;font-weight:600;text-decoration:none;display:flex}.brand:hover{text-decoration:none}.brand svg{flex:none;width:22px;height:22px}.brand .b-body{fill:none;stroke:var(--ink);stroke-width:5px}.brand .b-mark{fill:var(--signal)}.brand .b-hub{fill:var(--ink)}.nav-wrap{flex-direction:column;flex:1;gap:20px;display:flex}.nav-wrap nav{flex-direction:column;gap:20px;display:flex}.nav-group{flex-direction:column;gap:2px;display:flex}.nav-group h2{font-size:var(--fs-xs);letter-spacing:0;color:var(--muted);margin:0 0 6px;padding:0 12px;font-weight:500;line-height:1.4}.nav-group a{border-radius:var(--r-sm);min-height:34px;color:var(--nav-ink);letter-spacing:-.005em;transition:color var(--t) var(--ease), background-color var(--t) var(--ease);align-items:center;padding:7px 12px;font-size:14px;font-weight:500;line-height:1.35;text-decoration:none;display:flex}.nav-group a:hover{color:var(--ink);background:var(--hover);text-decoration:none}.nav-group a[aria-current=page]{color:var(--ink);background:var(--active)}.side-foot{border-top:1px solid var(--line);font-size:var(--fs-sm);color:var(--muted);flex-direction:column;gap:16px;margin-top:auto;padding:16px 12px 0;display:flex}.side-foot p{margin:0}.side-foot label,.side-foot .lbl{font-size:var(--fs-sm);color:var(--ink);margin-bottom:6px;font-weight:500;display:block}.side-foot select{height:var(--h-sm);font-size:var(--fs-sm)}.side-foot .hint{font-size:var(--fs-xs)}.lang{border:1px solid var(--line);border-radius:var(--r-sm);gap:2px;padding:3px;display:inline-flex}.lang a{text-align:center;min-width:40px;font-size:var(--fs-xs);color:var(--muted);transition:color var(--t) var(--ease), background-color var(--t) var(--ease);border-radius:6px;padding:3px 10px;font-weight:600;text-decoration:none}.lang a:hover{color:var(--ink);text-decoration:none}.lang a[aria-current=true]{background:var(--active);color:var(--ink)}main{width:100%;max-width:880px;margin:0 auto;padding:56px clamp(20px,4vw,48px) 96px}.view-head{align-items:center;gap:24px;margin-bottom:32px;display:flex}.view-head>div{min-width:0}.view-head .lead{margin-bottom:0}.plain{margin-bottom:32px}.plain .lead{margin-bottom:0}@media (prefers-reduced-motion:no-preference){main>*{animation:page-in .7s var(--ease) both}main>:nth-child(2){animation-delay:40ms}main>:nth-child(n+3){animation-delay:80ms}}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.side .nav-toggle{margin-left:auto;display:none}@media (max-width:860px){.app{grid-template-columns:1fr}.side{z-index:10;border-right:0;border-bottom:1px solid var(--line);gap:12px;height:auto;max-height:100vh;padding:10px 12px;position:sticky}.nav-wrap{display:none}.nav-wrap.open{display:flex}.side .nav-toggle{display:inline-flex}main{padding-top:32px}.view-head{flex-direction:column;align-items:flex-start;gap:16px}}input[type=text],input[type=password],input[type=number],input[type=search],textarea,select{width:100%;height:var(--h);border:1px solid var(--line);border-radius:var(--r);background:var(--field-bg);color:var(--ink);font:inherit;font-size:var(--fs);transition:border-color var(--t) var(--ease), box-shadow var(--t) var(--ease), background-color var(--t) var(--ease);padding:0 14px}input[type=text]::placeholder,input[type=password]::placeholder,input[type=number]::placeholder,input[type=search]::placeholder,textarea::placeholder,select::placeholder{color:var(--muted)}input[type=text]:hover,input[type=password]:hover,input[type=number]:hover,input[type=search]:hover,textarea:hover,select:hover{border-color:var(--line-strong)}input[type=text]:focus,input[type=text]:focus-visible,input[type=password]:focus,input[type=password]:focus-visible,input[type=number]:focus,input[type=number]:focus-visible,input[type=search]:focus,input[type=search]:focus-visible,textarea:focus,textarea:focus-visible,select:focus,select:focus-visible{border-radius:var(--r);border-color:color-mix(in srgb, var(--accent) 75%, transparent);box-shadow:0 0 0 4px var(--glow);outline:none}textarea{resize:vertical;height:auto;min-height:112px;padding:12px 14px;line-height:1.55}select{appearance:none;cursor:pointer;background-image:url(/chevron.svg);background-position:right 14px center;background-repeat:no-repeat;background-size:11px;padding-right:40px}select option{background:var(--panel);color:var(--ink)}input[type=file]:not(.sr-only){border:1px dashed var(--line-strong);border-radius:var(--r);background:var(--field-bg);width:100%;min-height:56px;color:var(--muted);font:inherit;font-size:var(--fs-sm);cursor:pointer;transition:border-color var(--t) var(--ease), background-color var(--t) var(--ease);padding:8px;line-height:38px;display:block}input[type=file]:not(.sr-only)::file-selector-button{background:var(--active);height:38px;color:var(--ink);font:inherit;font-size:var(--fs-sm);cursor:pointer;box-shadow:inset 0 0 0 1px var(--line);transition:background-color var(--t) var(--ease);border:0;border-radius:9px;margin-right:14px;padding:0 16px;font-weight:500}input[type=file]:not(.sr-only):hover{border-color:color-mix(in srgb, var(--ink) 30%, transparent);background:var(--hover)}input[type=file]:not(.sr-only):hover::file-selector-button{background:color-mix(in srgb, var(--ink) 12%, transparent)}input[type=checkbox],input[type=radio]{width:16px;height:16px;accent-color:var(--ink);cursor:pointer;margin:0}input[type=range]{accent-color:var(--accent)}.field{margin-bottom:20px}.field>label,.field label.l{font-size:var(--fs-sm);color:var(--ink);margin-bottom:8px;font-weight:500;display:block}.grid2{grid-template-columns:1fr 1fr;gap:0 20px;display:grid}.grid3{grid-template-columns:repeat(3,1fr)}@media (max-width:700px){.grid2,.grid3{grid-template-columns:1fr}}.inline{gap:8px;display:flex}.inline input,.inline select{flex:1;min-width:0}.inline>.btn,.inline>.btn.sm{height:var(--h)}.opts{flex-direction:column;gap:12px;margin:0 0 20px;display:flex}.opts>legend{margin-bottom:4px}.chk{cursor:pointer;grid-template-columns:16px 1fr;align-items:start;gap:12px;line-height:1.5;display:grid}.chk input{margin-top:3px}.chk small{color:var(--muted);font-size:var(--fs-sm);margin-top:2px;display:block}.hint{font-size:var(--fs-sm);color:var(--muted);margin:8px 0 0;line-height:1.5}.hint[data-kind=err]{color:var(--danger)}.hint[data-kind=ok]{color:var(--ok)}.hint:empty{margin:0}.hint:not(:last-child):not(:empty){margin-bottom:16px}.row{flex-wrap:wrap;align-items:center;gap:8px;margin:20px 0;display:flex}.field+.row,.grid2+.row,.opts+.row{margin-top:0}.range-row{align-items:center;gap:16px;display:flex}.range-row input[type=range]{flex:1}.range-row output{text-align:right;font-variant-numeric:tabular-nums;min-width:3ch;font-weight:600}.btn{height:var(--h);border-radius:var(--r);background:var(--btn-bg);color:var(--btn-ink);font:inherit;letter-spacing:-.01em;white-space:nowrap;cursor:pointer;box-shadow:inset 0 1px 0 var(--btn-edge), 0 1px 2px #0003;transition:all var(--t) var(--ease);border:0;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{box-shadow:inset 0 1px 0 var(--btn-edge), 0 10px 28px -10px var(--glow), 0 0 0 1px var(--line);text-decoration:none;transform:translateY(-1px)}.btn:active{transform:translateY(0)scale(.98)}.btn:disabled{opacity:.45;cursor:default;transform:none}.btn.ghost{background:var(--field-bg);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}.btn.ghost:hover{background:var(--hover);box-shadow:inset 0 0 0 1px var(--line-strong)}.btn.danger{color:var(--danger);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--danger) 40%, transparent);background:0 0}.btn.danger:hover{background:color-mix(in srgb, var(--danger) 8%, transparent)}.btn.sm{height:var(--h-sm);font-size:var(--fs-sm);border-radius:10px;padding:0 12px;font-weight:500}.seg{border:1px solid var(--line);border-radius:var(--r);background:var(--field-bg);flex-wrap:wrap;gap:2px;margin-bottom:24px;padding:3px;display:inline-flex}.seg button{height:32px;color:var(--muted);font:inherit;cursor:pointer;transition:all var(--t) var(--ease);background:0 0;border:0;border-radius:9px;padding:0 16px;font-size:14px;font-weight:500}.seg button:hover{color:var(--ink)}.seg button[aria-selected=true]{background:var(--active);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line), 0 1px 2px #00000026}.drop{text-align:center;background:radial-gradient(100% 120% at 50% 0%, var(--glow-a), transparent 60%), linear-gradient(180deg, var(--panel-2) 0%, var(--panel) 100%);box-shadow:inset 0 1px 0 var(--hover), inset 0 0 0 1px var(--line), var(--shadow-lg);cursor:pointer;transition:box-shadow .6s var(--ease), transform .6s var(--ease);border-radius:20px;flex-direction:column;align-items:center;gap:4px;margin-bottom:12px;padding:56px 24px;display:flex;position:relative}.drop:before{content:"";border:1px dashed var(--line-strong);pointer-events:none;transition:inset .6s var(--ease), border-color .6s var(--ease);border-radius:13px;position:absolute;inset:10px}.drop>*{position:relative}.drop .drop-icon{fill:none;width:40px;height:40px;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;opacity:.8;transition:transform .6s var(--ease), opacity .6s var(--ease);margin-bottom:12px}.drop strong{font-size:var(--fs-md);letter-spacing:-.015em;font-weight:600}.drop span{color:var(--muted);font-size:var(--fs-sm)}.drop:hover,.drop.drag,.drop:focus-within{box-shadow:inset 0 1px 0 var(--hover), inset 0 0 0 1px var(--line-strong), 0 0 64px -20px var(--glow), var(--shadow-lg)}.drop:hover:before,.drop.drag:before,.drop:focus-within:before{border-color:color-mix(in srgb, var(--ink) 30%, transparent);inset:7px}.drop:hover .drop-icon,.drop.drag .drop-icon,.drop:focus-within .drop-icon{opacity:1;transform:translateY(-3px)}.drop.drag{transform:scale(1.005)}.drop:focus-within{outline:2px solid var(--focus);outline-offset:3px}.files,.results{flex-direction:column;gap:8px;margin:16px 0;padding:0;list-style:none;display:flex}.files:empty,.results:empty{display:none}.files li,.results li{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding:12px 16px;display:flex}.files .name,.results .name{overflow-wrap:anywhere;flex:200px;font-weight:500}.files .size,.results .size{color:var(--muted);font-size:var(--fs-sm);white-space:nowrap;font-variant-numeric:tabular-nums}.files .err,.results .err{border-color:color-mix(in srgb, var(--danger) 30%, transparent);background:color-mix(in srgb, var(--danger) 5%, var(--panel))}.files .err .name,.results .err .name{color:var(--danger)}.prog,.meter{background:var(--active);border-radius:2px;height:4px;overflow:hidden}.prog i,.meter i{border-radius:2px;width:0;height:100%;display:block}.prog{flex:100%}.prog i{background:var(--ink)}.meter{margin-top:12px}.meter i{background:var(--danger);transition:width var(--t) var(--ease), background-color var(--t) var(--ease)}.meter i[data-l="2"]{background:var(--warn)}.meter i[data-l="3"],.meter i[data-l="4"]{background:var(--ok)}.card{border:1px solid var(--line);border-radius:var(--r-card);background:var(--panel);box-shadow:var(--shadow);transition:border-color var(--t) var(--ease), box-shadow .6s var(--ease);margin-bottom:16px;padding:24px}.card:hover{border-color:var(--line-strong)}.card>:last-child,.card>:last-child>.field,.card>.grid2:last-child>.field{margin-bottom:0}.card>.row:has(+.hint:empty:last-child){margin-bottom:0}[data-mode=enc] .card>:has(+.only-dec:last-child){margin-bottom:0}[data-mode=enc] .card>:has(+.only-dec:last-child)>.field{margin-bottom:0}.card>:first-child{margin-top:0}.card pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--fs-sm);margin:0}.card h3{margin-bottom:8px}.card-title,.legend{letter-spacing:-.015em;color:var(--ink);margin:0 0 20px;font-size:15px;font-weight:600}fieldset{border:1px solid var(--line);border-radius:var(--r);min-inline-size:0;margin:0 0 20px;padding:16px 20px 20px}fieldset.card{border-radius:var(--r-card);padding:24px}legend{float:left;width:100%;font-size:var(--fs-sm);margin:0 0 12px;padding:0;font-weight:500}legend+*{clear:both}.note{border:1px solid var(--line);border-radius:var(--r);background:var(--panel-2);margin-bottom:12px;padding:12px 16px 12px 36px;font-size:14px;line-height:1.55;position:relative}.note:before{content:"";background:var(--muted);border-radius:50%;width:6px;height:6px;position:absolute;top:calc(9px + .775em);left:16px}.note.warn:before{background:var(--warn);box-shadow:0 0 8px color-mix(in srgb, var(--warn) 60%, transparent)}.note.err{color:var(--danger)}.note.err:before{background:var(--danger);box-shadow:0 0 8px color-mix(in srgb, var(--danger) 60%, transparent)}.note.ok{color:var(--ok)}.note.ok:before{background:var(--ok);box-shadow:0 0 8px color-mix(in srgb, var(--ok) 60%, transparent)}.banner{border:1px solid color-mix(in srgb, var(--danger) 30%, transparent);border-radius:var(--r);background:color-mix(in srgb, var(--danger) 6%, transparent);color:var(--danger);margin-bottom:20px;padding:12px 16px}.stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-top:16px;display:grid}.stat{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);padding:14px 16px}.stat small{color:var(--muted);font-size:var(--fs-xs);margin-bottom:2px;display:block}.stat strong{letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:18px;font-weight:600}.big-code{letter-spacing:.06em;font-variant-numeric:tabular-nums;margin:4px 0 12px;font-size:44px;font-weight:600}.preview{border:1px solid var(--line);border-radius:var(--r);max-width:100%;max-height:340px;margin-top:12px;display:block}.qr{border-radius:var(--r);max-width:100%;height:auto;image-rendering:pixelated;background:#fff;border:8px solid #fff;margin:12px 0;display:block}.hrow{border:1px solid var(--line);border-radius:var(--r);background:var(--panel);grid-template-columns:96px 1fr auto;align-items:center;gap:12px;margin-bottom:8px;padding:10px 16px;display:grid}.hrow.match{border-color:color-mix(in srgb, var(--ok) 35%, transparent);background:color-mix(in srgb, var(--ok) 6%, var(--panel))}.hrow b{font-size:var(--fs-sm);font-weight:600}@media (max-width:700px){.hrow{grid-template-columns:1fr auto}.hrow .hash-val{order:3;grid-column:1/-1}}.hash-val{overflow-wrap:anywhere;font-size:12.5px}.hash-val.empty{color:var(--muted)}table.kv{border-collapse:collapse;width:100%;font-size:14px}table.kv th,table.kv td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:10px 0}table.kv th{width:38%;color:var(--muted);padding-right:16px;font-weight:500}table.kv tr:last-child>*{border-bottom:0}h2+details{margin-top:0}details+details{margin-top:12px}details{border:1px solid var(--line);border-radius:var(--r-card);background:var(--panel);margin-top:32px;padding:0 20px}details summary{border-radius:var(--r-card);cursor:pointer;transition:background-color var(--t) var(--ease);justify-content:space-between;align-items:center;gap:16px;margin:0 -20px;padding:16px 20px;font-weight:500;list-style:none;display:flex}details summary::-webkit-details-marker{display:none}details summary:after{content:"";width:11px;height:8px;transition:transform var(--t) var(--ease);background:url(/chevron.svg) 50%/contain no-repeat;flex:none}details summary:hover{background:var(--hover)}details[open]{padding-bottom:20px}details[open] summary{border-bottom-right-radius:0;border-bottom-left-radius:0;margin-bottom:4px}details[open] summary:after{transform:rotate(180deg)}details>:last-child,details>:last-child>.field,details>.grid2:last-child>.field{margin-bottom:0}details ul,details ol{color:var(--muted);margin:0;padding-left:18px}details li{margin-bottom:6px}.toast{z-index:50;background:var(--ink);color:var(--bg);opacity:0;pointer-events:none;transition:opacity var(--t) var(--ease), transform var(--t) var(--ease);border-radius:999px;padding:10px 18px;font-size:14px;font-weight:500;position:fixed;bottom:24px;left:50%;transform:translate(-50%,12px);box-shadow:0 16px 40px -12px #00000080}.toast.show{opacity:1;transform:translate(-50%)}[data-mode=enc] .only-dec,[data-mode=dec] .only-enc{display:none!important}.dial{flex:none;width:72px;height:72px}.dial-body{fill:var(--panel);stroke:var(--line-strong);stroke-width:1.5px}.dial-ring{transform-origin:60px 60px;transition:transform .9s var(--ease)}.dial-ring line{stroke:var(--muted);stroke-width:1.5px}.dial-ring line.major{stroke:var(--ink);stroke-width:3px}.dial-hub{fill:var(--ink)}.dial-mark{fill:var(--signal)}.dial.busy .dial-ring{animation:1.1s linear infinite spin}.dial.done .dial-ring{transform:rotate(150deg)}.dial.fail .dial-ring{animation:.45s shake}.status{font-size:var(--fs-sm);color:var(--muted);margin:8px 0 0;font-weight:500}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shake{25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}}.tool-groups{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));align-items:start;gap:16px;display:grid}.card.tool-group{margin:0;padding:16px 8px 8px}.tool-grid{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.tool-grid a{color:var(--ink);transition:background-color var(--t) var(--ease);border-radius:10px;padding:10px 12px;text-decoration:none;display:block}.tool-grid a:hover{background:var(--hover);text-decoration:none}.tool-grid a strong{letter-spacing:-.01em;margin-bottom:2px;font-weight:500;display:block}.tool-grid a span{color:var(--muted);font-size:var(--fs-sm);line-height:1.5;display:block}.search{max-width:420px;margin:16px 0 24px}.checklist{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.gap-top{margin-top:16px}.notes-layout{grid-template-columns:minmax(180px,240px) 1fr;align-items:start;gap:20px;display:grid}.notes-layout button.note-item{border-radius:var(--r-sm);width:100%;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:background-color var(--t) var(--ease);background:0 0;border:0;padding:8px 12px;display:block}.notes-layout button.note-item:hover{background:var(--hover)}.notes-layout button.note-item[aria-current=true]{background:var(--active);font-weight:600}@media (max-width:700px){.notes-layout{grid-template-columns:1fr}}.tile,.tool-group{isolation:isolate;position:relative}.tile:before,.tool-group:before{content:"";z-index:-1;border-radius:inherit;background:radial-gradient(420px circle at var(--mx,-999px) var(--my,-999px), var(--glow-fill), transparent 55%);opacity:var(--glow-o,0);transition:opacity var(--dur) var(--ease);pointer-events:none;position:absolute;inset:0}.tile:after,.tool-group:after{content:"";border-radius:inherit;background:radial-gradient(280px circle at var(--mx,-999px) var(--my,-999px), var(--glow-line), transparent 62%);-webkit-mask-composite:xor;opacity:var(--glow-o,0);transition:opacity var(--dur) var(--ease);pointer-events:none;padding:1px;position:absolute;inset:-1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.tile{transition-property:transform,border-color,background-color,box-shadow,opacity;transition-duration:var(--dur);transition-timing-function:var(--ease)}main.wide{max-width:1240px;padding-top:clamp(16px,3vw,32px)}.stage{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:clamp(56px,8vw,112px);display:grid}.tile{border-radius:var(--radius-lg);min-width:0;min-height:200px;color:var(--ink);background:var(--glass);border:1px solid var(--hair);box-shadow:var(--shadow);flex-direction:column;gap:8px;padding:clamp(22px,2.6vw,34px);text-decoration:none;display:flex}.tile h2,.tile h3{letter-spacing:-.035em;margin:0;font-size:clamp(19px,1.9vw,24px);font-weight:650;line-height:1.15}.tile p{max-width:38ch;color:var(--muted);margin:0;font-size:14.5px}.tile .mock,.tile .words,.tile .dots,.tile .sigline,.tile .diff{transition:transform var(--dur) var(--ease)}.tile:hover .mock,.tile:hover .words,.tile:hover .dots,.tile:hover .sigline,.tile:hover .diff{transform:translateY(-6px)}.tile-hero{background:radial-gradient(120% 70% at 50% -20%, var(--glow-a), transparent 60%), var(--glass);grid-column:span 6;grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);align-items:center;gap:clamp(24px,4vw,64px);min-height:min(82vh,760px);padding:clamp(28px,5.5vw,80px);display:grid}.hero-copy{transform:translate3d(0, calc(var(--sy,0) * -.05px), 0);opacity:max(.35, 1 - var(--sy,0) / 1100)}.hero-title{letter-spacing:-.05em;text-wrap:balance;margin:0 0 24px;padding:0 .1em .1em 0;font-size:clamp(40px,5.4vw,84px);font-weight:700;line-height:.98}@supports ((-webkit-background-clip:text) or (background-clip:text)){.hero-title{background:linear-gradient(105deg, transparent 40%, var(--sheen) 50%, transparent 60%) var(--sheen-x,120%) 0/260% 100% no-repeat, var(--grad-text);-webkit-background-clip:text;background-clip:text}}.tile-hero .hero-lead{max-width:44ch;color:var(--muted);letter-spacing:-.01em;margin:0 0 32px;font-size:clamp(15px,1.35vw,18px);line-height:1.6}.hero-actions{flex-wrap:wrap;gap:12px;display:flex}.hero-actions .btn{padding:13px 26px;font-size:15px;text-decoration:none;display:inline-block}.hero-art{aspect-ratio:1;perspective:1100px;justify-self:end;width:100%;max-width:400px;position:relative}.vault-svg{width:100%;height:100%;transform:translate3d(0, calc(var(--sy,0) * .12px), 0) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));will-change:transform;overflow:visible}.vault-svg .v-glow{fill:var(--glow-a)}.vault-svg .v-ticks line{stroke:var(--muted);stroke-width:2px;stroke-linecap:round}.vault-svg .v-ticks line.major{stroke:var(--ink);stroke-width:3.5px}.vault-svg .v-mark{fill:var(--signal);filter:drop-shadow(0 0 8px var(--signal))}.v-ring{transform-origin:200px 200px;transform:rotate(calc(var(--sy,0) * .14deg))}.tile-vault{grid-area:span 2/span 4}.tile-pass,.tile-shamir{grid-column:span 2}.tile-sign,.tile-meta{grid-column:span 3}.tile-private{flex-flow:wrap;grid-column:span 6;align-items:center;gap:12px 40px;min-height:0}.tile-private .facts{flex-wrap:wrap;gap:10px 36px;margin:0 0 0 auto;padding:0;list-style:none;display:flex}.tile-private .facts li{letter-spacing:-.01em;align-items:center;gap:10px;font-weight:550;display:flex}.tile-private .facts i{background:var(--signal);width:7px;height:7px;box-shadow:0 0 12px var(--signal);border-radius:50%}.mock{border-radius:16px;margin-top:auto;padding:16px;font-size:13px}.mock .mock-top{gap:6px;margin-bottom:14px;display:flex}.mock .mock-top span{background:var(--hair);border-radius:50%;width:9px;height:9px}.mock .mock-row{color:var(--muted);justify-content:space-between;gap:12px;margin-bottom:8px;display:flex}.mock .mock-row b{color:var(--ink);font-weight:600}.mock .mock-bar{background:var(--hair);border-radius:4px;height:8px;overflow:hidden}.mock .mock-bar i{background:linear-gradient(90deg, var(--accent), var(--violet));width:72%;height:100%;box-shadow:0 0 16px color-mix(in srgb, var(--accent) 60%, transparent);border-radius:4px;display:block}.mock .chips{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.chip{border:1px solid var(--hair);color:var(--ink);background:color-mix(in srgb, var(--accent) 10%, transparent);border-radius:999px;padding:4px 11px;font-size:12px;font-weight:600}.words{flex-wrap:wrap;gap:6px;margin-top:auto;display:flex}.dots{gap:10px;margin-top:auto;display:flex}.dots i{border:1.5px solid var(--hair);border-radius:50%;width:22px;height:22px}.dots i.on{border-color:var(--accent);background:var(--accent);box-shadow:0 0 18px color-mix(in srgb, var(--accent) 70%, transparent)}.sigline{justify-content:space-between;align-items:center;gap:12px;margin-top:auto;display:flex}.sigline svg{fill:none;width:150px;height:44px;stroke:var(--ink);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}.badge-ok{border:1px solid var(--ok);color:var(--ok);border-radius:999px;padding:4px 12px;font-size:12.5px;font-weight:650}.diff{font-family:var(--mono);margin-top:auto;font-size:12.5px;line-height:1.8}.diff .gone{color:var(--muted);text-decoration:line-through}.diff .kept{color:var(--ok)}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:16px;margin:0 0 18px;display:flex}.section-head h2{letter-spacing:-.04em;margin:0;font-size:clamp(26px,3vw,36px)}.section-head .search{width:min(100%,360px);margin:0}@media (max-width:960px){.tile-hero{grid-template-columns:1fr;min-height:0}.hero-art{order:-1;justify-self:start;max-width:300px}.stage{grid-template-columns:repeat(2,minmax(0,1fr))}.tile-hero,.tile-vault,.tile-private{grid-area:auto/span 2}.tile-pass,.tile-shamir,.tile-sign,.tile-meta{grid-column:span 1}}@media (max-width:560px){.stage{grid-template-columns:1fr}.stage>.tile{grid-column:span 1}.tile-private .facts{margin-left:0}}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.reveal{animation:rise var(--ease) both;animation-timeline:view();animation-range:entry 5% entry 95%}}.hero-copy>*{animation:rise-load 1.2s var(--ease) both}.hero-copy>:first-child{animation-delay:.11s}.hero-copy>:nth-child(2){animation-delay:.22s}.hero-copy>:nth-child(3){animation-delay:.33s}.hero-copy>:nth-child(4){animation-delay:.44s}.hero-art{animation:fade-load 1.8s var(--ease) .25s both}}@media (prefers-reduced-motion:reduce){.hero-copy,.vault-svg,.v-ring{opacity:1;transform:none}}@keyframes rise{0%{opacity:0;transform:translateY(48px)scale(.97)}to{opacity:1;transform:none}}@keyframes rise-load{0%{opacity:0;filter:blur(8px);transform:translateY(24px)}to{opacity:1;filter:none;transform:none}}@keyframes fade-load{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}.mock-gap{margin-top:8px;margin-bottom:0}.group-title{color:var(--muted);letter-spacing:-.005em;margin:0 0 8px 12px;font-size:13px;font-weight:550}.tool-group[hidden]{display:none}
