/* PDF 加密／解密（兩頁共用） */
.pw-row { display: flex; gap: 8px; align-items: stretch; }
.pw-row input { flex: 1; min-width: 0; min-height: 44px; padding: 0 10px; border: 1px solid var(--line); border-radius: 8px; font-size: 1rem; box-sizing: border-box; background: #fff; }
.pw-row button { flex: none; min-height: 44px; padding: 0 14px; border: 1px solid var(--line); border-radius: 8px; background: #fff; font-size: .95rem; cursor: pointer; }
.pw-hint { font-size: .92rem; color: var(--muted); min-height: 1.4em; margin: 2px 0 0; }
.pw-hint.is-bad { color: #b3261e; font-weight: 600; }
.pw-file { padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: #fff; overflow-wrap: anywhere; }
.pw-warn { background: #fff8e6; border-left: 4px solid #d99a00; padding: 10px 14px; border-radius: 6px; font-size: 1rem; margin: 10px 0; }
.pw-busy { height: 8px; border-radius: 4px; background: var(--soft); overflow: hidden; margin: 6px 0; position: relative; }
.pw-busy div { position: absolute; top: 0; bottom: 0; width: 35%; background: var(--brand); border-radius: 4px; animation: pw-slide 1.1s ease-in-out infinite; }
@keyframes pw-slide { 0% { left: -35%; } 100% { left: 100%; } }
@media (prefers-reduced-motion: reduce) { .pw-busy div { animation: none; left: 0; width: 100%; opacity: .5; } }
.pw-form { margin: 0; }
