:root{--accent: #4a6fa5;--accent-rgb: 74, 111, 165;--translated-color: var(--accent);--on-accent: #ffffff;--bg: #faf9f6;--bg-rgb: 250, 249, 246;--surface: #ffffff;--neutral-rgb: 0, 0, 0;--text: #1c1c1c;--muted: #888;--tooltip-bg: #2c2c2c;--tooltip-text: #f5f5f0;--tooltip-text-muted: rgba(245, 245, 240, .65);--tooltip-btn-text: rgba(245, 245, 240, .9);--tooltip-btn-bg: rgba(255, 255, 255, .08);--star: #f5c518;--star-rgb: 245, 197, 24;--offline-bg: #222;--danger: #c0392b;--danger-rgb: 192, 57, 43;--success: #27ae60;--success-rgb: 39, 174, 96;--success-text: #1e8449;--warning-text: #b07d20;--warning-bg-rgb: 230, 162, 60;--info-text: #2060d0;--info-bg-rgb: 52, 120, 246;--cancelled-text: #999;--highlight: rgba(255, 220, 50, .35);--highlight-hover: rgba(255, 220, 50, .65);--highlight-active: rgba(255, 220, 50, .55);--overlay: rgba(0, 0, 0, .4);--nav-border: rgba(0, 0, 0, 1);--option-btn-border: rgba(var(--neutral-rgb), .15);--font: ui-monospace, "SF Mono", Menlo, Monaco, "Cascadia Code", "Source Code Pro", monospace;--ui-font: var(--font);--font-size-s: 16px;--font-size-m: 19px;--font-size-l: 22px;--font-size: var(--font-size-m);--line-height: 1.85;--max-width: 660px;--nav-height: 44px;--status-bar-height: 40px;--default-padding: 16px}@media (prefers-color-scheme: dark){:root{--accent: #4a6fa5;--accent-rgb: 74, 111, 165;--on-accent: var(--text);--bg: #1a1917;--bg-rgb: 26, 25, 23;--surface: #242220;--neutral-rgb: 255, 255, 255;--text: #e8e5dd;--muted: #7a7674;--overlay: rgba(0, 0, 0, .6);--nav-border: rgba(255, 255, 255, .08)}}*{box-sizing:border-box;margin:0;padding:0;scrollbar-width:none;-webkit-tap-highlight-color:transparent}button,a,[role=button]{touch-action:manipulation}*::-webkit-scrollbar{display:none}.tab-bar{scrollbar-width:none}.tab-bar::-webkit-scrollbar{display:none}html{-webkit-text-size-adjust:100%;background:var( --bg );height:100vh}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--font-size);line-height:var(--line-height);min-height:100vh}.progress-bar-track{position:fixed;top:0;left:0;right:0;height:3px;background:rgba(var(--neutral-rgb),.07);z-index:100}.progress-bar-fill{height:100%;background:var(--translated-color);transition:width .3s ease}.app-nav{z-index:90;background:var(--bg);border-bottom:.5px solid var(--nav-border)}.app-nav--sticky{position:fixed;top:env(safe-area-inset-top);left:0;right:0;z-index:90}.app-nav-inner{display:grid;grid-template-columns:auto 1fr auto;align-items:center;position:relative;height:var(--nav-height);padding:0 16px;max-width:var(--max-width);margin:0 auto;gap:16px}.app-nav-side{display:flex;align-items:center;gap:2px}.app-nav-side--right{justify-content:flex-end;margin-left:auto}.app-nav-title{line-height:var(--nav-height);text-align:left;font-family:var(--font);font-size:17px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;font-weight:600}.btn.nav-btn{border:none;background:transparent;font-size:17px}@media (hover: hover){.btn.nav-btn:hover:not(:disabled){background:transparent;opacity:.7}}.app-nav-side:not(.app-nav-side--right) .btn.nav-btn{padding-left:0}.app-nav-side--right .btn.nav-btn{padding-right:0}.app-nav-side:not(.app-nav-side--right) .btn.nav-btn-center,.app-nav-side--right .btn.nav-btn-center{padding-left:12px;padding-right:12px}.btn.nav-btn-plain{font-weight:700}.nav-logo-btn{pointer-events:auto;background:none;border:none;padding:4px;margin:0 -4px;cursor:pointer;display:inline-flex;align-items:center;height:100%;vertical-align:top;gap:7px;font:inherit;color:inherit;line-height:1;border-radius:6px;-webkit-tap-highlight-color:transparent;perspective:200px}.nav-logo-btn:active{background:rgba(var(--neutral-rgb),.06)}.logo-helix{position:relative;display:inline-block;transform-style:preserve-3d;transform:rotateY(90deg)}.logo-helix>span{position:absolute;top:50%;left:50%}.logo-helix-strand--red{background:#ef4444}.logo-helix-strand--blue{background:var(--translated-color)}.font-controls{display:flex;gap:2px;flex-shrink:0}.font-btn{background:none;border:1px solid transparent;border-radius:4px;cursor:pointer;color:var(--muted);font-family:var(--ui-font);padding:4px 7px;min-width:32px;min-height:32px;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}@media (hover: hover){.font-btn:hover{background:rgba(var(--neutral-rgb),.05);color:var(--text)}}.font-btn.active{background:rgba(var(--accent-rgb),.12);border-color:rgba(var(--accent-rgb),.3);color:var(--translated-color)}.font-btn-s{font-size:12px}.font-btn-m{font-size:15px}.font-btn-l{font-size:18px}.page-container{max-width:var(--max-width);margin:0 auto;padding:32px 24px 120px;position:relative;min-height:calc(100dvh - var(--nav-height));-webkit-user-select:text;user-select:text}.chapter-title{font-family:var(--ui-font);font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:28px;padding-bottom:16px;border-bottom:1px solid rgba(var(--neutral-rgb),.08)}.chapter-body p{margin-bottom:1.4em}.chapter-body p:last-child{margin-bottom:0}.translated-word{background:var(--highlight);border-radius:2px;padding:0 2px;font-style:italic;cursor:help;position:relative;display:inline;transition:background .15s}@media (hover: hover){.translated-word:hover{background:var(--highlight-hover)}}.has-admin-note .translated-word,.has-admin-note .translated-word:hover{background:transparent}.tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--tooltip-bg);color:var(--tooltip-text);font-family:var(--ui-font);font-size:13px;font-style:normal;line-height:1.4;padding:7px 11px;border-radius:6px;pointer-events:none;z-index:200;max-width:240px;display:flex;align-items:center;gap:2px;flex-wrap:wrap;justify-content:center}.tooltip:after{content:"";position:absolute;top:100%;left:var(--arrow-left, 50%);transform:translate(-50%);border:5px solid transparent;border-top-color:var(--tooltip-bg)}.tooltip-below:after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:var(--tooltip-bg)}.tooltip-translation{font-weight:500}.tooltip-note{color:var(--tooltip-text-muted);font-size:12px;margin-top:2px}.reader-viewport{position:fixed;top:calc(var(--nav-height) + env(safe-area-inset-top,0px));left:0;right:0;bottom:env(safe-area-inset-bottom,0px);overflow:hidden;touch-action:none}.reader-viewport .swiper,.reader-viewport .swiper-wrapper,.reader-viewport .swiper-slide{height:100%}.reader-viewport .swiper-slide{position:relative}.reader-columns{height:100%;column-width:100vw;column-gap:0;column-fill:auto;padding:28px 0;transition:transform .25s ease;will-change:transform}.reader-columns .chapter-title,.reader-columns .chapter-body{padding-left:24px;padding-right:24px}.reader-chapter-break{break-before:column}.reader-slide-page{position:absolute;top:0;right:0;bottom:0;left:0;padding:0 0 28px;overflow:hidden;box-sizing:border-box}.reader-slide-page .chapter-body{max-width:var(--max-width);margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;box-sizing:border-box}.reader-columns p,.reader-columns .chapter-body p{break-inside:avoid;orphans:3;widows:3}.reader-status-bar{position:fixed;bottom:0;left:0;right:0;height:var(--status-bar-height);background:rgba(var(--bg-rgb),.88);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-top:.5px solid rgba(var(--neutral-rgb),.12);z-index:80}.reader-status-bar-inner{max-width:var(--max-width);margin:0 auto;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 6px}.reader-status-location{font-family:var(--ui-font);font-size:12px;color:var(--muted);flex:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px}.reader-status-btn{background:none;border:none;cursor:pointer;color:var(--accent);font-size:22px;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;border-radius:6px;line-height:1;padding:0 10px;transition:background .15s;flex-shrink:0}@media (hover: hover){.reader-status-btn:hover:not(:disabled){background:rgba(var(--neutral-rgb),.04)}}.reader-status-btn:disabled{color:rgba(var(--neutral-rgb),.18);cursor:default}.reader-status-chapter-btn{background:none;border:none;cursor:pointer;transition:color .15s}.reader-status-chapter-btn:hover{color:var(--text)}.chapter-nav-panel{position:fixed;bottom:var(--status-bar-height);left:50%;transform:translate(-50%);width:min(340px,calc(100vw - 32px));max-height:50vh;overflow-y:auto;background:rgba(var(--bg-rgb),.96);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border:.5px solid rgba(var(--neutral-rgb),.12);border-radius:12px 12px 0 0;z-index:90;display:flex;flex-direction:column;padding:6px 0}.chapter-nav-item{background:none;border:none;cursor:pointer;font-family:var(--ui-font);font-size:14px;color:var(--text);text-align:left;padding:10px 18px;line-height:1.3;transition:background .12s}.chapter-nav-item:hover{background:rgba(var(--neutral-rgb),.05)}.chapter-nav-item--active{color:var(--accent);font-weight:600}.reader-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;gap:16px;color:var(--muted);font-family:var(--ui-font);font-size:15px}.reader-error{max-width:var(--max-width);margin:80px auto;padding:0 24px;text-align:center;font-family:var(--ui-font);color:var(--muted)}.home-nav-credits{font-family:var(--ui-font);font-size:13px;color:var(--muted)}.home{max-width:var(--max-width);margin:0 auto;background:var(--bg)}.home .swiper-slide{height:100%;overflow-y:scroll;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;scrollbar-width:none}.home .swiper-wrapper{will-change:transform;-webkit-backface-visibility:hidden}.home .swiper-slide::-webkit-scrollbar{display:none}.home-slide-content{max-width:var(--max-width);margin:0 auto;padding:0 16px calc(50px + env(safe-area-inset-bottom,0px));min-height:100%}.upload-section{margin-bottom:24px}.section-heading{font-family:var(--ui-font);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:14px}.drop-zone{border:2px dashed rgba(var(--neutral-rgb),.15);border-radius:10px;padding:36px 24px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;font-family:var(--ui-font);color:var(--muted);font-size:14px}.drop-zone.drag-over,.drop-zone:focus-within{border-color:var(--translated-color);background:rgba(var(--accent-rgb),.04);color:var(--text)}@media (hover: hover){.drop-zone:hover{border-color:var(--translated-color);background:rgba(var(--accent-rgb),.04);color:var(--text)}}.drop-zone-icon{font-size:32px;margin-bottom:10px;display:block}.drop-zone input[type=file]{display:none}.upload-form{margin-top:16px;display:flex;flex-direction:column;gap:12px}.form-row{display:flex;flex-direction:column;gap:4px}.form-label{font-family:var(--ui-font);font-size:12px;color:var(--muted)}.form-input,.form-select{background:var(--surface);border:1px solid rgba(var(--neutral-rgb),.15);border-radius:6px;padding:10px 12px;font-family:var(--ui-font);font-size:15px;color:var(--text);width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:border-color .15s}.form-input:focus,.form-select:focus{outline:none;border-color:var(--translated-color);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.1)}.form-row-inline{display:flex;gap:12px;align-items:flex-end}.form-row-inline .form-row{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--text);color:var(--bg);border:1px solid var(--text);border-radius:6px;padding:10px 20px;font-family:var(--ui-font);font-size:14px;font-weight:500;cursor:pointer;min-height:44px;transition:opacity .15s,background .15s;white-space:nowrap}@media (hover: hover){.btn:hover:not(:disabled){opacity:.85}}.btn:disabled{color:var(--muted);border-color:var(--muted);background:rgba(var(--neutral-rgb),.04);cursor:default}.btn-secondary{background:var(--bg);color:var(--text);border:1px solid rgba(var(--neutral-rgb),.2)}@media (hover: hover){.btn-secondary:hover:not(:disabled){background:rgba(var(--neutral-rgb),.04);opacity:1}}.btn-danger{background:transparent;color:var(--danger);border:1px solid rgba(var(--danger-rgb),.3)}@media (hover: hover){.btn-danger:hover:not(:disabled){background:rgba(var(--danger-rgb),.06);opacity:1}}.btn-sm{padding:6px 12px;font-size:12px;min-height:32px}.btn-secondary.active{background:rgba(var(--accent-rgb),1);border-color:rgba(var(--accent-rgb),.3);color:var(--on-accent)}@media (hover: hover){.btn-secondary.active:hover:not(:disabled){background:rgba(var(--accent-rgb),.2)}}.spinner{width:18px;height:18px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.spinner-lg{width:32px;height:32px;border-width:3px}.message{font-family:var(--ui-font);font-size:13px;padding:10px 14px;border-radius:6px;margin-top:10px}.message-error{background:rgba(var(--danger-rgb),.08);color:var(--danger);border:1px solid rgba(var(--danger-rgb),.2)}.message-success{background:rgba(var(--success-rgb),.08);color:var(--success);border:1px solid rgba(var(--success-rgb),.2)}.library-section{display:flex;flex-direction:column;gap:var(--default-padding)}.book-card{background:var(--surface);border:1px solid rgba(var(--neutral-rgb),.09);border-radius:10px;padding:20px;box-shadow:0 1px 4px rgba(var(--neutral-rgb),.04)}.book-title{font-family:var(--font);font-size:16px;font-weight:400;line-height:1.2;margin-bottom:4px}.book-meta{font-family:var(--ui-font);font-size:12px;color:var(--muted)}.jobs-list{display:flex;flex-direction:column;gap:8px}.job-card{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid rgba(var(--neutral-rgb),.08);border-radius:7px;background:var(--bg);transition:background .15s,border-color .15s;text-decoration:none;color:inherit}.job-card-clickable{cursor:pointer}@media (hover: hover){.job-card-clickable:hover{background:rgba(var(--accent-rgb),.05);border-color:rgba(var(--accent-rgb),.25)}}.job-card-info{flex:1;min-width:0}.job-card-title{font-family:var(--ui-font);font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-card-progress{font-family:var(--ui-font);font-size:12px;color:var(--muted);margin-top:2px}.job-progress-bar{height:3px;background:rgba(var(--neutral-rgb),.08);border-radius:2px;margin-top:6px;overflow:hidden}.job-progress-fill{height:100%;background:var(--translated-color);border-radius:2px;transition:width .5s ease}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:20px;font-family:var(--ui-font);font-size:11px;font-weight:500;line-height:1;min-height:22px;flex-shrink:0;white-space:nowrap}.badge-pending{background:rgba(var(--neutral-rgb),.06);color:var(--muted)}.badge-processing{background:rgba(var(--warning-bg-rgb),.12);color:var(--warning-text)}.badge-completed{background:rgba(var(--success-rgb),.1);color:var(--success-text)}.badge-offline{background:color-mix(in srgb,var(--translated-color) 12%,transparent);color:var(--translated-color)}.badge-failed{background:rgba(var(--danger-rgb),.1);color:var(--danger)}.badge-cancelled{background:rgba(var(--neutral-rgb),.05);color:var(--cancelled-text)}.badge-new{background:rgba(var(--info-bg-rgb),.12);color:var(--info-text)}.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge-processing .badge-dot{animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:80px 24px;color:var(--muted);font-family:var(--ui-font);font-size:14px}.empty-state{text-align:center;padding:32px 24px;font-family:var(--ui-font);font-size:14px;color:var(--muted)}.divider{height:1px;background:rgba(var(--neutral-rgb),.07);margin:20px 0}.editor-body{font-family:var(--font);font-size:var(--font-size);line-height:var(--line-height);color:var(--text);white-space:pre-wrap;word-wrap:break-word}.editor-word-translated{background:var(--highlight);border-radius:2px;padding:0 2px;font-style:italic;display:inline;transition:background .15s;position:relative}.editor-word-translated:hover{background:var(--highlight-active)}.editor-word-delete{background:none;border:none;cursor:pointer;color:var(--muted);font-size:14px;font-style:normal;line-height:1;padding:0 1px;margin-left:1px;vertical-align:middle;border-radius:2px;transition:color .15s,background .15s}.editor-word-delete:hover{color:var(--danger);background:rgba(var(--danger-rgb),.08)}.editor-word-plain{display:inline;cursor:pointer;border-radius:2px;transition:background .1s}.editor-word-plain:hover{background:rgba(var(--accent-rgb),.1)}.editor-inline-input{border:1px solid rgba(var(--accent-rgb),.4);border-radius:3px;padding:1px 4px;font-family:var(--font);font-size:.95em;font-style:italic;background:var(--surface);color:var(--text);outline:none;min-width:40px}.editor-inline-input:focus{border-color:var(--translated-color);box-shadow:0 0 0 2px rgba(var(--accent-rgb),.12)}.editor-save-bar{position:fixed;bottom:var(--status-bar-height);left:0;right:0;padding:10px 24px;background:var(--bg);border-top:1px solid rgba(var(--neutral-rgb),.07);display:flex;align-items:center;gap:12px;z-index:75;max-width:100%}.pill-btn{display:inline-flex;align-items:center;justify-content:center;padding:3px 8px;border-radius:20px;border:1px solid rgba(var(--neutral-rgb),.12);background:transparent;cursor:pointer;font-family:var(--ui-font);font-size:11px;font-weight:500;line-height:1;min-height:22px;color:var(--muted);white-space:nowrap;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}@media (hover: hover){.pill-btn:hover{background:rgba(var(--neutral-rgb),.06);color:var(--text);border-color:rgba(var(--neutral-rgb),.2)}}.option-group{display:flex;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.option-group::-webkit-scrollbar{display:none}.option-btn{flex:0 0 auto;padding:8px 10px;border-radius:6px;border:1px solid var(--option-btn-border);background:var(--bg);cursor:pointer;font-family:var(--ui-font);text-align:center;transition:border-color .15s,background .15s;display:flex;flex-direction:column;align-items:center;gap:2px}@media (hover: hover){.option-btn:hover:not(.option-btn--active){border-color:rgba(var(--neutral-rgb),.25);background:rgba(var(--neutral-rgb),.02)}}.option-btn--active{border-color:var(--accent);background:rgba(var(--accent-rgb),.08)}.option-btn__label{font-size:13px;font-weight:500;color:var(--text)}.option-btn__desc{font-size:11px;color:var(--muted)}.editor-viewport{position:fixed;top:calc(var(--nav-height) + 3px);left:0;right:0;bottom:var(--status-bar-height);overflow:hidden;touch-action:pan-y}.editor-chapters-track{display:flex;height:100%;transition:transform .25s ease;will-change:transform}.editor-chapter-slide{flex:0 0 100vw;width:100vw;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:28px 24px;box-sizing:border-box}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;z-index:500;padding:calc(env(safe-area-inset-top,0px) + 24px) 24px calc(env(safe-area-inset-bottom,0px) + 24px)}.modal-box{background:var(--bg);border-radius:12px;width:100%;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 48px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid rgba(var(--neutral-rgb),.08)}.modal-title{font-family:var(--ui-font);font-size:15px;font-weight:500;color:var(--text)}.modal-close{background:none;border:none;cursor:pointer;font-size:20px;color:var(--muted);line-height:1;padding:4px 6px;border-radius:4px}@media (hover: hover){.modal-close:hover{background:rgba(var(--neutral-rgb),.06);color:var(--text)}}.modal-body{padding:20px;overflow-y:auto;-webkit-overflow-scrolling:touch;flex:1}.modal-section{display:flex;flex-direction:column;gap:12px}.modal-divider{height:1px;background:rgba(var(--neutral-rgb),.07);margin:8px 0}.modal-action-row{display:flex;flex-direction:column;gap:8px}.landing-fade{opacity:0;transform:translateY(12px);transition:opacity .6s ease,transform .6s ease}.landing-fade.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){.landing-fade{opacity:1;transform:none}}@media (max-width: 480px){.page-container{padding:24px 16px 120px}.nav-btn-label{display:none}.nav-btn{padding:8px;min-width:44px;justify-content:center}.app-nav{padding:0}}
