:root{font-family:SF Mono,Menlo,Consolas,Liberation Mono,ui-monospace,monospace;color:var(--ink);background:var(--beige);line-height:1.45;--beige: #f5f0e8;--beige-deep: #ebe4d8;--white: #ffffff;--clay: #8f7d68;--rule: #e0d6c8;--ink: #2a2622;--muted: #6e655a;--signal: #2f6b5e;--signal-ink: #ffffff;--alert: #9a3f2e;--alert-wash: #f8ebe6;--sheet-shadow: 0 1px 3px rgba(42, 38, 34, .06), 0 8px 20px rgba(42, 38, 34, .06);--page-gutter: 1.25rem}body{margin:0;min-height:100vh;background:var(--beige);color:var(--ink)}.app{min-height:100vh;display:flex;flex-direction:column;box-sizing:border-box}.app__status{display:flex;flex-wrap:wrap;align-items:center;gap:.85rem 1.1rem;padding:.9rem var(--page-gutter) .75rem;border-bottom:1px solid var(--rule);background:var(--beige)}.app__logo-pad{flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:.2rem;background:var(--white);border-radius:10px;box-shadow:0 1px 2px #2a26220d}.app__logo{display:block;height:2.75rem;width:2.75rem;object-fit:contain;object-position:center}.app__branding{display:flex;flex-direction:column;gap:.15rem;min-width:0;flex:1}.app__brand{margin:0;font-size:1.25rem;font-weight:700;letter-spacing:.06em;text-transform:lowercase;color:var(--ink);line-height:1.15}.app__tagline{margin:0;color:var(--muted);font-size:.9rem;min-height:1.35em}.app__tagline-lead{color:var(--clay)}.app__tagline-typed{color:var(--ink)}.app__tagline-caret{display:inline-block;width:.55ch;height:1.05em;margin-left:1px;vertical-align:text-bottom;background:var(--signal);animation:tagline-blink 1s steps(1) infinite}@keyframes tagline-blink{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.app__tagline-caret{animation:none}}.tool-switcher{display:flex;flex-wrap:wrap;gap:.15rem .35rem;padding:.55rem var(--page-gutter);border-bottom:1px solid var(--rule);align-items:baseline;background:var(--beige)}.tool-switcher__btn{cursor:pointer;padding:.35rem .55rem;border:none;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--muted);font:inherit;font-size:.85rem;letter-spacing:.04em;text-transform:lowercase;transition:color .12s ease,border-color .12s ease}.tool-switcher__btn:before{content:"| ";color:var(--clay)}.tool-switcher__btn:hover:not(:disabled){color:var(--ink)}.tool-switcher__btn.is-active{color:var(--signal);border-bottom-color:var(--signal);background:transparent}.tool-switcher__btn.is-active:before{color:var(--signal)}.tool-switcher__btn:disabled{cursor:not-allowed;opacity:.4;text-decoration:line-through}.tool-switcher__lock{font-size:.75rem;opacity:.85}.app-shell{flex:1;display:flex;flex-direction:column;min-height:0}.app-shell__field{flex:1;overflow:auto;padding:1.15rem var(--page-gutter) 1.25rem;min-height:200px}.app-shell__dock{flex-shrink:0;display:flex;flex-direction:column;border-top:1px solid var(--rule);background:var(--beige-deep);padding:.85rem var(--page-gutter) 1rem}.pdf-upload{margin-bottom:1.15rem;max-width:40rem}.pdf-upload__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pdf-upload__zone{display:flex;align-items:center;gap:.9rem;padding:1.35rem 1.25rem;border:1px solid var(--rule);border-radius:14px;background:var(--white);color:var(--ink);cursor:pointer;box-shadow:var(--sheet-shadow);transition:border-color .12s ease,box-shadow .12s ease}.pdf-upload__zone:hover{border-color:var(--clay)}.pdf-upload__input:focus-visible+.pdf-upload__zone{outline:2px solid var(--signal);outline-offset:3px}.pdf-upload.is-dragging .pdf-upload__zone{border-color:var(--signal);box-shadow:0 0 0 3px #2f6b5e26}.pdf-upload__icon{flex-shrink:0;color:var(--signal);font-size:1.15rem;font-weight:700;letter-spacing:.02em;line-height:1}.pdf-upload__copy{display:flex;flex-direction:column;gap:.15rem;min-width:0}.pdf-upload__title{font-weight:600;letter-spacing:.02em}.pdf-upload__hint{color:var(--muted);font-size:.85rem}.pdf-upload__selected{display:flex;align-items:center;gap:.75rem;margin-top:.65rem;padding:.55rem .75rem;border:1px solid var(--rule);border-radius:10px;background:var(--white)}.pdf-upload__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem}.pdf-upload__clear{cursor:pointer;flex-shrink:0;padding:.25rem .55rem;border:1px solid var(--rule);border-radius:6px;background:var(--beige);color:var(--ink);font:inherit;font-size:.8rem}.pdf-upload__clear:hover{border-color:var(--signal);color:var(--signal)}.error{color:var(--alert);background:var(--alert-wash);border:1px solid #e8cfc6;border-radius:8px;padding:.55rem .75rem;margin:0 0 1rem;max-width:40rem}.page-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem .85rem}.page-card{background:var(--white);border:1px solid var(--rule);border-radius:10px;padding:.5rem;display:flex;flex-direction:column;gap:.45rem;box-shadow:var(--sheet-shadow)}.page-card.is-selected{border-color:var(--signal);box-shadow:0 0 0 2px #2f6b5e40}.page-card.is-dragging{opacity:.55;cursor:grabbing}.page-card.is-drop-target{border-color:var(--signal);box-shadow:0 0 0 2px #2f6b5e59}.page-card[draggable=true]{cursor:grab}.page-meta__hint{color:var(--clay);font-size:.75rem}.page-card__select{display:flex;flex-direction:column;gap:.45rem;margin:0;padding:0;border:none;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.thumb{width:100%;height:auto;background:var(--beige-deep);display:block;border-radius:4px}.page-meta{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;color:var(--muted)}.page-meta button{cursor:pointer;padding:.3rem .45rem;border:1px solid var(--rule);border-radius:6px;background:var(--beige);color:var(--ink);font:inherit;text-align:left;width:fit-content}.page-meta button:hover{border-color:var(--signal);color:var(--signal)}.rotate-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem 1.15rem;width:100%}.rotate-controls__title{margin:0;font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:var(--clay)}.rotate-controls__meta{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .85rem;color:var(--muted);font-size:.85rem}.rotate-controls__file{color:var(--ink);word-break:break-all;font-weight:600}.rotate-controls__btn{cursor:pointer;padding:.4rem .7rem;border:1px solid var(--rule);border-radius:8px;background:var(--white);color:var(--ink);font:inherit;text-align:left}.rotate-controls__btn:hover:not(:disabled){border-color:var(--signal);color:var(--signal)}.rotate-controls__btn--primary{background:var(--signal);border-color:var(--signal);color:var(--signal-ink);padding:.5rem .95rem;margin-left:auto;letter-spacing:.03em}.rotate-controls__btn--primary:hover:not(:disabled){color:var(--signal-ink);filter:brightness(1.08)}.rotate-controls__btn:disabled{opacity:.45;cursor:not-allowed}.compress-levels{display:flex;flex-wrap:wrap;gap:.35rem 1rem}.compress-levels__option{display:flex;align-items:center;gap:.4rem;font-size:.9rem;cursor:pointer}.compress-levels__option input:disabled{cursor:not-allowed}.compress-levels__option input{accent-color:var(--signal)}.merge-tray{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem;max-width:40rem}.merge-tray__empty{margin:0;color:var(--muted);font-size:.9rem}.merge-tray__row{display:flex;align-items:center;gap:.65rem;padding:.65rem .75rem;border:1px solid var(--rule);border-radius:10px;background:var(--white)}.merge-tray__order{flex-shrink:0;width:1.5rem;font-variant-numeric:tabular-nums;color:var(--signal);font-size:.85rem;font-weight:700}.merge-tray__meta{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}.merge-tray__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;font-weight:600}.merge-tray__pages{color:var(--muted);font-size:.8rem}.merge-tray__actions{display:flex;flex-wrap:wrap;gap:.4rem;flex-shrink:0}.merge-tray__actions button{cursor:pointer;padding:.25rem .45rem;border:1px solid var(--rule);border-radius:6px;background:var(--beige);color:var(--ink);font:inherit;font-size:.75rem}.merge-tray__actions button:hover:not(:disabled){border-color:var(--signal);color:var(--signal)}.merge-tray__actions button:disabled{opacity:.35;cursor:not-allowed}@media(max-width:640px){.rotate-controls__btn--primary{margin-left:0;width:100%;text-align:center}}.password-modal{font-family:SF Mono,Menlo,Consolas,Liberation Mono,ui-monospace,monospace;color:var(--ink);line-height:1.45;background:#2a262273}.password-modal__panel{width:min(22rem,100%);max-width:100%;padding:1.15rem 1.2rem 1.1rem;margin:0;box-sizing:border-box;background:var(--white);border:1px solid var(--rule);border-radius:12px;box-shadow:var(--sheet-shadow)}.password-modal__title{margin:0 0 .35rem;font-size:1rem;font-weight:700;letter-spacing:.04em;color:var(--ink)}.password-modal__file{margin:0 0 .85rem;color:var(--muted);font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.password-modal__label{display:block;margin-bottom:.35rem;font-size:.85rem;color:var(--clay)}.password-modal__error{margin:0 0 .45rem;color:var(--alert);font-size:.85rem}.password-modal__field{display:flex;align-items:stretch;gap:.45rem}.password-modal__input{flex:1;min-width:0;box-sizing:border-box;padding:.5rem .65rem;border:1px solid var(--rule);border-radius:8px;background:var(--beige);color:var(--ink);font:inherit;font-size:.95rem}.password-modal__input:focus{outline:2px solid var(--signal);outline-offset:1px}.password-modal__reveal{cursor:pointer;flex-shrink:0;padding:.5rem .65rem;border:1px solid var(--rule);border-radius:8px;background:var(--beige);color:var(--ink);font:inherit;font-size:.8rem}.password-modal__reveal:hover{border-color:var(--signal);color:var(--signal)}.password-modal__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.password-modal__btn{cursor:pointer;padding:.4rem .75rem;border:1px solid var(--rule);border-radius:8px;background:var(--beige);color:var(--ink);font:inherit;font-size:.85rem}.password-modal__btn--primary{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.password-modal__btn--primary:hover:not(:disabled){filter:brightness(1.08)}.password-modal__btn:disabled{opacity:.45;cursor:not-allowed}
