.imperfect-logo{display:block;height:auto;margin:0 auto;max-width:100%}.imperfect-logo--contrast{background-color:#fff;border-radius:6px;padding:4px}:root{--blue-main:#083a63;--blue-focus:#0d6efd;--blue-light:#e6f0fa;--text-dark:#083a63;--bg-light:#fff;--bg-mid:#e6f0fa;--upload-border:#b2bed3;--font-family-base:"Inter","Segoe UI",Helvetica,Arial,sans-serif;--font-size-base:1rem;--primary-action-width:min(360px,90vw)}a:focus-visible,audio:focus-visible,button:focus-visible,canvas:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--blue-focus);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);margin:-1px;position:absolute!important;white-space:nowrap}.focus-loop-boundary,.visually-hidden{border:0;height:1px;overflow:hidden;padding:0;width:1px}.focus-loop-boundary{margin:0;position:absolute}.app-shell{font-size:1.05rem;padding:10px}.app-bg,.app-shell,body{color:var(--text-dark);font-family:var(--font-family-base)}.app-bg,body{background:#fff;font-size:var(--font-size-base);margin:0;min-height:100vh;padding:0}.skip-link{background:#fff;color:var(--blue-main);font-weight:700;left:-9999px;padding:8px 16px;position:absolute;text-decoration:underline;z-index:10000}.skip-link:focus-visible{left:10px;top:10px}.app-header{margin-bottom:24px;margin-top:32px;text-align:center}.app-main{box-sizing:border-box;margin:0 auto;max-width:720px;padding:16px;width:100%}.braille-logo-row{display:flex;gap:12px;justify-content:center;margin-bottom:10px}.app-title{font-size:2rem;font-weight:700;letter-spacing:1px;margin:0 0 .1em;text-align:center}.app-desc,.app-title{color:var(--text-dark)}.app-desc{font-size:1.05rem;margin-top:6px}.main-header{align-items:center;display:flex;flex-direction:column;gap:12px;padding-top:20px;text-align:center}.main-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:420px;width:100%}.focus-region-actions{display:flex;justify-content:center;margin:8px 0 20px}.focus-region-actions__buttons,.main-header-actions__buttons{align-items:center;display:flex;flex-direction:column;gap:8px;width:var(--primary-action-width)}.back-to-app-button{align-items:center;background:var(--blue-main);border:2px solid #0000;border-radius:12px;box-shadow:0 2px 10px #083a631f;color:#fff;display:inline-flex;font-size:1rem;font-weight:700;gap:8px;padding:12px 1px;text-decoration:none;text-transform:capitalize;transition:background .2s ease,box-shadow .2s ease,transform .1s ease,border-color .2s ease}.back-to-app-button:hover{background:#06294b;border-color:#0000;box-shadow:0 4px 14px #083a632e;color:#fff;transform:translateY(-1px)}.back-to-app-button:active{box-shadow:0 2px 10px #083a631f;transform:translateY(0)}.sign-out-button{font-size:1.15rem;margin:0;min-width:160px;padding:12px 20px}.wide-action-button{background:var(--blue-main);border-radius:12px;box-shadow:0 2px 10px #083a6326;color:#fff;font-size:1.15rem;font-weight:700;letter-spacing:1px;max-width:480px;min-height:64px;padding:16px 24px;width:var(--primary-action-width)}.export-button:focus-visible,.wide-action-button:focus-visible{box-shadow:0 0 0 2px #153a5b,0 4px 14px #083a6333;outline:3px solid #97c8ff;outline-offset:3px}.wide-action-button:disabled{cursor:not-allowed;opacity:.6}.language-selector{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.language-selector__label{align-items:center;display:flex;font-size:1.15rem;font-weight:500;gap:4px}.language-selector__icon{font-size:1.4rem}.language-selector__select{border:1px solid #ccc;border-radius:8px;font-size:1.15rem;padding:10px 14px}.policy-page{margin:0 auto;max-width:800px;outline:none;padding:2rem}.policy-header{margin-bottom:1.5rem;text-align:center}.policy-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}.policy-header-actions .language-selector{justify-content:flex-start}.policy-header-actions .back-to-app-button{flex-shrink:0;white-space:nowrap}.app-footer{color:#163f73;flex-direction:column;font-size:1rem;gap:22px;margin-top:16px;padding:8px 0 20px;text-align:center}.app-footer,.app-footer__nav{align-items:center;display:flex}.app-footer__nav{flex-wrap:wrap;gap:14px 22px;justify-content:center;line-height:1.35;margin:0}.app-footer__link{align-items:center;border-radius:10px;color:#163f73;display:inline-flex;font-size:1.05rem;font-weight:700;justify-content:center;min-height:44px;min-width:48px;padding:0 8px;text-decoration:none}.app-footer__donate-wrap{display:flex;justify-content:center;margin-top:2px;width:100%}.app-footer__donate{align-items:center;background:#ffc439;border:2px solid #f4b400;border-radius:999px;box-sizing:border-box;color:#111;cursor:pointer;display:inline-flex;font-size:1.15rem;font-weight:800;justify-content:center;max-width:360px;min-height:64px;padding:14px 24px;text-decoration:none;width:var(--primary-action-width)}.app-footer__donate-panel{background:#f6faff;border:2px solid #163f73;border-radius:12px;margin-top:12px;padding:16px;text-align:left;width:min(100%,720px)}.app-footer__donate-panel-title{color:#102f56;font-size:1.1rem;margin:0 0 12px}.app-footer__donate-panel-text{color:#163f73;margin:0 0 10px}.app-footer__donate-panel-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.app-footer__donate-panel-btn{min-height:44px}.app-footer__donate-fallback-link{display:inline-block;font-weight:700;margin-top:8px}.app-footer__donate-status{color:#163f73;margin:10px 0 0;min-height:1.4em}.app-footer__copyright{color:#163f73;font-size:1rem;line-height:1.45;margin-top:4px}.icon-btn,.nav-btn,.primary-btn,.register-btn,.secondary-btn{background:var(--blue-main);border:none;border-radius:8px;box-shadow:0 1px 4px #0001;color:#fff;cursor:pointer;font-size:1.25rem;min-height:52px;min-width:52px;padding:14px 24px;transition:box-shadow .15s,background .15s}.icon-btn:focus-visible,.nav-btn:focus-visible,.primary-btn:focus-visible,.register-btn:focus-visible,.secondary-btn:focus-visible{box-shadow:none;outline:3px solid #ffd000;outline-offset:2px}.icon-btn.speaking,.icon-btn.speaking:focus-visible{background:#b80b00;box-shadow:0 0 0 4px #ffb7b7}.export-btn{border:none;border-radius:12px;box-shadow:0 2px 10px #083a6326;cursor:pointer;font-family:var(--font-family-base);font-size:1.15rem;font-weight:700;letter-spacing:1px;min-height:64px;min-width:52px;padding:16px 24px;transition:box-shadow .15s,background .15s,color .15s,border-color .15s}.export-btn,.export-btn--primary{background:var(--blue-main);color:#fff}.export-btn--primary{border:none}.export-btn--secondary{background:#fff;border:2px solid var(--blue-main);color:var(--text-dark)}.export-btn:focus-visible{box-shadow:none;outline:3px solid #ffd000;outline-offset:2px}.export-btn:disabled{cursor:not-allowed;opacity:.6}.upload-section{align-items:stretch;gap:14px;margin-bottom:24px}.upload-section,.upload-wrapper{display:flex;flex-direction:column;width:100%}.upload-wrapper{gap:18px}.upload-box{align-items:center;background:#f6f6f2;border:2px dashed var(--upload-border);border-radius:12px;box-sizing:border-box;color:var(--text-dark);cursor:pointer;display:flex;flex-direction:column;font-size:1rem;justify-content:center;margin-top:8px;max-width:100%;min-height:260px;min-width:100%;overflow:hidden;padding:24px 28px;text-align:center;transition:border .15s;width:100%}.description-upload-box,.upload-box.upload-image-box{padding:20px 24px}.upload-box:focus-visible{border:2px solid #ffd000;box-shadow:0 0 0 4px #ffd00033;outline:none}.upload-box-wrapper{width:100%}.upload-box-actions,.upload-box-wrapper{align-items:center;display:flex;flex-direction:column}.upload-box-actions{gap:8px;margin-top:10px}.overlay-focus-button,.overlay-focus-toggle{display:none}.overlay-status{background:#f1f5f9;border:1px solid #d7e2f3;border-radius:10px;box-sizing:border-box;color:#0f172a;margin-top:12px;max-width:520px;padding:10px 12px;width:100%}.overlay-status ul{margin:6px 0 0;padding-left:18px}.upload-picker-btn{font-size:1rem;min-width:220px}.supported-file-types{color:var(--text-dark);font-size:.9rem;margin-top:8px}.description-overlay-toggle{display:flex;justify-content:center;margin-top:8px;width:100%}.description-overlay-toggle .secondary-btn{font-size:1.15rem;font-weight:700;letter-spacing:1px;max-width:100%;padding:16px 24px;width:var(--primary-action-width)}.upload-preview{border-radius:8px;height:auto;object-fit:contain;width:100%}.upload-icon{font-size:2.2rem;margin-bottom:10px}.preview-frame{align-items:center;aspect-ratio:4/3;display:flex;justify-content:center;max-height:min(70vh,520px);max-width:min(680px,100%);min-height:220px;position:relative;width:100%}.upload-preview-canvas{image-rendering:crisp-edges;image-rendering:pixelated;max-height:100%;max-width:100%;object-fit:contain}.upload-status{margin-top:12px;text-align:center}.upload-status.error{color:#b80b00}.input-section,.vertical-sliders-section{align-items:center;display:flex;flex-direction:column;margin:0 auto 30px;max-width:340px;width:100%}.input-field{background:#fff;border:2px solid var(--blue-light);border-radius:8px;color:var(--text-dark);font-size:1.25rem;padding:16px;transition:border .15s;width:100%}.input-field:focus-visible{border:2px solid var(--blue-main)}input[type=range]{accent-color:var(--blue-main)}input[type=range]::-webkit-slider-thumb{background:var(--blue-main);border:2px solid var(--blue-main)}input[type=range]::-webkit-slider-runnable-track{background:var(--blue-light);border-radius:3px;height:6px}input[type=range]::-moz-range-thumb{background:var(--blue-main);border:2px solid var(--blue-main)}input[type=range]::-moz-range-track{background:var(--blue-light);border-radius:3px;height:6px}.form{display:flex;flex-direction:column;text-align:left;width:100%}.form-card{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0001;max-width:400px;padding:1rem}.form-field{margin-bottom:16px;width:100%}.form-label{color:var(--blue-main);display:block;font-size:1em;font-weight:500;margin-bottom:4px}.form-label.large{font-size:1.2em;font-weight:600}.form-input{background:#f8fafc;border:2px solid var(--blue-light);border-radius:7px;box-sizing:border-box;font-size:1.2em;padding:14px;width:100%}.form-textarea{min-height:56px;resize:vertical}.form-status-success{color:#0f9d58}.form-status-error,.form-status-success{font-weight:700;margin-top:12px;text-align:center}.form-status-error{color:#c0392b}.step-inline-group{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.step-inline-group.vertical{align-items:flex-start;flex-direction:column}.step-button{align-items:center;background:#fff;border:2px solid var(--blue-light);border-radius:8px;color:var(--blue-main);cursor:pointer;display:inline-flex;font-size:1.5rem;height:44px;justify-content:center;transition:background .15s ease,border-color .15s ease;width:44px}.step-button:focus-visible,.step-button:hover{background:#f0f6ff;border-color:var(--blue-main);outline:none}.step-button:active{background:#e0ecff}.form-button{align-self:center;background:var(--blue-main);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1.2em;font-weight:600;margin:16px 0 0;min-height:52px;min-width:52px;padding:14px 28px;text-align:center}.form-button.secondary{background:#fff;border:2px solid var(--blue-main);color:var(--blue-main)}.login-form .form-button,.register-form .form-button{box-sizing:border-box;margin:16px 0 0;width:100%}.login-form .forgot-link{align-self:flex-end;background:none;border:none;color:var(--blue-main);cursor:pointer;font-size:1.1em;margin-bottom:18px;padding:0}.form-button.link,.login-form .forgot-link{text-decoration:underline}.form-status{color:var(--blue-main);margin-top:18px;min-height:24px;text-align:center}.auth-error{background:#ffeaea;border-radius:.3rem;color:#e74c3c;font-size:.98rem;margin-top:.7rem;padding:.5rem .8rem;text-align:center}.auth-shell{background:#fff;box-sizing:border-box;color:var(--text-dark);min-height:100vh}.auth-header{gap:16px;margin-bottom:24px;margin-top:48px}.auth-header,.auth-page{align-items:center;display:flex;flex-direction:column}.auth-page{box-sizing:border-box;color:var(--text-dark);font-family:inherit;font-size:1.125rem;gap:20px;justify-content:center;padding:48px 20px 40px;text-align:center}.page-title{margin:32px 0 24px;text-align:center;width:100%}.auth-logo{background:#0000;height:auto;margin-bottom:0;max-width:100%;width:clamp(200px,32vw,260px)}.login-form,.register-form{margin:0 auto;max-width:420px;width:100%}.auth-message{line-height:1.5;margin-top:16px;max-width:520px}.auth-actions{align-items:center;display:flex;flex-direction:column;gap:12px}.auth-actions,.auth-form{max-width:360px;width:100%}.auth-form .req-list{text-align:left}.auth-button{width:100%}@media (max-width:640px){.app-main{padding:12px}.app-title{font-size:1.75rem}.app-desc{font-size:1rem}.upload-section{gap:10px}.upload-box{min-height:260px;min-width:100%;padding:18px;width:100%}.description-upload-box,.upload-box.upload-image-box{padding:16px}.wide-action-button{width:100%}}.centered-main{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;margin:0 auto;max-width:420px;padding:40px 20px;width:100%}.req-list{font-size:.9em;margin:8px 0 0;padding-left:20px;text-align:left}.imperfect-logo,img{background:none!important;border:none!important;box-shadow:none!important;filter:none!important}::placeholder{color:var(--text-dark);opacity:.8}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media (max-width:960px){.app-bg,body{font-size:1.05rem}.app-main{padding:16px}.main-header{padding:16px 12px 0}}@media (max-width:680px){.app-bg,body{font-size:1rem}.app-main{padding:12px}.main-header-actions{max-width:none;width:100%}.language-selector__label{font-size:1rem}.language-selector__select{width:100%}.policy-header-actions{align-items:stretch;flex-direction:column}.policy-header-actions .language-selector{width:100%}.policy-header-actions .back-to-app-button{text-align:center;width:100%}.header-button,.sign-out-button{width:100%}.upload-section{align-items:stretch;flex-direction:column}.upload-box-wrapper{width:100%}.upload-box{box-sizing:border-box;height:auto;min-height:260px;min-width:0;padding:18px;width:100%}.supported-file-types{text-align:center}.form-card{box-sizing:border-box;width:100%}}
/*# sourceMappingURL=main.4bb660d6.css.map*/