:root{--bg: #f8fafc;--surface: #ffffff;--surface-2: #f1f5f9;--border: #e2e8f0;--text: #0f172a;--text-muted: #64748b;--accent: #6366f1;--accent-light: #eef2ff;--accent-hover: #4f46e5;--success: #10b981;--danger: #ef4444;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--shadow: 0 4px 20px rgba(0, 0, 0, .07);--radius: 12px}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;font-family:Inter,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto}.container{width:min(1080px,92vw);margin:0 auto}.glass{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.navbar{position:sticky;top:0;z-index:40;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm)}.nav-inner{display:flex;align-items:center;justify-content:space-between;padding:.875rem 0}.brand{font-size:1rem;font-weight:700;letter-spacing:-.01em;color:var(--text)}.brand span{color:var(--accent)}.nav-links{display:flex;align-items:center;gap:.25rem}.nav-link{padding:.4rem .75rem;border-radius:8px;font-size:.9rem;font-weight:500;color:var(--text-muted);transition:background .15s ease,color .15s ease}.nav-link:hover{background:var(--surface-2);color:var(--text)}.nav-link.active{background:var(--accent-light);color:var(--accent)}.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px;padding:6px;border:none;background:transparent;cursor:pointer;border-radius:8px;transition:background .15s ease}.nav-toggle:hover{background:var(--surface-2)}.nav-toggle span{display:block;width:100%;height:2px;background:var(--text);border-radius:2px;transition:transform .2s ease,opacity .2s ease}.nav-toggle.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-toggle.open span:nth-child(2){opacity:0}.nav-toggle.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.nav-mobile{display:none;flex-direction:column;gap:.25rem;padding:.75rem 0 1rem;border-top:1px solid var(--border)}.nav-mobile.open{display:flex}.nav-mobile .nav-link{display:block;padding:.6rem .75rem}@media(max-width:640px){.nav-links{display:none}.nav-toggle{display:flex}}.footer{border-top:1px solid var(--border);margin-top:2rem;color:var(--text-muted)}.footer-inner{padding:1.25rem 0;text-align:center;font-size:.875rem}.main{padding:2rem 0}.hero{text-align:center;padding:4rem 2rem;animation:fade-in .5s ease-out}.hero h1{margin:0 0 .75rem;font-size:clamp(1.75rem,4vw,2.75rem);font-weight:800;letter-spacing:-.03em;color:var(--text)}.hero p{margin:0 auto 2rem;max-width:580px;color:var(--text-muted);font-size:1.05rem;line-height:1.65}.btn{display:inline-flex;align-items:center;gap:.4rem;border:none;border-radius:10px;padding:.65rem 1.25rem;font-size:.9rem;font-weight:600;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.btn:hover{transform:translateY(-1px)}.btn:disabled{cursor:not-allowed;opacity:.55;transform:none}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 2px 8px #6366f14d}.btn-primary:hover{background:var(--accent-hover);box-shadow:0 4px 14px #6366f166}.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background:var(--surface-2)}.actions{display:flex;justify-content:center;gap:.75rem;flex-wrap:wrap}.auth-card{width:min(440px,92vw);margin:2rem auto;padding:2rem;animation:slide-up .4s ease-out}.auth-card h1{margin:0 0 .25rem;font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.35rem;color:var(--text-muted);font-size:.875rem;font-weight:500}.input{width:100%;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.65rem .85rem;font-size:.9rem;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #6366f11f}.dashboard{display:grid;gap:1rem;animation:fade-in .5s ease-out}.dashboard-header{padding:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.dashboard-header h1{margin:0 0 .2rem;font-size:1.35rem;font-weight:700;letter-spacing:-.02em}.header-actions{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.status-msg{margin:0;font-size:.875rem;padding:0 .25rem}.ocr-grid{display:grid;gap:1rem;grid-template-columns:1fr 1fr}.upload-zone{position:relative;min-height:320px;overflow:hidden;cursor:pointer}.upload-zone input[type=file]{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.upload-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;height:100%;min-height:320px;padding:2rem;color:var(--text-muted);text-align:center}.upload-hint{margin:0;font-size:.9rem}.upload-empty label{cursor:pointer}.preview-state{display:flex;flex-direction:column;height:100%;min-height:320px}.preview-state img{flex:1;width:100%;object-fit:contain;display:block}.change-btn{display:block;text-align:center;padding:.6rem;font-size:.8rem;font-weight:500;color:var(--text-muted);border-top:1px solid var(--border);background:var(--surface-2);cursor:pointer;transition:background .15s ease,color .15s ease}.change-btn:hover{background:var(--border);color:var(--text)}.results-panel{min-height:320px;padding:1.25rem;overflow:auto}.block-count{margin:0 0 .75rem;font-size:.825rem}.results-panel pre{white-space:pre-wrap;word-break:break-word;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.875rem;margin:0}.muted{color:var(--text-muted);font-size:.9rem}.error{color:var(--danger)}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;margin-left:.5rem}.hidden{display:none!important}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media(max-width:840px){.ocr-grid{grid-template-columns:1fr}}
