:root{--bg0: #0f1c17;--bg1: #173028;--bg2: #1f3d32;--ink: #f3f7f4;--muted: #a7b8af;--accent: #6fbf8e;--accent-ink: #0c1a14;--danger: #e8a0a0;--font: "Source Sans 3", "Segoe UI", sans-serif;--display: "IBM Plex Sans", "Source Sans 3", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:radial-gradient(1200px 600px at 10% -10%,#2a5a45 0%,transparent 55%),radial-gradient(900px 500px at 100% 0%,#214036 0%,transparent 50%),linear-gradient(160deg,var(--bg0),var(--bg1) 45%,var(--bg2));transition:background .2s ease}.shell{position:relative;max-width:42rem;margin:0 auto;padding:1.5rem 1.25rem 3rem}.shell.shell-wide{max-width:min(96rem,100%)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pulse-veil{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;opacity:0;background:transparent}.shell.pulse-ok .pulse-veil{animation:pulse-ok .7s ease-out}.shell.pulse-bad .pulse-veil{animation:pulse-bad .7s ease-out}@keyframes pulse-ok{0%{opacity:0;background:#46b46e00}18%{opacity:1;background:#46b46e8c}to{opacity:0;background:#46b46e00}}@keyframes pulse-bad{0%{opacity:0;background:#c8464600}18%{opacity:1;background:#c846468c}to{opacity:0;background:#c8464600}}.login-shell{min-height:100vh;display:flex;flex-direction:column;justify-content:center;gap:1.5rem}.eyebrow{margin:0 0 .35rem;text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;color:var(--muted)}h1{margin:0;font-family:var(--display);font-weight:600;font-size:clamp(1.8rem,5vw,2.4rem);line-height:1.15}h2{margin:0 0 .75rem;font-family:var(--display);font-size:1.15rem}.lede{margin:.75rem 0 0;color:var(--muted);font-size:1.05rem;line-height:1.45;max-width:34rem}.top{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:2rem}.user{display:flex;flex-wrap:wrap;gap:.6rem .9rem;align-items:center;justify-content:flex-end;font-size:.92rem;color:var(--muted)}.role{padding:.15rem .5rem;border:1px solid #3d5c4d;border-radius:.35rem;color:var(--ink)}a{color:var(--ink)}.cta{display:inline-flex;align-items:center;justify-content:center;margin-top:1.25rem;padding:.9rem 1.35rem;border:0;border-radius:.55rem;background:var(--accent);color:var(--accent-ink);font:inherit;font-weight:700;text-decoration:none;cursor:pointer}.cta:disabled{opacity:.55;cursor:not-allowed}.hero-action{padding:1.25rem 0 2rem;display:flex;flex-direction:column;align-items:flex-start;gap:.75rem}.hero-action .cta,.hero-action .secondary{margin-top:0}.linkish{border:0;background:transparent;color:var(--ink);font:inherit;font-size:.92rem;text-decoration:underline;text-underline-offset:.15em;cursor:pointer;padding:0}.entries-panel{margin:0 0 1.5rem;padding-bottom:1.25rem;border-bottom:1px solid #2f4a3d}.entries-panel.entries-full{border-bottom:0;padding-bottom:0}.entries-heading{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.entries-heading h2{margin:0}.panel-lede{margin:.4rem 0 .85rem}.entry-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.entry-item{display:grid;grid-template-columns:1fr auto;gap:.45rem;align-items:stretch}.entry-row{width:100%;display:grid;grid-template-columns:1fr auto;gap:.2rem .75rem;align-items:center;text-align:left;padding:.85rem .95rem;border:1px solid #2f4a3d;border-radius:.5rem;background:#0000002e;color:var(--ink);font:inherit;cursor:pointer}.entry-row:disabled{opacity:.55;cursor:not-allowed}.entry-title{grid-column:1;font-weight:600}.entry-meta{grid-column:1;color:var(--muted);font-size:.88rem}.entry-action{grid-column:2;grid-row:1 / span 2;color:var(--accent);font-weight:700;font-size:.9rem}.entry-delete{align-self:stretch;padding:.55rem .75rem;border:1px solid #6a3a3a;border-radius:.5rem;background:transparent;color:var(--danger);font:inherit;font-weight:600;font-size:.85rem;cursor:pointer}.entry-delete:disabled{opacity:.55;cursor:not-allowed}.confirm-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:1.25rem;background:#060c0ab8}.confirm-dialog{width:min(28rem,100%);padding:1.35rem 1.25rem 1.25rem;border:1px solid #3d5c4d;border-radius:.65rem;background:linear-gradient(160deg,var(--bg1),var(--bg2));box-shadow:0 18px 40px #00000073}.confirm-dialog h2{margin:0}.confirm-dialog .lede{margin-top:.65rem}.confirm-dialog strong{color:var(--ink);font-weight:700}.confirm-check{display:flex;gap:.65rem;align-items:flex-start;margin:1rem 0 .25rem;color:var(--muted);font-size:.95rem;line-height:1.35;cursor:pointer}.confirm-check input{margin-top:.2rem;flex-shrink:0}.danger{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.1rem;border:0;border-radius:.55rem;background:#a84a4a;color:#fff7f7;font:inherit;font-weight:700;cursor:pointer}.danger:disabled{opacity:.55;cursor:not-allowed}.filter-row{display:flex;flex-wrap:wrap;gap:.5rem;margin:0 0 1rem}.filter-chip{padding:.45rem .8rem;border:1px solid #3d5c4d;border-radius:.4rem;background:transparent;color:var(--muted);font:inherit;font-weight:600;cursor:pointer}.filter-chip.active{border-color:var(--accent);color:var(--ink);background:#6fbf8e2e}.table-toolbar{display:flex;flex-wrap:wrap;gap:.65rem .85rem;align-items:end;margin:0 0 .75rem}.table-search{flex:1 1 14rem;min-width:12rem}.table-search input{width:100%;padding:.55rem .75rem;border:1px solid #3d5c4d;border-radius:.4rem;background:#00000038;color:var(--ink);font:inherit}.table-select{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;color:var(--muted)}.table-select select{padding:.5rem .65rem;border:1px solid #3d5c4d;border-radius:.4rem;background:#00000038;color:var(--ink);font:inherit}.table-actions{display:flex;flex-wrap:wrap;gap:.5rem}.table-count{margin:0 0 .65rem;font-size:.9rem}.column-picker{margin:0 0 .85rem;padding:.85rem .95rem;border:1px solid #2f4a3d;border-radius:.5rem;background:#0000002e}.column-picker-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-bottom:.65rem}.column-picker-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(11.5rem,1fr));gap:.35rem .75rem}.column-picker-list label{display:flex;gap:.45rem;align-items:flex-start;font-size:.88rem;color:var(--muted);cursor:pointer}.column-picker-list input{margin-top:.15rem;flex-shrink:0}.table-scroll{overflow:auto;max-height:min(70vh,42rem);border:1px solid #2f4a3d;border-radius:.5rem;background:#00000029;margin-bottom:1rem}.entries-table{width:100%;border-collapse:collapse;font-size:.9rem;white-space:nowrap}.entries-table th,.entries-table td{padding:.55rem .7rem;border-bottom:1px solid #2a4237;text-align:left;vertical-align:middle}.entries-table thead th{position:sticky;top:0;z-index:1;background:#1a3229;font-weight:600}.th-sort{display:inline-flex;align-items:center;gap:.15rem;padding:0;border:0;background:transparent;color:var(--ink);font:inherit;font-weight:600;cursor:pointer}.th-sort.active{color:var(--accent)}.th-actions,.td-actions{position:sticky;right:0;background:#1a3229;box-shadow:-6px 0 10px #0000002e}.entries-table tbody .td-actions{background:#152820}.td-actions-inner{display:flex;gap:.65rem;align-items:center}.group-row td{background:#6fbf8e1f;border-bottom-color:#3d5c4d;white-space:normal}.danger-link{color:var(--danger)!important}.admin{margin-top:1rem;padding-top:1.25rem;border-top:1px solid #2f4a3d}.admin ul{margin:0;padding-left:1.1rem;color:var(--muted)}.muted{color:var(--muted);font-size:.95rem}.error{color:var(--danger)}.flash{margin:0 0 1rem;padding:.75rem .9rem;border-left:3px solid var(--accent);background:#00000038;color:var(--ink)}.scan-wizard,.review,.processing-panel{padding:.25rem 0 2rem}.processing-panel{display:grid;justify-items:center;text-align:center;gap:.85rem;min-height:18rem;padding-top:2.5rem}.processing-spinner{width:3rem;height:3rem;border-radius:50%;border:3px solid rgba(111,191,142,.22);border-top-color:var(--accent);animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.processing-title{margin:0;font-family:var(--display);font-size:1.35rem;font-weight:600;letter-spacing:-.02em}.processing-panel .lede{max-width:26rem;margin:0}.processing-steps{list-style:none;margin:.75rem 0 0;padding:0;width:min(100%,22rem);text-align:left;display:grid;gap:.45rem}.processing-steps li{position:relative;padding:.45rem .75rem .45rem 2rem;border-radius:.4rem;background:#0000002e;color:var(--muted);font-size:.95rem}.processing-steps li:before{content:"";position:absolute;left:.7rem;top:50%;width:.55rem;height:.55rem;border-radius:50%;transform:translateY(-50%);background:#3d5c4d}.processing-steps li.done{color:var(--ink)}.processing-steps li.done:before{background:var(--accent)}.processing-steps li.active{color:var(--ink);outline:1px solid rgba(111,191,142,.45)}.processing-steps li.active:before{background:var(--accent);box-shadow:0 0 0 4px #6fbf8e2e;animation:pulse-dot 1.2s ease-in-out infinite}@keyframes pulse-dot{0%,to{box-shadow:0 0 0 3px #6fbf8e1f}50%{box-shadow:0 0 0 6px #6fbf8e47}}.processing-actions{justify-content:center;margin-top:1.25rem}.processing-footnote{margin:0;max-width:26rem;font-size:.88rem;line-height:1.35}.page-dots{display:flex;gap:.5rem;list-style:none;margin:1rem 0;padding:0}.page-dots li{width:2rem;height:2rem;display:grid;place-items:center;border:1px solid #3d5c4d;border-radius:.4rem;color:var(--muted)}.page-dots li.current{border-color:var(--accent);color:var(--ink)}.page-dots li.ok{background:#6fbf8e40;border-color:var(--accent);color:var(--ink)}.camera-frame{position:relative;margin:.75rem 0 1rem;aspect-ratio:3 / 4;max-height:55vh;overflow:hidden;border:1px solid #2f4a3d;background:#0a1210}.camera{width:100%;height:100%;object-fit:contain;display:block;background:#0a1210}.detect-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.detect-hint{position:absolute;left:.6rem;right:.6rem;bottom:.55rem;margin:0;padding:.35rem .5rem;border-radius:.35rem;background:#0a1210b8;color:var(--muted);font-size:.82rem;text-align:center;pointer-events:none}.btn-row{display:flex;flex-wrap:wrap;gap:.65rem;margin-top:.85rem}.secondary,.file-btn{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.1rem;border:1px solid #3d5c4d;border-radius:.55rem;background:transparent;color:var(--ink);font:inherit;font-weight:600;cursor:pointer}.secondary:disabled,.file-btn:has(input:disabled){opacity:.55;cursor:not-allowed}.file-btn input{display:none}.section-label{margin:1.5rem 0 .65rem;font-family:var(--display);font-size:1.05rem;font-weight:600;letter-spacing:-.01em}.page-gallery .section-label{margin-top:.35rem}.page-thumbs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.page-thumb{display:grid;gap:.4rem;width:100%;padding:.45rem;border:1px solid #2f4a3d;border-radius:.45rem;background:#00000038;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.page-thumb:hover,.page-thumb:focus-visible{border-color:var(--accent);outline:none}.page-thumb img{width:100%;aspect-ratio:8.5 / 11;object-fit:contain;background:#0a1210;display:block}.page-thumb span{font-size:.85rem;color:var(--muted)}.page-lightbox{width:min(96vw,44rem);max-height:92vh;display:grid;grid-template-rows:auto 1fr;gap:.75rem;padding:1rem;border:1px solid #3d5c4d;border-radius:.55rem;background:#0f1a16;box-shadow:0 18px 48px #00000073}.page-lightbox-top{display:flex;align-items:center;justify-content:space-between;gap:1rem}.page-lightbox-top h2{margin:0;font-family:var(--display);font-size:1.15rem;font-weight:600}.page-lightbox-img{width:100%;max-height:calc(92vh - 4.5rem);object-fit:contain;background:#0a1210;border:1px solid #2f4a3d}.field-list{list-style:none;margin:.35rem 0 0;padding:0;display:flex;flex-direction:column;gap:1.75rem}.field-row{display:grid;grid-template-columns:1fr;gap:.65rem;align-items:stretch}.crop{width:100%;max-height:11rem;object-fit:contain;object-position:left center;border:1px solid #2f4a3d;background:#0a1210;display:block;image-rendering:auto}.field-row label{display:flex;flex-direction:column;gap:.35rem;font-size:.95rem}.field-row input{width:100%;padding:.65rem .7rem;border:1px solid #3d5c4d;border-radius:.4rem;background:#00000040;color:var(--ink);font:inherit}.warn{color:var(--danger);font-size:.85rem}@media(max-width:640px){.top{flex-direction:column}.user{justify-content:flex-start}.crop{max-height:9rem}}@media(min-width:641px){.crop{max-height:12.5rem}}
