@layer base {
  :root {
    --ink:#203b32;
    --muted:#52665c;
    --green:#27634b;
    --pale:#eaf1e8;
    --line:#d9e1d7;
    --paper:#fafbf7;
    --white:#fff;
    --radius:18px;
  }
  * {
    box-sizing:border-box;
  }
  body {
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font:17px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  }
  h1,h2,h3,p {
    margin-top:0;
  }
  h1,h2,h3 {
    line-height:1.16;
    letter-spacing:-.035em;
  }
  h1 {
    font-size:clamp(36px,5.5vw,68px);
    font-weight:650;
    margin-bottom:24px;
  }
  h2 {
    font-size:30px;
    font-weight:600;
  }
  h3 {
    font-size:23px;
    font-weight:600;
  }
  a {
    color:inherit;
    text-decoration:none;
  }
  button,input {
    font:inherit;
  }
  button,a,input {
    touch-action:manipulation;
  }
  a:focus-visible,button:focus-visible,input:focus-visible {
    outline:3px solid #397354;
    outline-offset:4px;
  }
  button,input[type=submit] {
    cursor:pointer;
  }
  button:disabled {
    opacity:.4;
    cursor:default;
  }
  .site-header,.site-main,.site-footer {
    width:min(1180px,100% - 80px);
    margin:auto;
  }
  .site-header {
    height:100px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    border-bottom:1px solid var(--line);
  }
  .brand {
    display:flex;
    gap:13px;
    align-items:center;
    font-size:24px;
    font-weight:650;
    letter-spacing:-.8px;
  }
  .brand-mark {
    background:var(--green);
    color:white;
    width:41px;
    height:41px;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:12px;
    font-size:31px;
    line-height:1;
  }
  .brand-mark span {
    color:#d5e3af;
    font-size:21px;
    align-self:flex-end;
    margin-bottom:7px;
  }
  .site-header nav {
    display:flex;
    gap:38px;
    align-items:center;
    font-size:15px;
  }
  .language-label {
    font-size:12px;
    letter-spacing:2px;
    color:var(--muted);
  }
  .site-footer {
    border-top:1px solid var(--line);
    padding:28px 0;
    display:flex;
    justify-content:space-between;
    gap:24px;
    font-size:12px;
    color:var(--muted);
    margin-top:80px;
  }
  .hero {
    display:grid;
    grid-template-columns:1.1fr 1fr;
    gap:75px;
    padding:75px 0 80px;
    align-items:center;
  }
  .eyebrow,.note-label {
    font-size:11px;
    letter-spacing:1.7px;
    font-weight:650;
    color:var(--muted);
    margin-bottom:24px;
  }
  .hero h1 {
    font-size:clamp(48px,6.1vw,78px);
    line-height:1.04;
  }
  .hero h1 span {
    color:var(--green);
  }
  .lead {
    font-size:19px;
    line-height:1.65;
    color:var(--muted);
    max-width:600px;
  }
  .hero .lead {
    max-width:420px;
    margin-bottom:30px;
  }
  .button {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:50px;
    padding:12px 23px;
    background:var(--green);
    color:white;
    border-radius:10px;
    border:1px solid var(--green);
    font-size:15px;
    font-weight:600;
    text-align:center;
    line-height:1.5;
  }
  .button:hover {
    background:#1b4c38;
  }
  .text-link {
    font-size:15px;
    color:var(--green);
    text-decoration:underline;
    text-underline-offset:5px;
  }
  .secondary-link {
    display:block;
    margin-top:20px;
    width:fit-content;
  }
  .hello-note {
    background:var(--pale);
    padding:34px;
    border-radius:var(--radius);
  }
  .note-label {
    display:block;
    margin-bottom:30px;
  }
  .dialogue-line {
    background:white;
    border-radius:15px 15px 15px 3px;
    padding:14px 20px;
    margin-bottom:15px;
    width:fit-content;
    min-width:175px;
  }
  .dialogue-line span {
    display:block;
    font-size:24px;
    letter-spacing:-.6px;
    font-weight:550;
  }
  .dialogue-line small {
    font-size:13px;
    color:var(--muted);
  }
  .dialogue-line.reply {
    margin-left:auto;
    background:#d5e3cc;
    border-radius:15px 15px 3px 15px;
  }
  .note-bottom {
    margin:30px 0 0;
    font-size:12px;
    color:var(--muted);
  }
  .today-section {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:75px;
    padding:40px 0 60px;
    border-top:1px solid var(--line);
    align-items:center;
  }
  .today-section h2 {
    font-size:27px;
  }
  .today-section p:not(.eyebrow),.try-section p {
    font-size:15px;
    color:var(--muted);
  }
  .lesson-preview {
    display:flex;
    align-items:center;
    gap:20px;
    background:white;
    padding:26px;
    border:1px solid var(--line);
    border-radius:var(--radius);
  }
  .lesson-preview h3 {
    font-size:19px;
    margin-bottom:8px;
  }
  .lesson-preview p {
    margin:0;
  }
  .day-number {
    font-size:27px;
    font-variant-numeric:tabular-nums;
    color:var(--green);
    flex-shrink:0;
  }
  .try-section {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:75px;
    padding:40px 0;
    border-top:1px solid var(--line);
  }
  .try-section h2 {
    font-size:27px;
  }
  .sample-exercise {
    padding:24px;
    background:var(--pale);
    border-radius:var(--radius);
  }
  .sample-exercise p:last-child {
    font-size:12px;
    margin-top:18px;
    margin-bottom:0;
  }
  .sample-options {
    display:flex;
    flex-wrap:wrap;
    gap:8px;
  }
  .sample-options button,.word-bank button,.character-keys button {
    min-height:44px;
    border:1px solid #bacbbd;
    background:white;
    padding:8px 15px;
    border-radius:8px;
    color:var(--ink);
  }
  .sample-options button:hover,.word-bank button:hover,.character-keys button:hover {
    background:#dfebdb;
  }
  .page-heading {
    padding:55px 0 35px;
    max-width:760px;
  }
  .week-list {
    display:grid;
    gap:12px;
  }
  .week-item {
    display:flex;
    gap:26px;
    align-items:center;
    padding:26px;
    border-radius:var(--radius);
    background:white;
    border:1px solid var(--line);
  }
  .week-item>div {
    flex:1;
  }
  .week-item h2 {
    font-size:24px;
    margin-bottom:8px;
  }
  .week-item p {
    margin-bottom:8px;
    font-size:15px;
    color:var(--muted);
  }
  .status,.planned-label {
    font-size:12px;
    color:var(--green);
  }
  .planned {
    background:transparent;
  }
  .planned-label {
    color:var(--muted);
  }
  .lesson-layout {
    display:grid;
    grid-template-columns:minmax(0,740px) 270px;
    gap:80px;
    margin-top:28px;
  }
  .site-main>.text-link {
    display:inline-block;
    margin-top:30px;
  }
  .lesson-content h1 {
    font-size:47px;
  }
  .lesson-sidebar {
    height:fit-content;
    position:sticky;
    top:32px;
    background:var(--pale);
    padding:28px;
    border-radius:var(--radius);
    font-size:14px;
  }
  .sidebar-german {
    font-size:30px;
    line-height:1.4;
    color:var(--green);
    margin:30px 0;
  }
  .notice {
    font-size:14px;
    padding:18px 20px;
    background:var(--pale);
    border-radius:10px;
    color:var(--ink);
    line-height:1.7;
  }
  .explanation {
    margin:48px 0;
    position:relative;
  }
  .section-number {
    font-size:12px;
    color:var(--green);
    margin-bottom:12px;
    display:block;
  }
  .explanation p {
    color:var(--muted);
  }
  .examples {
    border-left:3px solid #a6bfa4;
    padding-left:23px;
    margin-top:25px;
  }
  .examples>div {
    margin:0 0 20px;
  }
  .examples p[lang=de] {
    font-size:23px;
    font-weight:500;
    color:var(--ink);
    margin-bottom:3px;
  }
  .examples .translation {
    font-size:14px;
    margin-bottom:0;
  }
  .vocabulary {
    background:white;
    border:1px solid var(--line);
    padding:25px;
    border-radius:var(--radius);
  }
  .vocabulary>div {
    display:flex;
    justify-content:space-between;
    gap:20px;
    margin-top:12px;
    font-size:15px;
  }
  .vocabulary span {
    color:var(--muted);
  }
  .lesson-bottom {
    margin-top:50px;
  }
  .small {
    font-size:12px!important;
    line-height:1.7;
    color:var(--muted);
  }
  .practice-shell {
    max-width:720px;
    margin:35px auto 0;
  }
  .practice-meta {
    display:flex;
    justify-content:space-between;
    font-size:13px;
    color:var(--muted);
    margin-top:35px;
  }
  progress {
    display:block;
    width:100%;
    height:6px;
    border:0;
    border-radius:8px;
    overflow:hidden;
    margin:12px 0 28px;
    background:var(--line);
  }
  progress::-webkit-progress-bar {
    background:var(--line);
  }
  progress::-webkit-progress-value {
    background:var(--green);
  }
  progress::-moz-progress-bar {
    background:var(--green);
  }
  .exercise-card {
    padding:38px;
    background:white;
    border:1px solid var(--line);
    border-radius:var(--radius);
  }
  .exercise-card h1 {
    font-size:32px;
    line-height:1.3;
  }
  .german-prompt {
    font-size:29px;
    color:var(--green);
  }
  fieldset {
    padding:0;
    margin:0 0 26px;
    border:0;
  }
  .choice {
    display:flex;
    gap:14px;
    align-items:center;
    padding:16px;
    border:1px solid var(--line);
    border-radius:10px;
    margin:10px 0;
    cursor:pointer;
  }
  .choice:has(input:checked) {
    background:var(--pale);
    border-color:var(--green);
  }
  .choice input {
    width:19px;
    height:19px;
    accent-color:var(--green);
  }
  input[type=text] {
    width:100%;
    border:1px solid #9bad9e;
    border-radius:9px;
    padding:13px;
    margin-top:8px;
    color:var(--ink);
    font-size:20px;
    background:#fff;
  }
  label {
    font-size:15px;
  }
  .word-bank {
    display:flex;
    gap:8px;
    flex-wrap:wrap;
  }
  .character-keys {
    display:flex;
    gap:6px;
    margin-top:12px;
    flex-wrap:wrap;
  }
  .character-keys button {
    padding:6px 12px;
    font-size:15px;
  }
  .exercise-card input[type=submit] {
    margin-top:15px;
  }
  .feedback {
    padding:20px;
    border-radius:10px;
    margin:20px 0;
    font-size:15px;
  }
  .feedback h2 {
    font-size:23px;
    margin-bottom:12px;
  }
  .feedback p:last-child {
    margin-bottom:0;
  }
  .success {
    background:#e6f1e3;
    color:#214d30;
  }
  .error {
    background:#fff0e8;
    color:#7b3824;
  }
  .saved-answer {
    font-size:24px;
    overflow-wrap:anywhere;
  }
  .practice-save {
    font-size:12px;
    color:var(--muted);
    text-align:center;
    margin-top:23px;
  }
  .result-page {
    max-width:760px;
    margin:70px auto;
    text-align:center;
  }
  .result-page .lead {
    margin:0 auto 30px;
  }
  .result-page .secondary-link {
    margin:20px auto;
  }
  .result-page .small {
    max-width:490px;
    margin:30px auto;
  }
  .result-note {
    background:var(--pale);
    border-radius:var(--radius);
    padding:34px;
    margin:28px 0;
  }
  .result-note>span {
    font-size:32px;
    overflow-wrap:anywhere;
  }
  .result-note p {
    font-size:12px;
    margin:12px 0 0;
    color:var(--muted);
  }
  .skip-link {
    position:absolute;
    left:15px;
    top:-100px;
    background:white;
    padding:10px;
    z-index:10;
  }
  .skip-link:focus {
    top:10px;
  }
  .sr-only {
    position:absolute;
    width:1px;
    height:1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
  }
  @media(max-width:900px) {
    .hero,.today-section,.try-section {
      gap:30px;
    }
    .lesson-layout {
      grid-template-columns:minmax(0,1fr);
      gap:30px;
    }
    .lesson-sidebar {
      position:static;
    }
    .week-item {
      flex-wrap:wrap;
    }
    .week-item>.button {
      margin-left:58px;
    }
    .lesson-content h1 {
      font-size:40px;
    }
  }
  @media(max-width:640px) {
    .site-header,.site-main,.site-footer {
      width:calc(100% - 36px);
    }
    .site-header {
      height:80px;
    }
    .brand {
      font-size:20px;
    }
    .brand-mark {
      width:34px;
      height:34px;
      font-size:26px;
    }
    .site-header nav {
      gap:14px;
      font-size:13px;
    }
    .language-label {
      display:none;
    }
    .hero,.today-section,.try-section {
      grid-template-columns:minmax(0,1fr);
      gap:30px;
    }
    .hero {
      padding:42px 0;
    }
    .hero h1 {
      font-size:56px;
    }
    .lead {
      font-size:17px;
    }
    .hero .lead {
      margin-bottom:24px;
    }
    .hello-note {
      padding:25px;
    }
    .eyebrow {
      font-size:10px;
      letter-spacing:1.3px;
      margin-bottom:20px;
    }
    .site-footer {
      flex-direction:column;
      gap:8px;
      margin-top:50px;
    }
    .week-item {
      padding:20px;
      gap:16px;
    }
    .week-item h2 {
      font-size:21px;
    }
    .week-item>div {
      min-width:180px;
    }
    .week-item>.button {
      margin-left:0;
      width:100%;
    }
    .page-heading {
      padding-top:38px;
    }
    .page-heading h1 {
      font-size:40px;
    }
    .lesson-content h1 {
      font-size:37px;
    }
    .vocabulary>div {
      flex-direction:column;
      gap:0;
    }
    .practice-shell {
      margin-top:25px;
    }
    .exercise-card {
      padding:24px 20px;
    }
    .exercise-card h1 {
      font-size:27px;
    }
    .practice-meta {
      font-size:12px;
    }
    .result-page {
      margin-top:40px;
    }
    .result-page h1 {
      font-size:42px;
    }
    .result-note {
      padding:24px;
    }
    .result-note>span {
      font-size:26px;
    }
    .button {
      max-width:100%;
    }
  }
}
