      /* ===================== LAYOUT GÉNÉRAL ===================== */

      .page-shell {
        width: 100%;
        min-height: 100vh;
        padding-inline: var(--page-padding);
      }

      .page-container {
        width: min(100%, var(--page-max-width));
        margin-inline: auto;
      }

      .section {
        width: 100%;
      }

      .app {
        width: 100%;
        margin: 0;
        padding: 24px 0 32px;
        flex: 1;
        display: flex;
        flex-direction: column;
        gap: 16px;
      }

      header {
        margin-bottom: 8px;
      }

      header h1 {
        font-size: 2.4rem;
        letter-spacing: -0.03em;
        margin: 0 0 8px;
      }

      header p {
        margin: 0;
        color: var(--text-muted);
        font-size: 0.98rem;
      }

      .tagline {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        background: rgba(10, 18, 40, 0.9);
        border-radius: var(--radius-md);
        padding: 4px 10px;
        border: 1px solid rgba(255, 255, 255, 0.05);
        margin-bottom: 10px;
        font-size: 0.75rem;
        color: var(--text-muted);
      }

      .tagline span {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 18px;
        height: 18px;
        border-radius: 50%;
        background: var(--accent-soft);
        color: var(--accent);
        font-size: 0.75rem;
      }

      main.app,
      .layout,
      .quiz-shell {
        background: transparent !important;
        border: none !important;
        box-shadow: none !important;
      }

      .layout {
        display: flex;
        flex-direction: column;
        gap: 20px;
        align-items: stretch;
      }

      .panel {
        background: rgba(5, 10, 26, 0.94);
        border-radius: var(--radius-lg);
        border: 1px solid var(--border);
        padding: 18px 18px 14px;
        box-shadow: var(--shadow-soft);
        backdrop-filter: blur(16px);
        display: flex;
        flex-direction: column;
        min-height: 0;
      }

      .quiz-shell {
        background: transparent;
        border: none;
        box-shadow: none;
        padding: 0;
        display: flex;
        flex-direction: column;
        min-height: 0;
      }

      #recoPanel {
        background: transparent;
        border: none;
        box-shadow: none;
        backdrop-filter: none;
        padding: 0;
      }

      .panel-title {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 12px;
        gap: 8px;
      }

      .panel-title h2 {
        font-size: 1.05rem;
        margin: 0;
        display: flex;
        align-items: center;
        gap: 8px;
      }

      .panel-title h2 span.icon {
        width: 20px;
        height: 20px;
        border-radius: 999px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        background: var(--accent-soft);
        color: var(--accent);
        font-size: 0.8rem;
      }

      .panel-title small {
        color: var(--text-muted);
        font-size: 0.78rem;
        white-space: nowrap;
      }

      .btn {
        border: none;
        border-radius: var(--radius-md);
        padding: 9px 16px;
        font-size: 0.9rem;
        cursor: pointer;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        transition:
          transform 0.08s ease-out,
          box-shadow 0.08s ease-out,
          background 0.15s ease-out;
        white-space: nowrap;
      }

      .btn-primary {
        background: linear-gradient(135deg, #ff7b3a, #ff4b5c);
        color: #fff;
        box-shadow: 0 10px 22px rgba(255, 80, 60, 0.55);
      }

      .btn-primary:hover {
        transform: translateY(-1px);
        box-shadow: 0 14px 30px rgba(255, 80, 60, 0.65);
      }

      .btn-reset-quiz {
        display: none;
        align-self: center;
        margin-top: 10px;
        padding: 10px 18px;
        border-radius: 999px;
        border: 1px solid rgba(255, 255, 255, 0.2);
        background: linear-gradient(
          135deg,
          rgba(255, 123, 58, 0.24),
          rgba(255, 75, 92, 0.14)
        );
        color: #fff;
      }

      .btn-reset-quiz:hover {
        transform: translateY(-1px);
        box-shadow: 0 12px 28px rgba(0, 0, 0, 0.38);
      }

      .btn-like,
      .btn-dislike,
      .btn-like-soft,
      .btn-dislike-soft,
      .btn-love,
      .btn-neutral {
        border-radius: var(--radius-md);
        padding: 5px 10px;
        font-size: 0.8rem;
        cursor: pointer;
        display: inline-flex;
        align-items: center;
        gap: 5px;
        border: 1px solid transparent;
      }

      .btn-like {
        background: rgba(46, 204, 113, 0.1);
        color: #2ecc71;
        border-color: rgba(46, 204, 113, 0.2);
      }

      .btn-like-soft {
        background: rgba(90, 214, 140, 0.08);
        color: #8df5b7;
        border-color: rgba(90, 214, 140, 0.2);
      }

      .btn-love {
        background: rgba(46, 204, 113, 0.2);
        color: #c5ffdd;
        border-color: rgba(46, 204, 113, 0.35);
      }

      .btn-dislike {
        background: var(--danger-soft);
        color: #ff4b5c;
        border-color: rgba(255, 75, 92, 0.28);
      }

      .btn-dislike-soft {
        background: rgba(255, 75, 92, 0.12);
        color: #ff9aa3;
        border-color: rgba(255, 75, 92, 0.25);
      }

      .btn-neutral {
        background: rgba(180, 188, 208, 0.12);
        color: #d9dfef;
        border-color: rgba(180, 188, 208, 0.3);
      }

      .btn-like:hover,
      .btn-dislike:hover,
      .btn-like-soft:hover,
      .btn-dislike-soft:hover,
      .btn-love:hover,
      .btn-neutral:hover {
        transform: translateY(-1px);
        box-shadow: 0 0 12px rgba(255, 255, 255, 0.18);
      }

      .btn-like.active {
        background: rgba(46, 204, 113, 0.3);
        border-color: rgba(46, 204, 113, 0.9);
        box-shadow: 0 0 14px rgba(46, 204, 113, 0.6);
      }

      .btn-dislike.active {
        background: rgba(255, 75, 92, 0.25);
        border-color: rgba(255, 75, 92, 0.9);
        box-shadow: 0 0 14px rgba(255, 75, 92, 0.6);
      }

      .btn-like-soft.active {
        background: rgba(90, 214, 140, 0.22);
        border-color: rgba(141, 245, 183, 0.95);
        box-shadow: 0 0 12px rgba(141, 245, 183, 0.45);
      }

      .btn-dislike-soft.active {
        background: rgba(255, 120, 130, 0.25);
        border-color: rgba(255, 154, 163, 0.95);
        box-shadow: 0 0 12px rgba(255, 154, 163, 0.45);
      }

      .btn-love.active {
        background: rgba(46, 204, 113, 0.38);
        border-color: rgba(197, 255, 221, 0.95);
        box-shadow: 0 0 16px rgba(46, 204, 113, 0.68);
      }

      .btn-neutral.active {
        background: rgba(180, 188, 208, 0.26);
        border-color: rgba(220, 227, 242, 0.95);
        box-shadow: 0 0 12px rgba(180, 188, 208, 0.45);
      }

      .search-results {
        margin-top: 6px;
        margin-bottom: 8px;
      }

      .section-label {
        font-size: 0.8rem;
        color: var(--text-muted);
        margin-bottom: 4px;
        display: flex;
        align-items: center;
        gap: 6px;
      }

      .section-label span.dot {
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: var(--accent);
      }

      .empty-state {
        font-size: 0.8rem;
        color: var(--text-muted);
        padding: 6px 0;
      }
