/* InkMirage apex site. Colours, type and space come from tokens.css. No theme script. */

*,
*::before,
*::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--im-bg);
  color: var(--im-text);
  font-family: var(--im-font-body);
  font-size: var(--im-text-md);
  font-weight: var(--im-weight-regular);
  line-height: var(--im-leading-body);
  -webkit-font-smoothing: antialiased;
}

::selection { background: var(--im-selection); }

a {
  color: var(--im-accent);
  text-underline-offset: 0.18em;
  text-decoration-thickness: 1px;
}

a:focus-visible {
  outline: none;
  box-shadow: var(--im-focus-ring);
  border-radius: var(--im-radius-sm);
}

h1, h2, h3 {
  font-family: var(--im-font-display);
  color: var(--im-ink);
  font-weight: var(--im-weight-semibold);
  line-height: var(--im-leading-tight);
  margin: 0;
}

:lang(zh-Hant) { line-height: var(--im-leading-cjk); }

.wrap {
  max-width: var(--im-content-max);
  margin: 0 auto;
  padding: 0 var(--im-space-6);
}

.skip {
  position: absolute;
  left: -999px;
  top: var(--im-space-2);
  background: var(--im-surface);
  color: var(--im-text);
  padding: var(--im-space-2) var(--im-space-3);
  border-radius: var(--im-radius-sm);
}

.skip:focus { left: var(--im-space-2); }

.im-ink { fill: var(--im-ink); }
.im-mirage { fill: var(--im-mirage); }
.im-shimmer { fill: var(--im-mirage-soft); }

.site-header {
  border-bottom: var(--im-border-width) solid var(--im-border);
  background: var(--im-bg);
  position: sticky;
  top: 0;
  z-index: 5;
}

.header-row {
  display: flex;
  align-items: center;
  gap: var(--im-space-6);
  height: 72px;
}

.brand {
  display: inline-flex;
  line-height: 0;
  border-radius: var(--im-radius-sm);
}

.brand img { height: 40px; width: auto; }

.primary-nav {
  display: flex;
  gap: var(--im-space-5);
  margin-left: auto;
}

.primary-nav a {
  color: var(--im-muted);
  text-decoration: none;
  font-size: var(--im-text-sm);
  font-weight: var(--im-weight-medium);
}

.primary-nav a:hover { color: var(--im-text); }

.header-tools {
  display: flex;
  align-items: center;
  gap: var(--im-space-3);
}

.lang-toggle {
  display: inline-flex;
  border: var(--im-border-width) solid var(--im-border);
  border-radius: var(--im-radius-pill);
  padding: 3px;
  background: var(--im-surface);
}

.lang-toggle a {
  font-size: var(--im-text-xs);
  font-weight: var(--im-weight-semibold);
  text-decoration: none;
  color: var(--im-muted);
  padding: 4px 10px;
  border-radius: var(--im-radius-pill);
  letter-spacing: 0.02em;
}

.lang-toggle a[aria-current="page"] {
  background: var(--im-bg);
  color: var(--im-text);
  box-shadow: 0 0 0 1px var(--im-border);
}

.hero {
  position: relative;
  overflow: hidden;
  border-bottom: var(--im-border-width) solid var(--im-border);
}

.hero-grid {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: var(--im-space-7);
  align-items: center;
  padding-top: var(--im-space-9);
  padding-bottom: var(--im-space-9);
}

.hero h1 {
  font-size: var(--im-text-4xl);
  letter-spacing: -0.01em;
  max-width: 20ch;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--im-space-3);
  margin: var(--im-space-6) 0 0;
}

.btn {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 var(--im-space-5);
  border-radius: var(--im-radius);
  font-weight: var(--im-weight-semibold);
  font-size: var(--im-text-sm);
  text-decoration: none;
}

.btn-quiet {
  border: var(--im-border-width) solid var(--im-border);
  color: var(--im-text);
  background: var(--im-bg);
  font-family: var(--im-font-mono);
  font-weight: var(--im-weight-regular);
}

.hero-art { display: flex; justify-content: center; }
.hero-art svg { width: min(100%, 460px); height: auto; overflow: visible; }

.section { padding-top: var(--im-space-8); padding-bottom: var(--im-space-8); }
.section > h2, .about h2 { font-size: var(--im-text-2xl); margin-bottom: var(--im-space-5); }

.cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--im-space-5);
}

.card {
  background: var(--im-surface);
  border: var(--im-border-width) solid var(--im-border);
  border-radius: var(--im-radius-lg);
  padding: var(--im-space-6);
  display: flex;
  flex-direction: column;
  gap: var(--im-space-4);
}

.card p { margin: 0; max-width: var(--im-measure); }
.card-head { display: flex; align-items: center; gap: var(--im-space-4); }
.card h3 { font-size: var(--im-text-xl); }
.card h3 a { color: inherit; text-decoration: none; }

.domain {
  font-family: var(--im-font-mono);
  font-size: var(--im-text-xs);
  color: var(--im-muted);
  margin: 2px 0 0;
}

.tile {
  width: 56px;
  height: 56px;
  flex: none;
  border-radius: var(--im-radius);
  display: grid;
  place-items: center;
  overflow: hidden;
}

/* The Endleaf tile SVG is the whole tile: white fill and a 1px #D9D6CC stroke
   in both appearances. Its leaf and line colours stay inside that file. */
.tile-endleaf {
  background: transparent;
  border-radius: 0;
  overflow: visible;
}

.tile-endleaf img { display: block; width: 56px; height: 56px; }

/* The SysMLEdge mark stays black on a white tile in both appearances. */
.tile-sysmledge {
  background: #ffffff;
  border: var(--im-border-width) solid var(--im-border);
}

.tile-sysmledge img { display: block; width: 52px; height: 52px; }

.card-endleaf { border-top: 3px solid var(--im-endleaf); }
.card-sysmledge { border-top: 3px solid var(--im-sysmledge); }

.zh-panel {
  margin-top: var(--im-space-6);
  border: var(--im-border-width) solid var(--im-border);
  border-radius: var(--im-radius-lg);
  padding: var(--im-space-6);
  background: var(--im-bg);
  position: relative;
}

.zh-panel::before {
  content: "";
  position: absolute;
  left: var(--im-space-6);
  right: var(--im-space-6);
  top: 0;
  height: 3px;
  background: var(--im-mirage);
  opacity: 0.6;
  border-radius: 0 0 3px 3px;
}

.zh-label {
  font-family: var(--im-font-mono);
  font-size: var(--im-text-xs);
  color: var(--im-muted);
  margin: 0 0 var(--im-space-3);
  letter-spacing: 0.02em;
}

.zh-panel h2 {
  font-size: var(--im-text-xl);
  line-height: 1.5;
  margin-bottom: var(--im-space-4);
}

.zh-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--im-space-5);
  margin: 0;
}

.zh-list dt {
  font-family: var(--im-font-display);
  font-weight: var(--im-weight-semibold);
  color: var(--im-ink);
}

.zh-list dd { margin: var(--im-space-1) 0 0; }

.zh-foot {
  margin: var(--im-space-5) 0 0;
  color: var(--im-muted);
  font-size: var(--im-text-sm);
  display: flex;
  flex-wrap: wrap;
  gap: var(--im-space-2) var(--im-space-5);
}

.about {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: var(--im-space-7);
  border-top: var(--im-border-width) solid var(--im-border);
  padding-top: var(--im-space-7);
}

#about { padding-top: 0; }
.about p { max-width: var(--im-measure); margin: 0 0 var(--im-space-3); color: var(--im-muted); }
.about .about-lede { color: var(--im-text); font-size: var(--im-text-lg); }

.facts {
  margin: 0;
  display: grid;
  gap: var(--im-space-3);
  align-content: start;
  padding: var(--im-space-5);
  background: var(--im-surface);
  border-radius: var(--im-radius);
  border: var(--im-border-width) solid var(--im-border);
}

.facts div { display: grid; grid-template-columns: 7rem 1fr; gap: var(--im-space-3); }
.facts dt {
  font-family: var(--im-font-mono);
  font-size: var(--im-text-xs);
  color: var(--im-muted);
  padding-top: 3px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.facts dd { margin: 0; }

.site-footer {
  border-top: var(--im-border-width) solid var(--im-border);
  background: var(--im-surface);
}

.footer-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--im-space-4);
  padding-top: var(--im-space-5);
  padding-bottom: var(--im-space-5);
  font-size: var(--im-text-sm);
  color: var(--im-muted);
}

.footer-row p { margin: 0; }
.footer-row nav { display: flex; flex-wrap: wrap; gap: var(--im-space-5); }
.footer-row a { color: var(--im-muted); }
.footer-row a:hover { color: var(--im-text); }

.legal-main {
  padding-top: var(--im-space-8);
  padding-bottom: var(--im-space-8);
}

.legal-main h1 {
  font-size: var(--im-text-3xl);
  margin-bottom: var(--im-space-5);
}

.legal-main p,
.legal-main li { max-width: var(--im-measure); }

.legal-main p { margin: 0 0 var(--im-space-4); }

.draft {
  margin: 0 0 var(--im-space-4);
  padding: var(--im-space-3) var(--im-space-4);
  background: var(--im-surface);
  border: var(--im-border-width) solid var(--im-border);
  border-left: 3px solid var(--im-mirage);
  border-radius: var(--im-radius);
}

.updated,
.mark {
  color: var(--im-muted);
  font-size: var(--im-text-sm);
}

.legal-main ul { margin: 0 0 var(--im-space-4); padding-left: 1.2rem; }
.legal-main li { margin: 0 0 var(--im-space-2); }

@media (max-width: 760px) {
  .wrap { padding: 0 var(--im-space-4); }
  .header-row { height: 64px; gap: var(--im-space-3); }
  .brand img { height: 32px; }
  .primary-nav { display: none; }
  .header-tools { margin-left: auto; }
  .hero-grid {
    grid-template-columns: 1fr;
    gap: var(--im-space-5);
    padding-top: var(--im-space-7);
    padding-bottom: var(--im-space-8);
  }
  .hero-art { order: -1; justify-content: flex-start; }
  .hero-art svg { width: 240px; }
  .hero h1 { font-size: var(--im-text-2xl); }
  .cards, .zh-list, .about { grid-template-columns: 1fr; }
  .card, .zh-panel { padding: var(--im-space-5); }
  .section { padding-top: var(--im-space-7); padding-bottom: var(--im-space-7); }
  .about { gap: var(--im-space-5); }
  .facts div { grid-template-columns: 6rem 1fr; }
}
