/*
 * Tipolis Sandbox — Portal helpers
 *
 * Adds the launcher / portal-specific classes on top of
 * tipolis-design-system.css. The portal page (/index.html)
 * uses these to render a simple navigation grid.
 *
 * Source of visual truth: general/index.html
 * Source of spec:         docs/ui/TIPOLIS_UI_SPEC.md
 */

:root {
  --portal-max-width: var(--container-max);
}

body {
  margin: 0;
  font-family: var(--font-body);
  background:
    radial-gradient(circle at top, #0F2440 0%, var(--color-navy-900) 52%, var(--color-navy-1000) 100%);
  color: var(--color-text-body);
  min-height: 100vh;
}

.container {
  max-width: var(--portal-max-width);
  margin: 0 auto;
  padding: var(--space-20) var(--container-pad);
}

@media (max-width: 768px) {
  .container { padding: var(--space-12) var(--container-pad-sm); }
}

header {
  margin-bottom: var(--space-16);
  padding-bottom: var(--space-12);
  border-bottom: 1px solid var(--hairline-on-dark-2);
}

h1 {
  margin: 0 0 var(--space-3);
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(var(--text-6xl), 5vw, var(--text-7xl));
  color: var(--color-text-primary);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-normal);
}

header > p {
  font-family: var(--font-body);
  font-size: var(--text-md);
  line-height: var(--leading-airy);
  color: var(--color-text-body);
  max-width: 780px;
}

h2 {
  margin: 0 0 var(--space-5);
  font-family: var(--font-display);
  font-weight: 400;
  font-size: var(--text-3xl);
  color: var(--color-text-primary);
  line-height: var(--leading-snug);
}

p, li { color: var(--color-text-body); }

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-3);
}

.card {
  background: var(--color-bg-card);
  border: 1px solid var(--color-border-card);
  border-top: 2px solid var(--accent);
  padding: var(--space-7) var(--space-8);
  border-radius: var(--radius-1);
}

section.card + section.card {
  margin-top: var(--space-5);
}

.grid a {
  display: block;
  background: var(--color-bg-card-mid);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-left: 2px solid var(--accent);
  padding: var(--space-5) var(--space-6);
  border-radius: var(--radius-1);
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-mono-3);
  text-transform: uppercase;
  color: var(--color-text-on-dark-2);
  transition: color var(--transition-fast),
              border-color var(--transition-fast),
              background-color var(--transition-fast);
}

.grid a:hover {
  color: var(--accent);
  border-left-color: var(--accent);
  background-color: color-mix(in srgb, var(--accent) 10%, transparent);
}

a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: color var(--transition-fast),
              border-color var(--transition-fast),
              background-color var(--transition-fast);
}

a:hover {
  color: var(--accent);
  border-color: color-mix(in srgb, var(--accent) 50%, transparent);
}

small, footer {
  color: var(--color-text-muted);
  font-size: var(--text-xs);
  letter-spacing: var(--tracking-wide);
}

footer {
  margin-top: var(--space-16);
  padding-top: var(--space-8);
  border-top: 1px solid var(--hairline-on-dark);
}

summary {
  cursor: pointer;
  font-family: var(--font-mono);
  font-size: var(--text-xs-2);
  letter-spacing: var(--tracking-mono-2);
  text-transform: uppercase;
  color: var(--color-text-primary);
  margin-bottom: var(--space-2);
}

details {
  padding: var(--space-3) 0;
  border-top: 1px solid var(--hairline-on-dark);
}

details:last-child {
  border-bottom: 1px solid var(--hairline-on-dark);
}

code {
  font-family: var(--font-mono);
  font-size: var(--text-xs-2);
  color: var(--accent);
}
