:root{
    --paper:#FFFCF5;
    --paper-2:#FFF6E0;
    --ink:#232B4D;
    --ink-soft:#5B6288;
    --teal:#1E9E8C;
    --teal-deep:#0E6E60;
    --sky:#2F8FE0;
    --sky-deep:#1F63A8;
    --rot:#F0563D;
    --rot-deep:#C93E28;
    --mustard:#FFB627;
    --mustard-deep:#D9930A;
    --plum:#9457D6;
    --plum-deep:#6E37AA;
    --grass:#3FB871;
    --line:#EADFC4;
    --line-strong:#232B4D;
    --white:#FFFFFF;

    --font-display:'Baloo 2', sans-serif;
    --font-body:'Nunito Sans', sans-serif;
    --font-mono:'IBM Plex Mono', monospace;
  }

  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:
      radial-gradient(circle at 6px 6px, #F0E6C8 1.6px, transparent 1.6px) 0 0/26px 26px,
      var(--paper);
    color:var(--ink);
    font-family:var(--font-body);
    font-size:17px;
    line-height:1.65;
  }
  h1,h2,h3,h4{
    font-family:var(--font-display);
    font-weight:700;
    margin:0;
    color:var(--ink);
  }
  a{color:inherit;}
  img{max-width:100%;display:block;}
  button{font-family:inherit;}
  strong{color:var(--ink);}

  ::selection{background:var(--mustard); color:var(--ink);}

  :focus-visible{
    outline:3px solid var(--rot);
    outline-offset:2px;
  }

  .wrap{
    max-width:1080px;
    margin:0 auto;
    padding:0 28px;
  }

  /* ---------- NAV ---------- */
  header.site{
    position:sticky;
    top:0;
    z-index:50;
    background:rgba(255,252,245,0.94);
    backdrop-filter:blur(6px);
    border-bottom:3px solid var(--ink);
  }
  .nav{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:16px 0;
  }
  .brand{
    font-family:var(--font-display);
    font-weight:800;
    font-size:1.3rem;
    letter-spacing:-0.01em;
    display:flex;
    align-items:center;
    gap:10px;
  }
  .brand small{
    font-family:var(--font-mono);
    font-weight:700;
    font-size:0.62rem;
    color:var(--white);
    background:var(--teal);
    padding:4px 9px;
    border-radius:100px;
    letter-spacing:0.08em;
    text-transform:uppercase;
  }
  nav.links{
    display:flex;
    gap:6px;
    font-family:var(--font-display);
    font-weight:600;
    font-size:0.86rem;
  }
  nav.links a{
    text-decoration:none;
    color:var(--ink);
    padding:8px 14px;
    border-radius:100px;
    transition:background .15s, color .15s, transform .15s;
  }
  nav.links a:nth-child(1):hover{background:#FDE9C8; color:var(--mustard-deep);}
  nav.links a:nth-child(2):hover{background:#D6F2ED; color:var(--teal-deep);}
  nav.links a:nth-child(3):hover{background:#E8DBFA; color:var(--plum-deep);}
  nav.links a:nth-child(4):hover{background:#FFE1DA; color:var(--rot-deep);}
  nav.links a:nth-child(5):hover{background:#DCEAFB; color:var(--sky-deep);}
  nav.links a:nth-child(6):hover{background:#DFF5E6; color:var(--teal-deep);}
  nav.links a:hover{transform:translateY(-1px);}
  .nav-cta{
    display:none;
  }
  @media(min-width:720px){
    .nav-cta{display:inline-block;}
  }

  .btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-family:var(--font-display);
    font-weight:700;
    font-size:0.95rem;
    text-decoration:none;
    padding:12px 24px;
    border-radius:100px;
    border:2.5px solid var(--ink);
    background:var(--rot);
    color:var(--white);
    cursor:pointer;
    box-shadow:4px 4px 0 var(--ink);
    transition:transform .12s ease, box-shadow .12s ease, background .12s ease;
  }
  .btn:hover{transform:translate(-2px,-2px); box-shadow:6px 6px 0 var(--ink); background:var(--rot-deep);}
  .btn:active{transform:translate(1px,1px); box-shadow:2px 2px 0 var(--ink);}
  .btn.secondary{
    background:var(--white);
    color:var(--ink);
    border-color:var(--ink);
  }
  .btn.secondary:hover{background:var(--mustard);}

  /* ---------- HERO ---------- */
  .hero{
    padding:64px 0 40px;
    display:block;
    text-align:center;
  }
  .hero > div{
    max-width:700px;
    margin:0 auto;
  }
  @media(min-width:900px){
    .hero{padding:88px 0 68px;}
  }
  .eyebrow{
    font-family:var(--font-mono);
    font-weight:700;
    font-size:0.72rem;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--rot-deep);
    background:#FFE1DA;
    border:2px solid var(--rot);
    padding:5px 12px;
    border-radius:100px;
    margin-bottom:16px;
    display:inline-block;
  }
  .hero h1{
    font-size:clamp(2.2rem, 4.6vw, 3.5rem);
    line-height:1.08;
    letter-spacing:-0.01em;
  }
  .hero h1 em{
    font-style:normal;
    color:var(--teal-deep);
    background:linear-gradient(180deg, transparent 62%, #BDEFE4 62%);
    padding:0 2px;
  }
  .hero p.lede{
    margin:20px auto 0;
    font-size:1.13rem;
    color:var(--ink-soft);
    max-width:46ch;
  }
  .hero-ctas{
    margin-top:30px;
    display:flex;
    gap:14px;
    flex-wrap:wrap;
    justify-content:center;
  }
  .approach-chips{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-top:18px;
    justify-content:center;
  }
  .approach-chip{
    font-family:var(--font-display);
    font-weight:700;
    font-size:0.82rem;
    padding:6px 14px;
    border-radius:100px;
    border:2px solid var(--ink);
    background:var(--white);
  }
  .approach-chip:nth-child(1){background:#FFE1DA;}
  .approach-chip:nth-child(2){background:#D6F2ED;}
  .approach-chip:nth-child(3){background:#FDE9C8;}
  .approach-chip:nth-child(4){background:#E8DBFA;}
  .hero-note{
    margin-top:22px;
    font-family:var(--font-mono);
    font-size:0.76rem;
    color:var(--ink-soft);
    letter-spacing:0.02em;
  }

  /* ---------- LINE MAP (signature element) ---------- */
  .linemap-card{
    background:var(--white);
    border:3px solid var(--ink);
    border-radius:20px;
    padding:22px 20px 16px;
    box-shadow:7px 7px 0 #E4D9B8;
  }
  .linemap-title{
    font-family:var(--font-mono);
    font-weight:600;
    font-size:0.7rem;
    letter-spacing:0.1em;
    text-transform:uppercase;
    color:var(--ink-soft);
    display:flex;
    justify-content:space-between;
    margin-bottom:10px;
  }
  .linemap-legend{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    margin-top:14px;
    font-family:var(--font-display);
    font-weight:600;
    font-size:0.78rem;
  }
  .legend-item{
    display:flex; align-items:center; gap:6px; color:var(--ink);
    background:var(--paper-2);
    padding:5px 10px 5px 6px;
    border-radius:100px;
  }
  .legend-dot{width:11px; height:11px; border-radius:50%; display:inline-block;}

  /* ---------- SECTION SCAFFOLDING ---------- */
  section{
    padding:48px 0;
  }
  section#sobre-mi, section#gramatica, section#vocabulario, section#materiales, section#precios, section#empresas, section#contacto{
    padding:40px 28px 48px;
    border:3px solid var(--ink);
    border-radius:28px;
    margin:0 auto 40px;
    max-width:1080px;
  }
  #sobre-mi{background:#FDF3E1; box-shadow:8px 8px 0 var(--mustard);}
  #gramatica{background:#E7F8F4; box-shadow:8px 8px 0 var(--teal); margin-top:40px;}
  #vocabulario{background:#FAF0FF; box-shadow:8px 8px 0 var(--plum); margin-top:40px;}
  #materiales{background:#FFF7E9; box-shadow:8px 8px 0 var(--rot-deep);}
  #precios{background:#E9F2FF; box-shadow:8px 8px 0 var(--sky);}
  #empresas{background:#EAF9EF; box-shadow:8px 8px 0 var(--grass);}
  #contacto{background:#FFEEEA; box-shadow:8px 8px 0 var(--rot); margin-bottom:56px;}
  @media(max-width:720px){
    section#sobre-mi, section#gramatica, section#vocabulario, section#materiales, section#precios, section#empresas, section#contacto{
      border-radius:18px; padding:28px 18px 36px;
    }
  }
  .section-head{
    max-width:60ch;
    margin-bottom:36px;
  }
  .section-head .eyebrow{margin-bottom:10px;}
  .section-head h2{
    font-size:clamp(1.7rem,3vw,2.3rem);
    letter-spacing:-0.01em;
  }
  .section-head p{
    color:var(--ink-soft);
    margin-top:12px;
  }

  /* about */
  .about-grid{
    display:grid;
    gap:28px;
  }
  @media(min-width:800px){
    .about-grid{grid-template-columns: 1fr 1fr;}
  }
  .credential-list{
    list-style:none;
    margin:0; padding:0;
    display:grid;
    gap:12px;
  }
  .credential-list li{
    display:flex;
    gap:12px;
    align-items:baseline;
    font-size:0.98rem;
    border-bottom:1px dashed var(--line);
    padding-bottom:10px;
  }
  .credential-list .tag{
    font-family:var(--font-mono);
    font-size:0.68rem;
    text-transform:uppercase;
    letter-spacing:0.06em;
    color:var(--teal);
    min-width:88px;
  }

  /* tabs (verbs) */
  .tabs{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    margin-bottom:24px;
  }
  .tab-btn{
    background:var(--white);
    border:2.5px solid var(--ink);
    font-family:var(--font-display);
    font-weight:600;
    font-size:0.85rem;
    color:var(--ink);
    padding:8px 16px;
    border-radius:100px;
    cursor:pointer;
    transition:transform .12s, background .12s, color .12s;
  }
  .tab-btn:hover{transform:translateY(-2px);}
  .tab-btn.active{
    color:var(--white);
    background:var(--teal-deep);
    border-color:var(--teal-deep);
  }
  .tab-panel{display:none;}
  .tab-panel.active{display:block; animation:fadein .25s ease;}
  @keyframes fadein{from{opacity:0; transform:translateY(4px);} to{opacity:1; transform:translateY(0);}}

  table.grammar{
    width:100%;
    border-collapse:separate;
    border-spacing:0;
    background:var(--white);
    font-size:0.95rem;
    border:2.5px solid var(--ink);
    border-radius:14px;
    overflow:hidden;
  }
  table.grammar caption{
    text-align:left;
    font-family:var(--font-display);
    font-weight:700;
    font-size:0.95rem;
    color:var(--ink);
    margin-bottom:10px;
  }
  table.grammar th, table.grammar td{
    padding:11px 14px;
    border-bottom:1.5px solid var(--line);
    border-right:1.5px solid var(--line);
    text-align:left;
    vertical-align:top;
  }
  table.grammar tr:last-child td, table.grammar tr:last-child th{border-bottom:none;}
  table.grammar tr th:last-child, table.grammar tr td:last-child{border-right:none;}
  table.grammar thead th{
    background:var(--teal-deep);
    color:var(--white);
    font-family:var(--font-mono);
    font-size:0.72rem;
    letter-spacing:0.05em;
    text-transform:uppercase;
    font-weight:600;
    border-right:1.5px solid rgba(255,255,255,0.25);
  }
  table.grammar tbody th{
    background:var(--paper-2);
    font-family:var(--font-mono);
    font-weight:600;
    font-size:0.82rem;
    white-space:nowrap;
    color:var(--ink);
  }
  table.grammar tr:nth-child(even) td{background:#FBFAF2;}
  .table-scroll{overflow-x:auto; margin-bottom:16px; border-radius:14px;}
  .table-note{
    font-size:0.9rem;
    color:var(--ink-soft);
    background:var(--paper-2);
    border-left:4px solid var(--mustard);
    padding:10px 14px;
    border-radius:0 10px 10px 0;
    margin:0 0 34px;
  }

  .kasus-block{margin-bottom:44px;}
  .kasus-block h3{
    font-size:1.25rem;
    margin-bottom:4px;
    display:flex;
    align-items:center;
    gap:10px;
  }
  .kasus-swatch{
    width:16px; height:16px; border-radius:50%; display:inline-block; border:2px solid var(--ink);
  }
  .kasus-block .kasus-sub{
    font-family:var(--font-mono);
    font-size:0.78rem;
    color:var(--ink-soft);
    margin-bottom:14px;
    display:block;
  }

  .prep-grid{
    display:grid;
    gap:18px;
    grid-template-columns:1fr;
  }
  @media(min-width:700px){
    .prep-grid{grid-template-columns:repeat(2,1fr);}
  }
  @media(min-width:1000px){
    .prep-grid{grid-template-columns:repeat(4,1fr);}
  }
  .prep-card{
    background:var(--white);
    border:2.5px solid var(--ink);
    border-top:8px solid var(--teal);
    padding:16px 16px 18px;
    border-radius:16px;
  }
  .prep-card.akk{border-top-color:var(--rot);}
  .prep-card.dat{border-top-color:var(--mustard);}
  .prep-card.gen{border-top-color:var(--plum);}
  .prep-card.wechsel{border-top-color:var(--sky);}
  .prep-card h4{
    font-family:var(--font-mono);
    font-size:0.76rem;
    text-transform:uppercase;
    letter-spacing:0.05em;
    margin-bottom:10px;
  }
  .prep-card ul{
    margin:0; padding:0;
    list-style:none;
    display:flex;
    flex-wrap:wrap;
    gap:6px 8px;
  }
  .prep-card li{
    font-size:0.88rem;
    font-weight:600;
    background:var(--paper-2);
    padding:3px 10px;
    border-radius:100px;
    border:1.5px solid var(--line);
  }

  /* vocab */
  .vocab-grid{
    display:grid;
    gap:18px;
  }
  @media(min-width:760px){
    .vocab-grid{grid-template-columns:repeat(2,1fr);}
  }
  .vocab-card{
    border:2.5px solid var(--ink);
    background:var(--white);
    border-radius:18px;
    overflow:hidden;
    --accent:var(--teal);
  }
  .vocab-card.c-coral{--accent:var(--rot);}
  .vocab-card.c-sun{--accent:var(--mustard);}
  .vocab-card.c-grass{--accent:var(--grass);}
  .vocab-card.c-sky{--accent:var(--sky);}
  .vocab-card.c-grape{--accent:var(--plum);}
  .vocab-card.c-teal{--accent:var(--teal);}
  .vocab-toggle{
    width:100%;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    background:var(--accent);
    border:none;
    border-bottom:2.5px solid var(--ink);
    padding:16px 18px;
    text-align:left;
    cursor:pointer;
    font-family:var(--font-display);
    font-size:1.08rem;
    font-weight:700;
    color:var(--white);
  }
  .vocab-toggle .icon{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:34px; height:34px;
    background:var(--white);
    border-radius:50%;
    font-size:1.1rem;
    margin-right:10px;
    flex-shrink:0;
  }
  .vocab-toggle .label-group{display:flex; align-items:center;}
  .vocab-toggle .count{
    font-family:var(--font-mono);
    font-size:0.68rem;
    color:var(--white);
    opacity:0.9;
    font-weight:600;
    white-space:nowrap;
    display:flex;
    align-items:center;
    gap:6px;
  }
  .vocab-toggle .chev{
    transition:transform .2s ease;
    font-size:1rem;
    background:var(--white);
    color:var(--ink);
    width:20px;height:20px;
    border-radius:50%;
    display:inline-flex;
    align-items:center;
    justify-content:center;
  }
  .vocab-card.open .vocab-toggle .chev{transform:rotate(45deg);}
  .vocab-body{
    max-height:0;
    overflow:hidden;
    transition:max-height .3s ease;
  }
  .vocab-card.open .vocab-body{max-height:900px;}
  .vocab-list{
    list-style:none;
    margin:0;
    padding:14px 18px 18px;
    display:grid;
    grid-template-columns:1fr;
    gap:2px;
  }
  .vocab-list li{
    display:flex;
    justify-content:space-between;
    gap:12px;
    padding:7px 0;
    border-bottom:1.5px dashed var(--line);
    font-size:0.92rem;
  }
  .vocab-list li:last-child{border-bottom:none;}
  .vocab-de{font-weight:700;}
  .vocab-de .art{
    font-family:var(--font-mono);
    font-size:0.72rem;
    font-weight:700;
    color:var(--white);
    background:var(--accent);
    margin-right:6px;
    padding:1px 6px;
    border-radius:6px;
  }
  .vocab-es{color:var(--ink-soft); text-align:right;}

  /* materiales teaser */
  .materiales-grid{
    display:grid;
    gap:20px;
    grid-template-columns:1fr;
  }
  @media(min-width:700px){
    .materiales-grid{grid-template-columns:repeat(2,1fr);}
  }
  .materiales-card{
    display:block;
    text-decoration:none;
    background:var(--white);
    border:3px solid var(--ink);
    border-radius:20px;
    padding:26px 24px;
    transition:transform .12s ease, box-shadow .12s ease;
  }
  .materiales-card.m-teal{box-shadow:6px 6px 0 var(--teal);}
  .materiales-card.m-plum{box-shadow:6px 6px 0 var(--plum);}
  .materiales-card:hover{transform:translate(-2px,-2px);}
  .materiales-card.m-teal:hover{box-shadow:8px 8px 0 var(--teal);}
  .materiales-card.m-plum:hover{box-shadow:8px 8px 0 var(--plum);}
  .materiales-icon{
    font-size:2rem;
    display:inline-block;
    margin-bottom:10px;
  }
  .materiales-card h3{
    font-size:1.3rem;
    margin-bottom:8px;
  }
  .materiales-card p{
    color:var(--ink-soft);
    font-size:0.94rem;
    margin:0 0 14px;
  }
  .materiales-link{
    font-family:var(--font-display);
    font-weight:700;
    font-size:0.9rem;
    color:var(--ink);
  }

  /* pricing */
  .price-grid{
    display:grid;
    gap:20px;
    grid-template-columns:1fr;
  }
  @media(min-width:820px){
    .price-grid{grid-template-columns:repeat(3,1fr);}
  }
  .price-card{
    background:var(--white);
    border:3px solid var(--ink);
    border-radius:20px;
    padding:22px 20px 26px;
    display:flex;
    flex-direction:column;
    gap:14px;
    position:relative;
  }
  .price-card.tier-individual{box-shadow:6px 6px 0 var(--sky);}
  .price-card.tier-grupal{box-shadow:6px 6px 0 var(--grass);}
  .price-card.tier-curso{box-shadow:6px 6px 0 var(--mustard); border-color:var(--ink);}
  .price-badge{
    align-self:flex-start;
    font-family:var(--font-mono);
    font-weight:700;
    font-size:0.68rem;
    text-transform:uppercase;
    letter-spacing:0.05em;
    color:var(--white);
    padding:4px 12px;
    border-radius:100px;
  }
  .tier-individual .price-badge{background:var(--sky-deep);}
  .tier-grupal .price-badge{background:var(--teal-deep);}
  .tier-curso .price-badge{background:var(--mustard-deep);}
  .price-card h3{
    font-size:1.3rem;
  }
  .price-card .price-sub{
    color:var(--ink-soft);
    font-size:0.9rem;
    margin-top:-8px;
  }
  .price-amounts{
    list-style:none;
    margin:4px 0 0;
    padding:0;
    display:grid;
    gap:6px;
  }
  .price-amounts li{
    display:flex;
    justify-content:space-between;
    gap:10px;
    font-family:var(--font-mono);
    font-size:0.88rem;
    background:var(--paper-2);
    padding:6px 10px;
    border-radius:8px;
  }
  .price-amounts li .val{font-weight:700; color:var(--ink);}
  .price-card p.desc{
    font-size:0.92rem;
    color:var(--ink-soft);
    margin:0;
    flex-grow:1;
  }
  .price-card .btn{
    align-self:flex-start;
    padding:9px 18px;
    font-size:0.85rem;
    margin-top:4px;
  }
  .price-note{
    margin-top:22px;
    font-size:0.86rem;
    color:var(--ink-soft);
    background:var(--paper-2);
    border-left:4px solid var(--sky);
    padding:10px 14px;
    border-radius:0 10px 10px 0;
  }

  /* empresas */
  .empresas-layout{
    display:grid;
    gap:30px;
  }
  @media(min-width:860px){
    .empresas-layout{grid-template-columns:1fr 1fr; align-items:start;}
  }
  .team-banner{
    background:var(--ink);
    color:var(--white);
    border-radius:18px;
    padding:22px 22px 24px;
    display:flex;
    flex-direction:column;
    gap:10px;
  }
  .team-banner .team-icons{
    display:flex;
    gap:-4px;
    font-size:1.6rem;
    margin-bottom:2px;
  }
  .team-banner .team-icons span{margin-right:-6px;}
  .team-banner h3{
    color:var(--white);
    font-size:1.25rem;
  }
  .team-banner p{
    color:#D7DCEE;
    font-size:0.94rem;
    margin:0;
  }
  .feature-list{
    list-style:none;
    margin:0;
    padding:0;
    display:grid;
    gap:12px;
  }
  .feature-list li{
    display:flex;
    gap:12px;
    align-items:flex-start;
    background:var(--white);
    border:2px solid var(--ink);
    border-radius:14px;
    padding:12px 14px;
    font-size:0.94rem;
  }
  .feature-list .f-icon{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:30px; height:30px;
    background:var(--grass);
    border-radius:50%;
    flex-shrink:0;
    font-size:1rem;
  }

  /* contact */
  .contact-wrap{
    display:grid;
    gap:36px;
  }
  @media(min-width:860px){
    .contact-wrap{grid-template-columns:0.9fr 1.1fr;}
  }
  .contact-info{
    display:flex;
    flex-direction:column;
    gap:18px;
  }
  .info-row{
    display:flex;
    gap:12px;
    align-items:flex-start;
    font-size:0.96rem;
  }
  .info-row .tag{
    font-family:var(--font-mono);
    font-weight:700;
    font-size:0.66rem;
    text-transform:uppercase;
    color:var(--white);
    background:var(--rot);
    border-radius:100px;
    min-width:76px;
    text-align:center;
    padding:3px 8px;
  }
  form.contact{
    background:var(--white);
    border:3px solid var(--ink);
    border-radius:20px;
    padding:26px;
    display:grid;
    gap:16px;
    box-shadow:6px 6px 0 var(--rot);
  }
  .field{display:grid; gap:6px;}
  .field label{
    font-family:var(--font-display);
    font-weight:700;
    font-size:0.8rem;
    color:var(--ink);
  }
  .field input, .field select, .field textarea{
    font-family:var(--font-body);
    font-size:0.98rem;
    padding:10px 14px;
    border:2px solid var(--line);
    border-radius:12px;
    background:var(--paper);
    color:var(--ink);
  }
  .field input:focus, .field select:focus, .field textarea:focus{
    border-color:var(--teal);
    outline:none;
  }
  .field textarea{resize:vertical; min-height:100px;}
  .field-row{display:grid; gap:16px;}
  @media(min-width:560px){
    .field-row{grid-template-columns:1fr 1fr;}
  }
  .form-status{
    font-family:var(--font-mono);
    font-weight:600;
    font-size:0.82rem;
    min-height:1.2em;
  }
  .form-status.ok{color:var(--teal-deep);}
  .form-status.err{color:var(--rot-deep);}

  footer{
    padding:36px 0 48px;
    font-family:var(--font-mono);
    font-size:0.76rem;
    color:var(--ink-soft);
    display:flex;
    flex-wrap:wrap;
    gap:10px 24px;
    justify-content:space-between;
  }

  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;}
  }
