
  :root{
    --stone:#ece6d9;
    --paper:#f9f6ee;
    --paper-raised:#fffdf8;
    --ink:#2a2019;
    --ink-soft:#6c5c50;
    --ink-faint:#96887a;
    --wine:#7c2436;
    --wine-deep:#551723;
    --wine-tint:#f3e4e5;
    --sage:#54604a;
    --sage-tint:#e9ecdd;
    --gold:#9c7a2e;
    --line:#dcd3bf;
    --line-strong:#c7bb9f;
    --good:#3f7d53; --good-tint:#e6f0e8;
    --warn:#af7f1f; --warn-tint:#f6ecd8;
    --bad:#b5432f;  --bad-tint:#f6e3de;
    --shadow: 0 1px 2px rgba(42,32,25,.05), 0 8px 24px -12px rgba(42,32,25,.18);
    --radius: 10px;
    --sidebar-w: 220px;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --stone:#1b1512; --paper:#231c17; --paper-raised:#2a221c;
      --ink:#f1e9de; --ink-soft:#c3b3a2; --ink-faint:#8d7c6c;
      --wine:#e08497; --wine-deep:#f2b3bf; --wine-tint:#3a2126;
      --sage:#aab897; --sage-tint:#293325; --gold:#d3ad5c;
      --line:#3c332b; --line-strong:#4c4136;
      --good:#7fbf95; --good-tint:#213229;
      --warn:#d6ac5c; --warn-tint:#332c1c;
      --bad:#e08b78; --bad-tint:#382420;
      --shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.5);
    }
  }
  :root[data-theme="dark"]{
    --stone:#1b1512; --paper:#231c17; --paper-raised:#2a221c;
    --ink:#f1e9de; --ink-soft:#c3b3a2; --ink-faint:#8d7c6c;
    --wine:#e08497; --wine-deep:#f2b3bf; --wine-tint:#3a2126;
    --sage:#aab897; --sage-tint:#293325; --gold:#d3ad5c;
    --line:#3c332b; --line-strong:#4c4136;
    --good:#7fbf95; --good-tint:#213229;
    --warn:#d6ac5c; --warn-tint:#332c1c;
    --bad:#e08b78; --bad-tint:#382420;
    --shadow: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.5);
  }

  *{box-sizing:border-box;}
  body{ background:var(--stone); color:var(--ink); font:16px/1.5 ui-sans-serif,system-ui,'Segoe UI',Arial,sans-serif; }
  h1,h2,h3{ font-family:Georgia, 'Iowan Old Style', 'Palatino Linotype', serif; font-weight:600; text-wrap:balance; color:var(--ink); margin:0; }
  .mono{ font-family:ui-monospace, 'SFMono-Regular', Consolas, 'Liberation Mono', monospace; font-variant-numeric:tabular-nums; }
  a{ color:var(--wine); }
  button, input, select, textarea{ font:inherit; color:inherit; }
  ::placeholder{ color:var(--ink-faint); }

  /* ---------- shell ---------- */
  .shell{ display:flex; min-height:100vh; }
  .sidebar{
    width:var(--sidebar-w); flex:none;
    background:var(--paper-raised); border-right:1px solid var(--line);
    padding:1.4rem 1rem; position:sticky; top:0; height:100vh; overflow-y:auto;
    display:flex; flex-direction:column;
  }
  .brand{ font-family:Georgia, 'Iowan Old Style', 'Palatino Linotype', serif; font-weight:700; font-size:1.3rem; margin:0 .3rem 1.6rem; }
  .brand em{ color:var(--wine); font-style:normal; }
  .nav-group{ margin-bottom:1.4rem; }
  .nav-label{ font-size:.68rem; text-transform:uppercase; letter-spacing:.09em; color:var(--ink-faint); padding:0 .6rem; margin-bottom:.4rem; }
  .nav-link{
    display:flex; align-items:center; gap:.6rem;
    padding:.5rem .6rem; border-radius:8px; text-decoration:none;
    color:var(--ink-soft); font-size:.88rem; font-weight:500;
  }
  .nav-link .ic{ width:1.2rem; text-align:center; flex:none; }
  .nav-link:hover{ background:var(--stone); color:var(--ink); }
  .nav-link.active{ background:var(--wine-tint); color:var(--wine); font-weight:700; }
  .sidebar-foot{ margin-top:auto; padding:.8rem .6rem 0; font-size:.72rem; color:var(--ink-faint); border-top:1px solid var(--line); }

  main.content{ flex:1; min-width:0; padding:2.2rem clamp(1.2rem,3vw,3rem) 5rem; max-width:1180px; }

  /* ---------- page header ---------- */
  .page-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; flex-wrap:wrap; margin-bottom:1.6rem; }
  .page-head h1{ font-size:1.7rem; }
  .page-head .sub{ color:var(--ink-soft); font-size:.9rem; margin-top:.3rem; max-width:60ch; }
  .head-actions{ display:flex; gap:.6rem; flex-wrap:wrap; }

  /* ---------- ancres de sections (fiche réservation) ---------- */
  [id^="sec-"]{ scroll-margin-top:4.5rem; }
  .section-nav{ position:sticky; top:.5rem; z-index:6; display:flex; gap:.4rem; flex-wrap:wrap;
    padding:.5rem .7rem; margin-bottom:1.1rem; background:var(--paper-raised);
    border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); }

  /* ---------- buttons ---------- */
  .btn{
    display:inline-flex; align-items:center; gap:.4em; white-space:nowrap;
    border:1px solid var(--line-strong); background:var(--paper-raised); color:var(--ink);
    padding:.55rem 1rem; border-radius:8px; font-size:.86rem; font-weight:600; cursor:pointer;
    transition:background .15s ease, border-color .15s ease;
  }
  .btn:hover{ background:var(--stone); }
  .btn-primary{ background:var(--wine); border-color:var(--wine); color:#fff; }
  .btn-primary:hover{ background:var(--wine-deep); border-color:var(--wine-deep); }
  .btn-ghost{ background:transparent; border-color:transparent; }
  .btn-ghost:hover{ background:var(--stone); }
  .btn-danger{ color:var(--bad); }
  .btn-sm{ padding:.35rem .7rem; font-size:.78rem; border-radius:6px; }
  .btn:disabled{ opacity:.5; cursor:not-allowed; }

  /* ---------- cards / sections ---------- */
  .panel{ background:var(--paper-raised); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow); padding:1.3rem 1.4rem; margin-bottom:1.2rem; }
  .panel h2{ font-size:1.05rem; margin-bottom:.9rem; display:flex; align-items:center; justify-content:space-between; gap:.6rem; }
  .panel h2 small{ font-family:ui-sans-serif, system-ui, sans-serif; font-weight:400; font-size:.76rem; color:var(--ink-faint); }

  .field-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:.9rem 1.1rem; }
  .field{ display:flex; flex-direction:column; gap:.32rem; }
  .field.span2{ grid-column:span 2; }
  .field label{ font-size:.76rem; font-weight:600; color:var(--ink-soft); }
  .field input[type=text], .field input[type=email], .field input[type=tel], .field input[type=number],
  .field input[type=date], .field input[type=time], .field select, .field textarea{
    border:1px solid var(--line-strong); background:var(--paper); border-radius:7px; padding:.5rem .65rem; font-size:.88rem; color:var(--ink);
  }
  .field textarea{ resize:vertical; min-height:4.2em; font-family:inherit; }
  .field input:focus, .field select:focus, .field textarea:focus{ outline:2px solid var(--wine); outline-offset:1px; }
  .hint{ font-size:.72rem; color:var(--ink-faint); }
  .checkline{ display:flex; align-items:center; gap:.5rem; font-size:.86rem; }
  .checkline input{ width:1rem; height:1rem; accent-color:var(--wine); }
  .radio-row{ display:flex; gap:1rem; flex-wrap:wrap; }
  .chip-check{
    display:flex; align-items:center; gap:.4rem; border:1px solid var(--line-strong);
    padding:.4rem .7rem; border-radius:99px; font-size:.82rem; cursor:pointer; background:var(--paper);
  }
  .chip-check input{ accent-color:var(--wine); }

  /* ---------- pills ---------- */
  .pill{ display:inline-flex; align-items:center; gap:.35em; padding:.2rem .6rem; border-radius:99px; font-size:.72rem; font-weight:700; letter-spacing:.02em; white-space:nowrap; }
  .pill-good{ background:var(--good-tint); color:var(--good); }
  .pill-warn{ background:var(--warn-tint); color:var(--warn); }
  .pill-bad{ background:var(--bad-tint); color:var(--bad); }
  .pill-neutral{ background:var(--stone); color:var(--ink-soft); }

  /* ---------- tables ---------- */
  .table-wrap{ overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); background:var(--paper-raised); }
  table.data{ width:100%; border-collapse:collapse; font-size:.86rem; }
  table.data th{
    text-align:left; font-size:.7rem; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-faint);
    background:var(--stone); padding:.65rem .8rem; white-space:nowrap;
  }
  table.data td{ padding:.65rem .8rem; border-top:1px solid var(--line); vertical-align:middle; color:var(--ink-soft); }
  table.data tr.clickable{ cursor:pointer; }
  table.data tr.clickable:hover td{ background:var(--wine-tint); }
  table.data td.strong{ color:var(--ink); font-weight:600; }
  table.data td.num{ font-family:ui-monospace, Consolas, monospace; text-align:right; white-space:nowrap; }
  table.data th.num{ text-align:right; }

  .empty{ text-align:center; padding:2.6rem 1rem; color:var(--ink-faint); }
  .empty .big{ font-size:2rem; margin-bottom:.4rem; }

  /* ---------- filters bar ---------- */
  .filters{ display:flex; gap:.6rem; flex-wrap:wrap; align-items:flex-end; margin-bottom:1rem; }
  .filters .field{ min-width:150px; }
  .filters .field input, .filters .field select{ padding:.42rem .6rem; font-size:.82rem; }

  /* ---------- summary tiles ---------- */
  .tiles{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:.8rem; margin-bottom:1.2rem; }
  .tile{ background:var(--paper-raised); border:1px solid var(--line); border-radius:var(--radius); padding:.9rem 1rem; }
  .tile .lbl{ font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); margin-bottom:.3rem; }
  .tile .val{ font-family:ui-monospace, Consolas, monospace; font-size:1.25rem; font-weight:600; color:var(--ink); }
  .tile.accent .val{ color:var(--wine); }
  .tot-row{ display:flex; justify-content:space-between; gap:1rem; padding:.28rem 0; font-size:.86rem; color:var(--ink-soft); }
  .tot-row .mono{ color:var(--ink); }
  .tot-row.grand{ font-weight:700; font-size:1.02rem; color:var(--ink); border-top:1px solid var(--line); margin-top:.3rem; padding-top:.5rem; }
  .tot-row.grand .mono{ color:var(--wine); }

  /* ---------- consumption lines ---------- */
  .lines-table td.offert{ text-decoration:line-through; opacity:.6; }
  .add-line-row{ display:flex; gap:.6rem; flex-wrap:wrap; align-items:flex-end; margin-top:.9rem; padding-top:.9rem; border-top:1px dashed var(--line); }
  .add-line-row .field{ min-width:180px; }

  /* ---------- misc ---------- */
  .divider{ border:none; border-top:1px solid var(--line); margin:1.2rem 0; }
  .muted{ color:var(--ink-faint); font-size:.82rem; }
  .toast{
    position:fixed; bottom:1.4rem; left:50%; transform:translateX(-50%);
    background:var(--ink); color:var(--paper); padding:.6rem 1.1rem; border-radius:8px; font-size:.85rem;
    box-shadow:var(--shadow); z-index:999; opacity:0; transition:opacity .25s ease;
  }
  .toast.show{ opacity:1; }
  #scroll-top-btn{
    position:fixed; right:1.4rem; bottom:1.4rem; z-index:998;
    width:2.6rem; height:2.6rem; border-radius:50%; border:1px solid var(--line);
    background:var(--wine); color:#fff; font-size:1.25rem; line-height:1;
    box-shadow:var(--shadow); cursor:pointer;
    opacity:0; visibility:hidden; transform:translateY(.5rem);
    transition:opacity .2s ease, transform .2s ease, visibility .2s;
  }
  #scroll-top-btn.show{ opacity:.92; visibility:visible; transform:translateY(0); }
  #scroll-top-btn:hover{ opacity:1; background:var(--wine-deep); }
  .room-block{ border:1px solid var(--line); border-radius:8px; padding:.7rem .8rem; margin-bottom:.6rem; background:var(--paper); }
  .room-block .rb-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:.5rem; }
  .day-group{ margin-bottom:1rem; }
  .day-group h4{ font-family:ui-sans-serif, system-ui, sans-serif; font-size:.82rem; text-transform:capitalize; color:var(--wine); margin-bottom:.4rem; font-weight:700; }
  .list-item{ display:flex; align-items:center; justify-content:space-between; gap:.6rem; padding:.55rem .1rem; border-top:1px solid var(--line); font-size:.86rem; }
  .list-item:first-child{ border-top:none; }
  .list-actions{ display:flex; gap:.4rem; }
  .catbadge{ font-size:.68rem; color:var(--ink-faint); }

  @media (max-width:860px){
    .shell{ flex-direction:column; }
    .sidebar{ position:relative; height:auto; width:100%; flex-direction:row; align-items:center; overflow-x:auto; padding:.8rem; }
    .brand{ margin:0 .8rem 0 0; }
    .nav-group{ display:flex; gap:.2rem; margin:0; }
    .nav-label{ display:none; }
    .sidebar-foot{ display:none; }
    main.content{ padding:1.4rem 1rem 4rem; }
  }

  /* ---------- print ---------- */
  #print-root{ display:none; }
  .sheet{ max-width:720px; margin:0 auto; }
  .sheet .shead{ display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:1.2rem; gap:1rem; }
  .sheet .sco{ font-family:Georgia, 'Iowan Old Style', 'Palatino Linotype', serif; font-weight:700; font-size:1.3rem; }
  .sheet .said{ font-size:.78rem; color:#555; line-height:1.5; }
  .sheet h2.title{ font-size:1.15rem; margin-bottom:.2rem; }
  .sheet .meta-row{ display:flex; gap:2rem; flex-wrap:wrap; font-size:.85rem; margin:.9rem 0; color:#333; }
  .sheet .meta-row div b{ display:block; font-size:.68rem; text-transform:uppercase; letter-spacing:.05em; color:#888; font-weight:600; }
  .sheet table{ width:100%; border-collapse:collapse; font-size:.85rem; margin:.6rem 0 1rem; }
  .sheet table th{ text-align:left; font-size:.68rem; text-transform:uppercase; color:#888; border-bottom:1px solid #ccc; padding:.4rem .3rem; }
  .sheet table td{ padding:.4rem .3rem; border-bottom:1px solid #eee; }
  .sheet table td.num{ text-align:right; font-family:ui-monospace, Consolas, monospace; }
  .sheet .totals{ margin-left:auto; width:280px; font-size:.86rem; }
  .sheet .totals div{ display:flex; justify-content:space-between; padding:.25rem 0; }
  .sheet .totals .grand{ font-weight:700; font-size:1.05rem; border-top:1px solid #333; margin-top:.3rem; padding-top:.5rem; }
  .sheet .foot{ margin-top:2rem; font-size:.7rem; color:#888; border-top:1px solid #ccc; padding-top:.6rem; }
  @media print{
    body *{ visibility:hidden; }
    #print-root, #print-root *{ visibility:visible; }
    #print-root{ display:block; position:absolute; left:0; top:0; width:100%; }
    body{ background:#fff; }
  }
