@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;700&display=swap";:root{--scale: 1;--gutter: 1.5rem;--spacing: .75rem;--color-light: #ffffff;--color-dark: #111111;--nerdy-accent: #0d7a5f;--color-darker: #050505;--color-accent: #ff6a3d;--color-accent-soft: #ffe3d7;--border-radius: .75rem;--font-sans-serif: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif: "Georgia", "Times New Roman", serif}body{margin:0;min-height:100vh;font-family:var(--font-sans-serif);background:radial-gradient(circle at top,#1b1b1b 0,#050505 55%);color:var(--color-light)}.app{padding:calc(var(--gutter) * 1.25)}.app__title{font-family:var(--font-serif);font-size:2.2rem;letter-spacing:.04em;text-transform:uppercase;margin:0 0 var(--spacing)}.app__subtitle{margin:0 0 calc(var(--spacing) * 2);color:#c9c9c9;letter-spacing:.06em;text-transform:uppercase;font-size:.8rem}.app__skip-link{position:absolute;top:-999px;left:-999px;padding:.5rem 1rem;background:var(--color-accent);color:#000;text-decoration:none;z-index:1000}.app__skip-link:focus{top:.5rem;left:.5rem}.grid{display:grid;gap:var(--gutter)}@media(max-width:900px){.grid--cols-12{grid-template-columns:repeat(6,minmax(0,1fr))}.grid__col--8,.grid__col--6,.grid__col--4{grid-column:span 6}}@media(max-width:640px){.grid--cols-12{grid-template-columns:repeat(4,minmax(0,1fr))}.grid__col--8,.grid__col--6,.grid__col--4{grid-column:span 4}}.card{background:#141414eb;border-radius:var(--border-radius);padding:var(--gutter);border:1px solid rgba(255,255,255,.06);box-shadow:0 18px 40px #0009}.card__title{font-family:var(--font-serif);text-transform:uppercase;letter-spacing:.08em;font-size:.9rem;margin:0 0 var(--spacing)}.card__title span{font-size:.8rem;opacity:.7}.form{display:flex;flex-direction:column;gap:var(--spacing)}.form__row{display:flex;gap:var(--spacing);flex-wrap:wrap}.form__label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.35rem;color:#b3b3b3}.form__hint{font-size:.7rem;color:#888;margin-top:.25rem;font-style:italic}.form__input,.form__textarea,.form__select{width:100%;padding:.55rem .7rem;border-radius:.5rem;border:1px solid rgba(255,255,255,.13);background:#00000059;color:var(--color-light);font:inherit}.form__input--range{padding:0;height:2rem;cursor:pointer}.form__value{position:absolute;top:0;right:0;font-size:.7rem;color:var(--color-accent);font-weight:700}.form__input:focus,.form__textarea:focus,.form__select:focus{outline:2px solid var(--color-accent);outline-offset:2px;border-color:var(--color-accent)}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.6rem 1.2rem;border-radius:999px;border:1px solid transparent;background:linear-gradient(135deg,var(--color-accent),#ff9c66);color:#111;font-size:.8rem;text-transform:uppercase;letter-spacing:.12em;cursor:pointer;transition:transform .15s ease}.button:hover{transform:translateY(-1px)}.button--ghost{background:transparent;color:var(--color-light);border-color:#ffffff42}.button--small{padding:.4rem .8rem;font-size:.7rem}.button:focus-visible{outline:2px solid #ffffff;outline-offset:2px}.upload{display:flex;flex-direction:column;gap:var(--spacing)}.upload__dropzone{border-radius:var(--border-radius);border:1px dashed rgba(255,255,255,.25);padding:var(--gutter);text-align:center;font-size:.85rem;color:#d0d0d0;transition:all .2s ease}.upload__dropzone--active{border-color:var(--color-accent);background:#ff6a3d0d;color:var(--color-accent)}.upload__input{margin-top:var(--spacing)}.mapping{display:flex;flex-direction:column;gap:var(--spacing);max-height:22rem;overflow:auto}.mapping__table{width:100%;border-collapse:collapse;font-size:.8rem}.mapping__head{text-transform:uppercase;letter-spacing:.09em;font-size:.7rem;color:#b3b3b3}.mapping__head th{text-align:left;padding:.35rem;border-bottom:1px solid rgba(255,255,255,.12)}.mapping__row{transition:background .2s ease}.mapping__row:nth-child(2n){background:#ffffff05}.mapping__row:hover{background:#ff6a3d1a}.mapping__row--selected{background:#ff6a3d33!important;border-left:3px solid var(--color-accent)}.mapping__cell{padding:.5rem .35rem;vertical-align:middle}.mapping__char-input{width:3rem}.mapping__preview{display:block;border:1px solid rgba(255,255,255,.1);border-radius:.25rem;background:#0000004d}.glyph-editor{display:flex;flex-direction:column;gap:calc(var(--spacing) * 1.5)}.glyph-editor__controls{padding:var(--spacing);background:#0003;border-radius:var(--border-radius);border:1px solid rgba(255,255,255,.08)}.glyph-editor__preview{display:flex;flex-direction:column;gap:var(--spacing)}.glyph-editor__canvas{border-radius:var(--border-radius);background:radial-gradient(circle at center,#1a1a1a 0,#0a0a0a 70%);border:1px solid rgba(255,255,255,.12);padding:var(--gutter);display:flex;align-items:center;justify-content:center}.glyph-editor__svg{width:100%;max-width:600px;height:auto;display:block}.glyph-editor__info{font-size:.85rem;color:#d3d3d3;text-align:center;margin:0}.preview{display:flex;flex-direction:column;gap:var(--spacing)}.preview__sample{border-radius:var(--border-radius);padding:var(--gutter);background:radial-gradient(circle at top left,#252525 0,#101010 55%);border:1px solid rgba(255,255,255,.12);font-size:1.15rem}.preview__sample--font{font-family:var(--preview-font-family, var(--font-sans-serif))}.preview__input{font-size:.85rem}.log{font-size:.75rem;color:#d3d3d3}.log--error{color:#ffb3b3}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;clip:rect(0 0 0 0);overflow:hidden}.button--help{position:absolute;top:1.5rem;right:1.5rem;z-index:100;background:var(--color-accent);color:var(--color-dark);border:none;padding:.75rem 1.5rem;border-radius:var(--border-radius);font-weight:600;font-size:.9rem;cursor:pointer;box-shadow:0 4px 12px #0000004d;transition:all .2s ease}.button--help:hover{background:#ff7f57;transform:translateY(-2px);box-shadow:0 6px 16px #0006}.button--help:active{transform:translateY(0)}.modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;animation:modalFadeIn .2s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.modal__overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:2rem;overflow-y:auto}.modal__container{background:linear-gradient(135deg,#1a1a1a,#0d0d0d);border:1px solid rgba(255,255,255,.15);border-radius:calc(var(--border-radius) * 1.5);max-width:800px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000080;animation:modalSlideUp .3s ease}@keyframes modalSlideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal__header{padding:1.5rem 2rem;border-bottom:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:space-between}.modal__title{margin:0;font-size:1.5rem;font-weight:600}.modal__close{background:none;border:none;color:var(--color-light);font-size:1.5rem;cursor:pointer;padding:.25rem .5rem;border-radius:.25rem;transition:background .2s ease;line-height:1}.modal__close:hover{background:#ffffff1a}.modal__content{padding:2rem;overflow-y:auto;flex:1}.modal__footer{padding:1.5rem 2rem;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:flex-end}.help-section{margin-bottom:2rem}.help-section:last-child{margin-bottom:0}.help-section__title{font-size:1.1rem;margin:0 0 .75rem;color:var(--color-accent);font-weight:600}.help-section__text{margin:0 0 1rem;line-height:1.6;color:#d3d3d3}.help-section__list{margin:.75rem 0;padding-left:1.5rem;line-height:1.8;color:#d3d3d3}.help-section__list li{margin-bottom:.5rem}.help-section__list strong{color:var(--nerdy-accent)}.help-section__note{margin:1rem 0 0;padding:1rem;background:#ff6a3d1a;border-left:3px solid var(--color-accent);border-radius:.5rem;font-size:.9rem;line-height:1.6}.help-section--tips{background:#ffffff08;padding:1.5rem;border-radius:var(--border-radius);border:1px solid rgba(255,255,255,.08)}.app__footer{font-size:.8rem;color:#777;padding:1rem}:root{--nerdy-bg: #f4f7f6;--nerdy-surface: #ffffff;--nerdy-surface-soft: #eef2f1;--nerdy-text: #0f1514;--nerdy-text-muted: #56615f;--nerdy-line: #cfd8d5;--nerdy-accent: #0d7a5f;--nerdy-accent-soft: #d7efe8;--nerdy-danger: #ad3030;--nerdy-space-1: .5rem;--nerdy-space-2: .75rem;--nerdy-space-3: 1rem;--nerdy-space-4: 1.5rem;--nerdy-space-5: 2rem;--nerdy-radius-sm: .4rem;--nerdy-radius-md: .75rem;--nerdy-shadow: 0 1px 0 rgba(0, 0, 0, .04), 0 10px 24px rgba(15, 21, 20, .08);--nerdy-font-ui: "IBM Plex Sans", "Segoe UI", sans-serif;--nerdy-font-code: "IBM Plex Mono", "SFMono-Regular", "Consolas", monospace}*,*:before,*:after{box-sizing:border-box}html{font-size:16px}body{margin:0;min-height:100vh;color:var(--nerdy-text);font-family:var(--nerdy-font-ui);line-height:1.45;background:linear-gradient(to right,rgba(13,122,95,.06) 1px,transparent 1px),linear-gradient(to bottom,rgba(13,122,95,.06) 1px,transparent 1px),radial-gradient(circle at 10% 0%,#f8fbfa 0%,var(--nerdy-bg) 50%,#ecf1f0 100%);background-size:28px 28px,28px 28px,auto}.app{width:min(1320px,calc(100% - 2rem));margin:var(--nerdy-space-4) auto var(--nerdy-space-5);padding:0}.app__header{margin-bottom:var(--nerdy-space-4)}.app__title{margin:0;color:var(--nerdy-text);font-family:var(--nerdy-font-code);font-weight:700;font-size:clamp(1.6rem,1rem + 2vw,2.5rem);letter-spacing:-.02em}.app__subtitle{margin:var(--nerdy-space-2) 0 0;font-family:var(--nerdy-font-code);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--nerdy-text-muted)}.app__skip-link{position:absolute;top:-9999px;left:-9999px;background:var(--nerdy-accent);color:#fff;padding:.55rem .8rem;border-radius:var(--nerdy-radius-sm);font-family:var(--nerdy-font-code);text-decoration:none;z-index:2000}.app__skip-link:focus{top:1rem;left:1rem}.grid{display:grid;gap:var(--nerdy-space-3)}.grid--cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid__col--12{grid-column:span 12}.grid__col--8{grid-column:span 8}.grid__col--6{grid-column:span 6}.grid__col--4{grid-column:span 4}.card{border:1px solid var(--nerdy-line);border-radius:var(--nerdy-radius-md);background:var(--nerdy-surface);box-shadow:var(--nerdy-shadow);padding:var(--nerdy-space-4)}.card__title{margin:0 0 var(--nerdy-space-3);color:var(--nerdy-text);font-family:var(--nerdy-font-code);font-size:.95rem;text-transform:uppercase;letter-spacing:.08em}.card__title span{color:var(--nerdy-text-muted);font-size:.75rem;letter-spacing:.04em}.form{display:flex;flex-direction:column;gap:var(--nerdy-space-3)}.form__row{display:flex;flex-wrap:wrap;gap:var(--nerdy-space-2)}.form__field{flex:1;min-width:0;display:flex;flex-direction:column;position:relative}.form__label{margin-bottom:.35rem;color:var(--nerdy-text-muted);font-family:var(--nerdy-font-code);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase}.form__hint{margin-top:.3rem;color:var(--nerdy-text-muted);font-size:.74rem}.form__input,.form__textarea,.form__select{width:100%;border:1px solid var(--nerdy-line);border-radius:var(--nerdy-radius-sm);padding:.58rem .68rem;font:inherit;color:var(--nerdy-text);font-family:var(--nerdy-font-code);background:#fff;transition:border-color .15s ease,box-shadow .15s ease}.form__input:disabled{color:#7a8482;background:#f1f4f3}.form__input::placeholder,.form__textarea::placeholder{color:#7a8784}.form__input:focus,.form__textarea:focus,.form__select:focus{outline:none;border-color:var(--nerdy-accent);box-shadow:0 0 0 3px #0d7a5f26}.form__input--range{padding:0;height:2rem;border:none;box-shadow:none;background:transparent}.form__input--range:focus{box-shadow:none}.form__input--range::-webkit-slider-runnable-track{height:.35rem;border-radius:999px;background:#d7e0de}.form__input--range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1rem;height:1rem;margin-top:-.33rem;border-radius:50%;border:2px solid #ffffff;background:var(--nerdy-accent)}.form__input--range::-moz-range-track{height:.35rem;border-radius:999px;background:#d7e0de}.form__input--range::-moz-range-thumb{width:1rem;height:1rem;border:2px solid #ffffff;border-radius:50%;background:var(--nerdy-accent)}.form__value{position:absolute;top:0;right:0;color:var(--nerdy-accent);font-family:var(--nerdy-font-code);font-size:.75rem;font-weight:600}.button{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:1px solid var(--nerdy-accent);border-radius:var(--nerdy-radius-sm);background:var(--nerdy-accent);color:#fff;padding:.6rem .88rem;font-family:var(--nerdy-font-code);font-size:.74rem;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.button:hover{background:#0a6a53;border-color:#0a6a53}.button:focus-visible{outline:none;box-shadow:0 0 0 3px #0d7a5f40}.button--ghost{color:var(--nerdy-accent);border-color:var(--nerdy-accent);background:#fff}.button--ghost:hover{background:var(--nerdy-accent-soft)}.button--small{padding:.45rem .6rem;font-size:.66rem}.button--help{position:fixed;top:1rem;right:1rem;z-index:1200;box-shadow:0 10px 25px #0d7a5f40}.upload{display:flex;flex-direction:column;gap:var(--nerdy-space-2)}.upload__dropzone{border:2px dashed #bad2cb;border-radius:var(--nerdy-radius-md);background:var(--nerdy-surface-soft);padding:var(--nerdy-space-4);text-align:center;color:var(--nerdy-text-muted)}.upload__dropzone--active{border-color:var(--nerdy-accent);background:var(--nerdy-accent-soft);color:#11473a}.upload__input{margin-top:var(--nerdy-space-2)}.mapping{display:flex;flex-direction:column;gap:var(--nerdy-space-2);max-height:25rem;overflow:auto}.mapping__table{width:100%;border-collapse:separate;border-spacing:0;font-family:var(--nerdy-font-code);font-size:.79rem}.mapping__head th{position:sticky;top:0;z-index:2;text-align:left;background:#f1f5f4;color:var(--nerdy-text-muted);border-bottom:1px solid var(--nerdy-line);padding:.5rem}.mapping__row{background:#fff}.mapping__row:nth-child(2n){background:#f9fbfb}.mapping__row:hover{background:#eef7f4}.mapping__row--selected{background:#e1f1eb!important;box-shadow:inset 3px 0 0 var(--nerdy-accent)}.mapping__cell{padding:.5rem;border-bottom:1px solid #e8eeec;vertical-align:middle}.mapping__char-input{width:3.2rem;text-align:center}.mapping__preview{display:block;border:1px solid #d6dfdc;border-radius:.35rem;background:#eef5f2}.mapping__preview path{fill:#102522}.mapping__preview rect{fill:#0d7a5f14}.glyph-editor{display:flex;flex-direction:column;gap:var(--nerdy-space-3)}.glyph-editor__controls{background:var(--nerdy-surface-soft);border:1px solid var(--nerdy-line);border-radius:var(--nerdy-radius-md);padding:var(--nerdy-space-3)}.glyph-editor__preview{display:flex;flex-direction:column;gap:var(--nerdy-space-2)}.glyph-editor__canvas{border:1px solid var(--nerdy-line);border-radius:var(--nerdy-radius-md);background:linear-gradient(to right,rgba(13,122,95,.05) 1px,transparent 1px),linear-gradient(to bottom,rgba(13,122,95,.05) 1px,transparent 1px),#fff;background-size:30px 30px;padding:clamp(.75rem,1vw,1.2rem)}.glyph-editor__svg{display:block;width:100%;max-width:700px;margin:0 auto;height:auto}.glyph-editor__info{margin:0;color:var(--nerdy-text-muted);text-align:center;font-size:.84rem}.preview{display:flex;flex-direction:column;gap:var(--nerdy-space-2)}.preview__sample{border:1px solid var(--nerdy-line);border-radius:var(--nerdy-radius-md);background:#f8fbfa;min-height:128px;padding:var(--nerdy-space-4);display:flex;align-items:center}.preview__sample--font{font-family:var(--preview-font-family, var(--nerdy-font-ui))}.preview__sample-text{margin:0;color:var(--nerdy-text)}.preview__input{min-width:280px}.log{margin:0;color:var(--nerdy-text-muted);font-size:.8rem}.log--error{color:var(--nerdy-danger)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1500}.modal__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#070d0bb3;display:flex;align-items:center;justify-content:center;padding:var(--nerdy-space-4)}.modal__container{width:min(860px,100%);max-height:90vh;overflow:hidden;border:1px solid var(--nerdy-line);border-radius:var(--nerdy-radius-md);background:var(--nerdy-surface);box-shadow:0 18px 45px #05100d54;display:flex;flex-direction:column}.modal__header,.modal__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--nerdy-space-2);padding:1rem 1.25rem;border-bottom:1px solid #e9eeec;background:#f7faf9}.modal__footer{border-bottom:none;border-top:1px solid #e9eeec;justify-content:flex-end}.modal__title{margin:0;font-family:var(--nerdy-font-code);font-size:1rem;letter-spacing:.04em;text-transform:uppercase}.modal__close{border:1px solid var(--nerdy-line);border-radius:var(--nerdy-radius-sm);background:#fff;color:var(--nerdy-text);font-size:1.25rem;width:2rem;height:2rem;line-height:1;cursor:pointer}.modal__close:hover{background:var(--nerdy-surface-soft)}.modal__content{padding:1.25rem;overflow:auto}.help-section{margin-bottom:1.25rem;padding-bottom:1.25rem;border-bottom:1px solid #ebf0ee}.help-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}.help-section__title{margin:0 0 .45rem;color:var(--nerdy-accent);font-family:var(--nerdy-font-code);font-size:.88rem;text-transform:uppercase;letter-spacing:.05em}.help-section__text,.help-section__note,.help-section__list{color:var(--nerdy-text);line-height:1.6;margin-top:.4rem}.help-section__list{padding-left:1.1rem}.help-section__note{border-left:3px solid var(--nerdy-accent);background:var(--nerdy-accent-soft);border-radius:0 var(--nerdy-radius-sm) var(--nerdy-radius-sm) 0;padding:.7rem .9rem}.help-section--tips{padding:1rem;border:1px solid #dce7e3;border-radius:var(--nerdy-radius-sm);background:#f7fbfa}.app__footer{margin:var(--nerdy-space-4) auto 0;width:min(1320px,calc(100% - 2rem));color:#6c7775;font-family:var(--nerdy-font-code);font-size:.72rem}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#edf2f0}::-webkit-scrollbar-thumb{background:#b8c9c4;border-radius:999px;border:2px solid #edf2f0}@media(max-width:980px){.grid--cols-12{grid-template-columns:repeat(6,minmax(0,1fr))}.grid__col--8,.grid__col--6,.grid__col--4{grid-column:span 6}}@media(max-width:760px){.app{width:calc(100% - 1rem);margin-top:.75rem}.button--help{position:static;margin-bottom:.75rem;width:calc(100% - 1rem);margin-left:.5rem;margin-right:.5rem}.grid--cols-12{grid-template-columns:repeat(4,minmax(0,1fr))}.grid__col--8,.grid__col--6,.grid__col--4{grid-column:span 4}.card{padding:1rem}.modal__overlay{padding:.75rem}.preview__input{min-width:0}}
