HTML
Copy
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#5b6577] uppercase">Company chart with collapsible branches</span>
<figure class="m-0" aria-label="Fernwood Studio organisation chart">
<ul class="oc m-0 list-none p-0 oc-company">
<li><details open><summary class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center cursor-pointer list-none hover:border-[#c2410c] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#c2410c] [&::-webkit-details-marker]:hidden"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#e2e8f0] text-[#1e293b] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">MO</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Maya Okafor</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Chief Executive</span></span><span class="inline-flex flex-none items-center gap-1 whitespace-nowrap rounded-full bg-[#fff1e8] px-2 py-0.5 text-[.72rem] font-semibold text-[#9a3412] ml-auto min-[1100px]:mt-1 min-[1100px]:ml-0">3 reports<svg class="size-3 transition-transform duration-150 motion-reduce:transition-none [details[open]>summary_&]:rotate-180" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M6 9l6 6 6-6" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></span></summary>
<ul class="m-0 list-none p-0">
<li><details open><summary class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center cursor-pointer list-none hover:border-[#c2410c] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#c2410c] [&::-webkit-details-marker]:hidden"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dbeafe] text-[#1e3a8a] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">DR</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Daniel Reyes</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Chief Technology Officer</span></span><span class="inline-flex flex-none items-center gap-1 whitespace-nowrap rounded-full bg-[#fff1e8] px-2 py-0.5 text-[.72rem] font-semibold text-[#9a3412] ml-auto min-[1100px]:mt-1 min-[1100px]:ml-0">3 reports<svg class="size-3 transition-transform duration-150 motion-reduce:transition-none [details[open]>summary_&]:rotate-180" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M6 9l6 6 6-6" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></span></summary>
<ul class="m-0 list-none p-0">
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dbeafe] text-[#1e3a8a] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">PN</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Priya Nair</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Engineering Manager</span></span></div></li>
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dbeafe] text-[#1e3a8a] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">TB</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Tom Becker</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Platform Lead</span></span></div></li>
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dbeafe] text-[#1e3a8a] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">LF</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Lena Fischer</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">QA Lead</span></span></div></li>
</ul>
</details></li>
<li><details open><summary class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center cursor-pointer list-none hover:border-[#c2410c] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#c2410c] [&::-webkit-details-marker]:hidden"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dcfce7] text-[#14532d] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">SM</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Sofia Marin</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Chief Operating Officer</span></span><span class="inline-flex flex-none items-center gap-1 whitespace-nowrap rounded-full bg-[#fff1e8] px-2 py-0.5 text-[.72rem] font-semibold text-[#9a3412] ml-auto min-[1100px]:mt-1 min-[1100px]:ml-0">2 reports<svg class="size-3 transition-transform duration-150 motion-reduce:transition-none [details[open]>summary_&]:rotate-180" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M6 9l6 6 6-6" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></span></summary>
<ul class="m-0 list-none p-0">
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dcfce7] text-[#14532d] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">AH</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Ahmed Haddad</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Customer Success</span></span></div></li>
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dcfce7] text-[#14532d] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">JN</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Julia Novak</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Operations Lead</span></span></div></li>
</ul>
</details></li>
<li><details><summary class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center cursor-pointer list-none hover:border-[#c2410c] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#c2410c] [&::-webkit-details-marker]:hidden"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#fef3c7] text-[#78350f] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">OP</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Owen Price</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Chief Financial Officer</span></span><span class="inline-flex flex-none items-center gap-1 whitespace-nowrap rounded-full bg-[#fff1e8] px-2 py-0.5 text-[.72rem] font-semibold text-[#9a3412] ml-auto min-[1100px]:mt-1 min-[1100px]:ml-0">2 reports<svg class="size-3 transition-transform duration-150 motion-reduce:transition-none [details[open]>summary_&]:rotate-180" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M6 9l6 6 6-6" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></span></summary>
<ul class="m-0 list-none p-0">
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#fef3c7] text-[#78350f] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">HS</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Hana Sato</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Financial Controller</span></span></div></li>
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[152px] min-[1100px]:flex-col min-[1100px]:gap-1.5 min-[1100px]:px-2.5 min-[1100px]:pt-3.5 min-[1100px]:pb-3 min-[1100px]:text-center"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#fef3c7] text-[#78350f] size-9 text-[.8rem] min-[1100px]:size-11 min-[1100px]:text-[.9rem]" aria-hidden="true">MB</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Marco Bellini</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">FP&A Analyst</span></span></div></li>
</ul>
</details></li>
</ul>
</details></li>
</ul>
</figure>
</div>
<div><span class="mb-4 block text-[.72rem] tracking-[.12em] text-[#5b6577] uppercase">Team chart with department colours</span>
<figure class="m-0" aria-label="Design team chart">
<ul class="oc m-0 list-none p-0 oc-team">
<li><details open><summary class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[230px] border-l-4 border-l-[#64748b] cursor-pointer list-none hover:border-[#c2410c] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#c2410c] [&::-webkit-details-marker]:hidden"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#e2e8f0] text-[#1e293b] size-9 text-[.8rem]" aria-hidden="true">ID</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Ines Duarte</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Head of Design</span></span><span class="inline-flex flex-none items-center gap-1 whitespace-nowrap rounded-full bg-[#fff1e8] px-2 py-0.5 text-[.72rem] font-semibold text-[#9a3412] ml-auto">3<span class="sr-only"> reports</span><svg class="size-3 transition-transform duration-150 motion-reduce:transition-none [details[open]>summary_&]:rotate-180" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M6 9l6 6 6-6" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></span></summary>
<ul class="m-0 list-none p-0">
<li><details open><summary class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[230px] border-l-4 border-l-[#2563eb] cursor-pointer list-none hover:border-[#c2410c] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#c2410c] [&::-webkit-details-marker]:hidden"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dbeafe] text-[#1e3a8a] size-9 text-[.8rem]" aria-hidden="true">KA</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Kai Andersen</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Product Design Lead</span></span><span class="inline-flex flex-none items-center gap-1 whitespace-nowrap rounded-full bg-[#fff1e8] px-2 py-0.5 text-[.72rem] font-semibold text-[#9a3412] ml-auto">2<span class="sr-only"> reports</span><svg class="size-3 transition-transform duration-150 motion-reduce:transition-none [details[open]>summary_&]:rotate-180" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M6 9l6 6 6-6" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></span></summary>
<ul class="m-0 list-none p-0">
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[230px] border-l-4 border-l-[#2563eb]"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dbeafe] text-[#1e3a8a] size-9 text-[.8rem]" aria-hidden="true">RL</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Rosa Lima</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Product Designer</span></span></div></li>
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[230px] border-l-4 border-l-[#2563eb]"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dbeafe] text-[#1e3a8a] size-9 text-[.8rem]" aria-hidden="true">BC</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Ben Carter</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Product Designer</span></span></div></li>
</ul>
</details></li>
<li><details open><summary class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[230px] border-l-4 border-l-[#d97706] cursor-pointer list-none hover:border-[#c2410c] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#c2410c] [&::-webkit-details-marker]:hidden"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#fef3c7] text-[#78350f] size-9 text-[.8rem]" aria-hidden="true">NA</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Noor Aziz</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Brand Lead</span></span><span class="inline-flex flex-none items-center gap-1 whitespace-nowrap rounded-full bg-[#fff1e8] px-2 py-0.5 text-[.72rem] font-semibold text-[#9a3412] ml-auto">1<span class="sr-only"> report</span><svg class="size-3 transition-transform duration-150 motion-reduce:transition-none [details[open]>summary_&]:rotate-180" viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M6 9l6 6 6-6" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg></span></summary>
<ul class="m-0 list-none p-0">
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[230px] border-l-4 border-l-[#d97706]"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#fef3c7] text-[#78350f] size-9 text-[.8rem]" aria-hidden="true">EM</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Eli Moreau</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">Illustrator</span></span></div></li>
</ul>
</details></li>
<li><div class="oc-card flex items-center gap-3 rounded-xl border border-[#dfe3ea] bg-white px-3 py-2.5 text-left shadow-[0_6px_18px_-12px_rgba(15,23,42,.35)] min-[1100px]:w-[230px] border-l-4 border-l-[#16a34a]"><span class="inline-flex flex-none items-center justify-center rounded-full font-bold bg-[#dcfce7] text-[#14532d] size-9 text-[.8rem]" aria-hidden="true">GL</span><span class="flex min-w-0 flex-col"><span class="text-[.86rem] leading-[1.25] font-semibold text-[#111827]">Grace Liu</span><span class="text-[.76rem] leading-[1.3] text-[#525c6b]">UX Researcher</span></span></div></li>
</ul>
</details></li>
</ul>
</figure>
</div>
CSS
Copy
/* Connector lines are pseudo-elements on every nested <li>, so they live here; the cards are utilities. */
/* Org chart: nested lists, <details> on every manager so a branch folds away. Below 1100px it is an
indented list with elbow connectors; from 1100px the same markup lays out top-down with CSS connectors. */
.oc{--oc-line:#a9b2bf;--oc-accent:#c2410c;--oc-gap:20px}
.oc details>summary{list-style:none}
.oc details>summary::-webkit-details-marker{display:none}
.oc li{position:relative}
@media (max-width:1099.98px){
.oc ul{margin-left:17px}
.oc ul>li{padding:10px 0 0 22px}
.oc ul>li::before{content:"";position:absolute;left:0;top:0;bottom:0;border-left:1.5px solid var(--oc-line)}
.oc ul>li::after{content:"";position:absolute;left:0;top:0;width:22px;height:38px;border:0 solid var(--oc-line);
border-left-width:1.5px;border-bottom-width:1.5px;border-bottom-left-radius:10px}
.oc ul>li:last-child::before{display:none}
}
@media (min-width:1100px){
.oc{display:flex;justify-content:center}
.oc ul{display:flex;justify-content:center;position:relative;padding-top:var(--oc-gap)}
.oc ul::before{content:"";position:absolute;top:0;left:50%;height:var(--oc-gap);border-left:1.5px solid var(--oc-line)}
.oc ul>li{padding:var(--oc-gap) 6px 0}
.oc ul>li::before,.oc ul>li::after{content:"";position:absolute;top:0;width:50%;height:var(--oc-gap);border:0 solid var(--oc-line);border-top-width:1.5px}
.oc ul>li::before{right:50%}
.oc ul>li::after{left:50%;border-left-width:1.5px}
.oc ul>li:first-child::before{border:0}
.oc ul>li:first-child::after{border-top-left-radius:10px}
.oc ul>li:last-child::after{border:0}
.oc ul>li:last-child::before{border-right-width:1.5px;border-top-right-radius:10px;width:calc(50% + 1.5px)}
.oc ul>li:only-child::before{display:none}
.oc ul>li:only-child::after{border-top:0;border-radius:0}
.oc li>details>summary,.oc li>div{margin:0 auto}
}