*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--brand: #1a6fa3;--brand-dark: #135880;--accent: #e8f4fc;--strong-color: #16a34a;--possible-color: #ca8a04;--danger: #dc2626;--text: #1f2937;--muted: #6b7280;--border: #e5e7eb;--radius: 10px;--shadow: 0 2px 12px rgba(0,0,0,.08)}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:#f3f6fa;color:var(--text);min-height:100vh}a{color:var(--brand);text-decoration:none}button{cursor:pointer;font-family:inherit}.card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:2rem}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.6rem 1.4rem;border-radius:8px;font-size:.95rem;font-weight:600;border:none;transition:background .15s,transform .1s}.btn:active{transform:scale(.97)}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover{background:var(--brand-dark)}.btn-outline{background:transparent;color:var(--brand);border:2px solid var(--brand)}.btn-outline:hover{background:var(--accent)}.btn-success{background:var(--strong-color);color:#fff}.btn-success:hover{background:#15803d}.btn-sm{padding:.35rem .85rem;font-size:.82rem}.btn:disabled{opacity:.5;cursor:not-allowed}.spinner{display:inline-block;width:1.2em;height:1.2em;border:3px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.page-center{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1.5rem}.page-header{background:#fff;border-bottom:1px solid var(--border);padding:1rem 2rem;display:flex;align-items:center;gap:.75rem}.page-header h1{font-size:1.2rem;color:var(--brand);font-weight:700}.passcode-card{max-width:380px;width:100%;text-align:center}.passcode-card .logo{font-size:3rem;margin-bottom:.5rem}.passcode-card h2{font-size:1.4rem;margin-bottom:.3rem}.passcode-card p{color:var(--muted);font-size:.9rem;margin-bottom:1.5rem}.passcode-card input[type=password]{width:100%;padding:.75rem 1rem;border:2px solid var(--border);border-radius:8px;font-size:1.1rem;margin-bottom:1rem;outline:none;transition:border-color .2s}.passcode-card input[type=password]:focus{border-color:var(--brand)}.passcode-card .error{color:var(--danger);font-size:.9rem;margin-bottom:.75rem}.upload-container{max-width:540px;margin:2rem auto;padding:1.5rem}.dropzone{border:2.5px dashed var(--brand);border-radius:var(--radius);padding:2.5rem;text-align:center;cursor:pointer;transition:background .15s;background:var(--accent)}.dropzone:hover,.dropzone.drag-over{background:#d0e9f8}.dropzone .icon{font-size:2.8rem;display:block;margin-bottom:.6rem}.dropzone p{color:var(--muted);font-size:.9rem;margin-top:.5rem}.preview-wrap{position:relative;margin-top:1.2rem;text-align:center}.preview-wrap img{max-width:100%;max-height:300px;border-radius:8px;border:2px solid var(--border)}.preview-wrap .clear-btn{position:absolute;top:8px;right:8px;background:#0000008c;color:#fff;border:none;border-radius:50%;width:28px;height:28px;font-size:1rem;display:flex;align-items:center;justify-content:center}.upload-actions{display:flex;gap:1rem;margin-top:1.2rem;flex-wrap:wrap}.results-container{max-width:1100px;margin:0 auto;padding:1.5rem}.results-section{margin-bottom:2.5rem}.results-section h2{font-size:1.15rem;font-weight:700;margin-bottom:1rem;display:flex;align-items:center;gap:.5rem}.badge{display:inline-block;padding:.15rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600}.badge-strong{background:#dcfce7;color:#15803d}.badge-possible{background:#fef9c3;color:#854d0e}.badge-score{background:#f3f4f6;color:var(--muted);font-size:.72rem}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.photo-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;transition:box-shadow .15s;position:relative}.photo-card:hover{box-shadow:0 4px 20px #00000021}.photo-card.selected{outline:3px solid var(--brand)}.photo-card .thumb-wrap{position:relative;cursor:pointer;overflow:hidden;aspect-ratio:4/3;background:#e5e7eb}.photo-card .thumb-wrap img{width:100%;height:100%;object-fit:cover;transition:transform .2s}.photo-card:hover .thumb-wrap img{transform:scale(1.03)}.photo-card .card-footer{padding:.6rem .75rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.photo-card .card-footer .filename{font-size:.78rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.checkbox-overlay{position:absolute;top:8px;left:8px;width:22px;height:22px;border-radius:5px;border:2.5px solid white;background:#00000040;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s}.checkbox-overlay.checked{background:var(--brand);border-color:var(--brand)}.checkbox-overlay.checked:after{content:"✓";color:#fff;font-size:.85rem;font-weight:700}.sticky-bar{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--border);padding:.9rem 2rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;box-shadow:0 -4px 16px #00000012;z-index:100}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000e0;z-index:200;display:flex;align-items:center;justify-content:center}.lightbox-overlay img{max-width:95vw;max-height:95vh;border-radius:6px}.lightbox-close{position:fixed;top:1rem;right:1.5rem;background:none;border:none;color:#fff;font-size:2rem;cursor:pointer;line-height:1}.empty-state{text-align:center;padding:3rem;color:var(--muted)}.empty-state .icon{font-size:3rem;display:block;margin-bottom:.75rem}
