.module-nav{display:grid;gap:6px;margin-bottom:4px}
.module-nav[hidden]{display:none}
.module-nav-toggle{width:100%;border:0;background:transparent;padding:0 2px 10px;color:#666;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.02em;display:flex;align-items:center;justify-content:space-between;cursor:pointer;text-align:left}
.module-nav-toggle:hover{color:#173b5a}
.module-nav-chevron{font-size:15px;line-height:1;color:#5f7182}
.module-chip{width:100%;border:1px solid #ddd;background:#fff;border-radius:6px;padding:8px 9px;text-align:left;font-size:12px;color:#555;cursor:pointer;display:flex;gap:8px;align-items:flex-start}
.module-chip span{display:grid;place-items:center;min-width:24px;height:20px;border-radius:10px;background:#f0f0f0;color:#555;font-weight:700}
.module-chip:hover{border-color:#bfcbd6;background:#fafcfe}
.module-chip.active{border-color:#9fb8cd;background:#eef5fb;color:#173b5a;font-weight:650}
.module-chip.active span{background:#1f3b5b;color:#fff}
.sidebar-divider{height:1px;background:#ddd;margin:14px 8px}
.architecture-boundary{border-radius:8px}
.boundary-title{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:#5f5f5f;font-weight:700;margin-bottom:8px}
.service-grid{display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px}
.four-grid{grid-template-columns:repeat(2,minmax(200px,1fr))}
.service-card{border:1px solid #bfcfe0;background:#f4f8fc;padding:14px;border-radius:7px;text-align:center;cursor:pointer;min-width:170px}
.service-card b{display:block;font-size:14px}.service-card span{display:block;font-size:11px;color:#666;margin-top:5px}
.service-card.sel,.flow-node.sel,.record-card.sel{border:2px solid var(--accent);box-shadow:0 0 0 3px rgba(36,90,135,.08)}
.dc-card{border-color:#b9cae8;background:var(--dc-soft)}
.gc-card,.gc-node{border-color:#c8b4df;background:var(--forest-soft)}
.service-icon{width:34px;height:34px;border-radius:6px;background:#fff;border:1px solid #c7d3e1;display:grid!important;place-items:center;margin:0 auto 8px!important;font-weight:700;color:#355b96}
.relation{font-size:22px;color:#657789;text-align:center;min-width:85px}.relation small{display:block;font-size:10px;line-height:1.25;color:#777}.relation.vertical{margin:8px 0}
.dc-boundary{border:2px solid #b8cbe2;background:linear-gradient(180deg,#fff,#f2f6fb);padding:18px;border-radius:9px;min-width:560px;max-width:760px}
.compact-dc{min-width:300px;max-width:360px}
.technical-callout{margin-top:14px;padding:10px;background:#fff;border-left:3px solid #6f88a6;font-size:11px;color:#555;line-height:1.5}
.mini-domain{min-width:170px;text-align:center;border-radius:7px}.mini-domain span{display:block;font-size:11px;color:#666;margin-top:5px}
.flow{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;width:100%}
.long-flow{flex-wrap:nowrap}
.technical-flow{flex-wrap:nowrap;min-width:760px}
.flow-node{border:1px solid #c7c7c7;background:#fff;padding:13px 14px;border-radius:7px;min-width:145px;text-align:center;cursor:pointer}
.flow-node b{display:block;font-size:13px}.flow-node span{display:block;font-size:11px;color:#666;margin-top:4px}
.flow-arrow{font-size:20px;color:#718096}
.client-node{background:#f6f6f6;border-color:#cfcfcf}.dns-node{background:#edf5fc;border-color:#b7d1ea}.srv-node{background:#eef8f3;border-color:#b9dfcc}.probe-node{background:#fbf2ea;border-color:#e1c4ad}.auth-node{background:#f3eef9;border-color:#c8b4df}.authz-node{background:#eef8f3;border-color:#b9dfcc}.ldap-node{background:#edf5fc;border-color:#b7d1ea}.service-node{background:#fbf2ea;border-color:#e1c4ad}.policy-node{background:#fbf0f4;border-color:#d7b8c4}
.dns-zone{border:2px dashed #9fc3df;background:linear-gradient(180deg,#fff,#edf5fc);padding:18px;border-radius:8px;min-width:620px}
.record-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.record-card{border:1px solid #b9dfcc;background:#fff;padding:13px;border-radius:6px;text-align:center;cursor:pointer}.record-card b{display:block;font-size:13px}.record-card span{display:block;font-size:11px;color:#666;margin-top:4px}
.vertical-flow{flex-direction:column}
.parallel-lanes{display:grid;gap:10px;width:100%}.lane{display:grid;grid-template-columns:150px 1fr;border:1px solid #ddd;border-radius:6px;overflow:hidden}.lane-label{background:#f2f2f2;padding:10px;font-size:12px;font-weight:650}.lane-flow{display:flex;align-items:center;gap:12px;padding:10px 14px;font-size:12px}.selected-lane{padding:4px 7px;border:1px solid #9fb8cd;background:#eef5fb;border-radius:4px;cursor:pointer}
.quiz-shell{width:min(760px,100%);margin:0 auto;padding:8px 4px 2px}.quiz-progress{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#666;margin-bottom:7px}.quiz-progress strong{color:#173b5a;font-size:13px}.quiz-progress-bar{height:5px;background:#e4e8ec;border-radius:3px;overflow:hidden;margin-bottom:24px}.quiz-progress-bar i{display:block;height:100%;background:#245a87}.quiz-shell .q{font-size:20px;line-height:1.4;margin-bottom:4px}.quiz-shell .answers{gap:12px}.quiz-shell .ans{font-size:15px;line-height:1.45;border-radius:6px;padding:14px 16px}.quiz-shell .ans:disabled{cursor:default;opacity:1}.answer-correct{border-color:#6aa17f!important;background:#eef8f2!important}.answer-wrong{border-color:#c98282!important;background:#fbf0f0!important}.quiz-feedback{display:none;margin-top:16px;padding:13px 14px;border-left:4px solid #888;border-radius:3px;font-size:13px;line-height:1.55}.quiz-feedback.show{display:block}.quiz-feedback.correct{background:#f0f7f2;border-color:#4d8b65}.quiz-feedback.wrong{background:#fbf2f2;border-color:#b85e5e}.quiz-actions{display:flex;justify-content:flex-end;align-items:center;gap:14px;margin-top:18px;flex-wrap:wrap}.quiz-next,.quiz-retry{border:0;background:#1f3b5b;color:#fff;border-radius:5px;padding:10px 14px;font-weight:650;cursor:pointer}.quiz-score{margin-right:auto;border:1px solid #cfd8e1;background:#f7fafc;border-radius:6px;padding:12px 14px;min-width:220px}.quiz-score span,.quiz-score small{display:block;color:#666;font-size:11px}.quiz-score strong{display:block;font-size:24px;color:#173b5a;margin:2px 0}
/* Official Microsoft architecture icon integration. Coloured boundaries still represent hierarchy/scope. */
.object[data-c="user"] .icon{font-size:0;background:#fff url('./assets/icons/microsoft/user.svg') center/30px 30px no-repeat}
.object[data-c="computer"] .icon{font-size:0;background:#fff url('./assets/icons/microsoft/device.svg') center/30px 30px no-repeat}
.object[data-c="group"] .icon{font-size:0;background:#fff url('./assets/icons/microsoft/group.svg') center/30px 30px no-repeat}
.box[data-c="user"]::before,.box[data-c="computer"]::before,.box[data-c="group"]::before,.service-card[data-c="dc"]::before,.flow-node[data-c="dc"]::before,.service-card[data-c="dns"]::before,.flow-node[data-c="dns"]::before,.policy-node[data-c="gpo"]::before{content:"";display:block;width:34px;height:34px;margin:0 auto 8px;background-repeat:no-repeat;background-position:center;background-size:30px 30px}
.box[data-c="user"]::before{background-image:url('./assets/icons/microsoft/user.svg')}
.box[data-c="computer"]::before{background-image:url('./assets/icons/microsoft/device.svg')}
.box[data-c="group"]::before{background-image:url('./assets/icons/microsoft/group.svg')}
.service-card[data-c="dc"]::before,.flow-node[data-c="dc"]::before{background-image:url('./assets/icons/microsoft/domain-controller.svg')}
.service-card[data-c="dns"]::before,.flow-node[data-c="dns"]::before{background-image:url('./assets/icons/microsoft/dns.svg')}
.policy-node[data-c="gpo"]::before{background-image:url('./assets/icons/microsoft/policy.svg')}
.service-card[data-c="dc"] .service-icon{display:none!important}
@media(max-width:1450px){.technical-flow{min-width:660px}.layout{grid-template-columns:270px minmax(620px,1fr) 340px}}