/* ============================================================
   praxissoftware.ch — design tokens
   From the praxismieten.ch design system (same brand blue).
   ============================================================ */

:root {
  /* Brand blues */
  --pm-blue-50:  #EAF3FF;
  --pm-blue-100: #D1E5FF;
  --pm-blue-200: #A6CCFF;
  --pm-blue-300: #6FA9FF;
  --pm-blue-400: #3D8CFF;
  --pm-blue-500: #1E7FF0;   /* brand — canonical logo blue */
  --pm-blue-600: #0061D6;
  --pm-blue-700: #0049A8;
  --pm-blue-800: #053477;
  --pm-blue-900: #06214A;

  /* Neutrals */
  --pm-ink-0:   #FFFFFF;
  --pm-ink-50:  #F7F8FB;
  --pm-ink-100: #EFF1F6;
  --pm-ink-150: #E4E7EF;
  --pm-ink-200: #D5DAE4;
  --pm-ink-300: #B7BECD;
  --pm-ink-400: #8A93A6;
  --pm-ink-500: #5E6678;
  --pm-ink-600: #3F4759;
  --pm-ink-700: #2A3142;
  --pm-ink-800: #181D2C;
  --pm-ink-900: #0B0F1A;

  /* Semantic */
  --pm-bg:            var(--pm-ink-50);
  --pm-bg-elevated:   var(--pm-ink-0);
  --pm-fg:            var(--pm-ink-800);
  --pm-fg-strong:     var(--pm-ink-900);
  --pm-fg-muted:      var(--pm-ink-500);
  --pm-fg-subtle:     var(--pm-ink-400);
  --pm-border:        var(--pm-ink-200);
  --pm-border-subtle: var(--pm-ink-150);

  /* Type */
  --pm-font-sans: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --pm-text-xs:  12px;
  --pm-text-sm:  14px;
  --pm-text-md:  17px;
  --pm-text-lg:  19px;
  --pm-text-2xl: 28px;
  --pm-text-3xl: 36px;
  --pm-lh-loose: 1.7;

  /* Radii */
  --pm-radius-md: 12px;
  --pm-radius-xl: 22px;

  /* Elevation */
  --pm-shadow-md:    0 4px 14px rgba(11, 15, 26, 0.06), 0 1px 3px rgba(11, 15, 26, 0.04);
  --pm-shadow-brand: 0 14px 30px -10px rgba(0, 121, 255, 0.45);
  --pm-ring-focus:   0 0 0 4px rgba(0, 121, 255, 0.22);

  /* Motion */
  --pm-ease-standard: cubic-bezier(0.2, 0.7, 0.2, 1);
  --pm-ease-emph:     cubic-bezier(0.22, 1, 0.36, 1);
}

/* ============================================================
   Base
   ============================================================ */

* { box-sizing: border-box; }

body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--pm-bg);
  color: var(--pm-fg);
  font-family: var(--pm-font-sans);
  font-size: var(--pm-text-md);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--pm-blue-600); text-decoration: none; }
a:hover { color: var(--pm-blue-700); text-decoration: underline; text-underline-offset: 3px; }
input::placeholder { color: var(--pm-fg-subtle); }

@keyframes pm-rise {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}

/* ============================================================
   Header + logo
   ============================================================ */

.site-header {
  height: 72px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 0 32px;
  border-bottom: 1px solid var(--pm-border-subtle);
  background: var(--pm-bg-elevated);
}

/* Logo — same construction as praxismieten.de (base.html "Coded Logo"),
   domain swapped to software.ch: one 6px-rounded rect, "praxis" blue on
   white, domain white on blue, flush segments, Inter 600. */
.logo-link {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  border-radius: 6px;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
  font-size: 20px;
  font-weight: 600;
  letter-spacing: -0.5px;
  overflow: hidden;
  transition: transform 0.2s ease;
  flex: none;
}
.logo-link:hover { transform: scale(1.02); text-decoration: none; }
.logo-text {
  display: flex;
  align-items: center;
}
.logo-praxis {
  background: white;
  color: #1e7ff0;
  padding: 8px 0 8px 14px;
  font-weight: 600;
  border-radius: 6px 0 0 6px;
}
.logo-software-ch {
  background: #1e7ff0;
  color: white;
  padding: 8px 14px 8px 0;
  font-weight: 600;
  border-radius: 0 6px 6px 0;
}
@media (max-width: 640px) {
  .logo-link { font-size: 16px; }
  .logo-praxis { padding: 6px 0 6px 12px; }
  .logo-software-ch { padding: 6px 12px 6px 0; }
}

.header-note { font-size: var(--pm-text-sm); color: var(--pm-fg-muted); }

/* ============================================================
   Main
   ============================================================ */

main {
  flex: 1;
  display: grid;
  grid-template-columns: 1fr;
  gap: 56px;
  align-content: start;
  max-width: 880px;
  width: 100%;
  margin: 0 auto;
  padding: 88px 32px 96px;
}

.hero {
  display: flex;
  flex-direction: column;
  gap: 20px;
  max-width: 640px;
}

.eyebrow {
  font-size: var(--pm-text-xs);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--pm-blue-600);
}

.hero h1 {
  margin: 0;
  color: var(--pm-fg-strong);
  font-size: 52px;
  line-height: 1.08;
  letter-spacing: -0.03em;
  text-wrap: pretty;
}

.hero p {
  margin: 0;
  font-size: var(--pm-text-lg);
  line-height: var(--pm-lh-loose);
  color: var(--pm-fg-muted);
  text-wrap: pretty;
}

/* ============================================================
   Waitlist card (form + success state)
   ============================================================ */

.card {
  background: var(--pm-bg-elevated);
  border-radius: var(--pm-radius-xl);
  box-shadow: var(--pm-shadow-md);
  padding: 36px;
}

[hidden] { display: none !important; }

#waitlist-form {
  display: flex;
  flex-direction: column;
  gap: 22px;
}

.form-intro { display: flex; flex-direction: column; gap: 6px; }
.form-intro h2 {
  margin: 0;
  font-size: var(--pm-text-3xl);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--pm-fg-strong);
}
.form-intro p { margin: 0; color: var(--pm-fg-muted); font-size: var(--pm-text-sm); }

.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}

.form-grid label {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: var(--pm-text-sm);
  font-weight: 600;
  color: var(--pm-fg-strong);
}

.form-grid input {
  font: inherit;
  font-weight: 400;
  font-size: var(--pm-text-md);
  color: var(--pm-fg);
  padding: 13px 14px;
  border: 1px solid var(--pm-border);
  border-radius: var(--pm-radius-md);
  background: var(--pm-bg-elevated);
  outline: none;
}
.form-grid input:focus {
  border-color: var(--pm-blue-500);
  box-shadow: var(--pm-ring-focus);
}

.submit-btn {
  align-self: flex-start;
  background: var(--pm-blue-500);
  color: #fff;
  font: inherit;
  font-weight: 600;
  font-size: var(--pm-text-md);
  border: none;
  border-radius: var(--pm-radius-md);
  padding: 14px 26px;
  cursor: pointer;
  transition: background 200ms var(--pm-ease-standard), box-shadow 200ms var(--pm-ease-standard);
}
.submit-btn:hover  { background: var(--pm-blue-600); box-shadow: var(--pm-shadow-brand); }
.submit-btn:active { background: var(--pm-blue-700); box-shadow: none; }
.submit-btn:disabled { opacity: 0.7; cursor: default; box-shadow: none; }

.form-error {
  margin: 0;
  font-size: var(--pm-text-sm);
  font-weight: 600;
  color: #DC2626;
}

#waitlist-success {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 40px;
  animation: pm-rise 360ms var(--pm-ease-emph) both;
}
#waitlist-success h2 { margin: 0; font-size: var(--pm-text-2xl); color: var(--pm-fg-strong); }
#waitlist-success p {
  margin: 0;
  color: var(--pm-fg-muted);
  font-size: var(--pm-text-md);
  line-height: var(--pm-lh-loose);
}
#waitlist-success strong { color: var(--pm-fg-strong); font-weight: 600; }

.reset-btn {
  align-self: flex-start;
  margin-top: 12px;
  background: none;
  border: none;
  padding: 0;
  color: var(--pm-blue-600);
  font: inherit;
  font-weight: 600;
  font-size: var(--pm-text-sm);
  cursor: pointer;
}
.reset-btn:hover { color: var(--pm-blue-700); }

/* ============================================================
   Stats + footer
   ============================================================ */

.stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 32px;
  border-top: 1px solid var(--pm-border-subtle);
  padding-top: 40px;
}
.stat { display: flex; flex-direction: column; gap: 6px; }
.stat-value {
  font-size: var(--pm-text-2xl);
  font-weight: 800;
  color: var(--pm-fg-strong);
  letter-spacing: -0.02em;
}
.stat-label { font-size: var(--pm-text-sm); color: var(--pm-fg-muted); }

.site-footer {
  border-top: 1px solid var(--pm-border-subtle);
  padding: 28px 32px;
  display: flex;
  justify-content: center;
  text-align: center;
}
.site-footer span { font-size: var(--pm-text-sm); color: var(--pm-fg-muted); }

/* ============================================================
   Responsive
   ============================================================ */

@media (max-width: 720px) {
  .site-header { padding: 0 20px; }
  .header-note { display: none; }
  main { padding: 56px 20px 72px; gap: 40px; }
  .hero h1 { font-size: 38px; }
  .card { padding: 24px; }
  #waitlist-success { padding: 28px 24px; }
  .form-grid { grid-template-columns: 1fr; }
  .stats { grid-template-columns: 1fr; }
}
