.rotating-dots{border-radius:50%;justify-content:space-evenly;align-items:center;width:27px;height:27px;animation:.9s linear infinite spin;display:flex}.rotating-dots i{background:var(--color-accent);border-radius:50%;width:5px;height:5px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.icon-button{border:1px solid var(--color-border-strong);width:44px;height:44px;color:var(--color-accent-ink);background:var(--color-surface);border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.photo-language-pair,.voice-recorder-copy strong{color:var(--color-muted);font-size:.9rem;font-weight:650;line-height:1.35}.primary-action,.secondary-action,.history-nav button,.danger-actions button,.settings-panel button{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);border-radius:8px}.primary-action,.secondary-action{justify-content:center;align-items:center;gap:8px;min-height:58px;font-weight:650;display:flex;position:relative;overflow:hidden}.primary-action{color:var(--color-on-accent);background:var(--color-accent);border-color:var(--color-accent)}.primary-action.is-disabled,.primary-action:disabled,.secondary-action.is-disabled,.secondary-action:disabled{cursor:not-allowed;opacity:.5}.history-nav{grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.history-actions{justify-content:flex-end;align-items:center;gap:6px;min-width:0;display:flex}.history-actions .history-nav{grid-template-columns:auto auto auto;width:auto;margin:0}.history-nav>span{color:var(--color-note);text-align:center;min-width:54px;font-size:.9rem}.history-nav button{justify-content:center;align-items:center;width:32px;height:32px;min-height:32px;padding:0;font-size:1rem;line-height:1;display:flex}.history-nav button:disabled{opacity:.42}.history-delete-button{border:1px solid var(--color-border);width:32px;height:32px;min-height:32px;color:var(--color-text);background:var(--color-surface);border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.history-delete-button:disabled{opacity:.42}.horizontal-swipe-surface{touch-action:pan-y}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.rotating-dots,.spin{animation:none}}.app-shell{min-height:100dvh;padding:max(14px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) max(14px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));background:linear-gradient(180deg, var(--color-page) 0%, var(--color-page-end) 100%);grid-template-rows:auto minmax(0,1fr);gap:12px;display:grid}.app-shell.has-app-status{grid-template-rows:auto auto minmax(0,1fr)}.topbar,.app-status-banner,.photo-mode-content,.voice-mode-content,.voice-panel,.capture-strip,.history-nav,.status-band,.error-band{width:min(760px,100%);margin:0 auto}.app-status-banner{color:var(--color-status-text);background:var(--color-status-background);border-radius:8px;padding:10px 12px;font-size:.92rem;line-height:1.4}.app-status-banner.is-warning{color:var(--color-error-text);background:var(--color-error-background)}.mode-switch{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:10px;grid-template-columns:repeat(4,minmax(44px,1fr));justify-self:center;gap:4px;width:min(300px,100%);min-width:0;margin:0;padding:4px;display:grid}.mode-switch button{min-width:44px;min-height:44px;color:var(--color-muted);white-space:nowrap;background:0 0;border:0;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 2px;font-size:.75rem;font-weight:700;line-height:1.15;display:flex}.mode-switch button[aria-selected=true]{color:var(--color-on-accent);background:var(--color-choice)}.mode-switch button:focus-visible{outline:2px solid var(--color-choice-focus);outline-offset:2px}.mode-switch button:disabled{opacity:.55}.photo-mode-content{flex-direction:column;gap:12px;min-height:0;display:flex}.topbar{grid-template-columns:max-content minmax(0,1fr) max-content;align-items:center;gap:clamp(4px,2vw,14px);min-height:52px;display:grid}.toolbar-actions{gap:6px;display:inline-flex}.topbar h1{white-space:nowrap;margin:0;font-size:1.35rem;line-height:1.1}.toolbar-actions .icon-button:disabled{opacity:.55}@media (forced-colors:active){.mode-switch button[aria-selected=true]{border:3px solid highlight}}.status-band,.error-band{border-radius:8px;padding:10px 12px}.status-band{color:var(--color-status-text);background:var(--color-status-background);gap:8px;display:grid}.error-band{color:var(--color-error-text);background:var(--color-error-background);grid-template-columns:auto 1fr auto;align-items:center;gap:10px;display:grid}.error-band button{color:var(--color-error-text);background:0 0;border:0}@media (width<=540px){.topbar{grid-template-columns:minmax(0,1fr) auto;gap:6px}.topbar h1{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.mode-switch{grid-template-columns:repeat(4,minmax(44px,1fr));gap:0;width:100%;padding:3px}.mode-switch button{font-size:.6875rem}.mode-switch button svg{width:18px;height:18px}.toolbar-actions{gap:4px}}@media (width<=360px){.app-shell{padding-inline:max(8px, env(safe-area-inset-left)) max(8px, env(safe-area-inset-right))}}.operation-progress{align-items:center;gap:10px;min-width:0;display:flex}.operation-progress-label{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}.operation-progress-bar{flex:48px;width:auto;min-width:48px}.operation-cancel-button{border:1px solid var(--color-border);width:44px;min-height:44px;color:var(--color-error-text);background:var(--color-surface);border-radius:7px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.operation-cancel-button:focus-visible{outline:3px solid var(--color-accent-ink);outline-offset:2px}.status-band.has-operation-progress{padding:6px 6px 6px 12px}@media (prefers-reduced-motion:reduce){.operation-progress-bar:indeterminate{appearance:none;background:var(--color-border);border:0;border-radius:4px;height:8px}.operation-progress-bar:indeterminate::-webkit-progress-bar{background:0 0}.operation-progress-bar:indeterminate::-moz-progress-bar{background:0 0}}@media (forced-colors:active){.operation-cancel-button{color:buttontext;border-color:buttontext}.operation-cancel-button:focus-visible{outline-color:highlight}}.message-dialog-overlay{z-index:40;background:var(--color-overlay);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.message-dialog{overscroll-behavior:contain;border:1px solid var(--color-border-strong);width:min(420px,100%);max-height:calc(100dvh - 40px);color:var(--color-text);background:var(--color-surface);border-radius:14px;padding:22px;overflow:auto;box-shadow:0 20px 58px #00000038}.message-dialog h2{color:var(--color-heading);margin:0;font-size:1.2rem}.message-dialog p{color:var(--color-note);margin:10px 0 20px;line-height:1.45}.message-dialog button{border:1px solid var(--color-accent);width:100%;min-height:44px;color:var(--color-on-accent);background:var(--color-accent);border-radius:8px;font-weight:750}.camera-dialog-overlay{z-index:30;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));background:var(--color-overlay);place-items:center;display:grid;position:fixed;inset:0}.camera-dialog{overscroll-behavior:contain;border:1px solid var(--color-border-strong);width:min(760px,100%);max-height:calc(100dvh - 32px);color:var(--color-text);background:var(--color-surface);border-radius:14px;gap:14px;padding:clamp(14px,3vw,22px);display:grid;overflow:auto;box-shadow:0 20px 58px #00000042}.camera-dialog h2{color:var(--color-heading);margin:0;font-size:1.2rem}.camera-dialog-live,.camera-dialog-review{gap:12px;min-height:0;display:grid}.camera-dialog-video,.camera-dialog-photo{aspect-ratio:4/3;object-fit:contain;background:#07110f;border-radius:10px;width:100%;max-height:min(62dvh,620px);display:block}.camera-dialog-video{transform:none}.camera-dialog-status,.camera-dialog-error{margin:0;line-height:1.45}.camera-dialog-status{color:var(--color-note);text-align:center}.camera-dialog-error{color:var(--color-error-text);background:var(--color-error-background);border-radius:8px;padding:12px}.camera-dialog-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.camera-dialog-actions.is-review{grid-template-columns:repeat(3,minmax(0,1fr))}.camera-dialog-actions.is-starting{grid-template-columns:1fr}.camera-dialog-actions button{border:1px solid var(--color-border);min-height:46px;color:var(--color-text);background:var(--color-surface);border-radius:8px;padding:8px 14px;font-weight:700}.camera-dialog-actions .camera-dialog-shutter,.camera-dialog-actions .camera-dialog-use-photo{color:var(--color-on-accent);border-color:var(--color-accent);background:var(--color-accent)}.camera-dialog-actions button:disabled{opacity:.55}.settings-overlay{z-index:20;background:var(--color-overlay);align-items:end;display:grid;position:fixed;inset:0}.settings-panel{background:var(--color-page);border:1px solid var(--color-border-strong);border-radius:14px 14px 0 0;flex-direction:column;width:min(760px,100%);max-height:min(88dvh,760px);margin:0 auto;display:flex;overflow:hidden}.settings-panel-scroll{overscroll-behavior:contain;scrollbar-gutter:stable;min-height:0;padding:16px max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));overflow:auto}.settings-panel header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.settings-panel h2{margin:0;font-size:1.2rem}@media (width>=768px){.settings-overlay{align-items:center;padding:12px 24px}.settings-panel{border-radius:14px;max-height:calc(100dvh - 24px)}}@media (width<=480px){.camera-dialog-actions.is-review{grid-template-columns:1fr}}.api-key-control{gap:9px;display:grid}.api-key-action-row{grid-template-columns:minmax(0,1fr) 34px 46px;align-items:center;gap:10px;display:grid}.api-key-remove-button{justify-content:center;align-items:center;width:46px;height:46px;min-height:46px;padding:0;display:inline-flex}.api-key-remove-button:disabled{opacity:.5}.api-key-missing-note{color:var(--color-error-text);background:var(--color-error-background);border-radius:8px;margin:0;padding:10px 12px;line-height:1.4}.api-key-paste-button{border:1px solid var(--color-accent);min-height:46px;color:var(--color-on-accent);background:var(--color-accent);border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:750;display:inline-flex}.api-key-paste-button:disabled{opacity:.62}.api-key-status{border-radius:50%;place-items:center;width:34px;height:34px;display:grid}.api-key-status-verified{color:var(--color-success);background:var(--color-success-background)}.api-key-storage-note{color:var(--color-note);margin:3px 0 0;font-size:.82rem;line-height:1.4}.api-key-link{width:fit-content;max-width:100%;color:var(--color-accent-ink);overflow-wrap:anywhere;text-underline-offset:3px;font-size:.9rem;font-weight:700}.api-key-providers{gap:12px;margin-top:12px;display:grid}.api-key-provider{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;min-width:0;padding:12px}.api-key-provider h4{color:var(--color-heading);margin:0 0 10px;font-size:.95rem}.ai-provider-selector{border:0;min-width:0;margin:16px 0 0;padding:0}.ai-provider-selector legend{color:var(--color-label);margin-bottom:8px;font-weight:700}.ai-provider-options{gap:8px;display:grid}.settings-panel .ai-provider-option{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:9px;align-content:start;min-width:0;margin:0;padding:10px}.settings-panel .ai-provider-option.is-selected{border-color:var(--color-accent);background:var(--color-status-background)}.ai-provider-option-heading{align-items:center;gap:8px;display:flex}.settings-panel .ai-provider-option input{width:18px;min-height:18px;margin:0;padding:0}.ai-provider-option:has(input:disabled){cursor:default}.ai-provider-option ul{color:var(--color-note);margin:7px 0 0 26px;padding:0;font-size:.78rem;font-weight:400;line-height:1.35}.model-name{color:var(--color-model-name);overflow-wrap:anywhere;background:0 0;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.95em}.model-name--gemini{color:var(--color-model-gemini)}.model-name--openai{color:var(--color-model-openai)}@media (width>=768px){.api-key-providers{grid-template-columns:repeat(2,minmax(0,1fr))}.ai-provider-options{grid-template-columns:repeat(3,minmax(0,1fr))}}.settings-panel label{color:var(--color-label);gap:6px;margin-bottom:12px;font-weight:650;display:grid}.settings-panel input,.settings-panel select,.settings-panel textarea{border:1px solid var(--color-border);background:var(--color-surface);width:100%;color:var(--color-text);border-radius:8px;padding:8px 10px}.settings-panel input,.settings-panel select{min-height:42px}.danger-actions button{justify-content:center;align-items:center;gap:6px;min-height:42px;padding:0 12px;display:inline-flex}.settings-section{border-top:1px solid var(--color-border-subtle);margin:0;padding:16px 0}.settings-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.common-settings-grid{grid-template-columns:1fr}.settings-section-title{color:var(--color-heading);margin:0 0 10px;font-size:1rem}.settings-grid.language-settings{grid-template-columns:minmax(0,1fr) 44px;align-items:end}.settings-panel .language-setting-field{min-width:0;margin:0}.settings-panel .language-swap-button{width:44px;height:44px;min-height:44px;color:var(--color-accent-ink);justify-content:center;justify-self:end;align-items:center;padding:0;display:inline-flex}.toggle-row{grid-template-columns:none;align-items:center;gap:10px!important;display:flex!important}.toggle-row input{width:22px;min-height:22px}.range-setting{gap:8px!important}.range-setting-heading{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.range-setting-value{color:var(--color-text-strong);font-variant-numeric:tabular-nums}.settings-panel input.settings-range{background:0 0;border:0;border-radius:0;width:100%;min-height:28px;padding:0}.range-setting-scale{color:var(--color-note);font-variant-numeric:tabular-nums;grid-template-columns:repeat(4,minmax(0,1fr));font-size:.78rem;display:grid}.range-setting-scale span:nth-child(2),.range-setting-scale span:nth-child(3){text-align:center}.range-setting-scale span:last-child{text-align:right}.ai-voice-switch{border:0;min-width:0;margin:0 0 12px;padding:0}.ai-voice-switch legend{color:var(--color-label);margin-bottom:6px;font-weight:650}.ai-voice-options{grid-template-columns:1fr 1fr;gap:8px;display:grid}.settings-panel .ai-voice-option{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:8px;align-items:center;gap:8px;min-height:42px;margin:0;padding:8px 10px;display:flex}.settings-panel .ai-voice-option.is-selected{border-color:var(--color-accent);background:var(--color-status-background)}.settings-panel .ai-voice-option input{width:18px;min-height:18px;margin:0;padding:0}.settings-note{color:var(--color-note);margin:-2px 0 14px;font-size:.9rem}.danger-actions{gap:8px;display:grid}.diagnostics{gap:10px;margin-top:12px;display:grid}.diagnostics>button,.diagnostic-actions button{min-height:42px;padding:0 12px}.diagnostics textarea{resize:vertical;min-height:220px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.75rem;line-height:1.4}.diagnostics .settings-note,.diagnostic-notice{margin:0}.diagnostic-notice{color:var(--color-status-text);font-size:.9rem}.diagnostic-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}@media (width>=768px){.settings-grid:not(.common-settings-grid){grid-template-columns:repeat(3,minmax(0,1fr))}.settings-grid.language-settings{grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr) 44px minmax(0,1fr)}.danger-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=480px){.settings-grid{grid-template-columns:1fr}}.cost-history-panel{display:flex}.cost-history-panel .settings-panel-scroll{align-content:start;gap:14px;display:grid}.cost-history-panel .settings-panel-scroll>header{margin-bottom:0}.cost-history-header-actions{align-items:center;gap:10px;min-width:0;display:flex}.cost-history-grand-total{color:var(--color-note);white-space:nowrap;justify-items:end;gap:1px;font-size:.72rem;line-height:1.1;display:grid}.cost-history-grand-total strong{color:var(--color-text-strong);font-variant-numeric:tabular-nums;font-size:.95rem}.cost-history-missing,.cost-history-empty{color:var(--color-note);margin:0;line-height:1.45}.cost-history-missing{overflow-wrap:anywhere;font-size:.78rem;font-weight:400;display:block}.cost-history-entry-missing{margin-top:6px}.cost-rate-notice{color:var(--color-note);background:var(--color-status-background);border-radius:8px;margin:0;padding:9px 11px;font-size:.86rem;line-height:1.4}.cost-rate-notice.is-warning{color:var(--color-error-text);background:var(--color-error-background)}.cost-rate-notice a{color:var(--color-accent-ink);text-underline-offset:2px;font-weight:700}.cost-history-empty{text-align:center;place-items:center;min-height:160px;display:grid}.cost-history-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.cost-history-entry{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;padding:12px}.cost-history-entry h3{color:var(--color-heading);margin:0 0 9px;font-size:1rem}.cost-history-entry dl{gap:6px;margin:0;display:grid}.cost-history-entry dl>div{grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:12px;display:grid}.cost-history-entry dt{overflow-wrap:anywhere;min-width:0;color:var(--color-note)}.cost-history-entry dd{max-width:12rem;color:var(--color-text);font-variant-numeric:tabular-nums;margin:0}.cost-history-entry .cost-history-total{border-top:1px solid var(--color-border-subtle);margin-top:3px;padding-top:7px;font-weight:800}.cost-history-entry .cost-history-total dt,.cost-history-entry .cost-history-total dd{color:var(--color-text-strong)}.capture-strip{--compact-control-size:58px;gap:10px;display:grid}.thumbnail{width:var(--compact-control-size);height:var(--compact-control-size);border:1px solid var(--color-border-thumbnail);background:var(--color-surface);color:var(--color-muted-soft);border-radius:8px;justify-content:center;align-items:center;display:flex;overflow:hidden}.thumbnail img{object-fit:cover;image-rendering:auto;width:100%;height:100%;display:block}.capture-control-card{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:12px;flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;padding:14px;display:flex}.capture-actions{flex:none;align-items:center;gap:8px;display:flex}.photo-language-pair{white-space:nowrap;flex:none;margin:0}.capture-icon-action{width:var(--compact-control-size);height:var(--compact-control-size);min-height:var(--compact-control-size);flex:0 0 var(--compact-control-size);padding:0}.capture-file-input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.photo-recognition-control{align-items:center;gap:8px;min-width:0;margin-left:auto;display:flex}.photo-recognition-label{color:var(--color-muted);font-size:.8rem}.photo-recognition-choice{min-width:var(--compact-control-size);height:var(--compact-control-size);border:1px solid var(--color-border);min-height:44px;color:var(--color-text);background:var(--color-surface);white-space:nowrap;border-radius:8px;flex:none;justify-content:center;align-items:center;padding:0 6px;font-size:.8rem;font-weight:650;line-height:1.1;display:inline-flex}.photo-recognition-choice[aria-checked=true]{border-color:var(--color-accent);color:var(--color-on-accent);background:var(--color-accent)}.photo-recognition-choice:focus-visible{outline:2px solid var(--color-choice-focus);outline-offset:2px}.photo-recognition-choice:disabled{opacity:.5}@media (forced-colors:active){.photo-recognition-choice[aria-checked=true]{border:3px solid highlight}}.capture-history-nav{width:100%;min-width:0;margin:0}.capture-history-nav button{min-width:0}@media (width<=540px){.capture-strip{--compact-control-size:44px}.capture-actions{gap:4px}.photo-language-pair{font-size:.75rem}.capture-control-card{padding:10px}.photo-recognition-control{gap:6px}}@media (width<=360px){.capture-control-card{gap:4px;padding:8px}.capture-actions{gap:4px}}.photo-mode-content .results-panel{flex:auto}.results-panel{border-block:1px solid var(--color-border-subtle);width:min(760px,100%);min-height:0;margin:0 auto;overflow:auto}.photo-mode-content.has-text-result .results-panel{flex:none;overflow:visible}.word-list{margin:0;padding:8px 0;list-style:none}.word-list li{border-bottom:1px solid var(--color-border-row);grid-template-columns:minmax(0,max-content) auto minmax(0,1fr);align-items:baseline;gap:8px;padding:8px 2px;display:grid}.source-word{color:var(--color-text-strong);font-weight:700}.dash{color:var(--color-muted-dash)}.target-word{overflow-wrap:anywhere;min-width:0}.photo-menu-results{padding:8px 0 14px}.photo-menu-list{margin:0;padding:0;list-style:none}.photo-menu-item,.photo-menu-section-heading{grid-template-columns:minmax(0,1fr) max-content;align-items:start;gap:12px;min-width:0;display:grid}.photo-menu-item{border-bottom:1px solid var(--color-border-row);padding:9px 2px}.photo-menu-item-copy,.photo-menu-section-copy{gap:2px;min-width:0;display:grid}.photo-menu-item-source,.photo-menu-item-target,.photo-menu-item-details,.photo-menu-section-source,.photo-menu-section-target{overflow-wrap:anywhere;min-width:0}.photo-menu-item-source{color:var(--color-text-strong);font-size:1rem;font-weight:750;line-height:1.3}.photo-menu-item-target{color:var(--color-text);font-size:.96rem;line-height:1.35}.photo-menu-item-details{color:var(--color-muted);margin-top:1px;font-size:.82rem;line-height:1.35}.photo-menu-price{white-space:pre;color:var(--color-text-strong);font-variant-numeric:tabular-nums;font-weight:750;line-height:1.3}.photo-menu-section-heading{border-bottom:2px solid var(--color-border-strong);color:var(--color-text-strong);margin:16px 2px 5px;padding-bottom:6px}.photo-menu-section-heading:first-child{margin-top:2px}.photo-menu-section-heading.level-1 .photo-menu-section-source{font-size:1.2rem;font-weight:800;line-height:1.2}.photo-menu-section-heading.level-1 .photo-menu-section-target{font-size:1rem;font-weight:700;line-height:1.25}.photo-menu-section-heading.level-2{border-bottom-width:1px;margin-top:11px}.photo-menu-section-heading.level-2 .photo-menu-section-source{font-size:1.08rem;font-weight:750;line-height:1.25}.photo-menu-section-heading.level-2 .photo-menu-section-target{font-size:.94rem;font-weight:650;line-height:1.3}.empty-state{text-align:center;min-height:260px;color:var(--color-note);align-content:center;justify-items:center;display:grid}.empty-state h2{color:var(--color-heading);margin:0 0 6px;font-size:1.1rem}.empty-state p{margin:0}.photo-text-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.photo-text-rows{gap:5px;margin-top:10px;display:grid}.photo-text-row{align-items:stretch}.photo-text-value{min-width:0;color:var(--color-text);overflow-wrap:anywhere;white-space:pre-wrap;padding:6px 12px;font-size:clamp(1rem,2.3vw,1.2rem);line-height:1.45}.photo-text-paragraph-code{display:none}@media (width<=480px){.word-list li{grid-template-columns:auto auto 1fr}.photo-text-rows{gap:0}.photo-text-row{grid-template-columns:1fr;gap:3px}.photo-text-row:not(:last-child){border-bottom:1px solid var(--color-border-row)}.photo-text-value{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px;display:grid}.photo-text-paragraph-code{min-width:32px;min-height:28px;color:var(--color-accent-ink);background:var(--color-status-background);border-radius:6px;justify-content:center;align-items:center;padding:0 5px;font-size:.78rem;font-weight:800;display:inline-flex}}.voice-mode-content{flex-direction:column;gap:12px;min-height:0;display:flex}.voice-mode-content .voice-panel{flex:auto}.voice-panel{min-height:0;padding-bottom:max(4px, env(safe-area-inset-bottom));align-content:start;gap:12px;display:grid;overflow:auto}.voice-recorder{--compact-control-size:58px;border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:12px;grid-template-columns:auto 1fr;align-items:center;gap:14px;padding:14px;display:grid}.microphone-button{width:var(--compact-control-size);height:var(--compact-control-size);border:1px solid var(--color-accent);color:var(--color-on-accent);background:var(--color-accent);border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.microphone-button.is-recording{background:#c43c35;border-color:#c43c35}.microphone-button:disabled{opacity:.62}.voice-recorder-copy{min-width:0}.voice-recorder-status{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.voice-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.voice-fields-two{grid-template-columns:repeat(2,minmax(0,1fr))}.voice-field{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;grid-template-rows:auto minmax(130px,1fr);min-width:0;display:grid;overflow:hidden}.voice-field header{border-bottom:1px solid var(--color-border-subtle);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;min-height:46px;padding:7px 8px;display:grid}.voice-language-code{min-width:32px;min-height:28px;color:var(--color-accent-ink);background:var(--color-status-background);border-radius:6px;justify-content:center;align-items:center;padding:0 5px;font-size:.78rem;font-weight:800;display:inline-flex}.voice-field header button{border:1px solid var(--color-border);width:34px;height:34px;color:var(--color-accent-ink);background:var(--color-surface);border-radius:7px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.voice-field header button:disabled{opacity:.45}.voice-cached-play-icon{color:var(--color-success)}.voice-field-actions{justify-self:end;align-items:center;gap:6px;display:inline-flex}.voice-field textarea{resize:vertical;width:100%;min-height:130px;color:var(--color-text);background:0 0;border:0;border-radius:0;padding:12px;font-size:clamp(1rem,2.3vw,1.2rem);line-height:1.45}.voice-field textarea:focus{outline:2px solid var(--color-accent);outline-offset:-2px}.voice-field textarea:disabled{opacity:.66}@media (width>=601px){.voice-panel{grid-template-rows:auto auto minmax(0,1fr);align-content:stretch}.voice-fields,.voice-field{min-height:0}}@media (width<=600px){.voice-mode-content .voice-fields{grid-template-columns:1fr}}@media (width<=540px){.voice-recorder{padding:10px}}@media (width<=480px){.voice-fields{grid-template-columns:1fr}.voice-field{grid-template-rows:auto minmax(112px,auto)}.voice-field textarea{resize:none;min-height:112px}}@media (width<=360px){.voice-recorder{--compact-control-size:50px;gap:10px;padding:8px}.voice-recorder-copy strong{font-size:.8rem}}.live-voice-field{grid-template-rows:auto auto minmax(130px,1fr) auto}.live-voice-field header{grid-template-columns:minmax(0,1fr) auto}.live-voice-notice{color:var(--color-muted);margin:8px 12px 0;font-size:.875rem}.live-voice-translate{border:1px solid var(--color-accent);min-height:44px;color:var(--color-on-accent);background:var(--color-accent);border-radius:8px;justify-content:center;align-items:center;gap:8px;margin:0 12px 12px;padding:8px 12px;display:inline-flex}.live-voice-translate:disabled{opacity:.62}.photo-mode-content>.scroll-reveal-panel,.voice-capture-panel{flex:none;width:100%;padding-block:4px 8px}.capture-strip{--compact-control-size:44px;display:block}.capture-control-card{background:0 0;border:0;border-radius:0;flex-wrap:wrap;gap:8px;padding:0;display:flex}.capture-actions{flex:none;gap:4px}.photo-mode-content.has-floating-camera{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}.floating-action{--compact-control-size:64px;right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:15;position:fixed}.floating-camera-action,.floating-voice-controls .microphone-button{border-radius:16px;box-shadow:0 3px 10px #0003}.voice-panel.has-floating-recorder{padding-bottom:calc(var(--floating-voice-height,64px) + 32px + env(safe-area-inset-bottom,0px))}.floating-voice-controls{max-width:calc(100vw - 32px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));flex-direction:column;align-items:flex-end;gap:8px;display:flex}.floating-voice-controls .microphone-button{flex-direction:column;gap:3px;padding:4px 2px}.recording-language-codes{white-space:nowrap;font-size:10px;font-weight:700;line-height:1.1}.floating-voice-controls .voice-recorder-copy{border:1px solid var(--color-border-subtle);background:var(--color-surface);border-radius:10px;order:-1;width:max-content;max-width:min(272px,100%);padding:6px 8px;box-shadow:0 3px 10px #0003}.floating-voice-controls .voice-recorder-copy:empty{display:none}.floating-voice-controls .voice-recorder-copy.has-operation-progress{width:272px}.floating-voice-controls .voice-recorder-status strong{overflow-wrap:anywhere}.microphone-button:focus-visible,.camera-capture-action:focus-visible{outline:3px solid var(--color-accent-ink);outline-offset:3px}.camera-capture-action:has(input:focus-visible){outline:3px solid var(--color-accent-ink);outline-offset:3px}.photo-recognition-control{flex:none;gap:0;margin-left:0}.photo-recognition-choice{flex-direction:column;gap:2px;width:44px;padding-inline:2px;font-size:11px;line-height:1.1}.capture-languages{flex:none;min-width:0;margin-left:auto}.photo-mode-content .results-panel{scroll-margin-top:env(safe-area-inset-top,0px);border:0;flex:none;overflow:visible}.photo-result-header{border-top:1px solid var(--color-border-subtle);align-items:center;gap:8px;min-height:52px;padding-top:8px;display:flex}.photo-result-header .thumbnail{flex:0 0 30px;width:30px;height:36px}.photo-result-header .photo-language-pair{flex:1;font-size:.75rem}.result-view-toggle{margin-left:auto;font-size:1.3rem}.result-view-toggle[aria-pressed=true]{color:var(--color-accent-ink);border-color:var(--color-accent);background:var(--color-status-background)}.photo-text-fields{padding:0}.photo-text-rows{gap:0;margin-top:0}.photo-text-row{grid-template-columns:1fr;gap:0}.photo-text-value{padding:10px 3px;display:block}.photo-text-row:not(:last-child){border-bottom:0}.shows-both-languages .photo-text-row:not(:last-child){border-bottom:1px solid var(--color-border-row)}.shows-both-languages .photo-text-value{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px;display:grid}.photo-text-paragraph-code{min-width:32px;min-height:28px;color:var(--color-accent-ink);background:var(--color-status-background);border-radius:6px;justify-content:center;align-items:center;padding:0 5px;font-size:.78rem;font-weight:800;display:inline-flex}.photo-text-source{color:var(--color-muted)}.photo-menu-results:not(.shows-both-languages) .photo-menu-item-target{color:var(--color-text-strong);font-weight:700}.photo-menu-results:not(.shows-both-languages) .photo-menu-section-target{color:var(--color-heading);font-size:1.1rem;font-weight:750}.result-footer{padding-block:12px max(4px, env(safe-area-inset-bottom));border-top:1px solid var(--color-border-subtle);margin-top:16px}.result-footer .history-actions{gap:6px;width:100%}.result-footer .history-nav{gap:6px;margin-right:auto}.result-footer .history-nav>span{font-variant-numeric:tabular-nums;min-width:38px;font-size:.75rem}.result-footer button{min-height:44px}.result-footer .history-nav button,.result-footer .history-delete-button{width:44px;height:44px;min-height:44px}.voice-panel{flex-direction:column;display:flex;overflow:visible}.voice-capture-panel{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.voice-capture-panel .voice-recorder{--compact-control-size:44px;background:0 0;border:0;border-radius:0;flex:180px;gap:8px;padding:0}.voice-recorder-copy strong{font-size:.8rem}.voice-fields{scroll-margin-top:env(safe-area-inset-top,0px)}.voice-result-footer{flex-wrap:wrap;gap:8px;display:flex}.voice-result-footer>.history-actions{flex:180px}.result-copy-actions{flex:none;gap:6px;display:flex}.result-copy-actions button{border:1px solid var(--color-border);min-width:52px;color:var(--color-accent-ink);background:var(--color-surface);border-radius:8px;justify-content:center;align-items:center;gap:4px;padding:0 6px;font-size:.75rem;font-weight:700;display:inline-flex}.result-copy-actions button:disabled{opacity:.45}@media (width>=601px){.shows-both-languages .photo-text-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}}@media (width<=540px){.app-shell,.photo-mode-content,.voice-mode-content{gap:6px}}.result-footer>.status-band,.result-footer>.error-band{flex-basis:100%;margin-bottom:8px}.app-icon{vertical-align:middle;flex-shrink:0;display:inline-block}.app-icon-secondary{fill:var(--color-icon-secondary)}.mode-switch button[aria-selected=true] .app-icon,.primary-action .app-icon,.microphone-button .app-icon{--color-icon-secondary:#d7ebe2}@media (forced-colors:active){.app-icon-secondary{fill:currentColor}}.scroll-reveal-panel{top:env(safe-area-inset-top,0px);z-index:10;background:var(--color-page);align-self:start;width:100%;min-width:0;transition:transform .16s;position:sticky;transform:translateY(0)}.scroll-reveal-panel[data-visible=false]{transform:translateY(calc(-100% - env(safe-area-inset-top,0px) - 2px));pointer-events:none}.scroll-reveal-panel[data-visible=true][data-docked=true]{box-shadow:0 5px 8px -6px var(--color-muted)}@media (prefers-reduced-motion:reduce){.scroll-reveal-panel{transition:none}}.quick-language-controls{flex:none;justify-content:flex-end;gap:4px;margin-left:auto;display:flex}.quick-language-button{border:1px solid var(--color-border-subtle);width:44px;min-width:44px;height:44px;min-height:44px;color:var(--color-muted);background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:0;font-size:.8rem;font-weight:700;display:inline-flex}.quick-language-button:disabled{opacity:.5}.quick-language-button:focus-visible,.quick-language-dialog button:focus-visible{outline:2px solid var(--color-choice-focus);outline-offset:2px}.quick-language-overlay{z-index:25;background:var(--color-overlay);place-items:end center;display:grid;position:fixed;inset:0}.quick-language-dialog{width:min(420px,100%);min-height:0;max-height:min(640px,100dvh - 20px);padding:12px max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));border:1px solid var(--color-border);color:var(--color-text);background:var(--color-surface);border-radius:14px 14px 0 0;flex-direction:column;display:flex}.quick-language-dialog header{justify-content:space-between;align-items:center;gap:8px;display:flex}.quick-language-dialog h2{margin:0;font-size:1.1rem}.quick-language-dialog p{color:var(--color-muted);margin:6px 0 12px;font-size:.9rem}.quick-language-close{border:1px solid var(--color-border);width:44px;min-width:44px;height:44px;color:var(--color-text);background:var(--color-surface);border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.quick-language-options{overscroll-behavior:contain;min-height:0;display:grid;overflow-y:auto}.quick-language-options button{text-align:start;min-width:0;min-height:44px;color:var(--color-text);background:0 0;border:0;border-radius:8px;grid-template-columns:28px minmax(0,1fr) 20px;align-items:center;gap:8px;padding:8px;display:grid}.quick-language-options button[aria-pressed=true]{color:#d7e7f1;background:#243f52}@media (width>=601px){.quick-language-overlay{place-items:center}.quick-language-dialog{border-radius:14px}}*{box-sizing:border-box}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--color-text);background:var(--color-page);font-synthesis:none;text-rendering:optimizelegibility;--color-page:#f8fbfa;--color-page-end:#edf5f3;--color-text:#1b2523;--color-text-strong:#173f3a;--color-heading:#284c47;--color-muted:#58706b;--color-muted-soft:#78918b;--color-muted-dash:#83958f;--color-label:#36514c;--color-note:#667b75;--color-surface:#fff;--color-border:#cbdad6;--color-border-strong:#cddbd8;--color-border-thumbnail:#d7e2df;--color-border-subtle:#dce7e4;--color-border-row:#e2ebe8;--color-accent:#246b62;--color-accent-ink:#1e4e49;--color-on-accent:#fff;--color-icon-secondary:#528b78;--color-choice:#a54f00;--color-choice-focus:#7a3900;--color-model-name:#6f42c1;--color-model-gemini:#315f98;--color-model-openai:#765800;--color-status-background:#e2f0ed;--color-status-text:#244b47;--color-success:#1d7a55;--color-success-background:#e1f3ea;--color-error-background:#ffe9e2;--color-error-text:#502020;--color-overlay:#13232057;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-page:#101615;--color-page-end:#0b100f;--color-text:#e6eeec;--color-text-strong:#c5f0e6;--color-heading:#cde8e2;--color-muted:#9cafaa;--color-muted-soft:#8da29d;--color-muted-dash:#71847f;--color-label:#bdd2cd;--color-note:#9aada8;--color-surface:#18211f;--color-border:#354640;--color-border-strong:#40524d;--color-border-thumbnail:#354640;--color-border-subtle:#2c3936;--color-border-row:#263431;--color-accent:#2f7f74;--color-accent-ink:#a9ddd4;--color-on-accent:#fff;--color-icon-secondary:#94bba6;--color-choice:#b85d00;--color-choice-focus:#ffc184;--color-model-name:#c4a7ff;--color-model-gemini:#8db8ff;--color-model-openai:#dcae4f;--color-status-background:#17302c;--color-status-text:#b9e2da;--color-success:#79d9ac;--color-success-background:#173326;--color-error-background:#3a211f;--color-error-text:#ffc5bd;--color-overlay:#0000009e}}html,body,#root{min-height:100%;margin:0}body{background:var(--color-page);min-width:min(320px,100%)}button,input,select,textarea{font:inherit;accent-color:var(--color-accent)}button{cursor:pointer}button:disabled{cursor:default}
