/* styles.css — mise en forme complète du site (variables, layout, écrans, animations) */

  :root{
    --bg: #fbf6f4;
    --card: #ffffff;
    --pink-pale: #ffd9e3;
    --pink-paler: #ffeef2;
    --pink: #ff6f91;
    --pink-deep: #e8547a;
    --gold: #ffc857;
    --text: #4a3843;
    --text-light: #a0899148;
    --text-soft: #9a8790;
    --shadow-sm: 0 4px 14px rgba(232, 84, 122, 0.12);
    --shadow-md: 0 10px 30px rgba(232, 84, 122, 0.16);
    --shadow-lg: 0 20px 50px rgba(232, 84, 122, 0.20);
    --radius-lg: 28px;
    --radius-md: 18px;
    --radius-full: 999px;
  }

  *{ box-sizing: border-box; margin:0; padding:0; }

  html,body{
    min-height: 100vh;
    background: var(--bg);
    color: var(--text);
    font-family: 'Nunito', sans-serif;
    overflow-x: hidden;
  }

  body{
    display:flex;
    align-items:center;
    justify-content:center;
    min-height: 100vh;
    padding: 24px 16px;
    position: relative;
  }

  h1,h2,h3, .display{
    font-family: 'Fredoka', sans-serif;
    font-weight: 600;
    letter-spacing: -0.01em;
  }

  button{ font-family: inherit; cursor:pointer; border:none; background:none; }

  /* ---------- Floating heart background ---------- */
  #heartsBg{
    position: fixed;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
    z-index: 0;
  }
  .bg-heart{
    position:absolute;
    bottom:-60px;
    opacity:0;
    animation: floatUp linear infinite;
    filter: saturate(0.9);
  }
  @keyframes floatUp{
    0%{ transform: translateY(0) translateX(0) rotate(-8deg); opacity:0; }
    8%{ opacity: var(--maxop, 0.55); }
    50%{ transform: translateY(-55vh) translateX(18px) rotate(8deg); }
    92%{ opacity: var(--maxop, 0.55); }
    100%{ transform: translateY(-115vh) translateX(-14px) rotate(-8deg); opacity:0; }
  }

  /* ---------- Confetti canvas ---------- */
  #confettiCanvas{
    position: fixed;
    inset:0;
    width:100vw;
    height:100vh;
    pointer-events:none;
    z-index: 500;
  }

  /* ---------- App shell ---------- */
  .app{
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 520px;
    display:flex;
    flex-direction: column;
    align-items:center;
  }

  .brand{
    display:flex;
    align-items:center;
    gap:8px;
    margin-bottom: 18px;
    color: var(--pink-deep);
    font-family:'Fredoka', sans-serif;
    font-weight:600;
    font-size: 15px;
    opacity: 0.85;
  }
  .brand.hidden{ display:none; }

  /* ---------- Progress tracker ---------- */
  .tracker{
    display:flex;
    align-items:flex-start;
    justify-content:center;
    gap: 4px;
    width:100%;
    margin-bottom: 22px;
    padding: 0 4px;
  }
  .tracker.hidden{ display:none; }
  .tstep{
    display:flex;
    flex-direction:column;
    align-items:center;
    flex:1;
    min-width: 0;
    position:relative;
  }
  .tstep .dot{
    width: 30px;
    height:30px;
    border-radius:50%;
    background: #fff;
    border: 2px solid var(--pink-pale);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:13px;
    color: var(--text-soft);
    transition: all .35s ease;
    z-index:1;
  }
  .tstep .line{
    position:absolute;
    top:14px;
    left:50%;
    width:100%;
    height:3px;
    background: var(--pink-pale);
    z-index:0;
    transition: background .35s ease;
  }
  .tstep:last-child .line{ display:none; }
  .tstep .tlabel{
    margin-top:6px;
    font-size: 10.5px;
    color: var(--text-soft);
    text-align:center;
    font-weight:700;
    line-height:1.2;
  }
  .tstep.done .dot{ background: var(--pink); border-color: var(--pink); color:#fff; }
  .tstep.done .line{ background: var(--pink); }
  .tstep.current .dot{
    background: var(--pink-deep);
    border-color: var(--pink-deep);
    color:#fff;
    box-shadow: 0 0 0 5px rgba(255,111,145,0.22);
    transform: scale(1.08);
  }
  .tstep.current .tlabel{ color: var(--pink-deep); }

  /* ---------- Screens / card ---------- */
  .screens{ width:100%; position:relative; }
  .screen{
    display:none;
    width:100%;
  }
  .screen.active{
    display:block;
    animation: screenIn .5s cubic-bezier(.2,.8,.25,1);
  }
  @keyframes screenIn{
    from{ opacity:0; transform: translateY(16px) scale(.98); }
    to{ opacity:1; transform: translateY(0) scale(1); }
  }

  .card{
    background: var(--card);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-md);
    padding: 36px 28px;
    width:100%;
    position:relative;
    text-align:center;
  }

  .back-row{
    display:flex;
    justify-content:flex-start;
    margin-bottom: 6px;
  }
  .back-btn{
    display:inline-flex;
    align-items:center;
    gap:6px;
    font-size: 13.5px;
    font-weight: 700;
    color: var(--text-soft);
    padding: 8px 14px 8px 10px;
    border-radius: var(--radius-full);
    transition: all .2s ease;
  }
  .back-btn:hover{ background: var(--pink-paler); color: var(--pink-deep); transform: translateX(-2px); }

  .eyebrow{
    display:inline-block;
    font-size: 12.5px;
    font-weight: 800;
    color: var(--pink-deep);
    background: var(--pink-paler);
    padding: 5px 14px;
    border-radius: var(--radius-full);
    margin-bottom: 14px;
    letter-spacing: 0.02em;
  }

  h2.title{
    font-size: 25px;
    margin-bottom: 6px;
    color: var(--text);
  }
  p.subtitle{
    color: var(--text-soft);
    font-size: 14.5px;
    margin-bottom: 26px;
    font-weight: 600;
  }

  /* ---------- Generic buttons ---------- */
  .btn{
    border-radius: var(--radius-full);
    font-weight: 700;
    font-size: 16px;
    padding: 15px 30px;
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
    box-shadow: var(--shadow-sm);
  }
  .btn:active{ transform: scale(0.96); }
  .btn-primary{
    background: linear-gradient(135deg, var(--pink) 0%, var(--pink-deep) 100%);
    color:#fff;
  }
  .btn-primary:hover{ transform: translateY(-3px); box-shadow: var(--shadow-md); }
  .btn-ghost{
    background: var(--pink-paler);
    color: var(--pink-deep);
    border: 2px solid var(--pink-pale);
  }
  .btn-ghost:hover{ transform: translateY(-3px); }
  .btn-wide{ width:100%; }
  .btn:disabled{ opacity:.45; cursor:not-allowed; transform:none !important; box-shadow:none !important; }

  /* ---------- Option cards (choice grids) ---------- */
  .option-grid{
    display:grid;
    gap: 14px;
    margin-bottom: 6px;
  }
  .grid-2{ grid-template-columns: 1fr 1fr; }
  .grid-1{ grid-template-columns: 1fr; }
  .grid-3wide{ grid-template-columns: repeat(2, 1fr); }

  .option-card{
    background: var(--pink-paler);
    border: 2px solid transparent;
    border-radius: var(--radius-md);
    padding: 22px 14px;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:8px;
    transition: all .22s cubic-bezier(.2,.8,.25,1);
    text-align:center;
  }
  .option-card .oc-emoji{ font-size: 34px; line-height:1; }
  .option-card .oc-label{ font-weight: 800; font-size: 14.5px; color: var(--text); }
  .option-card:hover{ transform: translateY(-4px); box-shadow: var(--shadow-sm); border-color: var(--pink-pale); }
  .option-card.selected{
    background: linear-gradient(135deg, var(--pink) 0%, var(--pink-deep) 100%);
    border-color: var(--pink-deep);
    transform: scale(1.03);
    box-shadow: var(--shadow-md);
  }
  .option-card.selected .oc-label{ color:#fff; }

  .option-card.wide{ flex-direction:row; justify-content:flex-start; padding: 16px 18px; }
  .option-card.wide .oc-emoji{ font-size: 24px; }
  .option-card.wide .oc-label{ font-size:14px; }

  /* "Autre" custom answer input (food / activity) */
  .custom-input-wrap{
    display: none;
    text-align: left;
    margin-top: 16px;
    animation: screenIn .35s ease;
  }
  .custom-input-wrap.active{ display:block; }

  /* Scrollable pill list (activities) */
  .pill-scroll{
    max-height: 380px;
    overflow-y: auto;
    padding: 4px 4px 4px 2px;
    margin-bottom: 8px;
    text-align:left;
  }
  .pill-scroll::-webkit-scrollbar{ width:6px; }
  .pill-scroll::-webkit-scrollbar-thumb{ background: var(--pink-pale); border-radius: 10px; }
  .pill-grid{
    display:grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
  .pill{
    display:flex;
    align-items:center;
    gap:8px;
    background: var(--pink-paler);
    border: 2px solid transparent;
    border-radius: var(--radius-md);
    padding: 12px 12px;
    font-weight: 700;
    font-size: 13px;
    transition: all .18s ease;
    text-align:left;
  }
  .pill .pemoji{ font-size:18px; flex-shrink:0; }
  .pill:hover{ transform: translateY(-2px); border-color: var(--pink-pale); }
  .pill.selected{
    background: linear-gradient(135deg, var(--pink) 0%, var(--pink-deep) 100%);
    color:#fff;
    border-color: var(--pink-deep);
  }

  /* ---------- Home screen ---------- */
  .home-card{ padding-top: 44px; padding-bottom: 34px; }
  .home-emoji-row{ font-size: 40px; margin-bottom: 10px; animation: pulseSoft 2.4s ease-in-out infinite; }
  @keyframes pulseSoft{ 0%,100%{ transform: scale(1); } 50%{ transform: scale(1.08); } }
  .home-title{
    font-size: 30px;
    margin-bottom: 10px;
    color: var(--text);
  }
  .home-sub{
    color: var(--text-soft);
    font-size: 15px;
    font-weight:600;
    margin-bottom: 30px;
  }
  .dodge-zone{
    position: relative;
    width: 100%;
    height: 190px;
    margin: 0 auto;
  }
  #btnOui{
    position:absolute;
    left: 50%;
    top: 50%;
    transform: translate(-115%, -50%);
    white-space:nowrap;
  }
  #btnNon{
    position:absolute;
    left: 50%;
    top: 50%;
    transform: translate(15%, -50%);
    white-space:nowrap;
    transition: left .28s cubic-bezier(.34,1.56,.64,1), top .28s cubic-bezier(.34,1.56,.64,1), transform .28s ease;
  }
  .hint-text{
    min-height: 20px;
    font-size: 13px;
    font-weight: 700;
    color: var(--pink-deep);
    margin-top: 14px;
    opacity: 0;
    transition: opacity .25s ease;
  }
  .hint-text.show{ opacity: 1; }

  /* Yes celebration overlay */
  .yes-panel{ display:none; }
  .yes-panel.active{ display:block; animation: screenIn .5s ease; }
  .yes-emoji{ font-size: 54px; margin-bottom: 8px; animation: bounceIn .6s ease; }
  @keyframes bounceIn{
    0%{ transform: scale(0.3); opacity:0; }
    60%{ transform: scale(1.15); opacity:1; }
    100%{ transform: scale(1); }
  }

  /* ---------- Datetime screen ---------- */
  .field-group{ text-align:left; margin-bottom: 18px; }
  .field-label{ font-weight:800; font-size: 13.5px; color: var(--text); margin-bottom:8px; display:block; }
  .field-input{
    width:100%;
    padding: 14px 16px;
    border-radius: var(--radius-md);
    border: 2px solid var(--pink-pale);
    background: var(--pink-paler);
    font-family:'Nunito',sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--text);
    outline:none;
    transition: border-color .2s ease;
  }
  .field-input:focus{ border-color: var(--pink); }

  /* ---------- Confirmation screen ---------- */
  .summary-list{ text-align:left; margin-bottom: 24px; display:flex; flex-direction:column; gap:10px; }
  .summary-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap: 10px;
    background: var(--pink-paler);
    border-radius: var(--radius-md);
    padding: 14px 16px;
  }
  .summary-row .sr-left{ display:flex; align-items:center; gap:12px; min-width:0; }
  .summary-row .sr-emoji{ font-size:22px; flex-shrink:0; }
  .summary-row .sr-text{ min-width:0; }
  .summary-row .sr-label{ font-size: 11px; font-weight:800; color: var(--text-soft); text-transform:uppercase; letter-spacing:.03em; }
  .summary-row .sr-value{ font-size: 14.5px; font-weight:800; color: var(--text); overflow-wrap:anywhere; }
  .edit-btn{
    flex-shrink:0;
    font-size: 12px;
    font-weight: 800;
    color: var(--pink-deep);
    background:#fff;
    padding: 8px 12px;
    border-radius: var(--radius-full);
    box-shadow: var(--shadow-sm);
    transition: transform .15s ease;
  }
  .edit-btn:hover{ transform: translateY(-2px); }

  .confirmed-badge{ display:none; }
  .confirmed-badge.active{
    display:flex;
    flex-direction:column;
    align-items:center;
    animation: screenIn .5s ease;
  }
  .check-circle{
    width:70px; height:70px; border-radius:50%;
    background: linear-gradient(135deg, var(--pink) 0%, var(--pink-deep) 100%);
    display:flex; align-items:center; justify-content:center;
    font-size: 34px; color:#fff;
    margin-bottom: 14px;
    box-shadow: var(--shadow-md);
    animation: bounceIn .6s ease;
  }

  .footer-note{
    margin-top: 22px;
    font-size: 12px;
    color: var(--text-soft);
    text-align:center;
    font-weight:600;
  }

  @media (max-width: 400px){
    .card{ padding: 28px 18px; }
    .grid-3wide{ grid-template-columns: repeat(2,1fr); }
    .pill-grid{ grid-template-columns: 1fr; }
    .tstep .tlabel{ display:none; }
  }
