/* Library page: subjects on this device, sync, and (when available) importing your own files. */
.library-page{display:grid;gap:18px;max-width:1080px;margin:0 auto;padding-bottom:24px}
.library-status{margin:0;padding:12px 16px;border-radius:14px;font-size:14px;font-weight:600;box-shadow:var(--inset-sm);color:var(--muted)}
.library-status:empty{display:none}
.library-status[data-tone="ok"]{color:var(--green)}
.library-status[data-tone="warn"]{color:var(--coral)}
.lib-card{padding:22px;border-radius:26px;background:var(--bg);box-shadow:var(--raise-sm);border:1px solid var(--edge);min-width:0}
.lib-head{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.lib-head h2{font-size:19px;margin:0}
.lib-sub{margin:2px 0 0;font-size:13px;color:var(--muted)}
.lib-actions{display:flex;gap:10px;flex-wrap:wrap}
.subject-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.subject-card{display:flex;flex-direction:column;gap:12px;padding:18px;border-radius:22px;box-shadow:var(--raise-xs);min-width:0;animation:viewIn .3s ease both}
.subject-top{display:flex;gap:12px;align-items:flex-start}
.subject-mark{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;flex-shrink:0;color:var(--accent);box-shadow:var(--inset-sm);font-size:19px}
.subject-text{min-width:0}
.subject-text h3{font-size:16px;margin:0 0 4px;line-height:1.3}
.subject-text p{margin:0;font-size:13px;color:var(--muted);line-height:1.45}
.subject-meta{display:flex;flex-wrap:wrap;gap:6px}
.subject-meta span{font-size:11.5px;font-weight:700;color:var(--muted);padding:3px 10px;border-radius:999px;box-shadow:var(--inset-sm)}
.subject-progress{display:grid;gap:6px}
.subject-progress small{font-size:12px;color:var(--muted)}
.subject-go{margin-top:auto;align-self:flex-start}
.soon-chip{font-size:11.5px;font-weight:800;color:var(--violet);padding:5px 12px;border-radius:999px;background:color-mix(in srgb,var(--violet-2) 16%,var(--bg))}
.soon-body{display:grid;gap:16px}
.soon-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.soon-steps li{display:flex;gap:12px;align-items:flex-start;padding:14px;border-radius:18px;box-shadow:var(--inset-sm)}
.soon-steps li>span{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex-shrink:0;font-weight:800;font-size:14px;color:var(--accent);background:var(--bg);box-shadow:var(--raise-xs)}
.soon-steps strong{display:block;font-size:14px}
.soon-steps small{display:block;font-size:12.5px;color:var(--muted);line-height:1.4}
.lib-note{margin:0;font-size:13.5px;color:var(--muted);line-height:1.5}
.import-form{display:grid;gap:14px}
.drop-zone{position:relative;display:grid;justify-items:center;gap:4px;padding:24px 16px;border-radius:20px;border:2px dashed color-mix(in srgb,var(--accent) 40%,transparent);text-align:center;cursor:pointer;transition:background .15s}
.drop-zone:hover{background:color-mix(in srgb,var(--accent) 5%,var(--bg))}
.drop-zone input{position:absolute;inset:0;opacity:0;cursor:pointer}
.drop-icon{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;color:var(--accent);box-shadow:var(--raise-xs);font-size:20px;margin-bottom:4px}
.drop-zone small{color:var(--muted);font-size:12.5px}
.drive-disclosure summary{cursor:pointer;font-weight:700;font-size:14px;min-height:44px;display:flex;align-items:center}
.drive-row{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.drive-row .auth-field{flex:1 1 260px}
.drive-files{display:grid;gap:6px;margin-top:10px}
.drive-file{display:flex;gap:10px;align-items:center;padding:8px 12px;border-radius:12px;box-shadow:var(--inset-sm);font-size:13.5px;overflow-wrap:anywhere}
.drive-file small{color:var(--muted)}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--muted);line-height:1.45}
.consent input{width:20px;height:20px;min-height:20px;margin-top:1px;accent-color:var(--accent);flex-shrink:0}
.jobs{display:grid;gap:10px;margin-top:18px}
.jobs:empty{display:none}
.jobs h3{font-size:15px;margin:0}
.job-card{padding:14px;border-radius:16px;box-shadow:var(--inset-sm)}
.job-card p{margin:6px 0;font-size:13px;color:var(--muted)}
.job-top{display:flex;justify-content:space-between;gap:10px;align-items:center}
.job-card .card-actions{margin-top:8px}
.pack-preview{margin-top:18px;padding:16px;border-radius:18px;box-shadow:var(--inset-sm)}
.pack-preview h3{margin:0}
.lib-warn{font-size:13px;color:var(--coral)}
.preview-list{display:grid;gap:6px;margin-top:12px;max-height:420px;overflow:auto}
.preview-list details{padding:8px 12px;border-radius:12px;background:var(--bg);box-shadow:var(--raise-xs)}
.preview-list summary{cursor:pointer;font-weight:700;font-size:14px;min-height:36px;display:flex;align-items:center}
.preview-list p,.preview-list li{font-size:13px;color:var(--muted)}
@media(max-width:780px){
  .lib-card{padding:16px;border-radius:22px}
  .subject-list{grid-template-columns:minmax(0,1fr);gap:10px}
  .subject-card{padding:16px}
  .soon-steps{grid-template-columns:minmax(0,1fr)}
  .lib-actions{width:100%}
  .lib-actions .button{flex:1}
}
@media(prefers-reduced-motion:reduce){.subject-card{animation:none}}
