*{margin:0;padding:0;box-sizing:border-box}:root{--navy-900:#0a1f3d;--navy-800:#132e54;--navy-700:#1d3f6e;--sky-50:#f0f9ff;--sky-500:#0ea5e9;--sky-600:#0284c7;--sky-700:#0369a1;--sky-100:#e0f2fe;--amber-600:#d97706;--amber-100:#fef3c7;--emerald-600:#059669;--emerald-100:#d1fae5;--slate-50:#f8fafc;--slate-100:#f1f5f9;--slate-200:#e2e8f0;--slate-300:#cbd5e1;--slate-600:#475569;--slate-700:#334155;--slate-800:#1e293b;--slate-900:#0f172a}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;line-height:1.6;color:#1e293b;background:linear-gradient(to bottom,var(--sky-50),#eef4fa);min-height:100vh}.header{background:linear-gradient(135deg,var(--navy-900),var(--navy-700));border-bottom:3px solid var(--sky-500);padding:.75rem 1rem}.header .logo-text{color:#fff}.header .btn-outline{background:transparent;color:#fff;border:1px solid hsla(0,0%,100%,.6)}.header .btn-outline:hover{background:hsla(0,0%,100%,.12);border-color:#fff}.header-container{max-width:1280px;margin:0 auto;justify-content:space-between}.header-container,.logo{display:flex;align-items:center}.logo{gap:.5rem;text-decoration:none;color:inherit}.logo-icon{width:32px;height:32px;background:linear-gradient(135deg,var(--sky-500),var(--sky-700));border-radius:4px;display:flex;align-items:center;justify-content:center}.logo-icon svg{width:16px;height:16px;color:#fff}.logo-text{font-size:1.125rem;font-weight:700;color:var(--slate-900)}.btn{padding:.5rem 1rem;font-size:.875rem;font-weight:600;border-radius:8px;text-decoration:none;display:inline-block;cursor:pointer;border:none;transition:all .2s}.btn-primary{background:linear-gradient(135deg,var(--sky-500),var(--sky-600));color:#fff;box-shadow:0 1px 2px rgba(2,132,199,.3)}.btn-primary:hover{background:linear-gradient(135deg,var(--sky-600),var(--sky-700));box-shadow:0 2px 6px rgba(2,132,199,.4)}.btn-outline{background:#fff;color:var(--sky-600);border:1px solid var(--sky-600)}.btn-outline:hover{background:var(--sky-50);border-color:var(--sky-700)}.container{max-width:1280px;margin:0 auto;padding:2rem 1rem}.page-title{font-size:1.5rem;font-weight:700;color:var(--navy-800);margin-bottom:.5rem}.page-subtitle{font-size:.875rem;color:var(--slate-600);margin-bottom:1.5rem}.card{background:#fff;border:1px solid var(--slate-200);border-radius:12px;padding:1.25rem;margin-bottom:1.25rem;box-shadow:0 1px 3px rgba(10,31,61,.06)}.card-header{gap:.5rem;margin-bottom:1rem}.card-header,.card-icon{display:flex;align-items:center}.card-icon{width:32px;height:32px;border-radius:4px;justify-content:center}.card-icon svg{width:16px;height:16px}.card-icon-sky{background:var(--sky-100)}.card-icon-sky svg{color:var(--sky-600)}.card-icon-amber{background:var(--amber-100)}.card-icon-amber svg{color:var(--amber-600)}.card-icon-emerald{background:var(--emerald-100)}.card-icon-emerald svg{color:var(--emerald-600)}.card-title{font-size:1.125rem;font-weight:700;color:var(--slate-900)}.form-group{margin-bottom:1rem}.form-label{display:block;font-size:.875rem;font-weight:500;color:var(--slate-700);margin-bottom:.5rem}.form-input{width:100%;padding:.5rem;border:1px solid var(--slate-300);border-radius:8px;font-size:.875rem;transition:border-color .2s,box-shadow .2s}.form-input:focus{outline:none;border-color:var(--sky-500);box-shadow:0 0 0 3px rgba(14,165,233,.15)}.form-hint{font-size:.75rem;color:var(--slate-600);margin-top:.25rem}.file-info{background:var(--sky-100);border:1px solid #bae6fd;border-radius:4px;padding:.75rem;display:flex;gap:.5rem;margin-bottom:1rem}.file-info svg{width:16px;height:16px;color:var(--sky-600);flex-shrink:0;margin-top:2px}.file-info-text{flex:1}.file-name{font-size:.875rem;font-weight:500;color:var(--slate-900)}.file-size{font-size:.75rem;color:var(--slate-600)}.logbook-item{border:1px solid var(--slate-200);border-radius:10px;padding:1rem;margin-bottom:.75rem;background:var(--slate-50);transition:border-color .2s,box-shadow .2s}.logbook-item:hover{border-color:var(--sky-500);box-shadow:0 2px 8px rgba(14,165,233,.12)}.logbook-content{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.logbook-info{flex:1;min-width:0}.logbook-header{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.5rem}.logbook-header svg{width:16px;height:16px;color:var(--sky-600);flex-shrink:0;margin-top:2px}.logbook-filename{font-size:.875rem;font-weight:700;color:var(--slate-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logbook-meta{display:flex;flex-wrap:wrap;gap:.75rem;font-size:.75rem;color:var(--slate-600);margin-bottom:.5rem}.logbook-meta span{display:flex;align-items:center;gap:.25rem}.logbook-meta svg{width:12px;height:12px}.logbook-badges{display:flex;flex-wrap:wrap;gap:.5rem}.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;border-radius:9999px;font-size:.75rem;font-weight:600}.badge svg{width:12px;height:12px}.badge-uploaded{background:var(--slate-100);color:var(--slate-700)}.badge-processing{background:var(--sky-100);color:var(--sky-700)}.badge-completed{background:var(--emerald-100);color:#047857}.badge-failed{background:#fee2e2;color:#991b1b}.badge-type{background:#f3e8ff;color:#7c3aed}.badge-type-airframe{background:var(--sky-100);color:var(--sky-700)}.badge-type-engine{background:var(--amber-100);color:var(--amber-600)}.badge-type-propeller{background:var(--emerald-100);color:var(--emerald-600)}.badge-type-appliance{background:#f3e8ff;color:#7c3aed}.badge-type-unknown{background:var(--slate-100);color:var(--slate-600)}.owner-group{margin-bottom:1.5rem}.owner-group:last-child{margin-bottom:0}.owner-header{display:flex;align-items:center;gap:.5rem;background:linear-gradient(135deg,var(--navy-900),var(--navy-700));color:#fff;border-radius:8px;border-left:4px solid var(--sky-500);padding:.5rem .75rem;font-weight:700;font-size:.9rem;margin-bottom:.75rem}.owner-header svg{width:18px;height:18px;flex-shrink:0}.owner-count{margin-left:auto;font-weight:500;font-size:.75rem;color:var(--slate-300)}.tail-group{border:1px solid var(--slate-200);border-radius:10px;background:#fff;padding:.75rem;margin-bottom:1rem;box-shadow:0 1px 2px rgba(10,31,61,.05)}.tail-group:last-child{margin-bottom:0}.tail-header{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;padding-bottom:.5rem;margin-bottom:.75rem;border-bottom:2px solid var(--sky-500)}.tail-header svg{width:18px;height:18px;color:var(--sky-600);flex-shrink:0}.tail-registration{font-weight:700;font-size:1rem;color:var(--navy-800);letter-spacing:.02em}.tail-aircraft{font-size:.8rem;color:var(--slate-600)}.tail-group-unclassified{background:var(--slate-50);border-style:dashed}.tail-header-unclassified{border-bottom-color:var(--slate-300)}.tail-header-unclassified svg{color:var(--slate-600)}.category-group{margin-bottom:.75rem}.category-group:last-child{margin-bottom:0}.category-header{display:flex;align-items:center;gap:.375rem;font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:.25rem .5rem;border-radius:4px;margin-bottom:.5rem;border-left:4px solid transparent}.category-count{font-weight:500}.category-airframe{background:var(--sky-100);color:var(--sky-700);border-left-color:var(--sky-500)}.category-engine{background:var(--amber-100);color:var(--amber-600);border-left-color:var(--amber-600)}.category-propeller{background:var(--emerald-100);color:var(--emerald-600);border-left-color:var(--emerald-600)}.category-appliance{background:#f3e8ff;color:#7c3aed;border-left-color:#7c3aed}.category-unknown{background:var(--slate-100);color:var(--slate-600);border-left-color:var(--slate-300)}.logbook-actions{display:flex;flex-direction:column;gap:.5rem}.btn-sm{padding:.5rem 1rem;font-size:.875rem}.btn-full{width:100%;text-align:center}.btn:disabled{background:var(--slate-300);cursor:not-allowed}.message{padding:.75rem;border-radius:8px;border:1px solid;display:flex;align-items:flex-start;gap:.5rem;font-size:.875rem;margin-top:1rem}.message svg{width:16px;height:16px;flex-shrink:0;margin-top:2px}.message-success{background:var(--emerald-100);border-color:#a7f3d0;color:#047857}.message-error{background:#fee2e2;border-color:#fecaca;color:#991b1b}.message-info{background:var(--sky-100);border-color:#bae6fd;color:#0c4a6e}@keyframes spin{to{transform:rotate(1turn)}}.spinner{animation:spin 1s linear infinite}.empty-state{text-align:center;padding:2rem}.empty-state svg{width:48px;height:48px;color:var(--slate-300);margin:0 auto 1rem}.empty-state-title{font-size:.875rem;color:var(--slate-600);margin-bottom:.25rem}.empty-state-text{font-size:.75rem;color:var(--slate-500)}@media (max-width:640px){.logbook-content{flex-direction:column}.logbook-actions{flex-direction:row;width:100%}.logbook-actions .btn{flex:1}}