:root{--fbi-mint:#6fcab6;--fbi-teal:#00bea0;--fbi-green:#2bd681;--fbi-anthracite:#333434;--fbi-deep:#104035;--fbi-darkteal:#238c75;--fbi-purple:#6c6cbc;--bg:#f6fbfa;--card:#fff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fbi-anthracite);font-family:Calibri,Arial,sans-serif}.topbar{display:flex;align-items:center;gap:24px;padding:18px 28px;background:#fff;border-bottom:1px solid #dcecea;position:sticky;top:0;z-index:10}.logo{height:52px}.title h1{font-family:'Century Gothic',Arial,sans-serif;margin:0;font-size:28px}.title p{margin:3px 0 0;color:#59706b}.tabs{display:flex;gap:8px;padding:18px 28px;background:#fff}.tab{border:0;border-radius:999px;padding:10px 16px;background:#e6f6f2;color:var(--fbi-deep);font-weight:700;cursor:pointer}.tab.active{background:var(--fbi-teal);color:white}.layout{display:grid;grid-template-columns:320px 1fr 360px;gap:18px;padding:0 28px 28px}.panel{background:var(--card);border:1px solid #dcecea;border-radius:18px;box-shadow:0 10px 30px rgba(16,64,53,.06);padding:18px;min-height:220px}.panel h2{font-family:'Century Gothic',Arial,sans-serif;margin-top:0;color:var(--fbi-deep)}.ontology-node{padding:9px 10px;margin:6px 0;border-left:5px solid var(--fbi-mint);background:#f3fbf9;border-radius:8px;cursor:pointer}.ontology-node:hover{background:#e3f7f2}.domain-LM{border-color:var(--fbi-teal)}.domain-EM{border-color:var(--fbi-purple)}.domain-IP{border-color:var(--fbi-green)}.indent-1{margin-left:18px}.indent-2{margin-left:36px}.indent-3{margin-left:54px}.card{padding:14px;border:1px solid #e0eeee;border-radius:14px;margin-bottom:12px;background:#fff}.card h3{margin:0 0 7px;font-family:'Century Gothic',Arial,sans-serif}.badge{display:inline-block;border-radius:999px;padding:4px 8px;font-size:12px;background:#edf5f3;color:var(--fbi-deep);margin-right:4px}.status-published{background:#def8eb}.status-draft{background:#f4f1dd}.status-review,.status-submitted{background:#e8e8ff}.basket-item{display:flex;gap:8px;align-items:flex-start;padding:10px;border:1px dashed #b8d9d2;border-radius:12px;margin:8px 0;background:#fbfffe}.basket-item button,.smallbtn{border:0;background:var(--fbi-deep);color:#fff;border-radius:8px;padding:7px 9px;cursor:pointer}.smallbtn.secondary{background:var(--fbi-darkteal)}.smallbtn.light{background:#dcecea;color:var(--fbi-deep)}input,textarea,select{width:100%;border:1px solid #cbded9;border-radius:10px;padding:10px;margin:5px 0 10px;font:inherit}textarea{min-height:90px}.hidden{display:none}.hero{margin:0 28px 18px;padding:28px;border-radius:24px;background:linear-gradient(135deg,#fff 0%,#fff 55%,#333434 55%,#333434 100%);position:relative;overflow:hidden}.hero:after{content:'';position:absolute;width:260px;height:260px;border-radius:50%;right:40px;top:-120px;background:rgba(0,190,160,.22)}.hero h2{font-family:'Century Gothic',Arial,sans-serif;font-size:34px;margin:0;color:var(--fbi-deep)}.hero p{max-width:700px;line-height:1.45}.api-note{font-family:monospace;background:#f1f7f5;border-radius:10px;padding:10px}.full{grid-column:1 / -1}.table{width:100%;border-collapse:collapse}.table th,.table td{border-bottom:1px solid #e5efed;text-align:left;padding:9px}.footer{padding:20px 28px;color:#667b77}


.domain-filter,.map-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 14px}.ontology-node{cursor:pointer}.ontology-node.selected{outline:3px solid var(--fbi-purple);background:#fff}.mindmap-canvas{position:relative;min-height:680px;overflow:auto;border:1px solid rgba(51,52,52,.15);border-radius:20px;background:linear-gradient(135deg,#fff 0%,#f7fffc 55%,#f3f4fb 100%)}.mindmap-svg{position:absolute;inset:0;min-width:1500px;min-height:900px;pointer-events:none}.map-node{position:absolute;width:210px;min-height:54px;padding:10px 12px;border-radius:16px;background:white;box-shadow:0 10px 28px rgba(16,64,53,.12);border:1px solid rgba(0,190,160,.22);cursor:pointer;z-index:2}.map-node:hover,.map-node.selected{border-color:var(--fbi-purple);box-shadow:0 12px 32px rgba(108,108,188,.24);transform:translateY(-1px)}.map-node .map-title{font-family:'Century Gothic','Avenir Next',Arial,sans-serif;font-weight:700;font-size:13px;color:var(--fbi-dark)}.map-node .map-meta{font-size:11px;color:#667;margin-top:5px}.map-node.domain-LM{border-left:7px solid var(--fbi-green-main)}.map-node.domain-EM{border-left:7px solid var(--fbi-purple)}.map-node.domain-IP{border-left:7px solid var(--fbi-green-deep)}.reference-pill{display:inline-block;padding:6px 10px;border-radius:99px;background:#eefaf7;color:var(--fbi-deep);font-weight:700}#ontologySelect{max-width:100%}

/* Interactive ontology mind map */
.map-toolbar{align-items:center;position:sticky;top:88px;z-index:6;background:#fff;padding:8px 0}.toolbar-sep{width:1px;height:28px;background:#dcecea;margin:0 4px}.zoom-label{min-width:48px;text-align:center;font-weight:700;color:var(--fbi-deep)}.mindmap-canvas{height:calc(100vh - 270px);min-height:720px;overflow:hidden;cursor:grab;touch-action:none;user-select:none}.mindmap-canvas.panning{cursor:grabbing}.mindmap-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.mindmap-svg{position:absolute;left:0;top:0;pointer-events:none}.map-node{touch-action:none;cursor:grab;transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease}.map-node.dragging{cursor:grabbing;z-index:10;box-shadow:0 18px 40px rgba(16,64,53,.24);transform:none}.map-node .map-title{pointer-events:none}.map-node .map-meta{pointer-events:none}.map-node.domain-LM{border-left:7px solid var(--fbi-teal)}.map-node.domain-EM{border-left:7px solid var(--fbi-purple)}.map-node.domain-IP{border-left:7px solid var(--fbi-darkteal)}

/* Radial ontology refinement */
.mindmap-layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:16px;align-items:stretch}
.node-details{background:#fff;border:1px solid rgba(16,64,53,.16);border-radius:18px;padding:18px;box-shadow:0 10px 24px rgba(16,64,53,.08);max-height:74vh;overflow:auto}
.node-details h3{margin-top:0;color:#104035}
.mindmap-canvas{height:74vh;min-height:620px;overflow:hidden;position:relative;background:radial-gradient(circle at center, rgba(111,202,182,.18), rgba(255,255,255,.86) 38%, rgba(108,108,188,.08));border-radius:22px;border:1px solid rgba(16,64,53,.18);cursor:grab;touch-action:none}
.mindmap-canvas.panning{cursor:grabbing}
.mindmap-world{position:absolute;left:0;top:0;transform-origin:0 0}
.mindmap-svg{position:absolute;inset:0;pointer-events:none;overflow:visible}
.map-node{position:absolute;width:220px;min-height:62px;border-radius:16px;background:#fff;border:2px solid #6fcab6;box-shadow:0 10px 26px rgba(16,64,53,.12);padding:10px 13px;cursor:pointer;user-select:none;transition:box-shadow .15s, transform .15s, border-color .15s}
.map-node:hover{box-shadow:0 14px 32px rgba(16,64,53,.20);transform:translateY(-1px)}
.map-node.dragging{cursor:grabbing;box-shadow:0 18px 38px rgba(16,64,53,.26)}
.map-node.selected{border-color:#333434;outline:4px solid rgba(0,190,160,.20)}
.map-node.virtual-root{background:#333434;color:#fff;border-color:#333434;width:240px;text-align:center;cursor:default}
.map-node.domain-EM{border-color:#6c6cbc}.map-node.domain-IP{border-color:#238c75}.map-node.domain-LM{border-color:#00bea0}
.map-title{font-weight:700;font-size:.94rem;line-height:1.2;color:inherit}.map-meta{font-size:.76rem;opacity:.75;margin-top:4px}.sheet-pills{display:flex;flex-direction:column;gap:8px}.sheet-pill{border:1px solid rgba(16,64,53,.20);background:#f7fbfa;border-radius:12px;padding:10px;text-align:left;cursor:pointer}.sheet-pill:hover{background:#eaf8f5}.empty-state{padding:14px;border-radius:14px;background:#f7fbfa;border:1px dashed #6fcab6}.compact-form{display:flex;flex-direction:column;gap:8px;margin-top:16px;padding-top:14px;border-top:1px solid rgba(16,64,53,.12)}.subsheet{border-left:4px solid #6fcab6;background:#f8fbfa;border-radius:10px;padding:10px;margin:8px 0}.mini-count{display:inline-block;min-width:20px;text-align:center;border-radius:999px;background:#eaf8f5;color:#104035;padding:1px 6px;font-size:.75rem;margin-left:5px}
@media (max-width:1100px){.mindmap-layout{grid-template-columns:1fr}.node-details{max-height:none}.mindmap-canvas{height:68vh}}

/* Course builder */
.course-grid{display:grid;grid-template-columns:300px minmax(420px,1fr) 360px;gap:18px;align-items:start}
.course-builder-panel{background:#fff;border:1px solid rgba(51,52,52,.12);border-radius:18px;padding:16px;box-shadow:0 10px 30px rgba(51,52,52,.06);min-height:360px}
.course-builder-panel textarea{min-height:110px}
.course-add-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.course-add-mode{border-top:1px solid rgba(51,52,52,.12);padding-top:12px;max-height:620px;overflow:auto}
.cascade-row{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:8px;margin-bottom:12px}
.course-node-row,.sheet-result,.saved-course{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid rgba(51,52,52,.10);border-radius:12px;padding:10px;margin:8px 0;background:#f9fbfa}
.sheet-result{background:#fff}
.saved-course{display:block;background:#f8fffc}
.export-box{margin-top:18px;padding:12px;border-radius:14px;background:linear-gradient(135deg,rgba(111,202,182,.16),rgba(108,108,188,.10));border:1px solid rgba(35,140,117,.22)}
.export-box label{display:block;margin:8px 0;font-weight:500}
.basket-actions{margin-top:8px;display:flex;gap:6px}
.smallbtn.danger{background:#8c2f39;color:#fff;border-color:#8c2f39}
.badge.muted{background:#e9eeee;color:#333434}
@media(max-width:1100px){.course-grid{grid-template-columns:1fr}.cascade-row{grid-template-columns:1fr}}

/* Rich text editor and FAIR media assets */
.rich-editor-wrap{border:1px solid rgba(16,64,53,.18);border-radius:16px;background:#fff;overflow:hidden;margin:8px 0 16px;box-shadow:0 6px 18px rgba(16,64,53,.06)}
.rich-toolbar{display:flex;flex-wrap:wrap;gap:6px;padding:8px;background:linear-gradient(90deg,rgba(111,202,182,.16),rgba(108,108,188,.10));border-bottom:1px solid rgba(16,64,53,.12)}
.rich-toolbar button{border:1px solid rgba(16,64,53,.18);border-radius:999px;background:#fff;color:#333434;padding:5px 10px;font-size:.82rem;cursor:pointer}
.rich-toolbar button:hover{background:#6fcab6;color:#104035}
.rich-editor{min-height:170px;padding:14px 16px;outline:none;line-height:1.55;color:#333434}
.rich-editor:empty:before{content:attr(data-placeholder);color:#8a9693}
.rich-editor h2,.rendered-content h2{font-family:"Century Gothic",Calibri,Arial,sans-serif;color:#104035;margin:.8em 0 .35em}
.rich-editor h3,.rendered-content h3{font-family:"Century Gothic",Calibri,Arial,sans-serif;color:#238c75;margin:.7em 0 .3em}
.rich-editor ul,.rich-editor ol,.rendered-content ul,.rendered-content ol{padding-left:1.4rem}
.rich-hidden{display:none!important}
.rendered-content{line-height:1.55;color:#333434}.rendered-content p{margin:.35em 0 .8em}.rendered-content a{color:#238c75;font-weight:700}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin:10px 0}
.media-card{margin:0;border:1px solid rgba(16,64,53,.13);border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 6px 16px rgba(16,64,53,.06)}
.media-card img{display:block;width:100%;height:130px;object-fit:cover;background:#f5f8f7}.media-card figcaption{padding:10px;font-size:.84rem;color:#333434}.media-card strong{color:#104035}
code{background:rgba(111,202,182,.16);padding:.1rem .35rem;border-radius:6px;color:#104035}

/* Multilingual controls */
.language-switcher{margin-left:auto;display:flex;flex-direction:column;gap:4px;min-width:220px;background:rgba(255,255,255,.75);border:1px solid rgba(0,190,160,.25);border-radius:16px;padding:10px 12px}
.language-switcher label{font-weight:700;color:#104035;font-size:.82rem}.language-switcher select{border:1px solid #6fcab6;border-radius:10px;padding:7px 9px;background:white}.language-switcher small{color:#555;font-size:.72rem;line-height:1.2}
.translation-panel{border:1px solid rgba(0,190,160,.25);background:linear-gradient(90deg,rgba(111,202,182,.12),rgba(255,255,255,.8));border-radius:14px;padding:10px 12px;margin:10px 0}.translation-panel select{margin-top:4px}.language-badges{display:inline-flex;flex-wrap:wrap;gap:4px;align-items:center;margin-top:6px}.badge.active-lang{background:#00bea0;color:#fff}.badge.muted{background:#eee;color:#777}

/* Three side-by-side knowledge books */
.knowledgebooks-world{background:linear-gradient(90deg,rgba(111,202,182,.08),rgba(108,108,188,.06),rgba(35,140,117,.07));border-radius:22px}
.map-node{box-sizing:border-box;overflow:hidden}.map-node.virtual-root{font-weight:800;text-align:center;border-style:dashed;background:rgba(255,255,255,.94)}
.map-node .map-title{white-space:normal;line-height:1.15}.map-node .map-meta{font-size:.72rem;opacity:.75;margin-top:4px}
.mindmap-canvas{min-height:76vh}

/* Ontology coverage controls */
.map-filter-toggle{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid rgba(35,140,117,.25);border-radius:999px;background:#f5fcfa;color:var(--fbi-deep);font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}
.map-filter-toggle input{accent-color:var(--fbi-teal);width:16px;height:16px;margin:0}
.map-node .map-coverage{display:inline-block;margin-top:7px;padding:3px 8px;border-radius:999px;background:rgba(0,190,160,.10);color:var(--fbi-deep);font-size:10.5px;font-weight:700;pointer-events:none}
.map-node.domain-EM .map-coverage{background:rgba(108,108,188,.12);color:#4f4f97}
.map-node.domain-IP .map-coverage{background:rgba(35,140,117,.12);color:#17634f}
.map-node.empty-branch{border-style:dashed;opacity:.72}
.map-node.empty-branch .map-coverage{background:#f1f1f1;color:#777}
.portal-home-link{color:white;text-decoration:none;font-weight:700;white-space:nowrap}.translation-missing{padding:1rem;border:1px dashed #b77c20;background:#fff8e8;border-radius:8px;margin:1rem 0}.language-switcher select{min-width:130px}


/* v0.1.0 integrated public explorer */
body{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#fff;color:#15212b}
.integrated-header{position:sticky;top:0;z-index:500;background:rgba(255,255,255,.97);border-bottom:1px solid #dbe4e6}
.header-inner{max-width:1240px;margin:auto;min-height:78px;padding:.8rem 1.25rem;display:flex;align-items:center;gap:1.5rem}
.integrated-brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;color:#15212b;white-space:nowrap}
.integrated-brand img{width:48px;height:auto}.integrated-brand span{display:grid}.integrated-brand strong{font-size:1.05rem}.integrated-brand small{color:#5d6a73}
.integrated-nav{display:flex;align-items:center;gap:.2rem;flex:1}.integrated-nav .nav-link{appearance:none;border:0;background:transparent;color:#425159;border-radius:.45rem;padding:.55rem .7rem;font:inherit;font-weight:700;cursor:pointer}
.integrated-nav .nav-link:hover,.integrated-nav .nav-link.active{background:#edf6f5;color:#075f63}
.header-actions{display:flex;align-items:center;gap:.75rem}.language-pills{display:flex;border:1px solid #dbe4e6;border-radius:999px;padding:.15rem}
.language-pills button{border:0;background:transparent;padding:.28rem .42rem;border-radius:999px;font-size:.72rem;font-weight:800;color:#5d6a73;cursor:pointer}
.language-pills button.active{background:#075f63;color:#fff}.header-login{padding:.55rem .75rem;border-radius:.45rem;background:#075f63;color:#fff;text-decoration:none;font-weight:750}
.account-chip{padding:.35rem .6rem;border-radius:999px;background:#edf6f5;font-weight:700}.quiet-link{color:#075f63;text-decoration:none;font-weight:700}
.portal-intro{background:linear-gradient(135deg,#e8f4f3,#f8fbfb);padding:4.5rem 1.25rem}.portal-intro>div{max-width:1240px;margin:auto}
.portal-intro h1{font-size:clamp(2.3rem,5vw,4.4rem);line-height:1.04;margin:.35rem 0 1rem;max-width:900px}.portal-intro p:last-child{font-size:1.18rem;color:#5d6a73;max-width:850px}
.portal-eyebrow{margin:0 0 .4rem;text-transform:uppercase;letter-spacing:.13em;font-size:.78rem;font-weight:850;color:#075f63}
.explorer-controls{max-width:1240px;margin:-1.7rem auto 1.5rem;padding:0 1.25rem;position:relative;z-index:5}
.control-group{background:#fff;border:1px solid #dbe4e6;border-radius:.9rem;padding:1rem;box-shadow:0 14px 34px rgba(16,64,53,.09)}
.control-label{display:block;font-size:.74rem;text-transform:uppercase;letter-spacing:.11em;font-weight:850;color:#5d6a73;margin-bottom:.7rem}
.book-switcher{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem}
.book-card{display:flex;align-items:center;gap:.7rem;text-align:left;padding:.8rem;border:1px solid #dbe4e6;border-radius:.7rem;background:#fff;color:#15212b;cursor:pointer;transition:.16s ease}
.book-card:hover,.book-card.active{border-color:#075f63;background:#f1f8f7;box-shadow:0 8px 18px rgba(7,95,99,.08)}
.book-card>span:last-child{display:grid}.book-card small{color:#65737b;margin-top:.18rem}.book-mark{width:2.5rem;height:2.5rem;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;font-weight:900}
.book-mark.all{background:#e8f4f3;color:#075f63}.book-mark.lm{background:#dff7ef;color:#087b68}.book-mark.em{background:#eeeeff;color:#6262ad}.book-mark.ip{background:#e5f7e9;color:#1c8050}
.mode-switcher{display:flex;justify-content:center;gap:.45rem;margin-top:.8rem}.mode-choice{border:1px solid #dbe4e6;background:#fff;border-radius:999px;padding:.6rem .9rem;font:inherit;font-weight:750;color:#425159;cursor:pointer}
.mode-choice.active{background:#075f63;border-color:#075f63;color:#fff}
.integrated-content{max-width:1240px;margin:auto;padding:1.5rem 1.25rem 3rem}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;margin-bottom:1rem}
.section-heading h2{font-size:2rem;margin:.2rem 0}.section-heading p:last-child{color:#5d6a73;max-width:760px}.map-heading{align-items:flex-start}
.map-tools{display:flex;align-items:center;justify-content:flex-end;gap:.4rem;flex-wrap:wrap;max-width:580px}.tool-button{border:1px solid #dbe4e6;background:#fff;border-radius:.45rem;padding:.48rem .62rem;cursor:pointer;font-weight:750;color:#075f63}
.map-filter-toggle{display:flex;align-items:center;gap:.35rem;margin-right:.4rem;color:#425159;font-size:.9rem}
.cards-layout{display:grid;grid-template-columns:minmax(280px,38%) minmax(0,1fr);gap:1rem}.ontology-card-panel,.sheet-card-panel{border:1px solid #dbe4e6;border-radius:.85rem;padding:1rem;background:#fff;min-height:500px}
#ontology .tree-node{border:1px solid transparent;border-radius:.55rem;padding-top:.65rem!important;padding-bottom:.65rem!important;margin:.15rem 0}
#ontology .tree-node:hover,#ontology .tree-node.selected{background:#edf6f5;border-color:#cfe4e1}
#sheets .card{border:1px solid #dbe4e6;border-radius:.7rem;box-shadow:none}
#mindmap.panel,#library.panel{border:0;box-shadow:none}.mindmap-layout{grid-template-columns:minmax(0,1fr) 360px}.node-details{border-radius:.85rem;border:1px solid #dbe4e6;box-shadow:none}
.mindmap-canvas{border-radius:.85rem;background:radial-gradient(circle at center,rgba(111,202,182,.16),rgba(255,255,255,.92) 42%,rgba(108,108,188,.06))}
.view{margin:0}.view.layout{padding:0}.panel.full{max-width:1240px;margin:1.5rem auto;padding:1.25rem;border-radius:.85rem;box-shadow:none}
#globalLanguageSelect{display:none}
@media(max-width:1080px){.header-inner{flex-wrap:wrap}.integrated-nav{order:3;width:100%;overflow-x:auto}.book-switcher{grid-template-columns:repeat(2,1fr)}.section-heading{align-items:flex-start;flex-direction:column}.map-tools{justify-content:flex-start}.cards-layout,.mindmap-layout{grid-template-columns:1fr}}
@media(max-width:680px){.header-actions{margin-left:auto}.book-switcher{grid-template-columns:1fr}.portal-intro{padding-top:3rem}.integrated-nav .authenticated-feature{display:none}.language-pills{display:none}}


/* v0.1.0 correction: absolute static assets + landing-page visual system */
html,body{margin:0;padding:0}
.integrated-header{background:rgba(255,255,255,.98)!important;box-shadow:none!important}
.header-inner{min-height:70px!important;padding:.65rem 1.25rem!important}
.integrated-brand img{width:34px!important;height:34px!important;object-fit:contain!important;border-radius:0!important;box-shadow:none!important}
.integrated-brand span{line-height:1.05}.integrated-brand strong{font-size:1rem!important}.integrated-brand small{font-size:.72rem!important;margin-top:.2rem}
.integrated-nav{gap:.35rem!important}
.integrated-nav .nav-link{background:transparent!important;border:0!important;border-radius:.45rem!important;padding:.52rem .68rem!important;color:#425159!important}
.integrated-nav .nav-link:hover,.integrated-nav .nav-link.active{background:#e8f4f3!important;color:#075f63!important}
.workspace-heading{background:linear-gradient(135deg,#e8f4f3,#f8fbfb);padding:2.5rem 1.25rem 3.5rem}
.workspace-heading>div{max-width:1240px;margin:auto}
.workspace-heading h1{font-size:clamp(2rem,4vw,3.5rem);line-height:1.05;margin:.3rem 0 .8rem;color:#15212b}
.workspace-heading p:last-child{max-width:790px;font-size:1.08rem;color:#5d6a73}
.explorer-controls{margin:-1.8rem auto 1rem!important}
.control-group{padding:1.05rem!important;border-radius:.85rem!important}
.book-switcher{gap:.8rem!important}
.book-card{appearance:none!important;-webkit-appearance:none!important;min-height:82px!important;border:1px solid #dbe4e6!important;background:#fff!important;border-radius:.7rem!important;padding:.8rem!important;font:inherit!important}
.book-card strong{font-size:.94rem!important}.book-card small{font-size:.77rem!important;line-height:1.25!important}
.book-card:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(16,64,53,.08)!important}
.book-card.active{border:2px solid #075f63!important;background:#eef8f7!important;padding:calc(.8rem - 1px)!important}
.mode-switcher{margin-top:.75rem!important}
.mode-choice{appearance:none!important;-webkit-appearance:none!important;background:#fff!important;color:#425159!important;border:1px solid #cddbdd!important;border-radius:999px!important;padding:.58rem .9rem!important}
.mode-choice.active{background:#075f63!important;color:#fff!important;border-color:#075f63!important}
.integrated-content{padding-top:1rem!important}
.map-tools .tool-button{appearance:none!important;-webkit-appearance:none!important;background:#fff!important;border:1px solid #cddbdd!important;border-radius:.42rem!important;min-height:36px!important}
.mindmap-canvas{min-height:680px!important}
.cards-layout{align-items:start}
.ontology-card-panel,.sheet-card-panel{background:#fff!important}
.footer{background:#fff!important;border-top:1px solid #dbe4e6!important;color:#5d6a73!important}
@media(max-width:680px){
  .integrated-brand small{display:none}
  .header-login{padding:.45rem .6rem!important}
}

.book-mark.dynamic{background:color-mix(in srgb,var(--book-accent,#075f63) 15%,white);color:var(--book-accent,#075f63)}
.book-card.active .book-mark.dynamic{background:var(--book-accent,#075f63);color:#fff}
.logout-form{margin:0}.logout-button{appearance:none;border:0;background:transparent;font:inherit;cursor:pointer;padding:0}
.empty-state{padding:1rem;border-radius:.55rem;background:#f4f8f8;color:#425159}


/* v0.1.0 responsive workspace correction */
.integrated-content{
  max-width:min(1600px,calc(100vw - 48px))!important;
  width:100%!important;
}
.workspace-heading>div,
.header-inner,
.explorer-controls{
  max-width:min(1600px,calc(100vw - 48px))!important;
  width:100%!important;
}

.mindmap-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) clamp(300px,24vw,430px)!important;
  gap:1rem!important;
  align-items:stretch!important;
}
.mindmap-canvas{
  width:100%!important;
  min-width:0!important;
  height:clamp(640px,72vh,980px)!important;
  min-height:0!important;
  overflow:hidden!important;
}
.node-details{
  min-width:0!important;
  height:clamp(640px,72vh,980px)!important;
  overflow:auto!important;
  overscroll-behavior:contain;
  position:relative!important;
  top:auto!important;
}
.node-details .figure-card,
.node-details .sheet-card,
.node-details .card{
  max-width:100%!important;
}
.node-details img{
  max-width:100%!important;
  height:auto!important;
}

.cards-layout{
  display:grid!important;
  grid-template-columns:minmax(300px,38%) minmax(0,1fr)!important;
  gap:1rem!important;
  align-items:stretch!important;
}
.ontology-card-panel,
.sheet-card-panel{
  height:clamp(620px,70vh,920px)!important;
  min-height:0!important;
  overflow:auto!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.ontology-card-panel{
  padding-right:.75rem!important;
}
.sheet-card-panel{
  padding-right:.75rem!important;
}
#ontology,
#sheets{
  min-height:100%!important;
}
/* Collapsed ontology rows must keep their intrinsic height instead of stretching
   to fill the fixed navigation viewport. */
#ontology{
  align-content:start!important;
  grid-auto-rows:max-content!important;
}
#sheets .card:first-child{
  margin-top:0!important;
}

@media(max-width:1200px){
  .mindmap-layout{
    grid-template-columns:minmax(0,1fr) minmax(290px,34vw)!important;
  }
  .cards-layout{
    grid-template-columns:minmax(280px,42%) minmax(0,1fr)!important;
  }
}
@media(max-width:900px){
  .integrated-content,
  .workspace-heading>div,
  .header-inner,
  .explorer-controls{
    max-width:calc(100vw - 24px)!important;
  }
  .mindmap-layout,
  .cards-layout{
    grid-template-columns:1fr!important;
  }
  .mindmap-canvas{
    height:65vh!important;
  }
  .node-details{
    height:auto!important;
    max-height:55vh!important;
  }
  .ontology-card-panel,
  .sheet-card-panel{
    height:auto!important;
    max-height:55vh!important;
  }
}


/* v0.1.0 — full-width resizable ontology + sheet panels */
#mindmap .integrated-content{
  width:100%!important;
  max-width:none!important;
  padding-left:clamp(16px,2vw,40px)!important;
  padding-right:clamp(16px,2vw,40px)!important;
}

#mindmap .section-heading{
  width:100%!important;
  max-width:none!important;
}

.mindmap-layout{
  --details-width:380px;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 14px minmax(280px,var(--details-width))!important;
  gap:0!important;
  width:100%!important;
  max-width:none!important;
  align-items:stretch!important;
}

.mindmap-canvas{
  min-width:0!important;
  width:100%!important;
  border-top-right-radius:0!important;
  border-bottom-right-radius:0!important;
}

.node-details{
  min-width:0!important;
  width:auto!important;
  border-top-left-radius:0!important;
  border-bottom-left-radius:0!important;
}

.panel-splitter{
  position:relative;
  min-width:14px;
  cursor:col-resize;
  touch-action:none;
  user-select:none;
  outline:none;
  background:transparent;
}

.panel-splitter::before{
  content:"";
  position:absolute;
  inset:0 auto 0 50%;
  width:1px;
  transform:translateX(-50%);
  background:#dbe4e6;
}

.panel-splitter > .splitter-grip{
  position:absolute;
  left:50%;
  top:50%;
  width:6px;
  height:64px;
  transform:translate(-50%,-50%);
  border-radius:999px;
  background:#d7e8e6;
  box-shadow:0 0 0 1px #c6dcda;
  transition:.15s ease;
}

.panel-splitter:hover > .splitter-grip,
.panel-splitter:focus-visible > .splitter-grip,
.panel-splitter.is-dragging > .splitter-grip{
  background:#075f63;
  box-shadow:0 0 0 1px #075f63,0 0 0 4px rgba(7,95,99,.12);
}

body.is-resizing-panels{
  cursor:col-resize!important;
  user-select:none!important;
}

@media(min-width:901px){
  .mindmap-layout{
    height:calc(100vh - 275px)!important;
    min-height:620px!important;
  }
  .mindmap-canvas,
  .node-details{
    height:100%!important;
    min-height:0!important;
  }
}

@media(max-width:900px){
  .mindmap-layout{
    grid-template-columns:1fr!important;
  }
  .panel-splitter{
    display:none!important;
  }
  .mindmap-canvas{
    border-radius:.85rem!important;
  }
  .node-details{
    border-radius:.85rem!important;
  }
}


/* v0.1.0 — balanced initial ontology/sheet layout */
.mindmap-layout{
  --details-width:50%;
  grid-template-columns:minmax(0,1fr) 14px minmax(320px,var(--details-width))!important;
}

@media(min-width:901px){
  .mindmap-layout{
    min-height:660px!important;
    height:calc(100vh - 265px)!important;
  }
}


/* v0.1.0 — restore live resizing after 50/50 initialisation */
#mindmapLayout{
  --details-width:50%;
}
#mindmapLayout[style]{
  grid-template-columns:minmax(0,1fr) 14px minmax(320px,var(--details-width))!important;
}


/* v0.1.0 — ontology-local viewport controls */
.ontology-viewport-panel{
  min-width:0;
  min-height:0;
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  border:1px solid #dbe4e6;
  border-radius:.85rem 0 0 .85rem;
  overflow:hidden;
  background:#fff;
}

.ontology-viewport-panel .map-tools{
  width:100%;
  max-width:none;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:.4rem;
  padding:.65rem .75rem;
  border-bottom:1px solid #dbe4e6;
  background:#f8fbfb;
}

.ontology-viewport-panel .map-tool-spacer{
  flex:1 1 auto;
}

.ontology-viewport-panel .mindmap-canvas{
  border:0!important;
  border-radius:0!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
}

.mindmap-layout{
  grid-template-columns:minmax(0,1fr) 14px minmax(320px,var(--details-width))!important;
}

.node-details{
  border-radius:0 .85rem .85rem 0!important;
}

@media(max-width:900px){
  .ontology-viewport-panel{
    border-radius:.85rem;
  }
  .ontology-viewport-panel .map-tools{
    flex-wrap:wrap;
  }
  .ontology-viewport-panel .map-tool-spacer{
    display:none;
  }
  .node-details{
    border-radius:.85rem!important;
  }
}

/* FBI-Training v0.1.0 — ONTOLOGY PRESENTATION LAYER */
.ontology-viewport-panel{--ontology-bg:radial-gradient(circle at 50% 45%,rgba(111,202,182,.17),rgba(247,253,251,.96) 44%,rgba(108,108,188,.07));background:var(--ontology-bg)!important}
.ontology-viewport-panel .mindmap-canvas{background:var(--ontology-bg)!important;border:0!important;box-shadow:none!important}
.ontology-viewport-panel .mindmap-world,.ontology-viewport-panel .knowledgebooks-world,.ontology-viewport-panel .mindmap-svg{background:transparent!important;border:0!important;box-shadow:none!important}
.map-depth-controls{display:flex;align-items:center;gap:.4rem;padding-left:.5rem;border-left:1px solid #dbe4e6}.map-depth-controls label{margin:0;font-size:.75rem;font-weight:750;color:#355153;white-space:nowrap}.map-depth-controls select{width:auto;min-width:132px;height:34px;margin:0;padding:0 .55rem;border:1px solid #c8d8da;border-radius:.48rem;background:#fff;color:#173f42;font:inherit;font-size:.75rem}.depth-status{min-width:68px;text-align:center;color:#5c7476;font-size:.7rem;white-space:nowrap}
.map-node{padding:8px 10px!important;border-radius:12px!important}.map-node .map-title{font-size:12.5px!important;line-height:1.14!important}.map-node .map-meta{margin-top:3px!important;font-size:9.5px!important}.map-node .map-coverage{margin-top:5px!important;padding:2px 6px!important;font-size:9px!important}
.map-node.has-hidden-children::after{content:'+';position:absolute;top:5px;right:6px;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#e5f3f1;color:#075f63;font-size:.78rem;font-weight:900;pointer-events:none}.map-node.is-expanded::after{content:'−'}
@media(max-width:1180px){.ontology-viewport-panel .map-tools{flex-wrap:wrap}.map-tool-spacer{display:none}.map-depth-controls{border-left:0;padding-left:0}}


/* v0.1.0 — hierarchy colour system and branch-expansion cues */
.ontology-viewport-panel .map-node.depth-0{
  background:linear-gradient(145deg,#174d50,#286b6d)!important;
  border-color:#103f42!important;
  color:#fff!important;
}
.ontology-viewport-panel .map-node.depth-0 .map-title,
.ontology-viewport-panel .map-node.depth-0 .map-meta{
  color:#fff!important;
}
.ontology-viewport-panel .map-node.depth-0 .map-coverage{
  background:rgba(255,255,255,.16)!important;
  color:#fff!important;
}

.ontology-viewport-panel .map-node.depth-1{
  background:linear-gradient(145deg,#d9f3ec,#bfe7dc)!important;
  border-color:#72bca9!important;
}
.ontology-viewport-panel .map-node.depth-2{
  background:linear-gradient(145deg,#e1edf8,#cbdff0)!important;
  border-color:#8eb4d3!important;
}
.ontology-viewport-panel .map-node.depth-3{
  background:linear-gradient(145deg,#eee8f7,#ddd1ed)!important;
  border-color:#b3a0cf!important;
}
.ontology-viewport-panel .map-node.depth-4,
.ontology-viewport-panel .map-node.depth-5,
.ontology-viewport-panel .map-node.depth-6{
  background:linear-gradient(145deg,#f4f1e7,#e8e1cf)!important;
  border-color:#c9bc98!important;
}

.map-node.has-hidden-children::after{
  content:"+" attr(data-hidden-count)!important;
  width:auto!important;
  min-width:20px;
  padding:0 5px;
  border-radius:10px!important;
  line-height:18px;
}
.map-node.is-expanded::after{
  content:"−"!important;
  width:18px!important;
  padding:0!important;
}

.ontology-viewport-panel .mindmap-svg path{
  stroke-linecap:round;
}


/* v0.1.0 — graph drawing and localisation refinement */
.ontology-viewport-panel .mindmap-svg{
  overflow:visible;
  pointer-events:none;
}
.ontology-viewport-panel .mindmap-svg path{
  stroke-linecap:round;
  stroke-linejoin:round;
}


/* v0.1.0 — stable geometry and high-zoom interaction */
.ontology-viewport-panel .map-node{
  box-sizing:border-box!important;
  height:auto;
}
.ontology-viewport-panel .mindmap-world{
  transform-origin:0 0!important;
}
.ontology-viewport-panel .mindmap-svg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
}


/* v0.1.0 — fixed ontology skeleton and progressive information reveal */
@keyframes ontology-node-reveal{
  from{
    opacity:0;
    filter:blur(2px);
  }
  to{
    opacity:1;
    filter:blur(0);
  }
}

.ontology-viewport-panel .map-node.newly-revealed{
  animation:ontology-node-reveal 180ms ease-out both;
}

/* The world geometry never animates when depth changes. Only new information
   fades in, so established spatial landmarks remain visually fixed. */
.ontology-viewport-panel .mindmap-world{
  transition:none!important;
}


/* v0.1.0 — clean explicit map controls */
.ontology-viewport-panel .map-node::after{
  content:none!important;
  display:none!important;
}

.ontology-viewport-panel .map-node .branch-toggle{
  position:absolute;
  top:5px;
  right:6px;
  z-index:10;
  display:grid;
  place-items:center;
  min-width:20px;
  height:18px;
  margin:0;
  padding:0 5px;
  border:1px solid rgba(7,95,99,.12);
  border-radius:10px;
  background:#e5f3f1;
  color:#075f63;
  font:inherit;
  font-size:.68rem;
  font-weight:900;
  line-height:16px;
  cursor:pointer;
}

.ontology-viewport-panel .map-node .branch-toggle:hover{
  background:#c9e7e2;
}

.ontology-viewport-panel .map-node .branch-toggle:focus-visible{
  outline:2px solid #0b7276;
  outline-offset:2px;
}

.ontology-viewport-panel .map-node.is-expanded .branch-toggle{
  width:18px;
  min-width:18px;
  padding:0;
}


/* v0.1.0 — weighted recursive radial layout */
.ontology-viewport-panel .map-node{
  transition:
    left 240ms cubic-bezier(.22,.8,.32,1),
    top 240ms cubic-bezier(.22,.8,.32,1),
    opacity 180ms ease-out,
    filter 180ms ease-out;
  will-change:left,top;
}

.ontology-viewport-panel .map-node:not(.layout-settled){
  opacity:.72;
}

@media(prefers-reduced-motion:reduce){
  .ontology-viewport-panel .map-node{
    transition:none!important;
  }
}


/* v0.1.0 — depth-scaled ontology boxes */
.ontology-viewport-panel .map-node{box-sizing:border-box!important;}
.ontology-viewport-panel .map-node.depth-0{padding:12px 14px!important;}
.ontology-viewport-panel .map-node.depth-1{padding:9px 11px!important;}
.ontology-viewport-panel .map-node.depth-2{padding:7px 9px!important;}
.ontology-viewport-panel .map-node.depth-3{padding:6px 8px!important;}
.ontology-viewport-panel .map-node.depth-4,
.ontology-viewport-panel .map-node.depth-5,
.ontology-viewport-panel .map-node.depth-6{padding:5px 7px!important;}
.ontology-viewport-panel .map-node.depth-0 .map-title{font-size:1rem!important;}
.ontology-viewport-panel .map-node.depth-1 .map-title{font-size:.88rem!important;}
.ontology-viewport-panel .map-node.depth-2 .map-title{font-size:.76rem!important;}
.ontology-viewport-panel .map-node.depth-3 .map-title{font-size:.67rem!important;}
.ontology-viewport-panel .map-node.depth-4 .map-title,
.ontology-viewport-panel .map-node.depth-5 .map-title,
.ontology-viewport-panel .map-node.depth-6 .map-title{font-size:.60rem!important;}
.ontology-viewport-panel .map-node.depth-2 .map-meta,
.ontology-viewport-panel .map-node.depth-2 .map-coverage{font-size:.60rem!important;}
.ontology-viewport-panel .map-node.depth-3 .map-meta,
.ontology-viewport-panel .map-node.depth-3 .map-coverage{font-size:.54rem!important;}
.ontology-viewport-panel .map-node.depth-4 .map-meta,
.ontology-viewport-panel .map-node.depth-4 .map-coverage,
.ontology-viewport-panel .map-node.depth-5 .map-meta,
.ontology-viewport-panel .map-node.depth-5 .map-coverage,
.ontology-viewport-panel .map-node.depth-6 .map-meta,
.ontology-viewport-panel .map-node.depth-6 .map-coverage{font-size:.49rem!important;}
.ontology-viewport-panel .map-node.depth-3 .branch-toggle,
.ontology-viewport-panel .map-node.depth-4 .branch-toggle,
.ontology-viewport-panel .map-node.depth-5 .branch-toggle,
.ontology-viewport-panel .map-node.depth-6 .branch-toggle{
  transform:scale(.86);
  transform-origin:top right;
}
.ontology-viewport-panel .map-node.no-layout-transition{transition:none!important;}

.ontology-viewport-panel .ontology-link-hit{cursor:pointer;pointer-events:stroke;}
.ontology-viewport-panel .navigation-link:hover .ontology-link-visible{stroke-width:3.2!important;opacity:.92!important;}
.ontology-viewport-panel .topic-membership-link:hover .ontology-link-visible{stroke-width:2.4!important;opacity:.72!important;}
@keyframes ontology-navigation-arrival{0%{box-shadow:0 0 0 0 rgba(17,126,132,.48)}45%{box-shadow:0 0 0 12px rgba(17,126,132,.16)}100%{box-shadow:0 0 0 0 rgba(17,126,132,0)}}
.ontology-viewport-panel .map-node.navigation-arrival{animation:ontology-navigation-arrival 850ms ease-out;}


/* v0.1.0 — recursive subtree geometry and active link hit paths */
.ontology-viewport-panel .mindmap-svg{
  pointer-events:auto!important;
}
.ontology-viewport-panel .ontology-link-visible{
  pointer-events:none!important;
}
.ontology-viewport-panel .ontology-link-hit{
  pointer-events:stroke!important;
  cursor:pointer!important;
}
.ontology-viewport-panel .map-node{
  pointer-events:auto!important;
}


/* v0.1.0 — stable dynamic focus and robust link navigation */
.ontology-viewport-panel .ontology-link-hit{
  pointer-events:stroke!important;
  cursor:pointer!important;
}

.ontology-viewport-panel g.navigation-link:hover .ontology-link-visible,
.ontology-viewport-panel g.topic-membership-link:hover .ontology-link-visible{
  stroke-width:3.4!important;
  opacity:.95!important;
  filter:drop-shadow(0 0 2px currentColor);
}


/* v0.1.0 — conservative correction */
.ontology-viewport-panel .mindmap-svg{
  pointer-events:auto!important;
}
.ontology-viewport-panel .ontology-link-visible{
  pointer-events:none!important;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.ontology-viewport-panel .ontology-link-hit{
  pointer-events:stroke!important;
  cursor:pointer!important;
  stroke:rgba(0,0,0,.001)!important;
  stroke-width:28!important;
}
.ontology-viewport-panel g.navigation-link:hover .ontology-link-visible,
.ontology-viewport-panel g.topic-membership-link:hover .ontology-link-visible{
  stroke-width:3.1!important;
  opacity:.96!important;
}


/* v0.1.0 — final DOM geometry correction */
.ontology-viewport-panel .map-node,
.ontology-viewport-panel .map-node.layout-settled{
  transition:
    opacity 140ms ease-out,
    box-shadow 140ms ease-out!important;
}

.ontology-viewport-panel .ontology-link-visible{
  pointer-events:none!important;
  stroke-linecap:round;
}

.ontology-viewport-panel .ontology-link-hit{
  pointer-events:stroke!important;
  cursor:pointer!important;
  stroke:rgba(0,0,0,.001)!important;
  stroke-width:28!important;
}


/* v0.1.0 — hybrid ring/tree layout and low-zoom links */
.ontology-viewport-panel .ontology-link-visible{
  stroke-width:clamp(
    .7px,
    calc(1.9px * var(--map-scale,1)),
    2.4px
  )!important;
}

.ontology-viewport-panel .mindmap-world{
  --map-scale:1;
}


/* v0.1.0 — deterministic rings 1-3, trees from level 4 */
.ontology-viewport-panel .mindmap-world{
  --map-scale:1;
}

.ontology-viewport-panel .ontology-link-visible{
  stroke-width:clamp(
    .55px,
    calc(1.55px * var(--map-scale,1)),
    2.2px
  )!important;
  opacity:clamp(
    .24,
    calc(.42 + var(--map-scale,1) * .18),
    .78
  )!important;
  stroke-linecap:round;
}

.ontology-viewport-panel .ontology-link-hit{
  stroke-width:30!important;
  pointer-events:stroke!important;
  cursor:pointer!important;
}


/* v0.1.0 — specialised deterministic ontology layout */
.ontology-viewport-panel .ontology-link-visible{
  stroke-width:clamp(
    .6px,
    calc(1.4px * var(--map-scale,1)),
    2px
  )!important;
  opacity:clamp(
    .22,
    calc(.36 + var(--map-scale,1) * .22),
    .76
  )!important;
  stroke-linecap:round;
}

.ontology-viewport-panel .ontology-link-hit{
  stroke-width:30!important;
}


/* v0.1.0 — unified renderer and zoom-adaptive link visibility */
.ontology-viewport-panel .ontology-link-visible{
  vector-effect:non-scaling-stroke!important;
  stroke-width:var(--ontology-link-width,1.8px)!important;
  opacity:var(--ontology-link-opacity,.58)!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
}

.ontology-viewport-panel g.navigation-link:hover .ontology-link-visible,
.ontology-viewport-panel g.topic-membership-link:hover .ontology-link-visible{
  stroke-width:calc(var(--ontology-link-width,1.8px) + 1px)!important;
  opacity:.96!important;
}

.ontology-viewport-panel .ontology-link-hit{
  vector-effect:non-scaling-stroke!important;
}


/* v0.1.0 — navigation hierarchy at strong zoom-out */
.map-node.depth-0{padding:15px 17px!important;}
.map-node.depth-0 .map-title{
  font-size:1rem!important;
  line-height:1.12!important;
  font-weight:850!important;
}
.map-node.depth-0 .map-meta,
.map-node.depth-0 .map-coverage{font-size:.70rem!important;}

.map-node.depth-1{padding:12px 14px!important;}
.map-node.depth-1 .map-title{
  font-size:.86rem!important;
  line-height:1.14!important;
  font-weight:800!important;
}
.map-node.depth-1 .map-meta,
.map-node.depth-1 .map-coverage{font-size:.62rem!important;}

.map-node.depth-2 .map-title{font-size:.72rem!important;}
.map-node.depth-3 .map-title{font-size:.63rem!important;}
.map-node.depth-4 .map-title,
.map-node.depth-5 .map-title,
.map-node.depth-6 .map-title{font-size:.56rem!important;}


/* v0.1.0 — renderer stability and exact SVG/world coordinate system */
.ontology-viewport-panel .mindmap-svg{
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  max-height:none!important;
}

.ontology-viewport-panel .map-node.depth-0{
  padding:17px 19px!important;
}
.ontology-viewport-panel .map-node.depth-0 .map-title{
  font-size:1.18rem!important;
  line-height:1.08!important;
}
.ontology-viewport-panel .map-node.depth-1{
  padding:12px 14px!important;
}
.ontology-viewport-panel .map-node.depth-1 .map-title{
  font-size:.96rem!important;
  line-height:1.10!important;
}
.ontology-viewport-panel .map-node.depth-2 .map-title{
  font-size:.80rem!important;
  line-height:1.10!important;
}

/* At overview scales, emphasise navigational levels and visually quieten the
   dense content layers without changing geometry or link anchors. */
.ontology-viewport-panel .mindmap-world.overview-zoom .map-node.depth-0,
.ontology-viewport-panel .mindmap-world.overview-zoom .map-node.depth-1,
.ontology-viewport-panel .mindmap-world.overview-zoom .map-node.depth-2{
  opacity:1!important;
  filter:saturate(1.15) contrast(1.08);
  box-shadow:0 0 0 2px rgba(255,255,255,.72),0 8px 22px rgba(16,64,53,.18)!important;
}
.ontology-viewport-panel .mindmap-world.overview-zoom .map-node.depth-3,
.ontology-viewport-panel .mindmap-world.overview-zoom .map-node.depth-4,
.ontology-viewport-panel .mindmap-world.overview-zoom .map-node.depth-5,
.ontology-viewport-panel .mindmap-world.overview-zoom .map-node.depth-6{
  opacity:.60!important;
}
.ontology-viewport-panel .mindmap-world.extreme-overview-zoom .map-node.depth-3,
.ontology-viewport-panel .mindmap-world.extreme-overview-zoom .map-node.depth-4,
.ontology-viewport-panel .mindmap-world.extreme-overview-zoom .map-node.depth-5,
.ontology-viewport-panel .mindmap-world.extreme-overview-zoom .map-node.depth-6{
  opacity:.38!important;
}


/* v0.1.0 — Gaussian semantic zoom and progressive hierarchy */
.ontology-viewport-panel .map-node{
  opacity:var(--semantic-opacity,1)!important;
  transform-origin:center center!important;
}
.ontology-viewport-panel .map-node.semantic-preview{
  filter:saturate(.72) brightness(1.03);
  box-shadow:0 4px 14px rgba(16,64,53,.08)!important;
}
.ontology-viewport-panel .map-node.semantic-detail-0 .map-meta,
.ontology-viewport-panel .map-node.semantic-detail-0 .map-coverage,
.ontology-viewport-panel .map-node.semantic-detail-1 .map-coverage{
  display:none!important;
}
.ontology-viewport-panel .map-node.semantic-detail-0{
  padding-top:7px!important;
  padding-bottom:7px!important;
}
.ontology-viewport-panel .map-node.semantic-preview .branch-toggle{
  opacity:.72;
}
.ontology-viewport-panel .map-node.newly-revealed{
  animation:ontology-node-reveal 230ms cubic-bezier(.2,.72,.3,1) both;
}

/* v0.1.0 — stable semantic navigation (no geometry rescaling on wheel zoom) */
.ontology-viewport-panel .map-node{
  opacity:1!important;
  transform-origin:center center!important;
}
.ontology-viewport-panel .map-node.semantic-preview{
  filter:none!important;
}

.map-navigation-labels{
  position:absolute;
  inset:0;
  z-index:12;
  overflow:hidden;
  pointer-events:none;
}
.map-navigation-labels[hidden]{display:none!important;}
.map-navigation-label{
  position:absolute;
  transform:translate(-50%,-50%);
  max-width:170px;
  padding:5px 9px;
  border:1px solid rgba(7,95,99,.22);
  border-radius:999px;
  background:rgba(255,255,255,.94);
  box-shadow:0 4px 13px rgba(16,64,53,.15);
  color:#104035;
  font:700 11px/1.15 'Century Gothic','Avenir Next',Arial,sans-serif;
  text-align:center;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  pointer-events:auto;
  cursor:pointer;
}
.map-navigation-label.depth-0{
  max-width:210px;
  padding:7px 12px;
  background:rgba(7,95,99,.96);
  color:#fff;
  border-color:#075f63;
  font-size:12px;
  font-weight:800;
}
.map-navigation-label.domain-EM{border-color:rgba(108,108,188,.58);}
.map-navigation-label.domain-IP{border-color:rgba(35,140,117,.58);}
.map-navigation-label:hover,
.map-navigation-label:focus-visible{
  outline:2px solid rgba(0,190,160,.38);
  outline-offset:2px;
  box-shadow:0 6px 18px rgba(16,64,53,.22);
}

/* v0.1.0 — adaptive semantic cards and progressive overview spacing */
.map-navigation-label{
  display:flex!important;
  flex-direction:column;
  align-items:stretch;
  justify-content:center;
  gap:2px;
  max-width:none!important;
  min-height:30px;
  padding:6px 10px!important;
  border-radius:15px!important;
  background:rgba(255,255,255,.96)!important;
  color:#104035!important;
  font-family:'Century Gothic','Avenir Next',Arial,sans-serif!important;
  text-align:left!important;
  white-space:normal!important;
  overflow:hidden!important;
  box-sizing:border-box;
  border:1px solid rgba(0,190,160,.38)!important;
  border-left:5px solid var(--fbi-teal,#00bea0)!important;
  box-shadow:0 5px 16px rgba(16,64,53,.16)!important;
  transition:box-shadow 120ms ease,border-color 120ms ease;
}
.map-navigation-label.domain-EM{
  border-color:rgba(108,108,188,.48)!important;
  border-left-color:#6c6cbc!important;
}
.map-navigation-label.domain-IP{
  border-color:rgba(35,140,117,.48)!important;
  border-left-color:#238c75!important;
}
.map-navigation-label.depth-0{
  min-height:34px;
  padding:7px 12px!important;
  background:rgba(7,95,99,.97)!important;
  color:#fff!important;
  border-color:#075f63!important;
  border-left-color:#075f63!important;
  text-align:center!important;
}
.map-navigation-label .map-title{
  display:block;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:11px;
  font-weight:800;
  line-height:1.15;
  color:inherit;
}
.map-navigation-label.depth-0 .map-title{font-size:12px;}
.map-navigation-label .map-meta{
  display:block;
  margin:0;
  font-size:8.5px;
  font-weight:600;
  line-height:1.1;
  color:#667;
  opacity:.82;
}
.map-navigation-label.depth-0 .map-meta{color:rgba(255,255,255,.82);}
.map-navigation-label .map-coverage{
  display:inline-flex;
  align-self:flex-start;
  margin-top:2px;
  padding:2px 6px;
  border-radius:999px;
  background:rgba(0,190,160,.10);
  color:#075f63;
  font-size:8px;
  font-weight:700;
  line-height:1.1;
}
.map-navigation-label.depth-0 .map-coverage{
  align-self:center;
  background:rgba(255,255,255,.16);
  color:#fff;
}
.map-navigation-label.semantic-detail-0{
  min-height:30px;
  padding-top:5px!important;
  padding-bottom:5px!important;
  border-radius:999px!important;
  text-align:center!important;
}
.map-navigation-label.semantic-detail-0 .map-title{text-align:center;}
.map-navigation-label.semantic-detail-1{min-height:44px;}
.map-navigation-label.semantic-detail-2{min-height:60px;}
.map-navigation-label [hidden]{display:none!important;}

/* The real cards keep their geometry and visual shell. Semantic zoom changes
   only the amount of information shown inside, which keeps links stable. */
.ontology-viewport-panel .map-node.semantic-detail-0 .map-meta,
.ontology-viewport-panel .map-node.semantic-detail-0 .map-coverage,
.ontology-viewport-panel .map-node.semantic-detail-1 .map-coverage{
  display:none!important;
}
.ontology-viewport-panel .map-node .branch-toggle[hidden]{display:none!important;}
.ontology-viewport-panel .map-node.semantic-detail-0 .map-title{
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.ontology-viewport-panel .map-node.semantic-detail-1 .map-title{
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}


/* v0.1.0 — coherent semantic proxy layer and persistent level colours */
.ontology-viewport-panel .map-node.semantic-proxied{
  visibility:hidden!important;
  pointer-events:none!important;
}
.ontology-viewport-panel .mindmap-svg g.semantic-proxy-link-hidden{
  display:none!important;
}
.map-navigation-labels{
  isolation:isolate;
}
.map-navigation-labels .semantic-proxy-links{
  position:absolute;
  inset:0;
  z-index:0;
  display:block;
  width:100%;
  height:100%;
  overflow:hidden;
  pointer-events:none;
}
.map-navigation-labels .semantic-proxy-link-visible{
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.map-navigation-labels .semantic-proxy-link-hit{
  pointer-events:stroke;
  cursor:pointer;
}
.map-navigation-label{
  z-index:1;
}

/* Semantic cards retain exactly the same hierarchy palette as model-space
   nodes. Domain colours no longer replace level colours at overview scale. */
.map-navigation-label.depth-0{
  background:linear-gradient(145deg,#174d50,#286b6d)!important;
  color:#fff!important;
  border-color:#103f42!important;
  border-left-color:#103f42!important;
}
.map-navigation-label.depth-1{
  background:linear-gradient(145deg,#d9f3ec,#bfe7dc)!important;
  color:#104035!important;
  border-color:#72bca9!important;
  border-left-color:#42ad95!important;
}
.map-navigation-label.depth-2{
  background:linear-gradient(145deg,#e1edf8,#cbdff0)!important;
  color:#17354c!important;
  border-color:#8eb4d3!important;
  border-left-color:#78a9cf!important;
}
.map-navigation-label.depth-3{
  background:linear-gradient(145deg,#eee8f7,#ddd1ed)!important;
  color:#3e3153!important;
  border-color:#b3a0cf!important;
  border-left-color:#a58ac5!important;
}
.map-navigation-label.depth-4,
.map-navigation-label.depth-5,
.map-navigation-label.depth-6{
  background:linear-gradient(145deg,#f4f1e7,#e8e1cf)!important;
  color:#4d4634!important;
  border-color:#c9bc98!important;
  border-left-color:#b9a36f!important;
}
.map-navigation-label.depth-0 .map-meta,
.map-navigation-label.depth-0 .map-coverage{
  color:#fff!important;
}
.map-navigation-label.depth-1 .map-coverage{
  background:rgba(66,173,149,.13)!important;
}
.map-navigation-label.depth-2 .map-coverage{
  background:rgba(120,169,207,.16)!important;
  color:#315d7c!important;
}

/* The three-book overview keeps the root only moderately larger than level 1. */
.map-navigation-label.depth-0 .map-title{
  font-size:11.5px!important;
}
.map-navigation-label.depth-1 .map-title{
  font-size:10.8px!important;
}


/* At the extreme three-book overview, roots carry navigation while the
   underlying level-1/2 geometry remains as quiet context rather than competing
   with the fixed-size semantic cards. */
.ontology-viewport-panel .mindmap-world.extreme-overview-zoom .map-node.depth-1,
.ontology-viewport-panel .mindmap-world.extreme-overview-zoom .map-node.depth-2{
  opacity:.24!important;
  filter:saturate(.72);
}


/* v0.1.0 — semantic threshold refinement and unified card shell */
.map-navigation-label,
.ontology-viewport-panel .map-node{
  border-radius:12px!important;
  border-width:1px!important;
  border-style:solid!important;
  border-left-width:5px!important;
  text-align:left!important;
  box-shadow:0 5px 15px rgba(16,64,53,.13)!important;
  transition:
    opacity 140ms ease,
    box-shadow 140ms ease,
    border-color 140ms ease,
    background-color 140ms ease!important;
}

.map-navigation-label.semantic-detail-0{
  min-height:30px!important;
  padding:6px 9px!important;
  border-radius:12px!important;
  text-align:left!important;
}
.map-navigation-label.semantic-detail-0 .map-title{
  text-align:left!important;
  font-size:10.4px!important;
  line-height:1.12!important;
}
.map-navigation-label.semantic-detail-1{
  min-height:42px!important;
  padding:7px 10px!important;
}
.map-navigation-label.semantic-detail-2{
  min-height:54px!important;
  padding:8px 10px!important;
}

.map-navigation-label.depth-0{
  border-left-width:5px!important;
  text-align:left!important;
}
.map-navigation-label.depth-0.semantic-detail-0 .map-title,
.map-navigation-label.depth-0 .map-title{
  text-align:left!important;
}
.map-navigation-label.depth-0 .map-title{font-size:11.2px!important;}
.map-navigation-label.depth-1 .map-title{font-size:10.6px!important;}
.map-navigation-label.depth-2 .map-title{font-size:10.1px!important;}
.map-navigation-label.depth-3 .map-title{font-size:9.7px!important;}
.map-navigation-label.depth-4 .map-title,
.map-navigation-label.depth-5 .map-title,
.map-navigation-label.depth-6 .map-title{font-size:9.3px!important;}

.map-navigation-label .map-title{
  display:-webkit-box!important;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.map-navigation-label.semantic-detail-0 .map-title{
  -webkit-line-clamp:1;
  white-space:nowrap!important;
}

/* Model-space boxes use the same level palette and edge accent as the fixed
   semantic cards, so the hand-over at medium zoom no longer looks like a new
   component appearing. */
.ontology-viewport-panel .map-node.depth-0{border-left-color:#103f42!important;}
.ontology-viewport-panel .map-node.depth-1{border-left-color:#42ad95!important;}
.ontology-viewport-panel .map-node.depth-2{border-left-color:#78a9cf!important;}
.ontology-viewport-panel .map-node.depth-3{border-left-color:#a58ac5!important;}
.ontology-viewport-panel .map-node.depth-4,
.ontology-viewport-panel .map-node.depth-5,
.ontology-viewport-panel .map-node.depth-6{border-left-color:#b9a36f!important;}

.ontology-viewport-panel .map-node.semantic-detail-0{
  padding:7px 9px!important;
  min-height:30px!important;
}
.ontology-viewport-panel .map-node.semantic-detail-1{
  padding:8px 10px!important;
  min-height:42px!important;
}
.ontology-viewport-panel .map-node.semantic-detail-2{padding:9px 11px!important;}

/* Keep quiet context visible, but do not wash it out so strongly that the
   hierarchy seems to disappear before its semantic proxy is ready. */
.ontology-viewport-panel .mindmap-world.extreme-overview-zoom .map-node.depth-1,
.ontology-viewport-panel .mindmap-world.extreme-overview-zoom .map-node.depth-2{
  opacity:.34!important;
  filter:saturate(.82)!important;
}

/* v0.1.0 — compact grid overview and parent-aware proxy dispatch */
.map-navigation-label.grid-overview-compact{
  min-height:0!important;
  padding:4px 7px!important;
  border-left-width:4px!important;
  gap:1px!important;
  box-shadow:0 3px 10px rgba(16,64,53,.12)!important;
}
.map-navigation-label.grid-overview-compact.semantic-detail-0{
  min-height:0!important;
  padding:4px 7px!important;
}
.map-navigation-label.grid-overview-compact .map-title{
  font-size:9.4px!important;
  line-height:1.05!important;
  -webkit-line-clamp:1!important;
  white-space:nowrap!important;
}
.map-navigation-label.grid-overview-compact.depth-0 .map-title{
  font-size:10.2px!important;
}
.map-navigation-label.grid-overview-compact .map-meta{
  font-size:7.4px!important;
}
.map-navigation-label.grid-overview-compact .map-coverage{
  margin-top:0!important;
  padding:1px 4px!important;
  font-size:7px!important;
}


/* v0.1.0 — gesture-committed semantic zoom
   The world transform remains continuous while wheel/trackpad input is active.
   Fixed-size screen-space cards are faded for the gesture and rebuilt only at
   the settled scale, avoiding per-event collision dispatch and depth rerender. */
.ontology-viewport-panel .map-navigation-labels{
  transition:opacity 110ms ease-out;
}
.ontology-viewport-panel .map-navigation-labels.zoom-gesture-active{
  opacity:0!important;
  pointer-events:none!important;
}
.ontology-viewport-panel .mindmap-world.zoom-gesture-active .map-node{
  transition:
    opacity 90ms ease-out,
    box-shadow 90ms ease-out!important;
}
@media(prefers-reduced-motion:reduce){
  .ontology-viewport-panel .map-navigation-labels{
    transition:none!important;
  }
}


/* v0.1.0 — manual movement also remains available on semantic proxy cards. */
.ontology-viewport-panel .map-navigation-label:not(.depth-0),
.ontology-viewport-panel .map-navigation-label.depth-0{
  cursor:grab;
  touch-action:none;
  user-select:none;
  -webkit-user-select:none;
}
.ontology-viewport-panel .map-navigation-label.dragging{
  cursor:grabbing!important;
  z-index:4!important;
  box-shadow:0 10px 26px rgba(16,64,53,.28)!important;
  outline:2px solid rgba(0,190,160,.42);
  outline-offset:2px;
}

/* v0.1.0 — title legibility floor
   Titles remain the mandatory navigation layer at every semantic detail.
   Metadata and coverage may disappear, but the title keeps a measured one- or
   two-line box with a screen-space font floor. */
.map-navigation-label .map-title{
  display:-webkit-box!important;
  -webkit-box-orient:vertical!important;
  -webkit-line-clamp:var(--map-title-lines,2);
  font-size:var(--map-title-px,10.6px)!important;
  line-height:1.16!important;
  white-space:normal!important;
  overflow:hidden!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
  text-overflow:ellipsis!important;
  min-width:0!important;
}
.map-navigation-label.semantic-detail-0 .map-title,
.map-navigation-label.grid-overview-compact .map-title{
  -webkit-line-clamp:var(--map-title-lines,2)!important;
  white-space:normal!important;
}
.map-navigation-label.title-clipped .map-title{
  cursor:help;
}

.ontology-viewport-panel .map-node .map-title,
.ontology-viewport-panel .map-node.semantic-detail-0 .map-title,
.ontology-viewport-panel .map-node.semantic-detail-1 .map-title{
  display:-webkit-box!important;
  -webkit-box-orient:vertical!important;
  -webkit-line-clamp:2!important;
  white-space:normal!important;
  overflow:hidden!important;
  overflow-wrap:anywhere!important;
  word-break:normal!important;
  text-overflow:ellipsis!important;
  line-height:1.16!important;
}


/* v0.1.0 — AntV G6 ontology renderer */
.mindmap-canvas.g6-renderer-active{
  cursor:default!important;
}
.g6-renderer-host{
  position:absolute;
  inset:0;
  overflow:hidden;
  opacity:1;
  cursor:grab;
  transition:opacity 120ms ease;
}
.g6-renderer-host:active{
  cursor:grabbing;
}
.g6-renderer-host.is-rendering{
  opacity:.82;
}
.g6-renderer-host canvas,
.g6-renderer-host svg{
  display:block;
}
.g6-renderer-status{
  position:absolute;
  left:50%;
  top:50%;
  width:min(420px,calc(100% - 48px));
  transform:translate(-50%,-50%);
  padding:18px 20px;
  border:1px solid #cddbdd;
  border-radius:14px;
  background:#fff;
  box-shadow:0 12px 32px rgba(16,64,53,.14);
  text-align:center;
}
.g6-renderer-status p{
  margin:.45rem 0 0;
  color:#5d706d;
}
.g6-renderer-status-error{
  border-color:#d6a4a4;
}
.g6-ontology-card{
  width:100%;
  height:100%;
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  gap:3px;
  box-sizing:border-box;
  overflow:hidden;
  padding:9px 11px;
  border:1px solid #72bca9;
  border-left:5px solid #42ad95;
  border-radius:12px;
  background:linear-gradient(145deg,#d9f3ec,#bfe7dc);
  color:#104035;
  box-shadow:0 5px 15px rgba(16,64,53,.13);
  font-family:Calibri,Arial,sans-serif;
  cursor:pointer;
  pointer-events:auto;
  user-select:none;
  transition:
    box-shadow 140ms ease,
    border-color 140ms ease,
    filter 140ms ease;
}
.g6-ontology-card:hover{
  box-shadow:0 10px 24px rgba(16,64,53,.22);
  filter:saturate(1.05);
}
.g6-ontology-card:active{
  cursor:pointer;
}
.g6-ontology-card:focus-visible{
  outline:4px solid rgba(0,190,160,.28);
  outline-offset:3px;
}
.g6-renderer-host:active .g6-ontology-card,
.g6-renderer-host .g6-ontology-card:active{
  cursor:pointer;
}
.g6-ontology-card.selected{
  outline:4px solid rgba(0,190,160,.22);
  border-color:#333434;
  box-shadow:0 11px 28px rgba(16,64,53,.26);
}
.g6-ontology-card .g6-card-title{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:3;
  overflow:hidden;
  font-family:'Century Gothic','Avenir Next',Arial,sans-serif;
  font-weight:800;
  min-height:0;
  padding-block:1px;
  line-height:1.18;
  font-size:var(--g6-title-px,11.5px);
  overflow-wrap:anywhere;
  word-break:normal;
}
.g6-ontology-card .g6-card-meta{
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  font-size:var(--g6-meta-px,8.5px);
  opacity:.76;
}
.g6-ontology-card .g6-card-coverage{
  align-self:flex-start;
  margin-top:2px;
  padding:2px 6px;
  border-radius:999px;
  background:rgba(66,173,149,.13);
  font-size:var(--g6-coverage-px,8px);
  font-weight:800;
}
.g6-ontology-card.depth-0{
  border-color:#103f42;
  border-left-color:#103f42;
  background:linear-gradient(145deg,#174d50,#286b6d);
  color:#fff;
}
.g6-ontology-card.depth-0 .g6-card-title{
  font-size:var(--g6-title-px,15px);
}
.g6-ontology-card.depth-0 .g6-card-coverage{
  background:rgba(255,255,255,.15);
}
.g6-ontology-card.depth-2{
  border-color:#8eb4d3;
  border-left-color:#78a9cf;
  background:linear-gradient(145deg,#e1edf8,#cbdff0);
  color:#17354c;
}
.g6-ontology-card.depth-2 .g6-card-coverage{
  background:rgba(120,169,207,.16);
  color:#315d7c;
}
.g6-ontology-card.depth-3{
  border-color:#b3a0cf;
  border-left-color:#a58ac5;
  background:linear-gradient(145deg,#eee8f7,#ddd1ed);
  color:#3e3153;
}
.g6-ontology-card.depth-3 .g6-card-coverage{
  background:rgba(165,138,197,.16);
}
.g6-ontology-card.depth-4,
.g6-ontology-card.depth-5,
.g6-ontology-card.depth-6{
  border-color:#c9bc98;
  border-left-color:#b9a36f;
  background:linear-gradient(145deg,#f4f1e7,#e8e1cf);
  color:#4d4634;
}
.g6-ontology-card.empty-branch{
  border-style:dashed;
  opacity:.74;
}
/* Ontology depth no longer removes card content. Zoom tiers below decide
   when secondary information is hidden, consistently for every depth. */


.g6-ontology-card.navigation-arrival{
  animation:ontology-navigation-arrival 850ms ease-out;
}


/* G6 semantic title density: CSS-only, therefore no layout or camera jump. */
.g6-renderer-host{
  --g6-label-compensation:1;
}
.g6-card-title-compact{
  display:none;
}
.g6-card-title-full,
.g6-card-title-compact{
  min-width:0;
  overflow:hidden;
}

/* Very distant overview: abbreviated one-line names, no secondary content. */
.g6-renderer-host[data-label-tier="overview"] .g6-ontology-card{
  gap:0;
  justify-content:center;
  padding:2px 6px;
}
.g6-renderer-host[data-label-tier="overview"] .g6-card-title-full{
  display:none;
}
.g6-renderer-host[data-label-tier="overview"] .g6-card-title-compact{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.g6-renderer-host[data-label-tier="overview"] .g6-card-title{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  font-size:calc(var(--g6-title-px,11.5px) * var(--g6-label-compensation));
  line-height:1.06;
  text-overflow:ellipsis;
}
.g6-renderer-host[data-label-tier="overview"] .depth-0 .g6-card-title{
  font-size:calc(var(--g6-title-px,15px) * var(--g6-label-compensation));
}
.g6-renderer-host[data-label-tier="overview"] .g6-card-meta,
.g6-renderer-host[data-label-tier="overview"] .g6-card-coverage{
  display:none!important;
}

/* Distant but navigable: full name on one line, compensated for canvas scale. */
.g6-renderer-host[data-label-tier="compact"] .g6-ontology-card{
  gap:0;
  justify-content:center;
  padding:3px 7px;
}
.g6-renderer-host[data-label-tier="compact"] .g6-card-title{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  font-size:calc(var(--g6-title-px,11.5px) * var(--g6-label-compensation));
  line-height:1.10;
  text-overflow:ellipsis;
}
.g6-renderer-host[data-label-tier="compact"] .depth-0 .g6-card-title{
  font-size:calc(var(--g6-title-px,15px) * var(--g6-label-compensation));
}
.g6-renderer-host[data-label-tier="compact"] .g6-card-title-full{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.g6-renderer-host[data-label-tier="compact"] .g6-card-meta,
.g6-renderer-host[data-label-tier="compact"] .g6-card-coverage{
  display:none!important;
}

/* Normal navigation: retain the complete semantic context on every node. */
.g6-renderer-host[data-label-tier="standard"] .g6-ontology-card{
  gap:2px;
  padding:6px 9px;
}
.g6-renderer-host[data-label-tier="standard"] .g6-card-title{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:3;
  white-space:normal;
  font-size:var(--g6-title-px,11.5px);
  line-height:1.15;
}
.g6-renderer-host[data-label-tier="standard"] .depth-0 .g6-card-title{
  font-size:var(--g6-title-px,15px);
}
.g6-renderer-host[data-label-tier="standard"] .g6-card-title-full{
  display:block;
}
.g6-renderer-host[data-label-tier="standard"] .g6-card-meta{
  display:block!important;
  flex:0 0 auto;
  font-size:var(--g6-meta-px,8.5px);
}
.g6-renderer-host[data-label-tier="standard"] .g6-card-coverage{
  display:block!important;
  flex:0 0 auto;
  margin-top:0;
  padding:1px 5px;
  font-size:var(--g6-coverage-px,8px);
}

/* Close-up: maximise the name and progressively restore all metadata. */
.g6-renderer-host[data-label-tier="expanded"] .g6-ontology-card{
  gap:2px;
  padding:6px 9px;
}
.g6-renderer-host[data-label-tier="expanded"] .g6-card-title{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:4;
  white-space:normal;
  font-size:var(--g6-title-px,11.5px);
  line-height:1.13;
}
.g6-renderer-host[data-label-tier="expanded"] .depth-0 .g6-card-title{
  font-size:var(--g6-title-px,15px);
}
.g6-renderer-host[data-label-tier="expanded"] .g6-card-title-full{
  display:block;
}
.g6-renderer-host[data-label-tier="expanded"] .g6-card-meta{
  display:block!important;
  font-size:var(--g6-meta-px,8.5px);
}
.g6-renderer-host[data-label-tier="expanded"] .g6-card-coverage{
  display:block!important;
  margin-top:0;
  padding:1px 5px;
  font-size:var(--g6-coverage-px,8px);
}


/* At readable zoom levels, no ontology depth may crop the title or hide
   metadata. Only compact/overview tiers remove secondary information. */
.g6-renderer-host[data-label-tier="standard"] .g6-card-title,
.g6-renderer-host[data-label-tier="expanded"] .g6-card-title{
  flex:1 1 auto;
}
.g6-renderer-host[data-label-tier="standard"] .g6-card-meta,
.g6-renderer-host[data-label-tier="standard"] .g6-card-coverage,
.g6-renderer-host[data-label-tier="expanded"] .g6-card-meta,
.g6-renderer-host[data-label-tier="expanded"] .g6-card-coverage{
  visibility:visible;
}

/* Stateless drag cursor: no JavaScript class can leave the hand stuck. */
.g6-renderer-host canvas,
.g6-renderer-host svg{
  cursor:grab;
}
.g6-renderer-host:active canvas,
.g6-renderer-host:active svg{
  cursor:grabbing;
}
.g6-renderer-host .g6-ontology-card,
.g6-renderer-host:active .g6-ontology-card{
  cursor:pointer;
}


/* v0.1.0 — responsive internal workspace and collapsible sheet pane */
.mindmap-layout{
  container-type:inline-size;
  transition:grid-template-columns 180ms ease;
}

.details-panel-toggle{
  white-space:nowrap;
}

.splitter-toggle{
  position:absolute;
  z-index:4;
  left:50%;
  top:18px;
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  transform:translateX(-50%);
  border:1px solid #c6dcda;
  border-radius:999px;
  background:#fff;
  color:#075f63;
  box-shadow:0 3px 10px rgba(16,64,53,.12);
  cursor:pointer;
  padding:0;
}

.splitter-toggle:hover,
.splitter-toggle:focus-visible{
  background:#075f63;
  color:#fff;
  outline:none;
}

.splitter-toggle>span[aria-hidden="true"]{
  display:block;
  font-size:20px;
  line-height:1;
  transform:translateY(-1px);
}

.mindmap-layout.details-collapsed{
  grid-template-columns:minmax(0,1fr) 30px 0!important;
}

.mindmap-layout.details-collapsed .node-details{
  display:none!important;
}

.mindmap-layout.details-collapsed .panel-splitter{
  min-width:30px;
}

.mindmap-layout.details-collapsed .panel-splitter::before,
.mindmap-layout.details-collapsed .panel-splitter>span:not(.sr-only){
  opacity:.35;
}

.mindmap-layout.details-collapsed .splitter-toggle{
  left:50%;
}

.mindmap-layout[data-workspace-size="compact"]{
  grid-template-columns:
    minmax(340px,1fr)
    14px
    minmax(280px,var(--details-width))!important;
}

.mindmap-layout[data-workspace-size="narrow"]:not(.details-collapsed){
  grid-template-columns:1fr!important;
  height:auto!important;
  min-height:0!important;
}

.mindmap-layout[data-workspace-size="narrow"]:not(.details-collapsed) .panel-splitter{
  display:none!important;
}

.mindmap-layout[data-workspace-size="narrow"]:not(.details-collapsed) .ontology-viewport-panel,
.mindmap-layout[data-workspace-size="narrow"]:not(.details-collapsed) .node-details{
  min-width:0;
  width:100%!important;
}

.mindmap-layout[data-workspace-size="narrow"]:not(.details-collapsed) .mindmap-canvas{
  height:max(480px,58vh)!important;
  border-radius:.85rem!important;
}

.mindmap-layout[data-workspace-size="narrow"]:not(.details-collapsed) .node-details{
  max-height:none!important;
  border-radius:.85rem!important;
}

.mindmap-layout[data-workspace-size="narrow"].details-collapsed{
  grid-template-columns:minmax(0,1fr) 30px 0!important;
}

@container (max-width:820px){
  .map-tools{
    align-items:center;
    flex-wrap:wrap;
  }

  .map-tool-spacer{
    display:none;
  }

  .map-depth-controls{
    flex:1 1 100%;
  }
}

@container (max-width:620px){
  .details-panel-toggle{
    order:-1;
  }

  .map-renderer-toggle{
    min-width:auto;
  }
}


/* v0.1.0 — anchored viewport resize and true sheet-panel collapse */
#mindmapLayout{
  --details-track-width:var(--details-width,50%);
  --mindmap-splitter-width:18px;
}

#mindmapLayout,
#mindmapLayout[style],
#mindmapLayout[data-workspace-size="wide"],
#mindmapLayout[data-workspace-size="compact"]{
  grid-template-columns:
    minmax(0,1fr)
    var(--mindmap-splitter-width)
    minmax(0,var(--details-track-width))!important;
  transition:grid-template-columns 220ms cubic-bezier(.2,.75,.25,1);
}

#mindmapLayout.details-collapsed,
#mindmapLayout[data-workspace-size="wide"].details-collapsed,
#mindmapLayout[data-workspace-size="compact"].details-collapsed,
#mindmapLayout[data-workspace-size="narrow"].details-collapsed{
  grid-template-columns:
    minmax(0,1fr)
    var(--mindmap-splitter-width)
    minmax(0,0px)!important;
}

#mindmapLayout .node-details{
  display:block!important;
  min-width:0!important;
  opacity:1;
  visibility:visible;
  transition:
    opacity 120ms ease 80ms,
    visibility 0s linear 0s;
}

#mindmapLayout.details-collapsed .node-details{
  display:block!important;
  overflow:hidden!important;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:
    opacity 80ms ease,
    visibility 0s linear 220ms;
}

#mindmapLayout .panel-splitter,
#mindmapLayout.details-collapsed .panel-splitter{
  display:block;
  min-width:var(--mindmap-splitter-width);
  width:var(--mindmap-splitter-width);
}

#mindmapLayout .panel-splitter::before,
#mindmapLayout.details-collapsed .panel-splitter::before{
  opacity:1;
}

#mindmapLayout .splitter-toggle{
  position:absolute;
  z-index:4;
  left:50%;
  top:8px;
  width:32px;
  height:24px;
  transform:translateX(-50%);
  appearance:none!important;
  -webkit-appearance:none!important;
  display:block;
  overflow:visible;
  margin:0;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:none!important;
  box-shadow:none!important;
  outline:0!important;
  color:#075f63;
  font-size:0;
  line-height:0;
  cursor:pointer;
}

#mindmapLayout .splitter-toggle::before,
#mindmapLayout .splitter-toggle::after{
  content:"";
  position:absolute;
  top:50%;
  width:0;
  height:0;
  transform:translateY(-50%);
  border-top:5px solid transparent;
  border-bottom:5px solid transparent;
  background:transparent!important;
  box-shadow:none!important;
  opacity:.82;
  transition:opacity 120ms ease,transform 120ms ease;
}

/* The divider line is at 50%. Each triangle sits on one side of it. */
#mindmapLayout .splitter-toggle::before{
  right:calc(50% + 2px);
  border-right:7px solid currentColor;
}

#mindmapLayout .splitter-toggle::after{
  left:calc(50% + 2px);
  border-left:7px solid currentColor;
}

#mindmapLayout .splitter-toggle:hover::before,
#mindmapLayout .splitter-toggle:hover::after,
#mindmapLayout .splitter-toggle:focus-visible::before,
#mindmapLayout .splitter-toggle:focus-visible::after{
  opacity:1;
}

#mindmapLayout .splitter-toggle[data-action="collapse"]:hover::before{
  transform:translate(-1px,-50%);
}

#mindmapLayout .splitter-toggle[data-action="expand"]:hover::after{
  transform:translate(1px,-50%);
}

@media(max-width:900px){
  #mindmapLayout:not(.details-collapsed){
    grid-template-columns:1fr!important;
  }

  #mindmapLayout:not(.details-collapsed) .panel-splitter{
    display:none!important;
  }

  #mindmapLayout.details-collapsed .panel-splitter{
    display:block!important;
  }
}

/* Long ontology labels keep their complete wording without changing the
   graph layout. The font and line budget adapt to the title length. */
.g6-renderer-host[data-label-tier="standard"] .g6-ontology-card.title-long .g6-card-title{
  -webkit-line-clamp:4;
  font-size:calc(var(--g6-title-px,11.5px) * .88);
  line-height:1.10;
}
.g6-renderer-host[data-label-tier="standard"] .g6-ontology-card.title-xlong .g6-card-title{
  -webkit-line-clamp:6;
  font-size:calc(var(--g6-title-px,11.5px) * .76);
  line-height:1.06;
}
.g6-renderer-host[data-label-tier="expanded"] .g6-ontology-card.title-long .g6-card-title{
  -webkit-line-clamp:5;
  font-size:calc(var(--g6-title-px,11.5px) * .86);
  line-height:1.08;
}
.g6-renderer-host[data-label-tier="expanded"] .g6-ontology-card.title-xlong .g6-card-title{
  -webkit-line-clamp:6;
  font-size:calc(var(--g6-title-px,11.5px) * .75);
  line-height:1.04;
}


/* v0.1.0 — readable hierarchy between ontology levels.
   Card geometry is computed in model space; these rules only reinforce the
   visual hierarchy while preserving complete title and metadata rendering. */
.g6-ontology-card.depth-0{padding:11px 14px;gap:4px;}
.g6-ontology-card.depth-1{padding:9px 12px;gap:3px;}
.g6-ontology-card.depth-2{padding:8px 11px;gap:3px;}
.g6-ontology-card.depth-3,
.g6-ontology-card.depth-4,
.g6-ontology-card.depth-5,
.g6-ontology-card.depth-6{padding:7px 10px;gap:2px;}
.g6-renderer-host[data-label-tier="standard"] .g6-ontology-card.depth-0,
.g6-renderer-host[data-label-tier="expanded"] .g6-ontology-card.depth-0{padding:10px 13px;}
.g6-renderer-host[data-label-tier="standard"] .g6-ontology-card.depth-1,
.g6-renderer-host[data-label-tier="expanded"] .g6-ontology-card.depth-1{padding:8px 11px;}
.g6-renderer-host[data-label-tier="standard"] .g6-ontology-card.depth-2,
.g6-renderer-host[data-label-tier="expanded"] .g6-ontology-card.depth-2{padding:7px 10px;}
.g6-renderer-host[data-label-tier="standard"] .g6-ontology-card.depth-3,
.g6-renderer-host[data-label-tier="standard"] .g6-ontology-card.depth-4,
.g6-renderer-host[data-label-tier="expanded"] .g6-ontology-card.depth-3,
.g6-renderer-host[data-label-tier="expanded"] .g6-ontology-card.depth-4{padding:6px 9px;}

/* v0.2.0 — Tiptap rich-text editor */
.rich-editor-wrap{
  border:1px solid rgba(16,64,53,.20);
  border-radius:14px;
  background:#fff;
  overflow:hidden;
  margin:8px 0 16px;
  box-shadow:0 7px 22px rgba(16,64,53,.07);
  transition:border-color .16s ease,box-shadow .16s ease;
}
.rich-editor-wrap.is-focused{
  border-color:var(--fbi-teal);
  box-shadow:0 0 0 3px rgba(0,190,160,.12),0 8px 24px rgba(16,64,53,.08);
}
.rich-toolbar{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px;
  padding:8px 10px;
  background:linear-gradient(90deg,rgba(111,202,182,.15),rgba(108,108,188,.08));
  border-bottom:1px solid rgba(16,64,53,.12);
}
.rich-tool-group{display:inline-flex;align-items:center;gap:4px;padding-right:7px;border-right:1px solid rgba(16,64,53,.14)}
.rich-tool-group:last-child{border-right:0;padding-right:0;margin-left:auto}
.rich-tool-group-block{min-width:128px}
.rich-block-select{
  width:auto;
  min-width:124px;
  height:34px;
  margin:0;
  padding:4px 28px 4px 9px;
  border:1px solid rgba(16,64,53,.20);
  border-radius:8px;
  background:#fff;
  color:var(--fbi-deep);
  font-size:.82rem;
  font-weight:700;
}
.rich-toolbar .rich-tool{
  display:inline-flex;
  justify-content:center;
  align-items:center;
  min-width:32px;
  min-height:32px;
  margin:0;
  padding:5px 8px;
  border:1px solid transparent;
  border-radius:7px;
  background:transparent;
  color:#263b37;
  font:inherit;
  font-size:.82rem;
  line-height:1;
  cursor:pointer;
}
.rich-toolbar .rich-tool:hover{background:rgba(255,255,255,.88);border-color:rgba(16,64,53,.14);color:var(--fbi-deep)}
.rich-toolbar .rich-tool.is-active{background:var(--fbi-deep);border-color:var(--fbi-deep);color:#fff}
.rich-toolbar .rich-tool:disabled{opacity:.32;cursor:not-allowed;background:transparent;color:#667}
.rich-editor{min-height:0;padding:0;outline:0;color:#333434}
.rich-editor-loading{min-height:190px;padding:15px 17px}
.rich-editor-tiptap>.tiptap{
  min-height:210px;
  padding:16px 18px 24px;
  outline:0;
  line-height:1.58;
  color:#2c3634;
  overflow-wrap:anywhere;
}
.rich-editor-tiptap>.tiptap>*:first-child{margin-top:0}
.rich-editor-tiptap>.tiptap>*:last-child{margin-bottom:0}
.tiptap p{margin:.35em 0 .85em}
.tiptap h1,.rendered-content h1{
  margin:1.05em 0 .42em;
  font-family:"Century Gothic",Calibri,Arial,sans-serif;
  color:#104035;
  font-size:1.62rem;
  line-height:1.2;
}
.tiptap h2,.rendered-content h2{
  margin:.95em 0 .38em;
  font-family:"Century Gothic",Calibri,Arial,sans-serif;
  color:#176b5a;
  font-size:1.34rem;
  line-height:1.24;
}
.tiptap h3,.rendered-content h3{
  margin:.85em 0 .34em;
  font-family:"Century Gothic",Calibri,Arial,sans-serif;
  color:#238c75;
  font-size:1.12rem;
  line-height:1.28;
}
.tiptap ul,.tiptap ol,.rendered-content ul,.rendered-content ol{padding-left:1.55rem;margin:.45em 0 .9em}
.tiptap li>p,.rendered-content li>p{margin:.15em 0}
.tiptap blockquote,.rendered-content blockquote{
  margin:1em 0;
  padding:.55rem .9rem;
  border-left:4px solid var(--fbi-mint);
  background:#f4fbf9;
  color:#3d514d;
}
.tiptap hr,.rendered-content hr{border:0;border-top:2px solid #dcecea;margin:1.25rem 0}
.tiptap a,.rendered-content a{color:#176b5a;font-weight:700;text-decoration-thickness:.08em;text-underline-offset:.14em}
.tiptap img,.rendered-content img{
  display:block;
  max-width:100%;
  height:auto;
  margin:1rem auto;
  border-radius:10px;
  box-shadow:0 7px 20px rgba(16,64,53,.12);
}
.tiptap img.ProseMirror-selectednode{outline:3px solid var(--fbi-purple);outline-offset:3px}
.tiptap p.is-editor-empty:first-child::before{
  content:attr(data-placeholder);
  float:left;
  height:0;
  color:#899894;
  pointer-events:none;
}
.rendered-content{line-height:1.58;color:#333434;overflow-wrap:anywhere}
.media-card .insert-rich-image{display:block;width:100%;margin:9px 0 4px;font-size:.78rem}
@media(max-width:760px){
  .rich-tool-group{border-right:0;padding-right:0}
  .rich-tool-group:last-child{margin-left:0}
  .rich-editor-tiptap>.tiptap{min-height:180px;padding:14px}
}

/* v0.2.0 — separated sheet workspaces and contextual ontology arrival */
#mindmapLayout .node-details{
  padding:0!important;
  background:#fff;
}
#nodeDetails>.portal-eyebrow:first-child,
#nodeDetails>h3:first-of-type,
#nodeDetails>p:not(.portal-eyebrow),
#nodeDetails>.empty-state,
#nodeDetails>.smallbtn{
  margin-left:18px;
  margin-right:18px;
}
#nodeDetails>.portal-eyebrow:first-child{margin-top:18px}
.sheet-panel-shell{min-height:100%;background:#fff}
.sheet-panel-header{
  position:sticky;
  top:0;
  z-index:8;
  padding:16px 18px 0;
  border-bottom:1px solid #dce8e5;
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(10px);
  box-shadow:0 7px 18px rgba(16,64,53,.045);
}
.sheet-identity-row{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin-bottom:8px}
.sheet-panel-header h3{
  margin:0 0 12px;
  color:var(--fbi-deep);
  font-family:'Century Gothic','Avenir Next',Arial,sans-serif;
  font-size:1.25rem;
  line-height:1.24;
  overflow-wrap:anywhere;
}
.sheet-language-control{
  display:grid;
  grid-template-columns:auto minmax(110px,1fr);
  gap:5px 10px;
  align-items:center;
  margin-bottom:12px;
}
.sheet-language-control label{font-size:.78rem;font-weight:800;color:#526761}
.sheet-language-control select{margin:0;padding:7px 9px;font-size:.85rem}
.sheet-language-control .language-badges{grid-column:1/-1;margin:0}
.sheet-tabs{
  display:flex;
  gap:2px;
  margin:0 -4px;
  overflow-x:auto;
  scrollbar-width:thin;
}
.sheet-tab{
  appearance:none;
  border:0;
  border-bottom:3px solid transparent;
  border-radius:8px 8px 0 0;
  padding:9px 11px 8px;
  background:transparent;
  color:#586b67;
  font:inherit;
  font-size:.82rem;
  font-weight:800;
  white-space:nowrap;
  cursor:pointer;
}
.sheet-tab:hover{background:#eef8f5;color:var(--fbi-deep)}
.sheet-tab.active{
  border-bottom-color:var(--fbi-teal);
  background:#f3fbf9;
  color:var(--fbi-deep);
}
.sheet-tab:focus-visible{outline:3px solid rgba(0,190,160,.22);outline-offset:-3px}
.sheet-tab .mini-count{margin-left:3px;background:#dcefeb}
.sheet-tab-stage{padding:18px}
.sheet-tab-panel[hidden]{display:none!important}
.sheet-tab-panel{min-width:0}
.sheet-lead{
  margin:0 0 16px;
  padding:12px 14px;
  border-left:4px solid var(--fbi-mint);
  border-radius:0 10px 10px 0;
  background:#f4fbf9;
  color:#40534f;
  line-height:1.45;
}
.sheet-rendered-content{font-size:.95rem}
.sheet-rendered-content:empty::before{content:'No main content has been written yet.';color:#74847f;font-style:italic}
.sheet-section-heading{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  margin-bottom:10px;
}
.sheet-section-heading .portal-eyebrow{margin:0 0 3px}
.sheet-section-heading h4{margin:0;color:var(--fbi-deep);font-size:1rem}
.sheet-supporting-overview{
  margin-top:24px;
  padding-top:16px;
  border-top:1px solid #dce8e5;
}
.supporting-preview-list{display:grid;gap:9px}
.supporting-preview-card{
  padding:11px 12px;
  border:1px solid #dde9e6;
  border-radius:12px;
  background:#fbfefd;
}
.supporting-preview-card strong{display:block;margin-top:7px;color:var(--fbi-deep)}
.supporting-preview-card p{margin:5px 0 0;color:#60716d;font-size:.84rem;line-height:1.35}
.sheet-edit-form{margin:0;padding:0;border-top:0}
.sheet-editor-actions{
  position:sticky;
  bottom:-18px;
  z-index:5;
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:8px;
  margin:10px -18px -18px;
  padding:11px 18px;
  border-top:1px solid #dce8e5;
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(8px);
}
.sheet-save-state{margin-right:auto;color:#657772;font-size:.78rem;font-weight:700}
.sheet-save-state.is-dirty{color:#8b5d18}
.sheet-media-library{
  margin-top:30px;
  padding-top:18px;
  border-top:2px solid #dce8e5;
}
.sheet-media-library .media-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
.supporting-sheet-form{margin-top:24px}
#sheetTabSupporting>details{
  margin-bottom:10px;
  padding:10px 12px;
  border:1px solid #dde9e6;
  border-radius:12px;
  background:#fbfefd;
}
#sheetTabSupporting>details>summary{cursor:pointer;font-weight:800;color:var(--fbi-deep)}
.g6-ontology-card.context-related{
  box-shadow:0 0 0 3px rgba(111,202,182,.18),0 9px 24px rgba(16,64,53,.18);
}
.g6-ontology-card.context-path{
  border-color:#238c75;
  filter:saturate(1.08);
}
.g6-ontology-card.context-target{
  outline:5px solid rgba(0,190,160,.30);
  outline-offset:4px;
  border-color:#104035;
  box-shadow:0 14px 34px rgba(16,64,53,.30);
}
@media(max-width:760px){
  .sheet-panel-header{padding:14px 14px 0}
  .sheet-tab-stage{padding:14px}
  .sheet-language-control{grid-template-columns:1fr}
  .sheet-language-control .language-badges{grid-column:auto}
  .sheet-editor-actions{bottom:-14px;margin:10px -14px -14px;padding:10px 14px;flex-wrap:wrap}
  .sheet-save-state{flex-basis:100%}
}
.supporting-preview-card>summary{list-style:none;cursor:pointer}
.supporting-preview-card>summary::-webkit-details-marker{display:none}
.supporting-preview-card>summary::after{content:'▾';float:right;margin-left:8px;color:#238c75;transition:transform 120ms ease}
.supporting-preview-card[open]>summary::after{transform:rotate(180deg)}
.supporting-preview-title{display:block;padding-right:18px;color:var(--fbi-deep);font-weight:800}
.supporting-preview-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}
.supporting-preview-card summary small{display:block;margin-top:6px;padding-right:18px;color:#60716d;font-size:.8rem;line-height:1.35}
.supporting-preview-content{margin-top:10px;padding-top:10px;border-top:1px solid #e1ebe8;font-size:.9rem}

.supporting-preview-card h5{margin:14px 0 4px;color:var(--fbi-deep);font-size:.82rem;text-transform:uppercase;letter-spacing:.05em}
.supporting-empty .empty-state{margin:0}
.supporting-heading{margin-bottom:12px}

/* v0.2.0 — richer sticky Tiptap toolbar, image picker and resizable media */
.sheet-panel-shell{--sheet-panel-header-height:164px;}
.sheet-tab-panel .rich-editor-wrap{
  overflow:visible;
  isolation:isolate;
}
#sheetTabEdit .rich-toolbar,
#sheetTabSupporting .rich-toolbar{
  position:sticky;
  top:calc(var(--sheet-panel-header-height,164px) - 1px);
  z-index:7;
  border:1px solid rgba(16,64,53,.16);
  border-left:0;
  border-right:0;
  box-shadow:0 8px 18px rgba(16,64,53,.10);
  backdrop-filter:blur(10px);
}
.rich-toolbar{
  gap:5px 7px;
  padding:8px;
  background:rgba(244,251,249,.97);
}
.rich-tool-group{
  gap:3px;
  padding:3px 6px 3px 0;
}
.rich-tool-group-insert{
  padding:3px 6px;
  border-radius:9px;
  background:rgba(111,202,182,.12);
}
.rich-toolbar .rich-tool{
  min-width:31px;
  min-height:31px;
  padding:5px 7px;
  background:#fff;
  border-color:rgba(16,64,53,.12);
  box-shadow:0 1px 2px rgba(16,64,53,.04);
}
.rich-toolbar .rich-tool-image{
  min-width:58px;
  background:#104035;
  border-color:#104035;
  color:#fff;
  font-weight:800;
}
.rich-toolbar .rich-tool-image:hover,
.rich-toolbar .rich-tool-image:focus-visible{
  background:#238c75;
  border-color:#238c75;
  color:#fff;
}
.rich-image-size-select{
  width:auto;
  min-width:72px;
  height:31px;
  margin:0;
  padding:4px 24px 4px 7px;
  border:1px solid rgba(16,64,53,.16);
  border-radius:7px;
  background:#fff;
  color:var(--fbi-deep);
  font-size:.78rem;
  font-weight:700;
}
.rich-image-size-select:disabled{opacity:.38;cursor:not-allowed;}
.rich-toolbar .rich-tool-align{padding:5px 6px;}
.rich-align-icon{display:block;width:18px;height:18px;fill:currentColor;}
.rich-editor-tiptap{
  overflow:visible;
  border-radius:0 0 13px 13px;
  background:#fff;
}
.tiptap h4,.rendered-content h4{
  margin:.8em 0 .32em;
  font-family:"Century Gothic",Calibri,Arial,sans-serif;
  color:#3f786d;
  font-size:1rem;
  line-height:1.3;
}
.tiptap code,.rendered-content code{
  padding:.1em .34em;
  border-radius:5px;
  background:#edf4f2;
  color:#23463f;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:.88em;
}
.tiptap pre,.rendered-content pre{
  overflow:auto;
  margin:1rem 0;
  padding:.8rem 1rem;
  border-radius:10px;
  background:#243632;
  color:#f4fbf9;
}
.tiptap pre code,.rendered-content pre code{padding:0;background:transparent;color:inherit;}

/* Tiptap 3 ResizableNodeView: keep the wrapper inside the editor width so
   the four handles remain visible even for source images larger than the pane. */
.tiptap [data-resize-container]{
  display:flex!important;
  justify-content:center;
  width:100%;
  max-width:100%;
  margin:1rem auto;
  overflow:visible;
}
.tiptap [data-resize-wrapper]{
  position:relative;
  display:block;
  width:fit-content;
  max-width:100%;
  line-height:0;
  overflow:visible;
}
.tiptap [data-resize-wrapper] img{
  display:block;
  max-width:100%;
  margin:0;
  object-fit:contain;
}
.tiptap [data-resize-handle]{
  position:absolute;
  z-index:12;
  width:15px;
  height:15px;
  border:2px solid #fff;
  border-radius:50%;
  background:var(--fbi-teal);
  box-shadow:0 0 0 1px rgba(16,64,53,.55),0 3px 7px rgba(16,64,53,.28);
  opacity:0;
  pointer-events:none;
  transition:opacity .12s ease,transform .12s ease;
}
.tiptap [data-resize-container]:hover [data-resize-handle],
.tiptap [data-resize-container].ProseMirror-selectednode [data-resize-handle],
.tiptap [data-resize-wrapper].ProseMirror-selectednode [data-resize-handle],
.tiptap .ProseMirror-selectednode [data-resize-handle],
.tiptap [data-resize-container]:has(img.ProseMirror-selectednode) [data-resize-handle],
.tiptap [data-resize-container][data-resize-state="resizing"] [data-resize-handle]{
  opacity:1;
  pointer-events:auto;
}
.tiptap [data-resize-container].ProseMirror-selectednode [data-resize-wrapper],
.tiptap [data-resize-wrapper].ProseMirror-selectednode,
.tiptap [data-resize-container]:has(img.ProseMirror-selectednode) [data-resize-wrapper],
.tiptap [data-resize-container]:focus-within [data-resize-wrapper]{
  outline:3px solid rgba(108,108,188,.52);
  outline-offset:4px;
  border-radius:10px;
}
.tiptap [data-resize-handle]:hover{transform:scale(1.16);}
.tiptap [data-resize-handle*="top"]{top:-8px!important;}
.tiptap [data-resize-handle*="bottom"]{bottom:-8px!important;}
.tiptap [data-resize-handle*="left"]{left:-8px!important;}
.tiptap [data-resize-handle*="right"]{right:-8px!important;}
.tiptap [data-resize-handle="top-left"],
.tiptap [data-resize-handle="bottom-right"]{cursor:nwse-resize;}
.tiptap [data-resize-handle="top-right"],
.tiptap [data-resize-handle="bottom-left"]{cursor:nesw-resize;}
.tiptap [data-resize-container][data-resize-state="resizing"],
.tiptap [data-resize-container].is-resizing{
  outline:2px solid rgba(0,190,160,.38);
  outline-offset:5px;
}

.rich-image-picker{
  width:min(760px,calc(100vw - 32px));
  max-height:min(78vh,760px);
  padding:0;
  border:0;
  border-radius:18px;
  background:#fff;
  color:#333434;
  box-shadow:0 26px 70px rgba(16,64,53,.28);
}
.rich-image-picker::backdrop{background:rgba(15,40,35,.46);backdrop-filter:blur(2px);}
.rich-image-picker.is-open{display:block;position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);z-index:1000;}
.rich-image-picker-card{display:flex;flex-direction:column;max-height:min(78vh,760px);}
.rich-image-picker-card>header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  padding:17px 18px 12px;
  border-bottom:1px solid #dce8e5;
}
.rich-image-picker-card .portal-eyebrow{margin:0 0 2px;}
.rich-image-picker-card h4{margin:0;color:var(--fbi-deep);font-size:1.15rem;}
.rich-image-picker-card>p{margin:0;padding:12px 18px;color:#60716d;}
.rich-image-picker-close{
  appearance:none;
  width:32px;
  height:32px;
  border:0;
  border-radius:50%;
  background:#edf6f4;
  color:var(--fbi-deep);
  font-size:1.35rem;
  line-height:1;
  cursor:pointer;
}
.rich-image-picker-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(170px,1fr));
  gap:10px;
  overflow:auto;
  padding:4px 18px 18px;
}
.rich-image-choice{
  appearance:none;
  display:grid;
  grid-template-rows:120px auto;
  min-width:0;
  padding:0;
  overflow:hidden;
  border:1px solid #d7e6e2;
  border-radius:12px;
  background:#fff;
  color:#263b37;
  text-align:left;
  cursor:pointer;
}
.rich-image-choice:hover,
.rich-image-choice:focus-visible{border-color:var(--fbi-teal);box-shadow:0 0 0 3px rgba(0,190,160,.12);outline:0;}
.rich-image-choice img{width:100%;height:120px;object-fit:contain;background:#f4f8f7;}
.rich-image-choice span{display:grid;gap:2px;padding:9px 10px;min-width:0;}
.rich-image-choice strong,.rich-image-choice small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rich-image-choice small{color:#667b76;}
.rich-image-picker-card>footer{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  padding:12px 18px;
  border-top:1px solid #dce8e5;
  background:#f8fbfa;
}

@media(max-width:760px){
  #sheetTabEdit .rich-toolbar,
  #sheetTabSupporting .rich-toolbar{top:calc(var(--sheet-panel-header-height,188px) - 1px);}
  .rich-toolbar{align-items:stretch;}
  .rich-tool-group{border-right:0;}
  .rich-image-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .rich-image-picker-card>footer{flex-wrap:wrap;}
}

/* v0.2.0 — editor cursor and precise image dimensions */
/* The insert-image command is a normal toolbar action. It must not look
   permanently active or more important than the other insertion tools. */
.rich-toolbar .rich-tool-image{
  min-width:58px;
  background:#fff;
  border-color:rgba(16,64,53,.12);
  color:#263b37;
  font-weight:700;
}
.rich-toolbar .rich-tool-image:hover,
.rich-toolbar .rich-tool-image:focus-visible{
  background:rgba(255,255,255,.88);
  border-color:rgba(16,64,53,.24);
  color:var(--fbi-deep);
}

/* A resizable image node uses a full-width outer container. Let pointer
   events pass through the empty margins so a text cursor/gap cursor can be
   placed before or after the image. Only the visible image wrapper and its
   handles are interactive. */
.tiptap [data-resize-container]{pointer-events:none;}
.tiptap [data-resize-wrapper],
.tiptap [data-resize-wrapper] img{pointer-events:auto;}
.tiptap [data-resize-wrapper]{cursor:default;}
.tiptap [data-resize-wrapper] img{cursor:pointer;}

.rich-image-properties-dialog{
  width:min(520px,calc(100vw - 32px));
  padding:0;
  border:0;
  border-radius:18px;
  background:#fff;
  color:#333434;
  box-shadow:0 26px 70px rgba(16,64,53,.30);
}
.rich-image-properties-dialog::backdrop{
  background:rgba(15,40,35,.46);
  backdrop-filter:blur(2px);
}
.rich-image-properties-dialog.is-open{
  display:block;
  position:fixed;
  inset:50% auto auto 50%;
  z-index:1100;
  transform:translate(-50%,-50%);
}
.rich-image-properties-card{padding:0;margin:0;}
.rich-image-properties-card>header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:18px;
  padding:18px 20px 14px;
  border-bottom:1px solid #dfeae7;
}
.rich-image-properties-card h4{margin:2px 0 0;color:var(--fbi-deep);font-size:1.12rem;}
.rich-image-properties-close{
  display:grid;
  place-items:center;
  width:32px;
  height:32px;
  margin:0;
  padding:0;
  border:1px solid rgba(16,64,53,.18);
  border-radius:50%;
  background:#fff;
  color:var(--fbi-deep);
  font-size:1.25rem;
  line-height:1;
  cursor:pointer;
}
.rich-image-properties-help{
  margin:0;
  padding:15px 20px 4px;
  color:#52645f;
  font-size:.9rem;
  line-height:1.45;
}
.rich-image-properties-fields{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
  padding:14px 20px 10px;
}
.rich-image-properties-fields label{
  display:grid;
  grid-template-columns:1fr auto;
  align-items:end;
  gap:4px 8px;
  margin:0;
  color:var(--fbi-deep);
  font-size:.84rem;
  font-weight:800;
}
.rich-image-properties-fields label span{color:#71807d;font-weight:600;}
.rich-image-properties-fields input{
  grid-column:1/-1;
  width:100%;
  margin:0;
  padding:9px 10px;
  border:1px solid rgba(16,64,53,.22);
  border-radius:9px;
  font:inherit;
}
.rich-image-ratio-lock{
  display:flex;
  align-items:center;
  gap:8px;
  margin:4px 20px 0;
  padding:10px 12px;
  border-radius:10px;
  background:#f2faf8;
  color:var(--fbi-deep);
  font-weight:750;
}
.rich-image-ratio-lock input{width:auto;margin:0;}
.rich-image-ratio-lock small{margin-left:auto;color:#657773;font-weight:600;}
.rich-image-natural-size{margin:9px 20px 0;color:#70817d;font-size:.8rem;}
.rich-image-properties-card>footer{
  display:grid;
  grid-template-columns:auto 1fr auto auto;
  gap:8px;
  align-items:center;
  padding:16px 20px 18px;
}
@media(max-width:560px){
  .rich-image-properties-fields{grid-template-columns:1fr;}
  .rich-image-properties-card>footer{grid-template-columns:1fr 1fr;}
  .rich-image-properties-card>footer>span{display:none;}
}

/* v0.2.0 — stable text cursor and first-party resizable image node view
   The previous full-width ResizableNodeView wrapper captured clicks in the
   editor and could leave handles out of sync with the visible image. */
.rich-editor-tiptap>.tiptap{
  cursor:text;
}
.rich-editor-tiptap>.tiptap p,
.rich-editor-tiptap>.tiptap h1,
.rich-editor-tiptap>.tiptap h2,
.rich-editor-tiptap>.tiptap h3,
.rich-editor-tiptap>.tiptap h4,
.rich-editor-tiptap>.tiptap li,
.rich-editor-tiptap>.tiptap blockquote{
  cursor:text;
}
.tiptap .fbi-image-node{
  position:relative;
  display:block;
  width:fit-content;
  max-width:calc(100% - 24px);
  margin:1rem auto;
  padding:0;
  border:0;
  line-height:0;
  cursor:default;
  user-select:none;
}
.tiptap .fbi-image-frame{
  position:relative;
  display:inline-block;
  width:fit-content;
  max-width:100%;
  line-height:0;
  vertical-align:top;
}
.tiptap .fbi-image-node img{
  display:block;
  width:auto;
  max-width:100%;
  margin:0!important;
  cursor:pointer;
  user-select:none;
  -webkit-user-drag:none;
}
.tiptap .fbi-image-node.is-selected .fbi-image-frame,
.tiptap .fbi-image-node.is-resizing .fbi-image-frame{
  outline:3px solid rgba(108,108,188,.62);
  outline-offset:5px;
  border-radius:10px;
}
.tiptap .fbi-image-handle{
  position:absolute;
  z-index:20;
  display:none;
  width:15px;
  height:15px;
  padding:0;
  border:2px solid #fff;
  border-radius:50%;
  background:var(--fbi-teal);
  box-shadow:0 0 0 1px rgba(16,64,53,.58),0 3px 8px rgba(16,64,53,.30);
  touch-action:none;
  pointer-events:auto;
}
.tiptap .fbi-image-node.is-selected .fbi-image-handle,
.tiptap .fbi-image-node.is-resizing .fbi-image-handle{
  display:block;
}
.tiptap .fbi-image-handle[data-direction="top-left"]{
  top:-9px;
  left:-9px;
  cursor:nwse-resize;
}
.tiptap .fbi-image-handle[data-direction="top-right"]{
  top:-9px;
  right:-9px;
  cursor:nesw-resize;
}
.tiptap .fbi-image-handle[data-direction="bottom-left"]{
  bottom:-9px;
  left:-9px;
  cursor:nesw-resize;
}
.tiptap .fbi-image-handle[data-direction="bottom-right"]{
  right:-9px;
  bottom:-9px;
  cursor:nwse-resize;
}
.tiptap .fbi-image-handle:hover{
  transform:scale(1.15);
}
.tiptap .fbi-image-node.is-resizing{
  cursor:grabbing;
}

/* v0.2.0 — reset editor interaction layer.
   Tiptap keeps its stock image node. Resize handles live in an independent
   overlay and therefore never replace or cover the editable ProseMirror DOM. */
.rich-editor-wrap{
  position:relative;
}
.rich-editor-tiptap .ProseMirror,
.rich-editor-tiptap>.tiptap{
  pointer-events:auto!important;
  user-select:text;
  -webkit-user-select:text;
  cursor:text;
}
.rich-editor-tiptap .ProseMirror[contenteditable="true"]{
  caret-color:var(--fbi-deep);
}
.rich-editor-tiptap .ProseMirror img{
  cursor:pointer;
  user-select:none;
  -webkit-user-drag:none;
}
.rich-editor-tiptap .ProseMirror img.ProseMirror-selectednode{
  outline:0;
}
.rich-image-selection-overlay{
  position:absolute;
  z-index:30;
  box-sizing:border-box;
  border:3px solid rgba(108,108,188,.68);
  border-radius:10px;
  pointer-events:none;
  box-shadow:0 0 0 2px rgba(255,255,255,.82);
}
.rich-image-selection-overlay[hidden]{display:none!important;}
.rich-image-selection-overlay.is-resizing{
  border-color:var(--fbi-teal);
}
.rich-image-selection-handle{
  position:absolute;
  width:15px;
  height:15px;
  box-sizing:border-box;
  border:2px solid #fff;
  border-radius:50%;
  background:var(--fbi-teal);
  box-shadow:0 0 0 1px rgba(16,64,53,.58),0 3px 8px rgba(16,64,53,.30);
  pointer-events:auto;
  touch-action:none;
}
.rich-image-selection-handle[data-direction="top-left"]{top:-9px;left:-9px;cursor:nwse-resize;}
.rich-image-selection-handle[data-direction="top-right"]{top:-9px;right:-9px;cursor:nesw-resize;}
.rich-image-selection-handle[data-direction="bottom-left"]{bottom:-9px;left:-9px;cursor:nesw-resize;}
.rich-image-selection-handle[data-direction="bottom-right"]{right:-9px;bottom:-9px;cursor:nwse-resize;}
.rich-image-selection-handle:hover{transform:scale(1.15);}
.rich-editor-fallback{
  min-height:210px;
  padding:16px 18px 24px;
  outline:0;
  line-height:1.58;
  cursor:text;
}
.rich-editor-warning{
  display:block;
  width:100%;
  padding:8px 10px;
  border-radius:8px;
  background:#fff4d8;
  color:#654b13;
  font-size:.82rem;
  line-height:1.35;
}

/* v0.2.0 — dual full-collapse controls on the ontology/sheet divider. */
#mindmapLayout.ontology-collapsed,
#mindmapLayout[data-workspace-size="wide"].ontology-collapsed,
#mindmapLayout[data-workspace-size="compact"].ontology-collapsed,
#mindmapLayout[data-workspace-size="narrow"].ontology-collapsed{
  grid-template-columns:
    minmax(0,0px)
    var(--mindmap-splitter-width)
    minmax(0,1fr)!important;
}
#mindmapLayout .ontology-viewport-panel{
  min-width:0;
  opacity:1;
  visibility:visible;
  transition:opacity 120ms ease 80ms,visibility 0s linear 0s;
}
#mindmapLayout.ontology-collapsed .ontology-viewport-panel{
  overflow:hidden!important;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity 80ms ease,visibility 0s linear 220ms;
}
#mindmapLayout .splitter-chevron-pair{
  position:absolute;
  z-index:5;
  top:8px;
  left:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:2px;
  width:38px;
  height:24px;
  transform:translateX(-50%);
  pointer-events:none;
}
#mindmapLayout .splitter-chevron{
  position:relative;
  appearance:none!important;
  -webkit-appearance:none!important;
  display:block;
  width:17px;
  height:22px;
  margin:0;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:none!important;
  box-shadow:none!important;
  color:#075f63;
  cursor:pointer;
  pointer-events:auto;
}
#mindmapLayout .splitter-chevron[hidden]{display:none!important;}
#mindmapLayout .splitter-chevron::before{
  content:"";
  position:absolute;
  top:50%;
  left:50%;
  width:0;
  height:0;
  transform:translate(-50%,-50%);
  border-top:5px solid transparent;
  border-bottom:5px solid transparent;
  opacity:.84;
  transition:opacity 120ms ease,transform 120ms ease;
}
#mindmapLayout .splitter-chevron[data-direction="left"]::before{
  border-right:7px solid currentColor;
}
#mindmapLayout .splitter-chevron[data-direction="right"]::before{
  border-left:7px solid currentColor;
}
#mindmapLayout .splitter-chevron:hover::before,
#mindmapLayout .splitter-chevron:focus-visible::before{opacity:1;}
#mindmapLayout .splitter-chevron[data-direction="left"]:hover::before{
  transform:translate(calc(-50% - 1px),-50%);
}
#mindmapLayout .splitter-chevron[data-direction="right"]:hover::before{
  transform:translate(calc(-50% + 1px),-50%);
}
#mindmapLayout .splitter-chevron:focus-visible{
  outline:2px solid rgba(0,190,160,.35)!important;
  outline-offset:0;
}
#mindmapLayout.ontology-collapsed .splitter-chevron-pair,
#mindmapLayout.details-collapsed .splitter-chevron-pair{
  width:24px;
}
@media(max-width:900px){
  #mindmapLayout.ontology-collapsed{
    display:grid!important;
    grid-template-columns:0 var(--mindmap-splitter-width) minmax(0,1fr)!important;
  }
  #mindmapLayout.details-collapsed{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) var(--mindmap-splitter-width) 0!important;
  }
  #mindmapLayout.ontology-collapsed .panel-splitter,
  #mindmapLayout.details-collapsed .panel-splitter{
    display:block!important;
  }
}

/* v0.2.0 — structured Word import, grouped rich toolbar and hierarchical cards */
#ontology{
  display:grid;
  gap:8px;
  padding:4px;
}
#ontology .tree-branch{
  min-width:0;
}
#ontology .tree-children{
  display:grid;
  gap:6px;
  margin:5px 0 0 14px;
  padding-left:10px;
  border-left:2px solid color-mix(in srgb,var(--tree-depth-color,#42ad95) 30%,#dfeae7);
}
#ontology .tree-children[hidden]{display:none!important}
#ontology .tree-node{
  display:flex;
  align-items:stretch;
  min-width:0;
  margin:0;
  padding:0!important;
  border:1px solid color-mix(in srgb,var(--tree-depth-color,#42ad95) 34%,#d7e4e1);
  border-left:5px solid var(--tree-depth-color,#42ad95);
  border-radius:11px;
  background:#fff;
  box-shadow:0 2px 8px rgba(16,64,53,.05);
  overflow:hidden;
}
#ontology .tree-node:hover{
  border-color:var(--tree-depth-color,#42ad95);
  background:color-mix(in srgb,var(--tree-depth-color,#42ad95) 7%,white);
}
#ontology .tree-node.selected{
  border-color:var(--tree-depth-color,#42ad95);
  background:color-mix(in srgb,var(--tree-depth-color,#42ad95) 14%,white);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--tree-depth-color,#42ad95) 20%,transparent),0 5px 14px rgba(16,64,53,.10);
}
#ontology .tree-toggle{
  flex:0 0 34px;
  display:grid;
  place-items:center;
  border:0;
  border-right:1px solid color-mix(in srgb,var(--tree-depth-color,#42ad95) 24%,#dce8e5);
  background:color-mix(in srgb,var(--tree-depth-color,#42ad95) 8%,white);
  color:var(--tree-depth-color,#42ad95);
  cursor:pointer;
}
#ontology .tree-toggle:disabled{cursor:default;opacity:.28}
#ontology .tree-toggle span{
  width:0;height:0;
  border-top:5px solid transparent;
  border-bottom:5px solid transparent;
  border-left:7px solid currentColor;
  transition:transform 140ms ease;
}
#ontology .tree-branch.is-expanded>.tree-node>.tree-toggle span{transform:rotate(90deg)}
#ontology .tree-select{
  flex:1 1 auto;
  min-width:0;
  display:flex;
  align-items:center;
  gap:9px;
  padding:9px 10px;
  border:0;
  background:transparent;
  color:#243d38;
  text-align:left;
  cursor:pointer;
}
#ontology .tree-level-mark{
  flex:0 0 11px;
  width:11px;height:11px;
  border-radius:50%;
  background:var(--tree-depth-color,#42ad95);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--tree-depth-color,#42ad95) 16%,transparent);
}
#ontology .tree-node-copy{min-width:0;display:flex;flex:1 1 auto;flex-direction:column;gap:2px}
#ontology .tree-node-copy strong{
  overflow:hidden;
  color:inherit;
  font-family:'Century Gothic','Avenir Next',Arial,sans-serif;
  font-size:.88rem;
  line-height:1.25;
  text-overflow:ellipsis;
}
#ontology .tree-node-copy small{
  color:#6a7a76;
  font-size:.68rem;
  font-weight:700;
  text-transform:capitalize;
}
#ontology .tree-node.depth-0{
  border-color:#103f42;
  border-left-color:#103f42;
  background:linear-gradient(135deg,#174d50,#286b6d);
}
#ontology .tree-node.depth-0 .tree-select{color:#fff}
#ontology .tree-node.depth-0 .tree-node-copy small{color:rgba(255,255,255,.75)}
#ontology .tree-node.depth-0 .tree-toggle{
  border-right-color:rgba(255,255,255,.18);
  background:rgba(255,255,255,.08);
  color:#fff;
}
#ontology .tree-node.depth-0 .mini-count{background:rgba(255,255,255,.16);color:#fff}
#ontology .tree-node.depth-1{--tree-depth-color:#42ad95}
#ontology .tree-node.depth-2{--tree-depth-color:#78a9cf}
#ontology .tree-node.depth-3{--tree-depth-color:#a58ac5}
#ontology .tree-node.depth-4,
#ontology .tree-node.depth-5,
#ontology .tree-node.depth-6{--tree-depth-color:#b9a36f}

/* Make the three sheet modes read as primary navigation, not subtle links. */
.sheet-tabs{
  gap:6px;
  margin:0 0 -1px;
  padding:6px;
  border:1px solid #cfe0dc;
  border-bottom-color:#b9d3cc;
  border-radius:12px 12px 0 0;
  background:#edf5f3;
}
.sheet-tab{
  flex:1 0 auto;
  min-width:max-content;
  border:1px solid transparent;
  border-bottom:1px solid transparent;
  border-radius:8px;
  padding:9px 13px;
  background:rgba(255,255,255,.70);
  color:#49615c;
  box-shadow:0 1px 2px rgba(16,64,53,.03);
}
.sheet-tab:hover{border-color:#9fc8bd;background:#fff;color:var(--fbi-deep)}
.sheet-tab.active{
  border-color:#103f42;
  background:#174d50;
  color:#fff;
  box-shadow:0 4px 10px rgba(16,64,53,.18);
}
.sheet-tab.active .mini-count{background:rgba(255,255,255,.18);color:#fff}

/* Group the toolbar by purpose so media, structural breaks and tables do not mix. */
.rich-toolbar{
  align-items:stretch;
  gap:7px;
  padding:8px;
  background:#f4f8f7;
}
.rich-tool-group{
  position:relative;
  align-content:flex-end;
  padding:20px 6px 6px;
  border:1px solid #d6e3e0;
  border-radius:9px;
  background:#fff;
}
.rich-tool-group-label{
  position:absolute;
  top:4px;
  left:7px;
  color:#6c7c78;
  font-size:.58rem;
  font-weight:900;
  letter-spacing:.06em;
  line-height:1;
  text-transform:uppercase;
  pointer-events:none;
}
.rich-tool-group-media{background:#f2f8fb;border-color:#cfdee6}
.rich-tool-group-table{background:#f7f4fb;border-color:#ddd3e8}
.rich-tool-group-layout{background:#faf8f2;border-color:#e6dfca}
.rich-table-action-select{min-width:132px}
.rich-tool-image{background:inherit!important;color:inherit!important}
.rich-tool-image.is-active{background:#e3f3ef!important;color:#103f42!important}

/* Tables in both Edit and View. */
.rich-editor-tiptap .tableWrapper,
.rendered-content .table-scroll{
  max-width:100%;
  margin:1rem 0;
  overflow-x:auto;
  border-radius:10px;
}
.rich-editor-tiptap table,
.rendered-content table{
  width:100%;
  min-width:360px;
  border-collapse:collapse;
  table-layout:fixed;
  background:#fff;
}
.rich-editor-tiptap th,
.rich-editor-tiptap td,
.rendered-content th,
.rendered-content td{
  min-width:80px;
  padding:8px 10px;
  border:1px solid #bfcfcb;
  vertical-align:top;
  text-align:left;
}
.rich-editor-tiptap th,
.rendered-content th{
  background:#eaf5f2;
  color:#103f42;
  font-weight:850;
}
.rich-editor-tiptap td.selectedCell:after{
  position:absolute;
  inset:0;
  z-index:2;
  background:rgba(66,173,149,.16);
  content:'';
  pointer-events:none;
}
.rich-editor-tiptap td,
.rich-editor-tiptap th{position:relative}
.rich-editor-tiptap .column-resize-handle{
  position:absolute;
  top:0;right:-2px;bottom:-2px;
  width:4px;
  background:#42ad95;
  pointer-events:none;
}
.resize-cursor{cursor:col-resize}

/* Externally hosted videos remain playable in the sheet without local hosting. */
.external-video-embed{
  position:relative;
  width:min(100%,720px);
  aspect-ratio:var(--video-aspect,16/9);
  margin:1rem auto;
  overflow:hidden;
  border:1px solid #c9d9d5;
  border-radius:12px;
  background:#071a1b;
  box-shadow:0 7px 20px rgba(16,64,53,.12);
}
.external-video-embed iframe,
.external-video-embed video{
  display:block;
  width:100%;
  height:100%;
  border:0;
}
.rich-editor-tiptap .external-video-embed.ProseMirror-selectednode{
  outline:4px solid rgba(0,190,160,.28);
  outline-offset:3px;
}

.rendered-content h1,.rich-editor-tiptap h1{font-size:1.65rem}
.rendered-content h2,.rich-editor-tiptap h2{font-size:1.38rem}
.rendered-content h3,.rich-editor-tiptap h3{font-size:1.18rem}
.rendered-content h4,.rich-editor-tiptap h4{font-size:1.02rem}
.rendered-content h5,.rich-editor-tiptap h5{font-size:.92rem}
.rendered-content h6,.rich-editor-tiptap h6{font-size:.84rem;text-transform:uppercase;letter-spacing:.025em}

/* v0.2.0 — English interface and explicit content-language workflow */
.content-language-control{
  display:flex;
  align-items:center;
  gap:8px;
  padding:5px 7px 5px 10px;
  border:1px solid rgba(7,95,99,.18);
  border-radius:999px;
  background:rgba(255,255,255,.86);
}
.content-language-control>span{
  color:#526761;
  font-size:.7rem;
  font-weight:850;
  letter-spacing:.035em;
  text-transform:uppercase;
  white-space:nowrap;
}
.content-language-control .language-pills{margin:0}
.language-badges .language-unavailable,
.badge.language-unavailable{
  opacity:.62;
  border-style:dashed;
  background:#f4f5f4;
  color:#68736f;
}
.badge.warning{
  background:#fff4d7;
  border-color:#e0b75c;
  color:#745314;
}
.translation-missing,
.translation-empty-draft{
  margin:18px 0;
  padding:20px;
  border:1px solid rgba(105,119,113,.22);
  border-radius:16px;
  background:linear-gradient(145deg,#fbfcfb,#f3f7f5);
}
.translation-missing h4,
.translation-empty-draft h4{margin:.2rem 0 .55rem;color:#173e3c;font-size:1.15rem}
.translation-missing-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:16px}
.translation-source-warning{
  display:grid;
  gap:3px;
  margin:0 0 14px;
  padding:12px 14px;
  border:1px solid #e0b75c;
  border-radius:12px;
  background:#fff8e7;
  color:#684b12;
}
.translation-source-warning span{font-size:.85rem}
.translation-workspace{
  display:grid;
  grid-template-columns:minmax(260px,.8fr) minmax(360px,1.2fr);
  gap:16px;
  align-items:start;
}
.translation-workspace.canonical-editor-workspace{grid-template-columns:minmax(0,1fr)}
.translation-source-panel,
.translation-target-panel{
  min-width:0;
  border:1px solid rgba(7,95,99,.16);
  border-radius:16px;
  background:#fff;
  padding:15px;
}
.translation-source-panel{
  position:sticky;
  top:calc(var(--sheet-panel-header-height, 160px) + 12px);
  max-height:calc(100vh - var(--sheet-panel-header-height, 160px) - 48px);
  overflow:auto;
  background:#f6faf8;
}
.translation-column-heading{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  margin-bottom:12px;
}
.translation-column-heading h4{margin:.1rem 0 0;color:#075f63}
.translation-source-metadata{display:grid;gap:10px;margin:0 0 14px}
.translation-source-metadata>div{padding-bottom:8px;border-bottom:1px solid rgba(7,95,99,.1)}
.translation-source-metadata dt{font-size:.7rem;font-weight:850;letter-spacing:.04em;text-transform:uppercase;color:#667b75}
.translation-source-metadata dd{margin:3px 0 0;color:#253b37;white-space:pre-wrap}
.translation-source-content{font-size:.9rem}
.translation-workspace-start .translation-target-panel{min-height:260px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}
.supporting-translation-missing{padding:14px;border-style:dashed}
.sheet-identity-row .status-missing{background:#f3f3f1;color:#636d68}
@media(max-width:1100px){
  .translation-workspace{grid-template-columns:1fr}
  .translation-source-panel{position:static;max-height:420px}
}
@media(max-width:760px){
  .content-language-control>span{display:none}
  .content-language-control{padding:4px}
}

/* v0.2.0 content-language workflow */
.card.card-translation-missing {
  border-style: dashed;
}
.card-language-unavailable {
  display: grid;
  gap: .25rem;
  margin: .85rem 0;
  padding: .75rem .85rem;
  border: 1px solid color-mix(in srgb, var(--warning, #a65d00) 35%, transparent);
  border-radius: .65rem;
  background: color-mix(in srgb, #f2b84b 12%, white);
}
.card-language-unavailable span {
  color: var(--muted, #5e6b6c);
  font-size: .88rem;
}

/* v0.2.0 — full-width contributor workspace, revision timeline and unified media catalogue */
.contributor-page{width:min(1880px,calc(100% - 32px));margin:0 auto;padding:28px 0 48px}
.contributor-page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:22px}
.contributor-page-heading h1{margin:.1rem 0 0;color:#104035;font-size:clamp(1.8rem,3vw,3rem)}
.contributor-language-control{display:grid;gap:6px;min-width:190px}.contributor-language-control label{font-size:.78rem;font-weight:700;color:#104035}
.contributor-layout{display:grid;grid-template-columns:minmax(240px,320px) minmax(0,1fr);gap:18px;align-items:start}
.contributor-sidebar{position:sticky;top:84px;max-height:calc(100vh - 108px);overflow:auto;border:1px solid rgba(16,64,53,.14);border-radius:18px;padding:14px;background:#f8fbfa;box-shadow:0 12px 32px rgba(16,64,53,.06)}
.contributor-sidebar-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.contributor-sidebar>label{display:block;font-weight:700;color:#104035;font-size:.8rem;margin:10px 0 5px}.contributor-sidebar input{width:100%}
.contributor-sheet-list{display:grid;gap:7px;margin-top:12px}.contributor-sheet-choice{width:100%;border:1px solid rgba(16,64,53,.13);background:white;border-radius:12px;padding:10px;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer}.contributor-sheet-choice span:first-child{display:grid;gap:2px;min-width:0}.contributor-sheet-choice strong{font-size:.76rem;color:#238c75}.contributor-sheet-choice small{font-size:.78rem;color:#333434;white-space:normal}.contributor-sheet-choice:hover,.contributor-sheet-choice.is-active{border-color:#238c75;background:#eef9f6;box-shadow:0 0 0 2px rgba(35,140,117,.1)}
.contributor-editor-shell{min-width:0}.contributor-empty-state,.error-state{border:1px dashed rgba(16,64,53,.25);border-radius:18px;min-height:55vh;display:grid;place-content:center;text-align:center;background:#fbfdfc;padding:30px}
.contributor-sheet-form{display:grid;gap:16px;padding-bottom:76px;--contributor-sheet-header-top:68px}.contributor-sheet-header{position:sticky;top:var(--contributor-sheet-header-top);z-index:34;display:flex;justify-content:space-between;align-items:flex-start;gap:18px;padding:16px 18px;border:1px solid rgba(16,64,53,.14);border-radius:18px;background:rgba(255,255,255,.97);backdrop-filter:blur(12px);box-shadow:0 10px 28px rgba(16,64,53,.08)}.contributor-sheet-header h1{font-size:clamp(1.4rem,2.4vw,2.15rem);margin:.1rem 0 .45rem;color:#104035}.contributor-header-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.contributor-block{border:1px solid rgba(16,64,53,.14);border-radius:18px;background:#fff;padding:18px;box-shadow:0 8px 24px rgba(16,64,53,.045)}.contributor-block-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.contributor-block-heading h2{margin:.1rem 0 0;color:#104035}.contributor-block .metadata-section{border-top:1px solid rgba(16,64,53,.1);padding:10px 0}.contributor-block .metadata-section:first-of-type{border-top:0}.metadata-section>summary{cursor:pointer;font-weight:800;color:#104035;padding:7px 0}
.metadata-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.metadata-grid label{display:grid;gap:5px;font-size:.78rem;font-weight:700;color:#104035}.metadata-grid input,.metadata-grid textarea,.metadata-grid select{width:100%;font:inherit;font-weight:400}.metadata-grid textarea{min-height:86px;resize:vertical}.metadata-grid select[multiple]{min-height:120px}.metadata-grid .span-2{grid-column:1/-1}.lifecycle-grid{margin-top:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.lifecycle-grid input:disabled{background:#f4f7f6;color:#53625f}
.contributor-content-block{padding:0;overflow:hidden}
.contributor-content-block>.contributor-block-heading{padding:18px 18px 0}
.contributor-content-block .rich-editor-wrap{
  display:flex;
  flex-direction:column;
  height:clamp(440px,62vh,760px);
  min-height:0;
  margin:0;
  border:0;
  border-radius:0 0 18px 18px;
  overflow:hidden;
  background:#fff;
}
.contributor-content-block .rich-editor-wrap>.rich-toolbar{
  order:0;
  position:relative;
  top:auto;
  z-index:2;
  flex:0 0 auto;
  width:100%;
  border:1px solid rgba(16,64,53,.14);
  border-left:0;
  border-right:0;
  background:#f4faf8;
  box-shadow:0 6px 14px rgba(16,64,53,.07);
}
.contributor-content-block .rich-editor-wrap>.rich-editor-tiptap,
.contributor-content-block .rich-editor-wrap>.rich-editor-fallback{
  order:1;
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  background:#fff;
}
.contributor-content-block .rich-editor-wrap>.rich-editor-tiptap{padding:0}
.contributor-content-block .ProseMirror{
  min-height:100%;
  padding:26px 34px 80px;
}
.contributor-content-block .rich-editor-fallback{padding:26px 34px 80px}
.contributor-save-bar{position:fixed;left:max(16px,calc((100vw - min(1880px,calc(100vw - 32px)))/2 + 338px));right:16px;bottom:12px;z-index:45;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border:1px solid rgba(16,64,53,.18);border-radius:14px;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);box-shadow:0 12px 34px rgba(16,64,53,.16)}
.revision-timeline{list-style:none;padding:0;margin:0;display:grid;gap:10px}.revision-entry{position:relative;padding:12px 14px 12px 20px;border-left:3px solid #b7cdc8;background:#f7faf9;border-radius:0 12px 12px 0}.revision-entry.is-current{border-left-color:#00bea0;background:#eefaf7}.revision-entry p{margin:.35rem 0}.revision-entry small{color:#65716e}
.contributor-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:13px}.contributor-media-card{border:1px solid rgba(16,64,53,.12);border-radius:15px;overflow:hidden;background:#fff}.contributor-media-card>img,.media-video-preview{width:100%;height:170px;display:block;background:#eef4f2;object-fit:cover}.media-video-preview iframe,.media-video-preview video{width:100%;height:100%;border:0}.media-file-preview{height:170px;display:grid;place-items:center;background:linear-gradient(135deg,#eef8f5,#f3f1fa);font-weight:900;color:#6c6cbc;letter-spacing:.08em}.contributor-media-body{padding:12px}.contributor-media-body h3{margin:.55rem 0 .3rem;color:#104035;font-size:1rem}.contributor-media-body p{min-height:2.4em;color:#58635f}.contributor-media-body dl{display:grid;gap:5px;font-size:.75rem}.contributor-media-body dl div{display:grid;grid-template-columns:65px 1fr;gap:6px}.contributor-media-body dt{font-weight:700;color:#104035}.contributor-media-body dd{margin:0;overflow-wrap:anywhere}.media-add-panel{margin-top:16px;border-top:1px solid rgba(16,64,53,.1);padding-top:12px}.media-add-panel>summary{font-weight:800;color:#104035;cursor:pointer}.contributor-media-form{display:grid;gap:12px;margin-top:12px}.media-picker-icon{display:grid;place-items:center;width:88px;height:64px;border-radius:10px;background:#edf4f2;color:#104035;font-weight:800}
.side-edit-workspace{display:grid;gap:12px;padding:16px}.side-edit-block{border:1px solid rgba(16,64,53,.13);border-radius:14px;padding:14px;background:#fff}.side-edit-block h4{margin:.2rem 0 .8rem;color:#104035}.side-edit-block dl{display:grid;gap:6px}.side-edit-block dl div{display:grid;grid-template-columns:80px 1fr;gap:8px}.side-edit-block dt{font-weight:700;color:#104035}.side-edit-block dd{margin:0}
.contributor-translation-missing{margin:0;border-radius:16px}.rich-tool-media{min-width:70px}
@media(max-width:1050px){.contributor-layout{grid-template-columns:1fr}.contributor-sidebar{position:static;max-height:none}.contributor-save-bar{left:16px}.lifecycle-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.contributor-page{width:min(100% - 16px,1880px);padding-top:14px}.contributor-page-heading,.contributor-sheet-header{align-items:flex-start;flex-direction:column}.metadata-grid,.lifecycle-grid{grid-template-columns:1fr}.metadata-grid .span-2{grid-column:auto}.contributor-content-block .rich-editor-wrap{height:64vh;min-height:380px}.contributor-content-block .ProseMirror,.contributor-content-block .rich-editor-fallback{padding:18px 16px 74px}.contributor-sheet-header{top:var(--contributor-sheet-header-top)}.contributor-save-bar{left:8px;right:8px}}
.contributor-media-library{margin:0 18px 18px;padding:18px;border:1px solid rgba(16,64,53,.12);border-radius:15px;background:#f8fbfa}
.contributor-media-library>.contributor-block-heading{padding:0;margin-bottom:14px}
.sheet-view-metadata{margin:0 0 14px;border:1px solid rgba(16,64,53,.12);border-radius:12px;background:#f8fbfa;padding:0 12px}
.sheet-view-metadata>summary{cursor:pointer;padding:10px 0;font-weight:800;color:#104035}
.sheet-view-metadata dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin:0;padding:0 0 12px}
.sheet-view-metadata dl div{display:grid;grid-template-columns:minmax(90px,.45fr) 1fr;gap:8px;font-size:.78rem}
.sheet-view-metadata dt{font-weight:800;color:#104035}.sheet-view-metadata dd{margin:0;overflow-wrap:anywhere}
@media(max-width:700px){.sheet-view-metadata dl{grid-template-columns:1fr}}

/* Collaborative revision and review workflow — v0.2.0 */
.contributor-heading-note{max-width:520px;margin:0;color:#52635e;text-align:right;line-height:1.45}
.contributor-form-intro{max-width:760px;margin:.45rem 0 0;color:#52635e;line-height:1.45}
.content-language-field{display:grid;gap:5px;min-width:150px;font-size:.76rem;font-weight:800;color:#104035}
.content-language-field select{min-width:150px}
.workflow-person-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.workflow-person-card{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 11px;border:1px solid rgba(16,64,53,.13);border-radius:12px;background:#f9fcfb}
.workflow-person-card span:nth-child(2){display:grid;gap:2px}.workflow-person-card small{color:#64716d}
.workflow-avatar{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:#dff4ee;color:#104035;font-weight:900}
.workflow-inline-form{display:flex;align-items:end;gap:9px;flex-wrap:wrap;margin-top:12px}.workflow-inline-form label{display:grid;gap:5px;min-width:260px;font-weight:700;color:#104035}
.field-help{margin:.65rem 0 0;color:#697671;font-size:.78rem;line-height:1.4}
.quiet-danger{margin-top:10px;border:0;background:transparent;color:#9c2f2f;text-decoration:underline;cursor:pointer;font-weight:700}
.reviewer-report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:10px 0 14px}
.reviewer-report-card{border:1px solid rgba(16,64,53,.14);border-radius:14px;padding:13px;background:#fff}
.reviewer-report-card header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:0;margin:0 0 10px;border:0;box-shadow:none;position:static;background:transparent}.reviewer-report-card header div{display:grid;gap:2px}.reviewer-report-card header small{color:#687570}
.reviewer-report-card h4{margin:.85rem 0 .25rem;color:#104035}.reviewer-report-card p{margin:.2rem 0;white-space:pre-wrap;color:#46534f}
.reviewer-recommendation{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:.75rem;font-weight:900;background:#eef4f2;color:#104035}
.recommendation-accepted{background:#dff5e9;color:#14643c}.recommendation-minor{background:#fff2cf;color:#765900}.recommendation-major{background:#ffe0ca;color:#8a3c0d}.recommendation-rejected{background:#f7dada;color:#8d2929}
.reviewer-assignment-box{display:grid;gap:9px;padding:13px;border:1px dashed rgba(16,64,53,.28);border-radius:13px;background:#f7fbfa}.reviewer-assignment-box label{display:grid;gap:6px;font-weight:800;color:#104035}.reviewer-assignment-box select{min-height:125px}
.reviewer-workspace-block{border-color:rgba(108,108,188,.3);box-shadow:0 8px 24px rgba(108,108,188,.08)}
.reviewer-report-form{display:grid;gap:12px}.reviewer-report-form label{display:grid;gap:6px;font-weight:800;color:#104035}.reviewer-report-form textarea{resize:vertical}
.editorial-decision-block{border-color:rgba(35,140,117,.28);background:#f7fcfa}.editorial-action-row{display:flex;gap:10px;flex-wrap:wrap}
.translation-source-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border:1px solid rgba(108,108,188,.2);border-radius:13px;background:#f5f4fb;color:#484875}
.published-sheet-summary .rendered-content{padding:8px 2px 24px}
.contributor-save-bar>div{display:flex;gap:8px;flex-wrap:wrap}
.status-assigned,.status-in_progress{background:#eef3ff;color:#3c4e88}.status-submitted{background:#fff2cf;color:#715500}
@media(max-width:700px){.contributor-heading-note{text-align:left}.workflow-person-card{grid-template-columns:38px minmax(0,1fr)}.workflow-person-card>.badge{grid-column:2}.translation-source-banner{align-items:flex-start;flex-direction:column}}


/* v0.2.0 cumulative-role navigation and contributor editor sticky geometry */
.contributor-sheet-header>div:first-child{min-width:0;flex:1 1 auto}
.contributor-sheet-header .contributor-header-actions{flex:0 1 auto;align-items:flex-start}
.contributor-content-block>.contributor-block-heading{background:#fff;border-radius:18px 18px 0 0}
.contributor-content-block .rich-editor-wrap{background:#fff}
.contributor-content-block .rich-toolbar .rich-tool-group{background:rgba(255,255,255,.72)}
.integrated-nav .nav-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.integrated-nav .nav-link.active{box-shadow:none}
@media(max-width:700px){
  .contributor-sheet-form{--contributor-sheet-header-top:62px}
  .contributor-sheet-header .contributor-header-actions{width:100%;justify-content:flex-start}
}

/* v0.2.0 — direct content-language creation */
.content-language-field{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:5px;
  min-width:210px;
  font-size:.76rem;
  font-weight:800;
  color:#104035;
}
.content-language-field>label{
  margin:0;
  font-size:.68rem;
  font-weight:850;
  letter-spacing:.045em;
  text-transform:uppercase;
  color:#526c65;
}
.content-language-field select{
  width:100%;
  min-width:210px;
}
.language-version-state{
  display:inline-flex;
  width:max-content;
  max-width:100%;
  align-items:center;
  gap:5px;
  padding:3px 8px;
  border-radius:999px;
  font-size:.67rem;
  font-weight:800;
  line-height:1.2;
}
.language-version-state::before{
  content:"";
  width:7px;
  height:7px;
  border-radius:50%;
  background:currentColor;
}
.language-version-state.is-available{
  background:#e5f7ef;
  color:#176d56;
}
.language-version-state.is-missing{
  background:#fff1d8;
  color:#945d0b;
}
.translation-creation-card{
  display:grid;
  gap:16px;
  padding:20px;
  border:1px solid rgba(183,124,32,.32);
  border-radius:16px;
  background:linear-gradient(135deg,#fffaf0,#fff 72%);
}
.translation-creation-card h2{
  margin:.15rem 0 .5rem;
  color:#104035;
}
.translation-creation-card p{
  margin:.25rem 0;
  max-width:72ch;
}
.translation-creation-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.translation-creation-card>.quiet-link{
  justify-self:start;
}
.translation-source-preview{
  max-height:min(58vh,720px);
  overflow:auto;
}
.translation-source-preview .contributor-block-heading{
  position:sticky;
  top:0;
  z-index:2;
  margin:-18px -18px 14px;
  padding:14px 18px;
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(16,64,53,.1);
}
.translation-source-abstract{
  padding:12px 14px;
  border-left:4px solid #6c6cbc;
  border-radius:0 10px 10px 0;
  background:#f6f5fb;
  color:#3f4d49;
  font-style:italic;
}
.translation-setup-workspace .contributor-sheet-header{
  margin-bottom:0;
}
@media(max-width:760px){
  .content-language-field,
  .content-language-field select{
    min-width:0;
    width:100%;
  }
  .translation-creation-actions{
    display:grid;
    grid-template-columns:1fr;
  }
}


/* v0.2.0 translation credits and institutional affiliations */
.contributor-sidebar-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
}

.translation-mini-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: .2rem;
  margin-top: .25rem;
}

.translation-mini-badge {
  font-size: .62rem;
  min-width: 1.65rem;
  text-align: center;
}

.publication-credits {
  display: grid;
  gap: 1rem;
  margin: 1rem 0;
  padding: 1rem;
  border: 1px solid color-mix(in srgb, var(--fbi-teal, #238c75) 22%, transparent);
  border-radius: .85rem;
  background: color-mix(in srgb, var(--fbi-mint, #6fcab6) 7%, white);
}

.publication-credit-groups {
  display: grid;
  gap: .5rem;
}

.publication-credit-line {
  display: grid;
  grid-template-columns: minmax(8rem, 12rem) 1fr;
  gap: .75rem;
  align-items: baseline;
}

.publication-person sup {
  margin-left: .08rem;
  color: var(--fbi-dark-green, #104035);
  font-weight: 700;
}

.publication-institutions > strong {
  display: block;
  margin-bottom: .35rem;
}

.publication-institution-list {
  margin: 0;
  padding-left: 1.6rem;
}

.publication-institution-list li {
  padding: .14rem 0;
}

.publication-institution-list small {
  color: #60736f;
}

.contribution-affiliation-editor {
  grid-column: 1 / -1;
  display: grid;
  gap: .35rem;
  margin-top: .6rem;
  padding: .7rem;
  border-radius: .65rem;
  background: #f5faf8;
  border: 1px solid #dcece7;
}

.contribution-affiliation-editor label,
.review-affiliation-fieldset label,
.translation-start-options label {
  display: flex;
  align-items: flex-start;
  gap: .45rem;
  font-weight: 500;
}

.workflow-person-card {
  grid-template-columns: auto minmax(0, 1fr) auto;
}

.translation-revision-form .translation-source-preview details > summary {
  cursor: pointer;
  font-weight: 700;
}

.translation-start-options,
.review-affiliation-fieldset,
#profileCapabilitiesForm fieldset {
  border: 1px solid #d9e7e3;
  border-radius: .65rem;
  padding: .7rem .85rem;
}

.translation-start-options legend,
.review-affiliation-fieldset legend,
#profileCapabilitiesForm legend {
  padding: 0 .35rem;
  color: #31534c;
  font-weight: 700;
}

.profile-membership-list {
  display: grid;
  gap: .65rem;
  margin-bottom: 1rem;
}

.profile-membership-card {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: flex-start;
  padding: .85rem;
  border: 1px solid #dce8e5;
  border-radius: .75rem;
  background: white;
}

.profile-membership-card p {
  margin: .2rem 0;
  color: #536b66;
}

.profile-membership-form {
  padding-top: 1rem;
  border-top: 1px solid #dce8e5;
}

.previous-translation-preview {
  margin-top: .8rem;
  border-top: 1px solid #d9e5e1;
  padding-top: .7rem;
}

.previous-translation-preview > summary {
  cursor: pointer;
  font-weight: 700;
}

@media (max-width: 760px) {
  .publication-credit-line {
    grid-template-columns: 1fr;
    gap: .15rem;
  }
  .workflow-person-card {
    grid-template-columns: auto 1fr;
  }
  .workflow-person-card > .badge {
    grid-column: 2;
    justify-self: start;
  }
}

/* Publication-style metadata shared by ontology and contributor views. */
.sheet-view-metadata sup,
.publication-person sup {
  margin-left: 0.08em;
  color: var(--deep-teal, #104035);
  font-size: 0.72em;
  font-weight: 700;
}

.sheet-institution-list {
  margin: 0.25rem 0 0;
  padding-left: 1.35rem;
}

.sheet-institution-list li + li {
  margin-top: 0.2rem;
}

.sheet-institution-list small {
  color: var(--muted, #596b68);
}

/* Community feedback and analytics — v0.2.0 */
.community-panel{margin-top:1rem;border:1px solid #cfe3df;border-radius:14px;background:#fbfefd;overflow:hidden}
.community-panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 1.1rem;border-bottom:1px solid #dcece9;background:#f3faf8}
.community-panel-header h4{margin:.15rem 0 0;color:#104035}
.community-summary{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}
.community-rating-average{font-weight:800;color:#104035}
.community-heart-row{display:flex;gap:.2rem;align-items:center}
.community-heart{appearance:none;border:0;background:transparent;padding:.1rem;font-size:1.55rem;line-height:1;color:#9bb9b2;cursor:pointer}
.community-heart:hover,.community-heart:focus-visible,.community-heart.is-active{color:#dc5573;transform:translateY(-1px)}
.community-heart[disabled]{cursor:default;opacity:.75;transform:none}
.community-body{padding:1rem 1.1rem;display:grid;gap:1rem}
.community-login-note{margin:0;color:#48645e}
.community-comment-form{display:grid;gap:.55rem}
.community-comment-form textarea{min-height:84px;resize:vertical}
.community-comments{display:grid;gap:.7rem}
.community-comment{border:1px solid #dce9e6;border-radius:10px;padding:.75rem .85rem;background:#fff}
.community-comment header{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;margin-bottom:.35rem}
.community-comment p{margin:0;white-space:pre-wrap}
.community-comment small{color:#60746f}
.sheet-insights{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.6rem}
.sheet-insight{border:1px solid #d7e8e4;border-radius:10px;padding:.7rem;background:#fff}
.sheet-insight span{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:#60746f}
.sheet-insight strong{display:block;margin-top:.18rem;font-size:1.15rem;color:#104035}
.contributor-insights-block .sheet-insights{margin-top:.7rem}

.analytics-page{width:min(1800px,calc(100% - 40px));margin:0 auto;padding:2rem 0 4rem}
.analytics-heading,.analytics-card-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}
.analytics-heading h1{margin:.2rem 0 .5rem;color:#104035}
.analytics-filter-card,.analytics-card{margin-top:1rem;border:1px solid #d8e8e5;border-radius:15px;background:#fff;box-shadow:0 10px 28px rgba(16,64,53,.06)}
.analytics-filter-card{padding:1rem}
.analytics-filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.8rem;align-items:end}
.analytics-filter-grid label{display:grid;gap:.3rem;font-size:.78rem;font-weight:700;color:#34564e}
.analytics-filter-grid input,.analytics-filter-grid select{width:100%}
.analytics-filter-actions{display:flex;gap:.45rem;align-items:center}
.analytics-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:.75rem;margin-top:1rem}
.analytics-kpi{border:1px solid #d7e8e4;border-radius:13px;background:#f8fcfb;padding:.9rem 1rem;min-height:92px}
.analytics-kpi span{display:block;color:#60746f;font-size:.74rem;text-transform:uppercase;letter-spacing:.05em}
.analytics-kpi strong{display:block;color:#104035;font-size:1.45rem;margin:.25rem 0}
.analytics-kpi small{color:#60746f}
.analytics-card{padding:1rem}
.analytics-card-heading h2{margin:.15rem 0 .7rem;color:#104035}
.analytics-table-scroll{overflow:auto;max-height:58vh}
.analytics-table{width:100%;border-collapse:collapse;font-size:.8rem}
.analytics-table th{position:sticky;top:0;background:#edf7f5;color:#104035;text-align:left;padding:.65rem;border-bottom:1px solid #cfe3df;z-index:1}
.analytics-table td{padding:.62rem;border-bottom:1px solid #e4efed;vertical-align:top;max-width:260px}
.analytics-table tr:hover td{background:#f8fcfb}
.analytics-timeline{height:190px;display:flex;align-items:stretch;gap:3px;overflow-x:auto;padding:.5rem 0 0}
.analytics-day{min-width:19px;flex:1;display:grid;grid-template-rows:1fr auto;gap:.25rem}
.analytics-day-bars{display:flex;align-items:flex-end;gap:1px;height:155px;border-bottom:1px solid #cadfdb}
.analytics-day-bars i{display:block;flex:1;min-height:2px;border-radius:3px 3px 0 0}
.analytics-day-bars .views{background:var(--fbi-darkteal)}.analytics-day-bars .comments{background:var(--fbi-purple)}.analytics-day-bars .ratings{background:var(--fbi-teal)}
.analytics-day time{font-size:.58rem;color:#6d817c;transform:rotate(-55deg);transform-origin:center;white-space:nowrap}
@media(max-width:760px){.analytics-page{width:calc(100% - 20px)}.analytics-heading{display:block}.analytics-heading .smallbtn{display:inline-block;margin-top:.5rem}.community-panel-header{display:block}.community-summary{margin-top:.5rem}}

/* v0.2.0 — contributor tree, personal sheets, search and media polish */
.contributor-layout{
  grid-template-columns:minmax(300px,360px) minmax(0,1fr);
}
.contributor-sidebar{
  padding:12px;
  overflow-x:hidden;
}
.contributor-search-panel{
  margin:10px 0 12px;
  border:1px solid rgba(16,64,53,.14);
  border-radius:12px;
  background:#fff;
}
.contributor-search-panel>summary{
  cursor:pointer;
  padding:10px 12px;
  font-size:.82rem;
  font-weight:850;
  color:#104035;
}
.contributor-search-fields{
  display:grid;
  gap:9px;
  padding:0 10px 11px;
}
.contributor-search-fields label{
  display:grid;
  gap:4px;
  color:#104035;
  font-size:.7rem;
  font-weight:800;
}
.contributor-search-fields input,
.contributor-search-fields select{width:100%;font-size:.8rem}
.contributor-advanced-search-link{justify-content:center;text-align:center}
.contributor-tree-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  margin:8px 2px;
  color:#104035;
  font-size:.74rem;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.055em;
}
.contributor-tree-toolbar .quiet-link{font-size:.72rem;text-transform:none;letter-spacing:0}
.contributor-tree{display:grid;gap:9px}
.contributor-tree-category{
  overflow:hidden;
  border:1px solid rgba(16,64,53,.14);
  border-radius:13px;
  background:#fff;
}
.contributor-tree-category>summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:10px 11px;
  cursor:pointer;
  color:#104035;
  font-size:.82rem;
  font-weight:900;
  list-style:none;
  background:#f5faf8;
}
.contributor-tree-category>summary::-webkit-details-marker,
.contributor-tree-branch>summary::-webkit-details-marker{display:none}
.contributor-tree-category>summary::before,
.contributor-tree-branch>summary::before{
  content:'›';
  flex:0 0 auto;
  transition:transform .15s ease;
  color:#238c75;
  font-size:1rem;
  line-height:1;
}
.contributor-tree-category[open]>summary::before,
.contributor-tree-branch[open]>summary::before{transform:rotate(90deg)}
.contributor-tree-category>summary>span:first-of-type{margin-right:auto}
.contributor-tree-category-body{display:grid;gap:4px;padding:7px}
.contributor-tree-branch{
  border-radius:9px;
  border-left:4px solid transparent;
  background:rgba(255,255,255,.78);
}
.contributor-tree-branch>summary{
  display:grid;
  grid-template-columns:auto 8px minmax(0,1fr) auto;
  align-items:center;
  gap:5px;
  padding:7px 8px 7px 6px;
  cursor:pointer;
  list-style:none;
  color:#263d38;
  font-size:.76rem;
  font-weight:780;
}
.contributor-tree-branch>summary small{color:#63736f;font-size:.66rem}
.contributor-tree-children{display:grid;gap:4px;padding:0 4px 5px 13px}
.contributor-tree-branch.tree-depth-0{border-left-color:#104035;background:#eef7f4}
.contributor-tree-branch.tree-depth-1{border-left-color:#2bbd93;background:#effaf6}
.contributor-tree-branch.tree-depth-2{border-left-color:#6aaed6;background:#f1f7fb}
.contributor-tree-branch.tree-depth-3{border-left-color:#9a77c7;background:#f7f3fb}
.contributor-tree-branch.tree-depth-4,
.contributor-tree-branch.tree-depth-5{border-left-color:#c9a96e;background:#fbf7ef}
.tree-level-marker{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.55}
.contributor-tree-sheet{
  width:100%;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:7px;
  padding:7px 8px;
  border:1px solid rgba(16,64,53,.11);
  border-radius:9px;
  background:#fff;
  color:#2d423d;
  text-align:left;
  cursor:pointer;
}
.contributor-tree-sheet:hover,
.contributor-tree-sheet.is-active{border-color:#238c75;background:#eaf8f4;box-shadow:0 0 0 2px rgba(35,140,117,.09)}
.contributor-tree-sheet>span:first-child{display:grid;gap:1px;min-width:0}
.contributor-tree-sheet strong{overflow:hidden;text-overflow:ellipsis;color:#176f5c;font-size:.68rem;white-space:nowrap}
.contributor-tree-sheet small{overflow:hidden;text-overflow:ellipsis;font-size:.72rem;white-space:nowrap}
.contributor-tree-sheet-meta{display:flex;align-items:center;justify-content:flex-end;gap:3px;flex-wrap:wrap}
.contributor-tree-sheet-meta .badge{font-size:.58rem;padding:2px 5px}
.translation-mini-badge{display:inline-grid;place-items:center;min-width:1.35rem;padding:2px 4px;border-radius:999px;background:#eef3f2;color:#48605a;font-size:.56rem;font-weight:900}
.contributor-tree-empty{margin:4px;padding:8px;color:#667772;font-size:.72rem}
.personal-sheet-tree{padding:7px}
.personal-sheet-leaf strong{font-size:.74rem;color:#6c5c92}
.personal-share-list{display:grid;gap:7px}
.personal-share-list article{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid rgba(16,64,53,.12);border-radius:10px;background:#f8fbfa}
.personal-share-list article span{display:grid;gap:2px}.personal-share-list small{color:#61706c}
.personal-rendered-content{padding:18px 24px 42px}
.orcid-connect-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.orcid-connect-row small{color:#61706c;font-weight:400}

/* Keep the contributor toolbar on one line. Individual groups remain readable
   and the toolbar scrolls horizontally on narrower workspaces. */
.contributor-content-block .rich-editor-wrap>.rich-toolbar{
  display:flex!important;
  flex-wrap:nowrap!important;
  align-items:stretch;
  gap:6px;
  overflow-x:auto;
  overflow-y:hidden;
  scrollbar-width:thin;
  overscroll-behavior-x:contain;
  padding:7px 8px 8px;
}
.contributor-content-block .rich-toolbar .rich-tool-group{
  flex:0 0 auto;
  display:flex;
  flex-wrap:nowrap;
  align-items:flex-end;
  min-width:max-content;
  padding:18px 5px 5px;
}
.contributor-content-block .rich-toolbar .rich-tool,
.contributor-content-block .rich-toolbar select{
  flex:0 0 auto;
  font-size:.72rem;
}
.contributor-content-block .rich-toolbar .rich-tool{padding:5px 7px}
.contributor-content-block .rich-toolbar .rich-table-action-select{min-width:118px}

/* Media catalogue dialog */
.rich-image-picker{
  width:min(900px,calc(100vw - 36px));
  max-height:min(86vh,820px);
}
.rich-image-picker-card{max-height:min(86vh,820px)}
.rich-image-picker-card>header{align-items:center;padding:15px 18px}
.rich-image-picker-card>header>div{min-width:0}
.rich-image-picker-card h2{margin:1px 0 3px;color:#104035;font-size:1.28rem;line-height:1.15}
.rich-image-picker-card header p:last-child{margin:0;color:#64736f;font-size:.78rem;line-height:1.35}
.rich-image-picker-close-icon{
  flex:0 0 38px;
  width:38px;
  height:38px;
  border:1px solid #c7ddd7;
  font-size:1.18rem;
  font-weight:500;
}
.rich-image-picker-grid{
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:9px;
  padding:12px 18px 14px;
}
.rich-image-choice{grid-template-rows:104px auto;border-radius:10px}
.rich-image-choice img{height:104px}
.rich-image-choice span{padding:7px 8px}
.rich-image-choice strong{font-size:.67rem}.rich-image-choice small{font-size:.66rem}
.media-picker-add-panel{border-top:1px solid #dce8e5;background:#f8fbfa;padding:0 18px 14px}
.media-picker-add-panel>summary{cursor:pointer;padding:11px 0;color:#104035;font-size:.8rem;font-weight:900}
.media-picker-upload-form{display:grid;gap:10px}
.media-picker-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.media-picker-form-grid label{display:grid;gap:4px;color:#104035;font-size:.68rem;font-weight:800}
.media-picker-form-grid .span-2{grid-column:1/-1}
.media-picker-form-grid input,.media-picker-form-grid select,.media-picker-form-grid textarea{width:100%;font-size:.78rem}
.media-picker-form-actions{display:flex;justify-content:flex-end}

/* Global sheet search */
.sheet-search-page{width:min(1380px,calc(100% - 32px));margin:0 auto;padding:32px 0 60px}
.sheet-search-heading{max-width:760px;margin-bottom:20px}.sheet-search-heading h1{margin:.15rem 0 .55rem;color:#104035;font-size:clamp(2rem,4vw,3.2rem)}.sheet-search-heading p:last-child{color:#586a65}
.sheet-search-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:18px;border:1px solid rgba(16,64,53,.14);border-radius:17px;background:#f8fbfa;box-shadow:0 10px 28px rgba(16,64,53,.05)}
.sheet-search-form label{display:grid;gap:5px;color:#104035;font-size:.78rem;font-weight:800}.sheet-search-form .span-2{grid-column:1/-1}.sheet-search-actions{display:flex;gap:8px;justify-content:flex-end}
.sheet-search-results{margin-top:18px}.sheet-search-results-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.sheet-search-results-heading h2{color:#104035}
#sheetSearchResults{display:grid;gap:11px}.sheet-search-result-card{padding:14px 16px;border:1px solid rgba(16,64,53,.14);border-radius:14px;background:#fff;box-shadow:0 7px 20px rgba(16,64,53,.04)}.sheet-search-result-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.sheet-search-result-card header strong{color:#238c75;font-size:.73rem}.sheet-search-result-card h3{margin:.2rem 0;color:#104035}.sheet-search-result-card p{color:#596863}.sheet-search-result-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.74rem}.sheet-search-result-meta>span:last-child{display:flex;gap:4px}.sheet-search-result-card footer{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}

@media(max-width:1100px){
  .contributor-layout{grid-template-columns:minmax(250px,310px) minmax(0,1fr)}
}
@media(max-width:900px){
  .contributor-layout{grid-template-columns:1fr}
  .contributor-sidebar{position:static;max-height:none}
  .sheet-search-form{grid-template-columns:1fr}.sheet-search-form .span-2{grid-column:auto}
}
@media(max-width:640px){
  .media-picker-form-grid{grid-template-columns:1fr}.media-picker-form-grid .span-2{grid-column:auto}
  .rich-image-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* Full-width account mode and final contributor workspace alignment. */
.contributor-account-layout{grid-template-columns:minmax(0,1fr)}
.contributor-account-layout .contributor-editor-shell{width:100%}
.contributor-account-layout .contributor-save-bar{left:16px}
@media(min-width:1101px){
  .contributor-layout:not(.contributor-account-layout) .contributor-save-bar{
    left:max(16px,calc((100vw - min(1880px,calc(100vw - 32px)))/2 + 378px));
  }
}

/* Keep long toolbars usable without creating a second visual row. */
.contributor-content-block .rich-editor-wrap>.rich-toolbar{
  max-width:100%;
  white-space:nowrap;
}
.contributor-content-block .rich-toolbar .rich-tool-group>span,
.contributor-content-block .rich-toolbar .rich-tool-group>label{
  white-space:nowrap;
}

/* The catalogue uses one clear close control in the title bar. */
.rich-image-picker-card{overflow:hidden}
.rich-image-picker-close-icon{
  display:grid;
  place-items:center;
  padding:0;
  border-radius:50%;
  line-height:1;
  background:#fff;
  color:#104035;
  cursor:pointer;
}
.rich-image-picker-close-icon:hover,
.rich-image-picker-close-icon:focus-visible{
  background:#eaf8f4;
  border-color:#238c75;
  outline:2px solid rgba(35,140,117,.18);
}
.rich-image-picker .empty-state{font-size:.78rem;line-height:1.4}
.rich-image-picker-card h4{margin:1px 0 3px;color:#104035;font-size:1.22rem;line-height:1.15}
.rich-image-picker-card>footer{display:flex;justify-content:flex-end;padding:10px 18px 14px;border-top:1px solid #dce8e5;background:#fff}

/* v0.2.0 — account dropdown navigation */
.account-menu{position:relative;flex:0 0 auto}
.account-menu>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.38rem;border:1px solid transparent}
.account-menu>summary::-webkit-details-marker{display:none}
.account-menu.active>summary,.account-menu[open]>summary{border-color:#a9d5cb;background:#e6f5f1;color:#075f63}
.account-menu-chevron{font-size:.75rem;transition:transform .16s ease}
.account-menu[open] .account-menu-chevron{transform:rotate(180deg)}
.account-menu-popover{position:absolute;right:0;top:calc(100% + .55rem);z-index:80;min-width:190px;padding:.45rem;border:1px solid #d6e4e1;border-radius:12px;background:#fff;box-shadow:0 18px 42px rgba(16,64,53,.18)}
.account-menu-popover a,.account-menu-popover button{display:block;width:100%;margin:0;padding:.68rem .75rem;border:0;border-radius:8px;background:transparent;color:#23423b;text-align:left;text-decoration:none;font:inherit;font-weight:750;cursor:pointer}
.account-menu-popover a:hover,.account-menu-popover button:hover,.account-menu-popover a:focus-visible,.account-menu-popover button:focus-visible{background:#edf7f4;color:#075f63;outline:none}
.account-menu-popover .logout-form{margin:.25rem 0 0;padding:.25rem 0 0;border-top:1px solid #e2ece9}
@media(max-width:980px){.header-inner{gap:.75rem}.integrated-nav{overflow-x:auto;scrollbar-width:thin}.header-actions{margin-left:auto}}

/* v0.2.0 — keyword vocabulary autocomplete */
.keyword-autocomplete{position:relative;width:100%}
.keyword-autocomplete>input{width:100%}
.keyword-autocomplete-menu{position:absolute;left:0;right:0;top:calc(100% - 8px);z-index:120;max-height:250px;overflow-y:auto;padding:5px;border:1px solid #cfe1dd;border-radius:10px;background:#fff;box-shadow:0 16px 34px rgba(16,64,53,.18)}
.keyword-autocomplete-menu button{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:8px 9px;border:0;border-radius:7px;background:#fff;color:#27433d;text-align:left;font:inherit;cursor:pointer}
.keyword-autocomplete-menu button:hover,.keyword-autocomplete-menu button.is-active{background:#eaf7f3;color:#075f63}
.keyword-autocomplete-menu button small{color:#71817c;font-size:.7rem;white-space:nowrap}
.keyword-autocomplete-new{display:grid;gap:2px;padding:8px 9px;color:#4b625c;font-size:.78rem}
.keyword-autocomplete-new small{color:#71817c}

/* v0.2.0 — Tiptap link editor */
.rich-link-dialog{width:min(560px,calc(100vw - 32px));padding:0;border:0;border-radius:18px;background:#fff;color:#333434;box-shadow:0 26px 70px rgba(16,64,53,.30)}
.rich-link-dialog::backdrop{background:rgba(15,40,35,.46);backdrop-filter:blur(2px)}
.rich-link-dialog.is-open{display:block;position:fixed;inset:50% auto auto 50%;z-index:1150;transform:translate(-50%,-50%)}
.rich-link-card{margin:0}
.rich-link-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px 14px;border-bottom:1px solid #dfeae7}
.rich-link-card h4{margin:2px 0 0;color:#104035;font-size:1.12rem}
.rich-link-close{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid rgba(16,64,53,.18);border-radius:50%;background:#fff;color:#104035;font-size:1.3rem;line-height:1;cursor:pointer}
.rich-link-fields{display:grid;gap:13px;padding:18px 20px}
.rich-link-fields label{display:grid;gap:5px;color:#104035;font-size:.82rem;font-weight:800}
.rich-link-fields input{width:100%;margin:0}
.rich-link-help{margin:0;padding:10px 12px;border-radius:9px;background:#f2f8f6;color:#5b6d68;font-size:.78rem;line-height:1.45}
.rich-link-card>footer{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px;padding:13px 20px 17px;border-top:1px solid #dfeae7}
@media(max-width:560px){.rich-link-card>footer{grid-template-columns:1fr 1fr}.rich-link-card>footer>span{display:none}.rich-link-card>footer .rich-link-remove{grid-column:1/-1}}

/* v0.2.0 — aligned media catalogue and scroll-safe add form */
.rich-image-picker{padding:0;border:0;border-radius:18px;overflow:hidden;background:#fff;box-shadow:0 26px 70px rgba(16,64,53,.30)}
.rich-image-picker::backdrop{background:rgba(15,40,35,.46);backdrop-filter:blur(2px)}
.rich-image-picker-card{display:flex;flex-direction:column;width:100%;height:min(86vh,820px);max-height:min(86vh,820px);overflow:hidden;background:#fff}
.rich-image-picker-card>header{flex:0 0 auto}
.rich-image-picker-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.rich-image-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-auto-rows:minmax(172px,auto);align-items:stretch}
.rich-image-choice{display:grid!important;grid-template-rows:104px minmax(62px,1fr)!important;height:100%;min-height:172px;align-self:stretch;overflow:hidden;text-align:left}
.rich-image-choice>img,.rich-image-choice>.media-picker-icon{width:100%;height:104px}
.rich-image-choice>span:last-child{display:grid;align-content:start;gap:3px;min-height:62px}
.rich-image-choice strong,.rich-image-choice small{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;white-space:normal!important;line-height:1.25}
.rich-image-choice strong{-webkit-line-clamp:1}
.rich-image-choice small{-webkit-line-clamp:2}
.media-picker-add-panel{position:relative}
.media-picker-upload-form{padding-bottom:4px}
.media-picker-form-actions{position:sticky;bottom:-1px;z-index:2;margin:0 -2px -2px;padding:12px 2px 2px;background:linear-gradient(to bottom,rgba(248,251,250,0),#f8fbfa 34%)}
.media-picker-form-actions .smallbtn{min-width:148px}
.rich-image-picker-card>footer{flex:0 0 auto}
@media(max-width:640px){.rich-image-picker-card{height:min(90vh,820px);max-height:min(90vh,820px)}.rich-image-picker-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(166px,auto)}}

/* v0.2.0 — contributor folded navigation aligned with the public card view */
.contributor-tree{gap:12px}
.contributor-tree-category{overflow:visible;border:0;border-radius:0;background:transparent}
.contributor-tree-category>summary{min-height:44px;padding:10px 12px;border:1px solid #d6e5e1;border-radius:12px;background:#f5faf8;box-shadow:0 5px 14px rgba(16,64,53,.045);transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}
.contributor-tree-category>summary:hover,.contributor-tree-category[open]>summary{border-color:#9dcfc3;background:#edf8f5;box-shadow:0 7px 18px rgba(16,64,53,.075)}
.contributor-tree-category>summary::before{display:grid;place-items:center;width:24px;height:24px;border:1px solid #cce0db;border-radius:50%;background:#fff;font-size:1.08rem}
.contributor-tree-category-body{gap:7px;padding:8px 2px 2px}
.contributor-tree-branch{--contributor-depth:#42ad95;overflow:hidden;margin:0;border:1px solid color-mix(in srgb,var(--contributor-depth) 34%,#d7e4e1);border-left:5px solid var(--contributor-depth);border-radius:11px;background:#fff;box-shadow:0 4px 12px rgba(16,64,53,.045)}
.contributor-tree-branch>summary{grid-template-columns:auto 8px minmax(0,1fr) auto;min-height:42px;padding:8px 10px 8px 8px;background:color-mix(in srgb,var(--contributor-depth) 6%,white);transition:background .15s ease}
.contributor-tree-branch>summary:hover,.contributor-tree-branch[open]>summary{background:color-mix(in srgb,var(--contributor-depth) 11%,white)}
.contributor-tree-branch>summary::before{display:grid;place-items:center;width:22px;height:22px;border:1px solid color-mix(in srgb,var(--contributor-depth) 30%,#dbe8e5);border-radius:50%;background:#fff;color:var(--contributor-depth);font-size:.95rem}
.contributor-tree-branch>summary>span:nth-of-type(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#263d38;font-weight:800}
.contributor-tree-branch>summary small{display:grid;place-items:center;min-width:25px;height:22px;padding:0 6px;border-radius:999px;background:color-mix(in srgb,var(--contributor-depth) 13%,white);color:#425a54;font-size:.66rem;font-weight:850}
.contributor-tree-branch.tree-depth-0{--contributor-depth:#104035;background:#fff}
.contributor-tree-branch.tree-depth-1{--contributor-depth:#42ad95;background:#fff}
.contributor-tree-branch.tree-depth-2{--contributor-depth:#78a9cf;background:#fff}
.contributor-tree-branch.tree-depth-3{--contributor-depth:#a58ac5;background:#fff}
.contributor-tree-branch.tree-depth-4,.contributor-tree-branch.tree-depth-5{--contributor-depth:#b9a36f;background:#fff}
.contributor-tree-children{gap:6px;padding:7px 7px 8px 15px;border-top:1px solid color-mix(in srgb,var(--contributor-depth) 18%,#e8efed);background:#fbfdfc}
.contributor-tree-sheet{min-height:49px;padding:8px 9px;border-radius:10px;border-color:#dce8e5;box-shadow:0 2px 7px rgba(16,64,53,.025)}
.contributor-tree-sheet:hover{transform:translateY(-1px);border-color:#79bcae;box-shadow:0 6px 14px rgba(16,64,53,.08)}
.contributor-tree-sheet.is-active{border-left:4px solid #238c75;background:#eaf8f4;box-shadow:0 0 0 2px rgba(35,140,117,.10)}
.contributor-tree-sheet strong{font-size:.7rem}.contributor-tree-sheet small{font-size:.74rem;line-height:1.25}

/* Site-wide collapse contract: author-level layout rules must never override
   the closed state of native disclosure widgets. */
details:not([open])>:not(summary){
  display:none!important;
}

/* Collapse contract shared by Contributor and Review navigation. Author CSS
   explicitly hides closed detail bodies so later display:grid declarations can
   never leave residual space or override native <details> behaviour. */
.contributor-tree-category:not([open])>.contributor-tree-category-body,
.contributor-tree-branch:not([open])>.contributor-tree-children{
  display:none!important;
}
.contributor-tree-category[open]>.contributor-tree-category-body,
.contributor-tree-branch[open]>.contributor-tree-children{
  align-content:start;
}

/* v0.2.0 — dedicated global rating analytics */
.analytics-rating-insights{display:grid;grid-template-columns:minmax(300px,.75fr) minmax(360px,1.25fr);gap:18px;align-items:start}
.analytics-rating-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}
.analytics-rating-summary .analytics-kpi{min-height:118px}
.analytics-rating-distribution{display:grid;gap:9px;padding:12px;border:1px solid #d7e8e4;border-radius:13px;background:#f8fcfb}
.analytics-rating-row{display:grid;grid-template-columns:46px minmax(0,1fr) 42px;align-items:center;gap:9px;color:#34564e}
.analytics-rating-row strong{font-size:.78rem}.analytics-rating-row small{text-align:right;color:#60746f}
.analytics-rating-row>span{height:13px;overflow:hidden;border-radius:999px;background:#e4efec}
.analytics-rating-row i{display:block;height:100%;border-radius:999px;background:var(--fbi-teal)}
@media(max-width:1050px){.analytics-rating-insights{grid-template-columns:1fr}.analytics-rating-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.analytics-rating-summary{grid-template-columns:1fr}}

/* v0.2.0 — keyword curation workspace */
.keyword-curation-page{width:min(1320px,calc(100% - 40px));margin:0 auto;padding:2rem 0 4rem}
.keyword-curation-heading{max-width:850px}.keyword-curation-heading h1{margin:.2rem 0 .55rem;color:#104035;font-size:clamp(2rem,4vw,3.2rem)}.keyword-curation-heading p:last-child{color:#586a65;line-height:1.5}
.keyword-curation-card{margin-top:1.2rem;border:1px solid #d8e8e5;border-radius:16px;background:#fff;box-shadow:0 10px 28px rgba(16,64,53,.06)}
.keyword-curation-toolbar{display:flex;align-items:end;gap:10px;padding:14px 16px;border-bottom:1px solid #e0ece9;background:#f8fbfa;border-radius:16px 16px 0 0}
.keyword-curation-toolbar label{display:grid;flex:1;gap:4px;color:#104035;font-size:.78rem;font-weight:800}.keyword-curation-toolbar input{margin:0}
.keyword-curation-table-scroll{max-height:68vh;overflow:auto;scrollbar-gutter:stable}
.keyword-curation-table{width:100%;border-collapse:collapse}
.keyword-curation-table th{position:sticky;top:0;z-index:1;padding:11px 13px;background:#edf7f5;color:#104035;text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}
.keyword-curation-table td{padding:10px 13px;border-bottom:1px solid #e6efed;vertical-align:middle}.keyword-curation-table tr:hover td{background:#fbfdfc}
.keyword-curation-table input{min-width:220px;margin:0}
.keyword-curation-table td:last-child{text-align:right;white-space:nowrap}
@media(max-width:720px){.keyword-curation-page{width:calc(100% - 20px)}.keyword-curation-toolbar{align-items:stretch;flex-direction:column}.keyword-curation-table{min-width:720px}}

/* v0.2.0 — global action-control consistency and analytics chart controls */
.smallbtn,
a.smallbtn,
button.smallbtn{
  appearance:none;
  -webkit-appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.35rem;
  min-height:34px;
  margin:0;
  padding:7px 10px;
  border:1px solid transparent;
  border-radius:8px;
  background:var(--fbi-deep);
  color:#fff;
  font:inherit;
  font-size:.78rem;
  font-weight:750;
  line-height:1.15;
  text-align:center;
  text-decoration:none!important;
  white-space:nowrap;
  cursor:pointer;
  box-shadow:none;
  transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .15s ease;
}
.smallbtn:visited{color:#fff}
.smallbtn:hover{background:#176b5a;color:#fff;text-decoration:none!important}
.smallbtn:focus-visible{outline:3px solid rgba(0,190,160,.22);outline-offset:2px}
.smallbtn.light,
a.smallbtn.light,
button.smallbtn.light{border-color:#c9dfda;background:#e6f3f0;color:var(--fbi-deep)}
.smallbtn.light:visited{color:var(--fbi-deep)}
.smallbtn.light:hover{border-color:#9ccbc0;background:#d7ece7;color:#075f63}
.smallbtn.secondary,
a.smallbtn.secondary,
button.smallbtn.secondary{border-color:var(--fbi-darkteal);background:var(--fbi-darkteal);color:#fff}
.smallbtn.secondary:hover{background:#176f5e;border-color:#176f5e}
.smallbtn.danger{background:#8c2f39;color:#fff;border-color:#8c2f39}
.smallbtn.danger:hover{background:#742630;border-color:#742630}
.tool-button,.mode-choice,.nav-link,.account-chip,.quiet-link{font-family:inherit}
a.nav-link,a.header-login,a.quiet-link{text-decoration:none}

/* Contributor sidebar actions use one component geometry for links and buttons. */
.contributor-sidebar-actions{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:7px;
}
.contributor-sidebar-actions .smallbtn{width:100%;min-width:0;white-space:normal}

/* Remove generic input margins inside analytics so controls share one baseline. */
.analytics-filter-grid{align-items:end}
.analytics-filter-grid label{align-self:end}
.analytics-filter-grid input,
.analytics-filter-grid select{
  min-height:40px;
  margin:0;
  padding:8px 10px;
}
.analytics-filter-actions{
  align-self:end;
  display:flex;
  align-items:stretch;
  gap:.45rem;
  min-height:40px;
  padding:0;
}
.analytics-filter-actions .smallbtn{min-height:40px;padding-inline:12px}

.analytics-timeline-heading{align-items:center}
.analytics-metric-switch{
  display:inline-flex;
  align-items:center;
  gap:3px;
  padding:3px;
  border:1px solid #cfe2de;
  border-radius:10px;
  background:#f2f8f6;
}
.analytics-metric-toggle{
  appearance:none;
  -webkit-appearance:none;
  min-height:32px;
  margin:0;
  padding:6px 10px;
  border:1px solid transparent;
  border-radius:7px;
  background:transparent;
  color:#48615b;
  font:inherit;
  font-size:.76rem;
  font-weight:800;
  line-height:1.1;
  cursor:pointer;
  transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease;
}
.analytics-metric-toggle:hover{background:#e5f2ef;color:#075f63}
.analytics-metric-toggle.is-active{
  border-color:#176f5e;
  background:#176f5e;
  color:#fff;
  box-shadow:0 3px 9px rgba(16,64,53,.14);
}
.analytics-metric-toggle:focus-visible{outline:3px solid rgba(0,190,160,.22);outline-offset:2px}
.analytics-chart-legend{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:14px;
  min-height:20px;
  margin:-2px 2px 3px;
  color:#5d716c;
  font-size:.7rem;
  font-weight:700;
}
.analytics-chart-legend span{display:inline-flex;align-items:center;gap:5px}
.analytics-chart-legend i,
.analytics-chart-tooltip span>i{
  display:inline-block;
  width:9px;
  height:9px;
  border-radius:3px;
  flex:0 0 auto;
}
.analytics-chart-legend i.views,.analytics-chart-tooltip i.views{background:var(--fbi-darkteal)}
.analytics-chart-legend i.ratings,.analytics-chart-tooltip i.ratings{background:var(--fbi-teal)}
.analytics-day{position:relative;outline:none}
.analytics-day:focus-visible .analytics-day-bars{box-shadow:0 0 0 3px rgba(0,190,160,.18);border-radius:5px}
.analytics-day-bars{transition:filter .12s ease,opacity .12s ease}
.analytics-day:hover .analytics-day-bars{filter:saturate(1.12) brightness(.96)}
.analytics-day-bars i{min-width:4px}
.analytics-day-bars-combined{gap:2px}
.analytics-chart-tooltip{
  position:fixed;
  z-index:250;
  min-width:148px;
  max-width:220px;
  padding:9px 10px;
  border:1px solid rgba(16,64,53,.16);
  border-radius:10px;
  background:rgba(255,255,255,.98);
  color:#314942;
  box-shadow:0 12px 30px rgba(16,64,53,.18);
  pointer-events:none;
  font-size:.73rem;
  line-height:1.25;
}
.analytics-chart-tooltip[hidden]{display:none}
.analytics-chart-tooltip>strong{display:block;margin-bottom:6px;color:#104035;font-size:.76rem}
.analytics-chart-tooltip span{display:grid;grid-template-columns:9px 1fr auto;align-items:center;gap:6px;margin-top:4px}
.analytics-chart-tooltip b{color:#104035;font-size:.78rem}

@media(max-width:900px){
  .analytics-timeline-heading{align-items:flex-start;flex-direction:column}
  .analytics-metric-switch{align-self:flex-start}
  .analytics-filter-actions{grid-column:1/-1;justify-content:flex-end}
}
@media(max-width:520px){
  .contributor-sidebar-actions{grid-template-columns:1fr}
  .analytics-metric-switch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
  .analytics-metric-toggle{white-space:normal}
  .analytics-filter-actions{justify-content:stretch}
  .analytics-filter-actions .smallbtn{flex:1}
}

/* Quiet actions are intentionally text-like, but still normalised across anchors and buttons. */
.quiet-link,
a.quiet-link,
button.quiet-link{
  appearance:none;
  -webkit-appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin:0;
  padding:0;
  border:0;
  background:transparent;
  color:#075f63;
  font:inherit;
  font-weight:700;
  line-height:1.2;
  text-decoration:none;
  cursor:pointer;
}
.quiet-link:hover{color:#104035;text-decoration:underline;text-underline-offset:.16em}
.quiet-link:focus-visible{outline:2px solid rgba(0,190,160,.28);outline-offset:3px;border-radius:3px}

/* v0.2.0 — personal content workflow, required-field affordance and toolbar containment */
.rich-toolbar select{
  width:auto;
  margin:0;
}
.contributor-content-block .rich-toolbar .rich-tool-group-table{
  width:max-content;
  min-width:max-content;
  overflow:visible;
}
.contributor-content-block .rich-toolbar .rich-table-action-select,
.rich-toolbar .rich-table-action-select{
  width:124px!important;
  min-width:124px;
  max-width:124px;
  margin:0!important;
}
.field-label-text{
  display:inline-flex;
  align-items:baseline;
  gap:3px;
  width:max-content;
  max-width:100%;
}
.required-marker{
  color:#a53b4f;
  font-size:.9rem;
  font-weight:900;
  line-height:1;
}
.personal-classification-field{
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center;
  gap:14px!important;
  padding:12px 14px;
  border:1px solid #cfdfdb;
  border-radius:12px;
  background:#f8fbfa;
}
.personal-classification-copy{display:grid;gap:3px;min-width:0}
.personal-classification-copy strong{color:#104035;font-size:.8rem}
.personal-classification-copy small{color:#60716c;font-size:.72rem;font-weight:400;line-height:1.35}
.personal-classification-field input[type="checkbox"]{
  width:20px!important;
  height:20px;
  margin:0!important;
  accent-color:var(--fbi-deep);
}
.personal-badge{background:#eee9f8;color:#5f4f88}
.contributor-sheet-form.is-personal-workflow .personal-classification-field{
  border-color:#cfc4e3;
  background:#f8f5fc;
}
.contributor-sheet-form.is-personal-workflow .review-only-field{opacity:.48}
.contributor-sheet-form.is-personal-workflow .personal-ontology-help{color:#6c5c92}
@media(max-width:700px){
  .personal-classification-field{grid-template-columns:minmax(0,1fr) auto!important}
}


/* v0.2.0 — shared viewport geometry across portal workspaces
   The ontology view is the reference: every operational page uses the same
   fluid horizontal gutter instead of a page-specific fixed maximum width. */
:root{
  --portal-page-gutter:clamp(16px,2vw,40px);
  --portal-workspace-gap:18px;
  --contributor-sidebar-width:clamp(260px,18vw,330px);
}

.contributor-page,
.analytics-page,
.sheet-search-page,
.keyword-curation-page{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
  padding-left:var(--portal-page-gutter)!important;
  padding-right:var(--portal-page-gutter)!important;
}

.contributor-layout{
  width:100%;
  max-width:none;
  grid-template-columns:var(--contributor-sidebar-width) minmax(0,1fr)!important;
  gap:var(--portal-workspace-gap)!important;
}
.contributor-sidebar{
  width:100%;
  min-width:0;
  justify-self:stretch;
}
.contributor-editor-shell{
  width:100%;
  min-width:0;
  max-width:none;
  justify-self:stretch;
}
.contributor-sheet-form,
.contributor-block,
.contributor-content-block{
  min-width:0;
  max-width:none;
}

/* The left navigation and editor remain side-by-side for normal desktop and
   tablet widths. The editor therefore absorbs viewport resizing rather than
   keeping a centred fixed-width frame. */
@media(min-width:821px){
  .contributor-layout:not(.contributor-account-layout){
    grid-template-columns:var(--contributor-sidebar-width) minmax(0,1fr)!important;
  }
  .contributor-layout:not(.contributor-account-layout) .contributor-sidebar{
    position:sticky!important;
    top:84px;
    max-height:calc(100vh - 108px)!important;
  }
  .contributor-layout:not(.contributor-account-layout) .contributor-save-bar{
    left:calc(var(--portal-page-gutter) + var(--contributor-sidebar-width) + var(--portal-workspace-gap))!important;
    right:var(--portal-page-gutter)!important;
  }
  .contributor-account-layout .contributor-save-bar{
    left:var(--portal-page-gutter)!important;
    right:var(--portal-page-gutter)!important;
  }
}

@media(max-width:820px){
  .contributor-layout,
  .contributor-layout:not(.contributor-account-layout){
    grid-template-columns:minmax(0,1fr)!important;
  }
  .contributor-sidebar{
    position:static!important;
    max-height:none!important;
  }
  .contributor-save-bar{
    left:var(--portal-page-gutter)!important;
    right:var(--portal-page-gutter)!important;
  }
}

/* Explicit visual treatment for sheets that are not attached to an ontology.
   It uses the same tree component instead of a separate card vocabulary. */
.contributor-tree-branch[data-tree-key="outside:ontology"]>summary{
  border-style:dashed;
  background:#f7f8f8;
  color:#5b6865;
}
.contributor-tree-branch[data-tree-key="outside:ontology"] .tree-level-marker{
  background:#9aa5a2;
}

/* v0.2.0 — portal-wide alignment refinement
   Keep the same horizontal geometry as the ontology workspace across the
   global header, cards view and operational workspaces. */
.header-inner,
.workspace-heading>div,
.explorer-controls,
.integrated-content{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
  padding-left:var(--portal-page-gutter)!important;
  padding-right:var(--portal-page-gutter)!important;
}

/* The ontology map already uses this geometry. Apply it to the card view too
   so switching navigation modes does not move the content frame. */
#library .integrated-content,
#mindmap .integrated-content{
  width:100%!important;
  max-width:none!important;
  padding-left:var(--portal-page-gutter)!important;
  padding-right:var(--portal-page-gutter)!important;
}

/* Legacy SPA workspaces (Course Builder, Programmes and API) share the same
   viewport anchors instead of returning to the old 1240 px centred frame. */
.panel.full{
  width:calc(100% - (2 * var(--portal-page-gutter)))!important;
  max-width:none!important;
  margin-left:var(--portal-page-gutter)!important;
  margin-right:var(--portal-page-gutter)!important;
}
.view.layout{
  width:100%!important;
  max-width:none!important;
  padding-left:var(--portal-page-gutter)!important;
  padding-right:var(--portal-page-gutter)!important;
}

/* On wide screens the navigation column is the left anchor and the editor is
   the flexible column. Both edges therefore follow the browser resize. */
@media(min-width:821px){
  .contributor-page{
    padding-left:var(--portal-page-gutter)!important;
    padding-right:var(--portal-page-gutter)!important;
  }
  .contributor-layout:not(.contributor-account-layout){
    grid-template-columns:var(--contributor-sidebar-width) minmax(0,1fr)!important;
    width:100%!important;
  }
  .contributor-layout:not(.contributor-account-layout) .contributor-sidebar{
    margin-left:0!important;
  }
  .contributor-layout:not(.contributor-account-layout) .contributor-editor-shell{
    margin-right:0!important;
  }
}

/* v0.2.0 — compact translation start selector and affiliation alignment */
.translation-start-field{
  align-content:start;
}
.translation-start-field .field-help{
  margin-top:-2px;
}

/* Native checkbox/radio controls must not inherit the 100% width used by
   text fields. Keeping their intrinsic size also aligns every multi-choice
   selector with the portal field grid. */
input[type="checkbox"],
input[type="radio"]{
  width:auto!important;
  min-width:0!important;
  padding:0!important;
  margin:0!important;
  flex:0 0 auto;
  accent-color:var(--fbi-deep);
}

.contribution-affiliation-editor{
  grid-template-columns:minmax(0,1fr) auto;
  column-gap:14px;
  row-gap:8px;
  align-items:end;
}
.contribution-affiliation-editor>strong{
  grid-column:1/-1;
  align-self:start;
}
.contribution-affiliation-options{
  grid-column:1;
  display:grid;
  gap:7px;
  min-width:0;
}
.contribution-affiliation-options label,
.review-affiliation-fieldset label{
  display:grid!important;
  grid-template-columns:18px minmax(0,1fr);
  align-items:start!important;
  gap:7px!important;
  margin:0;
  min-width:0;
  line-height:1.35;
}
.contribution-affiliation-options input[type="checkbox"],
.review-affiliation-fieldset input[type="checkbox"]{
  width:16px!important;
  height:16px;
  margin-top:1px!important;
}
.contribution-affiliation-options span{
  min-width:0;
  overflow-wrap:anywhere;
}
.contribution-affiliation-actions{
  grid-column:2;
  display:flex;
  align-items:flex-end;
  justify-content:flex-end;
}
.contribution-affiliation-actions .smallbtn{
  margin:0;
  white-space:nowrap;
}

.profile-membership-form>label:has(input[type="checkbox"]){
  display:flex;
  align-items:center;
  gap:8px;
  min-height:42px;
}

@media(max-width:720px){
  .contribution-affiliation-editor{
    grid-template-columns:minmax(0,1fr);
  }
  .contribution-affiliation-editor>strong,
  .contribution-affiliation-options,
  .contribution-affiliation-actions{
    grid-column:1;
  }
  .contribution-affiliation-actions{
    justify-content:flex-start;
  }
}

/* Keep the Personal-sheet switch intentionally larger than ordinary checklist controls. */
.personal-classification-field input[type="checkbox"]{
  width:20px!important;
  min-width:20px!important;
  height:20px!important;
}

/* Final viewport-anchor correction: avoid double horizontal padding in the
   workspace hero and legacy full panels while keeping the ontology gutter as
   the single source of horizontal alignment. */
.workspace-heading{
  padding-left:0!important;
  padding-right:0!important;
}
#courses.view{
  width:100%!important;
  max-width:none!important;
  padding-left:var(--portal-page-gutter)!important;
  padding-right:var(--portal-page-gutter)!important;
  padding-bottom:28px;
}
#courses .panel.full,
#api .panel.full{
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}

.field-validation-message{
  display:block;
  color:#a53b4f;
  font-size:.72rem;
  font-weight:700;
  line-height:1.3;
  margin-top:2px;
}
.metadata-grid label.has-validation-error > input:not([type="checkbox"]):not([type="radio"]),
.metadata-grid label.has-validation-error > textarea,
.metadata-grid label.has-validation-error > select{
  border-color:#b44759!important;
  box-shadow:0 0 0 2px rgba(180,71,89,.12);
}
.outside-ontology-badge{white-space:nowrap}

/* v0.2.0 — reusable media catalogue, shared keywords and media metadata */
.media-catalogue-toolbar{
  display:grid;
  grid-template-columns:auto minmax(260px,1fr);
  align-items:end;
  gap:12px;
  padding:12px 16px;
  border-bottom:1px solid #dfeae7;
  background:#f8fbfa;
}
.media-catalogue-tabs{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.media-catalogue-tab{min-width:112px;justify-content:center}
.media-catalogue-tab.is-active{background:#104d43;color:#fff;border-color:#104d43}
.media-catalogue-search{display:grid;gap:4px;margin:0;color:#104035;font-size:.76rem;font-weight:800}
.media-catalogue-search input{margin:0;width:100%}
.media-choice-copy{display:grid;align-content:start;gap:3px;min-width:0}
.media-choice-copy em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#63766f;font-size:.68rem;font-style:normal}
.media-choice-keywords{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:#0b6c60;font-size:.68rem;line-height:1.2}
.media-choice-usage{color:#75857f;font-size:.65rem;font-weight:700}
.rich-image-choice.is-reusable{border-style:dashed}
.rich-image-choice.is-reusable:hover{border-style:solid}
.media-card-keywords{margin:.3rem 0 0!important;color:#526862;font-size:.76rem!important}
.media-card-keywords strong{color:#104035}
.media-card-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto;padding-top:8px}
.media-reuse-badge{background:#edf6fb;color:#32617b}
.media-metadata-dialog{width:min(680px,calc(100vw - 32px))}
.media-metadata-fields textarea{width:100%;resize:vertical}
.media-metadata-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.media-metadata-form>footer{grid-template-columns:1fr auto auto}
@media(max-width:720px){
  .media-catalogue-toolbar{grid-template-columns:1fr;align-items:stretch}
  .media-catalogue-tabs{display:grid;grid-template-columns:1fr 1fr}
  .media-catalogue-tab{width:100%}
  .media-metadata-two{grid-template-columns:1fr}
}

/* v0.2.0 — shared resizable navigation/main workspaces
   Sheets cards, Contribute and Review use the same draggable divider geometry.
   The ontology map keeps its dedicated dual-collapse splitter but follows the
   same visual language. */
.sr-only{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}

.workspace-splitter{
  --workspace-splitter-line:#c8d9d5;
  position:relative;
  align-self:stretch;
  width:18px;
  min-width:18px;
  min-height:100%;
  cursor:col-resize;
  touch-action:none;
  outline:none;
  z-index:5;
}
.workspace-splitter::before{
  content:"";
  position:absolute;
  inset:0 auto 0 50%;
  width:1px;
  transform:translateX(-50%);
  background:var(--workspace-splitter-line);
  transition:width .14s ease,background .14s ease,box-shadow .14s ease;
}
.workspace-splitter::after{
  content:"";
  position:absolute;
  top:50%;
  left:50%;
  display:block;
  width:5px;
  height:42px;
  transform:translate(-50%,-50%);
  border-radius:999px;
  background:rgba(16,64,53,.12);
  opacity:.65;
  pointer-events:none;
  transition:background .14s ease,opacity .14s ease;
}
.workspace-splitter:hover::before,
.workspace-splitter:focus-visible::before,
.has-workspace-splitter.is-split-resizing>.workspace-splitter::before{
  width:3px;
  background:#238c75;
  box-shadow:0 0 0 3px rgba(35,140,117,.08);
}
.workspace-splitter:hover::after,
.workspace-splitter:focus-visible::after,
.has-workspace-splitter.is-split-resizing>.workspace-splitter::after{
  background:#238c75;
  opacity:.9;
}
.workspace-splitter:focus-visible{
  box-shadow:inset 0 0 0 2px rgba(35,140,117,.2);
  border-radius:6px;
}
html.workspace-split-resizing,
html.workspace-split-resizing *{
  cursor:col-resize!important;
  user-select:none!important;
}

.ontology-card-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  min-height:30px;
  margin:0 0 10px;
  padding:0 2px 8px;
  border-bottom:1px solid rgba(16,64,53,.1);
  color:#104035;
  font-size:.72rem;
  font-weight:850;
  text-transform:uppercase;
  letter-spacing:.06em;
}
.ontology-card-toolbar .quiet-link{
  flex:0 0 auto;
  text-transform:none;
  letter-spacing:0;
  font-size:.72rem;
}

@media(min-width:901px){
  .cards-layout[data-resizable-split]{
    --workspace-splitter-size:18px;
    --workspace-left-width:38%;
    grid-template-columns:var(--workspace-left-width) var(--workspace-splitter-size) minmax(0,1fr)!important;
    gap:0!important;
    align-items:stretch!important;
  }
  .cards-layout[data-resizable-split]>.ontology-card-panel,
  .cards-layout[data-resizable-split]>.sheet-card-panel{
    min-width:0!important;
  }
}

@media(min-width:821px){
  .contributor-layout[data-resizable-split]:not(.contributor-account-layout){
    --workspace-splitter-size:18px;
    --workspace-left-width:var(--contributor-sidebar-width);
    grid-template-columns:var(--workspace-left-width) var(--workspace-splitter-size) minmax(0,1fr)!important;
    gap:0!important;
    align-items:start!important;
  }
  .contributor-layout[data-resizable-split]:not(.contributor-account-layout)>.contributor-sidebar,
  .contributor-layout[data-resizable-split]:not(.contributor-account-layout)>.contributor-editor-shell{
    min-width:0!important;
  }
  .contributor-layout[data-resizable-split]:not(.contributor-account-layout)>.workspace-splitter{
    min-height:max(620px,calc(100vh - 108px));
  }
  .contributor-layout[data-resizable-split]:not(.contributor-account-layout) .contributor-save-bar{
    left:calc(var(--portal-page-gutter) + var(--workspace-left-width) + var(--workspace-splitter-size))!important;
    right:var(--portal-page-gutter)!important;
  }
}

@media(max-width:900px){
  .cards-layout[data-resizable-split]>.workspace-splitter{display:none!important}
}
@media(max-width:820px){
  .contributor-layout[data-resizable-split]>.workspace-splitter{display:none!important}
}
.ontology-card-toolbar{
  position:sticky;
  top:0;
  z-index:4;
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(8px);
}

/* v0.2.0 governance: keep the global account menu above sticky work panels. */
.integrated-header{z-index:500!important}
.account-menu-popover{z-index:520!important}
.portal-legal-footer{display:flex;align-items:center;justify-content:space-between;gap:.65rem 1rem;flex-wrap:wrap}
.portal-legal-footer nav{display:flex;gap:.8rem;flex-wrap:wrap}
.portal-legal-footer a{color:#24554d;font-weight:700;text-decoration:none}
.portal-legal-footer a:hover{text-decoration:underline}
@media(max-width:760px){.portal-legal-footer{justify-content:center;text-align:center}}

/* Ontology curation workspace */
.ontology-curation-page{width:min(1540px,calc(100% - 40px));margin:0 auto;padding:2rem 0 4rem}.ontology-curation-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.1rem}.ontology-curation-heading h1{margin:.18rem 0 .45rem;color:#104035;font-size:clamp(2rem,4vw,3.15rem)}.ontology-curation-heading p:last-child{max-width:900px;color:#586a65;line-height:1.5}.ontology-curation-layout{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:12px;align-items:start}.ontology-curation-tree-card,.ontology-curation-editor-card{border:1px solid #d8e8e5;border-radius:16px;background:#fff;box-shadow:0 10px 28px rgba(16,64,53,.06);overflow:hidden}.ontology-curation-tree-card{position:sticky;top:82px;max-height:calc(100vh - 104px);overflow:auto}.ontology-curation-card-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:12px 14px;border-bottom:1px solid #e3ecea}.ontology-curation-card-head h2{margin:.1rem 0;color:#104035}.ontology-curation-tree{padding:10px}.ontology-curation-book+.ontology-curation-book{margin-top:10px}.ontology-curation-book-title{display:flex;width:100%;align-items:center;justify-content:space-between;gap:.6rem;padding:.7rem .75rem;border:1px solid #c9dfda;border-radius:10px;background:#edf7f5;color:#104035;text-align:left;font:inherit;font-weight:900;cursor:pointer}.ontology-curation-book-title small{color:#60716d;font-size:.68rem;font-weight:700}.ontology-curation-node-list{display:grid;gap:4px;padding:.4rem 0 0 .35rem}.ontology-curation-node,.ontology-curation-root-link{display:flex;align-items:center;justify-content:space-between;gap:.6rem;width:100%;padding:.5rem .6rem .5rem calc(.6rem + var(--node-depth,0)*1rem);border:1px solid transparent;border-radius:8px;background:transparent;color:#294b43;text-align:left;font:inherit;font-size:.79rem;font-weight:750;cursor:pointer}.ontology-curation-node:hover,.ontology-curation-node.is-selected{border-color:#bcdcd4;background:#f1f8f6}.ontology-curation-node small{display:inline-grid;min-width:1.35rem;height:1.35rem;place-items:center;border-radius:50%;background:#e7f2ef;color:#40655c;font-size:.65rem}.ontology-curation-root-link{color:#6b7a76;font-size:.7rem}.ontology-curation-editor-card{min-height:500px}.ontology-curation-empty{padding:3rem}.ontology-curation-empty h2{color:#104035}.ontology-curation-form,.ontology-curation-subform,.ontology-curation-sheet-section{padding:14px}.ontology-curation-subform,.ontology-curation-sheet-section{border-top:1px solid #e3ecea}.ontology-curation-subform h3{margin:.1rem 0 1rem;color:#104035}.ontology-curation-actions{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;margin-top:1rem}.smallbtn.danger{border-color:#e6bcc4;background:#fff5f6;color:#8b3344}.smallbtn.danger:hover{background:#fbe8eb}.ontology-inline-check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center!important;justify-content:flex-start;gap:.5rem}.ontology-inline-check input{width:auto!important;margin:0!important}.ontology-move-target{padding:10px 14px;background:#f8fbfa;border-bottom:1px solid #e3ecea}.ontology-move-target label{display:grid;gap:4px;color:#104035;font-size:.76rem;font-weight:800}.ontology-node-sheets{display:grid;gap:6px;padding:10px 14px}.ontology-curation-sheet{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.65rem .7rem;border:1px solid #dce8e5;border-radius:9px;background:#fff}.ontology-curation-sheet>span{display:grid;min-width:0;gap:.15rem}.ontology-curation-sheet strong{color:#104035;font-size:.78rem}.ontology-curation-sheet small{overflow:hidden;color:#5f706c;text-overflow:ellipsis;white-space:nowrap}.ontology-curation-message{min-height:2.4rem;padding:.7rem 14px;color:#176b56;font-size:.78rem;font-weight:750}.ontology-curation-message.is-error{color:#9b3d4c}.ontology-curation-form .field-help,.ontology-curation-sheet-section>.field-help{display:block;margin:.7rem 0 0;color:#657672;font-size:.72rem}.required-mark{margin-left:.2rem;color:#a53d4c;font-weight:900}@media(max-width:900px){.ontology-curation-page{width:calc(100% - 20px);padding-top:1rem}.ontology-curation-heading{align-items:flex-start;flex-direction:column}.ontology-curation-layout{grid-template-columns:1fr}.ontology-curation-tree-card{position:static;max-height:none}}
/* Courses workspace */
.courses-hub{display:grid;gap:24px}.courses-hero{padding:24px;border-radius:18px;background:linear-gradient(135deg,rgba(7,95,99,.10),rgba(7,95,99,.02));border:1px solid rgba(7,95,99,.18)}.courses-hero h2{margin:.2rem 0}.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;font-weight:700;color:var(--accent,#075f63)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:16px}.section-heading input{max-width:340px}.community-course-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.community-course-card,.saved-course{border:1px solid var(--border,#d8dfdf);border-radius:14px;background:#fff;padding:16px;box-shadow:0 2px 10px rgba(0,0,0,.035)}.community-course-card{display:flex;flex-direction:column;justify-content:space-between;gap:14px}.community-course-actions,.export-actions,.course-head-actions{display:flex;gap:8px;flex-wrap:wrap}.course-credit{font-size:.86rem;color:#566}.my-course-strip{display:flex;gap:10px;overflow:auto;padding:3px 0}.my-course-strip .saved-course{min-width:240px}.course-workspace{display:grid;grid-template-columns:minmax(280px,32%) 8px minmax(0,1fr);min-height:660px;border:1px solid var(--border,#d8dfdf);border-radius:16px;overflow:hidden;background:#fff}.course-source-panel,.course-outline-panel{padding:18px;min-width:0}.course-source-panel{background:#f8fbfb;overflow:auto}.course-outline-panel{overflow:auto}.course-editor-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.course-metadata-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}.course-metadata-grid .wide{grid-column:1/-1}.course-outline{display:grid;gap:8px}.course-outline-item{display:flex;align-items:center;gap:10px;padding:11px 12px 11px calc(12px + var(--course-depth,0)*26px);border:1px solid #dfe7e7;border-radius:12px;background:#fff}.course-outline-copy{flex:1;min-width:0}.course-outline-actions{display:flex;gap:4px;flex-wrap:wrap}.course-drag{cursor:grab;color:#788}.depth-label{font-size:.75rem;color:#788;margin-left:8px}.workspace-splitter{cursor:col-resize;background:linear-gradient(90deg,transparent 2px,#d5dfdf 2px,#d5dfdf 6px,transparent 6px)}@media(max-width:850px){.course-workspace{display:block}.workspace-splitter{display:none}.course-metadata-grid{grid-template-columns:1fr}.course-metadata-grid .wide{grid-column:auto}.section-heading{align-items:stretch;flex-direction:column}.section-heading input{max-width:none}}

/* 2026-09-14 — Course basket / builder consistency */
.card-course-basket{
  position:sticky;top:74px;z-index:8;margin:0 0 12px;padding:10px 12px;
  border:1px solid #cfe1dd;border-radius:12px;background:rgba(248,252,251,.97);
  box-shadow:0 5px 16px rgba(16,64,53,.06);backdrop-filter:blur(8px)
}
.card-course-basket-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.card-course-basket-head>div:first-child{display:grid;gap:2px;min-width:0}
.card-course-basket-head strong{color:#104035;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card-course-basket-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.card-course-basket-preview{display:flex;gap:6px;align-items:center;overflow-x:auto;padding-top:8px;scrollbar-width:thin}
.course-basket-chip{display:inline-block;max-width:260px;flex:0 0 auto;padding:5px 8px;border:1px solid #d9e7e4;border-radius:999px;background:#fff;color:#31544c;font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.course-basket-more{flex:0 0 auto;color:#58706a;font-size:.72rem;font-weight:700}

.courses-hub{display:grid;gap:14px;padding-top:14px}
.courses-topbar{display:flex;align-items:end;justify-content:space-between;gap:16px;padding:0 2px 4px;border-bottom:1px solid #e1ebe8}
.courses-topbar h2{margin:.1rem 0 .35rem;color:#104035}
.courses-section-tabs{display:flex;gap:8px;flex-wrap:wrap}
.course-community-section,.course-my-section{margin:0}
.course-community-section{padding-top:4px}
.course-my-section{display:grid;gap:8px}
.my-course-strip{padding:2px 0 4px}

.course-workspace{min-height:610px;max-height:calc(100vh - 170px);border-color:#d7e5e2;box-shadow:0 8px 24px rgba(16,64,53,.045)}
.course-source-panel,.course-outline-panel{padding:14px}
.course-source-panel{background:#fbfdfc}
.course-source-sticky{position:sticky;top:-14px;z-index:4;margin:-14px -14px 10px;padding:14px 14px 9px;background:#fbfdfc;border-bottom:1px solid #e1ebe8}
.course-source-sticky h3{margin:0 0 8px;color:#104035}
.course-editor-sticky{position:sticky;top:-14px;z-index:5;margin:-14px -14px 8px;padding:12px 14px 10px;background:rgba(255,255,255,.97);border-bottom:1px solid #e1ebe8;backdrop-filter:blur(8px)}
.course-editor-sticky h3{margin:.08rem 0;color:#104035}
.course-metadata-details{margin:0 0 10px;border:1px solid #deebe8;border-radius:10px;background:#fbfdfc;overflow:hidden}
.course-metadata-details>summary{cursor:pointer;padding:9px 11px;color:#31544c;font-size:.78rem;font-weight:800;list-style:none}
.course-metadata-details>summary::-webkit-details-marker{display:none}
.course-metadata-details>summary:before{content:'▾';display:inline-block;margin-right:7px;transition:transform .16s ease}
.course-metadata-details:not([open])>summary:before{transform:rotate(-90deg)}
.course-metadata-grid{margin:0;padding:0 11px 11px;gap:8px}
.course-metadata-grid label{font-size:.74rem;font-weight:800;color:#31544c}
.course-metadata-grid input,.course-metadata-grid textarea{margin:4px 0 0;padding:8px 9px;border-radius:8px}
.course-metadata-grid textarea{min-height:62px}
.course-outline-help{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:8px 0;padding:8px 10px;border:1px solid #dbe9e6;border-radius:9px;background:#f4faf8;color:#537068;font-size:.74rem}
.course-outline-help strong{color:#104035}
.course-outline{gap:6px}
.course-outline-item{position:relative;min-height:52px;padding:8px 9px 8px calc(10px + var(--course-depth,0)*28px);border-radius:9px;background:#fff;transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease}
.course-outline-item:before{content:'';position:absolute;left:calc(8px + var(--course-depth,0)*28px);top:7px;bottom:7px;width:3px;border-radius:3px;background:#b8d7d0;transform:translateX(-8px)}
.course-outline-item.is-drop-target{border-color:#3a8f7d;box-shadow:0 0 0 2px rgba(58,143,125,.12)}
.course-outline-item.is-dragging{opacity:.55}
.course-outline-copy strong{display:block;color:#173f36;font-size:.8rem;line-height:1.25}
.course-outline-actions{justify-content:flex-end;align-items:center}
.course-outline-actions .hierarchy-btn{padding:5px 7px;font-size:.68rem;white-space:nowrap}
.course-outline-actions .compact-btn{min-width:28px;padding:5px 7px}
.course-outline-actions button:disabled{opacity:.36;cursor:not-allowed}
.course-drag{font-size:.9rem}
.depth-label{margin-left:6px}

.export-box{display:grid;grid-template-columns:minmax(180px,1fr) auto auto;align-items:center;gap:14px;margin-top:12px;padding:11px 12px;border:1px solid #d7e5e2;border-radius:11px;background:#f8fbfa}
.export-box h4{margin:0 0 2px;color:#104035}
.export-box .api-note{margin:0;padding:0;background:transparent;font-family:inherit;font-size:.7rem;color:#657772}
.export-options{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.export-options label{display:flex;align-items:center;gap:5px;margin:0;font-size:.72rem;white-space:nowrap}
.export-options input{width:auto;margin:0}
.export-actions{justify-content:flex-end}

@media(max-width:1100px){
  .course-workspace{max-height:none}
  .export-box{grid-template-columns:1fr}.export-actions{justify-content:flex-start}
  .courses-topbar{align-items:flex-start;flex-direction:column}
}
@media(max-width:760px){
  .card-course-basket{position:static}
  .card-course-basket-head{align-items:flex-start;flex-direction:column}
  .course-outline-help{align-items:flex-start;flex-direction:column}
  .course-outline-actions .hierarchy-btn{font-size:0}.course-outline-actions .hierarchy-btn:before{font-size:.76rem}
  .course-outline-actions [data-a="out"]:before{content:'←'}.course-outline-actions [data-a="in"]:before{content:'→'}
}

/* 2026-09 Course builder sheet preview + context controls */
.course-sheet-preview{position:sticky;top:0;z-index:4;margin:0 0 14px;padding:14px;border:1px solid #b8d8d1;border-radius:14px;background:#fff;box-shadow:0 8px 24px rgba(16,64,53,.08)}
.course-sheet-preview-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.course-sheet-preview-head h4{margin:.35rem 0 .15rem}.course-sheet-preview-abstract,.course-sheet-preview-field p{margin:.45rem 0;color:#405551;line-height:1.45}.course-sheet-preview-field{padding:.55rem 0;border-top:1px solid #e5efec}.course-sheet-preview-keywords{font-size:.84rem;color:#536864}.course-sheet-preview-actions{display:flex;justify-content:flex-end;margin-top:.6rem}.course-sheet-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.course-node-row{align-items:flex-start}.course-node-copy{min-width:0}.course-node-sheets{display:grid;gap:7px;min-width:0}.sheet-result.compact{padding:8px 10px}

/* 2026-09-14 — Courses visual-system alignment and legacy wording cleanup */
#courses.panel,#courses .panel{box-shadow:none}
#courses .courses-hub{gap:18px;padding:0;border:0;background:transparent}
#courses .courses-topbar{
  display:block;
  padding:18px 20px;border:1px solid #dbe7e4;border-radius:14px;background:#fff;
}
#courses .courses-heading-copy h2{margin:.12rem 0 .35rem;color:#17252c;font-size:1.65rem}
#courses .courses-heading-copy>p:last-child{margin:0;color:#5d706b;max-width:720px;line-height:1.4}
#courses .courses-section-tabs{
  display:flex;justify-content:center;align-items:center;gap:7px;flex-wrap:wrap;
  width:max-content;max-width:100%;margin:-4px auto 0;padding:4px;
  border:1px solid #d7e5e2;border-radius:999px;background:#f6faf9;
}
#courses .course-section-tab,#courses .course-source-tab{
  appearance:none;border:0;border-radius:7px;background:transparent;color:#31544c;font:inherit;font-weight:750;cursor:pointer;
  transition:background .14s ease,color .14s ease,box-shadow .14s ease;
}
#courses .course-section-tab{min-width:150px;padding:8px 15px;border-radius:999px;font-size:.78rem;text-align:center}
#courses .course-section-tab:hover,#courses .course-source-tab:hover{background:#eaf4f1;color:#104035}
#courses .course-section-tab.is-active,#courses .course-section-tab[aria-selected="true"],#courses .course-source-tab.is-active,#courses .course-source-tab[aria-selected="true"]{
  background:#104035;color:#fff;box-shadow:0 1px 2px rgba(16,64,53,.12)
}
#courses .course-community-section,#courses .course-my-section{
  padding:16px 18px;border:1px solid #dbe7e4;border-radius:14px;background:#fff;
}
#courses [data-courses-panel].hidden{display:none !important}
#courses .course-section-heading{align-items:flex-end;margin:0}
#courses .course-section-heading h3{margin:.1rem 0 .25rem;color:#173f36;font-size:1.05rem}
#courses .course-muted{margin:.2rem 0;color:#61736e;font-size:.82rem;line-height:1.4}
#courses .course-search-field{display:block;min-width:min(340px,100%)}
#courses .course-search-field input{margin:0}
#courses .my-course-strip{padding:10px 0 0}
#courses .saved-course{min-width:250px;border-color:#dbe7e4;border-radius:10px;box-shadow:none;background:#fbfdfc}
#courses .community-course-card{border-color:#dbe7e4;border-radius:12px;box-shadow:none}
#courses .community-course-card:hover,#courses .saved-course:hover{border-color:#b9d4ce;background:#fcfffe}
#courses .course-workspace{
  min-height:620px;max-height:calc(100vh - 155px);border:1px solid #cedfdb;border-radius:14px;box-shadow:none;background:#fff;
}
#courses .course-source-panel{background:#f8fbfa;padding:0;overflow:auto}
#courses .course-outline-panel{padding:0;overflow:auto;background:#fff}
#courses .course-source-sticky{
  top:0;margin:0;padding:14px 14px 10px;background:rgba(248,251,250,.98);border-bottom:1px solid #dde9e6;backdrop-filter:blur(8px)
}
#courses .course-source-sticky>div:first-child h3{margin:.05rem 0 .15rem;color:#173f36;font-size:1.02rem}
#courses .course-source-sticky .portal-eyebrow,#courses .course-editor-sticky .portal-eyebrow,#courses .export-box .portal-eyebrow{margin-bottom:2px}
#courses .course-add-tabs{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin:10px 0 0;padding:4px;border:1px solid #dbe7e4;border-radius:10px;background:#fff
}
#courses .course-source-tab{padding:7px 8px;font-size:.72rem;text-align:center}
#courses .course-source-tab:last-child{grid-column:1/-1}
#courses .course-add-mode{margin:0;padding:14px;border-top:0;max-height:none;overflow:visible}
#courses .course-source-search span,#courses .course-block-form>label{display:block;color:#31544c;font-size:.74rem;font-weight:800}
#courses .course-source-search input,#courses .course-block-form input,#courses .course-block-form textarea,#courses .course-block-form select{margin:4px 0 10px}
#courses .course-block-form{display:grid;gap:2px}
#courses .course-sheet-preview{top:8px;margin:10px 14px;padding:12px;border-radius:10px;box-shadow:0 4px 14px rgba(16,64,53,.07)}
#courses .course-node-row,#courses .sheet-result{border-color:#dbe7e4;border-radius:9px;background:#fff;box-shadow:none}
#courses .course-node-row:hover,#courses .sheet-result:hover{border-color:#b9d4ce;background:#fcfffe}
#courses .course-editor-sticky{
  top:0;margin:0;padding:13px 16px 11px;background:rgba(255,255,255,.98);border-bottom:1px solid #dde9e6;backdrop-filter:blur(8px)
}
#courses .course-editor-sticky>div:first-child{display:grid;gap:1px}
#courses .course-editor-sticky h3{margin:.04rem 0;color:#173f36;font-size:1.05rem}
#courses .course-status{display:inline-flex;width:max-content;border-radius:999px;padding:3px 7px;background:#eef5f3;color:#31544c;font-size:.68rem;font-weight:750}
#courses .course-metadata-details{margin:12px 14px 9px;border-radius:10px;background:#fbfdfc}
#courses .course-metadata-details>summary{padding:10px 11px;font-size:.76rem}
#courses .course-outline-help{margin:8px 14px;padding:8px 10px;border-radius:9px}
#courses .course-outline{padding:0 14px 12px;gap:6px}
#courses .course-outline-item{border-color:#dbe7e4;border-radius:9px;box-shadow:none}
#courses .course-outline-item:hover{border-color:#b9d4ce}
#courses .course-outline-copy strong{font-size:.79rem}
#courses .course-outline-copy .badge{font-size:.64rem;padding:3px 6px}
#courses .export-box{
  margin:0 14px 14px;padding:13px;border:1px solid #dbe7e4;border-radius:10px;background:#f8fbfa;display:grid;grid-template-columns:minmax(190px,1fr) auto;gap:12px 18px;align-items:center
}
#courses .export-box-heading h4{margin:.05rem 0 .2rem;color:#173f36;font-size:.92rem}
#courses .export-options{display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end}
#courses .export-options label{display:flex;align-items:center;gap:5px;color:#405b54;font-size:.74rem;font-weight:700;white-space:nowrap}
#courses .export-options input{width:auto;margin:0}
#courses .export-actions{grid-column:1/-1;justify-content:flex-end;padding-top:8px;border-top:1px solid #e0ebe8}
#courses .course-empty-inline{padding:8px 4px;margin:0}
#courses .api-note{font-family:inherit;background:transparent;border-radius:0;padding:0}
@media(max-width:850px){
  #courses .courses-section-tabs{width:min(100%,430px)}
  #courses .course-section-tab{flex:1;min-width:0}
  #courses .course-workspace{max-height:none}
  #courses .export-box{grid-template-columns:1fr}
  #courses .export-options{justify-content:flex-start}
  #courses .export-actions{grid-column:auto;justify-content:flex-start}
}


/* 2026-09-14 — Course editor navigation/layout refinement */
@media(min-width:851px){
  #courses .course-workspace[data-resizable-split]{
    --workspace-splitter-size:18px;
    --workspace-left-width:36%;
    grid-template-columns:var(--workspace-left-width) var(--workspace-splitter-size) minmax(0,1fr)!important;
    gap:0!important;
    align-items:stretch!important;
  }
  #courses .course-workspace[data-resizable-split]>.course-source-panel,
  #courses .course-workspace[data-resizable-split]>.course-outline-panel{min-width:0!important}
  #courses .course-workspace[data-resizable-split]>.workspace-splitter{min-height:100%}
}
#courses .course-add-tabs{
  display:grid;
  grid-template-columns:repeat(5,minmax(76px,1fr));
  gap:4px;
  overflow-x:auto;
  scrollbar-width:thin;
  padding:4px;
}
#courses .course-source-tab{white-space:nowrap;padding:7px 8px;font-size:.7rem}
#courses .course-source-tab:last-child{grid-column:auto}
#courses .course-sheet-preview{
  position:relative;
  top:auto;
  z-index:2;
  margin:8px 0 8px;
  padding:12px;
  border-color:#9fc9bf;
  background:#fff;
  box-shadow:0 4px 14px rgba(16,64,53,.07);
}
#courses .sheet-result.is-previewed{border-color:#9fc9bf;background:#f6fbf9}
#courses .course-node-sheets>.course-sheet-preview,
#courses #cascadeMatches>.course-sheet-preview,
#courses #courseSearchResults>.course-sheet-preview{width:100%;box-sizing:border-box}
@media(max-width:1100px) and (min-width:851px){
  #courses .course-add-tabs{grid-template-columns:repeat(3,minmax(86px,1fr))}
  #courses .course-source-tab:last-child{grid-column:auto}
}
@media(max-width:850px){
  #courses .course-workspace[data-resizable-split]>.workspace-splitter{display:none!important}
  #courses .course-add-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* 2026-09-14 — Course source cards respond to the actual split-pane width */
#courses .course-source-panel{
  container-type:inline-size;
  container-name:course-source;
}
#courses .course-node-row{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:8px;
  align-items:stretch;
  padding:10px;
}
#courses .course-node-copy{
  display:grid;
  gap:2px;
  padding:0 1px;
  min-width:0;
}
#courses .course-node-copy>strong{
  color:#173f36;
  font-size:.78rem;
  line-height:1.25;
  overflow-wrap:anywhere;
}
#courses .course-node-copy>small{
  color:#667a74;
  font-size:.68rem;
  line-height:1.32;
  overflow-wrap:anywhere;
}
#courses .course-node-sheets{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:7px;
  width:100%;
  min-width:0;
}
#courses .sheet-result,
#courses .sheet-result.compact{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:"summary actions";
  align-items:center;
  gap:8px 10px;
  min-width:0;
  width:100%;
  box-sizing:border-box;
  padding:9px 10px;
}
#courses .course-sheet-summary{
  grid-area:summary;
  display:grid;
  gap:5px;
  min-width:0;
}
#courses .course-sheet-title{
  display:block;
  min-width:0;
  color:#173f36;
  font-size:.78rem;
  line-height:1.25;
  overflow-wrap:anywhere;
}
#courses .course-sheet-meta{
  display:flex;
  align-items:center;
  gap:6px;
  min-width:0;
  flex-wrap:wrap;
}
#courses .course-sheet-reference{
  flex:0 0 auto;
}
#courses .course-sheet-path{
  flex:1 1 180px;
  min-width:0;
  color:#667a74;
  font-size:.67rem;
  line-height:1.3;
  overflow-wrap:anywhere;
}
#courses .course-sheet-actions{
  grid-area:actions;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:5px;
  margin:0;
  flex-wrap:nowrap;
  align-self:center;
}
#courses .course-sheet-actions .smallbtn{
  white-space:nowrap;
}

/* React to the pane itself, not the browser viewport. */
@container course-source (max-width: 520px){
  #courses .sheet-result,
  #courses .sheet-result.compact{
    grid-template-columns:minmax(0,1fr);
    grid-template-areas:"summary" "actions";
    align-items:start;
  }
  #courses .course-sheet-actions{
    justify-content:flex-start;
  }
  #courses .course-sheet-path{
    flex-basis:100%;
  }
}
@container course-source (max-width: 390px){
  #courses .course-node-row{padding:8px}
  #courses .sheet-result,
  #courses .sheet-result.compact{padding:8px}
  #courses .course-sheet-actions{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    width:100%;
  }
  #courses .course-sheet-actions .smallbtn{width:100%;text-align:center}
  #courses .course-add-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* Course publication readiness */
#courses .course-publishability-summary{display:flex;align-items:center;gap:10px;margin:8px 14px;padding:8px 10px;border-radius:9px;font-size:.74rem;border:1px solid #dbe9e6;background:#f4faf8;color:#537068}
#courses .course-publishability-summary strong{color:#104035;white-space:nowrap}
#courses .course-publishability-summary.is-blocked{border-color:#e8b6ad;background:#fff5f2;color:#7c4036}
#courses .course-publishability-summary.is-blocked strong{color:#8f2f22}
#courses .course-outline-item.has-publish-warning{border-color:#e3b4aa;background:#fffaf8}
#courses .course-outline-item.has-publish-warning:before{background:#d46b57}
#courses .publish-warning-badge{background:#fbe5df;color:#8d3829;border:1px solid #efc0b6}
#courses .course-publish-warning-text{margin-top:4px;font-size:.69rem;line-height:1.3;color:#8a4c41}
#courses #builderPublishCourse.has-publish-blockers{box-shadow:0 0 0 2px rgba(190,84,62,.18)}
@media(max-width:900px){#courses .course-publishability-summary{align-items:flex-start;flex-direction:column;gap:2px}}

/* Course duplication actions */
#courses .saved-course{display:flex;align-items:center;justify-content:space-between;gap:12px}
#courses .saved-course-main{min-width:0;flex:1}
#courses .saved-course-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:720px){#courses .saved-course{align-items:stretch;flex-direction:column}#courses .saved-course-actions{justify-content:flex-start}}

/* 2026-09-14 — Course catalogue metadata and collaborative course credits */
#courses .course-card-topline{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
#courses .course-card-stat{font-size:.7rem;color:#6a7a76;font-weight:700}
#courses .community-course-copy h4{margin:.65rem 0 .45rem;color:#173f36;font-size:1rem}
#courses .course-card-summary{margin:.45rem 0 .5rem;padding:.55rem .65rem;border-radius:8px;background:#f8fbfa;border:1px solid #e2ece9}
#courses .course-card-label{display:block;margin-bottom:.18rem;color:#31544c;font-size:.67rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
#courses .course-card-summary p{margin:0;color:#405551;font-size:.79rem;line-height:1.45}
#courses .course-card-keywords{display:flex;gap:5px;flex-wrap:wrap;margin:.45rem 0}
#courses .course-keyword{background:#eef6f4;color:#31544c;border:1px solid #d7e7e3}
#courses .course-card-credits{display:grid;gap:3px;margin-top:.55rem;color:#61736e;font-size:.73rem;line-height:1.35}
#courses .saved-course{min-width:300px;align-items:flex-start}
#courses .saved-course-main{display:grid;gap:6px}
#courses .saved-course-badges{display:flex;gap:5px;flex-wrap:wrap}
#courses .saved-course-summary{margin:0;color:#50645f;font-size:.75rem;line-height:1.38;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#courses .saved-course-authors{color:#61736e;font-size:.7rem;line-height:1.35}
#courses .course-people-details{margin:0 14px 9px;border:1px solid #deebe8;border-radius:10px;background:#fbfdfc;overflow:hidden}
#courses .course-people-details>summary{cursor:pointer;padding:10px 11px;color:#31544c;font-size:.76rem;font-weight:800;list-style:none}
#courses .course-people-details>summary::-webkit-details-marker{display:none}
#courses .course-people-details>summary:before{content:'▾';display:inline-block;margin-right:7px;transition:transform .16s ease}
#courses .course-people-details:not([open])>summary:before{transform:rotate(-90deg)}
#courses .course-people-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:0 11px 8px}
#courses .course-people-group{min-width:0;padding:9px;border:1px solid #e2ece9;border-radius:9px;background:#fff}
#courses .course-people-heading{margin-bottom:7px}
#courses .course-people-heading strong{display:block;color:#173f36;font-size:.76rem}
#courses .course-people-heading span{display:block;margin-top:2px;color:#687a75;font-size:.68rem;line-height:1.35}
#courses .course-person-list{display:grid;gap:5px;margin-bottom:7px}
#courses .course-person-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 7px;border:1px solid #e4eeeb;border-radius:7px;background:#fbfdfc}
#courses .course-person-row>span{display:grid;min-width:0}
#courses .course-person-row strong{font-size:.72rem;color:#294b43;overflow-wrap:anywhere}
#courses .course-person-row small{margin-top:1px;color:#71817d;font-size:.64rem}
#courses .course-person-row .quiet-link{flex:0 0 auto}
#courses .course-person-empty{display:block;padding:6px 2px;color:#71817d;font-size:.68rem;font-style:italic}
#courses .course-person-add{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;margin-top:6px;align-items:center}
#courses .course-person-add select,#courses .course-person-add input{margin:0;min-width:0;padding:7px 8px;border-radius:7px;font-size:.72rem}
#courses .course-person-add .smallbtn{white-space:nowrap}
#courses .course-people-hint{margin:0;padding:0 11px 10px!important;font-size:.68rem!important}
@media(max-width:1050px){#courses .course-people-grid{grid-template-columns:1fr}}
@media(max-width:620px){#courses .course-person-add{grid-template-columns:1fr}#courses .course-person-add .smallbtn{width:100%}}

/* 2026-09-15 — Community course catalogue curation and social interactions */
#courses .course-community-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
#courses .course-community-tools .course-search-field{margin:0}
#courses .course-featured-section{display:grid;gap:10px;padding:12px;border:1px solid #cfe2dd;border-radius:12px;background:#f8fcfb}
#courses .course-subsection-heading{display:flex;align-items:end;justify-content:space-between;gap:12px}
#courses .course-subsection-heading h4{margin:.1rem 0;color:#173f36}
#courses .course-category-tabs{display:flex;gap:6px;flex-wrap:wrap;padding:2px 0}
#courses .course-category-tab{appearance:none;border:1px solid #cddfdb;border-radius:999px;background:#fff;color:#31544c;padding:7px 11px;font:inherit;font-size:.72rem;font-weight:800;cursor:pointer}
#courses .course-category-tab:hover,#courses .course-category-tab.is-active{border-color:#176b56;background:#eaf5f2;color:#104035}
#courses .course-category-tab span{margin-left:4px;color:#6d7e79;font-size:.64rem}
#courses .course-featured-badge{display:inline-flex;margin:.1rem 0 .25rem;padding:3px 7px;border-radius:999px;background:#eef7e9;color:#42602d;font-size:.65rem;font-weight:850;text-transform:uppercase;letter-spacing:.04em}
#courses .course-card-categories{display:flex;gap:5px;flex-wrap:wrap;margin:.3rem 0}
#courses .course-social-bar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:.7rem;padding-top:.65rem;border-top:1px solid #e4eeeb}
#courses .course-social-button,#courses .course-social-stat{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;color:#577069;font:inherit;font-size:.7rem;font-weight:800;padding:3px 0}
#courses .course-social-button{cursor:pointer}
#courses .course-social-button:hover,#courses .course-social-button.is-active{color:#0f6c55}
#courses .course-comments-panel{margin-top:.7rem;padding:.7rem;border:1px solid #dce9e6;border-radius:9px;background:#fbfdfc}
#courses .course-comments-list{display:grid;gap:7px}
#courses .course-comment{padding:7px 8px;border:1px solid #e2ece9;border-radius:8px;background:#fff}
#courses .course-comment.is-hidden{opacity:.65;background:#fff7f5}
#courses .course-comment>div{display:flex;align-items:center;gap:6px;color:#31544c;font-size:.69rem}
#courses .course-comment>div small{color:#778783;font-size:.6rem}
#courses .course-comment p{margin:.3rem 0;color:#405551;font-size:.72rem;line-height:1.4;white-space:pre-wrap}
#courses .course-comment-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:end;margin-top:8px}
#courses .course-comment-form textarea{margin:0;min-height:54px;font-size:.72rem}
#courses .course-login-hint{margin:.5rem 0 0;color:#687a75;font-size:.69rem}
#courses .course-login-hint a{color:#176b56;font-weight:800}
@media(max-width:720px){#courses .course-community-tools{align-items:stretch;flex-direction:column}#courses .course-comment-form{grid-template-columns:1fr}}

.course-curation-page{width:min(1540px,calc(100% - 40px));margin:0 auto;padding:2rem 0 4rem}
.course-curation-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.1rem}
.course-curation-heading h1{margin:.18rem 0 .45rem;color:#104035;font-size:clamp(2rem,4vw,3.15rem)}
.course-curation-heading p:last-child{max-width:960px;color:#586a65;line-height:1.5}
.course-curation-layout{display:grid;grid-template-columns:minmax(300px,390px) minmax(0,1fr);gap:12px;align-items:start}
.course-curation-nav-card,.course-curation-editor-card,.course-curation-stats-card{border:1px solid #d8e8e5;border-radius:16px;background:#fff;box-shadow:0 10px 28px rgba(16,64,53,.06);overflow:hidden}
.course-curation-nav-card{position:sticky;top:82px}
.course-curation-card-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:12px 14px;border-bottom:1px solid #e3ecea}
.course-curation-card-head h2{margin:.1rem 0;color:#104035;font-size:1.05rem}.course-curation-card-head p{margin:.25rem 0 0;color:#61736e;font-size:.72rem;line-height:1.4}
.course-curation-section,.course-curation-category-main{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;border:0;background:transparent;color:#294b43;text-align:left;font:inherit;cursor:pointer}
.course-curation-section{padding:11px 13px;border-bottom:1px solid #e7efed}.course-curation-section:hover,.course-curation-section.is-selected{background:#edf7f5}
.course-curation-section>span:first-child,.course-curation-category-main>span{display:grid;gap:2px}.course-curation-section small,.course-curation-category-main small{color:#6d7e79;font-size:.65rem}
.course-curation-category-list{display:grid;padding:7px}
.course-curation-category-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;border:1px solid transparent;border-radius:9px}
.course-curation-category-row:hover,.course-curation-category-row.is-selected{border-color:#c9dfda;background:#f3f9f7}
.course-curation-category-main{padding:8px 9px}
.course-curation-order-actions{display:flex;padding-right:5px}.course-curation-order-actions .quiet-link{min-width:24px}
.course-curation-help{margin:0;padding:10px 13px;border-top:1px solid #e7efed;color:#71817d;font-size:.67rem;line-height:1.45}
.course-curation-form,.course-curation-membership{border-bottom:1px solid #e3ecea}.course-curation-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:12px 14px}.course-curation-fields label{display:grid;gap:4px;color:#31544c;font-size:.72rem;font-weight:800}.course-curation-fields .wide{grid-column:1/-1}.course-curation-fields input,.course-curation-fields textarea{margin:0}.course-curation-inline-check{display:flex!important;align-items:center;gap:7px}.course-curation-inline-check input{width:auto!important}
.course-curation-actions{display:flex;gap:7px;padding:0 14px 12px}.course-curation-add-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:12px 14px}.course-curation-add-row select{margin:0}
.course-curation-course-list{display:grid;gap:6px;padding:0 14px 14px}.course-curation-course-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid #e0ebe8;border-radius:9px;background:#fbfdfc}.course-curation-course-copy{display:grid;min-width:0;gap:2px}.course-curation-course-copy strong{color:#294b43;font-size:.76rem}.course-curation-course-copy small{color:#71817d;font-size:.65rem}.course-curation-course-actions{display:flex;align-items:center;gap:4px;flex:0 0 auto}.danger-link{color:#983c4a!important}
.course-curation-message{min-height:2.4rem;padding:.7rem 14px;color:#176b56;font-size:.78rem;font-weight:750}.course-curation-message.is-error{color:#9b3d4c}
.course-curation-stats-card{margin-top:12px}.course-curation-stats-scroll{overflow:auto}.course-curation-stats-table{width:100%;border-collapse:collapse;min-width:960px}.course-curation-stats-table th{padding:9px 11px;background:#edf7f5;color:#104035;text-align:left;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}.course-curation-stats-table td{padding:9px 11px;border-top:1px solid #e6efed;color:#50645f;font-size:.72rem;vertical-align:top}.course-curation-stats-table td:first-child{display:grid;gap:2px;color:#294b43}.course-curation-stats-table td:first-child small{color:#71817d;font-size:.63rem}
@media(max-width:900px){.course-curation-page{width:calc(100% - 20px);padding-top:1rem}.course-curation-heading{align-items:flex-start;flex-direction:column}.course-curation-layout{grid-template-columns:1fr}.course-curation-nav-card{position:static}.course-curation-fields{grid-template-columns:1fr}.course-curation-fields .wide{grid-column:auto}}
@media(max-width:620px){.course-curation-add-row{grid-template-columns:1fr}.course-curation-course-row{align-items:flex-start;flex-direction:column}.course-curation-course-actions{align-self:stretch;justify-content:flex-end}}
.course-comment-moderation-list{display:grid;gap:7px;padding:12px 14px}.course-comment-moderation-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 11px;border:1px solid #e0ebe8;border-radius:9px;background:#fbfdfc}.course-comment-moderation-row.is-hidden{border-color:#efd8d1;background:#fff8f6}.course-comment-moderation-copy{display:grid;min-width:0;gap:3px}.course-comment-moderation-copy>div{display:flex;align-items:center;gap:6px}.course-comment-moderation-copy strong{color:#294b43;font-size:.76rem}.course-comment-moderation-copy small{color:#71817d;font-size:.64rem}.course-comment-moderation-copy p{margin:.25rem 0 0;color:#50645f;font-size:.72rem;line-height:1.45;white-space:pre-wrap}.course-comment-moderation-actions{display:flex;align-items:center;gap:7px;flex:0 0 auto}@media(max-width:680px){.course-comment-moderation-row{flex-direction:column}.course-comment-moderation-actions{align-self:flex-end}}

/* Portal account approval and role administration */
.portal-user-admin-page{width:min(1540px,calc(100% - 40px));margin:0 auto;padding:2rem 0 4rem}
.portal-user-admin-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.1rem}
.portal-user-admin-heading h1{margin:.18rem 0 .45rem;color:#104035;font-size:clamp(2rem,4vw,3.15rem)}
.portal-user-admin-heading p:last-child{max-width:960px;color:#586a65;line-height:1.5}
.portal-user-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:12px}
.portal-user-summary-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px;border:1px solid #d8e8e5;border-radius:13px;background:#fff;color:#49625b;text-align:left;font:inherit;cursor:pointer;box-shadow:0 8px 22px rgba(16,64,53,.04)}
.portal-user-summary-card span{font-size:.72rem;font-weight:800}.portal-user-summary-card strong{color:#104035;font-size:1.25rem}
.portal-user-summary-card:hover,.portal-user-summary-card.is-active{border-color:#9fc9be;background:#edf7f5}
.portal-user-admin-card{border:1px solid #d8e8e5;border-radius:16px;background:#fff;box-shadow:0 10px 28px rgba(16,64,53,.06);overflow:hidden}
.portal-user-admin-toolbar{display:flex;align-items:end;justify-content:space-between;gap:12px;padding:13px 14px;border-bottom:1px solid #e3ecea}
.portal-user-admin-toolbar label{display:grid;gap:4px;min-width:min(520px,70vw);color:#31544c;font-size:.72rem;font-weight:800}.portal-user-admin-toolbar input{margin:0}
.portal-user-table-scroll{overflow:auto}.portal-user-table{width:100%;border-collapse:collapse;min-width:1050px}
.portal-user-table th{padding:9px 11px;background:#edf7f5;color:#104035;text-align:left;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}
.portal-user-table td{padding:10px 11px;border-top:1px solid #e6efed;color:#50645f;font-size:.72rem;vertical-align:middle}
.portal-user-person{display:grid;gap:2px}.portal-user-person strong{color:#294b43;font-size:.76rem}.portal-user-person small,.portal-user-admin-note{color:#71817d;font-size:.64rem;line-height:1.4}
.portal-user-status{display:inline-flex;padding:3px 7px;border-radius:999px;font-size:.62rem;font-weight:850}.portal-user-status.status-pending{background:#fff4d9;color:#7b5b11}.portal-user-status.status-approved{background:#e4f5ed;color:#176b56}.portal-user-status.status-rejected{background:#fbe9ec;color:#983c4a}
.portal-user-role-select{min-width:150px;margin:0}.portal-user-row-actions{display:flex;align-items:center;gap:6px;white-space:nowrap}
.portal-user-admin-message{min-height:2.6rem;padding:.8rem 14px;color:#176b56;font-size:.76rem;font-weight:750;border-top:1px solid #eef3f2}.portal-user-admin-message.is-error{color:#9b3d4c}
@media(max-width:850px){.portal-user-admin-page{width:calc(100% - 20px);padding-top:1rem}.portal-user-summary{grid-template-columns:1fr 1fr}.portal-user-admin-toolbar{align-items:stretch;flex-direction:column}.portal-user-admin-toolbar label{min-width:0;width:100%}}
@media(max-width:520px){.portal-user-summary{grid-template-columns:1fr}}

/* 2026-09-15 — Three-column Course Builder aligned with the Contribute workspace */
#courses .course-builder-layout{
  display:grid;
  grid-template-columns:minmax(220px,280px) minmax(320px,430px) minmax(520px,1fr);
  gap:16px;
  align-items:start;
  min-height:680px;
}
#courses .course-library-panel,
#courses .course-content-browser,
#courses .course-builder-editor{
  min-width:0;
  border:1px solid #d7e5e2;
  border-radius:14px;
  background:#fff;
  box-shadow:0 6px 18px rgba(16,64,53,.04);
}
#courses .course-library-panel,
#courses .course-content-browser{
  position:sticky;
  top:82px;
  max-height:calc(100vh - 105px);
  overflow:auto;
}
#courses .course-library-panel{padding:12px;background:#f8fbfa}
#courses .course-library-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:10px}
#courses .course-library-head h3{margin:.05rem 0;color:#173f36;font-size:1rem}
#courses .course-library-head .smallbtn{flex:0 0 auto}
#courses .course-library-section,
#courses .course-source-section{
  margin:8px 0;border:1px solid #dce8e5;border-radius:11px;background:#fff;overflow:hidden
}
#courses .course-library-section>summary,
#courses .course-source-section>summary{
  cursor:pointer;list-style:none;padding:10px 11px;color:#254c43;font-size:.76rem;font-weight:800;background:#f5faf8
}
#courses .course-library-section>summary::-webkit-details-marker,
#courses .course-source-section>summary::-webkit-details-marker{display:none}
#courses .course-library-section>summary:before,
#courses .course-source-section>summary:before{content:'▾';display:inline-block;margin-right:7px;transition:transform .15s ease}
#courses .course-library-section:not([open])>summary:before,
#courses .course-source-section:not([open])>summary:before{transform:rotate(-90deg)}
#courses .course-library-list{display:grid;gap:7px;padding:8px}
#courses .course-library-card{display:grid;gap:5px;padding:8px;border:1px solid #dfeae7;border-radius:9px;background:#fbfdfc}
#courses .course-library-card.is-active{border-color:#76b9aa;background:#edf8f5;box-shadow:0 0 0 2px rgba(35,140,117,.09)}
#courses .course-library-card.is-community{background:#fff}
#courses .course-library-open{appearance:none;border:0;background:transparent;padding:0;text-align:left;cursor:pointer;display:grid;gap:5px;color:inherit}
#courses .course-library-title{font-size:.76rem;font-weight:800;color:#173f36;line-height:1.25}
#courses .course-library-meta{display:flex;gap:4px;flex-wrap:wrap;align-items:center}
#courses .course-library-card small{color:#71817d;font-size:.63rem}
#courses .course-library-card>.quiet-link{justify-self:start;font-size:.66rem}
#courses .course-content-browser{padding:0;background:#f8fbfa;container-type:inline-size;container-name:course-source}
#courses .course-source-section{margin:9px 12px;background:#fff}
#courses .course-source-section-body{padding:9px}
#courses .course-browser-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;color:#536b65;font-size:.68rem;font-weight:750}
#courses .course-content-browser .contributor-tree{gap:8px}
#courses .course-content-browser .contributor-tree-category{margin:0}
#courses .course-content-browser .contributor-tree-sheet{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;box-sizing:border-box}
#courses .course-content-browser .course-sheet-actions{align-self:center}
#courses .course-builder-editor{overflow:visible;background:#fff}
#courses .course-builder-editor .course-editor-sticky{position:sticky;top:72px;z-index:8;border-radius:14px 14px 0 0}
#courses .course-language-summary{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:4px;color:#62756f;font-size:.67rem}
#courses .course-language-badge{background:#eef6f4;color:#31544c;border:1px solid #d2e5e0}
#courses .course-card-language-row{display:flex;gap:5px;flex-wrap:wrap;margin:.3rem 0 .45rem}
#courses .course-tree-sheet .course-sheet-path{display:none}
#courses .course-tree-sheet .course-sheet-actions .smallbtn{padding:5px 7px;font-size:.65rem}

@media(max-width:1450px){
  #courses .course-builder-layout{grid-template-columns:minmax(210px,250px) minmax(300px,360px) minmax(460px,1fr);gap:12px}
}
@media(max-width:1180px){
  #courses .course-builder-layout{grid-template-columns:minmax(220px,280px) minmax(0,1fr)}
  #courses .course-builder-editor{grid-column:1/-1}
  #courses .course-library-panel,#courses .course-content-browser{position:static;max-height:none}
  #courses .course-builder-editor .course-editor-sticky{top:68px}
}
@media(max-width:780px){
  #courses .course-builder-layout{grid-template-columns:1fr}
  #courses .course-builder-editor{grid-column:auto}
  #courses .course-library-panel,#courses .course-content-browser,#courses .course-builder-editor{border-radius:11px}
}
#courses .course-browser-search-fields{display:grid;gap:8px}
#courses .course-browser-search-fields label{display:grid;gap:4px;color:#31544c;font-size:.69rem;font-weight:800}
#courses .course-browser-search-fields input,
#courses .course-browser-search-fields select{margin:0;min-width:0;padding:7px 8px;border-radius:8px;font-size:.72rem}
#courses .course-item-language-control{display:inline-flex;vertical-align:middle;margin:0}
#courses .course-item-language-control select{width:auto;min-width:54px;margin:0;padding:2px 20px 2px 6px;border:1px solid #d2e5e0;border-radius:999px;background:#eef6f4;color:#31544c;font-size:.63rem;font-weight:850;line-height:1.2}

/* 2026-09-15 — Course catalogue category cards, shared keywords and course illustrations */
#courses .course-category-panel-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(310px,1fr));
  gap:14px;
  align-items:start;
}
#courses .course-category-panel{
  min-width:0;
  border:1px solid #d6e6e2;
  border-radius:14px;
  background:#fbfdfc;
  overflow:hidden;
  box-shadow:0 4px 14px rgba(16,64,53,.035);
}
#courses .course-category-panel-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  padding:13px 14px 11px;
  border-bottom:1px solid #e1ebe8;
  background:#f4faf8;
}
#courses .course-category-panel-head h4{margin:.08rem 0;color:#173f36;font-size:1rem}
#courses .course-category-panel-head p:last-child{margin:.22rem 0 0;color:#61736e;font-size:.72rem;line-height:1.4}
#courses .course-category-panel-courses{display:grid;gap:8px;padding:10px}
#courses .course-category-mini-course{
  display:grid;
  grid-template-columns:76px minmax(0,1fr);
  gap:10px;
  align-items:start;
  min-width:0;
  padding:9px;
  border:1px solid #dfebe8;
  border-radius:11px;
  background:#fff;
}
#courses .course-category-mini-course:hover{border-color:#b8d4cd;background:#feffff}
#courses .course-category-mini-copy{display:grid;gap:4px;min-width:0}
#courses .course-category-mini-head{display:flex;align-items:flex-start;justify-content:space-between;gap:6px}
#courses .course-category-mini-head strong{color:#173f36;font-size:.78rem;line-height:1.25}
#courses .course-category-mini-copy>small{color:#73837f;font-size:.63rem}
#courses .course-category-mini-copy>p{margin:.15rem 0;color:#536762;font-size:.7rem;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#courses .course-category-mini-actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin-top:2px}
#courses .course-category-mini-actions a,#courses .course-category-mini-actions button{font-size:.64rem;font-weight:800}
#courses .course-search-results-section,#courses .course-uncategorised-section{display:grid;gap:10px}

#courses .community-course-card-layout{display:grid;grid-template-columns:118px minmax(0,1fr);gap:14px;align-items:start}
#courses .course-cover{position:relative;display:grid;place-items:center;overflow:hidden;aspect-ratio:1/1;border:1px solid #d7e5e1;background:#eef6f4;color:#4f6f67;font-weight:900}
#courses .course-cover img{width:100%;height:100%;display:block;object-fit:cover}
#courses .course-cover-placeholder{background:linear-gradient(135deg,#edf6f3,#f7faf9)}
#courses .course-cover-card{width:118px;border-radius:12px;font-size:2rem}
#courses .course-cover-mini{width:76px;border-radius:9px;font-size:1.35rem}
#courses .course-cover-library{width:44px;border-radius:8px;font-size:.9rem;flex:0 0 44px}
#courses .course-library-open{grid-template-columns:44px minmax(0,1fr);align-items:center}
#courses .course-library-card-copy{display:grid;gap:5px;min-width:0}
#courses .course-cover-preview{width:150px;max-width:100%;aspect-ratio:1/1;border:1px solid #d5e4e0;border-radius:12px;display:grid;place-items:center;overflow:hidden;background:#f3f8f7;color:#60756f;font-weight:850}
#courses .course-cover-preview img{width:100%;height:100%;object-fit:cover;display:block}
#courses .course-cover-editor{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px;align-items:start;padding:12px;border:1px solid #e0ebe8;border-radius:12px;background:#fbfdfc}
#courses .course-cover-editor-fields{display:grid;gap:6px;min-width:0}
#courses .course-cover-editor-fields input[type=file]{margin-top:4px}
#courses .course-cover-editor-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* Keep the three-pane content browser visually compact, like Contribute. */
#courses .course-content-browser .course-source-sticky{position:relative;top:auto;padding:11px 12px 8px}
#courses .course-content-browser .course-source-sticky p:last-child{margin:.18rem 0 0;line-height:1.35}
#courses .course-content-browser .course-source-section{margin:6px 10px}
#courses .course-content-browser .contributor-search-panel{margin:6px 10px}
#courses .course-content-browser .course-source-section>summary{padding:8px 10px}
#courses .course-content-browser .course-source-section-body{padding:8px}
#courses .course-content-browser .contributor-search-fields{gap:7px;padding:0}

.course-membership-editor{display:grid;gap:12px;padding:14px}
.course-membership-editor>label{display:grid;gap:5px;color:#31544c;font-size:.72rem;font-weight:800}
.course-membership-editor select{margin:0}
.course-membership-choices{margin:0;padding:11px;border:1px solid #dfeae7;border-radius:11px;background:#fbfdfc}
.course-membership-choices legend{padding:0 5px;color:#104035;font-size:.75rem;font-weight:850}
.course-membership-choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:7px}
.course-membership-choice{display:flex;align-items:flex-start;gap:8px;padding:8px 9px;border:1px solid #e0ebe8;border-radius:9px;background:#fff;cursor:pointer}
.course-membership-choice:has(input:checked){border-color:#8bc2b5;background:#eef8f5}
.course-membership-choice input{width:auto;margin-top:2px}
.course-membership-choice span{display:grid;gap:2px}
.course-membership-choice strong{color:#294b43;font-size:.74rem}
.course-membership-choice small{color:#71817d;font-size:.64rem}

@media(max-width:720px){
  #courses .community-course-card-layout{grid-template-columns:86px minmax(0,1fr)}
  #courses .course-cover-card{width:86px}
  #courses .course-cover-editor{grid-template-columns:1fr}
  #courses .course-cover-preview{width:120px}
}


/* 2026-09-15 — Public course catalogue search filters the catalogue in place. */
#courses .course-catalogue-searchbar{
  display:flex;
  align-items:end;
  gap:12px;
  padding:11px 12px;
  border:1px solid #d9e7e4;
  border-radius:12px;
  background:#f8fbfa;
}
#courses .course-catalogue-searchbar .course-search-field{
  display:grid;
  gap:5px;
  width:min(620px,100%);
  min-width:0;
  margin:0;
  color:#31544c;
  font-size:.7rem;
  font-weight:850;
}
#courses .course-catalogue-searchbar .course-search-field input{
  width:100%;
  max-width:none;
  margin:0;
  padding:9px 11px;
  border-radius:9px;
  background:#fff;
}
#courses .course-search-status{
  min-height:1.1rem;
  padding-bottom:8px;
  color:#6b7c77;
  font-size:.68rem;
  font-weight:750;
}
#courses .course-featured-section{
  padding:13px 14px;
}
#courses .course-featured-section .course-subsection-heading{
  align-items:start;
}
#courses .course-featured-section .course-subsection-heading h4{
  margin:0;
}
#courses .course-featured-section .course-subsection-heading p{
  margin:.2rem 0 0;
}
#courses .course-uncategorised-section{
  display:grid;
  gap:10px;
}
#courses .course-category-panel-grid.hidden,
#courses .course-uncategorised-section.hidden,
#courses .course-featured-section.hidden,
#courses #communityCourseEmptyState.hidden{display:none!important}
@media(max-width:720px){
  #courses .course-catalogue-searchbar{align-items:stretch;flex-direction:column}
  #courses .course-search-status{padding:0}
}

/* Course engagement belongs in Analytics, not catalogue curation. */
.analytics-course-kpis{margin-top:.75rem;margin-bottom:.9rem}
.analytics-course-reference{display:block;margin-top:.18rem;color:#60746f;font-weight:500}

/* Analytics module tabs and cross-granularity dashboards */
.analytics-tabs,
.course-curation-tabs{
  display:flex;
  align-items:center;
  gap:6px;
  margin-top:1rem;
  padding:5px;
  width:max-content;
  max-width:100%;
  overflow-x:auto;
  border:1px solid #d6e6e2;
  border-radius:12px;
  background:#f4faf8;
}
.analytics-tab,
.course-curation-tab{
  appearance:none;
  border:0;
  border-radius:8px;
  background:transparent;
  color:#365850;
  padding:.58rem .9rem;
  font:inherit;
  font-size:.78rem;
  font-weight:800;
  white-space:nowrap;
  cursor:pointer;
}
.analytics-tab:hover,
.course-curation-tab:hover{background:#e7f3f0;color:#075f63}
.analytics-tab.is-active,
.course-curation-tab.is-active{background:#075f63;color:#fff;box-shadow:0 1px 3px rgba(16,64,53,.18)}
.analytics-panel[hidden],
[data-curation-panel][hidden]{display:none!important}
.analytics-card-flush-top{margin-top:0}
.analytics-filter-note{margin:.7rem 0 0;color:#6a7d78;font-size:.72rem;line-height:1.45}
.analytics-chart-legend i.likes,.analytics-chart-tooltip i.likes{background:var(--fbi-teal)}
.analytics-chart-legend i.comments,.analytics-chart-tooltip i.comments{background:var(--fbi-purple)}
.analytics-chart-legend i.downloads,.analytics-chart-tooltip i.downloads{background:var(--fbi-green)}
.analytics-day-bars .likes{background:var(--fbi-teal)}
.analytics-day-bars .downloads{background:var(--fbi-green)}
.analytics-course-metric-switch{flex-wrap:wrap}
.analytics-format-breakdown{white-space:nowrap;color:#5e716c;font-size:.7rem}
.analytics-leaderboard-heading{align-items:center}
.analytics-leaderboard{display:grid;gap:7px;margin:1rem 0 1.1rem;padding:12px;border:1px solid #dfeae7;border-radius:13px;background:#f9fcfb}
.analytics-leaderboard-row{display:grid;grid-template-columns:34px minmax(0,1fr) 64px;align-items:center;gap:10px}
.analytics-rank{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#e8f4f1;color:#075f63;font-weight:900;font-size:.74rem}
.analytics-leaderboard-row>div{display:grid;gap:5px;min-width:0}
.analytics-leaderboard-row strong{color:#294b43;font-size:.77rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.analytics-leaderboard-row>div>span{height:7px;border-radius:999px;background:#e3ecea;overflow:hidden}
.analytics-leaderboard-row>div>span>i{display:block;height:100%;border-radius:999px;background:#238c75}
.analytics-leaderboard-row>b{text-align:right;color:#104035;font-size:.83rem}
@media(max-width:900px){
  .analytics-tabs,.course-curation-tabs{width:100%}
  .analytics-tab,.course-curation-tab{flex:1;text-align:center}
  .analytics-leaderboard-heading{align-items:flex-start;flex-direction:column}
}
@media(max-width:680px){
  .analytics-tab,.course-curation-tab{flex:0 0 auto}
}

/* Course catalogue curation: one task per tab, same visual grammar as portal workspaces. */
.course-curation-page{width:min(1380px,calc(100% - 40px));padding-top:1.45rem}
.course-curation-heading{align-items:flex-start;margin-bottom:0}
.course-curation-heading h1{font-size:clamp(1.75rem,3vw,2.45rem);line-height:1.08}
.course-curation-heading p:last-child{max-width:760px}
.course-curation-tabs{margin:1rem 0 1.1rem}
.course-curation-layout{grid-template-columns:minmax(270px,340px) minmax(0,1fr);gap:14px}
.course-curation-nav-card,.course-curation-editor-card{border-radius:13px;box-shadow:none}
.course-curation-nav-card{top:88px}
.course-curation-tab-card{max-width:none}
.course-curation-global-message{margin-top:.75rem;padding-left:2px}
.course-membership-editor{padding:16px}
.course-comment-moderation-list{padding:14px 16px 16px}

/* 2026-09-15 — Resizable three-pane Course Builder and centred course illustration placeholder */
#courses .course-cover-preview.course-cover-placeholder{
  box-sizing:border-box;
  padding:18px;
  text-align:center;
  line-height:1.22;
}
#courses .course-cover-preview.course-cover-placeholder span{
  display:block;
  max-width:100%;
  overflow-wrap:anywhere;
}
#courses .course-builder-splitter{
  position:relative;
  min-width:12px;
  width:12px;
  align-self:stretch;
  cursor:col-resize;
  touch-action:none;
  background:transparent;
  z-index:7;
}
#courses .course-builder-splitter::before{
  content:'';
  position:absolute;
  top:10px;
  bottom:10px;
  left:50%;
  width:2px;
  transform:translateX(-50%);
  border-radius:999px;
  background:#d1e1dd;
  transition:background .12s ease,box-shadow .12s ease;
}
#courses .course-builder-splitter:hover::before,
#courses .course-builder-splitter:focus-visible::before,
#courses .course-builder-layout.is-split-resizing .course-builder-splitter::before{
  background:#68ad9e;
  box-shadow:0 0 0 3px rgba(35,140,117,.08);
}
#courses .course-builder-splitter:focus-visible{outline:none}
@media(min-width:1181px){
  #courses .course-builder-layout[data-resizable-triple]{
    --course-library-width:250px;
    --course-content-width:370px;
    grid-template-columns:minmax(210px,var(--course-library-width)) 12px minmax(300px,var(--course-content-width)) 12px minmax(460px,1fr);
    gap:0;
    align-items:start;
  }
  #courses .course-builder-layout[data-resizable-triple]>.course-library-panel{margin-right:0}
  #courses .course-builder-layout[data-resizable-triple]>.course-content-browser{margin-inline:0}
  #courses .course-builder-layout[data-resizable-triple]>.course-builder-editor{margin-left:0}
}
@media(max-width:1180px){
  #courses .course-builder-splitter{display:none!important}
}

.analytics-export-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
@media(max-width:760px){.analytics-export-actions{justify-content:flex-start;width:100%}}

/* 2026-09-16 — unavailable course exports */
.community-course-actions .is-disabled,
.course-category-mini-actions .course-export-disabled {
  opacity: .45;
  cursor: not-allowed;
  pointer-events: none;
  text-decoration: none;
}

/* Institution curation */
.institution-curation-page{max-width:1240px;margin:0 auto;padding:28px 24px 52px}.institution-curation-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:18px}.institution-curation-heading h1{margin:.15rem 0 .45rem;color:#104035;font-family:"Century Gothic",system-ui,sans-serif}.institution-curation-heading p:last-child{max-width:860px;color:#5d6a73;line-height:1.5}.institution-curation-tabs{display:flex;gap:8px;flex-wrap:wrap;padding:6px;margin:0 0 18px;border:1px solid #dbe8e5;border-radius:16px;background:#f7fbfa}.institution-curation-tab{border:0;border-radius:11px;background:transparent;color:#425159;padding:10px 15px;font:inherit;font-weight:800;cursor:pointer}.institution-curation-tab:hover{background:#edf6f5}.institution-curation-tab.is-active{background:#104035;color:white}.institution-curation-tab.is-active .mini-count{background:rgba(255,255,255,.18);color:white}.institution-curation-layout{display:grid;grid-template-columns:minmax(290px,.78fr) minmax(480px,1.45fr);gap:18px;align-items:start}.institution-curation-list-card,.institution-curation-editor-card{background:#fff;border:1px solid #dbe8e5;border-radius:18px;box-shadow:0 10px 26px rgba(16,64,53,.06);padding:18px}.institution-curation-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.institution-curation-card-head h2{margin:.1rem 0 .25rem;color:#104035;font-family:"Century Gothic",system-ui,sans-serif;font-size:1.2rem}.institution-curation-card-head p{margin:.2rem 0;color:#65736f;line-height:1.4}.institution-curation-search{font-size:.82rem;font-weight:800;color:#425159}.institution-curation-list{display:flex;flex-direction:column;gap:7px;max-height:66vh;overflow:auto;padding-right:3px}.institution-list-row{width:100%;border:1px solid #dce9e6;border-radius:13px;background:white;padding:11px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;color:#24332f;cursor:pointer}.institution-list-row:hover{background:#f4fbf9;border-color:#9dd9ca}.institution-list-row.is-selected{background:#e8f8f4;border-color:#238c75;box-shadow:inset 3px 0 #238c75}.institution-list-row>span:first-child{display:grid;gap:3px;min-width:0}.institution-list-row strong{overflow:hidden;text-overflow:ellipsis}.institution-list-row small{color:#6d7a77}.institution-list-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:0 0 auto}.institution-curation-fields{display:grid;grid-template-columns:1fr 1fr;gap:4px 14px}.institution-curation-fields .wide{grid-column:1/-1}.institution-curation-inline-check{grid-column:1/-1;display:flex;align-items:center;gap:8px;font-weight:700}.institution-curation-inline-check input{width:auto;margin:0}.institution-curation-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.institution-usage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.institution-usage-grid>div{border:1px solid #e1ece9;background:#f8fbfa;border-radius:12px;padding:10px;display:grid;gap:3px}.institution-usage-grid span{font-size:.75rem;color:#697773}.institution-usage-grid strong{font-size:1.05rem;color:#104035}.institution-curation-tab-card{min-height:360px}.institution-duplicate-list{display:grid;gap:12px}.institution-duplicate-card{border:1px solid #dce9e6;border-radius:15px;padding:14px;background:#fbfefd}.institution-duplicate-reasons{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px}.institution-duplicate-pair{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}.institution-duplicate-identity{display:grid;gap:4px;padding:12px;border-radius:12px;background:white;border:1px solid #e1ece9}.institution-duplicate-identity small{color:#697773}.institution-duplicate-vs{font-size:.75rem;font-weight:900;color:#7b8985;text-transform:uppercase}.institution-duplicate-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.institution-alias-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}.institution-alias-add-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start}.institution-alias-list{display:grid;gap:7px;margin-top:10px}.institution-alias-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid #e0ebe8;border-radius:12px;background:#f9fcfb}.institution-alias-row>span{display:grid;gap:2px}.institution-alias-row small{color:#7a8784}.institution-merge-form{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center}.institution-merge-arrow{font-size:1.5rem;color:#238c75;font-weight:900;padding-top:14px}.institution-curation-message{margin-top:14px;min-height:24px;padding:0 2px;font-weight:700}.institution-curation-message.is-success{color:#17634f}.institution-curation-message.is-error{color:#8c2f39}@media(max-width:900px){.institution-curation-layout,.institution-alias-layout{grid-template-columns:1fr}.institution-curation-list{max-height:38vh}.institution-usage-grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){.institution-curation-page{padding:18px 14px 40px}.institution-curation-fields,.institution-duplicate-pair,.institution-merge-form{grid-template-columns:1fr}.institution-duplicate-vs,.institution-merge-arrow{text-align:center;padding:0}.institution-usage-grid{grid-template-columns:1fr}}
.analytics-heading-actions{display:flex;align-items:flex-start;justify-content:flex-end;gap:10px;flex-wrap:wrap}

/* Course export availability must be visually explicit in the builder too. */
.export-actions button:disabled,
.export-actions button.is-disabled {
  opacity: .42;
  cursor: not-allowed;
  filter: saturate(.35);
  box-shadow: none;
}

/* 2026-09-16 — Community course read-only preview */
#courses .course-preview-title{
  display:inline;
  max-width:100%;
  margin:0;
  padding:0;
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  font-weight:inherit;
  line-height:inherit;
  text-align:left;
  cursor:pointer;
}
#courses .course-preview-title:hover{color:#16745f;text-decoration:underline;text-underline-offset:2px}
#courses .course-cover[data-course-preview]{cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease,transform .12s ease}
#courses .course-cover[data-course-preview]:hover,
#courses .course-cover[data-course-preview]:focus-visible{border-color:#70b5a5;box-shadow:0 0 0 3px rgba(35,140,117,.09);outline:none;transform:translateY(-1px)}
#courses .course-category-mini-head .course-preview-title{color:#173f36;font-size:.78rem;font-weight:850;line-height:1.25}

.course-preview-dialog{
  width:min(1180px,calc(100vw - 34px));
  height:min(820px,calc(100vh - 34px));
  max-width:none;
  max-height:none;
  padding:0;
  border:0;
  border-radius:18px;
  background:#fff;
  color:#22322e;
  box-shadow:0 28px 80px rgba(16,64,53,.3);
  overflow:hidden;
}
.course-preview-dialog::backdrop{background:rgba(14,39,34,.48);backdrop-filter:blur(2px)}
.course-preview-shell{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}
.course-preview-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:18px 20px;border-bottom:1px solid #dce8e5;background:#f7fbfa}
.course-preview-header h2{margin:.15rem 0 .35rem;color:#103e34;font-size:clamp(1.35rem,2.4vw,2rem);line-height:1.1}
.course-preview-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.course-preview-close{width:36px;height:36px;display:grid;place-items:center;border:1px solid #d1e2de;border-radius:999px;background:#fff;color:#38554e;font:700 1.45rem/1 system-ui;cursor:pointer}
.course-preview-close:hover{background:#edf7f4;border-color:#91c7ba}
.course-preview-body{min-height:0;display:grid;grid-template-columns:minmax(280px,34%) minmax(0,1fr)}
.course-preview-outline-pane{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);border-right:1px solid #dce8e5;background:#f8fbfa}
.course-preview-pane-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 14px;border-bottom:1px solid #e1ebe8;color:#25483f}
.course-preview-outline{min-height:0;overflow:auto;padding:9px 9px 18px}
.course-preview-outline-item{--course-preview-depth:0;width:100%;display:flex;align-items:flex-start;gap:9px;padding:9px 10px 9px calc(10px + var(--course-preview-depth)*20px);border:0;border-radius:9px;background:transparent;color:#28483f;text-align:left;cursor:pointer}
.course-preview-outline-item:hover{background:#edf7f4}
.course-preview-outline-item.is-active{background:#dff2ec;box-shadow:inset 3px 0 #238c75}
.course-preview-outline-item.is-section{font-weight:850;color:#103f35;margin-top:3px}
.course-preview-outline-item.is-free{color:#48645d}
.course-preview-outline-marker{width:8px;height:8px;margin-top:5px;flex:0 0 8px;border-radius:999px;border:2px solid #7eb9ab;background:#fff}
.course-preview-outline-item.is-section .course-preview-outline-marker{border-radius:2px;background:#238c75;border-color:#238c75}
.course-preview-outline-item.is-free .course-preview-outline-marker{border-color:#b2c8c2;background:#edf5f3}
.course-preview-outline-copy{display:grid;gap:2px;min-width:0}
.course-preview-outline-copy strong{font-size:.78rem;line-height:1.3;overflow-wrap:anywhere}
.course-preview-outline-copy small{font-size:.64rem;color:#768681;line-height:1.25;overflow-wrap:anywhere}
.course-preview-detail{min-width:0;min-height:0;overflow:auto;padding:22px 24px 34px;background:#fff}
.course-preview-overview{display:grid;grid-template-columns:160px minmax(0,1fr);gap:20px;align-items:start}
.course-preview-overview .course-cover-preview{width:160px;max-width:160px;border-radius:14px;font-size:2.2rem}
.course-preview-overview-copy h3,.course-preview-sheet h3,.course-preview-text-block h3{margin:.2rem 0 .65rem;color:#103f35;font-size:1.45rem;line-height:1.15}
.course-preview-summary{color:#4c625c;line-height:1.55}
.course-preview-badges,.course-preview-sheet-meta{display:flex;gap:6px;flex-wrap:wrap;margin:.65rem 0}
.course-preview-credits{display:grid;gap:8px;margin:1rem 0;padding:12px 14px;border:1px solid #e0ebe8;border-radius:12px;background:#f9fcfb}
.course-preview-credits div{display:grid;grid-template-columns:minmax(110px,150px) minmax(0,1fr);gap:10px}
.course-preview-credits dt{font-size:.72rem;font-weight:850;color:#456159}
.course-preview-credits dd{margin:0;font-size:.78rem;color:#273d37}
.course-preview-sheet>section{margin:1.15rem 0}
.course-preview-sheet h4{margin:0 0 .45rem;color:#31544b;font-size:.83rem;text-transform:uppercase;letter-spacing:.045em}
.course-preview-sheet>section>p{color:#455d56;line-height:1.55}
.course-preview-sheet-content{padding-top:.35rem;border-top:1px solid #e3ece9}
.course-preview-sheet-content .rendered-content{font-size:.93rem;line-height:1.6;color:#273933}
.course-preview-sheet-content .rendered-content img{max-width:100%;height:auto}
.course-preview-supporting{margin-top:1.2rem;border:1px solid #dfeae7;border-radius:11px;background:#fbfdfc}
.course-preview-supporting>summary{padding:10px 12px;font-weight:800;color:#31544b;cursor:pointer}
.course-preview-supporting>div{display:grid;gap:6px;padding:0 12px 12px}
.course-preview-supporting article{display:grid;gap:2px;padding:8px 10px;border:1px solid #e5eeeb;border-radius:8px;background:#fff;font-size:.76rem}
.course-preview-supporting article span{color:#6b7c77}
.course-preview-frozen-note{margin-top:1.2rem;padding:10px 12px;border-radius:9px;background:#edf7f4;color:#45665d;font-size:.72rem}
.course-preview-free-text{padding:13px 14px;border:1px solid #e0ebe8;border-radius:11px;background:#fbfdfc;color:#415851;line-height:1.6}
@media(max-width:760px){
  .course-preview-dialog{width:calc(100vw - 18px);height:calc(100vh - 18px)}
  .course-preview-body{grid-template-columns:1fr;grid-template-rows:minmax(180px,38%) minmax(0,1fr)}
  .course-preview-outline-pane{border-right:0;border-bottom:1px solid #dce8e5}
  .course-preview-detail{padding:16px}
  .course-preview-overview{grid-template-columns:96px minmax(0,1fr);gap:13px}
  .course-preview-overview .course-cover-preview{width:96px;max-width:96px}
}
.course-preview-dialog .course-cover{position:relative;display:grid;place-items:center;overflow:hidden;aspect-ratio:1/1;border:1px solid #d7e5e1;background:#eef6f4;color:#4f6f67;font-weight:900}
.course-preview-dialog .course-cover img{width:100%;height:100%;display:block;object-fit:cover}
.course-preview-dialog .course-cover-placeholder{background:linear-gradient(135deg,#edf6f3,#f7faf9)}
.course-preview-dialog .course-card-keywords{display:flex;gap:5px;flex-wrap:wrap;margin:.45rem 0}
.course-preview-dialog .course-keyword,.course-preview-dialog .course-language-badge{background:#eef6f4;color:#31544c;border:1px solid #d7e7e3}
.course-preview-dialog .course-card-language-row{display:flex;gap:5px;flex-wrap:wrap;margin:.3rem 0 .45rem}

/* Unified Analytics grammar: KPI → trend → ranking/breakdown → detailed data. */
.analytics-panel>.analytics-kpi-grid{margin-top:1rem;margin-bottom:.1rem}
.analytics-panel>.analytics-card+ .analytics-card{margin-top:1rem}
.analytics-dual-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:.65rem}
.analytics-dual-grid>section{min-width:0;padding:12px;border:1px solid #dfeae7;border-radius:13px;background:#f9fcfb}
.analytics-dual-grid h3{margin:0 0 .55rem;color:#294b43;font-size:.9rem}
.analytics-leaderboard-compact{margin:0;padding:0;border:0;background:transparent}
.analytics-chart-legend i.sheet-views,.analytics-chart-tooltip i.sheet-views,
.analytics-day-bars .sheet-views{background:var(--fbi-darkteal)}
.analytics-chart-legend i.course-views,.analytics-chart-tooltip i.course-views,
.analytics-day-bars .course-views{background:var(--fbi-purple)}
.analytics-chart-legend i.sheet-engagement,.analytics-chart-tooltip i.sheet-engagement,
.analytics-day-bars .sheet-engagement{background:var(--fbi-teal)}
.analytics-chart-legend i.course-engagement,.analytics-chart-tooltip i.course-engagement,
.analytics-day-bars .course-engagement{background:var(--fbi-green)}
.analytics-chart-legend i.sheet-credits,.analytics-chart-tooltip i.sheet-credits,
.analytics-day-bars .sheet-credits{background:var(--fbi-darkteal)}
.analytics-chart-legend i.translation-credits,.analytics-chart-tooltip i.translation-credits,
.analytics-day-bars .translation-credits{background:var(--fbi-purple)}
.analytics-chart-legend i.course-assemblies,.analytics-chart-tooltip i.course-assemblies,
.analytics-day-bars .course-assemblies{background:var(--fbi-teal)}
.analytics-chart-legend i.course-credits,.analytics-chart-tooltip i.course-credits,
.analytics-day-bars .course-credits{background:var(--fbi-green)}
@media(max-width:860px){.analytics-dual-grid{grid-template-columns:1fr}}


/* 2026-09-16 — Unified top-level section headers across portal workspaces. */
.portal-section-heading{
  box-sizing:border-box;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:24px;
  width:100%;
  margin:0 0 18px;
  padding:18px 20px;
  border:1px solid #dbe7e4;
  border-radius:15px;
  background:linear-gradient(135deg,#e8f4f3,#f8fbfb);
  box-shadow:0 8px 24px rgba(16,64,53,.045);
}
.portal-section-heading>div:first-child{min-width:0}
.portal-section-heading .portal-eyebrow{margin:0 0 .28rem;color:#687a75;font-size:.68rem;font-weight:850;letter-spacing:.075em;text-transform:uppercase}
.portal-section-heading h1,
.portal-section-heading h2{margin:.08rem 0 .42rem;color:#172f29;font-family:"Century Gothic",system-ui,sans-serif;font-size:clamp(1.65rem,2.65vw,2.35rem);line-height:1.08;letter-spacing:-.02em}
.portal-section-heading>div:first-child>p:last-child,
.portal-section-heading>p:last-child{max-width:900px;margin:0;color:#5d706b;font-size:.92rem;line-height:1.48}
.portal-section-heading .smallbtn{flex:0 0 auto}
.portal-section-heading .analytics-export-actions,
.portal-section-heading .analytics-heading-actions{align-self:flex-start}

/* Knowledge Books used to have a separate full-width hero. Keep its content, use the same cartridge. */
.workspace-heading.portal-section-heading{
  max-width:min(1600px,calc(100vw - 48px))!important;
  width:100%!important;
  margin:1.5rem auto 1rem!important;
  padding:18px 20px!important;
  background:linear-gradient(135deg,#e8f4f3,#f8fbfb)!important;
}
.workspace-heading.portal-section-heading>div{max-width:none!important;width:auto!important;margin:0!important}
.workspace-heading.portal-section-heading h1{font-size:clamp(1.65rem,2.65vw,2.35rem)!important;margin:.08rem 0 .42rem!important;color:#172f29!important}
.workspace-heading.portal-section-heading p:last-child{max-width:900px!important;margin:0!important;font-size:.92rem!important;color:#5d706b!important}
.workspace-heading.portal-section-heading + .explorer-controls{margin:0 auto 1rem!important}

/* Bring the main portal sections into the same visual rhythm. */
#courses .courses-topbar.portal-section-heading{display:flex;padding:18px 20px;border:1px solid #dbe7e4;border-radius:15px;background:linear-gradient(135deg,#e8f4f3,#f8fbfb);box-shadow:0 8px 24px rgba(16,64,53,.045)}
#courses .courses-topbar.portal-section-heading .courses-heading-copy h2{font-size:clamp(1.65rem,2.65vw,2.35rem);line-height:1.08;margin:.08rem 0 .42rem;color:#172f29}
#courses .courses-topbar.portal-section-heading .courses-heading-copy>p:last-child{max-width:900px;margin:0;color:#5d706b;font-size:.92rem;line-height:1.48}
#programmes .programmes-heading{grid-column:1/-1;margin-bottom:0}

/* Historical page-specific heading rules now inherit the common cartridge. */
.contributor-page-heading.portal-section-heading,
.sheet-search-heading.portal-section-heading,
.analytics-heading.portal-section-heading,
.course-curation-heading.portal-section-heading,
.ontology-curation-heading.portal-section-heading,
.keyword-curation-heading.portal-section-heading,
.institution-curation-heading.portal-section-heading,
.portal-user-admin-heading.portal-section-heading{
  max-width:none;
  margin-bottom:18px;
}
.contributor-page-heading.portal-section-heading .contributor-heading-note{max-width:900px;margin:0;color:#5d706b;font-size:.92rem;line-height:1.48}
.sheet-search-heading.portal-section-heading h1,
.course-curation-heading.portal-section-heading h1,
.ontology-curation-heading.portal-section-heading h1,
.keyword-curation-heading.portal-section-heading h1,
.institution-curation-heading.portal-section-heading h1,
.portal-user-admin-heading.portal-section-heading h1,
.analytics-heading.portal-section-heading h1{font-size:clamp(1.65rem,2.65vw,2.35rem);margin:.08rem 0 .42rem;color:#172f29}

/* A top-level heading can belong to a JS-switched view. Its hidden state must win over the shared flex display. */
.portal-section-heading.hidden{display:none!important}

@media(max-width:760px){
  .portal-section-heading{flex-direction:column;gap:12px;padding:16px}
  .portal-section-heading .analytics-export-actions,
  .portal-section-heading .analytics-heading-actions{width:100%;justify-content:flex-start}
  .workspace-heading.portal-section-heading{max-width:calc(100vw - 20px)!important;margin:1rem auto!important;padding:16px!important}
}

/* v0.2.0 — portal card system consistency pass ---------------------------
   Keep page gutters, card padding and nested content indentation on one grid. */
:root{
  --portal-card-radius:15px;
  --portal-card-pad-x:clamp(16px,1.45vw,22px);
  --portal-card-pad-y:18px;
  --portal-section-gap:18px;
  --portal-inner-gap:12px;
  --portal-indent-step:18px;
  --portal-card-border:#dbe7e4;
  --portal-card-soft:#f8fbfa;
}

/* Primary page sections share one horizontal anchor and vertical rhythm. */
.portal-section-heading,
.sheet-search-form,
.sheet-search-results,
.contributor-layout,
.analytics-filters,
.analytics-panel,
#courses .courses-switcher-wrap,
#courses .course-community-panel,
#courses .course-builder-heading,
#courses .course-builder-layout,
#programmes>.panel,
#mindmap .knowledge-book-picker,
#library .knowledge-book-picker,
#mindmap .explorer-controls,
#library .explorer-controls,
#mindmap .integrated-content,
#library .integrated-content{
  box-sizing:border-box;
}

.portal-section-heading{
  margin:0 0 var(--portal-section-gap)!important;
  padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;
  border-radius:var(--portal-card-radius)!important;
}

/* Search: header, form and results use the same left/right edge and padding. */
.sheet-search-page{display:grid;gap:var(--portal-section-gap)}
.sheet-search-page>.portal-section-heading,
.sheet-search-page>.sheet-search-form,
.sheet-search-page>.sheet-search-results{margin:0!important}
.sheet-search-form{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;gap:var(--portal-inner-gap)!important;border-radius:var(--portal-card-radius)!important}
.sheet-search-form input,.sheet-search-form select{margin:.28rem 0 0!important}
.sheet-search-results{display:grid;gap:var(--portal-inner-gap)}
.sheet-search-results-heading{margin:0!important}
#sheetSearchResults{display:grid;gap:var(--portal-inner-gap)}
#sheetSearchResults>.sheet-search-result,#sheetSearchResults>.card{margin:0!important;padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;border-radius:var(--portal-card-radius)!important}

/* Workflow workspaces: same gap below the heading and one panel padding scale. */
.contributor-page{display:grid;gap:var(--portal-section-gap)}
.contributor-page>.portal-section-heading{margin:0!important}
.contributor-layout{gap:12px!important}
.contributor-sidebar,.contributor-editor-shell{border-radius:var(--portal-card-radius)!important}
.contributor-sidebar{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important}
.contributor-editor-shell>.contributor-empty-state{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important}
.contributor-search-fields,.course-source-section-body{padding-left:0!important;padding-right:0!important}

/* Knowledge Books / Sheets use the same content anchor from heading to picker to view. */
.workspace-heading.portal-section-heading{margin:var(--portal-section-gap) var(--portal-page-gutter)!important;width:calc(100% - (2 * var(--portal-page-gutter)))!important;max-width:none!important}
.workspace-heading.portal-section-heading>div{padding:0!important}
.knowledge-book-picker{margin:0 var(--portal-page-gutter) var(--portal-section-gap)!important;width:calc(100% - (2 * var(--portal-page-gutter)))!important;padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;border-radius:var(--portal-card-radius)!important}
.explorer-controls{margin:0 var(--portal-page-gutter) var(--portal-section-gap)!important;width:calc(100% - (2 * var(--portal-page-gutter)))!important;padding-left:0!important;padding-right:0!important}
#mindmap .integrated-content,#library .integrated-content{padding-left:var(--portal-page-gutter)!important;padding-right:var(--portal-page-gutter)!important}
#library .library-tree-panel,#library .library-detail-panel,#mindmap .mindmap-stage,#mindmap .node-details{border-radius:var(--portal-card-radius)!important}
#library .library-tree-panel,#library .library-detail-panel,#mindmap .node-details{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important}

/* Hierarchies use one indentation unit instead of page-specific increments. */
.contributor-tree .tree-children,
.course-content-browser .tree-children,
#library .tree-children{padding-left:var(--portal-indent-step)!important}
.contributor-tree-branch>summary,.course-content-browser .contributor-tree-branch>summary{margin-left:0!important}

/* Courses: top header, tab switcher and content panels align to the same gutter. */
#courses{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:var(--portal-section-gap)!important;padding-left:var(--portal-page-gutter)!important;padding-right:var(--portal-page-gutter)!important}
#courses.hidden{display:none!important}
#courses .courses-topbar.portal-section-heading,#courses .courses-switcher-wrap,#courses .course-community-panel,#courses .course-builder-heading,#courses .course-builder-layout{width:100%!important;margin:0!important}
#courses .course-community-panel,#courses .course-builder-heading{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;border-radius:var(--portal-card-radius)!important}
#courses .community-course-grid{gap:var(--portal-inner-gap)!important}
#courses .community-course-card{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;border-radius:var(--portal-card-radius)!important}
#courses .course-source-panel,#courses .course-outline-panel,#courses .course-builder-library{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important}

/* Generic panels inherit the same internal scale when they are top-level cards. */
.analytics-panel,#programmes>.panel{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;border-radius:var(--portal-card-radius)!important}

@media(max-width:820px){
  :root{--portal-card-pad-x:14px;--portal-card-pad-y:15px;--portal-section-gap:14px;--portal-indent-step:12px}
  .workspace-heading.portal-section-heading,.knowledge-book-picker,.explorer-controls{margin-left:var(--portal-page-gutter)!important;margin-right:var(--portal-page-gutter)!important}
}

/* Card-system alignment corrections for the current DOM ------------------- */
#library .ontology-card-panel,
#library .sheet-card-panel,
#mindmap .node-details{
  padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;
  border-radius:var(--portal-card-radius)!important;
}
#library .section-heading,
#mindmap .section-heading{
  margin:0 0 var(--portal-section-gap)!important;
}
#library .cards-layout,
#mindmap .mindmap-layout{
  gap:12px!important;
}
#ontology .tree-node{
  padding-left:12px!important;
  padding-right:12px!important;
}
#sheets>.card{
  margin:0 0 var(--portal-inner-gap)!important;
  padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;
  border-radius:var(--portal-card-radius)!important;
}

/* The Courses main itself remains a transparent page frame; its child cards
   align to the same global gutter as every other workspace. */
#courses{
  display:block!important;
  width:100%!important;
  padding:0!important;
}
#courses.hidden{display:none!important}
#courses>.courses-hub{
  width:calc(100% - (2 * var(--portal-page-gutter)))!important;
  max-width:none!important;
  margin:var(--portal-section-gap) var(--portal-page-gutter) 3rem!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  gap:var(--portal-section-gap)!important;
}
#courses .course-community-section,
#courses .course-my-section{
  padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;
  border:1px solid var(--portal-card-border)!important;
  border-radius:var(--portal-card-radius)!important;
  background:#fff!important;
}
#courses .course-section-heading{margin:0 0 var(--portal-inner-gap)!important}
#courses .courses-section-tabs{margin:0!important}
#courses .course-builder-layout{border-radius:var(--portal-card-radius)!important}

/* Top-level secondary cards share the same text inset. */
.control-group,
.analytics-panel,
.sheet-search-form,
.contributor-sidebar,
.contributor-editor-shell,
#courses .course-community-section,
#courses .course-my-section,
#programmes>.panel{
  border-color:var(--portal-card-border)!important;
}

/* 2026-09-18 — demo-feedback design-system consolidation ------------------
   France-BioImaging palette and one spatial grid across every portal page. */
:root{
  --fbi-mint:#6fcab6;
  --fbi-teal:#00bea0;
  --fbi-green:#2bd681;
  --fbi-anthracite:#333434;
  --fbi-deep:#104035;
  --fbi-darkteal:#238c75;
  --fbi-purple:#6c6cbc;
  --fbi-soft-mint:#e8f4f3;
  --fbi-softest:#f8fbfb;
  --fbi-border:#d7e5e2;
  --fbi-muted:#5f706c;
  --portal-max-width:1600px;
  --portal-page-gutter:clamp(18px,2.6vw,40px);
  --portal-card-radius:15px;
  --portal-card-pad-x:20px;
  --portal-card-pad-y:18px;
  --portal-section-gap:18px;
  --portal-inner-gap:12px;
}
body{color:var(--fbi-anthracite);font-family:Calibri,"Segoe UI",Arial,sans-serif;background:#fff}
h1,h2,h3,h4,h5,h6,.integrated-nav,.smallbtn,.mode-choice,.book-card strong{font-family:"Century Gothic","Avenir Next",Arial,sans-serif}
:focus-visible{outline:3px solid color-mix(in srgb,var(--fbi-teal) 55%,white);outline-offset:2px}

/* One outer grid. No page-specific 16/20/28/40 px drift. */
.sheet-search-page,
.contributor-page,
.analytics-page,
.course-curation-page,
.ontology-curation-page,
.keyword-curation-page,
.institution-curation-page,
.portal-user-admin-page{
  width:calc(100% - (2 * var(--portal-page-gutter)))!important;
  max-width:var(--portal-max-width)!important;
  margin:var(--portal-section-gap) auto 3rem!important;
  padding:0!important;
}
.workspace-heading.portal-section-heading,
.explorer-controls,
#library .integrated-content,
#mindmap .integrated-content,
#courses>.courses-hub{
  width:calc(100% - (2 * var(--portal-page-gutter)))!important;
  max-width:var(--portal-max-width)!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
.workspace-heading.portal-section-heading{margin-top:var(--portal-section-gap)!important;margin-bottom:var(--portal-section-gap)!important}
.explorer-controls{margin-top:0!important;margin-bottom:var(--portal-section-gap)!important;padding:0!important}
#library .integrated-content,#mindmap .integrated-content{padding:0 0 3rem!important}
#courses>.courses-hub{margin-top:var(--portal-section-gap)!important;margin-bottom:3rem!important}

/* One card inset and visual language. */
.portal-section-heading,
.control-group,
.sheet-search-form,
.contributor-sidebar,
.contributor-editor-shell,
.analytics-panel,
.course-curation-nav-card,
.course-curation-editor-card,
.ontology-curation-card,
.keyword-curation-card,
.institution-curation-card,
.portal-user-admin-card,
#library .ontology-card-panel,
#library .sheet-card-panel,
#mindmap .ontology-viewport-panel,
#mindmap .node-details,
#courses .course-community-section,
#courses .course-my-section{
  border-color:var(--fbi-border)!important;
  border-radius:var(--portal-card-radius)!important;
}
.portal-section-heading{background:linear-gradient(135deg,var(--fbi-soft-mint),var(--fbi-softest))!important;padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important}
.control-group,.sheet-search-form,.contributor-sidebar,.analytics-panel,.course-curation-nav-card,.course-curation-editor-card,#library .ontology-card-panel,#library .sheet-card-panel,#mindmap .node-details{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important}
.section-heading{padding:0!important;margin:0 0 var(--portal-section-gap)!important}
.section-heading h2{font-size:1.7rem!important;line-height:1.12!important;margin:.15rem 0 .42rem!important;color:var(--fbi-deep)!important}
.portal-eyebrow{color:var(--fbi-darkteal)!important}

/* FBI action hierarchy. Purple remains ontology/domain semantics, never generic CTA blue. */
.smallbtn{background:var(--fbi-deep)!important;color:#fff!important;border:1px solid var(--fbi-deep)!important;border-radius:8px!important;font-weight:700!important;box-shadow:none!important}
.smallbtn:hover{background:var(--fbi-darkteal)!important;border-color:var(--fbi-darkteal)!important}
.smallbtn.secondary{background:var(--fbi-darkteal)!important;border-color:var(--fbi-darkteal)!important;color:#fff!important}
.smallbtn.light{background:var(--fbi-soft-mint)!important;border-color:#cbded9!important;color:var(--fbi-deep)!important}
.smallbtn.light:hover{background:#d9efeb!important;border-color:var(--fbi-mint)!important}
.smallbtn.danger{background:#fff!important;border-color:#c96a6a!important;color:#8d3232!important}
.quiet-link{color:var(--fbi-darkteal)!important}
.mode-choice.active{background:var(--fbi-deep)!important;border-color:var(--fbi-deep)!important}
.book-card:hover,.book-card.active{border-color:var(--fbi-darkteal)!important;background:var(--fbi-soft-mint)!important}

/* Knowledge Book inline search. */
.knowledge-book-search{position:relative;margin-top:12px;padding:12px var(--portal-card-pad-x);border:1px solid var(--fbi-border);border-radius:var(--portal-card-radius);background:#fff}
.knowledge-book-search label{display:grid;gap:5px;color:var(--fbi-deep);font-weight:700}
.knowledge-book-search input{margin:0!important;background:#fff}
.knowledge-book-search-results{position:absolute;left:var(--portal-card-pad-x);right:var(--portal-card-pad-x);top:calc(100% - 5px);z-index:35;max-height:360px;overflow:auto;border:1px solid var(--fbi-border);border-radius:12px;background:#fff;box-shadow:0 14px 36px rgba(16,64,53,.14);padding:8px}
.knowledge-search-result{width:100%;display:flex;align-items:flex-start;gap:9px;padding:9px 10px;border:0;border-radius:9px;background:#fff;color:var(--fbi-anthracite);text-align:left;cursor:pointer}
.knowledge-search-result:hover,.knowledge-search-result:focus{background:var(--fbi-soft-mint)}
.knowledge-search-result>span:last-child{display:grid;gap:2px}.knowledge-search-result small{color:var(--fbi-muted)}

/* Sections & cards now has a real read-only preview, symmetric with ontology. */
.card-sheet-preview{margin:0 0 var(--portal-inner-gap);border:1px solid var(--fbi-border);border-radius:12px;background:var(--fbi-softest);padding:16px}
.card-sheet-preview.hidden{display:none!important}
.card-sheet-preview-card{display:grid;gap:12px}.card-sheet-preview-card>header{display:flex;justify-content:space-between;gap:14px}.card-sheet-preview-card h3{margin:.12rem 0 .45rem;color:var(--fbi-deep);font-size:1.25rem}
.card-sheet-preview-card section{padding-top:10px;border-top:1px solid #e2ece9}.card-sheet-preview-card h4{margin:0 0 6px;color:var(--fbi-deep);font-size:.88rem}.card-sheet-preview-card p{margin:.2rem 0;line-height:1.45}
.card-sheet-preview-content{max-height:360px;overflow:auto}.card-sheet-preview-actions,.sheet-card-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sheet-card-preview-title{display:block;width:100%;padding:0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.sheet-card-preview-title h3{margin-top:0}
.sheet-panel-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.sheet-panel-title-row h3{margin-right:auto}

/* Keyword tokens: validated vocabulary is visually locked until explicitly removed. */
.keyword-token-field{display:grid;gap:6px;width:100%;margin:.28rem 0 10px;position:relative}
.keyword-token-source{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;margin:0!important;padding:0!important}
.keyword-token-list{display:flex;flex-wrap:wrap;gap:6px}.keyword-token-list[hidden]{display:none!important}
.keyword-token-chip{display:inline-flex;align-items:center;gap:5px;min-height:28px;padding:3px 5px 3px 9px;border-radius:999px;background:var(--fbi-soft-mint);border:1px solid #cfe3df;color:var(--fbi-deep);font-size:.84rem;font-weight:700}
.keyword-token-chip button{width:22px;height:22px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--fbi-darkteal);font-size:1rem;line-height:1;cursor:pointer}.keyword-token-chip button:hover{background:#d4ebe6}
.keyword-token-entry-row{display:flex;align-items:stretch;gap:6px;width:100%;min-width:0}.keyword-token-entry{margin:0!important;min-width:110px;flex:1 1 auto;width:auto!important}.keyword-boolean-operator{width:auto!important;min-width:76px;flex:0 0 auto;margin:0!important;padding-left:8px!important;padding-right:8px!important;font-weight:800;color:var(--fbi-deep);background:var(--fbi-softest)}
.keyword-token-op{font-size:.68rem;letter-spacing:.04em}.keyword-token-op-or{color:var(--fbi-purple)}.keyword-token-op-not{color:#8d3232}.keyword-token-help{color:var(--fbi-muted);font-size:.73rem;line-height:1.3}
.keyword-token-menu{top:calc(100% - 22px)!important;left:0!important;right:0!important;width:auto!important}.keyword-autocomplete-free{border-top:1px solid var(--fbi-border)!important}

/* Course catalogue curation controls use the same control geometry as the portal. */
.course-curation-add-row{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:8px!important;align-items:end!important;padding:12px!important;border:1px solid var(--fbi-border)!important;border-radius:12px!important;background:var(--fbi-softest)!important}
.course-curation-add-row select{margin:0!important;min-height:38px!important}.course-curation-add-row .smallbtn{min-height:38px!important;white-space:nowrap!important}
.course-curation-card-head{align-items:flex-start!important;gap:12px!important}.course-curation-card-head h2{margin:.12rem 0 .3rem!important;color:var(--fbi-deep)!important}.course-curation-section,.course-curation-category-row,.course-membership-choice{border-color:var(--fbi-border)!important;border-radius:11px!important}.course-curation-section.is-selected,.course-curation-category-row.is-selected{background:var(--fbi-soft-mint)!important;border-color:var(--fbi-darkteal)!important}

/* Rich code blocks + FBI syntax palette. */
.rich-code-language-select{width:auto!important;min-width:120px!important;margin:0!important;align-self:center}
.rich-editor-wrap pre,.rendered-content pre{overflow:auto;padding:14px 16px;border:1px solid #cfdedb;border-radius:10px;background:#172f29;color:#eef7f5;font-family:"SFMono-Regular",Consolas,"Liberation Mono",monospace;line-height:1.48;tab-size:4}
.rich-editor-wrap pre code,.rendered-content pre code{font-family:inherit;color:inherit;background:transparent;padding:0}
.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section{color:#6fcab6}.hljs-string,.hljs-title,.hljs-name,.hljs-type{color:#2bd681}.hljs-number,.hljs-symbol,.hljs-bullet{color:#b6b6ef}.hljs-comment,.hljs-quote{color:#9fb8b2;font-style:italic}.hljs-built_in,.hljs-variable,.hljs-attr{color:#00bea0}.hljs-meta,.hljs-doctag{color:#c6bff0}

/* Search result cards follow the same padding as their form cartridge. */
.sheet-search-result-card{padding:var(--portal-card-pad-y) var(--portal-card-pad-x)!important;border-radius:var(--portal-card-radius)!important;border-color:var(--fbi-border)!important}.sheet-search-result-card footer{display:flex;gap:8px;flex-wrap:wrap}

@media(max-width:760px){
  :root{--portal-page-gutter:12px;--portal-card-pad-x:14px;--portal-card-pad-y:15px}
  .knowledge-book-search-results{left:8px;right:8px}.sheet-panel-title-row{flex-direction:column}.course-curation-add-row{grid-template-columns:1fr!important}.course-curation-add-row .smallbtn{width:100%}
}


/* 2026-09-18 — geometry regression guard ---------------------------------
   Courses is the reference page frame: every top-level workspace must use the
   same full browser width minus the shared gutter. Do not reintroduce a
   centred max-width on individual pages. */
.workspace-heading.portal-section-heading,
.explorer-controls,
#library .integrated-content,
#mindmap .integrated-content,
.sheet-search-page,
.contributor-page,
.analytics-page,
.course-curation-page,
.ontology-curation-page,
.keyword-curation-page,
.institution-curation-page,
.portal-user-admin-page{
  box-sizing:border-box!important;
  width:calc(100% - (2 * var(--portal-page-gutter)))!important;
  max-width:none!important;
  margin-left:var(--portal-page-gutter)!important;
  margin-right:var(--portal-page-gutter)!important;
}
.workspace-heading.portal-section-heading{
  margin-top:var(--portal-section-gap)!important;
  margin-bottom:var(--portal-section-gap)!important;
}
.explorer-controls{
  margin-top:0!important;
  margin-bottom:var(--portal-section-gap)!important;
  padding-left:0!important;
  padding-right:0!important;
}
#library .integrated-content,
#mindmap .integrated-content{
  padding-left:0!important;
  padding-right:0!important;
  padding-bottom:3rem!important;
}
.analytics-page{
  margin-top:var(--portal-section-gap)!important;
  margin-bottom:3rem!important;
  padding:0!important;
}
.analytics-page>.portal-section-heading,
.analytics-page>.analytics-tabs,
.analytics-page>.analytics-filters,
.analytics-page>.analytics-panel{
  box-sizing:border-box!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  margin-left:0!important;
  margin-right:0!important;
}
.analytics-page>.analytics-panel{
  overflow:hidden;
}
.analytics-panel>.analytics-card,
.analytics-panel>.analytics-kpi-grid,
.analytics-panel .analytics-table-scroll{
  max-width:100%!important;
  min-width:0!important;
}

/* Cards: the ontology browser is a navigation rail, not the dominant column.
   The v2 storage key in the template intentionally discards obsolete ratios. */
#library .cards-layout[data-resizable-split]{
  --workspace-splitter-size:18px;
  --workspace-left-width:38%;
  width:100%!important;
  max-width:none!important;
  grid-template-columns:minmax(300px,var(--workspace-left-width)) var(--workspace-splitter-size) minmax(0,1fr)!important;
  gap:0!important;
  align-items:stretch!important;
}
#library .cards-layout[data-resizable-split]>.ontology-card-panel,
#library .cards-layout[data-resizable-split]>.sheet-card-panel{
  width:auto!important;
  max-width:none!important;
  min-width:0!important;
}

/* Ontology: preserve a readable sheet/details pane. The splitter still lets
   users resize it, but it must never collapse into a letter-wide column. */
#mindmap #mindmapLayout{
  width:100%!important;
  max-width:none!important;
  gap:0!important;
  --mindmap-splitter-width:18px;
}
#mindmap #mindmapLayout:not(.details-collapsed):not(.ontology-collapsed){
  grid-template-columns:minmax(0,1fr) var(--mindmap-splitter-width) minmax(360px,var(--details-track-width))!important;
}
#mindmap #mindmapLayout .ontology-viewport-panel,
#mindmap #mindmapLayout .node-details{
  min-width:0!important;
  max-width:none!important;
}
/* Sheet-panel shell owns its internal padding; keep the outer details card at
   zero so sticky headers and tabs span the whole details pane. */
#mindmap #mindmapLayout .node-details{padding:0!important}

/* One heading inset everywhere. In particular the eyebrow is a block so its
   bottom margin also applies when the template uses a <span> (Courses). */
.portal-section-heading{
  padding:20px var(--portal-card-pad-x)!important;
}
.portal-section-heading .portal-eyebrow{
  display:block!important;
  margin:0 0 .34rem!important;
  line-height:1.15!important;
}
.portal-section-heading h1,
.portal-section-heading h2,
#courses .courses-topbar.portal-section-heading .courses-heading-copy h2{
  margin:0 0 .42rem!important;
}

@media(max-width:900px){
  #library .cards-layout[data-resizable-split]{
    grid-template-columns:minmax(0,1fr)!important;
    gap:var(--portal-section-gap)!important;
  }
}
@media(max-width:760px){
  .workspace-heading.portal-section-heading,
  .explorer-controls,
  #library .integrated-content,
  #mindmap .integrated-content,
  .sheet-search-page,
  .contributor-page,
  .analytics-page,
  .course-curation-page,
  .ontology-curation-page,
  .keyword-curation-page,
  .institution-curation-page,
  .portal-user-admin-page{
    width:calc(100% - (2 * var(--portal-page-gutter)))!important;
    margin-left:var(--portal-page-gutter)!important;
    margin-right:var(--portal-page-gutter)!important;
  }
  .portal-section-heading{padding:16px var(--portal-card-pad-x)!important}
}

/* v0.2.0 — keyword analytics graph + word cloud */
.analytics-keyword-chart{display:grid;gap:8px;margin-top:14px}
.analytics-keyword-bar{display:grid;grid-template-columns:34px minmax(130px,260px) minmax(120px,1fr) 58px;align-items:center;gap:10px;min-width:0}
.analytics-keyword-bar>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#294b43;font-size:.8rem}
.analytics-keyword-track{height:11px;border-radius:999px;background:#e3ecea;overflow:hidden}
.analytics-keyword-track>i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--fbi-darkteal),var(--fbi-teal));min-width:0}
.analytics-keyword-bar>b{text-align:right;color:#104035;font-size:.84rem}
.analytics-word-cloud{position:relative;width:100%;height:clamp(190px,37vw,430px);min-height:0;padding:0;border:1px solid #dfeae7;border-radius:13px;background:radial-gradient(circle at 50% 45%,#fff 0,#f8fcfb 68%,#f2f9f7 100%);overflow:hidden;isolation:isolate}
.analytics-word-cloud-stage{position:absolute;left:50%;top:50%;width:1120px;height:420px;transform:translate(-50%,-50%) scale(var(--cloud-scale,1));transform-origin:center;overflow:visible}
.analytics-word-cloud>.empty-state{position:absolute;inset:0;display:grid;place-items:center;margin:0;padding:20px;text-align:center}.analytics-cloud-word{position:absolute;display:inline-block;margin:0;padding:2px 4px;border-radius:6px;font-size:var(--cloud-size,16px);font-weight:var(--cloud-weight,650);line-height:1.02;color:#075f63;text-decoration:none;white-space:nowrap;cursor:pointer;transform-origin:center;transition:transform .14s ease,color .14s ease,background .14s ease;z-index:1}
.analytics-cloud-word:nth-child(3n+2){color:#238c75}.analytics-cloud-word:nth-child(4n){color:#6c6cbc}.analytics-cloud-word:nth-child(5n){color:#3f8f62}
.analytics-cloud-word:hover,.analytics-cloud-word:focus-visible{color:#104035;transform:scale(1.08);outline:none;text-decoration:underline;text-underline-offset:3px;background:rgba(255,255,255,.86);z-index:4}
.analytics-keyword-link{color:inherit;text-decoration:none;border-radius:4px}.analytics-keyword-link:hover,.analytics-keyword-link:focus-visible{color:var(--fbi-darkteal);text-decoration:underline;text-underline-offset:3px;outline:none}
.sheet-search-form label{align-content:start;min-width:0}.sheet-search-form .keyword-token-field{margin:.28rem 0 0!important;min-width:0}.sheet-search-form .keyword-token-entry-row{display:grid;grid-template-columns:82px minmax(0,1fr);gap:8px;width:100%;min-width:0}.sheet-search-form .keyword-boolean-operator{width:100%!important;min-width:0!important}.sheet-search-form .keyword-token-entry{width:100%!important;min-width:0!important}.sheet-search-form input,.sheet-search-form select{min-width:0;box-sizing:border-box}
@media(max-width:780px){.analytics-keyword-bar{grid-template-columns:30px minmax(90px,150px) minmax(80px,1fr) 46px}.analytics-word-cloud{height:clamp(175px,42vw,250px)}.sheet-search-form .keyword-token-entry-row{grid-template-columns:76px minmax(0,1fr)}}

/* 2026-09-18 — unified preview grammar: sheets use the same two-pane model as courses. */
#cardSheetPreview{display:none!important}
.sheet-preview-dialog .course-preview-body{grid-template-columns:minmax(250px,31%) minmax(0,1fr)}
.sheet-preview-outline-item.is-supporting .course-preview-outline-marker{border-color:#8d83b8;background:#f7f3fb}
.sheet-preview-outline-item.is-media .course-preview-outline-marker{border-radius:2px;border-color:#b49758;background:#fbf5e7}
.sheet-preview-overview>section{margin:.9rem 0}
.sheet-preview-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:1.2rem;padding-top:1rem;border-top:1px solid #e2ece9}
.sheet-preview-media-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:1rem}
.sheet-preview-media-card{overflow:hidden;border:1px solid #dfeae7;border-radius:11px;background:#fbfdfc}
.sheet-preview-media-card>img{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;background:#fff}
.sheet-preview-media-placeholder{display:grid;place-items:center;min-height:140px;background:#edf5f3;color:#587068;font-size:.75rem;font-weight:900;letter-spacing:.06em}
.sheet-preview-media-card>div:last-child{display:grid;gap:3px;padding:10px 11px}
.sheet-preview-media-card strong{font-size:.8rem;color:#26483f}
.sheet-preview-media-card small{font-size:.68rem;color:#73837e;overflow-wrap:anywhere}
.sheet-preview-media-card p{margin:.25rem 0 0;color:#4b615b;font-size:.75rem;line-height:1.4}
@media(max-width:760px){
  .sheet-preview-dialog .course-preview-body{grid-template-columns:1fr;grid-template-rows:minmax(180px,38%) minmax(0,1fr)}
}

/* Unified preview export footer + ontology embedded preview */
.preview-export-footer{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:18px;
  margin-top:1.5rem;
  padding-top:1rem;
  border-top:1px solid #dce8e5;
}
.preview-export-copy{display:grid;gap:3px;min-width:0;color:#536a63;font-size:.74rem;line-height:1.35}
.preview-export-copy .portal-eyebrow{margin:0;color:#238c75}
.preview-export-state{display:inline-flex;width:max-content;margin-top:3px;padding:2px 7px;border-radius:999px;background:#fff4dd;color:#8a6515;font-weight:800;font-size:.66rem}
.preview-export-actions{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.preview-export-actions .smallbtn{white-space:nowrap}
.preview-export-actions .is-disabled{opacity:.48;cursor:not-allowed;pointer-events:none}

.sheet-embedded-preview{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr);border:1px solid #dce8e5;border-radius:12px;background:#fff;overflow:hidden}
.sheet-embedded-preview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border-bottom:1px solid #e1ebe8;background:#f8fbfa}
.sheet-embedded-preview-nav{display:flex;align-items:center;gap:5px;flex-wrap:wrap;min-width:0}
.sheet-embedded-preview-tab{border:1px solid transparent;border-radius:8px;background:transparent;color:#49645d;padding:6px 8px;font:750 .69rem/1.15 system-ui;cursor:pointer}
.sheet-embedded-preview-tab:hover{background:#edf7f4;color:#174c3f}
.sheet-embedded-preview-tab.is-active{border-color:#b8ddd4;background:#dff2ec;color:#103f35;box-shadow:inset 0 -2px #238c75}
.sheet-embedded-expand{flex:0 0 auto}
.sheet-embedded-preview-detail{min-width:0;padding:16px 17px 22px;background:#fff}
.sheet-embedded-preview-detail .course-preview-sheet>header{margin-bottom:.4rem}
.sheet-embedded-preview-detail .course-preview-sheet h3{font-size:1.25rem}
.sheet-embedded-preview-detail .course-preview-sheet-content .rendered-content{font-size:.9rem}
.sheet-embedded-preview-detail .preview-export-footer{align-items:flex-start;flex-direction:column}
.sheet-embedded-preview-detail .preview-export-actions{justify-content:flex-start}
.sheet-embedded-preview-detail .sheet-preview-actions{margin-top:1rem}

@media (max-width:900px){
  .preview-export-footer{align-items:flex-start;flex-direction:column}
  .preview-export-actions{justify-content:flex-start}
  .sheet-embedded-preview-toolbar{align-items:flex-start;flex-direction:column}
}

/* 2026-09-18 — keep preview export actions anchored to the bottom edge.
   Short previews use the full detail-pane height; long previews still scroll
   naturally and keep the export block after the content. */
.course-preview-detail > .course-preview-overview,
.course-preview-detail > .course-preview-sheet,
.course-preview-detail > .course-preview-text-block{
  box-sizing:border-box;
  min-height:100%;
}
.course-preview-detail > .course-preview-overview{
  align-items:stretch;
}
.course-preview-detail > .course-preview-overview .course-cover-preview{
  align-self:start;
}
.course-preview-detail > .course-preview-overview .course-preview-overview-copy,
.course-preview-detail > .course-preview-sheet,
.course-preview-detail > .course-preview-text-block{
  display:flex;
  flex-direction:column;
}
.course-preview-detail .preview-export-footer{
  margin-top:auto;
}
/* Keep a small breathing space when preceding content reaches the footer. */
.course-preview-detail .preview-export-footer{
  padding-top:1rem;
}

/* 2026-09-18 — ontology is a full-width navigation surface.
   Sheet consultation is handled by the shared preview dialog opened from nodes. */
#mindmapLayout.ontology-map-only,
#mindmapLayout.ontology-map-only[style]{
  --details-width:0px!important;
  --details-track-width:0px!important;
  grid-template-columns:minmax(0,1fr)!important;
}
#mindmapLayout.ontology-map-only .ontology-viewport-panel{
  grid-column:1!important;
  border-radius:.85rem!important;
}
#mindmapLayout.ontology-map-only .mindmap-canvas{
  min-width:0;
}
.map-preview-hint{
  flex:0 1 auto;
  max-width:280px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#678078;
  font-size:.66rem;
  font-weight:650;
}

/* Direct-sheet preview affordance on ontology nodes. Branch coverage remains
   informational; this action exists only for sheets attached to this concept. */
.g6-ontology-card{
  position:relative;
}
.g6-card-preview-action,
.map-preview-action{
  position:absolute;
  right:6px;
  bottom:6px;
  z-index:5;
  display:inline-flex;
  align-items:center;
  gap:4px;
  max-width:calc(100% - 12px);
  padding:3px 6px;
  border:1px solid rgba(7,95,99,.22);
  border-radius:999px;
  background:rgba(255,255,255,.94);
  color:#075f63;
  box-shadow:0 3px 10px rgba(16,64,53,.12);
  font:800 8.5px/1 Calibri,Arial,sans-serif;
  white-space:nowrap;
  cursor:pointer;
  opacity:0;
  transform:translateY(2px);
  pointer-events:none;
  transition:opacity .12s ease,transform .12s ease,background .12s ease,box-shadow .12s ease;
}
.g6-card-preview-action b,
.map-preview-action b{
  display:inline-grid;
  place-items:center;
  min-width:14px;
  height:14px;
  padding:0 3px;
  border-radius:999px;
  background:#dff2ec;
  font-size:7.5px;
}
.g6-ontology-card:hover .g6-card-preview-action,
.g6-ontology-card:focus-within .g6-card-preview-action,
.g6-card-preview-action:focus-visible,
.map-node:hover .map-preview-action,
.map-node:focus-within .map-preview-action,
.map-preview-action:focus-visible{
  opacity:1;
  transform:none;
  pointer-events:auto;
}
.g6-card-preview-action:hover,
.g6-card-preview-action:focus-visible,
.map-preview-action:hover,
.map-preview-action:focus-visible{
  outline:none;
  background:#fff;
  box-shadow:0 5px 14px rgba(16,64,53,.20);
}
.g6-ontology-card.depth-0 .g6-card-preview-action{
  border-color:rgba(255,255,255,.32);
  background:rgba(255,255,255,.96);
  color:#075f63;
}
.map-node{
  position:absolute;
}

/* Multi-sheet chooser anchored to the ontology bubble. */
.ontology-sheet-popover{
  position:fixed;
  z-index:12000;
  box-sizing:border-box;
  max-height:min(460px,calc(100vh - 24px));
  overflow:auto;
  padding:10px;
  border:1px solid #cfe2dd;
  border-radius:13px;
  background:#fff;
  box-shadow:0 18px 46px rgba(16,64,53,.22);
}
.ontology-sheet-popover-heading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  padding:2px 2px 9px;
  border-bottom:1px solid #e2ece9;
}
.ontology-sheet-popover-heading .portal-eyebrow{margin:0 0 3px}
.ontology-sheet-popover-heading strong{display:block;color:#103f35;font-size:.85rem;line-height:1.25}
.ontology-sheet-popover-close{
  flex:0 0 auto;
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  border:1px solid #d6e5e1;
  border-radius:50%;
  background:#fff;
  color:#47645c;
  font-size:1rem;
  cursor:pointer;
}
.ontology-sheet-popover-list{display:grid;gap:6px;padding-top:8px}
.ontology-sheet-choice{
  width:100%;
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  align-items:start;
  gap:9px;
  padding:9px 10px;
  border:1px solid transparent;
  border-radius:10px;
  background:#f8fbfa;
  color:#244b40;
  text-align:left;
  cursor:pointer;
}
.ontology-sheet-choice:hover,
.ontology-sheet-choice:focus-visible{
  outline:none;
  border-color:#abd7cc;
  background:#edf8f5;
}
.ontology-sheet-choice>span:last-child{min-width:0;display:grid;gap:2px}
.ontology-sheet-choice strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem}
.ontology-sheet-choice small{color:#6c807a;font-size:.66rem}

@media(max-width:900px){
  .map-preview-hint{display:none}
  .g6-card-preview-action,
  .map-preview-action{opacity:1;transform:none;pointer-events:auto}
}


/* 2026-09-21 — full-width ontology viewport + robust node preview affordance */
#mindmap,
#mindmap .integrated-content{
  width:100vw!important;
  max-width:100vw!important;
  margin-left:0!important;
  margin-right:0!important;
  box-sizing:border-box!important;
}
#mindmap .integrated-content{
  padding-left:var(--portal-page-gutter)!important;
  padding-right:var(--portal-page-gutter)!important;
}
#mindmap #mindmapLayout.ontology-map-only,
#mindmap #mindmapLayout.ontology-map-only .ontology-viewport-panel,
#mindmap #mindmapLayout.ontology-map-only .mindmap-canvas{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
.g6-ontology-card,
.g6-ontology-card:hover,
.g6-ontology-card:focus-within{
  overflow:visible!important;
}
.g6-ontology-card:hover,
.g6-ontology-card:focus-within{
  z-index:50!important;
}
.g6-card-preview-action,
.map-preview-action{
  top:-10px!important;
  right:8px!important;
  bottom:auto!important;
  z-index:100!important;
  box-shadow:0 4px 14px rgba(16,64,53,.20)!important;
}
.g6-ontology-card.has-direct-sheets:hover,
.g6-ontology-card.has-direct-sheets:focus-within{
  box-shadow:0 0 0 3px rgba(0,190,160,.18),0 12px 28px rgba(16,64,53,.16)!important;
}


/* 2026-09-21 — ontology map final width contract -------------------------
   The legacy split-pane selector has two IDs and therefore outranked the
   earlier .ontology-map-only override even though the side panel no longer
   exists. Keep the ontology map on the same page grid as the Knowledge Book
   cards: full available width, minus the shared portal gutters. */
#mindmap .integrated-content{
  box-sizing:border-box!important;
  width:calc(100% - (2 * var(--portal-page-gutter)))!important;
  max-width:none!important;
  margin-left:var(--portal-page-gutter)!important;
  margin-right:var(--portal-page-gutter)!important;
  padding-left:0!important;
  padding-right:0!important;
}
#mindmap #mindmapLayout.ontology-map-only,
#mindmap #mindmapLayout.ontology-map-only[style],
#mindmap #mindmapLayout.ontology-map-only:not(.details-collapsed):not(.ontology-collapsed),
#mindmap #mindmapLayout.ontology-map-only[data-workspace-size="wide"],
#mindmap #mindmapLayout.ontology-map-only[data-workspace-size="compact"],
#mindmap #mindmapLayout.ontology-map-only[data-workspace-size="narrow"]{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  margin:0!important;
  gap:0!important;
  justify-self:stretch!important;
  align-self:stretch!important;
}
#mindmap #mindmapLayout.ontology-map-only>.ontology-viewport-panel,
#mindmap #mindmapLayout.ontology-map-only>.ontology-viewport-panel>.mindmap-canvas{
  grid-column:1/-1!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  justify-self:stretch!important;
}

/* 2026-09-21 — administrator-only individual and batch account creation */
.portal-user-admin-tabs{display:flex;justify-content:center;gap:8px;margin:0 0 14px}.portal-user-admin-tabs button{border:1px solid #cfe2de;border-radius:999px;background:#fff;color:#31544c;padding:8px 14px;font:inherit;font-size:.76rem;font-weight:850;cursor:pointer}.portal-user-admin-tabs button:hover,.portal-user-admin-tabs button.is-active{border-color:#16836c;background:#0f5f50;color:#fff;box-shadow:0 0 0 3px rgba(39,189,158,.12)}
.portal-account-create-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:14px;align-items:stretch}.portal-account-create-card{overflow:visible;height:100%}.portal-account-create-heading{padding:18px 18px 8px}.portal-account-create-heading h2{margin:.15rem 0 .35rem;color:#104035;font-size:1.35rem}.portal-account-create-heading p:last-child{margin:0;color:#60716d;font-size:.76rem;line-height:1.5}.portal-account-create-form{display:grid;grid-template-columns:1fr 1fr;gap:11px;padding:12px 18px 18px}.portal-account-create-form label,.portal-account-batch-form label{display:grid;gap:5px;color:#31544c;font-size:.72rem;font-weight:800}.portal-account-create-form .span-2{grid-column:1/-1}.portal-account-create-form input,.portal-account-create-form select,.portal-account-batch-form input{width:100%;margin:0}.portal-account-create-actions{display:flex;align-items:end;justify-content:flex-end}.portal-account-template-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 18px 14px;border-bottom:1px solid #edf3f1}.portal-inline-link{margin-left:auto;color:#13735f;font-size:.7rem;font-weight:800;text-decoration:none}.portal-inline-link:hover{text-decoration:underline}.portal-account-batch-form{display:grid;gap:10px;padding:14px 18px}.portal-account-batch-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.portal-account-batch-summary{min-height:2.5rem;padding:10px 18px;border-top:1px solid #edf3f1;color:#31544c;font-size:.73rem;line-height:1.45}.portal-account-batch-summary.is-error{color:#9b3d4c;background:#fff8f8}.portal-account-batch-table-wrap{max-height:360px;overflow:auto;border-top:1px solid #edf3f1}.portal-account-batch-table{width:100%;border-collapse:collapse;min-width:850px}.portal-account-batch-table th{position:sticky;top:0;z-index:1;padding:8px 10px;background:#edf7f5;color:#104035;text-align:left;font-size:.64rem;text-transform:uppercase;letter-spacing:.04em}.portal-account-batch-table td{padding:8px 10px;border-top:1px solid #edf3f1;color:#50645f;font-size:.69rem;vertical-align:top}.portal-account-batch-table td:last-child{min-width:190px}.portal-account-batch-table small{display:block;margin-top:2px;color:#73827e;font-size:.61rem;line-height:1.35}.portal-batch-ok{color:#176b56;font-weight:850}.portal-batch-error{color:#9b3d4c;font-weight:850}.portal-batch-success-tag{display:inline-flex;align-items:center;margin-right:7px;padding:3px 8px;border-radius:999px;background:#dff2ec;color:#176b56;font-size:.64rem;font-weight:900}#portalBatchDownloadCredentials{margin:12px 18px 18px}.portal-account-credentials{margin:0 18px 18px;padding:14px;border:1px solid #b8ded4;border-radius:12px;background:#eff9f6;color:#31544c}.portal-account-credentials.is-error{border-color:#efd4da;background:#fff7f8;color:#923d4b}.portal-account-credential-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.portal-account-credential-heading strong{color:#104035}.portal-account-credential-heading span{padding:3px 7px;border-radius:999px;background:#dff2ec;color:#176b56;font-size:.63rem;font-weight:850}.portal-account-credentials dl{display:grid;gap:6px;margin:0}.portal-account-credentials dl>div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px;align-items:start}.portal-account-credentials dt{font-size:.66rem;font-weight:850;color:#57706a}.portal-account-credentials dd{margin:0;font-size:.72rem}.portal-account-credentials code{display:inline-block;padding:2px 5px;border-radius:5px;background:#fff;font-size:.72rem}.portal-account-credentials .quiet-link{margin-left:8px}.portal-account-credentials p{margin:.65rem 0 0;color:#6c7c78;font-size:.65rem;line-height:1.4}
@media(max-width:980px){.portal-account-create-grid{grid-template-columns:1fr}}@media(max-width:620px){.portal-account-create-form{grid-template-columns:1fr}.portal-account-create-form .span-2{grid-column:auto}.portal-account-create-actions{justify-content:stretch}.portal-account-create-actions .smallbtn{width:100%}.portal-inline-link{width:100%;margin-left:0}.portal-account-credentials dl>div{grid-template-columns:1fr}}

/* 2026-09-21 — inline institution creation + forced temporary-password status */
.portal-affiliation-field{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}
.portal-affiliation-field>label{min-width:0}
.portal-inline-institution{grid-column:1/-1;padding:12px;border:1px solid #cfe5df;border-radius:10px;background:#f7fbfa}
.portal-inline-institution-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;color:#104035}
.portal-inline-institution-grid{display:grid;grid-template-columns:1.4fr .7fr 1fr 1fr;gap:9px}
.portal-inline-institution-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:10px}
.portal-inline-institution-actions span{margin-right:auto;color:#55706a;font-size:.68rem}
.portal-inline-institution-actions span.is-error{color:#9b3d4c}
.portal-form-hint{margin:-2px 0 0;color:#71807c;font-size:.64rem;line-height:1.4}
.portal-password-change-required{display:block;margin-top:5px;color:#a06121;font-size:.61rem;font-weight:800;line-height:1.25}
@media(max-width:760px){.portal-affiliation-field{grid-template-columns:1fr}.portal-inline-institution-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.portal-inline-institution-grid{grid-template-columns:1fr}}

/* 2026-09-22 — My account layout, password management and batch credential handout */
.contributor-profile-workspace{
  width:min(1180px,100%);
  margin:0 auto;
}
.contributor-profile-workspace .contributor-sheet-header{
  border-radius:16px;
}
.contributor-profile-card{
  overflow:visible;
}
.profile-information-grid{
  align-items:start;
}
.profile-information-grid .orcid-connect-row{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.profile-information-grid .orcid-connect-row small{
  flex:1 1 360px;
  color:#677975;
  line-height:1.4;
}
.profile-language-fields{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
#profileCapabilitiesForm .profile-language-fields fieldset{
  margin:0;
  min-width:0;
  display:grid;
  gap:7px;
  align-content:start;
  background:#fbfdfc;
}
#profileCapabilitiesForm .profile-language-fields fieldset label{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:28px;
  margin:0;
  font-weight:600;
  color:#405c55;
}
#profileCapabilitiesForm .profile-language-fields fieldset input[type="checkbox"]{
  width:16px!important;
  min-width:16px;
  height:16px;
  margin:0!important;
}
.profile-form-actions,
.profile-password-actions,
.profile-membership-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
}
.profile-password-form{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.profile-password-form label{
  display:grid;
  gap:5px;
  color:#104035;
  font-size:.78rem;
  font-weight:700;
}
.profile-password-form input{
  width:100%;
  font:inherit;
  font-weight:400;
}
.profile-password-form .span-2{
  grid-column:1/-1;
}
#profilePasswordMessage{
  min-height:1.2rem;
  font-size:.72rem;
  color:#5e736d;
}
#profilePasswordMessage.is-success{color:#176b56;font-weight:800}
#profilePasswordMessage.is-error{color:#9b3d4c;font-weight:800}
.profile-primary-check{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  min-height:42px;
}
.profile-primary-check input[type="checkbox"]{
  width:16px!important;
  min-width:16px;
  height:16px;
  margin:0!important;
}
.portal-batch-credentials-download{
  margin:12px 18px 18px;
  padding:12px 14px;
  border:1px solid #cfe3de;
  border-radius:11px;
  background:#f7fbfa;
}
.portal-batch-credentials-download p{
  margin:8px 0 0;
  color:#657772;
  font-size:.66rem;
  line-height:1.45;
}
@media(max-width:720px){
  .profile-language-fields,
  .profile-password-form{grid-template-columns:1fr}
  .profile-password-form .span-2{grid-column:auto}
  .profile-form-actions,
  .profile-password-actions,
  .profile-membership-actions{justify-content:flex-start}
}

/* 2026-09-22 — direct course-category creation and drag/drop catalogue ordering */
.course-curation-category-row{
  grid-template-columns:30px minmax(0,1fr)!important;
  gap:4px!important;
}
.course-curation-drag-handle{
  width:28px;
  min-width:28px;
  height:34px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  border:0;
  border-radius:7px;
  background:transparent;
  color:#788b86;
  font-size:1rem;
  font-weight:900;
  line-height:1;
  letter-spacing:-.12em;
  cursor:grab;
}
.course-curation-drag-handle:hover,
.course-curation-drag-handle:focus-visible{
  background:#e8f4f1;
  color:#176b56;
  outline:none;
}
.course-curation-drag-handle:active{cursor:grabbing}
.course-curation-category-row.is-dragging,
.course-curation-course-row.is-dragging{
  opacity:.46;
  box-shadow:0 8px 20px rgba(16,64,53,.10);
}
.course-curation-category-row.is-drag-over,
.course-curation-course-row.is-drag-over{
  border-color:#2f9e83!important;
  box-shadow:0 -2px 0 #2f9e83;
}
.course-curation-category-list.is-sorting,
.course-curation-course-list.is-sorting{user-select:none}
.course-curation-course-row{
  display:grid!important;
  grid-template-columns:30px minmax(0,1fr) auto;
  align-items:center;
}
.course-curation-course-drag{align-self:center}
.course-quick-category-form{
  display:grid;
  grid-template-columns:minmax(180px,.8fr) minmax(260px,1.4fr);
  gap:10px 12px;
  margin:0 16px 14px;
  padding:13px 14px;
  border:1px solid #d9e8e4;
  border-radius:11px;
  background:#f8fbfa;
}
.course-quick-category-form label{
  display:grid;
  gap:5px;
  color:#31544c;
  font-size:.72rem;
  font-weight:800;
}
.course-quick-category-form input{width:100%;margin:0}
.course-quick-category-form .wide{min-width:0}
.course-quick-category-form .course-curation-inline-check{
  display:flex;
  align-items:center;
  gap:8px;
  grid-column:1/-1;
}
.course-quick-category-form .course-curation-inline-check input{
  width:16px;
  min-width:16px;
  height:16px;
}
.course-quick-category-actions{
  grid-column:1/-1;
  display:flex;
  justify-content:flex-end;
  gap:8px;
}
@media(max-width:720px){
  .course-quick-category-form{grid-template-columns:1fr}
  .course-quick-category-form .course-curation-inline-check,
  .course-quick-category-actions{grid-column:1}
  .course-curation-course-row{grid-template-columns:30px minmax(0,1fr)}
  .course-curation-course-actions{grid-column:2;justify-content:flex-end}
}


/* 2026-09-22 — account workspace width/polish, batch affiliation creation, quick category feedback */
.contributor-layout.contributor-account-layout{
  grid-template-columns:minmax(0,1fr)!important;
  width:100%!important;
}
.contributor-layout.contributor-account-layout>.contributor-editor-shell{
  grid-column:1/-1!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.contributor-profile-workspace{
  width:100%!important;
  max-width:none!important;
  margin:0!important;
  padding:0!important;
  gap:16px!important;
}
.profile-account-summary{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) minmax(260px,.7fr);
  gap:16px;
  align-items:center;
  padding:18px 20px;
  border:1px solid var(--fbi-border);
  border-radius:var(--portal-card-radius);
  background:linear-gradient(135deg,#eef8f5,#fbfdfc);
}
.profile-account-avatar{
  width:54px;height:54px;border-radius:15px;
  display:grid;place-items:center;
  background:#dcefeb;color:var(--fbi-deep);
  font-family:"Century Gothic","Avenir Next",Arial,sans-serif;
  font-size:1.15rem;font-weight:900;letter-spacing:.04em;
}
.profile-account-summary-copy{min-width:0}
.profile-account-summary-copy .portal-eyebrow{margin:0 0 2px}
.profile-account-summary-copy h1{margin:0;color:var(--fbi-deep);font-size:1.45rem;line-height:1.15}
.profile-account-summary-copy p:last-child{margin:.28rem 0 0;color:#61736e;font-size:.76rem}
.profile-account-summary-note{
  justify-self:end;
  max-width:360px;
  color:#60736e;
  font-size:.72rem;
  line-height:1.45;
}
.profile-dashboard-grid{
  display:grid;
  grid-template-columns:minmax(0,1.55fr) minmax(320px,.72fr);
  gap:16px;
  align-items:stretch;
}
.contributor-profile-card{margin:0!important;min-width:0}
.profile-main-card,.profile-security-card,.profile-affiliations-card{padding:20px!important}
.profile-main-card,.profile-security-card{height:100%}
.profile-security-card{position:static}
.profile-card-intro{margin:-4px 0 14px;color:#687a75;font-size:.75rem;line-height:1.45}
.profile-password-form{grid-template-columns:minmax(0,1fr)!important}
.profile-password-form .span-2{grid-column:1!important}
.profile-affiliations-card{width:100%}
.profile-membership-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px;margin-bottom:14px}
.profile-membership-form{border-top:1px solid #e1ece9;padding-top:14px}
.portal-batch-institution-creator{margin:0 18px 16px}
.portal-batch-institution-creator .portal-inline-institution-heading>div{display:grid;gap:2px}
.portal-batch-institution-creator .portal-inline-institution-heading small{color:#6b7d78;font-size:.65rem;font-weight:600}
.portal-create-missing-affiliation{display:inline-flex!important;margin-top:7px!important;padding:5px 8px!important;font-size:.64rem!important}
.course-membership-choice.is-newly-created{border-color:var(--fbi-teal)!important;background:#eefaf7!important;box-shadow:0 0 0 3px rgba(0,190,160,.10)}
@media(max-width:980px){
  .profile-dashboard-grid{grid-template-columns:1fr}
  .profile-security-card{position:static}
  .profile-account-summary{grid-template-columns:auto minmax(0,1fr)}
  .profile-account-summary-note{grid-column:1/-1;justify-self:start;max-width:none}
}
@media(max-width:620px){
  .profile-account-summary{grid-template-columns:1fr}
  .profile-account-avatar{width:46px;height:46px}
}

/* 2026-09-22 — institution batch curation + administrator fast-track */
.institution-template-actions{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.institution-batch-form{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:12px;align-items:end;padding:14px;border:1px solid #dce9e6;border-radius:14px;background:#f9fcfb}.institution-batch-form label{margin:0}.institution-batch-summary{margin-top:14px}.institution-batch-status{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:11px 13px;border-radius:12px;border:1px solid #dce9e6;background:#f8fbfa}.institution-batch-status.is-valid{border-color:#9dd9ca;background:#eefaf7;color:#155e4b}.institution-batch-status.is-error{border-color:#e2b4ba;background:#fff7f8;color:#8c2f39}.institution-batch-table-wrap{overflow:auto;margin-top:10px;border:1px solid #e1ece9;border-radius:13px}.institution-batch-table{width:100%;border-collapse:collapse;background:#fff}.institution-batch-table th,.institution-batch-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #edf3f1;vertical-align:top}.institution-batch-table th{background:#f4f9f8;color:#425159;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}.institution-batch-table td small{display:block;color:#6d7a77;margin-top:2px}.institution-batch-table tr.has-error{background:#fff9f9}.institution-batch-error{color:#8c2f39;font-size:.86rem;margin:2px 0}.fast-track-decision-block{border-color:#e4c96a;background:#fffdf4}.fast-track-badge{background:#fff2b8!important;color:#6b5510!important;border-color:#e4c96a!important}.revision-audit-note{margin:.35rem 0;color:#665922;font-size:.88rem}.revision-entry .revision-audit-note strong{color:#57480b}@media(max-width:700px){.institution-batch-form{grid-template-columns:1fr}.institution-batch-status{align-items:flex-start;flex-direction:column}}

/* 2026-09-22 — Maintenance & backups ----------------------------------- */
.maintenance-page{
  box-sizing:border-box;
  display:grid;
  gap:var(--portal-section-gap,18px);
  width:calc(100% - (2 * var(--portal-page-gutter,20px)));
  max-width:none;
  margin:var(--portal-section-gap,18px) var(--portal-page-gutter,20px) 3rem;
  padding:0;
}
.maintenance-page>.portal-section-heading{margin:0!important}
.maintenance-heading h1{color:#172f29}
.maintenance-messages{display:grid;gap:8px;margin:0}
.maintenance-message{border-radius:12px;padding:10px 12px;font-weight:750;background:#eef7f5;color:#164f42;border:1px solid #cce7e1}
.maintenance-message.is-error{background:#fff3f3;color:#842f38;border-color:#efc9cd}
.maintenance-card{box-sizing:border-box;background:#fff;border:1px solid var(--portal-card-border,#dbe7e4);border-radius:var(--portal-card-radius,15px);box-shadow:0 8px 24px rgba(16,64,53,.045);padding:var(--portal-card-pad-y,18px) var(--portal-card-pad-x,20px);min-width:0}
.maintenance-status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0}
.maintenance-status-card{display:grid;grid-template-rows:auto auto 1fr;gap:10px;min-height:132px}
.maintenance-status-card>span{font-size:.68rem;font-weight:850;color:#687a75;text-transform:uppercase;letter-spacing:.075em}
.maintenance-status-card strong{font-size:1.04rem;color:#104035;overflow-wrap:anywhere;align-self:center}
.maintenance-status-card small{align-self:end;color:#6f7d79;font-size:.72rem;line-height:1.38;overflow-wrap:anywhere}
.maintenance-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}
.maintenance-card-head h2{margin:.1rem 0 .25rem;color:#104035;font-family:"Century Gothic",system-ui,sans-serif;font-size:1.2rem}
.maintenance-card-head p{margin:.2rem 0;color:#65736f;line-height:1.45}

.maintenance-policy-head{align-items:center}
.maintenance-switch{display:inline-flex!important;align-items:center;gap:9px;min-height:38px;margin:0!important;padding:7px 11px;border:1px solid #dbe7e4;border-radius:999px;background:#f8fbfa;color:#294b43;font-size:.78rem;font-weight:780;white-space:nowrap}
.maintenance-switch input{width:auto!important;margin:0!important}
.maintenance-policy-form{display:grid;border-top:1px solid #e3ece9}
.maintenance-policy-group{display:grid;grid-template-columns:minmax(240px,1.2fr) minmax(300px,.8fr);gap:24px;align-items:center;padding:14px 0;border-bottom:1px solid #edf3f1}
.maintenance-policy-group-copy h3{margin:0 0 3px;color:#294b43;font-size:.9rem}
.maintenance-policy-group-copy p{margin:0;color:#6a7975;font-size:.75rem;line-height:1.4}
.maintenance-number-field{display:flex!important;align-items:center;justify-content:flex-end;gap:8px;margin:0!important;color:#556762;font-size:.75rem;font-weight:720}
.maintenance-number-field input{width:92px!important;margin:0!important;text-align:right}
.maintenance-retention-fields{display:grid;grid-template-columns:repeat(3,minmax(100px,1fr));gap:8px}
.maintenance-retention-fields label{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 7px;margin:0!important;padding:9px 10px;border:1px solid #e0ebe8;border-radius:11px;background:#f9fcfb;color:#566964;font-size:.7rem;font-weight:760}
.maintenance-retention-fields label>span{grid-column:1/-1}
.maintenance-retention-fields input{width:72px!important;margin:0!important;text-align:right}
.maintenance-retention-fields small{color:#75827f;font-size:.66rem;font-weight:650}
.maintenance-policy-footer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:14px}
.maintenance-policy-footer .field-help{margin:0;color:#6b7b77;font-size:.72rem;line-height:1.4}

.maintenance-create-form{display:grid;grid-template-columns:minmax(150px,.65fr) minmax(150px,.65fr) minmax(250px,1.3fr) minmax(210px,.9fr) auto;gap:10px;align-items:end}
.maintenance-create-form label{margin:0!important}
.maintenance-create-form select,.maintenance-create-form input{margin-top:.28rem}
.maintenance-protect{display:flex!important;align-items:center;gap:8px;min-height:40px;padding:5px 0;font-weight:700}
.maintenance-protect>input{width:auto!important;margin:0!important}
.maintenance-protect>span{display:grid;gap:1px}
.maintenance-protect strong{font-size:.75rem;color:#294b43}
.maintenance-protect small{font-size:.66rem;color:#72807c;font-weight:550;line-height:1.25}
.maintenance-create-form>.smallbtn{min-height:38px}

.maintenance-backup-list{display:grid;gap:10px}
.maintenance-backup-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;border:1px solid #dfeae7;border-radius:12px;padding:13px 14px;background:#fbfefd}
.maintenance-backup-row.is-protected{border-color:#9bd8c9;background:#f5fcfa}
.maintenance-backup-identity{display:grid;gap:4px;min-width:0}
.maintenance-backup-identity strong{overflow-wrap:anywhere;color:#233832}
.maintenance-backup-identity small{color:#6e7b78}
.maintenance-backup-identity p{margin:3px 0 0;color:#4f625d}
.maintenance-backup-badges{display:flex;gap:5px;flex-wrap:wrap}
.maintenance-protected-badge{background:#e3f5ef!important;color:#17634f!important}
.maintenance-backup-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}
.maintenance-backup-actions form{margin:0}
.maintenance-restore-details{position:relative}
.maintenance-restore-details>summary{list-style:none;cursor:pointer}
.maintenance-restore-details>summary::-webkit-details-marker{display:none}
.maintenance-restore-details[open] form{position:absolute;right:0;top:calc(100% + 7px);z-index:30;width:min(370px,80vw);padding:14px;border:1px solid #e2c7ca;border-radius:14px;background:#fff;box-shadow:0 14px 34px rgba(43,33,35,.18);display:grid;gap:10px}
.maintenance-restore-details form p{margin:0;color:#62484c;line-height:1.4}
.maintenance-restore-details form label{font-size:.82rem;font-weight:800;color:#564447}

.maintenance-scheduler-card{padding:0;overflow:visible}
.maintenance-scheduler-card>summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px var(--portal-card-pad-x,20px);cursor:pointer;list-style:none}
.maintenance-scheduler-card>summary::-webkit-details-marker{display:none}
.maintenance-scheduler-card>summary>span:first-child{display:grid;gap:3px}
.maintenance-scheduler-card>summary .portal-eyebrow{margin:0;color:#687a75;font-size:.66rem;font-weight:850;letter-spacing:.075em;text-transform:uppercase}
.maintenance-scheduler-card>summary strong{color:#294b43;font-size:.84rem}
.maintenance-disclosure{color:#517067;font-size:.7rem;font-weight:750}
.maintenance-scheduler-card[open] .maintenance-disclosure{font-size:0}
.maintenance-scheduler-card[open] .maintenance-disclosure::after{content:'Hide technical details';font-size:.7rem}
.maintenance-scheduler-body{padding:0 var(--portal-card-pad-x,20px) 16px;border-top:1px solid #edf3f1}
.maintenance-scheduler-body>p{margin:12px 0;color:#65736f;line-height:1.45}
.maintenance-scheduler-body>code{display:block;margin:12px 0;padding:12px 14px;border-radius:10px;background:#12231f;color:#eaf5f2;overflow:auto}
.maintenance-scheduler-body .field-help code{display:inline;margin:0;padding:2px 5px;background:#edf5f3;color:#233832}

@media(max-width:1180px){
  .maintenance-status-grid{grid-template-columns:1fr 1fr}
  .maintenance-create-form{grid-template-columns:1fr 1fr}
  .maintenance-note{grid-column:1/-1}
  .maintenance-protect{grid-column:1/2}
  .maintenance-create-form>.smallbtn{justify-self:end}
  .maintenance-backup-row{grid-template-columns:1fr}
  .maintenance-backup-actions{justify-content:flex-start}
}
@media(max-width:820px){
  .maintenance-policy-group{grid-template-columns:1fr;gap:10px}
  .maintenance-number-field{justify-content:flex-start}
  .maintenance-policy-head{align-items:flex-start;flex-direction:column}
  .maintenance-retention-fields{grid-template-columns:1fr 1fr 1fr}
}
@media(max-width:650px){
  .maintenance-page{width:calc(100% - (2 * var(--portal-page-gutter,12px)));margin-left:var(--portal-page-gutter,12px);margin-right:var(--portal-page-gutter,12px)}
  .maintenance-status-grid,.maintenance-create-form{grid-template-columns:1fr}
  .maintenance-note,.maintenance-protect{grid-column:auto}
  .maintenance-create-form>.smallbtn{justify-self:stretch;width:100%}
  .maintenance-retention-fields{grid-template-columns:1fr}
  .maintenance-policy-footer{align-items:flex-start;flex-direction:column}
  .maintenance-policy-footer .smallbtn{width:100%}
  .maintenance-backup-actions{align-items:stretch}
  .maintenance-backup-actions>*{flex:1 1 auto}
  .maintenance-backup-actions .smallbtn{width:100%;text-align:center}
  .maintenance-restore-details[open] form{left:0;right:auto}
  .maintenance-scheduler-card>summary{align-items:flex-start;flex-direction:column;gap:6px}
}

/* 2026-09-22 — centralised course sheet credits ------------------------- */
.course-sheet-credit-summary{margin:1.35rem 0 1rem;padding-top:1.05rem;border-top:1px solid var(--border,#d9e4df)}
.course-sheet-credit-heading{margin-bottom:.72rem}
.course-sheet-credit-heading .portal-eyebrow{margin-bottom:.16rem;font-size:.68rem;letter-spacing:.12em}
.course-sheet-credit-heading h4{margin:0;font-size:.98rem;line-height:1.18}
.course-sheet-credit-heading>p:last-child{max-width:43rem;margin:.28rem 0 0;color:var(--muted,#66736e);font-size:.76rem;line-height:1.42}
.course-sheet-credit-list{display:flex;flex-direction:column;gap:.68rem}
.course-sheet-credit-family{border:1px solid var(--border,#d9e4df);border-radius:13px;background:var(--surface,#fff);overflow:hidden;box-shadow:0 1px 2px rgba(20,55,44,.03)}
.course-sheet-credit-card{padding:.72rem .82rem}
.course-sheet-credit-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;margin-bottom:.58rem}
.course-sheet-credit-sheet{min-width:0}
.course-sheet-credit-refline{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem .5rem;margin-bottom:.12rem}
.course-sheet-credit-reference{font-size:.72rem;line-height:1.2;font-weight:760;letter-spacing:.015em;color:var(--brand-strong,#174f42)}
.course-sheet-credit-title{display:block;font-size:.83rem;line-height:1.28;font-weight:650;color:var(--text,#20312c)}
.course-sheet-credit-meta{font-size:.66rem;line-height:1.2;color:var(--muted,#66736e)}
.course-sheet-credit-people{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:.42rem .52rem}
.course-sheet-credit-person{min-width:0;padding:.42rem .48rem;border:1px solid color-mix(in srgb,var(--border,#d9e4df) 75%,transparent);border-radius:9px;background:color-mix(in srgb,var(--surface,#fff) 96%,var(--brand-soft,#e7f4ef));line-height:1.22}
.course-sheet-credit-person-main{display:flex;align-items:flex-start;justify-content:space-between;gap:.35rem}
.course-sheet-credit-person strong{min-width:0;font-size:.76rem;line-height:1.22;font-weight:680;color:var(--text,#20312c)}
.course-sheet-credit-person small{display:block;margin-top:.16rem;color:var(--muted,#66736e);font-size:.64rem;line-height:1.28;overflow-wrap:anywhere}
.course-sheet-credit-role-list{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.18rem;flex:0 0 auto}
.course-sheet-credit-role{display:inline-flex;align-items:center;min-height:1.18rem;padding:.08rem .3rem;border-radius:999px;background:var(--brand-soft,#e7f4ef);color:var(--brand-strong,#174f42);font-size:.57rem;font-weight:700;line-height:1;white-space:nowrap}
.course-sheet-supporting-credits{border-top:1px solid var(--border,#d9e4df);background:color-mix(in srgb,var(--surface,#fff) 97%,var(--brand-soft,#e7f4ef))}
.course-sheet-supporting-credits>summary{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.48rem .82rem;cursor:pointer;list-style:none;color:var(--muted,#66736e);font-size:.7rem;font-weight:650;user-select:none}
.course-sheet-supporting-credits>summary::-webkit-details-marker{display:none}
.course-sheet-supporting-credits>summary::before{content:'›';display:inline-block;margin-right:.15rem;color:var(--brand-strong,#174f42);font-size:.95rem;line-height:1;transition:transform .15s ease}
.course-sheet-supporting-credits[open]>summary::before{transform:rotate(90deg)}
.course-sheet-supporting-credits>summary span{margin-right:auto}
.course-sheet-supporting-credits>summary small{display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;height:1.15rem;padding:0 .3rem;border-radius:999px;background:var(--surface,#fff);border:1px solid var(--border,#d9e4df);font-size:.6rem}
.course-sheet-supporting-list{display:flex;flex-direction:column;gap:.42rem;padding:0 .6rem .6rem}
.course-sheet-credit-card.is-supporting{padding:.56rem .62rem;border:1px solid var(--border,#d9e4df);border-radius:10px;background:var(--surface,#fff)}
.course-sheet-credit-card.is-supporting .course-sheet-credit-reference{font-size:.68rem;font-weight:700}
.course-sheet-credit-card.is-supporting .course-sheet-credit-title{font-size:.77rem}
.course-sheet-credit-card.is-supporting .course-sheet-credit-people{grid-template-columns:repeat(auto-fit,minmax(165px,1fr))}
.course-sheet-credit-card.is-supporting .course-sheet-credit-person{padding:.36rem .42rem}
@media(max-width:800px){.course-sheet-credit-people,.course-sheet-credit-card.is-supporting .course-sheet-credit-people{grid-template-columns:1fr}.course-sheet-credit-person-main{align-items:flex-start}.course-sheet-credit-role-list{max-width:48%}}

/* 2026-09-23 — explicit retroactive affiliation correction for published credits */
.profile-credit-affiliation-panel{margin-top:18px;padding-top:18px;border-top:1px solid #e1ece9}
.profile-credit-affiliation-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}
.profile-credit-affiliation-heading h3{margin:.08rem 0 .28rem;color:#104035;font-size:1rem;line-height:1.2}
.profile-credit-affiliation-heading>div>p:last-child{max-width:760px;margin:0;color:#687a75;font-size:.75rem;line-height:1.45}
.profile-credit-affiliation-form{display:grid;gap:14px}
.profile-credit-affiliation-form fieldset{margin:0;padding:13px 14px 14px;border:1px solid #dce9e6;border-radius:12px;background:#fbfdfc}
.profile-credit-affiliation-form legend{padding:0 5px;color:#425751;font-size:.72rem;font-weight:800}
.profile-credit-choice-grid,.profile-credit-role-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(235px,1fr));gap:9px}
.profile-credit-choice-grid label,.profile-credit-role-grid label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:flex-start;margin:0;padding:10px 11px;border:1px solid #dfeae7;border-radius:10px;background:#fff;cursor:pointer}
.profile-credit-choice-grid input,.profile-credit-role-grid input{width:auto!important;min-width:auto!important;margin:.16rem 0 0!important;padding:0!important}
.profile-credit-choice-grid span,.profile-credit-role-grid span{min-width:0;display:grid;gap:2px}
.profile-credit-choice-grid strong,.profile-credit-role-grid strong{color:#203b34;font-size:.76rem;line-height:1.25}
.profile-credit-choice-grid small,.profile-credit-role-grid small{color:#6b7a76;font-size:.65rem;line-height:1.32}
.profile-credit-affiliation-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 13px;border-radius:12px;background:#f2f8f6;border:1px solid #d8e7e3}
.profile-credit-affiliation-actions p{max-width:760px;margin:0;color:#60736e;font-size:.69rem;line-height:1.42}
.profile-credit-affiliation-actions .smallbtn{flex:0 0 auto}
.profile-credit-affiliation-message{min-height:1.15rem;color:#60736e;font-size:.72rem;font-weight:700}
.profile-credit-affiliation-message.is-success{color:#14604c}.profile-credit-affiliation-message.is-error{color:#8c2f39}
.profile-credit-empty{margin:.25rem 0 0}
@media(max-width:720px){.profile-credit-affiliation-heading,.profile-credit-affiliation-actions{flex-direction:column;align-items:stretch}.profile-credit-choice-grid,.profile-credit-role-grid{grid-template-columns:1fr}.profile-credit-affiliation-actions .smallbtn{align-self:flex-start}}

/* 2026-09-23 — unified segmented navigation + visible sheet editorial credits.
   Knowledge Books and Courses use one pill geometry so navigation controls no
   longer change size or alignment from one workspace to another. */
.explorer-controls{
  display:grid!important;
  gap:var(--portal-section-gap)!important;
}
/* Keep workspace-specific controls out of unrelated views. The explicit
   !important is required because the explorer layout itself is forced to grid. */
.explorer-controls.hidden{display:none!important}
.explorer-controls>.knowledge-book-search{margin-top:0!important}
.portal-segmented-nav{
  box-sizing:border-box!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:4px!important;
  width:max-content!important;
  max-width:100%!important;
  margin:0 auto!important;
  padding:4px!important;
  border:1px solid var(--fbi-border)!important;
  border-radius:999px!important;
  background:#f6faf9!important;
}
.portal-segmented-nav>.portal-segmented-nav-button{
  box-sizing:border-box!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  min-width:164px!important;
  min-height:34px!important;
  margin:0!important;
  padding:8px 15px!important;
  border:0!important;
  border-radius:999px!important;
  background:transparent!important;
  color:#31544c!important;
  font-family:"Century Gothic","Avenir Next",Arial,sans-serif!important;
  font-size:.78rem!important;
  font-weight:750!important;
  line-height:1.15!important;
  text-align:center!important;
  box-shadow:none!important;
  cursor:pointer!important;
}
.portal-segmented-nav>.portal-segmented-nav-button:hover{
  background:#eaf4f1!important;
  color:var(--fbi-deep)!important;
}
.portal-segmented-nav>.portal-segmented-nav-button.active,
.portal-segmented-nav>.portal-segmented-nav-button.is-active,
.portal-segmented-nav>.portal-segmented-nav-button[aria-selected="true"]{
  background:var(--fbi-deep)!important;
  color:#fff!important;
  box-shadow:0 1px 2px rgba(16,64,53,.12)!important;
}
#courses .courses-section-tabs.portal-segmented-nav{margin:0 auto!important}

.sheet-card-creditline{
  display:flex;
  flex-wrap:wrap;
  gap:4px 14px;
  margin:.62rem 0 .48rem;
  padding:.55rem .65rem;
  border:1px solid #e0ebe8;
  border-radius:9px;
  background:var(--fbi-softest);
  color:#536864;
  font-size:.76rem;
  line-height:1.35;
}
.sheet-card-creditline span{min-width:0;overflow-wrap:anywhere}
.sheet-card-creditline strong{color:var(--fbi-deep)}

@media(max-width:520px){
  .portal-segmented-nav{width:100%!important}
  .portal-segmented-nav>.portal-segmented-nav-button{min-width:0!important;flex:1 1 0}
}

/* 2026-09-23 · programme/session builder + typography harmonisation */
.course-builder-layout,
.course-outline-panel,
.course-source-panel,
.course-library-panel{font-size:13px}
.course-builder-layout .course-muted,
.course-builder-layout .field-help,
.course-builder-layout small{font-size:12px;line-height:1.35}
.course-builder-layout h3{font-size:16px}
.course-builder-layout h4{font-size:14px}
.course-builder-layout label,
.course-builder-layout summary{font-size:12.5px}

.programme-workspace{width:100%}
.programme-section-tabs{margin:14px auto 16px}
.programme-panel{margin:0 32px 28px}
.programme-section-heading{margin-bottom:12px}
.programme-catalogue-searchbar{border:1px solid var(--line,#cfe0dc);border-radius:12px;padding:12px;background:var(--soft,#f7fbfa);margin-bottom:12px}
.programme-catalogue-searchbar label{display:grid;gap:5px;font-size:12px;font-weight:700}
.programme-catalogue-searchbar input{width:100%}
.programme-featured-section,.programme-category-panel{border:1px solid var(--line,#cfe0dc);border-radius:14px;padding:14px;margin:0 0 14px;background:#fbfdfc}
.programme-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:12px}
.programme-card{display:grid;grid-template-columns:82px minmax(0,1fr);gap:12px;border:1px solid var(--line,#cfe0dc);border-radius:13px;padding:12px;background:#fff;min-height:178px}
.programme-card-cover{width:82px;height:82px;border:1px solid var(--line,#cfe0dc);border-radius:10px;background:linear-gradient(145deg,#eff8f6,#f8fbfa);display:grid;place-items:center;font-size:30px;font-weight:800;color:#587c72;overflow:hidden}
.programme-card-cover img{width:100%;height:100%;object-fit:cover}
.programme-card-body{min-width:0;display:flex;flex-direction:column;gap:7px}
.programme-card-body h3{font-size:15px;margin:0;color:var(--ink,#113f35)}
.programme-card-body p{font-size:12.5px;line-height:1.4;margin:0;color:#405b55}
.programme-card-meta,.programme-card-categories,.programme-card-stats{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.programme-card-stats{font-size:11.5px;color:#526b65;margin-top:auto}
.programme-card-stats span+span:before{content:'·';margin-right:6px}
.programme-card footer{display:flex;gap:6px;flex-wrap:wrap;margin-top:3px}

.programme-builder-layout{display:grid;grid-template-columns:245px minmax(0,1fr);border:1px solid var(--line,#cfe0dc);border-radius:14px;overflow:hidden;min-height:650px;background:#fff}
.programme-library-panel{padding:14px;border-right:1px solid var(--line,#cfe0dc);background:#fbfdfc}
.programme-library-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:12px}
.programme-library-head h2,.programme-builder-head h2{font-size:17px;margin:2px 0 0}
.programme-library-list{display:grid;gap:7px}
.programme-library-item{display:grid;width:100%;text-align:left;gap:4px;border:1px solid var(--line,#cfe0dc);background:#fff;border-radius:10px;padding:9px 10px;color:inherit;cursor:pointer}
.programme-library-item strong{font-size:12.5px;color:var(--ink,#113f35)}
.programme-library-item span{font-size:11.5px;color:#657a75}
.programme-library-item.active{border-color:#179b83;background:#edf8f5;box-shadow:inset 3px 0 #179b83}
.programme-builder-panel{padding:14px;min-width:0}
.programme-builder-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding-bottom:12px;border-bottom:1px solid var(--line,#cfe0dc)}
.programme-builder-head p{margin:3px 0 0;font-size:12.5px}
.programme-builder-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.programme-details,.programme-collaboration-details{border:1px solid var(--line,#cfe0dc);border-radius:10px;margin-top:10px;background:#fbfdfc}
.programme-details summary,.programme-collaboration-details summary{padding:9px 11px;font-size:12.5px;font-weight:800;color:#234d43;cursor:pointer}
.programme-metadata-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0 11px 11px}
.programme-metadata-grid label{display:grid;gap:4px;font-size:12px;font-weight:700;color:#35574f}
.programme-metadata-grid label.wide{grid-column:1/-1}
.programme-metadata-grid textarea{min-height:72px;resize:vertical}
.programme-metadata-grid select[multiple]{min-height:86px}
.programme-publish-toggle{display:flex!important;grid-column:1/-1;align-items:center;gap:7px!important}
.programme-collaboration-grid{padding:0 11px 11px;display:grid;gap:8px}
.programme-collaborator-list{display:flex;gap:6px;flex-wrap:wrap}
.programme-collaborator{display:flex;gap:6px;align-items:center;border:1px solid var(--line,#cfe0dc);border-radius:999px;padding:5px 9px;background:#fff;font-size:11.5px}
.programme-collaborator span{color:#60746f}
.programme-collaborator-add{display:grid;grid-template-columns:1fr 150px auto;gap:7px}
.programme-resource-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;border:1px solid var(--line,#cfe0dc);border-radius:10px;padding:10px;margin-top:10px;background:#f4faf8}
.programme-resource-toolbar>div:first-child{display:grid;gap:3px}
.programme-resource-toolbar strong{font-size:13px}
.programme-resource-toolbar span{font-size:11.5px;color:#58716b}
.programme-add-actions{display:flex;gap:6px;flex-wrap:wrap}
.programme-resource-picker{display:grid;grid-template-columns:minmax(180px,1fr) auto minmax(180px,1fr) auto;gap:7px;align-items:end;margin:9px 0}
.programme-resource-picker label{display:grid;gap:4px;font-size:11.5px;font-weight:700}
.programme-tree{display:grid;gap:5px;min-height:80px;border:1px dashed #9dcfc5;border-radius:10px;padding:8px;background:#fcfefe}
.programme-tree-row{margin-left:calc(var(--programme-depth,0) * 24px);display:grid;grid-template-columns:24px 26px minmax(0,1fr) auto;gap:7px;align-items:center;border:1px solid var(--line,#cfe0dc);border-left:4px solid #68c7b6;border-radius:9px;padding:7px;background:#fff;transition:opacity .15s,transform .15s}
.programme-tree-row.type-section{border-left-color:#0f5c4d;background:#f2f8f6}
.programme-tree-row.type-intervention{border-left-color:#20a78d}
.programme-tree-row.type-sheet{border-left-color:#6aa9ce}
.programme-tree-row.type-course{border-left-color:#9a83d3}
.programme-tree-row.type-gap{border-left-color:#d19b55;background:#fffaf2}
.programme-tree-row.dragging{opacity:.45;transform:scale(.995)}
.programme-drag-handle{border:0;background:transparent;color:#718781;cursor:grab;padding:2px;font-size:14px}
.programme-node-icon{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#edf6f4;font-size:11px;font-weight:800;color:#23584d}
.programme-node-main{display:grid;gap:2px;min-width:0}
.programme-node-main strong{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.programme-node-main span,.programme-node-main small{font-size:11.5px;color:#61766f}
.programme-node-actions{display:flex;gap:3px}
.programme-node-actions button{border:1px solid var(--line,#cfe0dc);border-radius:6px;background:#fff;min-width:27px;height:27px;font-size:11px;cursor:pointer}
.programme-course-link{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,420px);gap:12px;align-items:center;border:1px solid var(--line,#cfe0dc);border-radius:10px;padding:10px;margin-top:10px}
.programme-course-link p{margin:2px 0;font-size:11.5px}

.programme-preview-backdrop{position:fixed;inset:0;background:rgba(5,25,20,.45);z-index:9999;display:grid;place-items:center;padding:28px}
.programme-preview-modal{width:min(900px,96vw);max-height:90vh;overflow:auto;background:#fff;border-radius:16px;padding:18px;box-shadow:0 25px 70px rgba(0,0,0,.25)}
.programme-preview-modal header{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line,#cfe0dc);padding-bottom:12px}
.programme-preview-modal h2{margin:2px 0 5px}.programme-preview-modal p{margin:0;font-size:13px;color:#4c625d}
.programme-preview-meta{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}
.programme-preview-tree{display:grid;gap:5px}
.programme-preview-node{margin-left:calc(var(--programme-depth,0) * 24px);display:grid;grid-template-columns:25px minmax(0,1fr);gap:7px;align-items:start;border:1px solid var(--line,#cfe0dc);border-radius:8px;padding:7px 9px;background:#fff}
.programme-preview-node>span{font-size:11px;font-weight:800;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#edf6f4}
.programme-preview-node>div{display:grid;gap:2px}.programme-preview-node strong{font-size:12.5px}.programme-preview-node small{font-size:11.5px;color:#60746f}
.programme-node-gap{background:#fffaf2}

.session-workspace-layout{display:grid;grid-template-columns:270px minmax(0,1fr);gap:12px}
.session-workspace-layout>aside,.session-workspace-layout>section{border:1px solid var(--line,#cfe0dc);border-radius:12px;padding:12px;background:#fff}
.training-session-detail{display:grid;gap:10px}.training-session-header{display:flex;justify-content:space-between;gap:12px}.training-session-header h3{margin:2px 0;font-size:17px}.training-session-header p{margin:0;font-size:12.5px;color:#59706a}.training-session-meta{display:flex;gap:6px;flex-wrap:wrap}
.session-participant-panel{border:1px solid var(--line,#cfe0dc);border-radius:9px;padding:8px}.session-participant-panel summary{font-size:12.5px;font-weight:800;cursor:pointer}.session-participant-add{display:grid;grid-template-columns:1fr 1fr 1.3fr 1fr auto;gap:6px;margin:8px 0}

@media(max-width:900px){.programme-panel{margin-left:16px;margin-right:16px}.programme-builder-layout,.session-workspace-layout{grid-template-columns:1fr}.programme-library-panel{border-right:0;border-bottom:1px solid var(--line,#cfe0dc)}.programme-metadata-grid{grid-template-columns:1fr}.programme-resource-picker{grid-template-columns:1fr auto}.programme-course-link{grid-template-columns:1fr}.session-participant-add{grid-template-columns:1fr}.programme-card{grid-template-columns:70px minmax(0,1fr)}.programme-card-cover{width:70px;height:70px}}

/* Global Search: Sheets · Courses · Programmes */
.global-search-command{border:1px solid var(--line,#cfe0dc);border-radius:14px;padding:14px;background:#fbfdfc;margin-bottom:14px}
.global-search-command>label{display:block;font-size:12px;font-weight:800;margin-bottom:5px;color:#35574f}
.global-search-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.global-search-tabs{margin:12px auto 0}
.global-search-results{display:grid;gap:14px}
.global-result-group{border:1px solid var(--line,#cfe0dc);border-radius:14px;padding:14px;background:#fff}
.global-search-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px}
.global-search-card{display:flex;flex-direction:column;gap:7px;border:1px solid var(--line,#cfe0dc);border-radius:11px;padding:11px;background:#fbfdfc;min-height:155px}
.global-search-card h3{font-size:14px;margin:0;color:var(--ink,#113f35)}
.global-search-card p:not(.portal-eyebrow){font-size:12.5px;line-height:1.4;margin:0;color:#506762}
.global-search-card small{font-size:11.5px;color:#61746f;margin-top:auto}
.global-search-card .smallbtn{align-self:flex-start}
.global-category-filter{display:flex;justify-content:flex-end;margin:0 0 10px}.global-category-filter label{display:grid;gap:4px;font-size:12px;font-weight:700;min-width:260px}
.sheet-search-result-card.compact{margin-bottom:8px}
.programme-node-trainer{display:flex;align-items:center;gap:5px;font-size:11px!important;font-weight:700;color:#5c726c;margin-top:2px}.programme-node-trainer select{font-size:11px;min-height:26px;padding:3px 6px;max-width:230px}
.session-structure-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:flex-end;border:1px solid var(--line,#cfe0dc);border-radius:10px;padding:10px;background:#f4faf8}.session-structure-toolbar>div:first-child{display:grid;gap:2px}.session-structure-toolbar span{font-size:11.5px;color:#5d726d}.session-structure-toolbar>div:last-child{display:flex;gap:6px;flex-wrap:wrap}.session-resource-picker{margin-top:0}

/* 2026-09-24 · Programme builder v2: metadata/structure tabs + timetable hierarchy */
.programme-builder-tabs{margin:14px auto 16px;min-width:360px;max-width:520px}
.programme-builder-tabpanel{display:grid;gap:14px}
.programme-details-card{border:1px solid var(--line,#cfe0dc);border-radius:12px;background:#fbfdfc;padding:14px}
.programme-details-card .section-heading{margin:0 0 10px}
.programme-details-card .section-heading h3{font-size:16px;margin:1px 0 2px}
.programme-details-card .section-heading p{font-size:12.5px}
.programme-metadata-grid label,.programme-collaboration-grid,.programme-course-link{font-size:12.5px}
.programme-metadata-grid input,.programme-metadata-grid select,.programme-metadata-grid textarea,.programme-collaborator-add select{font-size:13px}
.programme-structure-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;border:1px solid var(--line,#cfe0dc);border-radius:12px;padding:14px;background:#f4faf8;margin-bottom:12px}
.programme-structure-head h3{font-size:17px;margin:2px 0 3px}.programme-structure-head p{font-size:12.5px;margin:0}
.programme-structure-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.programme-timetable-tree{border:0;padding:0;background:transparent;display:block;min-height:180px}
.programme-day-list{display:grid;gap:14px}
.programme-day-node{border:1px solid #badbd4;border-radius:13px;background:#fff;overflow:hidden;box-shadow:0 5px 18px rgba(12,75,61,.04)}
.programme-day-head{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:9px;align-items:center;padding:11px 12px;background:#eaf6f3;border-bottom:1px solid #cde4df}
.programme-day-head h4{font-size:15px;margin:1px 0;color:var(--ink,#113f35)}
.programme-day-head .portal-eyebrow{font-size:10.5px;margin:0}
.programme-day-items{display:grid;gap:9px;padding:10px;min-height:54px}
.programme-intervention-node{border:1px solid #c9dfda;border-left:4px solid #178f79;border-radius:11px;background:#fbfdfc;overflow:hidden}
.programme-intervention-node>header{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:8px;align-items:start;padding:9px 10px}
.programme-intervention-title{display:grid;gap:3px;min-width:0}.programme-intervention-title>strong{font-size:13.5px;color:#174a3f}.programme-intervention-title>small{font-size:12px;color:#60756f}
.programme-intervention-time{display:inline-flex;width:max-content;border-radius:999px;background:#e5f4f0;color:#175949;padding:2px 7px;font-size:11px;font-weight:800;letter-spacing:.01em}
.programme-trainer-picker{margin-top:4px;max-width:520px}.programme-trainer-picker summary{cursor:pointer;font-size:11.5px;font-weight:700;color:#45655d}.programme-trainer-picker>div{display:flex;flex-wrap:wrap;gap:5px 10px;padding:7px 0 2px}.programme-trainer-picker label{font-size:11.5px;font-weight:600;display:flex;align-items:center;gap:4px}
.programme-break-node{display:grid;grid-template-columns:20px auto minmax(0,1fr) auto;gap:8px;align-items:center;border:1px dashed #d3c39f;border-radius:10px;background:#fffaf2;padding:8px 10px}.programme-break-node>strong{font-size:12.5px}
.programme-section-list{display:grid;gap:7px;padding:0 10px 10px 34px}.programme-section-node{border:1px solid #d4e4e0;border-radius:9px;background:#fff}.programme-section-node>header{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:7px;align-items:center;padding:7px 8px;background:#f6faf9}.programme-section-node>header strong{font-size:12.5px}.programme-section-node>header small{display:block;font-size:11.5px;color:#647872;margin-top:2px}
.programme-direct-resources{padding:0 10px 7px 34px}.programme-resource-list{display:grid;gap:5px;min-height:3px}.programme-section-node>.programme-resource-list{padding:7px 8px 8px 26px}
.programme-resource-node{display:grid;grid-template-columns:18px 23px minmax(0,1fr) auto;gap:6px;align-items:center;border:1px solid #d8e6e3;border-radius:8px;background:#fff;padding:6px 7px}.programme-resource-node.type-sheet{border-left:3px solid #6aa9ce}.programme-resource-node.type-course{border-left:3px solid #9a83d3}.programme-resource-node.type-gap{border-left:3px solid #d19b55;background:#fffaf2}.programme-resource-node .programme-node-main strong{font-size:12px}.programme-resource-selections{display:flex;flex-wrap:wrap;gap:4px;margin-top:3px}.programme-resource-selection{display:inline-flex;border:1px solid #cfe2de;border-radius:999px;background:#f1f8f6;padding:1px 6px;font-size:10.5px;color:#45665e}.programme-resource-selection.missing{border-color:#e4cda9;background:#fff7e9;color:#75562d}
.programme-node-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.programme-node-actions button{border:1px solid #c9ded9;border-radius:7px;background:#fff;color:#23584d;font-size:10.5px;font-weight:700;padding:4px 6px;cursor:pointer}.programme-node-actions button:hover{background:#edf7f4}
.programme-drag-handle{cursor:grab;color:#6e8580;font-size:13px;user-select:none}.dragging{opacity:.45}
.programme-inline-empty{font-size:11.5px;color:#78908a;padding:6px 8px;border:1px dashed #d6e4e1;border-radius:8px;background:#fcfefe}
.programme-legacy-warning{display:flex;gap:10px;align-items:center;margin-top:12px;border:1px solid #e3cda7;border-radius:10px;background:#fff9ee;padding:9px 11px;font-size:11.5px;color:#6f5734}.programme-legacy-warning strong{font-size:12px;white-space:nowrap}
.programme-resource-dialog{width:min(900px,calc(100vw - 40px));border:0;border-radius:15px;padding:0;box-shadow:0 25px 70px rgba(0,0,0,.25)}.programme-resource-dialog::backdrop{background:rgba(8,34,29,.38)}.programme-resource-dialog-card{padding:16px}.programme-resource-dialog-card>header{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;border-bottom:1px solid var(--line,#cfe0dc);padding-bottom:11px;margin-bottom:12px}.programme-resource-dialog-card h3{font-size:18px;margin:1px 0}.programme-resource-dialog-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:14px}.programme-resource-dialog-grid>section{border:1px solid var(--line,#cfe0dc);border-radius:11px;padding:11px;display:grid;gap:9px;align-content:start}.programme-resource-dialog-grid label{display:grid;gap:4px;font-size:12px;font-weight:700}
.programme-sheet-components{display:grid;gap:6px;border:1px solid #d6e6e2;border-radius:9px;background:#fbfdfc;padding:8px}.programme-sheet-components>label{display:flex;grid-template-columns:none;align-items:flex-start;gap:7px;border-bottom:1px solid #e4eeec;padding:5px 3px}.programme-sheet-components>label:last-child{border-bottom:0}.programme-sheet-components label span{display:grid;gap:1px}.programme-sheet-components label strong{font-size:11.5px}.programme-sheet-components label small{font-size:10.5px;color:#647a74;font-weight:500}.programme-component-main{background:#f1f8f6;border-radius:6px}.programme-resource-presets{display:flex;gap:5px;flex-wrap:wrap}.programme-missing-resource{border-top:1px solid #e2ebe8;margin-top:6px;padding-top:10px}.programme-missing-resource strong{font-size:12px}.programme-missing-resource p{font-size:11.5px;color:#60756f}
@media(max-width:900px){.programme-structure-head{display:grid}.programme-resource-dialog-grid{grid-template-columns:1fr}.programme-builder-tabs{min-width:0;width:100%}.programme-day-head,.programme-intervention-node>header{grid-template-columns:18px minmax(0,1fr)}.programme-day-head .programme-node-actions,.programme-intervention-node>header .programme-node-actions{grid-column:2}.programme-section-list,.programme-direct-resources{padding-left:14px}}

/* Programme builder V3: true panels, inline timetable editing and trainer directory. */
.programme-builder-tabpanel.hidden{display:none!important}
.programme-builder-tabpanel:not(.hidden){display:grid}
.programme-collaborator-add{align-items:start}
.programme-user-search{position:relative;min-width:0}
.programme-user-search>input{width:100%;font-size:13px;min-height:34px}
.programme-user-results{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 4px);max-height:260px;overflow:auto;border:1px solid var(--line,#cfe0dc);border-radius:9px;background:#fff;box-shadow:0 12px 30px rgba(29,70,61,.15);padding:5px}
.programme-user-results.hidden{display:none!important}
.programme-user-results button{display:flex;width:100%;border:0;background:#fff;border-radius:7px;padding:7px 9px;text-align:left;align-items:center;justify-content:space-between;gap:10px;color:#234d43;cursor:pointer;font-size:12px}
.programme-user-results button:hover{background:#edf7f4}
.programme-user-results button span{color:#71847f;font-size:11px}
.programme-inline-editor{margin:8px 10px 10px 42px;padding:10px;border:1px solid #9fd3c9;border-radius:9px;background:#f7fbfa;display:grid;gap:9px}
.programme-inline-editor-grid{display:grid;grid-template-columns:minmax(0,1fr) 120px 120px;gap:8px;align-items:end}
.programme-inline-editor-grid label,.programme-inline-trainers>span{font-size:11.5px;font-weight:800;color:#315b52}
.programme-inline-editor-grid label.wide{grid-column:1/-1}
.programme-inline-editor input,.programme-inline-editor textarea{width:100%;font-size:13px;margin-top:4px;min-height:33px}
.programme-inline-editor textarea{min-height:62px;resize:vertical}
.programme-inline-editor-actions{display:flex;gap:7px;justify-content:flex-end}
.programme-inline-trainers{display:grid;gap:5px}
.programme-inline-trainers>div{display:flex;gap:6px;flex-wrap:wrap}
.programme-inline-trainers label{display:inline-flex;gap:5px;align-items:center;border:1px solid #cfe2de;border-radius:999px;background:#fff;padding:4px 8px;font-size:11.5px;font-weight:700;color:#315b52;cursor:pointer}
.programme-inline-trainers input{width:auto;min-height:0;margin:0}
.programme-trainer-badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:3px}
.programme-trainer-badge{display:inline-flex;border-radius:999px;background:#eaf6f3;border:1px solid #c7e1db;padding:2px 7px;font-size:10.5px;font-weight:700;color:#35675c}
.programme-trainers-empty{font-size:10.5px;color:#80918c;margin-top:2px}
.programme-break-node{border:1px dashed #dfc89e;border-radius:9px;background:#fffaf2;padding:0}
.programme-break-summary{display:grid;grid-template-columns:22px 92px minmax(0,1fr) auto;gap:7px;align-items:center;padding:7px}
.programme-missing-resource label{display:grid;gap:4px;font-size:11px;font-weight:800;color:#315b52;margin:8px 0}
.programme-missing-resource input{width:100%;font-size:12.5px}
@media(max-width:900px){.programme-inline-editor-grid{grid-template-columns:1fr 1fr}.programme-inline-editor-grid .wide{grid-column:1/-1}.programme-inline-editor{margin-left:8px}.programme-break-summary{grid-template-columns:22px 80px minmax(0,1fr)}.programme-break-summary .programme-node-actions{grid-column:2/-1}}

/* Programme builder V3b: time controls, break summaries and trainer directory polish. */
.programme-inline-editor-grid{grid-template-columns:minmax(0,1fr)}
.programme-inline-time-row{display:grid;grid-template-columns:minmax(145px,220px) 18px minmax(145px,220px);gap:8px;align-items:end;justify-content:start}
.programme-inline-time-row>span{align-self:end;padding-bottom:9px;text-align:center;color:#698079;font-weight:800}
.programme-inline-time-row label{min-width:0}
.programme-inline-time-row input[type=time]{min-width:0;width:100%;font-variant-numeric:tabular-nums}
.programme-inline-trainer-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.programme-inline-trainer-head>span{font-size:11.5px;font-weight:800;color:#315b52}
.programme-inline-trainer-head small{font-size:10.5px;color:#6c817b;font-weight:500}
.programme-inline-trainer-search{max-width:440px}
.programme-inline-trainer-search input{min-height:32px!important;margin:0!important}
.programme-inline-trainer-options{display:flex;gap:6px;flex-wrap:wrap;max-height:130px;overflow:auto;padding:2px 1px}
.programme-inline-trainer-options label.hidden{display:none!important}
.programme-break-summary{display:grid;grid-template-columns:22px 92px minmax(0,1fr) max-content;gap:8px;align-items:center;min-width:0}
.programme-break-summary>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.programme-break-summary .programme-node-actions{flex-wrap:nowrap;white-space:nowrap}
.programme-break-summary .programme-node-actions button{flex:0 0 auto}
@media(max-width:900px){.programme-inline-time-row{grid-template-columns:1fr 18px 1fr}.programme-break-summary{grid-template-columns:22px 82px minmax(0,1fr)}.programme-break-summary .programme-node-actions{grid-column:2/-1;justify-self:end}}

/* Programme builder V3c: compact time pair and single searchable trainer picker. */
.programme-inline-time-row{display:grid;grid-template-columns:minmax(145px,220px) minmax(145px,220px);gap:12px;align-items:end;justify-content:start}
.programme-inline-trainer-selected{display:flex;gap:6px;flex-wrap:wrap;min-height:30px;align-items:center}
.programme-inline-trainer-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid #bcdcd5;border-radius:999px;background:#eaf6f3;color:#315f55;padding:4px 7px 4px 9px;font-size:11.5px;font-weight:700}
.programme-inline-trainer-chip button{border:0;background:transparent;color:#567b72;padding:0;line-height:1;cursor:pointer;font-size:14px}
.programme-inline-trainer-placeholder{font-size:11.5px;color:#80918c}
.programme-inline-trainer-search{position:relative;max-width:440px}
.programme-inline-trainer-options{position:absolute;z-index:35;left:0;right:0;top:calc(100% + 4px);display:grid;gap:3px;max-height:220px;overflow:auto;padding:5px;border:1px solid var(--line,#cfe0dc);border-radius:9px;background:#fff;box-shadow:0 12px 28px rgba(29,70,61,.15)}
.programme-inline-trainer-options.hidden{display:none!important}
.programme-inline-trainer-options label{border:0;border-radius:7px;background:#fff;padding:6px 8px;display:flex;align-items:center;gap:7px}
.programme-inline-trainer-options label:hover{background:#edf7f4}
@media(max-width:900px){.programme-inline-time-row{grid-template-columns:1fr 1fr}}
