:root {
      --green-dark: #245c45;
      --green: #347a5b;
      --green-medium: #4e9270;
      --green-light: #eaf4ee;
      --green-pale: #f4f9f6;

      --text: #24312b;
      --text-soft: #66736c;

      --border: #dfe7e2;
      --background: #f6f8f7;
      --white: #ffffff;

      --red-light: #fbecec;
      --red: #a84646;

      --amber-light: #fff6df;
      --amber: #8a641e;
    }


    * {
      box-sizing: border-box;
    }


    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
      background: var(--background);
      color: var(--text);
    }


    header {
      background: rgba(255,255,255,.97);
      border-bottom: 1px solid var(--border);
      position: sticky;
      top: 0;
      z-index: 100;
    }


    .header-inner {
      max-width: 1120px;
      margin: auto;
      padding: 15px 20px;

      display: flex;
      align-items: center;
      justify-content: space-between;
    }


    .brand {
      display: flex;
      align-items: center;
      gap: 10px;
      cursor: pointer;
    }


    .brand-mark {
      width: 38px;
      height: 38px;
      border-radius: 11px;
      background: var(--green-dark);
      color: white;

      display: flex;
      align-items: center;
      justify-content: center;

      font-size: 22px;
      font-weight: 800;
    }


    .logo {
      font-size: 29px;
      font-weight: 800;
      letter-spacing: -1px;
      color: var(--green-dark);
    }


    .tagline {
      font-size: 13px;
      color: var(--text-soft);
    }


    .container {
      max-width: 1120px;
      margin: auto;
      padding: 38px 20px 60px;
    }


    h1 {
      margin: 0 0 9px;
      font-size: 34px;
      letter-spacing: -.6px;
    }


    h2 {
      margin-top: 0;
    }


    .subtitle {
      color: var(--text-soft);
      font-size: 17px;
      line-height: 1.5;
      margin-bottom: 30px;
    }


    .screen {
      display: none;
    }


    .screen.active {
      display: block;
    }


    button {
      font-family: inherit;
      border: none;
      border-radius: 10px;
      padding: 12px 17px;
      font-size: 15px;
      cursor: pointer;
      transition: .15s;
    }


    button:hover {
      transform: translateY(-1px);
    }


    button:disabled {
      opacity: .6;
      cursor: default;
      transform: none;
    }


    .back-button {
      background: var(--green-light);
      color: var(--green-dark);
      font-weight: 650;
      margin-bottom: 24px;
    }


    .primary-button {
      background: var(--green-dark);
      color: white;
      font-weight: 650;
    }


    .secondary-button {
      background: var(--green-light);
      color: var(--green-dark);
      font-weight: 650;
    }


    /* =========================
       HOME
    ========================= */

    .unit-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
      gap: 18px;
    }


    .unit-card {
      background: white;
      border: 1px solid var(--border);
      border-radius: 15px;
      padding: 23px;
      cursor: pointer;

      box-shadow: 0 3px 12px rgba(35,70,52,.05);

      transition:
        transform .15s,
        box-shadow .15s,
        border-color .15s;
    }


    .unit-card:hover {
      transform: translateY(-3px);
      border-color: #b9d3c4;
      box-shadow: 0 8px 22px rgba(35,70,52,.09);
    }


    .unit-number {
      color: var(--green);
      font-size: 13px;
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: .6px;
      margin-bottom: 9px;
    }


    .unit-name {
      font-size: 21px;
      font-weight: 700;
      margin-bottom: 9px;
    }


    .unit-description {
      color: var(--text-soft);
      line-height: 1.45;
      min-height: 42px;
    }


    .unit-count {
      margin-top: 17px;
      color: var(--green);
      font-size: 14px;
      font-weight: 600;
    }


    /* =========================
       RYCAL HOME
    ========================= */

    .home-hero {
      max-width: 760px;
      margin-bottom: 34px;
    }

    .home-kicker {
      color: var(--green);
      font-size: 12px;
      font-weight: 750;
      letter-spacing: .9px;
      text-transform: uppercase;
      margin-bottom: 9px;
    }

    .home-hero h1 {
      font-size: 44px;
      line-height: 1.08;
      color: var(--green-dark);
      margin-bottom: 10px;
    }

    .home-hero .subtitle {
      max-width: 650px;
      margin-bottom: 0;
    }

    .home-section-title {
      margin: 34px 0 14px;
      font-size: 18px;
      font-weight: 750;
    }

    .home-card-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 18px;
      max-width: 980px;
    }

    .home-card {
      background: white;
      border: 1px solid var(--border);
      border-radius: 18px;
      padding: 27px;
      cursor: pointer;
      box-shadow: 0 4px 16px rgba(35,70,52,.05);
      transition: transform .15s, box-shadow .15s, border-color .15s;
      min-height: 205px;
      display: flex;
      flex-direction: column;
    }

    .home-card:hover {
      transform: translateY(-3px);
      border-color: #acd0bb;
      box-shadow: 0 9px 25px rgba(35,70,52,.09);
    }

    .home-card.primary-course {
      background: linear-gradient(145deg, #ffffff 0%, var(--green-pale) 100%);
    }

    .home-card-icon {
      width: 46px;
      height: 46px;
      border-radius: 13px;
      background: var(--green-light);
      color: var(--green-dark);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 20px;
      font-weight: 800;
      margin-bottom: 18px;
    }

    .home-card-eyebrow {
      color: var(--green);
      font-size: 11px;
      font-weight: 750;
      text-transform: uppercase;
      letter-spacing: .7px;
      margin-bottom: 7px;
    }

    .home-card-title {
      font-size: 23px;
      font-weight: 750;
      margin-bottom: 8px;
    }

    .home-card-description {
      color: var(--text-soft);
      line-height: 1.5;
      font-size: 15px;
      flex: 1;
    }

    .home-card-link {
      color: var(--green-dark);
      font-weight: 700;
      margin-top: 20px;
      font-size: 14px;
    }

    .course-header {
      margin-bottom: 28px;
    }

    .course-header-label {
      color: var(--green);
      font-size: 12px;
      font-weight: 750;
      text-transform: uppercase;
      letter-spacing: .8px;
      margin-bottom: 8px;
    }

    .course-header h1 {
      color: var(--green-dark);
      margin-bottom: 7px;
    }

    /* =========================
       TOPICS
    ========================= */

    .study-all-card {
      background: var(--green-dark);
      color: white;
      border-radius: 15px;
      padding: 23px;
      margin-bottom: 25px;
      cursor: pointer;
    }


    .study-all-title {
      font-size: 20px;
      font-weight: 700;
      margin-bottom: 5px;
    }


    .study-all-subtitle {
      opacity: .82;
      font-size: 14px;
    }


    .topic-heading {
      font-size: 18px;
      font-weight: 700;
      margin: 28px 0 13px;
    }


    .topic-list {
      display: grid;
      gap: 11px;
    }


    .topic-card {
      background: white;
      border: 1px solid var(--border);
      border-radius: 13px;
      padding: 18px 20px;
      cursor: pointer;

      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 15px;
    }


    .topic-card:hover {
      border-color: #aed0bc;
      background: var(--green-pale);
    }


    .topic-name {
      font-weight: 650;
      line-height: 1.35;
    }


    .topic-count {
      white-space: nowrap;
      color: var(--text-soft);
      font-size: 14px;
    }


    /* =========================
       MODE SELECTION
    ========================= */

    .selection-context {
      background: var(--green-pale);
      border: 1px solid var(--border);
      border-radius: 12px;
      padding: 14px 17px;
      margin-bottom: 28px;

      color: var(--green-dark);
      font-weight: 600;
    }


    .mode-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
      gap: 18px;
      max-width: 1120px;
    }


    .mode-card {
      background: white;
      border: 1px solid var(--border);
      border-radius: 16px;
      padding: 26px;
      cursor: pointer;

      box-shadow: 0 3px 12px rgba(35,70,52,.04);
    }


    .mode-card:hover {
      border-color: #a9cbb7;
      transform: translateY(-2px);
    }


    .mode-icon {
      width: 43px;
      height: 43px;
      border-radius: 12px;

      background: var(--green-light);
      color: var(--green-dark);

      display: flex;
      align-items: center;
      justify-content: center;

      font-size: 20px;
      font-weight: 800;
      margin-bottom: 17px;
    }


    .mode-title {
      font-size: 21px;
      font-weight: 750;
      margin-bottom: 7px;
    }


    .mode-description {
      color: var(--text-soft);
      line-height: 1.45;
    }


    /* =========================
       SCIENCE OF STUDYING
    ========================= */

    .science-hero {
      background: linear-gradient(135deg, var(--green-dark), #2f7053);
      color: white;
      border-radius: 20px;
      padding: 30px;
      margin-bottom: 24px;
      box-shadow: 0 8px 26px rgba(35,70,52,.12);
    }

    .science-kicker {
      font-size: 12px;
      font-weight: 750;
      text-transform: uppercase;
      letter-spacing: .9px;
      opacity: .78;
      margin-bottom: 9px;
    }

    .science-hero h1 {
      color: white;
      margin-bottom: 10px;
    }

    .science-hero p {
      max-width: 760px;
      margin: 0;
      line-height: 1.6;
      opacity: .9;
      font-size: 16px;
    }

    .science-grid {
      display: grid;
      gap: 13px;
      max-width: 900px;
    }

    .science-card {
      background: white;
      border: 1px solid var(--border);
      border-radius: 15px;
      overflow: hidden;
      box-shadow: 0 3px 12px rgba(35,70,52,.04);
    }

    .science-card[open] {
      border-color: #bdd5c6;
      box-shadow: 0 7px 20px rgba(35,70,52,.07);
    }

    .science-card summary {
      list-style: none;
      cursor: pointer;
      padding: 19px 21px;
      display: flex;
      align-items: center;
      gap: 14px;
      font-weight: 700;
      font-size: 17px;
    }

    .science-card summary::-webkit-details-marker {
      display: none;
    }

    .science-card summary::after {
      content: '+';
      margin-left: auto;
      color: var(--green);
      font-size: 23px;
      font-weight: 500;
      line-height: 1;
    }

    .science-card[open] summary::after {
      content: '−';
    }

    .science-number {
      width: 34px;
      height: 34px;
      min-width: 34px;
      border-radius: 10px;
      background: var(--green-light);
      color: var(--green-dark);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 13px;
      font-weight: 800;
    }

    .science-body {
      padding: 0 22px 22px 70px;
      color: var(--text-soft);
      line-height: 1.62;
      font-size: 15px;
    }

    .science-body p {
      margin: 0 0 13px;
    }

    .science-example {
      background: var(--green-pale);
      border: 1px solid var(--border);
      border-radius: 11px;
      padding: 14px 16px;
      margin: 14px 0;
      color: var(--text);
    }

    .science-example strong {
      color: var(--green-dark);
    }

    .try-cue {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      margin-top: 4px;
      padding: 8px 11px;
      border-radius: 9px;
      background: var(--green-light);
      color: var(--green-dark);
      font-size: 13px;
      font-weight: 700;
    }

    .forgetting-visual {
      background: white;
      border: 1px solid var(--border);
      border-radius: 12px;
      padding: 12px;
      margin: 14px 0;
    }

    .forgetting-visual svg {
      display: block;
      width: 100%;
      height: auto;
    }

    .difference-panel {
      max-width: 900px;
      margin: 0 0 24px;
      background: white;
      border: 1px solid var(--border);
      border-radius: 18px;
      padding: 25px;
      box-shadow: 0 4px 16px rgba(35,70,52,.05);
    }

    .difference-panel h2 {
      margin: 0 0 8px;
      font-size: 23px;
    }

    .difference-panel > p {
      color: var(--text-soft);
      line-height: 1.6;
      margin: 0 0 18px;
    }

    .difference-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 11px;
    }

    .difference-item {
      background: var(--green-pale);
      border: 1px solid var(--border);
      border-radius: 12px;
      padding: 15px;
      line-height: 1.5;
      color: var(--text-soft);
    }

    .difference-item strong {
      display: block;
      color: var(--green-dark);
      margin-bottom: 4px;
    }

    .product-principle {
      margin-top: 18px;
      border-left: 4px solid var(--green-dark);
      background: var(--green-light);
      border-radius: 0 11px 11px 0;
      padding: 15px 17px;
      color: var(--green-dark);
      font-size: 17px;
      font-weight: 700;
      line-height: 1.45;
    }

    .research-list {
      display: grid;
      gap: 12px;
      margin-top: 12px;
    }

    .research-item {
      padding-bottom: 12px;
      border-bottom: 1px solid var(--border);
    }

    .research-item:last-child {
      border-bottom: none;
      padding-bottom: 0;
    }

    .research-item strong {
      color: var(--text);
    }

    .research-citation {
      display: block;
      margin-top: 4px;
      font-size: 13px;
      color: var(--text-soft);
    }

    .research-citation a {
      color: var(--green-dark);
      text-decoration: underline;
      text-underline-offset: 2px;
    }

    @media (max-width: 700px) {
      .difference-grid { grid-template-columns: 1fr; }
    }

    .study-routine {
      max-width: 900px;
      margin-top: 26px;
      background: white;
      border: 1px solid var(--border);
      border-radius: 18px;
      padding: 25px;
      box-shadow: 0 4px 16px rgba(35,70,52,.05);
    }

    .study-routine h2 {
      margin-bottom: 6px;
      font-size: 22px;
    }

    .routine-subtitle {
      color: var(--text-soft);
      margin-bottom: 20px;
      line-height: 1.5;
    }

    .routine-steps {
      display: grid;
      gap: 10px;
    }

    .routine-step {
      display: grid;
      grid-template-columns: 34px 1fr;
      gap: 12px;
      align-items: start;
      padding: 12px 0;
      border-bottom: 1px solid var(--border);
    }

    .routine-step:last-child {
      border-bottom: none;
    }

    .routine-step-number {
      width: 30px;
      height: 30px;
      border-radius: 50%;
      background: var(--green-dark);
      color: white;
      display: flex;
      align-items: center;
      justify-content: center;
      font-weight: 750;
      font-size: 13px;
    }

    .routine-step strong {
      color: var(--text);
    }

    .routine-step div:last-child {
      color: var(--text-soft);
      line-height: 1.5;
    }

    /* =========================
       QUESTION TYPE
    ========================= */

    .learn-grid {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 16px;
      max-width: 900px;
    }


    .learn-option {
      background: white;
      border: 1px solid var(--border);
      border-radius: 15px;
      padding: 23px;
      cursor: pointer;
    }


    .learn-option:hover {
      border-color: #a9cbb7;
      background: var(--green-pale);
    }


    .difficulty-badge {
      display: inline-block;
      padding: 5px 9px;
      border-radius: 20px;

      font-size: 11px;
      font-weight: 750;
      text-transform: uppercase;
      letter-spacing: .5px;
      margin-bottom: 14px;
    }


    .easy-badge {
      background: var(--green-light);
      color: var(--green-dark);
    }


    .application-badge {
      background: var(--amber-light);
      color: var(--amber);
    }


    .mixed-badge {
      background: #eef0f7;
      color: #4d566e;
    }


    .learn-option-title {
      font-size: 19px;
      font-weight: 700;
      margin-bottom: 7px;
    }


    .learn-option-description {
      color: var(--text-soft);
      line-height: 1.45;
      font-size: 14px;
    }


    /* =========================
       QUESTION COUNT
    ========================= */

    .count-card {
      max-width: 700px;
      background: white;
      border: 1px solid var(--border);
      border-radius: 16px;
      padding: 28px;
      box-shadow: 0 4px 16px rgba(35,70,52,.05);
    }


    .count-heading {
      font-size: 20px;
      font-weight: 700;
      margin-bottom: 7px;
    }


    .available-text {
      color: var(--text-soft);
      margin-bottom: 22px;
    }


    .count-options {
      display: flex;
      gap: 10px;
      flex-wrap: wrap;
    }


    .count-button {
      background: white;
      border: 1px solid var(--border);
      color: var(--text);
      min-width: 90px;
      font-weight: 650;
    }


    .count-button:hover {
      background: var(--green-pale);
      border-color: #a9cbb7;
    }


    /* =========================
       PROGRESS
    ========================= */

    .study-top {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 15px;
      margin-bottom: 17px;
    }


    .progress-text {
      color: var(--text-soft);
      font-weight: 600;
    }


    .progress-bar {
      width: 100%;
      height: 6px;
      background: #dfe7e2;
      border-radius: 30px;
      overflow: hidden;
      margin-bottom: 28px;
    }


    .progress-fill {
      height: 100%;
      width: 0%;
      background: var(--green);
      transition: width .25s ease;
    }


    /* =========================
       FLASHCARDS
    ========================= */

    .study-topic {
      color: var(--text-soft);
      margin-bottom: 23px;
      font-size: 15px;
    }


    .card-scene {
      width: 100%;
      min-height: 390px;
      perspective: 1200px;
      cursor: pointer;
    }


    .flashcard {
      width: 100%;
      min-height: 390px;
      position: relative;
      transform-style: preserve-3d;
      transition: transform .4s ease;
    }


    .flashcard.flipped {
      transform: rotateY(180deg);
    }


    .card-face {
      position: absolute;
      width: 100%;
      min-height: 390px;

      backface-visibility: hidden;
      -webkit-backface-visibility: hidden;

      background: white;
      border: 1px solid var(--border);
      border-radius: 18px;

      box-shadow: 0 7px 26px rgba(35,70,52,.08);

      padding: 48px;

      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center;
    }


    .card-back {
      transform: rotateY(180deg);
    }


    .card-label {
      color: var(--green);
      font-size: 12px;
      text-transform: uppercase;
      letter-spacing: 1.2px;
      font-weight: 700;
      margin-bottom: 20px;
    }


    .card-text {
      font-size: 34px;
      font-weight: 700;
      line-height: 1.3;
      overflow-wrap: anywhere;
    }


    .definition-text {
      font-size: 25px;
      font-weight: 500;
      line-height: 1.55;
    }


    .rating-label {
      text-align: center;
      margin-top: 23px;
      margin-bottom: 10px;
      color: var(--text-soft);
      font-size: 14px;
    }


    .rating-controls {
      display: flex;
      justify-content: center;
      gap: 12px;
    }


    .learning-button {
      background: var(--red-light);
      color: var(--red);
      min-width: 155px;
      font-weight: 650;
    }


    .know-button {
      background: var(--green-light);
      color: var(--green-dark);
      min-width: 155px;
      font-weight: 650;
    }


    .controls {
      margin-top: 20px;
      display: flex;
      gap: 10px;
      justify-content: center;
      flex-wrap: wrap;
    }


    .control-button {
      background: white;
      border: 1px solid var(--border);
      color: var(--text);
      min-width: 108px;
    }


    /* =========================
       QUESTIONS
    ========================= */

    .learn-shell {
      max-width: 850px;
      margin: auto;
    }


    .question-card {
      background: white;
      border: 1px solid var(--border);
      border-radius: 18px;

      padding: 34px;
      box-shadow: 0 6px 24px rgba(35,70,52,.07);
    }


    .question-meta {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 22px;
    }


    .question-difficulty {
      font-size: 11px;
      font-weight: 750;
      text-transform: uppercase;
      letter-spacing: .5px;

      padding: 5px 9px;
      border-radius: 20px;

      background: var(--green-light);
      color: var(--green-dark);
    }


    .question-number {
      color: var(--text-soft);
      font-size: 14px;
      font-weight: 600;
    }


    .question-text {
      font-size: 23px;
      font-weight: 650;
      line-height: 1.45;
      margin-bottom: 27px;
      white-space: pre-line;
    }


    /* =========================
       STIMULUS
    ========================= */

    .stimulus-container {
      display: none;

      background: #fbfcfb;
      border: 1px solid var(--border);
      border-radius: 14px;

      padding: 20px;
      margin-bottom: 27px;

      overflow-x: auto;
    }


    .stimulus-label {
      font-size: 11px;
      text-transform: uppercase;
      letter-spacing: .7px;
      font-weight: 750;
      color: var(--green);
      margin-bottom: 12px;
    }


    .stimulus-table {
      width: 100%;
      border-collapse: collapse;
      font-size: 14px;
      background: white;
    }


    .stimulus-table th,
    .stimulus-table td {
      border: 1px solid var(--border);
      padding: 9px 12px;
      text-align: center;
    }


    .stimulus-table th {
      background: var(--green-light);
      color: var(--green-dark);
      font-weight: 700;
    }


    .chart-wrap {
      width: 100%;
      overflow-x: auto;
    }


    .chart-svg {
      width: 100%;
      min-width: 500px;
      height: auto;
      display: block;
    }


    .chart-axis {
      stroke: #75847c;
      stroke-width: 1.2;
    }


    .chart-grid {
      stroke: #e2e8e4;
      stroke-width: 1;
    }


    .chart-text {
      fill: #55625c;
      font-size: 12px;
      font-family: Arial, Helvetica, sans-serif;
    }


    .chart-bar {
      fill: #4e9270;
    }


    .chart-line {
      stroke: #347a5b;
      stroke-width: 3;
      fill: none;
    }


    .chart-point {
      fill: #245c45;
    }


    /* =========================
       ANSWERS
    ========================= */

    .answer-list {
      display: grid;
      gap: 11px;
    }


    .answer-choice {
      width: 100%;
      text-align: left;

      background: white;
      border: 1px solid var(--border);

      padding: 16px 18px;
      border-radius: 12px;

      display: flex;
      align-items: flex-start;
      gap: 12px;

      line-height: 1.4;
    }


    .answer-choice:hover:not(:disabled) {
      background: var(--green-pale);
      border-color: #abcdb9;
    }


    .answer-choice:disabled {
      cursor: default;
      transform: none;
    }


    .answer-letter {
      width: 27px;
      height: 27px;
      min-width: 27px;

      border-radius: 8px;

      background: #eef2ef;

      display: flex;
      align-items: center;
      justify-content: center;

      font-size: 12px;
      font-weight: 750;
    }


    .answer-choice.correct {
      border-color: #82b497;
      background: var(--green-light);
    }


    .answer-choice.incorrect {
      border-color: #dca5a5;
      background: var(--red-light);
    }


    .answer-choice.selected-test {
      border-color: var(--green);
      background: var(--green-pale);
    }


    /* =========================
       FEEDBACK
    ========================= */

    .feedback {
      display: none;
      margin-top: 22px;
      border-radius: 12px;
      padding: 18px;
      line-height: 1.5;
    }


    .feedback.correct-feedback {
      display: block;
      background: var(--green-light);
      color: var(--green-dark);
    }


    .feedback.incorrect-feedback {
      display: block;
      background: var(--red-light);
      color: #7d3535;
    }


    .feedback-title {
      font-weight: 750;
      margin-bottom: 6px;
    }


    .feedback-explanation {
      font-size: 14px;
    }


    .next-question-row {
      display: none;
      justify-content: flex-end;
      margin-top: 17px;
    }


    .next-question-button {
      background: var(--green-dark);
      color: white;
      font-weight: 650;
    }


    /* =========================
       RESULTS
    ========================= */

    .results {
      display: none;

      background: white;
      border: 1px solid var(--border);
      border-radius: 18px;

      padding: 42px;

      text-align: center;
      box-shadow: 0 7px 26px rgba(35,70,52,.07);
    }


    .results h2 {
      font-size: 29px;
      margin-bottom: 8px;
    }


    .result-score {
      font-size: 54px;
      font-weight: 800;
      color: var(--green-dark);
      margin: 25px 0 5px;
    }


    .result-subtitle {
      color: var(--text-soft);
      margin-bottom: 28px;
    }


    .result-buttons button {
      margin: 5px;
    }


    .breakdown {
      max-width: 430px;
      margin: 0 auto 28px;
      text-align: left;
    }


    .breakdown-row {
      display: flex;
      justify-content: space-between;
      padding: 11px 0;
      border-bottom: 1px solid var(--border);
    }


    .breakdown-row:last-child {
      border-bottom: none;
    }


    .breakdown-label {
      color: var(--text-soft);
    }


    .breakdown-value {
      font-weight: 700;
    }


    /* =========================
       CONCEPT PERFORMANCE
    ========================= */

    .performance-panel {
      max-width: 650px;
      margin: 28px auto;
      text-align: left;
    }

    .performance-heading {
      font-size: 13px;
      font-weight: 800;
      letter-spacing: .7px;
      text-transform: uppercase;
      color: var(--green-dark);
      margin: 0 0 12px;
    }

    .concept-list { display: grid; gap: 10px; }

    .concept-card {
      border: 1px solid var(--border);
      border-radius: 13px;
      padding: 15px 16px;
      background: #fbfcfb;
    }

    .concept-top {
      display: flex;
      justify-content: space-between;
      gap: 14px;
      align-items: baseline;
      margin-bottom: 9px;
    }

    .concept-name { font-weight: 700; line-height: 1.3; }
    .concept-score { color: var(--text-soft); font-size: 13px; white-space: nowrap; }

    .concept-track {
      height: 7px;
      border-radius: 20px;
      overflow: hidden;
      background: #e7ece9;
    }

    .concept-fill { height: 100%; border-radius: 20px; background: var(--green-medium); }
    .concept-fill.needs-work { background: #b9853b; }

    .needs-review-panel {
      max-width: 650px;
      margin: 26px auto 30px;
      padding: 20px;
      text-align: left;
      border-radius: 15px;
      background: var(--green-pale);
      border: 1px solid #cfe0d5;
    }

    .needs-review-empty { color: var(--text-soft); line-height: 1.5; }
    .weak-button-row { margin-top: 16px; }
    .weak-button-row button { width: 100%; }

    /* =========================
       REVIEW
    ========================= */

    .review-list {
      display: grid;
      gap: 18px;
    }


    .review-card {
      background: white;
      border: 1px solid var(--border);
      border-radius: 15px;
      padding: 22px;
    }


    .review-question {
      font-size: 17px;
      line-height: 1.45;
      font-weight: 650;
      margin-bottom: 14px;
    }


    .review-line {
      margin: 7px 0;
      line-height: 1.4;
    }


    .review-correct {
      color: var(--green-dark);
      font-weight: 650;
    }


    .review-wrong {
      color: var(--red);
      font-weight: 650;
    }


    .review-explanation {
      margin-top: 12px;
      color: var(--text-soft);
      line-height: 1.5;
    }


    footer {
      border-top: 1px solid var(--border);
      margin-top: 35px;
      padding: 24px 20px 35px;

      text-align: center;
      color: #7b8780;
      font-size: 12px;
      line-height: 1.6;
    }


    .footer-brand {
      font-weight: 700;
      color: var(--green-dark);
      margin-bottom: 4px;
    }



    /* =========================
       ACCOUNT + PROGRESS
    ========================= */

    .header-actions {
      display: flex;
      align-items: center;
      gap: 12px;
    }

    .auth-button {
      background: var(--green-light);
      color: var(--green-dark);
      font-weight: 700;
      padding: 9px 14px;
      border: 1px solid #cfe2d6;
    }

    .user-chip {
      display: none;
      align-items: center;
      gap: 9px;
      padding: 5px 8px 5px 5px;
      border: 1px solid var(--border);
      background: white;
      border-radius: 999px;
    }

    .user-avatar {
      width: 30px;
      height: 30px;
      border-radius: 50%;
      object-fit: cover;
      background: var(--green-light);
    }

    .user-name {
      max-width: 150px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      font-size: 13px;
      font-weight: 700;
    }

    .signout-link {
      background: transparent;
      color: var(--text-soft);
      padding: 5px 7px;
      font-size: 12px;
    }

    .progress-hero {
      background: linear-gradient(135deg, #f4f9f6 0%, #ffffff 100%);
      border: 1px solid var(--border);
      border-radius: 20px;
      padding: 30px;
      margin-bottom: 22px;
    }

    .progress-hero-top {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 20px;
    }

    .progress-overall {
      font-size: 44px;
      line-height: 1;
      font-weight: 800;
      color: var(--green-dark);
      margin-top: 8px;
    }

    .progress-overall-label {
      margin-top: 7px;
      color: var(--text-soft);
      font-size: 13px;
    }

    .progress-stat-grid {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 13px;
      margin: 20px 0 28px;
    }

    .progress-stat-card {
      background: white;
      border: 1px solid var(--border);
      border-radius: 14px;
      padding: 18px;
    }

    .progress-stat-value {
      font-size: 24px;
      font-weight: 800;
      color: var(--green-dark);
    }

    .progress-stat-label {
      color: var(--text-soft);
      font-size: 13px;
      margin-top: 5px;
    }

    .progress-section {
      margin-top: 28px;
    }

    .progress-section-title {
      font-size: 19px;
      font-weight: 750;
      margin-bottom: 12px;
    }

    .progress-concept-list,
    .recent-session-list {
      display: grid;
      gap: 10px;
    }

    .progress-concept-row,
    .recent-session-row {
      background: white;
      border: 1px solid var(--border);
      border-radius: 13px;
      padding: 15px 17px;
    }

    .progress-concept-top,
    .recent-session-top {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 12px;
    }

    .progress-concept-name,
    .recent-session-name {
      font-weight: 700;
      line-height: 1.3;
    }

    .progress-concept-score,
    .recent-session-score {
      white-space: nowrap;
      font-weight: 750;
      color: var(--green-dark);
    }

    .progress-mini-track {
      height: 6px;
      border-radius: 99px;
      background: #edf1ee;
      overflow: hidden;
      margin-top: 10px;
    }

    .progress-mini-fill {
      height: 100%;
      border-radius: inherit;
      background: var(--green-medium);
    }

    .progress-mini-fill.weak {
      background: #c58b63;
    }

    .recent-session-meta {
      color: var(--text-soft);
      font-size: 12px;
      margin-top: 5px;
    }

    .progress-empty {
      background: var(--green-pale);
      border: 1px solid var(--border);
      border-radius: 14px;
      padding: 22px;
      color: var(--text-soft);
      line-height: 1.55;
    }

    .save-status {
      margin-top: 14px;
      font-size: 12px;
      color: var(--text-soft);
      min-height: 18px;
    }



    /* =========================
       TEACHER DASHBOARD
    ========================= */

    .teacher-hero {
      background: linear-gradient(135deg, #f4f9f6 0%, #ffffff 100%);
      border: 1px solid var(--border);
      border-radius: 20px;
      padding: 30px;
      margin-bottom: 22px;
    }

    .teacher-grid {
      display: grid;
      grid-template-columns: minmax(0, .9fr) minmax(0, 1.4fr);
      gap: 18px;
      align-items: start;
    }

    .teacher-panel {
      background: white;
      border: 1px solid var(--border);
      border-radius: 16px;
      padding: 23px;
      box-shadow: 0 4px 16px rgba(35,70,52,.04);
    }

    .teacher-panel-title {
      font-size: 19px;
      font-weight: 750;
      margin-bottom: 6px;
    }

    .teacher-panel-copy {
      color: var(--text-soft);
      font-size: 14px;
      line-height: 1.5;
      margin-bottom: 18px;
    }

    .teacher-field {
      margin-bottom: 14px;
    }

    .teacher-field label {
      display: block;
      font-size: 12px;
      font-weight: 700;
      color: var(--text-soft);
      margin-bottom: 6px;
    }

    .teacher-field input {
      width: 100%;
      padding: 12px 13px;
      border: 1px solid var(--border);
      border-radius: 10px;
      font: inherit;
      color: var(--text);
      background: white;
      outline: none;
    }

    .teacher-field input:focus {
      border-color: #93bea6;
      box-shadow: 0 0 0 3px rgba(78,146,112,.10);
    }

    .teacher-class-list {
      display: grid;
      gap: 11px;
    }

    .teacher-class-card {
      border: 1px solid var(--border);
      border-radius: 14px;
      padding: 17px;
      background: #fff;
    }

    .teacher-class-top {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 16px;
    }

    .teacher-class-name {
      font-size: 17px;
      font-weight: 750;
      line-height: 1.3;
    }

    .teacher-class-period {
      color: var(--text-soft);
      font-size: 13px;
      margin-top: 4px;
    }

    .teacher-code {
      background: var(--green-light);
      color: var(--green-dark);
      border-radius: 9px;
      padding: 7px 10px;
      font-size: 13px;
      font-weight: 800;
      letter-spacing: 1px;
      white-space: nowrap;
    }

    .teacher-class-meta {
      margin-top: 13px;
      color: var(--text-soft);
      font-size: 12px;
      line-height: 1.45;
    }

    .teacher-status {
      color: var(--text-soft);
      font-size: 12px;
      min-height: 18px;
      margin-top: 10px;
    }

    @media (max-width: 700px) {

      .teacher-grid {
        grid-template-columns: 1fr;
      }

      .teacher-hero {
        padding: 23px 18px;
      }



      .header-actions .tagline {
        display: none;
      }

      .user-name {
        display: none;
      }

      .auth-button {
        padding: 8px 11px;
      }

      .progress-hero {
        padding: 22px 18px;
      }

      .progress-hero-top {
        display: block;
      }

      .progress-stat-grid {
        grid-template-columns: 1fr;
      }


      .header-inner {
        padding: 13px 15px;
      }

      .tagline {
        display: none;
      }

      .container {
        padding: 25px 14px 45px;
      }

      h1 {
        font-size: 27px;
      }

      .mode-grid,
      .learn-grid,
      .home-card-grid {
        grid-template-columns: 1fr;
      }

      .home-hero h1 {
        font-size: 34px;
      }

      .home-card {
        min-height: 0;
        padding: 22px;
      }

      .card-scene,
      .flashcard,
      .card-face {
        min-height: 325px;
      }

      .card-face {
        padding: 29px 22px;
      }

      .card-text {
        font-size: 27px;
      }

      .definition-text {
        font-size: 21px;
      }

      .rating-controls {
        gap: 8px;
      }

      .learning-button,
      .know-button {
        min-width: 0;
        flex: 1;
      }

      .question-card {
        padding: 23px 17px;
      }

      .question-text {
        font-size: 20px;
      }

      .stimulus-container {
        padding: 13px;
      }

    }

  

    /* =========================
       RYCAL APP SHELL + DASHBOARD
    ========================= */
    body { font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; }
    .topbar { left: 220px; }
    .topbar .header-inner { max-width: none; }
    .mobile-brand { display:none; cursor:pointer; }
    .mobile-logo-img { width:118px; display:block; }
    .rycal-logo-full { display:block; width:176px; height:auto; }
    .rycal-logo-mobile { display:block; width:48px; height:48px; object-fit:contain; }
    .rycal-logo-auth { display:block; width:180px; height:auto; margin:0 auto 12px; }
    .sidebar-brand .rycal-logo-full { margin-left:-10px; margin-top:-4px; margin-bottom:-8px; }
    .app-sidebar {
      position: fixed; inset: 0 auto 0 0; width: 220px; background:#fff;
      border-right:1px solid var(--border); z-index:110; padding:24px 14px 18px;
      display:flex; flex-direction:column;
    }
    .sidebar-brand { padding:0 10px 24px; cursor:pointer; }
    .sidebar-logo-img { display:block; width:164px; max-height:78px; object-fit:contain; }
    .rycal-wordmark { color:var(--green-dark); font-weight:800; letter-spacing:-1.5px; line-height:1; }
    .rycal-wordmark-sidebar { font-size:42px; padding:10px 4px 16px; }
    .rycal-wordmark-mobile { font-size:30px; }
    .sidebar-nav { display:grid; gap:5px; }
    .sidebar-link {
      background:transparent; color:var(--text); border-radius:11px; padding:11px 12px;
      display:flex; gap:11px; align-items:center; text-align:left; font-weight:650;
    }
    .sidebar-link span { color:var(--green-dark); width:22px; text-align:center; font-size:19px; }
    .sidebar-link:hover, .sidebar-link.active { background:var(--green-light); color:var(--green-dark); transform:none; }
    .sidebar-bottom { margin-top:auto; padding:14px 10px 0; font-size:9px; letter-spacing:1px; color:var(--text-soft); }
    header { margin-left:220px; }
    .header-inner { max-width:none; padding-left:30px; padding-right:30px; min-height:64px; }
    main.container { margin-left:220px; max-width:none; padding:34px 42px 60px; }
    footer { margin-left:220px; }
    .dashboard-screen { max-width:1120px; }
    .dashboard-heading { display:flex; justify-content:space-between; gap:20px; align-items:flex-end; margin-bottom:30px; }
    .dashboard-heading h1 { color:var(--green-dark); font-size:34px; margin-bottom:5px; }
    .dashboard-subtitle { color:var(--text-soft); }
    .small-action, .text-action { background:transparent; color:var(--green-dark); font-weight:700; padding:8px 10px; }
    .small-action { border:1px solid var(--border); background:#fff; }
    .text-action:hover, .small-action:hover { background:var(--green-pale); transform:none; }
    .dashboard-section { margin:28px 0 34px; }
    .dashboard-section-head { display:flex; justify-content:space-between; align-items:center; gap:14px; margin-bottom:12px; }
    .dashboard-section-head h2 { font-size:18px; margin:0; }
    .section-actions { display:flex; gap:2px; flex-wrap:wrap; }
    .continue-card { background:#fff; border:1px solid var(--border); border-radius:16px; padding:24px; display:flex; justify-content:space-between; align-items:center; gap:24px; box-shadow:0 3px 12px rgba(35,70,52,.04); }
    .continue-eyebrow { color:var(--green); text-transform:uppercase; letter-spacing:.7px; font-size:11px; font-weight:750; margin-bottom:6px; }
    .continue-title { font-size:21px; font-weight:750; margin-bottom:5px; }
    .continue-copy { color:var(--text-soft); font-size:14px; }
    .continue-actions { display:flex; gap:8px; flex-wrap:wrap; }
    .compact-button { background:#fff; border:1px solid var(--border); color:var(--text); font-weight:650; }
    .compact-button:hover { background:var(--green-pale); border-color:#b8d4c4; }
    .compact-class-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(245px,1fr)); gap:12px; }
    .dashboard-class-card { background:#fff; border:1px solid var(--border); border-radius:14px; padding:18px; min-height:120px; cursor:pointer; }
    .dashboard-class-card:hover { border-color:#b4d1bf; box-shadow:0 5px 15px rgba(35,70,52,.05); }
    .dashboard-class-title { font-size:17px; font-weight:750; margin-bottom:4px; }
    .dashboard-class-meta { color:var(--text-soft); font-size:13px; line-height:1.55; }
    .class-badge { width:38px; height:38px; border-radius:10px; background:var(--green-light); color:var(--green-dark); display:flex; align-items:center; justify-content:center; font-weight:800; margin-bottom:12px; }
    .dashboard-empty { color:var(--text-soft); background:#fff; border:1px dashed var(--border); border-radius:12px; padding:18px; }
    .quick-study-list { background:#fff; border:1px solid var(--border); border-radius:14px; overflow:hidden; }
    .quick-item { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 16px; border-bottom:1px solid var(--border); cursor:pointer; }
    .quick-item:last-child { border-bottom:none; }
    .quick-item:hover { background:var(--green-pale); }
    .quick-main { display:flex; gap:11px; align-items:center; min-width:0; }
    .quick-star { color:var(--green-dark); font-size:20px; }
    .quick-label { font-weight:650; }
    .quick-sub { color:var(--text-soft); font-size:12px; margin-top:2px; }
    .quick-remove { background:transparent; color:var(--text-soft); padding:5px 8px; font-size:18px; }
    .weekly-stats { display:grid; grid-template-columns:repeat(4,1fr); background:#fff; border:1px solid var(--border); border-radius:14px; overflow:hidden; }
    .weekly-stat { padding:18px; text-align:center; border-right:1px solid var(--border); }
    .weekly-stat:last-child { border-right:none; }
    .weekly-stat strong { display:block; color:var(--green-dark); font-size:27px; }
    .weekly-stat span { color:var(--text-soft); font-size:12px; }
    .favorite-mini { margin-top:16px; align-self:flex-start; background:transparent; color:var(--green-dark); border:1px solid var(--border); padding:7px 10px; font-size:12px; font-weight:700; }
    .favorite-mini:hover { background:var(--green-pale); transform:none; }
    .deep-work-shell { max-width:820px; }
    .deep-preset-row { display:flex; gap:8px; flex-wrap:wrap; margin:18px 0; }
    .deep-timer-card { background:#fff; border:1px solid var(--border); border-radius:18px; padding:38px 28px; text-align:center; box-shadow:0 5px 20px rgba(35,70,52,.05); }
    .deep-timer { font-size:72px; font-weight:800; letter-spacing:-2px; color:var(--green-dark); font-variant-numeric:tabular-nums; }
    .deep-guide { background:#fff; border:1px solid var(--border); border-radius:18px; padding:26px; margin:20px 0; box-shadow:0 4px 16px rgba(35,70,52,.04); }
    .deep-guide h2 { margin:0 0 10px; font-size:23px; }
    .deep-guide p { color:var(--text-soft); line-height:1.65; margin:8px 0; }
    .deep-steps { display:grid; gap:10px; margin-top:18px; }
    .deep-step { display:grid; grid-template-columns:34px 1fr; gap:12px; align-items:start; background:var(--green-pale); border:1px solid var(--border); border-radius:12px; padding:13px 14px; }
    .deep-step-number { width:28px; height:28px; border-radius:50%; background:var(--green-dark); color:#fff; display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:800; }
    .deep-step strong { display:block; margin-bottom:3px; color:var(--text); }
    .deep-step div:last-child { color:var(--text-soft); line-height:1.45; }
    .deep-custom { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-top:10px; }
    .deep-custom input { width:92px; border:1px solid var(--border); border-radius:10px; padding:11px 12px; font:inherit; color:var(--text); background:#fff; }
    .deep-notify-row { margin-top:14px; display:flex; justify-content:center; gap:8px; flex-wrap:wrap; }
    .deep-floating { position:fixed; right:20px; bottom:20px; z-index:1200; width:250px; background:#fff; border:1px solid #cbded2; border-radius:16px; box-shadow:0 12px 34px rgba(35,70,52,.18); padding:14px; display:none; }
    .deep-floating.active { display:block; }
    .deep-floating.collapsed { width:auto; min-width:150px; padding:10px 12px; cursor:pointer; }
    .deep-floating-head { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:8px; }
    .deep-floating-title { font-size:12px; font-weight:800; letter-spacing:.6px; text-transform:uppercase; color:var(--green); }
    .deep-floating-time { font-size:31px; line-height:1; font-weight:800; color:var(--green-dark); font-variant-numeric:tabular-nums; }
    .deep-floating-status { color:var(--text-soft); font-size:12px; margin-top:5px; }
    .deep-floating-actions { display:flex; gap:6px; margin-top:11px; flex-wrap:wrap; }
    .deep-floating-actions button { padding:8px 10px; font-size:12px; }
    .deep-floating-pill { display:none; align-items:center; gap:8px; font-weight:750; color:var(--green-dark); white-space:nowrap; }
    .deep-floating.collapsed .deep-floating-expanded { display:none; }
    .deep-floating.collapsed .deep-floating-pill { display:flex; }
    .deep-toast { position:fixed; right:20px; top:82px; z-index:1300; max-width:340px; background:var(--green-dark); color:#fff; border-radius:14px; padding:15px 17px; box-shadow:0 12px 30px rgba(35,70,52,.22); display:none; line-height:1.45; }
    .deep-toast.show { display:block; }
    .deep-hidden-message { font-size:26px; font-weight:700; color:var(--green-dark); padding:23px 0; }
    .deep-controls { display:flex; justify-content:center; gap:9px; flex-wrap:wrap; margin-top:22px; }
    .science-note { background:var(--green-pale); border:1px solid var(--border); border-radius:12px; padding:15px; color:var(--text-soft); line-height:1.5; }

    @media (max-width: 860px) {
      .app-sidebar { display:none; }
      header, footer { margin-left:0; }
      main.container { margin-left:0; padding:24px 15px 48px; }
      .mobile-brand { display:block; }
      .header-inner { padding:10px 14px; min-height:58px; }
      .tagline { display:none; }
      .dashboard-heading { align-items:flex-start; flex-direction:column; }
      .continue-card { align-items:flex-start; flex-direction:column; }
      .weekly-stats { grid-template-columns:repeat(2,1fr); }
      .weekly-stat:nth-child(2) { border-right:none; }
      .weekly-stat:nth-child(-n+2) { border-bottom:1px solid var(--border); }
      .deep-timer { font-size:54px; }
      .deep-floating { right:12px; bottom:12px; width:220px; }
      .deep-toast { right:12px; left:12px; top:72px; max-width:none; }
      .deep-guide { padding:20px 16px; }
    }


    /* Rycal top bar: keep the utility text and account controls on the right. */
    @media (min-width: 861px) {
      .topbar .header-inner {
        justify-content: flex-end;
        width: 100%;
        padding-left: 24px;
        padding-right: 28px;
      }
      .topbar .header-actions {
        margin-left: auto;
        justify-content: flex-end;
      }
    }



    /* =========================
       RYCAL AUTH MODAL
    ========================= */
    .auth-modal-backdrop {
      position: fixed;
      inset: 0;
      z-index: 3000;
      background: rgba(20, 36, 29, .42);
      display: none;
      align-items: center;
      justify-content: center;
      padding: 20px;
    }
    .auth-modal-backdrop.open { display: flex; }
    .auth-modal {
      width: min(440px, 100%);
      background: #fff;
      border: 1px solid var(--border);
      border-radius: 20px;
      box-shadow: 0 24px 70px rgba(25, 55, 41, .20);
      padding: 28px;
      position: relative;
    }
    .auth-modal-close {
      position: absolute;
      top: 14px;
      right: 14px;
      width: 34px;
      height: 34px;
      border-radius: 50%;
      padding: 0;
      background: #f1f5f2;
      color: var(--text-soft);
      font-size: 19px;
    }
    .auth-modal-brand {
      color: var(--green-dark);
      font-weight: 800;
      font-size: 14px;
      letter-spacing: .5px;
      margin-bottom: 7px;
    }
    .auth-modal h2 { margin: 0 0 7px; font-size: 27px; }
    .auth-modal-copy { color: var(--text-soft); line-height: 1.45; margin-bottom: 20px; }
    .auth-google {
      width: 100%;
      background: white;
      border: 1px solid var(--border);
      color: var(--text);
      font-weight: 700;
      padding: 13px 16px;
    }
    .auth-google:hover { background: var(--green-pale); border-color: #b8d3c3; }
    .auth-divider {
      display: flex;
      align-items: center;
      gap: 12px;
      color: #89948e;
      font-size: 12px;
      margin: 18px 0;
    }
    .auth-divider::before, .auth-divider::after {
      content: '';
      height: 1px;
      background: var(--border);
      flex: 1;
    }
    .auth-field { margin-bottom: 12px; }
    .auth-field label { display:block; font-size:12px; font-weight:700; margin-bottom:6px; color:var(--text-soft); }
    .auth-field input {
      width: 100%;
      padding: 12px 13px;
      border-radius: 10px;
      border: 1px solid var(--border);
      font: inherit;
      color: var(--text);
      outline: none;
    }
    .auth-field input:focus { border-color: var(--green-medium); box-shadow: 0 0 0 3px rgba(78,146,112,.12); }
    .auth-submit { width:100%; background:var(--green-dark); color:white; font-weight:700; margin-top:3px; }
    .auth-switch-row { text-align:center; color:var(--text-soft); font-size:13px; margin-top:16px; }
    .auth-link { border:0; background:transparent; padding:0; color:var(--green-dark); font-weight:750; text-decoration:underline; }
    .auth-status { min-height: 18px; margin-top: 12px; color: var(--red); font-size: 12px; line-height: 1.4; }
    .auth-save-note {
      margin-top: 18px;
      padding: 12px 13px;
      border-radius: 10px;
      background: var(--green-pale);
      color: var(--text-soft);
      font-size: 12px;
      line-height: 1.45;
    }
    @media (max-width:600px){ .auth-modal{padding:24px 18px;} }



  /* =========================
     GENERAL STUDY + MY SETS
  ========================= */
  .study-source-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
  }
  .study-source-card {
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 22px;
    display: flex;
    flex-direction: column;
    min-height: 190px;
    box-shadow: 0 3px 12px rgba(35,70,52,.04);
  }
  .study-source-card:hover { border-color: #b9d3c4; }
  .study-source-kicker {
    color: var(--green);
    font-size: 12px;
    font-weight: 750;
    text-transform: uppercase;
    letter-spacing: .65px;
    margin-bottom: 9px;
  }
  .study-source-title { font-size: 21px; font-weight: 750; margin-bottom: 7px; }
  .study-source-copy { color: var(--text-soft); line-height: 1.5; flex: 1; }
  .study-source-meta { margin-top: 13px; color: var(--green-dark); font-size: 13px; font-weight: 650; }
  .study-source-actions { margin-top: 18px; }

  .ced-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 9px;
    border-radius: 999px;
    background: var(--green-light);
    color: var(--green-dark);
    font-size: 11px;
    font-weight: 750;
    letter-spacing: .2px;
    width: fit-content;
  }

  .sets-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 22px;
  }
  .sets-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 15px;
  }
  .set-card {
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: 15px;
    padding: 20px;
    box-shadow: 0 3px 12px rgba(35,70,52,.04);
  }
  .set-card-title { font-size: 19px; font-weight: 750; margin-bottom: 5px; }
  .set-card-sub { color: var(--text-soft); font-size: 14px; margin-bottom: 17px; }
  .set-card-actions { display:flex; flex-wrap:wrap; gap:8px; }
  .guest-save-note {
    background: var(--green-pale);
    border: 1px solid var(--border);
    color: var(--text-soft);
    padding: 13px 15px;
    border-radius: 12px;
    line-height: 1.45;
    margin-bottom: 20px;
  }
  .set-editor {
    background: var(--white);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 24px;
  }
  .set-meta-grid {
    display:grid;
    grid-template-columns: 2fr 1fr;
    gap:12px;
    margin-bottom:20px;
  }
  .set-field label { display:block; font-size:13px; font-weight:700; color:var(--text-soft); margin-bottom:6px; }
  .set-field input {
    width:100%; border:1px solid var(--border); border-radius:10px; padding:12px 13px;
    font:inherit; color:var(--text); background:white;
  }
  .cards-editor-list { display:grid; gap:10px; }
  .card-editor-row {
    display:grid;
    grid-template-columns: 1fr 1.6fr auto;
    gap:10px;
    align-items:start;
  }
  .card-editor-row textarea {
    width:100%; min-height:72px; resize:vertical; border:1px solid var(--border); border-radius:10px;
    padding:11px 12px; font:inherit; color:var(--text); background:white;
  }
  .remove-card-btn { background:#f3f5f4; color:var(--text-soft); padding:10px 12px; }
  .set-editor-actions { display:flex; gap:10px; flex-wrap:wrap; margin-top:18px; }
  .empty-sets {
    padding:28px; border:1px dashed #c7d6cd; border-radius:14px; color:var(--text-soft); text-align:center;
    background:var(--green-pale);
  }
  .ap-independent-note { color:var(--text-soft); font-size:12px; line-height:1.45; margin-top:12px; }

  @media (max-width: 700px) {
    .study-source-grid { grid-template-columns: 1fr; }
    .set-meta-grid, .card-editor-row { grid-template-columns: 1fr; }
    .remove-card-btn { width:fit-content; }
  }



  /* MY SETS 2.0 */
  .sets-toolbar-actions { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
  .set-card-actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:16px; }
  .set-card-actions .primary-button, .set-card-actions .compact-button { margin:0; }
  .set-favorite-button.saved { background:#EAF4EE; color:#245C45; border-color:#9FC7B2; }
  .import-help { margin-top:8px; font-size:.88rem; color:#66736C; }
  .set-study-note { margin-top:8px; font-size:.88rem; color:#66736C; }


  .ap-library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:24px}.ap-library-card{background:#fff;border:1px solid #DDE5E0;border-radius:18px;padding:24px;box-shadow:0 4px 16px rgba(36,92,69,.05)}.ap-library-card.available{border-color:#b9d4c5;background:#fbfdfc}.ap-library-card h2{margin:7px 0 10px;color:#24312B}.ap-library-card p{color:#66736C;line-height:1.55}.ced-badge.muted{background:#f1f4f2;color:#66736C}.study-source-actions{display:flex;gap:10px;flex-wrap:wrap}@media(max-width:760px){.ap-library-grid{grid-template-columns:1fr}}


  /* ===== RYCAL MASTER ADMIN ===== */
  .admin-shell{max-width:1180px;margin:0 auto;}
  .admin-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;flex-wrap:wrap;margin:18px 0 22px;}
  .admin-filter{display:flex;gap:8px;flex-wrap:wrap;}
  .admin-filter button{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:999px;padding:8px 13px;font-weight:700;cursor:pointer;}
  .admin-filter button.active{background:var(--green-dark);color:#fff;border-color:var(--green-dark);}
  .admin-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0 24px;}
  .admin-stat-card{background:#fff;border:1px solid var(--border);border-radius:18px;padding:18px;box-shadow:0 8px 24px rgba(36,92,69,.06);}
  .admin-stat-value{font-size:30px;font-weight:800;color:var(--green-dark);line-height:1.05;}
  .admin-stat-label{font-size:13px;color:var(--muted);margin-top:7px;font-weight:700;}
  .admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px;}
  .admin-panel{background:#fff;border:1px solid var(--border);border-radius:18px;padding:18px;}
  .admin-panel h3{margin:0 0 14px;color:var(--text);font-size:17px;}
  .admin-list{display:flex;flex-direction:column;gap:10px;}
  .admin-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);}
  .admin-row:last-child{border-bottom:0;}
  .admin-row-title{font-weight:700;color:var(--text);}
  .admin-row-sub{font-size:12px;color:var(--muted);margin-top:2px;}
  .admin-row-value{font-weight:800;color:var(--green-dark);white-space:nowrap;}
  .admin-note{background:var(--green-light);border:1px solid #d7e9de;border-radius:14px;padding:13px 15px;color:var(--text);font-size:13px;line-height:1.5;}
  .admin-loading{padding:28px;text-align:center;color:var(--muted);}
  @media(max-width:900px){.admin-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.admin-grid{grid-template-columns:1fr;}}
  @media(max-width:520px){.admin-stat-grid{grid-template-columns:1fr 1fr;gap:10px}.admin-stat-value{font-size:25px}.admin-stat-card{padding:14px}}


    .card-study-context{max-width:720px;margin:14px auto 18px;padding:14px 16px;background:#F4F9F6;border:1px solid #DDE5E0;border-radius:14px;color:#24312B}
    .card-context-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13px;font-weight:700}
    .context-badge{padding:4px 8px;border-radius:999px;background:#EAF4EE;color:#245C45;font-size:11px;letter-spacing:.04em;text-transform:uppercase}
    .why-toggle{border:0;background:transparent;color:#245C45;font-weight:700;cursor:pointer;padding:4px 0;margin-left:auto}
    .why-panel{display:none;margin-top:10px;padding-top:10px;border-top:1px solid #DDE5E0;font-size:14px;line-height:1.5;color:#526159}
    .why-panel.open{display:block}
    .flash-filter-box{max-width:720px;margin:10px auto 18px;padding:14px 16px;background:#fff;border:1px solid #DDE5E0;border-radius:14px}
    .flash-filter-title{font-weight:800;margin-bottom:5px}.flash-filter-copy{font-size:13px;color:#66736C;margin-bottom:10px}
    .flash-filter-controls{display:flex;gap:8px;flex-wrap:wrap}.flash-filter-btn{border:1px solid #C9D8CF;background:#fff;color:#245C45;border-radius:999px;padding:8px 12px;font-weight:700;cursor:pointer}.flash-filter-btn.active{background:#245C45;color:#fff;border-color:#245C45}


    /* Flashcard focus + view-all: distraction-free card-only fullscreen */
    .flash-action-row {
      display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin:14px 0 8px;
    }
    .flash-action-btn {
      border:1px solid #d9e3dd; background:#fff; color:#245C45; border-radius:10px;
      padding:9px 12px; font-weight:700; cursor:pointer;
    }
    .flash-action-btn:hover { background:#F4F9F6; }
    #flashcardScreen:fullscreen,
    #flashcardScreen:-webkit-full-screen {
      background:#F6F8F7; padding:24px; overflow:auto;
    }
    #flashcardScreen.flash-focus-mode {
      display:flex !important; align-items:center; justify-content:center; min-height:100vh;
      box-sizing:border-box; background:#F6F8F7; padding:clamp(18px,4vw,56px); overflow:hidden;
    }
    #flashcardScreen.flash-focus-mode > *:not(#flashStudyArea) { display:none !important; }
    #flashcardScreen.flash-focus-mode #flashStudyArea {
      display:flex !important; align-items:center; justify-content:center; width:100%; height:100%; margin:0; padding:0;
    }
    #flashcardScreen.flash-focus-mode #flashStudyArea > *:not(.card-scene) { display:none !important; }
    #flashcardScreen.flash-focus-mode .card-scene {
      display:block !important; width:min(1000px,92vw); max-width:none; margin:0 auto;
    }
    #flashcardScreen.flash-focus-mode .flashcard {
      width:100%; min-height:min(62vh,620px); max-height:78vh; margin:0;
    }
    .all-cards-overlay {
      position:fixed; inset:0; z-index:9999; background:rgba(20,32,26,.45); display:none;
      align-items:flex-start; justify-content:center; padding:28px 16px; overflow:auto;
    }
    .all-cards-overlay.open { display:flex; }
    .all-cards-panel {
      width:min(1000px, 100%); background:#fff; border-radius:18px; padding:22px;
      box-shadow:0 20px 60px rgba(0,0,0,.18);
    }
    .all-cards-header { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; margin-bottom:14px; }
    .all-cards-header h2 { margin:0 0 4px; }
    .all-cards-close { border:0; background:#F4F9F6; color:#245C45; border-radius:10px; padding:9px 12px; font-weight:700; cursor:pointer; }
    .all-cards-search { width:100%; box-sizing:border-box; border:1px solid #d9e3dd; border-radius:10px; padding:10px 12px; margin:4px 0 14px; font:inherit; }
    .all-cards-list { display:grid; gap:10px; }
    .all-card-row { display:grid; grid-template-columns:minmax(180px, .8fr) minmax(260px, 1.6fr); gap:18px; padding:14px 16px; border:1px solid #e1e8e4; border-radius:12px; background:#fff; }
    .all-card-term { font-weight:800; color:#24312B; }
    .all-card-definition { color:#35433c; line-height:1.5; }
    .all-card-meta { grid-column:1 / -1; font-size:.82rem; color:#66736C; margin-top:-4px; }
    @media (max-width:700px) {
      .all-card-row { grid-template-columns:1fr; gap:8px; }
      .all-card-meta { grid-column:1; }
      .all-cards-panel { padding:16px; }
    }


/* RYCAL QUIET UI — progressive disclosure */
.dashboard-subtitle{max-width:520px}
.study-source-card{padding:22px}
.study-source-copy{max-width:34rem}
.minimal-filter{padding:12px 14px}
.minimal-filter .flash-filter-controls{margin-top:0}
.compact-count{font-size:12px;opacity:.72}
#flashcardScreen .study-topic{margin-bottom:10px}
#flashcardScreen .flash-action-row{margin:10px 0 14px}
#flashcardScreen .flash-action-btn{font-size:13px;padding:8px 11px}
#flashcardScreen .controls{margin-top:12px}
#flashcardScreen .icon-control{min-width:48px;font-size:20px}
#flashcardScreen .rating-controls{margin-top:14px}
#flashcardScreen .card-study-context{margin-top:10px}
.quiet-principle{font-size:18px;font-weight:700;color:#245c45;margin:8px 0 14px}
.science-hero .quiet-principle{color:#fff;opacity:.96}
.mode-card{position:relative}
.mode-card .favorite-mini{position:absolute;right:14px;top:14px;min-width:34px;padding:7px 9px}
@media (max-width:700px){#flashcardScreen h1{font-size:24px;margin-bottom:4px}#flashcardScreen .flash-action-row{gap:6px;flex-wrap:wrap}.dashboard-subtitle{font-size:15px}.study-source-card{padding:18px}}


  /* Rycal AP Government structured exam stimuli */
  .rycal-visual{background:#fff;border:1px solid #d9e0db;border-radius:14px;padding:18px;margin-top:8px}.visual-title{font-weight:800;margin-bottom:14px}.visual-caption{font-size:13px;color:#63736b;margin-top:8px}.bar-chart>div{display:grid;grid-template-columns:64px 1fr 48px;gap:10px;align-items:center;margin:10px 0}.bar-chart i{display:block;height:20px;background:#dcebe3;border-left:3px solid #245C45}.bar-chart b{font-size:13px}.flow-diagram{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap}.flow-box{border:2px solid #245C45;border-radius:12px;padding:18px;min-width:130px;text-align:center;font-weight:800;background:#f7faf8}.flow-box small{font-weight:500}.flow-arrow{font-size:28px}.rycal-data-table{width:100%;border-collapse:collapse}.rycal-data-table th,.rycal-data-table td{padding:10px;border-bottom:1px solid #dde3df;text-align:left}.rycal-data-table th{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#52635b}@media(max-width:600px){.flow-arrow{transform:rotate(90deg)}.flow-diagram{flex-direction:column}.bar-chart>div{grid-template-columns:58px 1fr 42px}}
