.library{min-height:calc(100vh - 56px);padding-bottom:6rem}.library__section{margin-bottom:3.5rem}.library__section-header{justify-content:space-between;align-items:baseline;margin-bottom:1.5rem;display:flex}.library__section-title{font-family:var(--font-display,"Sora",system-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);font-size:.6875rem;font-weight:600}.library__section-count{font-family:var(--font-code,"Fira Code",monospace);color:color-mix(in srgb,var(--text-muted)60%,transparent);letter-spacing:.04em;margin-left:.75rem;font-size:.625rem}.library__grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;display:grid}.hero-card{background:var(--card-surface);border:1px solid var(--card-border);border-top-color:var(--card-border-top);cursor:pointer;border-radius:16px;align-items:stretch;min-height:220px;transition:border-color .3s,box-shadow .4s;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff12,inset 0 -2px 5px #0000001a,0 1px 4px #0000001f}.hero-card:hover{border-color:color-mix(in srgb,var(--hero-accent,var(--accent))20%,transparent);box-shadow:inset 0 1px 0 #ffffff1a,inset 0 -2px 5px #0000001f,0 0 40px color-mix(in srgb,var(--hero-accent,var(--accent))8%,transparent),0 4px 16px #0003}.hero-card:before{content:"";border-radius:inherit;z-index:3;pointer-events:none;background:linear-gradient(#ffffff0a 0%,#0000 50%,#00000008 100%);position:absolute;inset:0}.hero-card__stripe{background:var(--hero-accent,var(--accent));z-index:2;border-radius:16px 0 0 16px;width:5px;position:absolute;top:0;bottom:0;left:0}.hero-card__wash{background:radial-gradient(ellipse at -5% 50%,color-mix(in srgb,var(--hero-accent,var(--accent))12%,transparent)0%,transparent 60%);pointer-events:none;z-index:1;position:absolute;inset:0}.hero-card__content{z-index:2;flex-direction:column;flex:1;justify-content:center;padding:2.5rem 2.5rem 2.5rem 3rem;display:flex;position:relative}.hero-card__eyebrow{font-family:var(--font-code,"Fira Code",monospace);letter-spacing:.14em;text-transform:uppercase;color:var(--hero-accent,var(--accent));opacity:.9;margin-bottom:.75rem;font-size:.625rem}.hero-card__title{color:var(--text-primary);letter-spacing:-.02em;margin-bottom:.5rem;font-size:1.75rem;font-weight:700;line-height:1.15}.hero-card__subtitle{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);margin-bottom:1.75rem;font-size:.875rem;line-height:1.5}.hero-card__footer{align-items:center;gap:1.5rem;display:flex}.hero-card__progress-info{align-items:center;gap:.75rem;display:flex}.hero-card__progress-text{font-family:var(--font-code,"Fira Code",monospace);color:var(--text-muted);letter-spacing:.02em;font-size:.75rem}.hero-card__progress-text strong{color:var(--hero-accent,var(--accent));font-weight:600}.hero-card__cta{font-family:var(--font-body,"DM Sans",system-ui);letter-spacing:.02em;color:var(--background);background:var(--hero-accent,var(--accent));cursor:pointer;border:none;border-radius:8px;align-items:center;gap:.5rem;padding:.625rem 1.5rem;font-size:.8125rem;font-weight:600;transition:opacity .2s,transform .15s;display:inline-flex}.hero-card__cta:hover{opacity:.9;transform:translateY(-1px)}.hero-card__cta svg{width:14px;height:14px;transition:transform .2s}.hero-card:hover .hero-card__cta svg{transform:translate(2px)}.hero-card__ring-area{z-index:2;flex-shrink:0;justify-content:center;align-items:center;padding:2rem 3rem 2rem 0;display:flex;position:relative}.welcome-hero{background:var(--surface);border:1px solid color-mix(in srgb,var(--border)40%,transparent);border-radius:16px;flex-direction:column;justify-content:center;min-height:200px;padding:3rem;display:flex;position:relative;overflow:hidden}.welcome-hero__wash{background:radial-gradient(ellipse at 10% 50%,color-mix(in srgb,var(--accent)8%,transparent)0%,transparent 50%),radial-gradient(ellipse at 90% 50%,color-mix(in srgb,var(--status-complete)6%,transparent)0%,transparent 50%);pointer-events:none;position:absolute;inset:0}.welcome-hero__content{z-index:1;max-width:520px;position:relative}.welcome-hero__eyebrow{font-family:var(--font-code,"Fira Code",monospace);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem;font-size:.625rem}.welcome-hero__title{font-family:var(--font-display,"Sora",system-ui);color:var(--text-primary);letter-spacing:-.02em;margin-bottom:.75rem;font-size:1.625rem;font-weight:700;line-height:1.2}.welcome-hero__body{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);margin-bottom:1.5rem;font-size:.9375rem;line-height:1.6}.welcome-hero__actions{align-items:center;gap:1.25rem;display:flex}.welcome-hero__cta{font-family:var(--font-display,"Sora",system-ui);letter-spacing:.02em;color:var(--text-primary);background:color-mix(in srgb,var(--accent)12%,transparent);border:1px solid color-mix(in srgb,var(--accent)25%,transparent);border-radius:8px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.8125rem;font-weight:600;text-decoration:none;transition:background .2s,border-color .2s;display:inline-flex}.welcome-hero__cta:hover{background:color-mix(in srgb,var(--accent)20%,transparent);border-color:color-mix(in srgb,var(--accent)40%,transparent)}.welcome-hero__cta svg{width:14px;height:14px}.welcome-hero__hint{font-family:var(--font-code,"Fira Code",monospace);color:color-mix(in srgb,var(--text-muted)70%,transparent);letter-spacing:.04em;font-size:.6875rem}.library__rec-card{color:var(--text-muted);border-left:2px solid color-mix(in srgb,var(--accent)40%,transparent);border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:1rem;padding:.75rem 1.25rem;text-decoration:none;transition:color .2s,border-color .2s;display:flex}.library__rec-card:hover{color:var(--text-primary);border-left-color:var(--accent)}.library__rec-card-text{font-family:var(--font-body,"DM Sans",system-ui);letter-spacing:.01em;font-size:.8125rem}.library__rec-card svg{opacity:.5;transition:opacity .2s,transform .2s}.library__rec-card:hover svg{opacity:1;transform:translate(2px)}.course-id-card{background:var(--card-surface);border:1px solid var(--card-border);border-top-color:var(--card-border-top);cursor:pointer;border-radius:12px;flex-direction:column;transition:border-color .3s,box-shadow .4s;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff12,inset 0 -2px 5px #0000001a,0 1px 3px #0000001a}.course-id-card:hover{border-color:color-mix(in srgb,var(--card-accent,var(--accent))18%,transparent);box-shadow:inset 0 1px 0 #ffffff1a,inset 0 -2px 5px #0000001f,0 0 30px color-mix(in srgb,var(--card-accent,var(--accent))8%,transparent),0 2px 12px #0000002e;transform:translateY(-1px)}.course-id-card:before{content:"";border-radius:inherit;z-index:3;pointer-events:none;background:linear-gradient(#ffffff0a 0%,#0000 50%,#00000008 100%);position:absolute;inset:0}.course-id-card__stripe{background:var(--card-accent,var(--accent));z-index:2;width:3px;position:absolute;top:0;bottom:0;left:0}.course-id-card__wash{background:radial-gradient(ellipse at -10% 50%,color-mix(in srgb,var(--card-accent,var(--accent))6%,transparent)0%,transparent 50%);pointer-events:none;z-index:0;position:absolute;inset:0}.course-id-card__body{z-index:1;flex-direction:column;flex:1;padding:1.25rem 1.25rem 1rem 1.5rem;display:flex;position:relative}.course-id-card__header{justify-content:space-between;align-items:flex-start;margin-bottom:.75rem;display:flex}.course-id-card__name{color:var(--text-primary);letter-spacing:-.01em;font-size:1rem;font-weight:700;line-height:1.25}.course-id-card__version{font-family:var(--font-code,"Fira Code",monospace);letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb,var(--card-accent,var(--accent))70%,var(--text-muted));margin-top:.375rem;font-size:.5625rem}.course-id-card__footer{z-index:1;border-top:1px solid #ffffff0d;justify-content:space-between;align-items:center;padding:.75rem 1.25rem .75rem 1.5rem;display:flex;position:relative}.course-id-card__stats{font-family:var(--font-code,"Fira Code",monospace);color:var(--text-muted);letter-spacing:.02em;font-size:.6875rem}.course-id-card__stats strong{color:var(--card-accent,var(--accent));font-weight:600}.course-id-card__action{font-family:var(--font-body,"DM Sans",system-ui);color:var(--card-accent,var(--accent));letter-spacing:.02em;opacity:.8;align-items:center;gap:.25rem;font-size:.75rem;font-weight:600;transition:opacity .2s;display:flex}.course-id-card:hover .course-id-card__action{opacity:1}.course-id-card__action svg{width:12px;height:12px;transition:transform .2s}.course-id-card:hover .course-id-card__action svg{transform:translate(2px)}.library__remove-btn{font-family:var(--font-code,"Fira Code",monospace);letter-spacing:.04em;color:var(--text-muted);border:1px solid color-mix(in srgb,var(--text-muted)20%,transparent);cursor:pointer;opacity:0;background:0 0;border-radius:100px;align-items:center;gap:.25rem;padding:.2rem .6rem;font-size:.6rem;transition:opacity .2s,color .15s,border-color .15s;display:inline-flex}.course-id-card:hover .library__remove-btn{opacity:.7}.library__remove-btn:hover{color:var(--status-error,#e55);border-color:color-mix(in srgb,var(--status-error,#e55)35%,transparent);opacity:1!important}.library__remove-btn svg{flex-shrink:0;width:11px;height:11px}.collection-muted{background:var(--card-surface);border:1px solid var(--card-border);border-top-color:var(--card-border-top);cursor:pointer;border-radius:12px;flex-direction:column;transition:border-color .25s,background .25s,box-shadow .25s;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0d,inset 0 -2px 5px #00000014,0 1px 3px #00000014}.collection-muted:hover{border-color:color-mix(in srgb,var(--border)30%,transparent);background:color-mix(in srgb,var(--surface)60%,transparent);transform:translateY(-1px);box-shadow:inset 0 1px #ffffff14,inset 0 -2px 5px #0000001a,0 2px 12px #00000026}.collection-muted:before{content:"";border-radius:inherit;z-index:1;pointer-events:none;background:linear-gradient(#ffffff08 0%,#0000 50%,#00000005 100%);position:absolute;inset:0}.collection-muted__body{flex-direction:column;flex:1;padding:1.25rem;display:flex}.collection-muted__badge{font-family:var(--font-code,"Fira Code",monospace);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);background:color-mix(in srgb,var(--border)30%,transparent);border-radius:4px;align-self:flex-start;margin-bottom:.75rem;padding:.125rem .5rem;font-size:.5625rem;font-weight:500;display:inline-flex}.collection-muted__name{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-primary);margin-bottom:.25rem;font-size:.9375rem;font-weight:600;line-height:1.3}.collection-muted__author{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);margin-bottom:auto;font-size:.8125rem}.collection-muted__stats{border-top:1px solid color-mix(in srgb,var(--border)15%,transparent);font-family:var(--font-code,"Fira Code",monospace);color:color-mix(in srgb,var(--text-muted)70%,transparent);letter-spacing:.02em;align-items:center;gap:1rem;margin-top:1rem;padding-top:.75rem;font-size:.6875rem;display:flex}.collection-muted__stats svg{opacity:.5;width:12px;height:12px}.catalog-banner{background:color-mix(in srgb,var(--surface)50%,transparent);border:1px solid var(--card-border);border-top-color:var(--card-border-top);cursor:pointer;border-radius:16px;justify-content:space-between;align-items:center;gap:2rem;padding:2.5rem 3rem;transition:border-color .3s,box-shadow .4s;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0d,inset 0 -2px 5px #00000014,0 1px 3px #00000014}.catalog-banner:hover{border-color:color-mix(in srgb,var(--accent)18%,transparent);box-shadow:inset 0 1px 0 #ffffff12,inset 0 -2px 5px #0000001a,0 0 30px color-mix(in srgb,var(--accent)6%,transparent)}.catalog-banner:before{content:"";border-radius:inherit;z-index:1;pointer-events:none;background:linear-gradient(#ffffff08 0%,#0000 50%,#00000005 100%);position:absolute;inset:0}.catalog-banner__wash{background:radial-gradient(ellipse at 100% 100%,color-mix(in srgb,var(--accent)6%,transparent)0%,transparent 50%);pointer-events:none;position:absolute;inset:0}.catalog-banner__text{z-index:1;position:relative}.catalog-banner__eyebrow{font-family:var(--font-code,"Fira Code",monospace);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:.5rem;font-size:.625rem}.catalog-banner__title{font-family:var(--font-display,"Sora",system-ui);color:var(--text-primary);letter-spacing:-.01em;margin-bottom:.375rem;font-size:1.125rem;font-weight:600}.catalog-banner__description{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);font-size:.8125rem;line-height:1.5}.catalog-banner__cta{z-index:1;font-family:var(--font-body,"DM Sans",system-ui);letter-spacing:.02em;color:var(--text-primary);background:color-mix(in srgb,var(--accent)12%,transparent);border:1px solid color-mix(in srgb,var(--accent)25%,transparent);white-space:nowrap;cursor:pointer;border-radius:8px;flex-shrink:0;align-items:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.8125rem;font-weight:600;transition:background .2s,border-color .2s;display:flex;position:relative}.catalog-banner__cta:hover{background:color-mix(in srgb,var(--accent)20%,transparent);border-color:color-mix(in srgb,var(--accent)40%,transparent)}.catalog-banner__cta svg{width:14px;height:14px;transition:transform .2s}.catalog-banner:hover .catalog-banner__cta svg{transform:translate(3px)}.library__generate-btn{font-family:var(--font-body,"DM Sans",system-ui);letter-spacing:.02em;color:var(--text-muted);border:1px solid color-mix(in srgb,var(--border)40%,transparent);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:.375rem;padding:.375rem .875rem;font-size:.75rem;font-weight:600;transition:color .2s,border-color .2s,background .2s;display:inline-flex}.library__generate-btn:hover{color:var(--accent);border-color:color-mix(in srgb,var(--accent)40%,transparent);background:color-mix(in srgb,var(--accent)6%,transparent)}.library__generate-btn svg{width:13px;height:13px}.generate-modal{flex-direction:column;gap:1.25rem;padding:2rem;display:flex;position:relative}.generate-modal__wash{background:radial-gradient(ellipse at 100% 100%,color-mix(in srgb,var(--accent)6%,transparent)0%,transparent 50%);pointer-events:none;position:absolute;inset:0}.generate-modal__eyebrow{font-family:var(--font-code,"Fira Code",monospace);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);opacity:.9;font-size:.625rem;position:relative}.generate-modal__title{font-family:var(--font-display,"Sora",system-ui);color:var(--text-primary);letter-spacing:-.01em;margin-top:-.5rem;font-size:1.125rem;font-weight:600;position:relative}.generate-modal__desc{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);font-size:.8125rem;line-height:1.6;position:relative}.generate-modal__input{font-family:var(--font-code,"Fira Code",monospace);border:1px solid color-mix(in srgb,var(--border)30%,transparent);height:2.5rem;color:var(--text-primary);background:0 0;border-radius:8px;outline:none;width:100%;padding:0 .75rem;font-size:.8125rem;transition:border-color .2s,box-shadow .2s}.generate-modal__input::placeholder{color:color-mix(in srgb,var(--text-muted)50%,transparent)}.generate-modal__input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent)12%,transparent)}.generate-modal__input:disabled{opacity:.5}.generate-modal__cta{width:100%;font-family:var(--font-body,"DM Sans",system-ui);letter-spacing:.02em;color:var(--text-primary);background:color-mix(in srgb,var(--accent)12%,transparent);border:1px solid color-mix(in srgb,var(--accent)25%,transparent);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.8125rem;font-weight:600;transition:background .2s,border-color .2s;display:flex;position:relative}.generate-modal__cta:hover:not(:disabled){background:color-mix(in srgb,var(--accent)20%,transparent);border-color:color-mix(in srgb,var(--accent)40%,transparent)}.generate-modal__cta:disabled{opacity:.5;pointer-events:none}.generate-modal__cta--sent{opacity:1;background:color-mix(in srgb,var(--status-complete,#22c55e)12%,transparent);border-color:color-mix(in srgb,var(--status-complete,#22c55e)30%,transparent);color:var(--status-complete,#22c55e)}.generate-modal__cta svg{width:14px;height:14px}.generate-modal__hint{font-family:var(--font-code,"Fira Code",monospace);color:color-mix(in srgb,var(--text-muted)70%,transparent);letter-spacing:.02em;font-size:.6875rem}.textbook-modal__dropzone{border:1.5px dashed color-mix(in srgb,var(--border)50%,transparent);min-height:120px;color:var(--text-muted);font-family:var(--font-body,"DM Sans",system-ui);cursor:pointer;background:0 0;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;font-size:.8125rem;transition:border-color .2s,background .2s,color .2s;display:flex;position:relative}.textbook-modal__dropzone:hover{border-color:color-mix(in srgb,var(--accent)40%,transparent);background:color-mix(in srgb,var(--accent)4%,transparent)}.textbook-modal__dropzone--active{border-color:var(--accent);background:color-mix(in srgb,var(--accent)8%,transparent);color:var(--accent)}.textbook-modal__dropzone--has-file{border-style:solid;border-color:color-mix(in srgb,var(--accent)30%,transparent);background:color-mix(in srgb,var(--accent)4%,transparent)}.textbook-modal__dropzone svg{opacity:.6;width:20px;height:20px}.textbook-modal__file-info{color:var(--text-primary);align-items:center;gap:.75rem;display:flex}.textbook-modal__file-info svg{color:var(--accent);opacity:1;flex-shrink:0}.textbook-modal__file-name{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-primary);word-break:break-all;font-size:.8125rem;font-weight:600;line-height:1.3}.textbook-modal__file-size{font-family:var(--font-code,"Fira Code",monospace);color:var(--text-muted);letter-spacing:.02em;font-size:.6875rem}.generation-indicator{font-family:var(--font-body,"DM Sans",system-ui);letter-spacing:.02em;background:0 0;border:1px solid #0000;border-radius:9999px;align-items:center;gap:.375rem;padding:.25rem .75rem;font-size:.75rem;font-weight:600;transition:color .2s,border-color .2s,background .2s;display:inline-flex}.generation-indicator--running{color:var(--accent);border-color:color-mix(in srgb,var(--accent)30%,transparent);background:color-mix(in srgb,var(--accent)8%,transparent)}.generation-indicator--stale{color:#eab308;background:#eab30814;border-color:#eab3084d}.generation-indicator--complete{color:var(--status-complete);border-color:color-mix(in srgb,var(--status-complete)30%,transparent);background:color-mix(in srgb,var(--status-complete)8%,transparent)}.generation-indicator--complete:hover{border-color:color-mix(in srgb,var(--status-complete)50%,transparent);background:color-mix(in srgb,var(--status-complete)14%,transparent)}.generation-indicator--error{color:var(--status-error);border-color:color-mix(in srgb,var(--status-error)30%,transparent);background:color-mix(in srgb,var(--status-error)8%,transparent)}.generation-indicator--error:hover{border-color:color-mix(in srgb,var(--status-error)50%,transparent);background:color-mix(in srgb,var(--status-error)14%,transparent)}.generation-indicator__label{white-space:nowrap}.topbar-header{z-index:40;grid-template-columns:1fr auto 1fr;align-items:center;height:56px;padding:0 24px;display:grid;position:sticky;top:0}.topbar-header.glass{border:none;border-bottom:1px solid var(--glass-border-light)}.topbar-left{justify-self:start;align-items:center;display:flex}.topbar-right{justify-self:end;align-items:center;gap:8px;display:flex}.topbar-brand{color:var(--text-primary);cursor:pointer;background:0 0;border:none;justify-self:center;align-items:center;gap:8px;padding:0;text-decoration:none;transition:color .2s;display:flex}.topbar-brand:hover{color:var(--accent)}.topbar-brand:hover svg{filter:drop-shadow(0 0 6px color-mix(in srgb,var(--accent)40%,transparent))}.topbar-brand svg{flex-shrink:0;transition:filter .2s}.topbar-brand span{font-family:var(--font-display,"Sora",system-ui);letter-spacing:-.01em;font-size:15px;font-weight:600;line-height:1}.topbar-tabs{background:color-mix(in srgb,var(--surface)40%,transparent);border:1px solid var(--card-border);border-top-color:var(--card-border-top);border-radius:10px;align-items:center;gap:2px;padding:3px;display:flex;box-shadow:inset 0 1px #ffffff0d,inset 0 -1px 2px #0000000f}.topbar-tab{font-family:var(--font-body,"DM Sans",system-ui);letter-spacing:.01em;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:5px 14px;font-size:.8125rem;font-weight:500;transition:color .2s,background .2s;position:relative}.topbar-tab:hover{color:var(--text-primary)}.topbar-tab--active{color:var(--text-primary);background:#ffffff0f;font-weight:600}.progress-ring__track{fill:none;stroke:color-mix(in srgb,var(--border)30%,transparent)}.progress-ring__fill{fill:none;stroke-linecap:round;transition:stroke-dashoffset .8s cubic-bezier(.4,0,.2,1)}.progress-ring__text{font-family:var(--font-code,"Fira Code",monospace);dominant-baseline:central;text-anchor:middle;font-weight:600}@keyframes library-fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.library-animate{animation:.5s cubic-bezier(.16,1,.3,1) both library-fade-up}.library-animate--delay-1{animation-delay:50ms}.library-animate--delay-2{animation-delay:.1s}.library-animate--delay-3{animation-delay:.15s}.library-animate--delay-4{animation-delay:.2s}.library-animate--delay-5{animation-delay:.25s}.library-animate--delay-6{animation-delay:.3s}.library__empty{border:1px dashed color-mix(in srgb,var(--border)30%,transparent);text-align:center;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:3rem 2rem;display:flex}.library__empty-icon{background:color-mix(in srgb,var(--surface-muted,var(--surface))80%,transparent);width:48px;height:48px;color:var(--text-muted);border-radius:12px;justify-content:center;align-items:center;margin-bottom:1rem;display:flex}.library__empty-title{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-primary);margin-bottom:.375rem;font-size:.9375rem;font-weight:600}.library__empty-text{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);max-width:280px;font-size:.8125rem}.topbar-back{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);align-items:center;gap:.5rem;font-size:.8125rem;font-weight:500;text-decoration:none;transition:color .2s;display:flex}.topbar-back:hover{color:var(--text-primary)}.topbar-back__icon{width:16px;height:16px;transition:transform .2s}.topbar-back:hover .topbar-back__icon{transform:translate(-2px)}.detail-header{margin-bottom:2rem}.detail-header__badge{font-family:var(--font-code,"Fira Code",monospace);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);background:color-mix(in srgb,var(--border)30%,transparent);border-radius:4px;align-self:flex-start;margin-bottom:.75rem;padding:.125rem .5rem;font-size:.5625rem;font-weight:500;display:inline-flex}.detail-header__title{font-family:var(--font-display,"Sora",system-ui);letter-spacing:-.02em;color:var(--text-primary);margin-bottom:.5rem;font-size:1.75rem;font-weight:700;line-height:1.15}.detail-header__subtitle{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);margin-bottom:1.25rem;font-size:.875rem;line-height:1.5}.detail-header__row{justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.detail-header__stats{font-family:var(--font-code,"Fira Code",monospace);color:var(--text-muted);letter-spacing:.02em;font-size:.6875rem}.detail-header__actions{align-items:center;gap:.75rem;display:flex}.detail-header__cta{font-family:var(--font-body,"DM Sans",system-ui);letter-spacing:.02em;color:var(--background);background:var(--accent);cursor:pointer;border:none;border-radius:8px;align-items:center;gap:.5rem;padding:.625rem 1.5rem;font-size:.8125rem;font-weight:600;text-decoration:none;transition:opacity .2s,transform .15s;display:inline-flex}.detail-header__cta:hover{opacity:.9;transform:translateY(-1px)}.detail-header__cta svg{width:14px;height:14px;transition:transform .2s}.detail-header__cta:hover svg{transform:translate(2px)}.detail-header__btn{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);border:1px solid color-mix(in srgb,var(--border)40%,transparent);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:.375rem;padding:.5rem 1rem;font-size:.8125rem;font-weight:500;transition:color .2s,border-color .2s,background .2s;display:inline-flex}.detail-header__btn:hover{color:var(--text-primary);border-color:color-mix(in srgb,var(--border)70%,transparent);background:color-mix(in srgb,var(--border)10%,transparent)}.detail-header__btn--danger{color:color-mix(in srgb,var(--status-error)80%,var(--text-muted));border-color:color-mix(in srgb,var(--status-error)30%,transparent)}.detail-header__btn--danger:hover{color:var(--status-error);border-color:color-mix(in srgb,var(--status-error)50%,transparent);background:color-mix(in srgb,var(--status-error)8%,transparent)}.detail-header__btn svg{width:14px;height:14px}.detail-meta{border-bottom:1px solid color-mix(in srgb,var(--border)20%,transparent);flex-wrap:wrap;gap:1.5rem;margin-bottom:2rem;padding-bottom:1.5rem;display:flex}.detail-meta__field{flex-direction:column;gap:.25rem;display:flex}.detail-meta__label{font-family:var(--font-code,"Fira Code",monospace);text-transform:uppercase;letter-spacing:.1em;color:color-mix(in srgb,var(--text-muted)70%,transparent);font-size:.625rem;font-weight:500}.detail-meta__value{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);font-size:.8125rem}.detail-meta__tags{flex-wrap:wrap;gap:.375rem;display:flex}.detail-meta__tag{font-family:var(--font-code,"Fira Code",monospace);color:var(--accent);background:color-mix(in srgb,var(--accent)10%,transparent);letter-spacing:.02em;border-radius:4px;padding:.125rem .625rem;font-size:.6875rem;font-weight:500}.detail-publish{border:1px solid var(--glass-border-light);background:var(--glass-surface-light);-webkit-backdrop-filter:blur(var(--glass-blur-light))saturate(var(--glass-saturate))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur-light))saturate(var(--glass-saturate))brightness(var(--glass-brightness));box-shadow:var(--glass-shadow);border-radius:12px;justify-content:space-between;align-items:center;margin-bottom:2rem;padding:1rem 1.25rem;display:flex;position:relative}.detail-publish:before{content:"";border-radius:inherit;z-index:1;pointer-events:none;background:linear-gradient(135deg,#ffffff12 0%,#ffffff05 40%,#0000 70%);position:absolute;inset:0}.detail-publish:after{content:"";border-radius:inherit;z-index:1;pointer-events:none;background:radial-gradient(circle at 15% 15%,#ffffff0a,#0000 50%),radial-gradient(circle at 85% 85%,#ffffff05,#0000 50%);position:absolute;inset:0}.detail-publish__info{align-items:center;gap:.75rem;display:flex}.detail-publish__icon{width:18px;height:18px}.detail-publish__icon--public{color:var(--status-complete)}.detail-publish__icon--draft{color:var(--text-muted)}.detail-publish__title{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-primary);font-size:.8125rem;font-weight:600}.detail-publish__desc{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);font-size:.6875rem}.detail-toc{border:1px solid var(--glass-border-light);background:var(--glass-surface-light);-webkit-backdrop-filter:blur(var(--glass-blur-light))saturate(var(--glass-saturate))brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur-light))saturate(var(--glass-saturate))brightness(var(--glass-brightness));box-shadow:var(--glass-shadow);border-radius:12px;margin-bottom:2rem;position:relative;overflow:hidden}.detail-toc:before{content:"";border-radius:inherit;z-index:1;pointer-events:none;background:linear-gradient(135deg,#ffffff12 0%,#ffffff05 40%,#0000 70%);position:absolute;inset:0}.detail-toc:after{content:"";border-radius:inherit;z-index:1;pointer-events:none;background:radial-gradient(circle at 15% 15%,#ffffff0a,#0000 50%),radial-gradient(circle at 85% 85%,#ffffff05,#0000 50%);position:absolute;inset:0}.detail-toc__header{border-bottom:1px solid color-mix(in srgb,var(--border)15%,transparent);align-items:baseline;padding:1rem 1.25rem;display:flex}.detail-toc__row{border-bottom:1px solid color-mix(in srgb,var(--border)10%,transparent);align-items:center;gap:1rem;padding:.75rem 1.25rem;transition:background .2s;display:flex}.detail-toc__row:last-child{border-bottom:none}.detail-toc__row:hover{background:color-mix(in srgb,var(--surface)90%,var(--border))}.detail-toc__row--depth-0{padding-left:1.25rem}.detail-toc__row--depth-1{padding-left:calc(1.25rem + 24px)}.detail-toc__row--depth-2{padding-left:calc(1.25rem + 48px)}.detail-toc__row--depth-3{padding-left:calc(1.25rem + 72px)}.detail-toc__row--depth-4{padding-left:calc(1.25rem + 96px)}.detail-toc__position{font-family:var(--font-code,"Fira Code",monospace);color:var(--text-muted);flex-shrink:0;min-width:3rem;font-size:.75rem}.detail-toc__title{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-primary);flex:1;font-size:.875rem;font-weight:500}.detail-toc__count{font-family:var(--font-code,"Fira Code",monospace);color:color-mix(in srgb,var(--text-muted)70%,transparent);flex-shrink:0;font-size:.6875rem}.detail-toc__study{font-family:var(--font-body,"DM Sans",system-ui);color:var(--accent);opacity:0;flex-shrink:0;align-items:center;gap:.25rem;font-size:.75rem;font-weight:600;text-decoration:none;transition:opacity .2s;display:flex}.detail-toc__row:hover .detail-toc__study{opacity:1}.detail-toc__study svg{width:12px;height:12px;transition:transform .2s}.detail-toc__row:hover .detail-toc__study svg{transform:translate(2px)}.detail-toc__empty{text-align:center;font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);padding:2rem 1.25rem;font-size:.8125rem}.detail-toc__add-btn{width:100%;font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);border:none;border-top:1px dashed color-mix(in srgb,var(--border)25%,transparent);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:.375rem;padding:.75rem 1.25rem;font-size:.8125rem;font-weight:500;transition:color .2s,background .2s;display:flex}.detail-toc__add-btn:hover{color:var(--accent);background:color-mix(in srgb,var(--accent)5%,transparent)}.detail-toc__add-btn svg{width:14px;height:14px}.detail-toc__edit-input{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-primary);border:none;border-bottom:1px solid color-mix(in srgb,var(--accent)40%,transparent);background:0 0;outline:none;flex:1;padding:.125rem 0;font-size:.875rem;font-weight:500}.detail-toc__edit-input:focus{border-bottom-color:var(--accent)}.detail-toc__delete-btn{width:24px;height:24px;color:var(--text-muted);cursor:pointer;opacity:.5;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .2s,color .2s,background .2s;display:flex}.detail-toc__delete-btn:hover{opacity:1;color:var(--status-error);background:color-mix(in srgb,var(--status-error)10%,transparent)}.detail-toc__delete-btn svg{width:14px;height:14px}.detail-danger{border:1px solid color-mix(in srgb,var(--status-error)30%,transparent);background:color-mix(in srgb,var(--status-error)5%,transparent);border-radius:12px;margin-bottom:2rem;padding:1.5rem}.detail-danger__title{font-family:var(--font-display,"Sora",system-ui);color:color-mix(in srgb,var(--status-error)80%,var(--text-primary));margin-bottom:.5rem;font-size:.875rem;font-weight:600}.detail-danger__text{font-family:var(--font-body,"DM Sans",system-ui);color:var(--text-muted);margin-bottom:1rem;font-size:.8125rem;line-height:1.5}@media (max-width:768px){.detail-header__row{flex-direction:column;align-items:flex-start}.detail-meta{flex-direction:column}.detail-toc__row{padding-right:.75rem}.detail-toc__study{opacity:1}.hero-card{flex-direction:column;min-height:auto}.hero-card__ring-area{justify-content:flex-start;padding:0 2rem 2rem}.hero-card__content{padding:2rem 2rem 1rem}.catalog-banner{flex-direction:column;align-items:flex-start;padding:2rem}.library__grid{grid-template-columns:1fr}}
