:root{--color-canvas:#f3f3f3;--color-bg:#fff;--color-bg-muted:#f7f7f7;--color-bg-subtle:#ededed;--color-text:#0b0b0b;--color-text-muted:#606060;--color-border:#c9c9c9;--color-border-light:#dfdfdf;--color-primary:#101010;--color-primary-hover:#000;--color-primary-light:#edf1ff;--color-accent:#2855ff;--color-accent-hover:#1740df;--color-accent-soft:#edf1ff;--color-success:#0f9f68;--color-warning:#c87500;--color-warning-light:#fff2d8;--color-danger:#df3f38;--color-danger-hover:#bd2822;--color-danger-light:#ffe8e6;--radius-sm:5px;--radius-md:8px;--radius-lg:12px;--control-height:34px;--focus-ring:0 0 0 3px #2855ff33;--shadow-panel:0 1px 2px #0000000a, 0 8px 24px #0000000a;--shadow-float:0 16px 40px #0000002b;--font-ui:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-reading:Georgia, "Times New Roman", serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--transition-base:background-color .16s ease, border-color .16s ease, color .16s ease, box-shadow .16s ease;--text-sm:12px;--text-base:14px;--text-lg:16px;--text-xl:20px;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:20px;--space-2xl:24px}*,:before,:after{box-sizing:border-box}.is-hidden{display:none!important}html,body{background:var(--color-canvas);height:100vh;color:var(--color-text);font-family:var(--font-ui);margin:0;padding:0;overflow:hidden}.app-shell{font-family:var(--font-ui);padding:var(--space-lg);gap:var(--space-lg);flex-direction:column;height:100vh;margin:0 auto;display:flex}.main-layout{gap:var(--space-lg);-webkit-user-select:none;user-select:none;flex:1;justify-content:safe center;align-items:stretch;min-height:0;display:flex;overflow-x:auto}.editor-column,.figure-column,.taxa-column,.print-column{background:var(--color-bg);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);height:100%;min-height:0;box-shadow:var(--shadow-panel);flex-direction:column;transition:flex-grow .21s cubic-bezier(.22,.75,.25,1),flex-basis .21s cubic-bezier(.22,.75,.25,1),min-width .21s cubic-bezier(.22,.75,.25,1),max-width .21s cubic-bezier(.22,.75,.25,1);display:flex;overflow:hidden}.editor-column{flex:1.2 0 330px;min-width:320px;max-width:700px}.figure-column{flex:1 0 280px;min-width:280px;max-width:600px}.taxa-column{flex:1 0 300px;min-width:300px;max-width:600px}.print-column{flex:.8 0 250px;min-width:250px;max-width:520px}#editor-container,#figure-container,#taxa-container,#print-view-container{background:var(--color-bg);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);min-height:0;box-shadow:var(--shadow-panel);flex:1;overflow-y:auto}#editor-container,#figure-container,#taxa-container{padding:var(--space-lg)}#print-view-container{padding:var(--space-2xl);border-color:var(--color-border-light);background:#fff}.editor-column h2,.figure-column h2,.taxa-column h2,.print-column h2{margin-top:0;margin-bottom:var(--space-md);font-size:var(--text-xl);color:var(--color-text)}.panel-toggle{width:100%;font:inherit;color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:6px;margin:0;padding:0;display:flex}.panel-toggle:hover{color:var(--color-primary)}.panel-caret{flex:none;font-size:.7em;transition:transform .15s}.editor-column.is-collapsed,.figure-column.is-collapsed,.taxa-column.is-collapsed,.print-column.is-collapsed{flex:0 0 52px;min-width:52px;max-width:52px}[data-panel]>:not(.panel-header){opacity:1;visibility:visible;transition:opacity .14s 65ms,visibility linear}.is-collapsed>:not(.panel-header){opacity:0;visibility:hidden;pointer-events:none;transition:opacity .11s,visibility 0s linear .11s}.is-collapsed .panel-header{height:100%;margin-bottom:0}.is-collapsed .panel-toggle{writing-mode:vertical-rl;white-space:nowrap;width:auto;height:100%;padding:var(--space-md) 0;justify-content:flex-start;overflow:hidden}.is-collapsed .panel-caret{transform:rotate(-90deg)}.hr-print,#file-import-hidden,#modal-shortcuts,#modal-options,#modal-about{display:none}.about-modal-window{max-width:400px}.about-modal-body{text-align:center;padding:var(--space-xl) var(--space-md)}.about-title{font-size:var(--text-xl);margin-bottom:var(--space-xs)}.about-version{color:var(--color-text-muted);font-size:var(--text-base);margin-bottom:var(--space-lg)}.about-description{font-size:var(--text-base);margin-bottom:var(--space-lg);line-height:1.5}.about-divider{margin:var(--space-lg) 0}.about-credits{font-size:var(--text-sm);color:var(--color-text-muted)}.app-menu-bar{background-color:var(--color-bg-muted);border-bottom:1px solid var(--color-border);z-index:1000;font-size:var(--text-base);-webkit-user-select:none;user-select:none;padding:2px 8px;display:flex;position:sticky;top:0}.menu-item{position:relative}.menu-trigger{font-size:var(--text-base);cursor:pointer;color:var(--color-text);background:0 0;border:none;padding:6px 12px}.menu-trigger:hover,.menu-item:hover .menu-trigger{background-color:var(--color-border-light);border-radius:var(--radius-sm)}.menu-dropdown{background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:260px;padding:4px 0;display:none;position:absolute;top:100%;left:0;box-shadow:0 4px 12px #00000026}.menu-trigger[aria-expanded=true]+.menu-dropdown{display:block}.menu-trigger:focus-visible,.menu-trigger[aria-expanded=true]{background-color:var(--color-border-light);border-radius:var(--radius-sm);outline:2px solid var(--color-primary);outline-offset:-2px}.dropdown-action{text-align:left;width:100%;font-size:var(--text-base);color:var(--color-text);cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;padding:6px 16px;display:flex}.dropdown-action:hover,.dropdown-action:focus{background-color:var(--color-primary);color:var(--color-bg);outline:none}.dropdown-action:disabled{cursor:not-allowed;pointer-events:none;color:var(--color-border)!important;background-color:#0000!important}.dropdown-action:disabled .menu-shortcut{color:var(--color-border-light)!important}.dropdown-action.has-unsaved-changes{border-left:3px solid var(--color-warning);font-weight:700}.dropdown-action.has-unsaved-changes:hover{border-left-color:var(--color-bg)}.menu-shortcut{font-size:var(--text-sm);color:var(--color-text-muted);padding-left:var(--space-xl)}.menu-divider{background-color:var(--color-border-light);height:1px;margin:var(--space-xs) 0}.menu-title-container{align-items:center;gap:var(--space-sm);padding-right:var(--space-md);margin-left:auto;display:flex}.menu-title-label{font-size:var(--text-sm);color:var(--color-text-muted);font-weight:500}.key-title-input{width:220px;padding:var(--space-xs) var(--space-sm);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);font-size:var(--text-base)}.key-title-input:focus{border-color:var(--color-primary);outline:none}.btn{cursor:pointer;border-radius:var(--radius-sm);font-size:var(--text-base);transition:var(--transition-base);padding:6px 12px}.btn-secondary{background:var(--color-bg-muted);border:1px solid var(--color-border);color:var(--color-text-muted)}.btn-secondary:hover{background:var(--color-border-light)}.btn-primary{background:var(--color-primary);color:var(--color-bg);border:none}.btn-primary:hover{background:var(--color-primary-hover)}.btn-outline{border:1px solid var(--color-border);color:var(--color-text-muted);background:0 0}.btn-outline:hover{background:var(--color-bg-muted)}.btn-add-block{margin-top:var(--space-md);padding:var(--space-md) var(--space-xl);cursor:pointer;background:var(--color-primary);color:var(--color-bg);border-radius:var(--radius-md);width:100%;transition:var(--transition-base);border:none;flex-shrink:0;font-weight:700}.btn-add-block:hover{background:var(--color-primary-hover)}.key-card,.figure-card{border:none;border-bottom:1px solid var(--color-border-light);transition:var(--transition-base), transform .15s ease;background:0 0;border-left:4px solid #0000;position:relative}.key-card{padding:var(--space-md);cursor:grab}.figure-card{padding:var(--space-md);gap:var(--space-sm);cursor:grab;flex-direction:column;display:flex}.key-card input,.key-card textarea,.taxon-card input,.taxon-card textarea,.figure-card input,.figure-card textarea,.rte-host{cursor:text}.figure-card:last-of-type{border-bottom:none}.key-card:hover,.figure-card:hover{background-color:var(--color-bg-muted)}.key-card.is-selected,.figure-card.is-selected{border-left-color:var(--color-primary);background:var(--color-primary-light)}.key-card.is-link-out,.key-card.is-link-in{box-shadow:inset 4px 0 0 var(--color-success)}.nav-flash{animation:1s ease-out navFlash}@keyframes navFlash{0%{box-shadow:0 0 0 3px var(--color-primary), 0 0 12px 2px var(--color-primary)}to{box-shadow:0 0 #0000}}.fig-ref{color:var(--color-primary);cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.input-destination,.figure-card .figure-input-filename,.figure-card .figure-input-caption{font-family:sans-serif;font-size:var(--text-base);color:var(--color-text);border:none;border-bottom:1px solid var(--color-border-light);transition:var(--transition-base);-webkit-user-select:text;user-select:text;background:0 0;padding:2px 0;font-weight:500;line-height:1.5}.input-destination:focus,.figure-card .figure-input-filename:focus,.figure-card .figure-input-caption:focus{border-bottom-color:var(--color-primary);outline:none}.card-header{margin-bottom:var(--space-sm);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.card-header-left{align-items:center;gap:var(--space-md);display:flex}.card-title{color:var(--color-primary);font-weight:700;font-size:var(--text-lg);margin:0;font-family:monospace}.drag-handle{font-size:var(--text-lg);color:var(--color-border);opacity:0;cursor:grab;transition:opacity .15s}.key-card:hover .drag-handle,.figure-card:hover .drag-handle{opacity:1}.badge{font-size:var(--text-sm);border-radius:var(--radius-sm);padding:2px 6px;font-weight:500}.badge-isolated{background:var(--color-danger-light);color:var(--color-danger)}.badge-link{cursor:pointer}.badge-link:hover{color:var(--color-primary);text-decoration:underline}.card-row{margin-bottom:var(--space-sm);gap:var(--space-md);padding-left:var(--space-lg);align-items:flex-start;display:flex;position:relative}.card-row:before{content:"├";color:var(--color-border);font-family:monospace;font-size:var(--text-base);position:absolute;top:2px;left:0}.card-row:last-of-type{margin-bottom:0}.card-row:last-of-type:before{content:"└"}.card-meta-pane{gap:var(--space-md);font-size:var(--text-base);min-width:160px;color:var(--color-text-muted);flex-direction:column;align-items:flex-start;display:flex}.meta-label{align-items:center;gap:var(--space-sm);white-space:nowrap;width:100%;display:flex}.input-destination{width:140px}.input-destination.input-error{color:var(--color-danger);border-bottom-color:var(--color-danger)}.input-destination.input-error:focus{border-bottom-color:var(--color-danger-hover)}.input-destination.input-taxon-unlinked{color:var(--color-warning);border-bottom-color:var(--color-warning)}.create-taxon-group{gap:var(--space-sm);margin-top:calc(-1 * var(--space-sm));flex-direction:column;align-self:flex-start;display:flex}.create-taxon-group[hidden]{display:none}.btn-create-taxon{padding:2px var(--space-sm);font-size:var(--text-sm);text-align:left;color:var(--color-warning);background:var(--color-warning-light);border:1px solid var(--color-warning);border-radius:var(--radius-sm);cursor:pointer;align-self:flex-start;font-weight:600}.btn-create-taxon:hover{filter:brightness(.97)}.warning-block{margin-top:var(--space-md);margin-left:var(--space-lg);padding:var(--space-sm) var(--space-md);border-left:2px solid var(--color-warning);font-size:var(--text-sm);color:var(--color-warning)}.warning-block>div{display:block}.warning-block>div:not(:last-child){margin-bottom:4px}.error-text{color:var(--color-danger)}.warning-text{color:var(--color-warning)}.key-card.drag-drop-above:before,.key-card.drag-drop-below:after,.figure-card.drag-drop-above:before,.figure-card.drag-drop-below:after{content:"";background-color:var(--color-primary);z-index:10;pointer-events:none;border-radius:2px;height:4px;position:absolute;left:0;right:0}.key-card.drag-drop-above:before{top:-2px}.key-card.drag-drop-below:after{bottom:-2px}.figure-card.drag-drop-above:before{top:-2px}.figure-card.drag-drop-below:after{bottom:-2px}.figure-card-header{-webkit-user-select:none;user-select:none;margin-bottom:var(--space-xs);justify-content:space-between;align-items:center;display:flex}.figure-card-title{color:var(--color-primary);font-weight:700;font-size:var(--text-lg);margin:0;font-family:monospace}.figure-field-row{align-items:flex-start;gap:var(--space-md);display:flex}.taxon-card{border:none;border-bottom:1px solid var(--color-border-light);border-radius:var(--radius-sm);padding:var(--space-md);gap:var(--space-sm);cursor:grab;border-left:3px solid #0000;flex-direction:column;display:flex;position:relative}.taxon-card:last-of-type{border-bottom:none}.taxon-card:hover{background-color:var(--color-bg-muted)}.taxon-card.is-selected{border-left-color:var(--color-primary);background:var(--color-primary-light)}.taxon-card-header{-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.taxon-card-title{color:var(--color-primary);font-weight:700;font-size:var(--text-lg);margin:0;font-family:monospace}.taxon-field-row{flex-direction:column;gap:2px;display:flex}.taxon-field-row>label{font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;font-weight:500}.taxon-input,.taxon-textarea{font-family:sans-serif;font-size:var(--text-base);box-sizing:border-box;width:100%;padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text)}.taxon-input:focus,.taxon-textarea:focus{border-color:var(--color-primary);outline:none}.taxon-textarea{resize:vertical;line-height:1.4}.taxon-input[data-field=scientificName]{font-style:italic;font-weight:600}.taxon-card.drag-drop-above:before,.taxon-card.drag-drop-below:after{content:"";background:var(--color-primary);height:2px;position:absolute;left:0;right:0}.taxon-card.drag-drop-above:before{top:-2px}.taxon-card.drag-drop-below:after{bottom:-2px}.figure-field-row label{font-family:sans-serif;font-size:var(--text-base);color:var(--color-text);-webkit-user-select:none;user-select:none;cursor:pointer;flex-shrink:0;min-width:58px;padding-top:2px}.figure-card .figure-input-filename,.figure-card .figure-input-caption{flex:1}.figure-input-caption{resize:none;field-sizing:content;overflow:hidden}.card-rte.tsk-rte,.figure-card .figure-input-caption.tsk-rte{border:none;border-bottom:1px solid var(--color-border-light);min-height:24px;transition:var(--transition-base);background:0 0;border-radius:0;flex:1;padding:2px 0;font-weight:500}.card-rte.tsk-rte:focus,.figure-card .figure-input-caption.tsk-rte:focus{box-shadow:none;border-bottom-color:var(--color-primary)}.taxon-rte.tsk-rte{box-sizing:border-box;width:100%;min-height:calc(1.4em * 3 + var(--space-sm) * 2);padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);background:var(--color-bg);line-height:1.4}.taxon-rte.tsk-rte:focus{box-shadow:none;border-color:var(--color-primary)}.format-toolbar{z-index:1200;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex;position:fixed;box-shadow:0 4px 14px #0000002e}.format-toolbar button{border-radius:var(--radius-sm);min-width:28px;height:26px;color:var(--color-text);font-size:var(--text-sm);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.format-toolbar button:hover{background:var(--color-primary-light);color:var(--color-primary-hover)}.format-toolbar button.is-active{background:var(--color-primary);color:#fff;box-shadow:inset 0 1px 2px #00000059}.format-toolbar button.is-active:hover{background:var(--color-primary-hover);color:#fff}.format-toolbar sub,.format-toolbar sup{font-size:.72em;font-weight:700;position:relative}.format-toolbar sub{top:.35em}.format-toolbar sup{top:-.4em}.popover-header{font-size:var(--text-sm);color:var(--color-text-muted);border-bottom:1px solid var(--color-border-light);margin-bottom:4px;padding:4px 10px 6px;font-weight:600}.figure-preview-wrapper{background:var(--color-bg-muted);border:1px dashed var(--color-border);border-radius:var(--radius-md);width:100%;height:160px;margin-bottom:var(--space-md);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.figure-preview-img{object-fit:contain;cursor:zoom-in;background:#00000005;width:100%;height:100%}.figure-upload-overlay{border-radius:var(--radius-sm);background:#ffffffe6;padding:4px;position:absolute;bottom:8px;right:8px;box-shadow:0 2px 4px #0000000d}.image-lightbox-overlay{z-index:3000;background:color-mix(in srgb, var(--color-text) 80%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);flex-direction:column;display:flex;position:fixed;inset:0}.image-lightbox-toolbar{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-bg);border-bottom:1px solid var(--color-border-light);flex:none;display:flex}.image-lightbox-caption{font-size:var(--text-base);color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.image-lightbox-spacer{flex:auto}.image-lightbox-zoom{text-align:center;font-variant-numeric:tabular-nums;min-width:3.5em;font-size:var(--text-sm);color:var(--color-text-muted)}.image-lightbox-btn{background:var(--color-bg-muted);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-base);cursor:pointer;padding:4px 10px;line-height:1}.image-lightbox-btn:hover{background:var(--color-border-light)}.image-lightbox-close{font-weight:700}.image-lightbox-stage{flex:auto;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.image-lightbox-img{-webkit-user-select:none;user-select:none;transform-origin:50%;will-change:transform;max-width:100%;max-height:100%}.btn-trigger-upload{background:var(--color-primary);color:var(--color-bg);font-size:var(--text-sm);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-base);border:none;padding:4px 10px;font-weight:500}.btn-trigger-upload:hover{background:var(--color-primary-hover)}.print-grid{color:var(--color-text);-webkit-user-select:text;user-select:text;grid-template-columns:auto 1fr;align-content:start;align-items:start;gap:6px 10px;font-family:serif;font-size:15px;line-height:1.6;display:grid}.print-step-num{color:var(--color-text);font-weight:700}.print-step-block{display:contents}.print-dash{text-align:center;color:var(--color-text);font-weight:700}.print-grid[data-lead-format=lettered] .print-dash,.print-grid[data-lead-format=minimal] .print-dash{text-align:left}.print-spacer{grid-column:span 2;height:8px}.print-row{background-image:linear-gradient(to right, var(--color-text) 33%, transparent 33%);background-position:left 0 bottom .35em;background-repeat:repeat-x;background-size:6px 1px;flex:none;width:100%;margin-bottom:0;line-height:1.6;display:block;position:relative}.print-text{white-space:pre-wrap;background-color:var(--color-bg);padding-right:6px;display:inline}.print-dest{float:right;white-space:nowrap;background-color:var(--color-bg);line-height:inherit;padding-left:6px}.print-dest-strong{font-weight:700}.print-dest-taxon{font-style:italic;font-weight:700}.print-dest-taxon-unlinked{color:var(--color-warning);font-style:italic;font-weight:700}.toast-container{bottom:var(--space-2xl);right:var(--space-2xl);gap:var(--space-md);z-index:1000;flex-direction:column;display:flex;position:fixed}.toast{background:var(--color-text);color:var(--color-bg);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);font-size:var(--text-base);align-items:center;gap:var(--space-sm);pointer-events:none;min-width:280px;font-family:sans-serif;animation:.2s cubic-bezier(.16,1,.3,1) forwards toastSlideIn,.3s 2.7s forwards toastFadeOut;display:flex;box-shadow:0 4px 12px #00000026}.toast-success{border-left:4px solid var(--color-success)}.toast-error{border-left:4px solid var(--color-danger)}@keyframes toastSlideIn{0%{opacity:0;transform:translate(120%)}to{opacity:1;transform:translate(0)}}@keyframes toastFadeOut{to{opacity:0;transform:translateY(-10px)}}.dest-combobox{z-index:2500;max-width:min(360px,100vw - 24px);max-height:240px;padding:var(--space-xs);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:sans-serif;font-size:var(--text-base);color:var(--color-text);position:fixed;overflow-y:auto;box-shadow:0 4px 12px #00000026}.dest-option{align-items:baseline;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;display:flex}.dest-option:hover,.dest-option.is-active{background:var(--color-bg-muted)}.dest-option-primary{text-overflow:ellipsis;overflow:hidden}.dest-option-secondary{color:var(--color-text-muted);font-size:var(--text-sm);text-overflow:ellipsis;overflow:hidden}.popover{z-index:2500;max-width:min(460px,100vw - 24px);max-height:calc(100vh - 24px);padding:var(--space-sm);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:sans-serif;font-size:var(--text-base);color:var(--color-text);position:fixed;overflow-y:auto;box-shadow:0 4px 12px #00000026}.popover-path{padding-bottom:var(--space-sm);margin-bottom:var(--space-sm);border-bottom:1px solid var(--color-border-light);flex-direction:column;gap:2px;display:flex}.popover-path-row{gap:var(--space-sm);text-align:left;width:100%;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);color:var(--color-text);background:0 0;border:none;align-items:baseline;display:flex}button.popover-path-row:hover{background:var(--color-bg-muted)}.popover-path-row.is-target{cursor:default;color:var(--color-text-muted);font-style:italic}.popover-path-num{min-width:2.4em;color:var(--color-primary);flex:none;font-weight:700}.popover-path-text{overflow-wrap:anywhere;flex:1;min-width:0}.popover-note{color:var(--color-text-muted);font-size:var(--text-sm);padding:2px 0 var(--space-sm)}.popover-action{text-align:left;width:100%;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text);font-size:var(--text-base);background:0 0;border:none;display:block}.popover-action:hover{background:var(--color-bg-muted)}.popover-fig-img{object-fit:contain;border-radius:var(--radius-sm);max-width:300px;max-height:220px;display:block}.popover-fig-caption{margin-top:var(--space-xs);color:var(--color-text-muted);font-size:var(--text-sm)}.popover-fig-title{margin-bottom:var(--space-xs);font-weight:600}.modal-overlay{background:color-mix(in srgb, var(--color-text) 60%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-window{background:var(--color-bg);border-radius:var(--radius-lg);border:1px solid var(--color-border-light);flex-direction:column;width:100%;max-width:650px;display:flex;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.modal-header{padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.modal-header h3{font-size:var(--text-xl);color:var(--color-text);margin:0}.modal-close-x{font-size:var(--text-xl);cursor:pointer;color:var(--color-text-muted);background:0 0;border:none}.modal-close-x:hover{color:var(--color-danger)}.modal-body{padding:var(--space-2xl);max-height:450px;overflow-y:auto}.shortcuts-table{border-collapse:collapse;width:100%;font-size:var(--text-base)}.shortcuts-table th,.shortcuts-table td{padding:var(--space-md);text-align:left;border-bottom:1px solid var(--color-border-light)}.shortcuts-table th{background:var(--color-bg-muted);font-weight:600}.shortcuts-table code{background:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-sm);font-family:monospace;font-size:var(--text-base);padding:2px 6px}.settings-group h4{margin-top:0;margin-bottom:var(--space-md);font-size:var(--text-lg)}.setting-item{align-items:center;gap:var(--space-md);cursor:pointer;font-weight:500;display:flex}.setting-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary)}.settings-hint{margin:0 0 var(--space-lg);font-size:var(--text-base);color:var(--color-text-muted);line-height:1.5}.settings-options{gap:var(--space-md);flex-direction:column;display:flex}.settings-option{align-items:flex-start;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border:1px solid var(--color-border-light);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition-base);display:flex}.settings-option:hover{background:var(--color-bg-muted)}.settings-option input[type=radio]{width:16px;height:16px;accent-color:var(--color-primary);margin-top:3px}.settings-option:has(input:checked){border-color:var(--color-primary);background:var(--color-primary-light)}.settings-checkbox{align-items:flex-start;gap:var(--space-md);margin-top:var(--space-xl);font-weight:400}.settings-checkbox input[type=checkbox]{margin-top:3px}.settings-checkbox-hint{margin:0}.settings-option-main{gap:var(--space-sm);flex-direction:column;display:flex}.settings-option-title{color:var(--color-text);font-weight:600}.settings-option-sample{font-family:serif;font-size:var(--text-base);color:var(--color-text-muted);line-height:1.7}.settings-option-sample span{min-width:1.9em;color:var(--color-text);font-weight:700;display:inline-block}.hub-modal-window{max-width:520px}.hub-toolbar{margin-bottom:var(--space-lg);justify-content:space-between;align-items:center;display:flex}.hub-toolbar-label{font-size:var(--text-base);color:var(--color-text-muted)}.btn-hub-import{font-size:var(--text-sm);padding:var(--space-xs) var(--space-md)}#project-hub-list{gap:var(--space-sm);max-height:320px;padding-right:var(--space-xs);flex-direction:column;display:flex;overflow-y:auto}.hub-empty{text-align:center;color:var(--color-text-muted);padding:var(--space-2xl) var(--space-md);font-size:var(--text-base);border:1px dashed var(--color-border);border-radius:var(--radius-md)}.project-hub-item{padding:var(--space-md) var(--space-lg);border:1px solid var(--color-border-light);background:var(--color-bg);border-radius:var(--radius-md);transition:var(--transition-base);justify-content:space-between;align-items:center;display:flex}.hub-item-clickable-zone{gap:var(--space-xs);cursor:pointer;flex-direction:column;flex:1;display:flex}.hub-item-name{color:var(--color-text);font-weight:500;font-size:var(--text-base)}.project-hub-item.is-current .hub-item-name{font-weight:700}.hub-item-active-tag{margin-left:var(--space-xs);color:var(--color-primary);font-weight:400}.hub-item-date{font-size:var(--text-sm);color:var(--color-text-muted)}.btn-hub-delete{color:var(--color-text-muted);cursor:pointer;font-size:var(--text-xl);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);transition:var(--transition-base);background:0 0;border:none;line-height:1}.btn-hub-delete:hover{color:var(--color-danger);background:var(--color-danger-light)}.fullscreen-view{z-index:1500;background:var(--color-bg);box-shadow:0 -4px 24px color-mix(in srgb, var(--color-text) 18%, transparent);flex-direction:column;display:flex;position:fixed;inset:0}.fullscreen-view-header{padding:var(--space-lg) var(--space-2xl);border-bottom:1px solid var(--color-border-light);background:var(--color-bg-muted);flex:none;justify-content:space-between;align-items:center;display:flex}.fullscreen-view-header h3{color:var(--color-text);font-size:var(--text-lg);margin:0}.fullscreen-view-body{flex:auto;min-height:0;overflow:hidden}.fullscreen-view-footer{justify-content:space-between;align-items:center;gap:var(--space-lg);padding:var(--space-lg) var(--space-2xl);border-top:1px solid var(--color-border-light);background:var(--color-bg-muted);flex:none;display:flex}.import-options-bar{align-items:center;gap:var(--space-sm) var(--space-xl);padding:var(--space-md) var(--space-2xl);border-bottom:1px solid var(--color-border-light);background:var(--color-primary-light);font-size:var(--text-base);flex-wrap:wrap;flex:none;display:flex}.import-options-title{color:var(--color-text);margin-right:var(--space-xs);font-weight:600}.import-option{align-items:center;gap:var(--space-sm);color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.import-option input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}.import-option-num{gap:var(--space-sm)}.import-option-num input[type=number]{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:56px;font-size:var(--text-base);padding:3px 6px}.import-view-body{gap:0;display:flex}.import-input-pane,.import-preview-pane{min-width:0;padding:var(--space-lg) var(--space-2xl);flex-direction:column;flex:50%;display:flex}.import-input-pane{border-right:1px solid var(--color-border-light)}.import-pane-toolbar{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md);flex:none;display:flex}.import-pane-label{color:var(--color-text);font-weight:600;font-size:var(--text-base)}.import-toolbar-actions{gap:var(--space-sm);align-items:center;display:flex}.import-encoding-field{align-items:center;gap:var(--space-sm);font-size:var(--text-base);color:var(--color-text);-webkit-user-select:none;user-select:none;display:flex}.import-encoding-field select{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-size:var(--text-base);padding:4px 6px}.import-source-textarea{resize:none;width:100%;min-height:0;padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:monospace;font-size:var(--text-base);tab-size:4;color:var(--color-text);background:var(--color-bg);flex:auto;line-height:1.5}.import-source-textarea:focus{outline:2px solid var(--color-primary);outline-offset:-1px}.import-hint{margin:var(--space-md) 0 0;font-size:var(--text-sm);color:var(--color-text-muted);flex:none;line-height:1.5}.import-hint code{background:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-sm);padding:1px 5px;font-family:monospace}.import-status{font-size:var(--text-base);font-weight:600}.import-status-ok{color:var(--color-success)}.import-status-error{color:var(--color-danger)}.import-preview-content{border:1px solid var(--color-border-light);border-radius:var(--radius-md);background:var(--color-bg-muted);min-height:0;padding:var(--space-md);flex:auto;overflow-y:auto}.import-preview-empty{color:var(--color-text-muted);font-size:var(--text-base);text-align:center;padding:var(--space-2xl) var(--space-md)}.print-empty-notice{color:var(--color-text-muted);text-align:center;padding:var(--space-2xl) var(--space-md);font-style:italic}.import-preview-muted{color:var(--color-text-muted);font-style:italic}.import-messages{margin-bottom:var(--space-md);gap:var(--space-sm);flex-direction:column;display:flex}.import-msg{font-size:var(--text-base);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm)}.import-msg-error{background:var(--color-danger-light);color:var(--color-danger)}.import-msg-warning{background:var(--color-warning-light);color:var(--color-warning)}.import-preview-list{gap:var(--space-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.import-preview-step{gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--color-bg);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);display:flex}.import-preview-lead{min-width:2.5em;color:var(--color-primary);flex:none;font-family:monospace;font-weight:700}.import-preview-rows{gap:var(--space-xs);flex-direction:column;flex:auto;min-width:0;display:flex}.import-preview-row{gap:var(--space-md);font-size:var(--text-base);align-items:baseline;display:flex}.import-preview-text{min-width:0;color:var(--color-text);flex:auto}.import-preview-dest{color:var(--color-text-muted);white-space:nowrap;flex:none;font-weight:500}.import-diagnostics-summary{margin-bottom:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--color-warning-light);color:var(--color-warning);font-size:var(--text-base);font-weight:500}.import-preview-step.has-issues{border-color:var(--color-warning)}.import-preview-diagnostics.warning-block{margin:var(--space-xs) 0 0 0;font-size:var(--text-sm);border-left-width:2px}.import-title-field{align-items:center;gap:var(--space-sm);font-size:var(--text-base);color:var(--color-text);font-weight:500;display:flex}.import-title-field input{border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-base);width:240px;color:var(--color-text);background:var(--color-bg);padding:6px 10px}.import-footer-actions{gap:var(--space-md);display:flex}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}button,input,textarea,select{font-family:var(--font-ui)}button:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;box-shadow:var(--focus-ring)}input:focus-visible,textarea:focus-visible,select:focus-visible,[contenteditable=true]:focus-visible{box-shadow:none;outline:none}*{scrollbar-color:#aaa79e transparent;scrollbar-width:thin}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#aaa79e padding-box padding-box;border:3px solid #0000;border-radius:999px}::-webkit-scrollbar-track{background:0 0}.app-menu-bar{min-height:38px;margin:calc(-1 * var(--space-lg)) calc(-1 * var(--space-lg)) 0;padding:0 var(--space-lg);border-bottom-color:var(--color-border-light);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffefaf0;align-items:center;box-shadow:0 1px #20201e08}.menu-trigger{border-radius:var(--radius-sm);letter-spacing:.01em;min-height:32px;padding:6px 10px}.menu-trigger:hover,.menu-item:hover .menu-trigger,.menu-trigger[aria-expanded=true]{background:var(--color-bg-subtle)}.menu-trigger:focus-visible{box-shadow:inset 0 -2px 0 var(--color-accent);outline:none}.menu-dropdown,.dest-combobox,.popover,.format-toolbar{border-color:var(--color-border-light);border-radius:var(--radius-md);box-shadow:var(--shadow-float)}.menu-dropdown{padding:var(--space-xs)}.dropdown-action{min-height:32px;padding:6px var(--space-md);border-radius:var(--radius-sm)}.dropdown-action:hover,.dropdown-action:focus{background:var(--color-accent-soft);color:var(--color-text);box-shadow:inset 2px 0 0 var(--color-accent);outline:none}.dropdown-action:hover .menu-shortcut,.dropdown-action:focus .menu-shortcut{color:var(--color-accent-hover)}.dropdown-action.has-unsaved-changes{border-left-color:var(--color-warning);font-weight:650}.menu-title-container{padding-right:0}.menu-title-label{text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:700}.key-title-input{border-color:#0000;border-bottom-color:var(--color-border);background:0 0;border-radius:0;min-height:28px}.key-title-input:hover{background:var(--color-bg-muted)}.key-title-input:focus{background:var(--color-bg);border-color:var(--color-border);border-radius:var(--radius-sm)}.editor-column h2,.figure-column h2,.taxa-column h2,.print-column h2{letter-spacing:-.018em;background:var(--color-bg);border-bottom:1px solid var(--color-border-light);flex:none;margin:0;font-size:19px;font-weight:400}.panel-toggle{gap:var(--space-sm);min-height:50px;padding:var(--space-sm) var(--space-md) var(--space-sm) var(--space-lg);font-size:inherit;font-weight:inherit;border-radius:0}.panel-toggle:hover{color:var(--color-text);background:var(--color-bg-muted)}.panel-caret{width:24px;height:24px;color:var(--color-accent);background:var(--color-accent-soft);border:1px solid #cbd5ff;border-radius:50%;order:1;place-items:center;margin-left:0;font-size:10px;line-height:1;transition:transform .16s,background-color .16s,border-color .16s;display:inline-grid}.panel-title{text-overflow:ellipsis;white-space:nowrap;order:2;min-width:0;overflow:hidden}.panel-toggle:hover .panel-caret{color:#fff;background:var(--color-accent);border-color:var(--color-accent)}.is-collapsed .panel-header{background:var(--color-bg);box-shadow:none;border:0;border-radius:0;padding:0}.is-collapsed .panel-toggle{min-height:0;padding:var(--space-md) var(--space-xs)}.is-collapsed .panel-caret{flex:0 0 24px;margin-top:0;margin-left:0;transform:rotate(-90deg)}.btn{min-height:var(--control-height);padding:7px var(--space-md);border-radius:var(--radius-md);font-weight:600}.btn-primary,.btn-trigger-upload{background:var(--color-primary);color:#fffefa}.btn-secondary,.btn-outline,.image-lightbox-btn{background:var(--color-bg);border-color:var(--color-border);color:var(--color-text)}.btn-secondary:hover,.btn-outline:hover,.image-lightbox-btn:hover{background:var(--color-bg-subtle);border-color:#aaa79e}.btn-add-block{width:100%;min-height:42px;padding:8px var(--space-lg);background:var(--color-bg);color:var(--color-accent);border:0;border-top:1px solid var(--color-border-light);letter-spacing:.005em;border-radius:0;margin-top:0;font-weight:600}.btn-add-block:hover,.btn-trigger-upload:hover,.btn-primary:hover{background:var(--color-primary-hover)}.btn-add-block:hover{color:#fff;background:var(--color-accent)}.key-card,.figure-card,.taxon-card{border-radius:var(--radius-md);margin-bottom:var(--space-xs);border-left-width:3px}.key-card:hover,.figure-card:hover,.taxon-card:hover{background:var(--color-bg-muted)}.key-card.is-selected,.figure-card.is-selected,.taxon-card.is-selected{background:var(--color-accent-soft);border-left-color:var(--color-accent)}#editor-container,#figure-container,#taxa-container,#print-view-container{box-shadow:none;border:0;border-radius:0}#editor-container,#figure-container,#taxa-container{background:var(--color-bg)}#print-view-container{background:#fff}.key-card.is-link-out,.key-card.is-link-in{box-shadow:inset 4px 0 0 var(--color-success)}.key-card.is-link-out.is-link-in{box-shadow:inset 4px 0 0 var(--color-accent), inset -4px 0 0 var(--color-success)}.card-title,.figure-card-title,.taxon-card-title,.import-preview-lead{color:var(--color-text);font-family:var(--font-mono);font-weight:700}.drag-handle{color:var(--color-text-muted);text-align:center;min-width:22px}.badge{letter-spacing:.01em;border-radius:999px}.badge-linked{color:var(--color-text-muted);background:var(--color-bg-muted)}.badge-isolated{border:1px solid color-mix(in srgb, var(--color-danger) 35%, transparent)}.warning-block{color:#6f511b;background:var(--color-warning-light);border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left-width:3px}.input-destination,.figure-card .figure-input-filename,.figure-card .figure-input-caption,.card-rte.tsk-rte,.figure-card .figure-input-caption.tsk-rte{font-family:var(--font-ui);border-bottom-color:var(--color-border);font-weight:450}.input-destination:hover,.figure-card .figure-input-filename:hover,.figure-card .figure-input-caption:hover,.card-rte.tsk-rte:hover{border-bottom-color:#96938a}.input-destination:focus,.figure-card .figure-input-filename:focus,.figure-card .figure-input-caption:focus,.card-rte.tsk-rte:focus,.figure-card .figure-input-caption.tsk-rte:focus{border-bottom-color:var(--color-accent)}.taxon-field-row{gap:var(--space-xs)}.taxon-field-row>label,.figure-field-row label{color:var(--color-text-muted);font-size:var(--text-sm);font-weight:600}.taxon-input,.taxon-textarea,.taxon-rte.tsk-rte,.import-source-textarea,.import-title-field input,.import-encoding-field select,.import-option-num input[type=number]{border-color:var(--color-border);border-radius:var(--radius-md);background:#fffefa}.taxon-input:focus,.taxon-textarea:focus,.taxon-rte.tsk-rte:focus{border-color:var(--color-accent);box-shadow:none}.figure-preview-wrapper{background-color:var(--color-bg-muted);border-color:var(--color-border);background-image:linear-gradient(45deg,#20201e06 25%,#0000 25%),linear-gradient(-45deg,#20201e06 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#20201e06 75%),linear-gradient(-45deg,#0000 75%,#20201e06 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.figure-upload-overlay{background:#fffefaf0;box-shadow:0 2px 10px #20201e14}.print-grid{color:#24231f;font-family:var(--font-reading);font-size:15px;line-height:1.68}.print-text,.print-dest{background-color:#fffdf7}.fig-ref{color:var(--color-accent);text-underline-offset:2px;text-decoration-color:#8da4ff}.toast{font-family:var(--font-ui);color:#fffefa;box-shadow:var(--shadow-float);background:#292927}.toast-success:before{content:"Success";font-weight:700}.toast-error:before{content:"Error";font-weight:700}.modal-overlay{background:#20201e8c}.modal-window{border-color:var(--color-border);box-shadow:var(--shadow-float)}.modal-header,.fullscreen-view-header,.fullscreen-view-footer{background:var(--color-bg-muted)}.modal-header h3,.fullscreen-view-header h3{letter-spacing:-.012em;font-weight:680}.modal-close-x{width:var(--control-height);height:var(--control-height);border-radius:50%}.modal-close-x:hover{color:var(--color-text);background:var(--color-bg-subtle)}.settings-option,.project-hub-item,.import-preview-step,.import-preview-content{border-color:var(--color-border-light);border-radius:var(--radius-md)}.project-hub-item.is-current{border-color:var(--color-text);background:var(--color-primary-light)}.settings-option:has(input:checked){border-color:var(--color-text);background:var(--color-primary-light)}.project-hub-item.is-current:before{content:"Selected";clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.settings-option:has(input:checked):before{content:"Selected";clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.settings-option,.project-hub-item{position:relative}.shortcuts-table code,.import-hint code{background:var(--color-bg-subtle);color:var(--color-text);font-family:var(--font-mono)}.import-options-bar{background:var(--color-bg-muted)}.fullscreen-view{background:var(--color-bg)}@media (width<=900px){.app-shell{padding:var(--space-md);gap:var(--space-md)}.app-menu-bar{margin:calc(-1 * var(--space-md)) calc(-1 * var(--space-md)) 0;padding:0 var(--space-sm)}.menu-title-container{min-width:170px}.key-title-input{width:150px}.main-layout{gap:var(--space-md);justify-content:flex-start}.editor-column{min-width:320px}.figure-column{min-width:280px}.taxa-column{min-width:300px}.print-column{min-width:250px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.tsk-rte{white-space:pre-wrap;word-break:break-word;min-height:2.4em;padding:var(--space-sm,8px) var(--space-md,12px);border:1px solid var(--color-border,#c9c9c9);border-radius:var(--radius-md,8px);background:var(--color-bg,#fff);color:var(--color-text,#0b0b0b);font-size:var(--text-base,14px);transition:var(--transition-base);outline:none;line-height:1.5}.tsk-rte:focus{border-color:var(--color-accent,#2855ff);box-shadow:none}.tsk-rte-empty:before{content:attr(data-placeholder);color:var(--color-text-muted,#606060);pointer-events:none}.tsk-rte .tsk-chip{border-radius:var(--radius-sm,4px);background:var(--color-accent-soft,#edf1ff);color:var(--color-accent-hover,#1740df);white-space:nowrap;cursor:default;margin:0 1px;padding:0 6px;font-size:.9em;font-weight:600;display:inline-block}.tsk-rte .tsk-chip.tsk-chip-selected{background:var(--color-accent,#2855ff);color:#fff;box-shadow:0 0 0 1px var(--color-accent,#2855ff)}.tsk-rte .tsk-chip-broken{background:var(--color-danger-light,#f4e3df);color:var(--color-danger-hover,#7e2f29);text-underline-offset:2px;-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.tsk-rte .tsk-chip-broken.tsk-chip-selected{background:var(--color-danger,#df3f38);color:#fff;box-shadow:0 0 0 1px var(--color-danger,#df3f38)}.tsk-rte sub,.tsk-rte sup{font-size:.75em;line-height:0}
