/* Layout adapted from the existing Linux Networking Learning Labs app.
   Shared eClassVirtual tokens/assets remain unchanged. */
:root[data-ecv-theme="cyber"] {
  --ecv-bg: #ffffff;
  --ecv-text: #1f2937;
  --ecv-muted: #596579;
  --ecv-border: #e5e7eb;
  --nc-ink: #9a3412;
  --nc-soft: #fff7ed;
  --nc-orange-border: #fed7aa;
}
:root[data-ecv-mode="dark"] {
  --ecv-bg: #0b1423;
  --ecv-surface: #142033;
  --ecv-text: #eaf1fa;
  --ecv-muted: #b4c1d2;
  --ecv-border: #34445a;
  --nc-ink: #fdba74;
  --nc-soft: #211e20;
  --nc-orange-border: #77513a;
}
body.ecv-ui { font-size: 16px; }
h1, h2, h3 { letter-spacing: -.035em; }
main { max-width: 1480px; padding: 0 40px 24px; }
.page-intro { padding-top: 40px; }
.eyebrow { font-size: 12px; letter-spacing: 1.35px; }
.eyebrow i { width: 6px; height: 6px; background: var(--ecv-accent); border-radius: 50%; }
.ecv-ui .ecv-btn { font-size: 15px; }
.linux-topbar { height: auto; min-height: 84px; padding: 16px max(32px,calc((100vw - 1400px)/2)); justify-content: flex-start; gap: 24px; }
.linux-topbar .brand { flex-shrink: 0; }
.linux-topbar .brand-logo { display: block; position: static; width: 210px; height: 38px; object-fit: contain; overflow: visible; }
.linux-topbar .logo-dark { display: none; }
[data-ecv-mode="dark"] .linux-topbar .logo-light { display: none; }
[data-ecv-mode="dark"] .linux-topbar .logo-dark { display: block; }
.app-identity { border-left: 1px solid var(--ecv-border); padding-left: 24px; font-size: 16px; font-weight: 600; line-height: 1.4; white-space: nowrap; }
.app-identity > span { display: block; margin-top: 3px; color: var(--ecv-muted); font-size: 12px; font-weight: 400; }
.main-nav { margin-left: auto; padding: 0; border: 0; border-radius: 0; background: transparent; gap: 2px; }
.main-nav a { padding: 10px; font-size: 14px; }
.main-nav a[aria-current] { box-shadow: none; background: transparent; color: var(--nc-ink); }
.linux-topbar .header-actions { gap: 10px; }
.aula-link { display: inline-flex; align-items: center; min-height: 44px; padding: 8px; color: var(--ecv-muted); font-size: 13px; white-space: nowrap; }
.aula-link:hover { color: var(--nc-ink); }
.theme-control { min-height: 44px; padding: 9px 13px; font-size: 13px; font-weight: 600; border: 1px solid var(--ecv-border); border-radius: 8px; color: var(--ecv-text); background: var(--ecv-surface); white-space: nowrap; }
.theme-control:hover { border-color: var(--nc-orange-border); background: var(--nc-soft); }
.profile-control { display: flex; align-items: center; gap: 8px; min-height: 44px; border: 0; background: transparent; color: var(--ecv-muted); font-size: 13px; padding: 0; }
.profile-control .avatar { display: grid; place-items: center; width: 32px; height: 32px; font-size: 12px; }
.home-hero { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(0,1fr); align-items: center; gap: 64px; padding: 48px 0 44px; }
.home-hero .eyebrow { display: flex; align-items: center; gap: 9px; }
.home-hero h1 { font-size: clamp(36px,3.8vw,52px); font-weight: 600; line-height: 1.16; letter-spacing: -1.7px; margin: 22px 0; }
.home-hero h1 em { font-style: normal; color: var(--nc-ink); }
.home-copy > p { font-size: 17px; color: var(--ecv-muted); line-height: 1.8; }
.hero-tags { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.hero-tags span { font-size: 13px; color: var(--ecv-muted); border: 1px solid var(--ecv-border); border-radius: 50px; padding: 6px 12px; }
.hero-actions { margin-top: 23px; gap: 16px; }
.hero-actions .demo-label { align-self: center; background: transparent; border: 0; padding: 0; color: var(--ecv-muted); font-size: 12px; }
.hero-terminal { background: #101925; color: #e2e8f0; border: 1px solid #34445a; border-radius: 13px; box-shadow: 0 16px 40px #0f172a10; transform: rotate(-2deg); font: 13px/1.85 ui-monospace,SFMono-Regular,Consolas,monospace; max-width: 100%; min-width: 0; }
.mini-dots { display: flex; align-items: center; justify-content: space-between; gap: 16px; background: #192536; padding: 16px 20px; border-bottom: 1px solid #34445a; color: #bac7d8; font-size: 11px; border-radius: 13px 13px 0 0; }
.mini-code { padding: 24px; overflow: hidden; white-space: nowrap; }
.mini-green { color: #9ee6bd; }
.mini-muted { color: #b4c1d2; }
.mini-code b { color: #fdba74; font-weight: 400; }
.hero-terminal-bottom { display: flex; align-items: center; gap: 8px; padding: 12px 20px; border-top: 1px solid #34445a; color: #b4c1d2; font: 11px/1.6 Inter,sans-serif; }
.catalog-heading { border-top: 1px solid var(--ecv-border); padding-top: 24px; margin-bottom: 24px; }
.catalog-heading h2 { font-size: 28px; letter-spacing: -.7px; margin: 7px 0 0; }
.overall-progress { color: var(--ecv-muted); font-size: 13px; min-width: 230px; text-align: right; }
.overall-progress progress { width: 100%; display: block; height: 6px; border: 0; background: var(--nc-soft); border-radius: 6px; overflow: hidden; margin: 10px 0 5px; }
.overall-progress small { font-size: 11px; }
.unit-grid { gap: 20px; }
.unit-card { padding: 24px; box-shadow: 0 2px 6px #0f172a03; }
.unit-card-top { margin-bottom: 20px; }
.unit-icon { width: 44px; height: 44px; }
.unit-icon .device-icon { width: 28px; height: 28px; }
.card-category { color: var(--ecv-muted); font-size: 13px; letter-spacing: .4px; }
.unit-number { font: 12px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace; color: var(--ecv-muted); margin-bottom: 10px; letter-spacing: .2px; }
.unit-card h3 { font-size: 22px; line-height: 1.35; letter-spacing: -.5px; }
.unit-card > p { font-size: 16px; line-height: 1.7; margin: 12px 0 22px; }
.unit-meta { font-size: 13px; gap: 8px; }
.card-preview { margin-left: auto; color: var(--nc-ink); font-size: 12px; }
.card-start { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 50px; border-top: 1px solid var(--ecv-border); margin-top: 20px; padding-top: 15px; color: var(--nc-ink); font-size: 15px; font-weight: 600; }
.card-start:hover { text-decoration: underline; }
.how-to-start { display: flex; align-items: center; gap: 18px; padding: 24px; margin: 28px 0 32px; background: var(--nc-soft); border: 1px solid var(--nc-orange-border); border-radius: 12px; }
.start-icon { display: flex; color: var(--nc-ink); }
.start-icon .ui-icon { width: 36px; height: 36px; }
.how-to-start h2 { font-size: 18px; letter-spacing: -.3px; margin-bottom: 7px; }
.how-to-start p { font-size: 15px; color: var(--ecv-muted); max-width: 780px; }
.start-label { margin-left: auto; font-size: 13px; color: var(--nc-ink); white-space: nowrap; }
.challenge-banner { padding: 0 0 25px; margin: 0; border: 0; border-radius: 0; gap: 24px; }
.challenge-banner h2 { font-size: 21px; margin-top: 8px; }
.challenge-banner p { font-size: 15px; }
.demo-disclosure { font-size: 12px; }
.challenge-card h2 { font-size: 22px; }
.challenge-card > p { font-size: 16px; }
.challenge-card-bottom .level, .challenge-card-bottom .text-link { font-size: 14px; }
.challenge-index { font-size: 12px; }
.site-footer { font-size: 12px; margin: 10px max(40px,calc((100vw - 1400px)/2)) 0; }
.lab-page { padding-top: 0; }
.lab-breadcrumb { margin: 18px 0 12px; font-size: 15px; }
.lab-heading { margin: 0 0 24px; }
.lab-heading h1 { font-size: 32px; margin: 10px 0; letter-spacing: -1px; }
.lab-heading p { font-size: 16px; margin-top: 0; }
.lab-meta { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.lab-meta > span { border: 1px solid var(--ecv-border); border-radius: 5px; font-size: 12px; padding: 7px 11px; color: var(--ecv-muted); }
.lab-grid { grid-template-columns: minmax(0,1fr) 320px; gap: 24px; }
.mission-panel { padding: 24px; }
.mission-panel h2 { font-size: 24px; margin: 8px 0 18px; }
.mission-panel h3 { font-size: 16px; letter-spacing: 0; }
.panel-kicker { color: var(--ecv-muted); font-size: 12px; letter-spacing: 1.4px; }
blockquote.mission-objective { font-size: 16px; line-height: 1.7; background: var(--nc-soft); border: 0; border-left: 2px solid var(--nc-orange-border); color: var(--ecv-text); padding: 14px; margin: 0 0 24px; border-radius: 0 6px 6px 0; }
.mission-step { gap: 10px; margin: 17px 0; }
.mission-step > span { width: 20px; height: 20px; margin-top: 3px; }
.mission-step strong { font-size: 14px; font-weight: 400; color: var(--ecv-text); }
.mission-step p { font-size: 14px; }
.ecv-ui .mission-validate { width: 100%; justify-content: space-between; font-size: 16px; margin-top: 12px; }
.mission-reset { display: flex; align-items: center; justify-content: center; gap: 7px; width: 100%; min-height: 44px; margin: 12px 0 0; padding: 8px; border: 0; background: transparent; color: var(--ecv-muted); font-size: 14px; }
.mission-demo { text-align: center; font-size: 12px; color: var(--ecv-muted); margin-top: 6px; }
.mission-reward { margin-top: 18px; }
.mission-reward strong { font-size: 14px; }
.mission-reward span { font-size: 11px; }
.terminal-window { background: #101925; border-color: #34445a; box-shadow: 0 8px 24px #0f172a08; }
.terminal-top { background: #192536; height: 48px; padding: 0 18px; border-color: #34445a; }
.terminal-top h2 { font-size: 12px; color: #bac7d8; }
.terminal-dots { display: flex; }
.terminal-body { min-height: 380px; padding: 20px; font-size: 14px; }
.terminal-prompt { flex-wrap: wrap; }
.terminal-prompt input { min-height: 30px; }
.terminal-bottom { background: #131e2d; border-color: #34445a; color: #b4c1d2; font-size: 11px; padding: 10px 16px; }
.console-note { font-size: 14px; color: var(--ecv-muted); margin: 12px 0 0; }
.scenario-panel { margin-top: 20px; }
.scenario-heading h2 { font-size: 15px; }
.compact-map { background: var(--ecv-surface); padding: 20px; min-height: 245px; }
.compact-map .map-network-label { display: none; }
.compact-map .map-router { margin-top: 0; }
.compact-map .network-branches::before, .compact-map .network-branches::after, .compact-map .map-host::before { background: var(--ecv-border); }
.compact-map .map-host strong, .compact-map .map-router strong { font-size: 13px; }
.compact-map .map-host > span, .compact-map .map-router > span { font-size: 12px; }
.topology-note { display: flex; align-items: center; gap: 8px; padding: 10px 18px; background: var(--nc-soft); color: var(--nc-ink); border-top: 1px solid var(--nc-orange-border); font-size: 13px; }
.inline-help { border-top: 1px solid var(--ecv-border); margin-top: 40px; padding-top: 30px; }
.help-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.help-heading h2 { font-size: 26px; margin: 10px 0; }
.help-heading p { font-size: 16px; color: var(--ecv-muted); }
.help-symbol { color: var(--nc-ink); }
.help-symbol .ui-icon { width: 44px; height: 44px; }
.guide-disclosure { border: 1px solid var(--ecv-border); border-radius: 12px; background: var(--ecv-surface); }
.guide-disclosure > summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 22px 24px; cursor: pointer; font-size: 18px; font-weight: 600; }
.guide-disclosure > summary::-webkit-details-marker { display: none; }
.guide-disclosure > summary small { display: block; margin-top: 7px; font-size: 14px; font-weight: 400; color: var(--ecv-muted); }
.disclosure-icon { font-size: 26px; color: var(--nc-ink); }
.guide-disclosure[open] > summary .disclosure-icon { transform: rotate(45deg); }
.inline-guide-content { border-top: 1px solid var(--ecv-border); padding: 24px; }
.inline-guide-content > article { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 24px; }
.step-index { display: grid; place-items: center; flex-shrink: 0; width: 32px; height: 32px; font-size: 14px; border-radius: 50%; background: var(--nc-soft); color: var(--nc-ink); border: 1px solid var(--nc-orange-border); }
.inline-guide-content h3 { font-size: 20px; margin: 4px 0 12px; }
.inline-guide-content p { font-size: 16px; color: var(--ecv-muted); margin-bottom: 10px; }
.inline-hint { padding: 16px 0; border-top: 1px solid var(--ecv-border); }
.inline-hint summary { font-weight: 500; cursor: pointer; min-height: 44px; display: flex; align-items: center; color: var(--nc-ink); font-size: 15px; }
.inline-hint code { color: var(--nc-ink); font-size: 14px; overflow-wrap: anywhere; }
.inline-guide-content > button { margin: 12px 0; }
.inline-guide-content > p.small { font-size: 13px; }
.lab-actionbar { padding: 18px 0 0; margin-top: 0; }
.lab-actionbar .text-link { font-size: 14px; }
@media(min-width:1500px) { .terminal-body { min-height: 430px; } }
@media(max-width:1280px) {
  .linux-topbar { gap: 16px; padding-inline: 28px; }
  .app-identity, .profile-name { display: none; }
  .linux-topbar .brand-logo { width: 200px; }
  .home-hero { gap: 38px; }
  .start-label { display: none; }
}
@media(max-width:1050px) {
  main { padding-inline: 28px; }
  .home-hero { padding: 36px 0; gap: 32px; }
  .hero-terminal { font-size: 11px; }
  .mini-code { padding: 20px; }
  .unit-grid, .challenge-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .unit-card { padding: 24px; }
  .unit-grid > :last-child { grid-column: auto; }
  .lab-grid { grid-template-columns: minmax(0,1fr) 300px; gap: 20px; }
  .mission-panel { padding: 20px; }
  .terminal-body { font-size: 13px; }
  .site-footer { margin-inline: 28px; }
}
@media(max-width:900px) {
  .lab-grid { grid-template-columns: minmax(0,1fr); }
  .mission-panel { padding: 24px; }
  .lab-heading { align-items: flex-start; }
}
@media(max-width:800px) {
  .linux-topbar { min-height: 68px; padding: 12px 24px; flex-wrap: wrap; gap: 8px 16px; }
  .linux-topbar .brand { margin-right: auto; }
  .linux-topbar .main-nav { width: auto; margin-left: 0; order: 0; }
  .linux-topbar .main-nav a { flex: none; padding: 8px; min-height: 44px; }
  .linux-topbar .header-actions { order: 0; }
  .aula-link { display: none; }
  .home-hero { grid-template-columns: 1fr; padding: 36px 0 30px; }
  .home-hero h1 { font-size: 40px; }
  .hero-terminal { display: none; }
  .hero-actions { flex-direction: row; align-items: center; gap: 16px; }
  .unit-card h3 { font-size: 22px; }
  .unit-meta { font-size: 13px; gap: 8px; }
  .card-preview { margin-left: 0; }
  .catalog-heading { align-items: center; }
  .overall-progress { min-width: 190px; font-size: 12px; }
  .lab-meta { justify-content: flex-start; }
  .lab-heading h1 { font-size: 30px; }
  .terminal-body { min-height: 350px; }
  .lab-actionbar { flex-direction: row; align-items: center; }
}
@media(max-width:640px) {
  main { padding-inline: 20px; }
  .linux-topbar { padding: 12px 20px; gap: 8px 12px; }
  .linux-topbar .brand-logo { width: 200px; height: 34px; }
  .linux-topbar .main-nav { order: 2; width: 100%; flex: 1; justify-content: flex-start; gap: 8px; }
  .linux-topbar .header-actions { display: contents; }
  .theme-control { font-size: 12px; padding: 8px 10px; margin-left: auto; }
  .profile-control { order: 3; }
  .aula-link { display: inline-flex; order: 4; font-size: 12px; }
  .home-hero h1 { font-size: 36px; letter-spacing: -1.2px; }
  .home-copy > p { font-size: 16px; }
  .home-copy > p br { display: none; }
  .eyebrow { font-size: 11px; letter-spacing: 1.2px; }
  .hero-tags { gap: 8px; }
  .hero-tags span { font-size: 12px; }
  .hero-actions .ecv-btn { font-size: 14px; }
  .unit-grid, .challenge-grid { grid-template-columns: 1fr; }
  .unit-card { padding: 22px; }
  .unit-card > p { font-size: 16px; }
  .card-preview { margin-left: auto; }
  .catalog-heading { flex-direction: column; align-items: stretch; gap: 16px; }
  .catalog-heading h2 { font-size: 25px; }
  .overall-progress { text-align: left; min-width: 0; width: 100%; }
  .overall-progress progress { max-width: 100%; }
  .how-to-start { padding: 20px; align-items: flex-start; gap: 14px; }
  .start-icon .ui-icon { width: 28px; height: 28px; }
  .how-to-start h2 { font-size: 17px; }
  .how-to-start p { font-size: 15px; }
  .challenge-banner { display: block; padding-bottom: 18px; }
  .challenge-banner > .ecv-btn { margin-top: 16px; width: auto; font-size: 14px; }
  .challenge-banner h2 { font-size: 20px; }
  .challenge-banner p { font-size: 15px; }
  .site-footer { margin-inline: 20px; flex-direction: column; align-items: flex-start; font-size: 12px; gap: 6px; }
  .lab-heading { display: block; margin-bottom: 20px; }
  .lab-heading h1 { font-size: 28px; }
  .lab-heading p { font-size: 16px; }
  .lab-meta { margin-top: 14px; gap: 8px; }
  .lab-meta .ecv-btn { margin-left: auto; padding: 9px 12px; font-size: 14px; }
  .terminal-top { padding: 0 12px; }
  .terminal-body { min-height: 350px; padding: 18px 14px; font-size: 13px; }
  .terminal-prompt { gap: 2px; }
  .terminal-prompt > span, .terminal-prompt input { flex: 1 0 100%; }
  .terminal-prompt input { min-width: 0; padding-left: 0; }
  .terminal-bottom { font-size: 10px; padding: 10px 12px; }
  .compact-map { min-height: 235px; padding: 20px 12px; }
  .compact-map .map-host strong, .compact-map .map-router strong { font-size: 11px; }
  .compact-map .map-host > span, .compact-map .map-router > span { font-size: 10px; }
  .topology-note { font-size: 12px; padding-inline: 14px; }
  .mission-panel { padding: 22px; }
  .mission-step strong, .mission-step p { font-size: 15px; }
  .inline-help { margin-top: 32px; padding-top: 26px; }
  .help-heading h2 { font-size: 24px; }
  .help-symbol { display: none; }
  .guide-disclosure > summary { padding: 18px; font-size: 17px; }
  .guide-disclosure > summary small { font-size: 14px; }
  .inline-guide-content { padding: 20px 16px; }
  .inline-guide-content h3 { font-size: 19px; }
  .inline-guide-content p { font-size: 16px; }
  .lab-actionbar { align-items: flex-start; flex-direction: column; gap: 6px; }
}
@media(max-width:380px) {
  .linux-topbar { padding-inline: 14px; }
  .linux-topbar .brand-logo { width: 180px; height: 31px; }
  main { padding-inline: 14px; }
  .home-hero h1 { font-size: 34px; }
  .linux-topbar .main-nav { gap: 0; }
  .linux-topbar .main-nav a { font-size: 13px; padding: 8px; }
  .aula-link { font-size: 11px; padding-inline: 4px; }
  .theme-control { font-size: 12px; }
  .site-footer { margin-inline: 14px; }
  .compact-map .map-host strong { font-size: 10px; }
  .compact-map .map-host > span { font-size: 9px; }
}

/* Focus moves to the main region after navigation, without a page-wide ring. */
.ecv-ui main[tabindex="-1"]:focus { outline: none; }
@media(max-width:640px) {
  .linux-topbar { display: flex; }
  .linux-topbar::after { content: ''; order: 1; flex-basis: 100%; height: 0; }
  .linux-topbar .brand, .linux-topbar .theme-control { order: 0; }
  .linux-topbar .main-nav { order: 2; width: auto; flex: 1 1 auto; justify-content: flex-start; }
  .linux-topbar .aula-link, .linux-topbar .profile-control { order: 2; }
}

/* Network topology: larger devices and visible, continuous connections. */
.compact-map {
  --topology-link: #b85a24;
  --topology-node-border: #cbd5e1;
  padding: 28px 24px;
  min-height: 410px;
}
[data-ecv-mode="dark"] .compact-map {
  --topology-link: #f5a66c;
  --topology-node-border: #52647c;
}
.compact-map .map-router,
.compact-map .map-host {
  padding: 18px 14px;
  border: 1px solid var(--topology-node-border);
  border-radius: 12px;
  background: var(--ecv-surface);
  box-shadow: 0 4px 12px #0f172a06;
  z-index: 1;
}
.compact-map .map-router {
  width: 230px;
  margin-top: 0;
  border-color: var(--topology-link);
  background: var(--nc-soft);
}
.compact-map .device-icon,
.compact-map .map-router .device-icon {
  width: 76px;
  height: 76px;
}
.compact-map .map-host strong,
.compact-map .map-router strong {
  font-size: 16px;
  font-weight: 600;
  margin-top: 10px;
  white-space: normal;
  line-height: 1.4;
}
.compact-map .map-host > span,
.compact-map .map-router > span {
  font-size: 14px;
  color: var(--ecv-text);
  line-height: 1.6;
  margin-top: 3px;
}
.compact-map .network-branches {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  width: 100%;
  max-width: 900px;
  margin-top: 32px;
  padding-top: 32px;
}
.compact-map .map-host {
  width: 100%;
  min-height: 176px;
}
.compact-map .network-branches::before {
  left: calc(16.6667% - 8px);
  right: calc(16.6667% - 8px);
  top: 0;
  height: 2px;
  background: var(--topology-link);
}
.compact-map .network-branches::after {
  left: calc(50% - 1px);
  top: -32px;
  height: 34px;
  width: 2px;
  background: var(--topology-link);
}
.compact-map .map-host::before {
  left: calc(50% - 1px);
  top: -32px;
  height: 32px;
  width: 2px;
  background: var(--topology-link);
}
@media(max-width:640px) {
  .compact-map { padding: 24px 18px; min-height: 0; }
  .compact-map .map-router,
  .compact-map .map-host {
    display: grid;
    grid-template-columns: 64px minmax(0,1fr);
    grid-template-rows: auto auto;
    align-content: center;
    column-gap: 14px;
    text-align: left;
    padding: 16px;
    min-height: 120px;
    width: 100%;
  }
  .compact-map .device-icon,
  .compact-map .map-router .device-icon {
    grid-column: 1;
    grid-row: 1 / 3;
    width: 64px;
    height: 64px;
  }
  .compact-map .map-host strong,
  .compact-map .map-router strong {
    grid-column: 2;
    margin: 0;
    font-size: 16px;
    align-self: end;
  }
  .compact-map .map-host > span,
  .compact-map .map-router > span {
    grid-column: 2;
    font-size: 13px;
    align-self: start;
  }
  .compact-map .network-branches {
    grid-template-columns: minmax(0,1fr);
    gap: 18px;
    margin: 24px 0 0 18px;
    padding: 0 0 0 24px;
    width: calc(100% - 18px);
  }
  .compact-map .network-branches::before {
    left: 0;
    right: auto;
    top: -24px;
    bottom: 60px;
    width: 2px;
    height: auto;
  }
  .compact-map .network-branches::after { display: none; }
  .compact-map .map-host { height: 120px; }
  .compact-map .map-host::before {
    left: -24px;
    top: calc(50% - 1px);
    width: 24px;
    height: 2px;
  }
}
@media(max-width:380px) {
  .compact-map { padding-inline: 14px; }
  .compact-map .map-router,
  .compact-map .map-host {
    grid-template-columns: 52px minmax(0,1fr);
    column-gap: 10px;
    padding-inline: 12px;
  }
  .compact-map .device-icon,
  .compact-map .map-router .device-icon { width: 52px; height: 60px; }
  .compact-map .map-host strong,
  .compact-map .map-router strong { font-size: 15px; }
}
