:root{--lh-teal:#0F5257;--lh-teal-700:#0A3B3F;--lh-coral:#E07A5F;--lh-coral-600:#C9603F;--lh-sage:#81B29A;--lh-cream:#FBF7F2;--lh-sand:#F2E9DE;--lh-ink:#1D2B2F;--lh-slate:#4A5A5E;--lh-font-display:"Fraunces",Georgia,serif;--lh-font-body:"Inter",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;--lh-radius:14px}*{box-sizing:border-box}body,html{margin:0}body{background:var(--lh-cream);color:var(--lh-ink);font-family:var(--lh-font-body);font-size:17px;line-height:1.6}h1,h2,h3{font-family:var(--lh-font-display);font-weight:600;line-height:1.15}a{color:var(--lh-teal)}.wrap{max-width:1080px;margin:0 auto;padding:0 20px}header.site{display:flex;align-items:center;justify-content:space-between;padding:20px 0}header.site img{height:48px;width:auto}.btn{display:inline-block;padding:12px 22px;border-radius:var(--lh-radius);background:var(--lh-teal);color:var(--lh-cream);text-decoration:none}.btn:hover{background:var(--lh-teal-700)}.btn.ghost{background:transparent;color:var(--lh-teal);border:2px solid var(--lh-teal)}.hero{padding:64px 0 48px}.hero h1{font-size:clamp(2.2rem,5vw,3.6rem);margin:0 0 16px;max-width:18ch}.hero h1 em{color:var(--lh-coral-600);font-style:normal}.hero p{font-size:1.15rem;color:var(--lh-slate);max-width:56ch}.cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:20px;gap:20px;padding:32px 0 64px}.card{background:var(--lh-sand);border-radius:var(--lh-radius);padding:24px}.card h3{margin:8px 0;font-size:1.3rem}.card p{margin:0;color:var(--lh-slate)}.dot{width:12px;height:12px;border-radius:50%;display:inline-block}footer{border-top:1px solid var(--lh-sand);padding:24px 0;color:var(--lh-slate);font-size:.9rem}.btn{border:2px solid var(--lh-teal);cursor:pointer;font:inherit;font-weight:600;text-align:center}.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--lh-coral);outline-offset:2px}.btn[disabled]{opacity:.55;cursor:not-allowed}.btn.block{display:flex;width:100%;justify-content:center;align-items:center;gap:10px}.btn.small{padding:6px 12px;font-size:.9rem}.btn.google{background:#fff;color:var(--lh-ink);border-color:#D9D2C7}.btn.google:hover{background:var(--lh-sand)}.hint,.muted{color:var(--lh-slate)}.hint{font-size:.85rem;margin:-6px 0 4px}.hint.center{text-align:center;margin-top:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.auth-shell{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:40px 16px;gap:24px}.auth-logo img{height:52px;width:auto}.auth-card{width:100%;max-width:420px;background:#fff;border:1px solid var(--lh-sand);border-radius:18px;padding:32px 28px;box-shadow:0 10px 30px rgba(15,82,87,.07)}.auth-card h1{font-size:1.9rem;margin:0 0 6px}.auth-card .sub{color:var(--lh-slate);margin:0 0 22px}.form{display:flex;flex-direction:column;gap:8px}.form label{font-weight:600;font-size:.92rem}.form input,.role-form select{font:inherit;padding:11px 13px;border:1.5px solid #d9d2c7;border-radius:10px;background:#fff;color:var(--lh-ink)}.form input:focus{border-color:var(--lh-teal)}.form .btn{margin-top:10px}.label-row{display:flex;justify-content:space-between;align-items:baseline;font-size:.92rem}.alert{padding:10px 12px;border-radius:10px;font-size:.93rem;margin:0 0 8px}.alert.error{background:#FBE9E4;color:#8A2E17}.alert.ok{background:#E5F1EA;color:#1F5A3C}.divider{display:flex;align-items:center;gap:12px;color:var(--lh-slate);font-size:.85rem;margin:18px 0}.divider:after,.divider:before{content:"";flex:1 1;height:1px;background:var(--lh-sand)}.switch{text-align:center;margin:20px 0 0;font-size:.95rem}.dash{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.dash-side{background:#fff;border-right:1px solid var(--lh-sand);padding:22px 18px;display:flex;flex-direction:column;gap:24px}.dash-logo img{height:42px;width:auto}.dash-side nav{display:flex;flex-direction:column;gap:4px}.dash-side nav a{padding:9px 12px;border-radius:10px;text-decoration:none;color:var(--lh-ink);font-weight:500}.dash-side nav a:hover{background:var(--lh-sand)}.dash-user{margin-top:auto;gap:10px;font-size:.95rem}.dash-user,.dash-user>div{display:flex;flex-direction:column}.dash-user>div{gap:4px;align-items:flex-start}.dash-main{padding:32px clamp(16px,4vw,48px);min-width:0}.dash-head{margin-bottom:24px}.dash-head h1{font-size:clamp(1.7rem,3vw,2.3rem);margin:0 0 6px}.eyebrow{text-transform:uppercase;letter-spacing:.14em;color:var(--lh-coral-600);margin:0 0 6px}.eyebrow,.role{font-size:.75rem;font-weight:600}.role{display:inline-block;padding:2px 9px;border-radius:999px}.role-admin{background:var(--lh-teal);color:var(--lh-cream)}.role-instructor{background:#F8DDD3;color:#7A3E3A}.role-learner{background:#DCEDE3;color:#23533A}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:14px;gap:14px;margin-bottom:22px}.stat{background:#fff;border:1px solid var(--lh-sand);border-radius:var(--lh-radius);padding:16px 18px;display:flex;flex-direction:column;gap:4px}.stat span{color:var(--lh-slate);font-size:.88rem}.stat strong{font-family:var(--lh-font-display);font-size:2rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.panel{background:#fff;border:1px solid var(--lh-sand);border-radius:var(--lh-radius);padding:20px 22px;min-width:0}.panel h2{font-size:1.25rem;margin:0 0 8px}.panel.empty p{color:var(--lh-slate)}.panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:16px;gap:16px}.list{list-style:none;margin:8px 0 0;padding:0}.list li{justify-content:space-between;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--lh-sand)}.list li,.row-end{display:flex;gap:12px}.row-end{align-items:center}.table-wrap{overflow-x:auto;background:#fff;border:1px solid var(--lh-sand);border-radius:var(--lh-radius)}table{width:100%;border-collapse:collapse;font-size:.95rem}td,th{text-align:left;padding:12px 14px;border-bottom:1px solid var(--lh-sand);white-space:nowrap}th{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--lh-slate)}td.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.role-form{display:flex;gap:8px;align-items:center}.role-form select{padding:6px 10px;text-transform:capitalize}@media (max-width:760px){.dash{grid-template-columns:1fr}.dash-side{border-right:0;border-bottom:1px solid var(--lh-sand);align-items:center;gap:12px}.dash-side,.dash-side nav{flex-direction:row;flex-wrap:wrap}.dash-user{margin-top:0;margin-left:auto;flex-direction:row;align-items:center}}.role-master{background:#2B1E3F;color:#F3E9FF}.head-row{align-items:flex-end;gap:16px}.head-row,.toolbar{display:flex;justify-content:space-between;flex-wrap:wrap}.toolbar{align-items:center;gap:12px;margin-bottom:14px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{padding:6px 12px;border-radius:999px;background:#fff;border:1px solid var(--lh-sand);text-decoration:none;color:var(--lh-ink);font-size:.9rem;font-weight:500;display:inline-flex;gap:6px;align-items:center}.chip.on{background:var(--lh-teal);border-color:var(--lh-teal);color:var(--lh-cream)}.chip-n{font-size:.75rem;opacity:.75;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.search{display:flex;gap:6px}.search input{font:inherit;padding:6px 10px;border:1.5px solid #d9d2c7;border-radius:10px;min-width:0;width:220px;max-width:100%}.status{font-size:.8rem;font-weight:600}.status.on{color:#23533A}.status.off{color:#8A2E17}tr.is-disabled td{opacity:.6}.small-text{font-size:.85rem}.badges{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0}.manage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:16px;gap:16px}.manage-grid .wide{grid-column:1/-1}.panel.narrow{max-width:520px}.form select,.panel .form select{font:inherit;padding:10px 12px;border:1.5px solid #d9d2c7;border-radius:10px;background:#fff;text-transform:capitalize}.btn-row{display:flex;gap:10px;flex-wrap:wrap}.inline-form{display:flex;flex-direction:column;gap:8px}.btn.warn{background:#B4532A;border-color:#B4532A}.btn.danger{background:#8A2E17;border-color:#8A2E17}.panel.danger{border-color:#F0C9BD}@media (max-width:760px){.search input{width:100%}.search{flex:1 1}}textarea{font:inherit;padding:11px 13px;border:1.5px solid #d9d2c7;border-radius:10px;background:#fff;color:var(--lh-ink);resize:vertical;line-height:1.55;width:100%}textarea:focus-visible{outline:3px solid var(--lh-coral);outline-offset:2px}.add-row select,.form select{text-transform:none}.lede{max-width:65ch}.crumbs{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.alert.note{background:#EEF4F4;color:var(--lh-teal-700)}.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:600}.pill-draft{background:#F2E9DE;color:#6B5A45}.pill-published{background:#DCEDE3;color:#23533A}.exam-tag{font-size:.75rem;font-weight:700;letter-spacing:.08em;color:var(--lh-teal);text-transform:uppercase}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:16px;gap:16px}.course-card{background:#fff;border:1px solid var(--lh-sand);border-radius:var(--lh-radius);padding:20px;display:flex;flex-direction:column;gap:8px;min-width:0}.course-card h3{margin:0;font-size:1.3rem}.course-card .clamp{margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-card-top{display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:22px}.course-meta{display:flex;gap:14px;flex-wrap:wrap;margin:4px 0 6px;font-size:.88rem;color:var(--lh-slate);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.course-card .btn-row{margin-top:auto}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--lh-sand);margin-bottom:20px;overflow-x:auto}.tabs a{padding:10px 14px;text-decoration:none;color:var(--lh-slate);font-weight:600;border-bottom:3px solid transparent;white-space:nowrap}.tabs a[aria-current=page]{color:var(--lh-teal);border-bottom-color:var(--lh-teal)}.builder{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-gap:18px;gap:18px;align-items:start}.builder-side,.outline{display:flex;flex-direction:column;gap:14px;min-width:0}.section-head{justify-content:space-between}.section-head,.section-head h2{display:flex;align-items:center;gap:10px}.section-head h2{margin:0}.section-num,.step-num{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--lh-teal);color:var(--lh-cream);font-family:var(--lh-font-body);font-size:.8rem;font-weight:700;flex:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.step-num{margin-right:8px;background:var(--lh-coral-600)}.learn-outline .section-num{margin-right:10px}.learn-outline h2{display:flex;align-items:center}.topic-list{list-style:none;margin:10px 0;padding:0}.topic-list li{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--lh-sand);flex-wrap:wrap}.topic-list li>a{font-weight:600;flex:1 1;min-width:0}.steps-done{font-size:.8rem;color:var(--lh-slate);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.steps-done.full{color:#23533A;font-weight:600}.move{display:inline-flex;gap:4px;align-items:center}.btn.icon{padding:2px 9px;font-size:.95rem;background:transparent;color:var(--lh-teal);border:1.5px solid var(--lh-sand);border-radius:8px}.btn.icon:hover{border-color:var(--lh-teal)}.add-row{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;margin-top:6px}.add-row>input:not([type=hidden]),.add-row>select{flex:1 1;min-width:180px;font:inherit;padding:8px 11px;border:1.5px solid #d9d2c7;border-radius:10px;background:#fff}.add-row>.alert{flex-basis:100%}.more{margin-top:10px}.more summary{cursor:pointer;color:var(--lh-slate);font-size:.9rem}.more[open]{display:flex;flex-direction:column;gap:10px}details.panel.more summary{font-weight:600;color:var(--lh-ink)}.steps-guide{margin:0 0 8px;padding-left:20px}.grid-2.align-start{align-items:start}.count{font-family:var(--lh-font-body);font-size:.95rem;font-weight:500}.check{display:flex;gap:8px;align-items:flex-start;font-weight:500!important}.topic-form .field-block{display:flex;flex-direction:column;gap:6px;margin-top:14px}.topic-form .field-block label{display:flex;align-items:center;font-size:1.05rem}.topic-form .field-block .hint{margin:0}.image-list{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-direction:column;gap:14px}.image-list img{width:100%;max-height:180px;object-fit:contain;background:var(--lh-sand);border-radius:10px}.image-tools{display:flex;flex-direction:column;gap:6px}.image-tools .move{flex-wrap:wrap}.topic-viewer{background:var(--lh-cream)}.tv-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:16px}.tv-head h1{margin:0;font-size:clamp(1.8rem,3.4vw,2.6rem)}.stepper{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:6px;gap:6px;margin-bottom:18px}.stepper .step{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:12px;border:1.5px solid var(--lh-sand);background:#fff;font:inherit;font-weight:600;color:var(--lh-slate);cursor:pointer;text-align:left;min-width:0}.stepper .step .step-num{margin:0;background:#D9D2C7;color:var(--lh-ink)}.stepper .step.past .step-num{background:var(--lh-sage);color:#fff}.stepper .step.on{border-color:var(--lh-teal);color:var(--lh-teal);background:#EEF4F4}.stepper .step.on .step-num{background:var(--lh-teal);color:var(--lh-cream)}.step-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tv-body{background:#fff;border:1px solid var(--lh-sand);border-radius:var(--lh-radius);padding:clamp(18px,3vw,32px);min-height:280px}.tv-step-title{margin:0 0 12px;font-size:1.5rem;color:var(--lh-teal)}.tv-foot{align-items:center;margin-top:16px}.tv-foot,.tv-topics{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.tv-topics{margin-top:18px;font-size:.92rem}.rich{max-width:72ch}.rich li,.rich p{line-height:1.7}.rich h3{font-size:1.25rem;margin:22px 0 8px}.rich h4{font-size:1.05rem;margin:18px 0 6px;font-family:var(--lh-font-body)}.rich ol,.rich ul{padding-left:22px}.rich .callout{background:#FBE9E4;border-left:4px solid var(--lh-coral-600);padding:10px 14px;border-radius:6px}.rich .callout-label{font-weight:700;color:#8A2E17;margin-right:8px}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:16px;gap:16px}.gallery figure{margin:0}.gallery button{padding:0;border:1px solid var(--lh-sand);border-radius:12px;background:var(--lh-sand);cursor:zoom-in;display:block;width:100%;overflow:hidden}.gallery img{display:block;width:100%;height:220px;object-fit:contain}.gallery figcaption{font-size:.9rem;color:var(--lh-slate);margin-top:6px}.lightbox{position:fixed;inset:0;z-index:100;background:rgba(13,30,31,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px}.lightbox img{max-width:100%;max-height:80vh;object-fit:contain;border-radius:8px;background:#fff}.lightbox p{color:#fff;margin:0}.topic-viewer.presenting{position:fixed;inset:0;z-index:60;overflow:auto;padding:28px clamp(24px,5vw,72px)}.topic-viewer.presenting .tv-head h1{font-size:clamp(2.4rem,4vw,3.4rem)}.topic-viewer.presenting .tv-body{font-size:1.35rem;border:0}.topic-viewer.presenting .rich{max-width:60ch}.topic-viewer.presenting .tv-step-title{font-size:2rem}.topic-viewer.presenting .gallery{grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}.topic-viewer.presenting .gallery img{height:340px}@media (max-width:960px){.builder{grid-template-columns:1fr}}@media (max-width:640px){.stepper{grid-template-columns:repeat(5,minmax(48px,1fr))}.stepper .step{justify-content:center;padding:8px}.stepper .step .step-label,.stepper .step.on .step-label{display:none}}