:root{--c-bg: #faf8f3;--c-surface: #ffffff;--c-surface-2: #f1ede4;--c-border: #d8d2c4;--c-text: #1c1b18;--c-muted: #5a564d;--c-primary: #0d6b57;--c-primary-dark: #094d3f;--c-primary-soft: #dff1ea;--c-accent: #b45309;--c-accent-soft: #fdecd2;--c-focus: #1d4ed8;--c-mark: #fde68a;--font: "Atkinson Hyperlegible", "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "Cascadia Mono", Consolas, Menlo, monospace;--radius: 10px;--radius-s: 6px;--shadow: 0 1px 2px rgba(28, 27, 24, .06), 0 8px 24px rgba(28, 27, 24, .08);--shell: 1180px;--gap: 1rem}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--c-bg);color:var(--c-text);font:16px/1.55 var(--font)}img,svg{max-width:100%}a{color:var(--c-primary);text-underline-offset:2px}a:hover{color:var(--c-primary-dark)}h1,h2,h3{line-height:1.2;margin:0 0 .5em;font-weight:700}h1{font-size:clamp(1.7rem,4vw,2.4rem)}h2{font-size:clamp(1.25rem,3vw,1.6rem);margin-top:1.6em}h3{font-size:1.1rem;margin-top:1.3em}p{margin:0 0 1em}.muted{color:var(--c-muted)}.small{font-size:.9rem}[hidden]{display:none!important}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}:focus-visible{outline:3px solid var(--c-focus);outline-offset:2px}.skip-link{position:absolute;left:-999px;top:0;background:var(--c-surface);padding:.5rem 1rem;z-index:100}.skip-link:focus{left:.5rem;top:.5rem}.shell{max-width:var(--shell);margin:0 auto;padding:0 1rem}.site-header{background:var(--c-surface);border-bottom:1px solid var(--c-border)}.header-inner{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:.6rem 1rem}.brand{display:inline-flex;align-items:center;gap:.5rem;font-weight:700;text-decoration:none;color:var(--c-text);font-size:1.1rem}.brand svg{width:28px;height:28px;color:var(--c-primary)}.nav{display:flex;gap:.15rem;flex-wrap:wrap;margin-left:auto;padding:0;list-style:none}.nav a{display:inline-block;padding:.35rem .6rem;border-radius:var(--radius-s);text-decoration:none;color:var(--c-text);font-size:.95rem}.nav a:hover,.nav a[aria-current=page]{background:var(--c-primary-soft);color:var(--c-primary-dark)}.lang-switch{font-size:.9rem;margin-left:.5rem}@media(max-width:720px){.nav{width:100%;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.nav a{white-space:nowrap}}.page{display:grid;grid-template-columns:minmax(0,1fr);gap:1.5rem;padding:1.25rem 0 3rem}.page>*{min-width:0}.page-head p.lead{font-size:1.1rem;color:var(--c-muted);max-width:60ch}@media(min-width:1024px){.page.has-sidebar{grid-template-columns:minmax(0,1fr) 300px;align-items:start}.sidebar{position:sticky;top:1rem}}.breadcrumb{font-size:.85rem;color:var(--c-muted);margin:0 0 .5rem}.breadcrumb ol{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.35rem}.breadcrumb li+li:before{content:"›";margin-right:.35rem}.ad{display:none}.ads-on .ad{display:block;margin:1rem 0}.ads-on .ad--top{min-height:280px}.ads-on .ad--text{min-height:250px}.ads-on .ad--sidebar{min-height:600px}@media(min-width:768px){.ads-on .ad--top{min-height:90px}}.sidebar{display:none}@media(min-width:1024px){.ads-on .sidebar{display:block}}.generator{display:grid;grid-template-columns:minmax(0,1fr);gap:1.25rem}.generator>*,.gen-controls>*,.gen-output>*{min-width:0;max-width:100%}@media(min-width:900px){.generator{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start}.generator .ad--top{grid-column:1 / -1}}.gen-controls{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:1rem;display:grid;gap:1rem}fieldset{border:0;padding:0;margin:0;min-width:0}legend{font-weight:700;padding:0;margin-bottom:.5rem}label{font-weight:600}.field{display:grid;gap:.35rem}.field-meta{display:flex;justify-content:flex-end;font-size:.85rem;color:var(--c-muted)}.field-row{display:grid;gap:.75rem}@media(min-width:1200px){.field-row{grid-template-columns:minmax(220px,1fr) auto;align-items:end}}textarea,input[type=text],select{font:inherit;color:inherit;width:100%;padding:.6rem .7rem;border:1px solid var(--c-border);border-radius:var(--radius-s);background:#fff}textarea{resize:vertical;min-height:5.5rem}input[type=range]{width:100%;accent-color:var(--c-primary)}input[type=checkbox],input[type=radio]{accent-color:var(--c-primary);width:1.1rem;height:1.1rem}.check{display:inline-flex;gap:.5rem;align-items:center;font-weight:500;cursor:pointer}.notice{background:var(--c-accent-soft);color:var(--c-accent);border-radius:var(--radius-s);padding:.5rem .7rem;font-size:.9rem;margin:0}.mode{display:inline-flex;border:1px solid var(--c-border);border-radius:999px;padding:3px;background:var(--c-surface-2);width:max-content}.switch{position:relative;cursor:pointer;font-weight:600}.switch input{position:absolute;opacity:0;inset:0}.switch span{display:inline-block;padding:.35rem 1rem;border-radius:999px}.switch input:checked+span{background:var(--c-primary);color:#fff}.switch input:focus-visible+span{outline:3px solid var(--c-focus);outline-offset:2px}.tiles{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.tile{position:relative;cursor:pointer;font-weight:500}.tile input{position:absolute;opacity:0;inset:0}.tile-body{display:grid;gap:.2rem;padding:.6rem .7rem;border:2px solid var(--c-border);border-radius:var(--radius);background:#fff;height:100%}.tile input:checked+.tile-body{border-color:var(--c-primary);background:var(--c-primary-soft)}.tile input:focus-visible+.tile-body{outline:3px solid var(--c-focus);outline-offset:2px}.tile-name{font-weight:700}.tile-preview{font-family:var(--font-mono);font-size:.85rem;color:var(--c-muted);display:inline-flex;gap:.15em;align-items:center}.tile-glyph{width:1.1em;height:1.1em;vertical-align:middle}.tile-desc{font-size:.8rem;color:var(--c-muted);line-height:1.35}.tiles-compact .tile-body{padding:.5rem .7rem}.options-grid{display:grid;gap:.75rem}@media(min-width:560px){.options-grid{grid-template-columns:1fr 1fr}.opt-check{grid-column:1 / -1}}.opt{display:grid;gap:.3rem}.opt label{font-size:.95rem}.external{margin:.75rem 0 0;font-size:.9rem}.result{border:2px solid var(--c-primary);border-radius:var(--radius);padding:.8rem 1rem;background:var(--c-primary-soft);display:grid;gap:.5rem}.result-title{font-size:1rem;margin:0}.result-text{font-size:1.15rem;font-weight:600;white-space:pre-wrap;word-break:break-word;margin:0}.is-decode .sheet-wrap{opacity:.85}.actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.5rem}.btn{font:inherit;font-weight:600;cursor:pointer;padding:.55rem 1rem;border-radius:var(--radius-s);border:1px solid var(--c-border);background:#fff;color:var(--c-text)}.btn:hover{border-color:var(--c-primary);color:var(--c-primary-dark)}.btn-primary{background:var(--c-primary);color:#fff;border-color:var(--c-primary)}.btn-primary:hover{background:var(--c-primary-dark);color:#fff}.btn-ghost{background:transparent}.btn[disabled]{opacity:.6;cursor:progress}.status{font-size:.9rem;color:var(--c-primary-dark);font-weight:600;min-height:1.2em}.sheet-wrap{position:relative;overflow:hidden;background:var(--c-surface-2);border-radius:var(--radius);padding:0}.sheet-scale{transform-origin:top left;width:210mm}.sheet{width:210mm;min-height:297mm;padding:15mm;background:#fff;color:#000;box-shadow:var(--shadow);font-family:var(--font);display:flex;flex-direction:column;position:relative}.sheet-head{text-align:center;border-bottom:.5pt solid #000;padding-bottom:3mm;margin-bottom:6mm}.sheet-title{font-size:24pt;margin:0}.sheet-sub{font-size:13pt;margin:0 0 2mm}.sheet-cipher{flex:0 0 auto;min-height:95mm;line-height:1.5}.mode-text p{font-size:var(--pt, 18pt);font-weight:600;margin:0;word-break:break-word}.mode-code p{font-family:var(--font-mono);font-weight:600;letter-spacing:.04em;line-height:1.7}.mode-symbol{display:block;line-height:0}.mode-symbol .g{display:inline-block;width:var(--glyph, 14mm);height:var(--glyph, 14mm);margin:1.2mm;vertical-align:top}.mode-symbol .g svg{width:100%;height:100%;display:block}.mode-symbol mark.g{line-height:var(--glyph, 14mm);text-align:center;font-size:calc(var(--glyph, 14mm) * .7);font-weight:700}.mode-symbol .sp{display:inline-block;width:calc(var(--glyph, 14mm) * .55);height:1px}.mode-symbol br{line-height:normal}.mode-mirror .mirror{font-size:var(--pt, 18pt);font-weight:600;display:inline-block;word-break:break-word}.mirror-x{transform:scaleX(-1)}.mirror-y{transform:scaleY(-1)}.mirror-inline{display:inline-block}.mode-blank .rule{border-bottom:.6pt solid #777;height:13mm}.blank-hint{font-style:italic;color:#444;margin:0 0 2mm;font-size:11pt}.sheet-empty{color:#666;font-style:italic;font-size:12pt}mark.unknown{background:var(--c-mark);color:inherit;text-decoration:underline dotted;padding:0 .1em}.cut-line{display:flex;align-items:center;gap:2mm;color:#555;font-size:7.5pt;margin:6mm 0 4mm;border-top:.7pt dashed #000;padding-top:1mm}.sheet-key{flex:1 0 auto}.key-note{font-size:8.5pt;color:#444;font-style:italic;margin:0 0 2mm}.key-hint{font-size:11pt;font-style:italic}.key-table{border-collapse:collapse;width:100%;table-layout:fixed}.key-table td{border:.5pt solid #000;padding:1.5mm 2mm;height:9.5mm;vertical-align:middle;font-size:11pt}.key-table td .k-plain{font-weight:700;float:left}.key-table td .k-cipher{float:right}.key-table td.k-empty{border:0}.key-symbols td{height:15mm}.key-symbols .k-cipher svg{width:10mm;height:10mm;display:block}.morse{font-family:var(--font-mono);letter-spacing:.08em;font-size:10pt}.sheet-key--wheel .caesar-wheel{width:170mm;height:170mm;display:block;margin:0 auto}.sheet-solution{font-size:9pt;font-style:italic;color:#333;border-top:.5pt solid #bbb;padding-top:2mm;margin-top:4mm}.sheet-footer{font-size:7pt;color:#777;text-align:right;margin-top:2mm}.article{max-width:72ch}.article h2{scroll-margin-top:1rem}.article ul,.article ol{padding-left:1.3rem}.faq details{border:1px solid var(--c-border);border-radius:var(--radius-s);padding:.5rem .8rem;margin-bottom:.5rem;background:var(--c-surface)}.faq summary{font-weight:700;cursor:pointer}.faq details p{margin:.5rem 0 0}.cards{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));padding:0;list-style:none}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:1rem}.card h3{margin-top:0}.card .example{font-family:var(--font-mono);background:var(--c-surface-2);padding:.4rem .6rem;border-radius:var(--radius-s);display:block;margin:.5rem 0;word-break:break-word}.card .example .glyph{width:1.4em;height:1.4em;vertical-align:middle}.legal address{font-style:normal}.consent-banner{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--c-surface);border-top:1px solid var(--c-border);box-shadow:0 -6px 24px #1c1b181f;padding:1rem}.consent-inner{max-width:var(--shell);margin:0 auto;display:grid;gap:.5rem}.consent-title{font-weight:700;margin:0}.consent-text{margin:0;font-size:.95rem;color:var(--c-muted)}.consent-actions{display:flex;gap:.5rem;flex-wrap:wrap}.consent-actions .btn{min-width:9rem}@media(min-width:720px){.consent-inner{grid-template-columns:1fr auto;align-items:center}.consent-actions{grid-row:1 / span 2;grid-column:2}}.site-footer{border-top:1px solid var(--c-border);background:var(--c-surface);padding:1.5rem 0;font-size:.9rem;color:var(--c-muted)}.site-footer .links{display:flex;flex-wrap:wrap;gap:.25rem 1rem;padding:0;list-style:none;margin:0 0 .5rem}@page{size:A4 portrait;margin:0}@media print{html,body{background:#fff!important;margin:0}.no-print,.site-header,.site-footer,.sidebar,.ad,.breadcrumb,.page-head,.article,.faq,nav{display:none!important}.ad{display:none!important}.shell,.page,.generator,.gen-output,.sheet-wrap,.sheet-scale{display:block!important;max-width:none!important;width:auto!important;padding:0!important;margin:0!important;border:0!important;background:#fff!important;height:auto!important;overflow:visible!important;transform:none!important;opacity:1!important}.page{grid-template-columns:none!important;gap:0!important}.sheet{box-shadow:none!important;width:210mm;min-height:297mm;page-break-after:auto}.sheet-cipher,.sheet-key,.key-table tr{break-inside:avoid;page-break-inside:avoid}.sheet-key--wheel{break-before:page;page-break-before:always;padding-top:15mm}mark.unknown{background:transparent!important;color:#000;text-decoration:underline dotted;-webkit-print-color-adjust:exact;print-color-adjust:exact}.glyph,.caesar-wheel{-webkit-print-color-adjust:exact;print-color-adjust:exact}a[href]:after{content:none!important}}
