.ribbon{display:flex;flex-direction:column;border-bottom:1px solid #d0d0d0;background:#f5f5f5;flex-shrink:0}.ribbon__tabs{display:flex;padding:0 8px;border-bottom:1px solid #d0d0d0;background:#ededed}.ribbon__tab{padding:4px 16px;border:none;background:transparent;cursor:pointer;font:inherit;font-size:.85rem;color:#6b6b6b;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}.ribbon__tab:hover{color:#1a1a1a}.ribbon__tab[aria-selected=true]{color:#0078d4;border-bottom-color:#0078d4;font-weight:600}.ribbon__tab:focus-visible{outline:2px solid #0078d4;outline-offset:2px}.ribbon__panel{display:none;padding:8px 16px;min-height:56px;align-items:center;gap:8px;flex-wrap:wrap}.ribbon__panel--active{display:flex}.ribbon-group{display:flex;flex-direction:column;align-items:center;gap:2px;padding:0 4px;border-right:1px solid #d0d0d0}.ribbon-group:last-child{border-right:none}.ribbon-group__label{font-size:.7rem;color:#6b6b6b;text-align:center}.ribbon-group__buttons{display:flex;gap:2px}.ribbon-btn{display:flex;flex-direction:column;align-items:center;padding:4px;border:1px solid transparent;border-radius:3px;background:transparent;cursor:pointer;font:inherit;font-size:.75rem;color:#1a1a1a;min-width:40px;gap:2px;transition:background .1s}.ribbon-btn:hover:not(:disabled){background:#e1e1e1;border-color:#d0d0d0}.ribbon-btn:focus-visible{outline:2px solid #0078d4;outline-offset:1px}.ribbon-btn:disabled{opacity:.4;cursor:default}.ribbon-btn--active{background:#cce4f6;border-color:#0078d4}.ribbon-tab-content{display:flex;gap:8px}.ribbon-select-container,.ribbon-input-container{display:flex;flex-direction:column;gap:2px}.ribbon-label{font-size:.65rem;color:#6b6b6b;text-transform:uppercase}.ribbon-select,.ribbon-input{font:inherit;font-size:.8rem;padding:2px 4px;border:1px solid #d0d0d0;border-radius:3px;background:#fff;color:#1a1a1a;width:80px}.ribbon-select:focus,.ribbon-input:focus{outline:none;border-color:#0078d4}.ribbon-input{width:60px}.ribbon-group__buttons--grid{display:grid!important;grid-template-columns:repeat(2,1fr);gap:2px}.editor-area{flex:1;min-height:0;overflow-y:auto;background:#fff;padding:16px}.row-list{display:table;width:100%;border-collapse:collapse}.editor-row{display:table-row;position:relative}.editor-row--selected{background:#cce4f6!important}.editor-row__cell{display:table-cell;vertical-align:top;padding:2px 4px;border-bottom:1px solid rgb(220.75,220.75,220.75)}.editor-row__cell--type{width:140px;min-width:140px;position:relative}.editor-row__cell--comment{width:32px;min-width:32px}.editor-row__cell--content{min-width:200px}.editor-row__cell--braille{min-width:160px}.editor-header{display:table-row}.editor-header__cell{display:table-cell;padding:4px;font-size:.75rem;font-weight:600;color:#6b6b6b;border-bottom:2px solid #d0d0d0;background:#f5f5f5;position:sticky;top:0;z-index:10}.type-cell{position:relative;display:flex;align-items:center;min-height:28px;border-radius:2px;border:2px solid transparent}.type-cell:focus{outline:none}.type-cell__input{width:100%;height:100%;padding:2px 4px;border:2px solid transparent;border-radius:2px;background:transparent;font:inherit;font-size:.8rem;font-weight:500;color:#1a1a1a;cursor:default}.type-cell__input:focus{outline:none;cursor:text}.type-cell__input--empty{color:#6b6b6b;font-style:italic}.type-dropdown{position:absolute;top:100%;left:0;width:100%;min-width:180px;background:#fff;border:1px solid #d0d0d0;border-radius:0 0 4px 4px;box-shadow:0 4px 12px #0000001f;z-index:100;margin-top:-1px;overflow:hidden}.type-dropdown__list{list-style:none;margin:0;padding:2px 0;max-height:200px;overflow-y:auto}.type-dropdown__item{padding:2px 8px;font-size:.85rem;cursor:pointer;color:#1a1a1a}.type-dropdown__item:hover,.type-dropdown__item--highlight{background:#cce4f6}.type-dropdown__item--text{color:#6b6b6b;font-style:italic}.type-dropdown__item--empty{color:#6b6b6b;font-style:italic;cursor:default}.raw-input{width:100%;min-height:28px;padding:2px 4px;border:1px solid transparent;border-radius:3px;background:transparent;font:inherit;font-size:.9rem;line-height:1.2;resize:none;overflow:hidden;box-sizing:border-box;display:block}.raw-input:focus{outline:2px solid #0078d4;border-color:#0078d4;background:#fff}.content-cell{min-height:28px;padding:2px 4px;border-radius:2px;border:2px solid transparent;cursor:default}.content-cell:focus{outline:none}.content-cell__empty{color:#6b6b6b;font-style:italic;font-size:.8rem}.preview-cell{font-size:.9rem;color:#1a1a1a;min-height:28px}.preview-cell .preview-heading{margin:0;line-height:1.2}.preview-cell .preview-heading-1{font-size:1.2em;font-weight:700}.preview-cell .preview-heading-2{font-size:1.05em;font-weight:600}.preview-cell .preview-heading-3{font-size:.95em;font-weight:500}.preview-cell .preview-hr{border:none;border-top:2px solid #d0d0d0;margin:8px 0}.preview-cell .preview-page-break{border-top:2px dashed #e0e0e0;margin:6px 0 2px;position:relative}.preview-cell .preview-page-break:before{content:"Page Break";position:absolute;top:-9px;left:0;font-size:.65rem;color:#e0e0e0;background:#fff;padding:0 4px}.preview-cell .preview-latex{font-family:Courier New,monospace;background:#fafafa;padding:2px 6px;border-radius:3px;font-size:.85em;color:#005ba1}.type-cell--selected,.content-cell--selected,.braille-cell--selected{border-color:#0078d4!important;background:#0078d40a}.type-cell--editing,.content-cell--editing{border-color:#0078d4!important;background:#0078d414}.braille-cell{font-family:Segoe UI,DejaVu Sans,sans-serif;font-size:1.1rem;letter-spacing:.05em;color:#1a1a1a;min-height:28px;white-space:pre-wrap;word-break:break-all;border:2px solid transparent;border-radius:2px;cursor:default}.braille-cell:focus{outline:none}.comment-circle{width:14px;height:14px;border-radius:50%;border:2px solid #d0d0d0;background:transparent;cursor:pointer;padding:0;display:block;margin:6px auto;transition:border-color .1s,background .1s}.comment-circle:hover{border-color:#6b6b6b}.comment-circle:focus-visible{outline:2px solid #0078d4}.comment-circle--active{border-color:#f59f00;background:#f59f00}.comment-dialog{border:1px solid #d0d0d0;border-radius:6px;padding:0;min-width:280px;box-shadow:0 4px 16px #00000026}.comment-dialog::backdrop{background:#0003}.comment-dialog__content{padding:16px;display:flex;flex-direction:column;gap:8px}.comment-dialog__label{display:flex;flex-direction:column;gap:2px;font-size:.8rem;font-weight:600}.comment-dialog__input{width:100%;border:1px solid #d0d0d0;border-radius:3px;padding:4px;font:inherit;font-size:.85rem;resize:vertical;box-sizing:border-box}.comment-dialog__input:focus{outline:2px solid #0078d4}.comment-dialog__actions{display:flex;justify-content:flex-end;gap:4px}.comment-dialog__save{padding:2px 8px;background:#0078d4;color:#fff;border:none;border-radius:3px;cursor:pointer;font-size:.85rem}.comment-dialog__save:hover{background:#006bc2}.comment-dialog__delete{padding:2px 8px;background:transparent;color:#c00;border:1px solid #c00;border-radius:3px;cursor:pointer;font-size:.85rem}.comment-dialog__delete:hover{background:#ffeaea}.page-break{display:table-row}.page-break__cell{display:table-cell;padding:2px 0}.page-break__cell--line{border-top:2px dashed #e0e0e0;position:relative}.page-break__cell--line:before{content:"Page break";position:absolute;top:-10px;left:8px;font-size:.65rem;color:#e0e0e0;background:#fff;padding:0 4px}.editor-row--trailing{opacity:.55}.editor-row--trailing .raw-input{font-style:italic}.editor-row--trailing .raw-input::placeholder{color:#6b6b6b}.editor-row--drag-over{outline:2px solid #0078d4;outline-offset:-2px}.drag-handle{cursor:grab;opacity:.3;padding:0 4px;-webkit-user-select:none;user-select:none}.drag-handle:hover{opacity:.7}.drag-handle:active{cursor:grabbing}@media print{.braille-editor__ribbon,.editor-row__cell--handle,.editor-row__cell--comment,.editor-row__cell--type,.page-break,.comment-circle,.comment-dialog{display:none!important}.editor-header__cell:nth-child(1),.editor-header__cell:nth-child(2),.editor-header__cell:nth-child(3){display:none!important}@page{size:A4;margin:15mm}.row-list{width:100%;border-collapse:collapse}.editor-row{display:table-row}.editor-row__cell--content,.editor-row__cell--braille{display:table-cell;width:50%;border-bottom:none!important;padding:4px 8px;vertical-align:top}.preview-heading-1{font-size:1.2em;font-weight:700}.preview-heading-2{font-size:1.05em;font-weight:600}.preview-heading-3{font-size:.95em;font-weight:500}.preview-hr{border:none;border-top:2px solid #000;margin:8px 0}.preview-latex{font-family:monospace;background:#f0f0f0;padding:2px 6px}.braille-cell{font-family:Courier New,monospace;font-size:10pt;white-space:pre-wrap}}.print-dialog{border:1px solid #d0d0d0;border-radius:6px;padding:24px;min-width:320px;box-shadow:0 4px 16px #00000026;font-family:system-ui,-apple-system,sans-serif;font-size:14px;color:#1a1a1a}.print-dialog::backdrop{background:#00000059}.print-dialog__title{font-weight:600;font-size:15px;margin:0 0 2px}.print-dialog__subtitle{font-size:12px;color:#6b6b6b;margin:0 0 16px}.print-dialog__field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.print-dialog__label{font-size:12px;color:#6b6b6b;font-weight:500}.print-dialog__select,.print-dialog__input{padding:4px 8px;border:1px solid #d0d0d0;border-radius:4px;font-size:13px;font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a1a;outline:none}.print-dialog__select:focus,.print-dialog__input:focus{border-color:#0078d4;box-shadow:0 0 0 2px #0078d433}.print-dialog__select{cursor:pointer}.print-dialog__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.print-dialog__btn{padding:4px 16px;border-radius:4px;border:1px solid #d0d0d0;font-size:13px;font-family:system-ui,-apple-system,sans-serif;cursor:pointer;transition:background .1s}.print-dialog__btn--cancel{background:#f5f5f5;color:#1a1a1a}.print-dialog__btn--cancel:hover{background:#d0d0d0}.print-dialog__btn--ok{background:#0078d4;color:#fff;border-color:#0078d4}.print-dialog__btn--ok:hover{background:#006bc2}.print-dialog__btn:focus-visible{outline:2px solid #0078d4;outline-offset:2px}html,body{margin:0;padding:0;height:100%;overflow:hidden}#app{height:100%}*,*:before,*:after{box-sizing:border-box}.braille-editor{display:flex;flex-direction:column;height:100%;font-family:system-ui,-apple-system,sans-serif;font-size:14px;color:#1a1a1a;background:#fff;overflow:hidden}.braille-editor__ribbon{flex-shrink:0}.braille-editor__body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.skip-link{position:absolute;left:-9999px;top:0}.skip-link:focus{left:8px;top:8px;z-index:1000;padding:4px 8px;background:#0078d4;color:#fff;border-radius:3px;text-decoration:none}.sr-announce{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}@media (prefers-reduced-motion: reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
