:root {
      --primary: #5941a9;
      --accent: #4acf8c;
      --bg: #f5f7fb;
      --card: #fff;
      --text: #232946;
      --success: #2ecc40;
      --fail: #ff4c60;
      --radius: 16px;
      --btn-glow: 0 0 10px 1px #4acf8c60;
      --btn-border: 1.5px solid #4acf8c;
      --btn-hover: linear-gradient(90deg, #4acf8c 40%, #5941a9 100%);
      --btn-follow: linear-gradient(90deg, #24292f 40%, #5941a9 100%);
    }
    html { scroll-behavior: smooth; }
    body {
      font-family: 'Roboto', Arial, sans-serif;
      background: var(--bg);
      color: var(--text);
      margin: 0;
      min-height: 100vh;
      padding: 0;
      display: flex;
      flex-direction: column;
    }
    header {
      background: linear-gradient(90deg, var(--primary), var(--accent));
      color: #fff;
      padding: 0.65rem 0;
      font-size: 1.27rem;
      font-weight: bold;
      letter-spacing: 2px;
      box-shadow: 0 4px 24px #5941a91a;
      border-radius: 0 0 24px 24px;
      margin-bottom: 1.1em;
      position: sticky; top: 0; z-index: 2;
      display: flex;
      align-items: center;
      justify-content: space-between;
      min-height: 46px;
    }
    .header-section {
      flex: 1;
      display: flex;
      align-items: center;
    }
    .header-left {
      justify-content: flex-start;
    }
    .header-center {
      justify-content: center;
    }
    .header-right {
      justify-content: flex-end;
    }
    .header-title {
      font-size: 1.35rem;
      font-weight: bold;
      letter-spacing: 2px;
      color: #fff;
      margin: 0 auto;
      padding: 0;
      text-align: center;
      line-height: 1.2;
      min-width: 170px;
    }
    .nav-btn {
      font-size: 1.13em;
      padding: 0.28em 1.1em;
      min-height: 32px;
      min-width: 70px;
      border-radius: 22px;
      background: var(--bg);
      color: var(--primary);
      border: var(--btn-border);
      font-weight: 600;
      cursor: pointer;
      box-shadow: var(--btn-glow);
      transition: background 0.16s, color 0.16s, box-shadow 0.16s, border 0.16s;
      text-decoration: none;
      display: inline-flex;
      align-items: center;
      line-height: 1.25;
      gap: 0.5em;
      letter-spacing: 1px;
    }
    .nav-btn.home {
      background: var(--accent);
      color: #232946;
      border: var(--btn-border);
      min-width: 85px;
      font-weight: bold;
    }
    .nav-btn.github {
      background: #24292f;
      color: #fff;
      border: 1.5px solid #24292f;
      font-weight: 600;
      min-width: 90px;
      gap: 0.5em;
    }
    .nav-btn.github img {
      width: 20px; height: 20px;
      border-radius: 50%;
      filter: brightness(1.6);
      vertical-align: middle;
      background: #fff;
      margin-right: 4px;
    }
    .nav-btn:hover, .nav-btn:focus { background: #402884; color: #fff; }
    .nav-btn.home:hover, .nav-btn.home:focus { background: #1fd286; color: #232946; }
    .nav-btn.github:hover, .nav-btn.github:focus { background: var(--btn-follow); }
    @media (max-width: 700px) {
      header {
        font-size: 1.09rem;
        padding: 0.5rem 0;
      }
      .header-title { font-size: 1.09rem; min-width: 110px;}
      .nav-btn, .nav-btn.home, .nav-btn.github { font-size: 1em; padding: 0.22em 0.9em; min-width: 62px;}
      .nav-btn.github img { width: 18px; height: 18px; margin-right: 3px;}
    }
    .container {
      width: 100%;
      max-width: 480px;
      margin: 0 auto 2em auto;
      background: var(--card);
      border-radius: var(--radius);
      box-shadow: 0 6px 32px #5941a930;
      padding: 2em 1.2em 1.6em 1.2em;
      animation: fadeInUp 1s;
      position: relative;
    }
    h2 {
      margin-top: 0; color: var(--primary); font-size: 1.3em;
      font-weight: 700; letter-spacing: 1px;
      margin-bottom: .7em;
      text-align: center;
    }
    form {
      display: flex; flex-direction: column; gap: 1em;
    }
    .subject-row {
      display: flex; gap: 0.6em; align-items: center;
      justify-content: center;
      margin-bottom: 0.2em;
      animation: fadeInUp 0.6s;
    }
    .subject-row input[type="text"] {
      width: 37%; min-width: 80px; max-width: 120px;
    }
    .subject-row input[type="number"] {
      width: 56px;
      text-align: center;
      font-size: 1.05em;
      font-weight: 500;
    }
    .subject-row input, .subject-row select {
      padding: 0.44em 0.5em;
      border: 1.5px solid #e5e5ee;
      border-radius: 8px;
      font-size: 1.09em;
      outline: none;
      transition: border 0.18s;
      background: #f7f7fb;
    }
    .subject-row input:focus, .subject-row select:focus {
      border-color: var(--primary);
    }
    .remove-btn {
      background: var(--fail);
      border: none;
      color: #fff;
      border-radius: 6px;
      font-size: 1.15em;
      padding: 0.24em 0.5em;
      cursor: pointer;
      transition: background 0.2s;
      margin-left: .2em;
      box-shadow: 0 2px 8px #ff4c6020;
    }
    .remove-btn:hover { background: #d7263d; }
    .add-btn {
      background: var(--accent);
      color: #fff;
      border: none;
      border-radius: 7px;
      padding: 0.6em 1.6em;
      font-size: 1.09em;
      font-weight: 600;
      margin: 0.5em 0;
      align-self: center;
      cursor: pointer;
      box-shadow: 0 2px 12px #4acf8c22;
      transition: background 0.18s, transform 0.16s;
    }
    .add-btn:hover { background: #1fd286; transform: scale(1.04);}
    .calc-btn, .pdf-btn {
      background: var(--primary);
      color: #fff;
      border: none;
      border-radius: 7px;
      padding: 0.6em 1.6em;
      font-size: 1.13em;
      font-weight: 600;
      margin: 0.5em 0 0 0;
      align-self: center;
      cursor: pointer;
      box-shadow: 0 2px 10px #5941a929;
      transition: background 0.18s, transform 0.17s;
      display: inline-block;
    }
    .calc-btn:hover, .pdf-btn:hover { background: #402884; transform: scale(1.04);}
    .results-card {
      background: #f7f7fb;
      border: 2px solid var(--accent);
      border-radius: var(--radius);
      padding: 1.2em 1em;
      margin-top: 1.2em;
      box-shadow: 0 2px 16px #4acf8c1a;
      text-align: center;
      animation: fadeInUp 0.8s;
    }
    .gpa-value {
      font-size: 2.1em;
      font-weight: 700;
      color: var(--primary);
      margin-bottom: .4em;
    }
    .class-value {
      font-size: 1.15em;
      font-weight: 700;
      color: var(--primary);
      margin-bottom: .6em;
      margin-top: .2em;
      letter-spacing: 0.2px;
    }
    .congrats {
      color: var(--success);
      font-size: 1.18em;
      font-weight: 600;
      margin-top: 0.4em;
      animation: pop-in 0.8s;
      display: flex;
      justify-content: center;
      align-items: center;
      gap: .45em;
    }
    .congrats .emoji {
      font-size: 1.45em;
      animation: bounce 0.7s infinite alternate;
    }
    @keyframes pop-in {
      from { opacity: 0; transform: scale(0.4);}
      to {opacity: 1; transform: scale(1);}
    }
    @keyframes bounce {
      0% { transform: translateY(0);}
      100% { transform: translateY(-10px);}
    }
    .results-table {
      width: 100%;
      margin: 1em auto .2em auto;
      border-collapse: collapse;
      font-size: 1em;
    }
    .results-table th, .results-table td {
      padding: 0.45em 0.3em;
      border: 1px solid #d4d4ea;
      text-align: center;
    }
    .results-table th {
      background: #e0e7ff;
      color: var(--primary);
      font-weight: 600;
    }
    .results-table td {
      background: #fff;
    }
    .pdf-btn {
      margin-top: 1.1em;
      background: var(--success);
      color: #fff;
      font-weight: 700;
    }
    .pdf-btn:hover { background: #198c3e;}
    .terms-link {
      color: var(--primary);
      text-decoration: underline;
      font-size: 1em;
      cursor: pointer;
      margin-top: 1em;
      display: inline-block;
    }
    #termsModal {
      display: none;
      position: fixed; z-index: 100;
      left: 0; top: 0; width: 100vw; height: 100vh;
      background: rgba(0,0,0,0.33);
      justify-content: center; align-items: center;
    }
    #termsModal .modal-content {
      background: #fff;
      color: #232946;
      border-radius: 12px;
      max-width: 98vw;
      width: 380px;
      padding: 1.5em 1.2em;
      box-shadow: 0 4px 22px #5941a963;
      animation: fadeInUp 0.6s;
      overflow-y: auto;
      max-height: 95vh;
      position: relative;
    }
    #termsModal .close-btn {
      position: absolute; top: 0.8em; right: 1em;
      background: var(--fail);
      color: #fff;
      border: none; border-radius: 50%;
      width: 28px; height: 28px; font-size: 1.2em;
      cursor: pointer;
    }
    /* Settings Modal */
    #settingsFAB {
      position: absolute;
      bottom: 18px;
      right: 18px;
      z-index: 10;
      background: var(--primary);
      color: #fff;
      border: none;
      border-radius: 50%;
      width: 40px;
      height: 40px;
      box-shadow: 0 2px 12px #5941a930, 0 0 0 2px #fff;
      display: flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      font-size: 1.25em;
      transition: background 0.18s, box-shadow 0.18s;
    }
    #settingsFAB:hover {
      background: var(--accent);
      color: var(--primary);
      box-shadow: 0 4px 20px #4acf8c20, 0 0 0 2px #fff;
    }
    #settingsFAB svg {
      width: 22px;
      height: 22px;
      pointer-events: none;
    }
    #settingsModal {
      display: none;
      position: fixed; z-index: 200;
      left: 0; top: 0; width: 100vw; height: 100vh;
      background: rgba(0,0,0,0.32);
      justify-content: center; align-items: center;
    }
    #settingsModal .modal-content {
      background: #fff;
      color: #232946;
      border-radius: 12px;
      max-width: 98vw;
      width: 290px;
      padding: 1.1em 1em 1em 1em;
      box-shadow: 0 4px 22px #5941a963;
      animation: fadeInUp 0.6s;
      position: relative;
    }
    #settingsModal .close-btn {
      position: absolute; top: 0.7em; right: 1em;
      background: var(--fail);
      color: #fff;
      border: none; border-radius: 50%;
      width: 22px; height: 22px; font-size: 1.1em;
      cursor: pointer;
    }
    #settingsModal h3 {
      margin-top: 0;
      font-size: 0.99em;
      color: var(--primary);
      text-align: center;
      margin-bottom: 0.3em;
    }
    #settingsModal table {
      width: 97%;
      margin: 0.3em auto 0.3em auto;
      border-collapse: collapse;
      font-size: 0.92em;
    }
    #settingsModal th, #settingsModal td {
      padding: 0.10em 0.10em;
      border-bottom: 1px solid #e5e5ee;
      text-align: center;
    }
    #settingsModal th {
      color: var(--primary);
      font-weight: 600;
      background: #f4f7fd;
    }
    #settingsModal input[type="number"] {
      width: 40px;
      padding: 0.09em 0.14em;
      font-size: 0.95em;
      border: 1px solid #e5e5ee;
      border-radius: 6px;
      background: #f7f7fb;
      text-align: right;
    }
    #settingsModal input[type="number"]:focus {
      border-color: var(--primary);
    }
    #settingsModal .save-btn {
      background: var(--primary);
      color: #fff;
      border: none;
      border-radius: 7px;
      padding: 0.20em 0.48em;
      font-size: 0.92em;
      font-weight: 600;
      margin: 0.7em 0 0 0;
      align-self: center;
      cursor: pointer;
      box-shadow: 0 2px 10px #5941a929;
      transition: background 0.18s, transform 0.17s;
      display: inline-block;
    }
    #settingsModal .save-btn:hover { background: #402884;}
    @media (max-width: 600px) {
      .container { padding: 1.2em 0.2em;}
      .subject-row {
        flex-direction: row !important;
        gap: 0.38em;
        align-items: center;
        justify-content: center;
      }
      .subject-row input[type="text"], .subject-row select, .subject-row input[type="number"] {
        width: auto;
        min-width: 43px;
        max-width: 100px;
        font-size: 1.09em;
      }
      .subject-row input[type="number"] {
        text-align: center !important;
      }
      .results-table { font-size: 0.89em; }
      .header-title { font-size: 0.98rem; }
      header { font-size: 1.01rem;}
      #settingsModal .modal-content { width: 95vw;}
      #settingsFAB { width: 38px; height: 38px; font-size: 1.15em; right: 10px; bottom: 10px;}
    }
    footer {
      text-align: center;
      color: #7a7a99;
      font-size: 1em;
      background: #f2eefe;
      padding: 1.2em 0 1em 0;
      margin-top: auto;
      border-radius: 24px 24px 0 0;
      box-shadow: 0 -2px 10px #5941a91b;
    }
