| | body { |
| | overscroll-behavior-x: none; |
| | } |
| |
|
| | .main { |
| | display: flex; |
| | flex-direction: column; |
| | height: 100%; |
| | width: 100%; |
| | background: var(--bg100, #f5f5f5); |
| | color: var(--text000, #1a1a1a); |
| | overflow: hidden; |
| | border-radius: 0.75rem; |
| | border: 1px solid var(--bg200, rgba(0, 0, 0, 0.08)); |
| | } |
| |
|
| | |
| | .loading { |
| | display: flex; |
| | flex-direction: column; |
| | align-items: center; |
| | justify-content: center; |
| | flex: 1; |
| | gap: 0.75rem; |
| | padding: 2rem; |
| | } |
| |
|
| | .spinner { |
| | width: 24px; |
| | height: 24px; |
| | border: 2px solid var(--bg200, #e0e0e0); |
| | border-top-color: var(--text100, #888); |
| | border-radius: 50%; |
| | animation: spin 0.8s linear infinite; |
| | } |
| |
|
| | @keyframes spin { |
| | to { |
| | transform: rotate(360deg); |
| | } |
| | } |
| |
|
| | #loading-text { |
| | font-size: 0.8rem; |
| | color: var(--text100, #888); |
| | } |
| |
|
| | |
| | .progress-container { |
| | width: 100%; |
| | max-width: 200px; |
| | height: 3px; |
| | background: var(--bg200, #e0e0e0); |
| | border-radius: 2px; |
| | overflow: hidden; |
| | } |
| |
|
| | .progress-bar { |
| | height: 100%; |
| | background: var(--text100, #888); |
| | width: 0%; |
| | transition: width 0.15s ease-out; |
| | } |
| |
|
| | .progress-text { |
| | font-size: 0.7rem; |
| | color: var(--text200, #aaa); |
| | } |
| |
|
| | |
| | .error { |
| | display: flex; |
| | flex-direction: column; |
| | align-items: center; |
| | justify-content: center; |
| | height: 100%; |
| | gap: 1rem; |
| | padding: 2rem; |
| | text-align: center; |
| | } |
| |
|
| | .error-icon { |
| | font-size: 3rem; |
| | } |
| |
|
| | #error-message { |
| | color: var(--text200, #999); |
| | max-width: 400px; |
| | } |
| |
|
| | |
| | .viewer { |
| | display: flex; |
| | flex-direction: column; |
| | flex: 1; |
| | overflow: visible; |
| | } |
| |
|
| | |
| | .toolbar { |
| | display: flex; |
| | align-items: center; |
| | justify-content: space-between; |
| | padding: 0.5rem 1rem; |
| | background: var(--bg000, #ffffff); |
| | border-bottom: 1px solid var(--bg200, #e0e0e0); |
| | flex-shrink: 0; |
| | gap: 0.5rem; |
| | height: 48px; |
| | box-sizing: border-box; |
| | } |
| |
|
| | .toolbar-left { |
| | flex: 1; |
| | min-width: 0; |
| | overflow: hidden; |
| | } |
| |
|
| | .pdf-title { |
| | font-weight: 500; |
| | white-space: nowrap; |
| | overflow: hidden; |
| | text-overflow: ellipsis; |
| | font-size: 0.9rem; |
| | display: block; |
| | max-width: 100%; |
| | } |
| |
|
| | .toolbar-center { |
| | display: flex; |
| | align-items: center; |
| | gap: 0.5rem; |
| | flex-shrink: 0; |
| | } |
| |
|
| | .toolbar-right { |
| | display: flex; |
| | align-items: center; |
| | gap: 0.25rem; |
| | flex-shrink: 0; |
| | } |
| |
|
| | |
| | .page-nav { |
| | display: flex; |
| | align-items: center; |
| | gap: 0.25rem; |
| | } |
| |
|
| | .page-input { |
| | width: 50px; |
| | padding: 0.25rem 0.5rem; |
| | border: 1px solid var(--bg200, #e0e0e0); |
| | border-radius: 4px; |
| | font-size: 0.85rem; |
| | text-align: center; |
| | background: var(--bg000, #ffffff); |
| | color: var(--text000, #1a1a1a); |
| | } |
| |
|
| | .page-input:focus { |
| | outline: none; |
| | border-color: var(--text100, #666); |
| | } |
| |
|
| | .page-input::-webkit-outer-spin-button, |
| | .page-input::-webkit-inner-spin-button { |
| | -webkit-appearance: none; |
| | margin: 0; |
| | } |
| | .page-input[type="number"] { |
| | -moz-appearance: textfield; |
| | } |
| |
|
| | .total-pages { |
| | font-size: 0.85rem; |
| | color: var(--text100, #666); |
| | white-space: nowrap; |
| | } |
| |
|
| | .nav-btn, |
| | .zoom-btn, |
| | .fullscreen-btn { |
| | display: flex; |
| | align-items: center; |
| | justify-content: center; |
| | width: 32px; |
| | height: 32px; |
| | border: 1px solid var(--bg200, #e0e0e0); |
| | border-radius: 4px; |
| | background: var(--bg000, #ffffff); |
| | color: var(--text000, #1a1a1a); |
| | cursor: pointer; |
| | font-size: 1rem; |
| | transition: all 0.15s ease; |
| | } |
| |
|
| | .nav-btn:hover:not(:disabled), |
| | .zoom-btn:hover:not(:disabled), |
| | .fullscreen-btn:hover { |
| | background: var(--bg100, #f5f5f5); |
| | border-color: var(--bg300, #ccc); |
| | } |
| |
|
| | .nav-btn:disabled, |
| | .zoom-btn:disabled { |
| | opacity: 0.4; |
| | cursor: not-allowed; |
| | } |
| |
|
| | .zoom-level { |
| | font-size: 0.8rem; |
| | color: var(--text100, #666); |
| | min-width: 50px; |
| | text-align: center; |
| | } |
| |
|
| | |
| | .canvas-container { |
| | flex: 1; |
| | overflow: visible; |
| | display: flex; |
| | justify-content: center; |
| | align-items: flex-start; |
| | padding: 1rem; |
| | background: var(--bg200, #e0e0e0); |
| | } |
| |
|
| | .page-wrapper { |
| | position: relative; |
| | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); |
| | background: white; |
| | } |
| |
|
| | #pdf-canvas { |
| | display: block; |
| | } |
| |
|
| | |
| | .text-layer { |
| | position: absolute; |
| | left: 0; |
| | top: 0; |
| | right: 0; |
| | bottom: 0; |
| | overflow: hidden; |
| | opacity: 0.2; |
| | line-height: 1; |
| | text-size-adjust: none; |
| | forced-color-adjust: none; |
| | transform-origin: 0 0; |
| | z-index: 2; |
| | } |
| |
|
| | .text-layer span, |
| | .text-layer br { |
| | color: transparent; |
| | position: absolute; |
| | white-space: pre; |
| | cursor: text; |
| | transform-origin: 0% 0%; |
| | } |
| |
|
| | .text-layer ::selection { |
| | background: rgba(0, 0, 255, 0.3); |
| | } |
| |
|
| | .text-layer > span { |
| | pointer-events: all; |
| | } |
| |
|
| | |
| | .main.fullscreen { |
| | position: fixed; |
| | top: 0; |
| | left: 0; |
| | right: 0; |
| | bottom: 0; |
| | z-index: 1000; |
| | overflow: hidden; |
| | border-radius: 0; |
| | border: none; |
| | } |
| |
|
| | .main.fullscreen .viewer { |
| | min-height: 0; |
| | } |
| |
|
| | .main.fullscreen .canvas-container { |
| | min-height: 0; |
| | overflow: auto; |
| | } |
| |
|