@font-face {
  font-family:"ARCnet Round Punctuation";
  src:url("/shared/round-punctuation-regular.woff") format("woff");
  font-style:normal;
  font-weight:400;
  font-display:swap;
  unicode-range:U+002E;
}

@font-face {
  font-family:"ARCnet Round Punctuation";
  src:url("/shared/round-punctuation-bold.woff") format("woff");
  font-style:normal;
  font-weight:700;
  font-display:swap;
  unicode-range:U+002E;
}

body {
  font-family:"ARCnet Round Punctuation",Arial,Helvetica,sans-serif;
}

.header nav {
  flex-wrap:wrap;
  row-gap:8px;
  min-width:0;
}

.project-about {
  padding-top:64px;
  padding-bottom:72px;
  border-top:1px solid var(--line);
  color:var(--ink,var(--navy));
}

.project-about h2 {
  font-size:clamp(30px,4vw,46px);
  line-height:1.15;
  letter-spacing:-.035em;
  margin:0 0 24px;
}

.about-intro {
  max-width:860px;
  font-size:20px;
  line-height:1.6;
  margin:0 0 32px;
}

.about-group {
  margin-top:36px;
}

.about-group h3 {
  font-size:24px;
  font-weight:600;
  line-height:1.3;
  letter-spacing:-.025em;
  margin:0 0 16px;
}

.concepts {
  margin:0;
}

.concepts>div {
  display:grid;
  grid-template-columns:minmax(180px,1fr) 2fr;
  gap:32px;
  border-top:1px solid var(--line);
  padding:22px 0;
}

.concepts dt {
  font-size:18px;
  font-weight:600;
  line-height:1.5;
}

.concepts dd {
  margin:0;
  color:var(--muted);
  font-size:17px;
  line-height:1.65;
}

.about-note,.project-notices {
  font-size:14px;
  line-height:1.65;
  color:var(--muted);
  max-width:900px;
}

.about-note {
  margin-top:24px;
}

.project-notices {
  border-top:1px solid var(--line);
  margin-top:28px;
  padding-top:18px;
}

.project-notices p {
  margin:6px 0;
}

/* Compact footer: original wordmark proportions and a quiet two-row layout. */
footer.brand-footer {
  border-top:1px solid var(--line);
  padding:28px 0 22px;
  color:var(--ink,var(--navy));
  line-height:1.5;
}

.footer-main {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);
  gap:32px;
  align-items:center;
}

.footer-wordmark {
  display:inline-block;
  font-size:30px;
  font-weight:800;
  line-height:1;
  letter-spacing:-.055em;
  text-decoration:none;
  color:#171816;
  max-width:100%;
}

.footer-wordmark .wordmark-net {
  font-weight:500;
}

/* A decorative upper marker belongs to the wordmark, never to body punctuation. */
.footer-wordmark .wordmark-dot {
  display:inline-block;
  width:.2em;
  height:.2em;
  vertical-align:top;
  margin:.13em 0 0 .13em;
  background:currentColor;
  color:var(--brand-accent,#fb642f);
  letter-spacing:0;
}

.footer-wordmark .wordmark-circle {
  border-radius:50%;
}

.footer-wordmark .wordmark-square {
  width:4px;
  height:4px;
  margin:4px 0 0 4px;
  flex-shrink:0;
  border-radius:0;
}

.footer-wordmark:hover {
  text-decoration:none;
}

.footer-slogan {
  font-size:14px;
  color:var(--muted);
  margin:10px 0 0;
  line-height:1.5;
  letter-spacing:0;
}

.brand-footer nav {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:8px 22px;
  font-size:14px;
  line-height:1.6;
}

.brand-footer nav a {
  padding:3px 0;
}

.brand-footer nav a:hover,.footer-meta a:hover {
  text-decoration:underline;
  text-underline-offset:4px;
}

.footer-meta {
  border-top:1px solid var(--line);
  padding-top:14px;
  margin-top:20px;
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  flex-wrap:wrap;
  gap:10px 18px;
  color:var(--muted);
  font-size:13px;
}

.footer-meta small {
  font-size:12px;
}

.component-list li>div {
  min-width:0;
}

.component-list h3 {
  overflow-wrap:anywhere;
}

.instance-title h1 {
  font-size:clamp(42px,7vw,100px);
  letter-spacing:-.05em;
  overflow-wrap:anywhere;
}

.instance-name {
  font-size:clamp(26px,3vw,40px);
  letter-spacing:-.04em;
}

@media(max-width:700px) {
  .about-group {
    margin-top:28px;
  }
  .about-group h3 {
    font-size:21px;
  }
  .concepts>div {
    grid-template-columns:1fr;
    gap:8px;
  }
  .about-intro {
    font-size:18px;
  }
  .project-about {
    padding-top:42px;
    padding-bottom:46px;
  }
  .concepts dt {
    font-size:18px;
  }
  .concepts dd {
    font-size:16px;
  }
  footer.brand-footer {
    padding:24px 0 20px;
  }
  .footer-main {
    grid-template-columns:1fr;
    gap:16px;
  }
  .brand-footer nav {
    justify-content:flex-start;
    gap:6px 20px;
  }
  .footer-meta {
    margin-top:18px;
  }
  .instance-title h1 {
    font-size:clamp(40px,9vw,64px);
  }
  tbody th {
    padding-right:122px;
  }
}

@media(max-width:480px) {
  .component-list li {
    flex-direction:column;
    gap:8px;
  }
  .component-list .status {
    padding-top:0;
  }
  .component-list h3 {
    font-size:23px;
  }
  .footer-wordmark {
    font-size:28px;
  }
}

.openwrt-reference {
  max-width:860px;
  font-size:16px;
  line-height:1.6;
  margin-top:24px;
}

.openwrt-reference p {
  margin:10px 0;
}

.openwrt-reference a {
  font:inherit;
  vertical-align:baseline;
  text-decoration-line:underline;
}

/* Keep underline geometry identical before and during hover/focus. */
body a:not(.button):not(.brand):not(.footer-wordmark) {
  color:#001a5a;
  text-decoration-thickness:1px;
  text-underline-offset:4px;
}

/* Optical text alignment requested for links, without changing line layout. */
body a:not(.button):not(.brand):not(.footer-wordmark):not(.skip):not(.instance-link),body a.instance-link .text-link {
  position:relative;
  top:1px;
}

body a:not(.button):not(.brand):not(.footer-wordmark):hover,body a:not(.button):not(.brand):not(.footer-wordmark):focus-visible {
  color:#0078ae;
  text-decoration-line:underline;
}

body a.instance-link .text-link {
  color:#001a5a;
}

body a.instance-link:hover .text-link,body a.instance-link:focus-visible .text-link {
  color:#0078ae;
}

body a.text-link>.link-arrow,body a.instance-link .text-link>.link-arrow {
  color:inherit;
}

/* Whitelisted outbound routes have a simple fallback while the browser redirects. */
.outbound-page {
  max-width:800px;
  padding-top:80px;
  padding-bottom:80px;
}

.outbound-page h1 {
  font-size:clamp(28px,5vw,48px);
  line-height:1.2;
}

.outbound-page p {
  line-height:1.6;
  overflow-wrap:anywhere;
}

/* Text call-to-action links keep their underline before hover as well. */
a.text-link,
.header nav a,
a.planned-link,
.project-notices a {
  text-decoration-line:underline;
}

/* Inline project wordmark: source text, URLs and accessible names stay plain ARCnet. */
.inline-brand {
  --inline-mark-size: 3px;
  display: inline-block;
  position: relative;
  white-space: nowrap;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 1em;
  font-style: normal;
  line-height: 1;
  letter-spacing: -.055em;
  text-transform: none;
  padding-inline-end: calc(var(--inline-mark-size) + 3px);
}

.inline-brand.inline-brand-spaced {
  margin-inline-end: .25em;
}

.inline-brand .inline-brand-arc {
  color: #001a5a;
  font-weight: 800;
}

.inline-brand .inline-brand-net {
  color: #009eed;
  font-weight: 500;
}

.inline-brand .inline-brand-mark {
  position: absolute;
  top: .13em;
  right: 0;
  width: var(--inline-mark-size);
  height: var(--inline-mark-size);
  background: #004ea1;
  border-radius: 0;
}

h1 .inline-brand { --inline-mark-size: 6px; }
h2 .inline-brand, h3 .inline-brand { --inline-mark-size: 4px; }
small .inline-brand, .project-notices .inline-brand,
.kicker .inline-brand { --inline-mark-size: 2px; }

/* Let the link paint one continuous underline through the wordmark and spacing. */
a:not(.brand):not(.footer-wordmark) .inline-brand {
  display: inline;
  padding-inline-end: 0;
  text-decoration: none;
}

a:not(.brand):not(.footer-wordmark) .inline-brand::after {
  content: '\200a';
  letter-spacing: calc(var(--inline-mark-size) + 3px);
}

a:not(.brand):not(.footer-wordmark) .inline-brand-spaced {
  margin-inline-end: 0;
}

a:not(.brand):not(.footer-wordmark) .inline-brand-spaced::after {
  content: '\2005';
}

a:not(.brand):not(.footer-wordmark) .inline-brand-spaced .inline-brand-mark {
  right: .25em;
}

@media (max-width: 520px) {
  h1 .inline-brand { --inline-mark-size: 4px; }
}

/* A regular destination link with a CSS-only, hoverable/focusable preview.
   Anchor positioning keeps the bubble within the viewport. Older browsers use
   a compact bottom preview instead. No script or CSP exception is required. */
.device-hint {display:inline-block;white-space:nowrap;anchor-scope:--device-link}
.device-mention {anchor-name:--device-link;text-decoration-line:underline}
.device-tooltip {
  display:none;position:fixed;z-index:50;left:16px;right:16px;bottom:16px;
  width:auto;max-width:340px;padding:16px 18px;background:#001a5a;color:#fff;
  border-top:3px solid #009eed;border-radius:3px;box-shadow:0 8px 24px #001a5a26;
  font:400 14px/1.5 Arial,Helvetica,sans-serif;letter-spacing:normal;
  text-align:left;text-transform:none;white-space:normal;cursor:pointer;
}
.device-tooltip strong {display:block;font-size:15px;font-weight:600;margin-bottom:7px;color:#fff}
.device-tooltip>span {display:block;color:#e0f2ff}
.device-hint:focus-within .device-tooltip {display:block}
@media(hover:hover){.device-hint:hover .device-tooltip {display:block}}
.principles .device-mention {color:inherit}
.principles .device-mention:hover {color:#24baff}
@supports (position-area: bottom) and (anchor-scope: --device-link) {
  .device-tooltip {
    position-anchor:--device-link;position-area:bottom center;
    position-try-fallbacks:flip-block,flip-inline;inset:auto;
    width:min(340px,calc(100vw - 32px));max-width:none;margin:0;
  }
}
