
  :root, [data-theme="sage"] {
    --primary:#75816B; --primary-deep:#5C6853; --gold:#B39769; --gold-soft:#CDbA95;
    --bg:#F7F5EF; --card:#FFFFFF; --ink:#26231E; --muted:#98917f; --faint:#B7B1A2;
    --line:#E8E3D7; --hair:#EFEBE1; --soft:#F3F0E8; --wash:#FBFAF6;
    --ok:#6E8A6E; --warn:#B78B4E; --bad:#B06A6A; --rose:#C69C9C;
  }
  [data-theme="blush"]     { --primary:#B98A8A; --primary-deep:#9A6D6D; --bg:#F9F5F3; --soft:#F5EDEA; --wash:#FCF9F8; --line:#ECE1DC; --hair:#F2E9E5; --rose:#9AA88E; }
  [data-theme="champagne"] { --primary:#AD9367; --primary-deep:#8F7850; --bg:#F9F6EE; --soft:#F4EEDF; --wash:#FCFAF4; --line:#EAE2CE; --hair:#F1EBDC; --rose:#C69C9C; }
  [data-theme="noir"]      { --primary:#3A4150; --primary-deep:#2E3440; --bg:#F4F4F2; --soft:#ECECEA; --wash:#FAFAF9; --line:#E2E1DD; --hair:#ECEBE7; --rose:#8892A6; }

  * { box-sizing:border-box; margin:0; padding:0; }
  body { font-family:'Jost',-apple-system,sans-serif; background:var(--bg); color:var(--ink); font-size:14px; font-weight:400; -webkit-font-smoothing:antialiased; }
  .serif { font-family:'Cormorant Garamond',Georgia,serif; }
  h1,h2,h3 { font-family:'Cormorant Garamond',Georgia,serif; font-weight:500; }

  .app { display:flex; min-height:100vh; }
  svg.i { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }

  /* ---------------- Sidebar ---------------- */
  .sidebar { width:250px; background:var(--wash); border-right:1px solid var(--line); padding:34px 0 24px; flex-shrink:0; position:sticky; top:0; height:100vh; overflow-y:auto; }
  .brand { padding:0 30px 24px; }
  .brand h1 { font-size:27px; letter-spacing:.5px; font-weight:500; }
  .brand h1 em { color:var(--gold); font-weight:400; }
  .brand .rule { width:28px; height:1px; background:var(--gold); margin:12px 0 10px; }
  .brand .sub { font-size:9px; color:var(--muted); letter-spacing:3.5px; text-transform:uppercase; }
  .navsec { padding:22px 30px 8px; font-size:9px; letter-spacing:2.6px; text-transform:uppercase; color:var(--gold); }
  .navitem { display:flex; align-items:center; gap:12px; padding:8px 30px; cursor:pointer; color:#5d574b; font-size:13.5px; letter-spacing:.3px; border-left:2px solid transparent; transition:all .15s; }
  .navitem svg.i { color:var(--faint); }
  .navitem:hover { color:var(--ink); background:var(--soft); }
  .navitem.active { color:var(--ink); border-left-color:var(--gold); background:var(--soft); font-weight:500; }
  .navitem.active svg.i { color:var(--gold); }
  .navitem .v2 { margin-left:auto; font-size:8px; letter-spacing:1.5px; color:var(--faint); text-transform:uppercase; }

  /* ---------------- Main ---------------- */
  .main { flex:1; padding:34px 44px 80px; max-width:1180px; }
  .topbar { display:flex; align-items:flex-end; gap:20px; margin-bottom:8px; flex-wrap:wrap; }
  .topbar h2 { font-size:34px; font-weight:500; letter-spacing:.3px; }
  .topbar .count { font-size:12px; color:var(--muted); letter-spacing:1.5px; text-transform:uppercase; padding-bottom:9px; }
  .topbar .count b { color:var(--gold); font-weight:600; }
  .spacer { flex:1; }
  .toprule { height:1px; background:var(--line); margin:14px 0 26px; }
  .actions { display:flex; gap:10px; align-items:center; padding-bottom:6px; }

  .swatches { display:flex; gap:7px; align-items:center; margin-right:6px; }
  .swatch { width:18px; height:18px; border-radius:50%; cursor:pointer; border:2px solid var(--card); box-shadow:0 0 0 1px var(--line); transition:transform .15s; }
  .swatch:hover { transform:scale(1.15); }
  .swatch.sel { box-shadow:0 0 0 1.5px var(--gold); }

  .btn { font-family:'Jost',sans-serif; background:var(--ink); color:#fff; border:none; border-radius:3px; padding:10px 20px; font-size:11px; letter-spacing:2px; text-transform:uppercase; cursor:pointer; font-weight:500; transition:background .15s; display:inline-flex; align-items:center; gap:8px; }
  .btn:hover { background:#000; }
  .btn.ghost { background:transparent; color:var(--ink); border:1px solid var(--line); }
  .btn.ghost:hover { border-color:var(--gold); color:var(--primary-deep); background:transparent; }
  .btn.sm { padding:7px 13px; font-size:9.5px; letter-spacing:1.6px; }
  .btn.gold { background:var(--gold); } .btn.gold:hover { background:var(--primary-deep); }

  .grid { display:grid; gap:18px; }
  .cols2 { grid-template-columns:repeat(2,1fr); }
  @media (max-width:920px){ .cols2{grid-template-columns:1fr;} .sidebar{display:none;} .main{padding:18px;} .mobilebar{display:flex !important;} .statstrip{grid-template-columns:repeat(2,1fr) !important;} .statstrip .cell{border-right:none !important;} .hero .names{font-size:34px !important;} }

  .card { background:var(--card); border:1px solid var(--line); border-radius:4px; padding:26px 28px; }
  .card h3 { font-size:20px; margin-bottom:4px; }
  .card .h3sub { font-size:10px; letter-spacing:2px; text-transform:uppercase; color:var(--muted); margin-bottom:18px; }

  /* hero */
  .hero { background:var(--card); border:1px solid var(--line); border-radius:4px; padding:44px 40px 38px; text-align:center; position:relative; }
  .hero::before { content:""; position:absolute; inset:8px; border:1px solid var(--hair); border-radius:2px; pointer-events:none; }
  .hero .kicker { font-size:9px; letter-spacing:4px; text-transform:uppercase; color:var(--gold); }
  .hero .names { font-family:'Cormorant Garamond',serif; font-size:46px; font-weight:500; font-style:italic; margin:10px 0 6px; }
  .hero .meta { font-size:11px; letter-spacing:2.5px; text-transform:uppercase; color:var(--muted); }
  .hero .days { margin-top:22px; display:inline-flex; align-items:baseline; gap:10px; border-top:1px solid var(--hair); padding-top:18px; }
  .hero .days b { font-family:'Cormorant Garamond',serif; font-size:40px; font-weight:500; color:var(--primary-deep); }
  .hero .days span { font-size:10px; letter-spacing:2.5px; text-transform:uppercase; color:var(--muted); }

  /* stat strip */
  .statstrip { display:grid; grid-template-columns:repeat(4,1fr); background:var(--card); border:1px solid var(--line); border-radius:4px; margin-top:18px; }
  .statstrip .cell { padding:24px 26px; border-right:1px solid var(--hair); }
  .statstrip .cell:last-child { border-right:none; }
  .stat .label { font-size:9.5px; letter-spacing:2.2px; text-transform:uppercase; color:var(--muted); }
  .stat .val { font-family:'Cormorant Garamond',serif; font-size:34px; font-weight:500; margin-top:8px; line-height:1; }
  .stat .hint { font-size:11.5px; color:var(--muted); margin-top:7px; letter-spacing:.3px; }

  table { width:100%; border-collapse:collapse; }
  th { text-align:left; font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--muted); font-weight:500; padding:10px 12px; border-bottom:1px solid var(--line); white-space:nowrap; }
  td { padding:12px; border-bottom:1px solid var(--hair); font-size:13.5px; vertical-align:middle; }
  tbody tr:hover td { background:var(--wash); }
  td b { font-weight:500; }
  .num { text-align:right; font-variant-numeric:tabular-nums; }
  .main > * { animation:rise .35s ease both; }
  @keyframes rise { from { opacity:0; transform:translateY(6px);} to { opacity:1; transform:none;} }

  .status { display:inline-flex; align-items:center; gap:7px; font-size:10.5px; letter-spacing:1.6px; text-transform:uppercase; color:var(--muted); white-space:nowrap; }
  .status .dot { width:5px; height:5px; border-radius:50%; background:var(--faint); }
  .status.ok { color:var(--ok); } .status.ok .dot { background:var(--ok); }
  .status.warn { color:var(--warn); } .status.warn .dot { background:var(--warn); }
  .status.bad { color:var(--bad); } .status.bad .dot { background:var(--bad); }
  .status.gold { color:var(--gold); } .status.gold .dot { background:var(--gold); }

  input, select { font-family:'Jost',sans-serif; font-size:13px; padding:9px 12px; border:1px solid var(--line); border-radius:3px; background:var(--card); color:var(--ink); letter-spacing:.3px; }
  input:focus, select:focus { outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(179,151,105,.12); }
  input[type=checkbox] { accent-color:var(--gold); width:15px; height:15px; }
  .searchrow { display:flex; gap:10px; margin-bottom:6px; flex-wrap:wrap; }
  .searchrow input[type=text] { flex:1; min-width:180px; }

  .donutwrap { display:flex; align-items:center; gap:26px; }
  .donut { width:128px; height:128px; border-radius:50%; position:relative; flex-shrink:0; }
  .donut::after { content:""; position:absolute; inset:9px; background:var(--card); border-radius:50%; }
  .donut .ctr { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; z-index:1; }
  .donut .ctr b { font-family:'Cormorant Garamond',serif; font-size:26px; font-weight:500; }
  .donut .ctr span { font-size:8px; color:var(--muted); text-transform:uppercase; letter-spacing:2px; margin-top:2px; }
  .legend { font-size:12.5px; color:var(--muted); line-height:2.2; letter-spacing:.3px; }
  .legend b { color:var(--ink); font-weight:500; }
  .dot { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:9px; }

  .bar { height:3px; background:var(--soft); border-radius:2px; overflow:hidden; margin-top:8px; }
  .bar > div { height:100%; background:var(--gold); border-radius:2px; }

  .feed { font-size:13.5px; }
  .feed .item { display:flex; gap:12px; padding:11px 0; border-bottom:1px solid var(--hair); align-items:center; }
  .feed .item:last-child { border:none; }
  .feed .when { color:var(--faint); font-size:11px; margin-left:auto; white-space:nowrap; letter-spacing:.5px; }
  .feed svg.i { color:var(--gold); width:14px; height:14px; }

  /* modal */
  .overlay { position:fixed; inset:0; background:rgba(38,35,30,.5); display:flex; align-items:center; justify-content:center; z-index:50; padding:16px; backdrop-filter:blur(2px); }
  .modal { background:var(--card); border-radius:4px; padding:34px; width:100%; max-width:470px; max-height:92vh; overflow-y:auto; border:1px solid var(--line); }
  .modal h3 { font-size:26px; margin-bottom:4px; }
  .modal .sub { color:var(--muted); font-size:12.5px; margin-bottom:22px; letter-spacing:.3px; }
  .field { margin-bottom:14px; }
  .field label { display:block; font-size:9px; text-transform:uppercase; letter-spacing:2.2px; color:var(--muted); margin-bottom:6px; }
  .field input, .field select { width:100%; }
  .frow { display:flex; gap:12px; } .frow .field { flex:1; }

  .toast { position:fixed; bottom:26px; left:50%; transform:translateX(-50%); background:var(--ink); color:#fff; padding:13px 26px; border-radius:3px; font-size:11px; letter-spacing:1.8px; text-transform:uppercase; z-index:99; box-shadow:0 10px 30px rgba(0,0,0,.28); }

  /* RSVP guest view */
  .rsvp-stage { max-width:440px; margin:14px auto 0; }
  .phone { background:var(--card); border:1px solid var(--line); border-radius:6px; padding:40px 34px 30px; box-shadow:0 24px 60px rgba(80,70,50,.13); position:relative; }
  .phone::before { content:""; position:absolute; inset:10px; border:1px solid var(--hair); border-radius:3px; pointer-events:none; }
  .rsvp-hero { text-align:center; margin-bottom:24px; }
  .rsvp-hero .mono { font-family:'Cormorant Garamond',serif; font-size:15px; letter-spacing:6px; color:var(--gold); }
  .rsvp-hero .names { font-family:'Cormorant Garamond',serif; font-size:34px; font-style:italic; font-weight:500; margin-top:8px; }
  .rsvp-hero .date { font-size:9.5px; letter-spacing:3.2px; text-transform:uppercase; color:var(--muted); margin-top:10px; }
  .rsvp-hero .flourish { width:44px; height:1px; background:var(--gold); margin:16px auto 0; }
  .choice { display:flex; gap:10px; margin-bottom:16px; }
  .choice button { flex:1; padding:13px; border-radius:3px; border:1px solid var(--line); background:var(--card); cursor:pointer; font-size:11px; font-family:'Jost',sans-serif; letter-spacing:1.8px; text-transform:uppercase; color:var(--muted); transition:all .15s; }
  .choice button.sel { border-color:var(--gold); background:var(--soft); font-weight:600; color:var(--primary-deep); }

  .note { font-size:11px; color:var(--muted); letter-spacing:.5px; padding:12px 16px; border-left:2px solid var(--gold); background:var(--wash); margin-bottom:24px; }
  .note a { color:var(--primary-deep); }
  .empty { color:var(--muted); text-align:center; padding:34px 10px; font-size:13px; letter-spacing:.5px; }
  .mobilebar { display:none; position:sticky; top:0; z-index:10; background:var(--wash); border-bottom:1px solid var(--line); padding:10px 14px; gap:8px; overflow-x:auto; }
  .linkbox { display:flex; gap:14px; align-items:center; background:var(--wash); border:1px solid var(--line); border-radius:4px; padding:14px 16px; font-size:12px; margin:14px 0; }
  .linkbox code { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--primary-deep); font-size:12px; }
  .qr { width:84px; height:84px; flex-shrink:0; background:
      repeating-linear-gradient(0deg, var(--ink) 0 4px, transparent 4px 8px),
      repeating-linear-gradient(90deg, var(--ink) 0 4px, #fff 4px 8px);
      border:6px solid #fff; outline:1px solid var(--line); border-radius:2px; opacity:.9; }
  .catrow { display:flex; justify-content:space-between; font-size:12.5px; margin-top:12px; letter-spacing:.3px; }
  .catrow span:last-child { color:var(--muted); }

  /* dense dashboard grid */
  .dgrid { display:grid; grid-template-columns:repeat(12,1fr); gap:14px; margin-top:18px; }
  .s3{grid-column:span 3;} .s4{grid-column:span 4;} .s6{grid-column:span 6;} .s8{grid-column:span 8;} .s12{grid-column:span 12;}
  @media (max-width:920px){ .s3{grid-column:span 6;} .s4{grid-column:span 12;} .s6,.s8{grid-column:span 12;} }
  .card.tight { padding:18px 20px; }
  .card.tight h3 { font-size:17px; }
  .card.tight .h3sub { margin-bottom:12px; }
  .donut.sm { width:92px; height:92px; }
  .donut.sm::after { inset:7px; }
  .donut.sm .ctr b { font-size:19px; }
  .cal { width:100%; }
  .cal .mo { text-align:center; font-family:'Cormorant Garamond',serif; font-size:19px; margin-bottom:10px; }
  .cal .grid7 { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; text-align:center; }
  .cal .dow { font-size:8px; letter-spacing:1.2px; color:var(--faint); text-transform:uppercase; padding:4px 0; }
  .cal .day { font-size:11.5px; padding:5px 0; border-radius:50%; color:#6d675a; aspect-ratio:1; display:flex; align-items:center; justify-content:center; }
  .cal .day.big { background:var(--gold); color:#fff; font-weight:600; }
  .cal .day.dim { color:var(--faint); opacity:.4; }
  .ph { border-radius:3px; display:flex; align-items:center; justify-content:center; font-family:'Cormorant Garamond',serif; font-style:italic; color:#fff; font-size:13px; letter-spacing:1px; aspect-ratio:4/3; }
  .minirow { display:flex; justify-content:space-between; align-items:center; padding:8px 0; border-bottom:1px solid var(--hair); font-size:12.5px; }
  .minirow:last-child { border:none; }
  .minirow .d { color:var(--muted); font-size:11px; letter-spacing:.5px; white-space:nowrap; margin-left:12px; }

  /* ============================================================
     RESTYLE v3 — "Sage Scrapbook" dense pastel system
     (overrides the editorial skin above)
     ============================================================ */
  :root, [data-theme="sage"] {
    --primary:#7C8B6F; --primary-deep:#49543E; --gold:#C0A467; --gold-soft:#E4D4AE;
    --bg:#F3EEE3; --card:#FFFFFF; --ink:#3B4033; --muted:#8E8877; --faint:#B5AE9C;
    --line:#E4DCC9; --hair:#EFE9DB; --soft:#ECE6D6; --wash:#FAF7EF; --rose:#D2A3A3;
    --tintA:#E9EEE0; --tintB:#F7E9E6; --tintC:#F7EFDA; --tintD:#E7EBEF;
  }
  [data-theme="blush"]     { --primary:#C08E8E; --primary-deep:#7E5A5A; --rose:#9AAB8C; --bg:#F7EFEC; --soft:#F1E5E0; --wash:#FCF7F5; --line:#EADCD4; --hair:#F3E9E3; --tintA:#F7E9E6; --tintB:#E9EEE0; }
  [data-theme="champagne"] { --primary:#B29A6B; --primary-deep:#6F5E3E; --rose:#D2A3A3; --bg:#F6F1E4; --soft:#F0E9D6; --wash:#FBF8EF; --line:#E7DEC5; --hair:#F1EBDA; --tintA:#F7EFDA; --tintB:#F7E9E6; }
  [data-theme="noir"]      { --primary:#55607A; --primary-deep:#2F3646; --rose:#A3ABB8; --bg:#EFEFED; --soft:#E6E6E3; --wash:#F9F9F8; --line:#DDDDD8; --hair:#EAEAE6; --tintA:#E7EBEF; --tintB:#EFEAE2; }

  body { font-family:'Plus Jakarta Sans',-apple-system,sans-serif; font-size:13px; }
  .btn { font-family:'Plus Jakarta Sans',sans-serif; border-radius:999px; letter-spacing:.6px; text-transform:none; font-size:12px; font-weight:600; padding:9px 18px; background:var(--primary-deep); }
  .btn:hover { background:var(--ink); }
  .btn.gold { background:var(--gold); } .btn.gold:hover { background:var(--primary-deep); }
  .btn.ghost { background:var(--card); border:1px solid var(--line); color:var(--primary-deep); }
  .btn.sm { padding:6px 13px; font-size:11px; letter-spacing:.4px; }
  input, select { border-radius:10px; font-family:'Plus Jakarta Sans',sans-serif; }

  /* sidebar → deep sage */
  .sidebar { background:var(--primary-deep); border-right:none; }
  .brand h1 { color:#F6F2E6; }
  .brand h1 em { color:var(--gold-soft); }
  .brand .rule { background:var(--gold-soft); }
  .brand .sub { color:rgba(246,242,230,.55); }
  .navsec { color:var(--gold-soft); opacity:.9; }
  .navitem { color:rgba(246,242,230,.78); border-left:none; margin:1px 10px; padding:8px 20px; border-radius:10px; }
  .navitem svg.i { color:rgba(246,242,230,.5); }
  .navitem:hover { background:rgba(255,255,255,.08); color:#fff; }
  .navitem.active { background:rgba(255,255,255,.14); color:#fff; border-left:none; }
  .navitem.active svg.i { color:var(--gold-soft); }
  .navitem .v2 { color:rgba(246,242,230,.4); }

  /* layout density */
  .main { padding:24px 30px 70px; }
  .topbar h2 { font-size:28px; }
  .toprule { margin:10px 0 18px; }
  .dgrid { gap:12px; margin-top:14px; }
  .grid { gap:12px; }

  /* cards → rounded, shadowed, tinted variety */
  .card { border-radius:18px; border:none; box-shadow:0 3px 14px rgba(90,80,55,.07); padding:20px 22px; }
  .card.tight { padding:16px 18px; }
  .modal { border-radius:20px; border:none; }
  .statstrip { border-radius:18px; border:none; box-shadow:0 3px 14px rgba(90,80,55,.07); overflow:hidden; }
  .statstrip .cell { border-right:none; padding:18px 20px; }
  .statstrip .cell:nth-child(1){ background:var(--tintA); }
  .statstrip .cell:nth-child(2){ background:var(--tintB); }
  .statstrip .cell:nth-child(3){ background:var(--tintC); }
  .statstrip .cell:nth-child(4){ background:var(--tintD); }
  .stat .label { font-size:9px; font-weight:700; letter-spacing:1.6px; color:var(--primary-deep); opacity:.75; }
  .stat .val { font-size:30px; }
  .stat .hint { font-size:11px; }

  /* hero → deep sage banner */
  .hero { background:var(--primary-deep); border:none; border-radius:18px; box-shadow:0 3px 14px rgba(90,80,55,.12); }
  .hero::before { border-color:rgba(246,242,230,.22); inset:9px; }
  .hero .kicker { color:var(--gold-soft); }
  .hero .names { color:#F6F2E6; }
  .hero .meta { color:rgba(246,242,230,.65); }
  .hero .days { border-top-color:rgba(246,242,230,.25); }
  .hero .days b { color:var(--gold-soft); }
  .hero .days span { color:rgba(246,242,230,.6); }
  .ph { border-radius:12px; box-shadow:inset 0 0 0 1px rgba(255,255,255,.25); }

  /* tables → colored header band + zebra (the cue sheet buyers trust) */
  table { border-radius:12px; overflow:hidden; }
  th { background:var(--primary); color:#fff; font-size:9.5px; font-weight:700; letter-spacing:1.4px; border-bottom:none; padding:10px 12px; }
  td { padding:9px 12px; font-size:12.5px; border-bottom:1px solid var(--hair); }
  tbody tr:nth-child(even) td { background:var(--wash); }
  tbody tr:hover td { background:var(--soft); }

  /* status → pill badges */
  .status { border-radius:999px; padding:3px 10px; font-size:9.5px; font-weight:700; letter-spacing:1px; background:var(--soft); color:var(--muted); }
  .status .dot { width:6px; height:6px; }
  .status.ok { background:#E3EEE0; color:#4E7A50; }
  .status.warn { background:#F6ECD8; color:#9A7434; }
  .status.bad { background:#F6E3E1; color:#A05B54; }
  .status.gold { background:#F1E8D2; color:#8A7340; }

  .bar { height:6px; border-radius:4px; }
  .bar > div { background:linear-gradient(90deg, var(--primary), var(--gold)); }
  .donut::after, .donut.sm::after { background:var(--card); }
  .card h3 { font-size:18px; }
  .card.tight h3 { font-size:16px; }
  .h3sub { font-size:9.5px; font-weight:600; }
  .cal .day.big { background:var(--gold); box-shadow:0 2px 8px rgba(192,164,103,.5); }
  .cal .mo { font-size:18px; }
  .feed .item { padding:9px 0; }
  .feed svg.i { color:var(--rose); }
  .minirow { font-size:12px; }
  .note { border-radius:12px; border-left:3px solid var(--gold); }
  .linkbox { border-radius:14px; }
  .toast { border-radius:999px; background:var(--primary-deep); letter-spacing:.5px; text-transform:none; font-size:12.5px; font-weight:600; }
  .phone { border-radius:22px; border:none; box-shadow:0 22px 55px rgba(80,70,45,.18); }
  .choice button { border-radius:999px; font-family:'Plus Jakarta Sans',sans-serif; letter-spacing:.4px; text-transform:none; font-size:12px; font-weight:600; }
  .choice button.sel { background:var(--tintA); }
  .mobilebar { background:var(--primary-deep); border-bottom:none; }
  .swatch { border-radius:50%; }

  /* dashboard layout fixes */
  .cal .day { aspect-ratio:auto; padding:4px 0; font-size:11px; border-radius:7px; }
  .cal .day.big { border-radius:7px; }
  .cal .mo { font-size:17px; margin-bottom:6px; }
  .cal .dow { padding:2px 0; }
  .dgrid { align-items:stretch; }
  .hero { background:linear-gradient(135deg, var(--primary-deep), var(--primary)); }
  .hero .ph { align-self:stretch; aspect-ratio:auto; min-height:130px; }
  .hero .names { font-size:34px !important; }
  .hero .days { padding-top:12px; margin-top:14px; }
  .hero .days b { font-size:32px; }
  .card.tight h3 { margin-bottom:2px; }
  .donutwrap { gap:18px; }
  .legend { line-height:2 !important; font-size:12px; }

  /* ============================================================
     DASHBOARD v4 — competitor-density masonry
     ============================================================ */
  .dcols { display:grid; grid-template-columns:3fr 4fr 5fr; gap:10px; margin-top:12px; }
  .stack { display:flex; flex-direction:column; gap:10px; min-width:0; }
  @media (max-width:920px){ .dcols { grid-template-columns:1fr; } }
  .p { background:var(--card); border-radius:12px; box-shadow:0 2px 10px rgba(90,80,55,.06); padding:13px 15px; }
  .p h4 { display:flex; align-items:center; gap:8px; font-family:'Plus Jakarta Sans',sans-serif; font-size:8.5px; font-weight:700; letter-spacing:1.9px; text-transform:uppercase; color:var(--primary-deep); margin-bottom:10px; }
  .p h4::before, .p h4::after { content:""; flex:1; height:1px; background:var(--line); }
  .p h4 span { white-space:nowrap; }
  .duo { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
  .kpi { text-align:center; padding:14px 10px; }
  .kpi .knum { font-family:'Cormorant Garamond',serif; font-size:27px; font-weight:600; line-height:1.05; }
  .kpi .ksub { font-size:9.5px; color:var(--muted); margin-top:3px; letter-spacing:.4px; }
  .kpi.dark { background:linear-gradient(135deg, var(--primary-deep), var(--primary)); }
  .kpi.dark h4 { color:var(--gold-soft); } .kpi.dark h4::before, .kpi.dark h4::after { background:rgba(255,255,255,.25); }
  .kpi.dark .knum { color:#F8F4E8; } .kpi.dark .ksub { color:rgba(248,244,232,.65); }
  .kpi.tintA { background:var(--tintA); } .kpi.tintB { background:var(--tintB); } .kpi.tintC { background:var(--tintC); }
  .banner2 { display:flex; align-items:center; gap:16px; background:var(--card); border-radius:12px; box-shadow:0 2px 10px rgba(90,80,55,.06); padding:12px 18px; margin-top:2px; }
  .banner2 .ph2 { width:74px; height:56px; border-radius:9px; flex-shrink:0; display:flex; align-items:center; justify-content:center; color:#fff; font-family:'Cormorant Garamond',serif; font-style:italic; font-size:10px; }
  .banner2 .mid { flex:1; text-align:center; }
  .banner2 .script { font-family:'Cormorant Garamond',serif; font-style:italic; font-size:26px; font-weight:500; line-height:1.1; }
  .banner2 .bmeta { font-size:8.5px; letter-spacing:2.4px; text-transform:uppercase; color:var(--muted); margin-top:2px; }
  .chip { display:inline-block; background:var(--tintC); border-radius:999px; padding:4px 12px; font-size:9px; font-weight:700; letter-spacing:1.4px; text-transform:uppercase; color:var(--primary-deep); margin-top:6px; }
  .tboxes { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; }
  .tbox { border-radius:10px; text-align:center; padding:10px 4px; }
  .tbox b { font-family:'Cormorant Garamond',serif; font-size:22px; font-weight:600; display:block; line-height:1; }
  .tbox span { font-size:7.5px; letter-spacing:1.6px; text-transform:uppercase; color:var(--muted); }
  .mrow { display:flex; justify-content:space-between; align-items:center; gap:8px; font-size:11px; padding:5.5px 0; border-bottom:1px solid var(--hair); }
  .mrow:last-child { border-bottom:none; }
  .mrow .ml { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .mrow .md { color:var(--faint); font-size:9.5px; white-space:nowrap; }
  .mrow .mv { font-weight:700; font-size:10.5px; white-space:nowrap; }
  .pie { border-radius:50%; flex-shrink:0; }
  .plegend { font-size:9.5px; color:var(--muted); line-height:1.9; min-width:0; }
  .plegend b { color:var(--ink); }
  .plegend .dot { width:6px; height:6px; margin-right:5px; }
  .pwrap { display:flex; align-items:center; gap:10px; }
  .ring { border-radius:50%; position:relative; flex-shrink:0; }
  .ring::after { content:""; position:absolute; inset:6px; background:var(--card); border-radius:50%; }
  .ring .rc { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; z-index:1; font-family:'Cormorant Garamond',serif; font-size:16px; font-weight:600; }
  .phshot { border-radius:12px; display:flex; align-items:center; justify-content:center; color:#fff; font-family:'Cormorant Garamond',serif; font-style:italic; }
  .vbar { display:flex; align-items:center; gap:8px; font-size:10px; margin-top:6px; }
  .vbar .vn { width:76px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted); }
  .vbar .vt { flex:1; height:8px; background:var(--soft); border-radius:4px; overflow:hidden; }
  .vbar .vt > div { height:100%; border-radius:4px; }

  /* ============ full-planner additions ============ */
  .tablecard { background:var(--card); border-radius:14px; box-shadow:0 2px 10px rgba(90,80,55,.06); padding:14px 16px; }
  .tablecard .thead { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
  .tablecard .tname { font-family:'Cormorant Garamond',serif; font-size:18px; font-weight:600; flex:1; }
  .seatchip { display:inline-flex; align-items:center; gap:6px; background:var(--tintA); border-radius:999px; padding:4px 6px 4px 11px; font-size:11px; font-weight:600; margin:3px 4px 0 0; }
  .seatchip.warnchip { background:var(--tintB); outline:1px solid var(--bad); }
  .seatchip button { border:none; background:rgba(0,0,0,.08); color:var(--ink); width:16px; height:16px; border-radius:50%; font-size:9px; cursor:pointer; line-height:1; }
  .waitchip { display:inline-block; background:var(--tintC); border-radius:999px; padding:5px 13px; font-size:11px; font-weight:600; margin:4px 6px 0 0; }
  .seatsel { width:100%; margin-top:9px; font-size:12px; }
  .tgrid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px; }

  .bigcal { background:var(--card); border-radius:14px; box-shadow:0 2px 10px rgba(90,80,55,.06); padding:18px; }
  .bigcal .head { display:flex; align-items:center; justify-content:center; gap:18px; margin-bottom:12px; }
  .bigcal .head h3 { font-size:22px; min-width:190px; text-align:center; }
  .bigcal .navb { border:1px solid var(--line); background:var(--card); border-radius:999px; width:30px; height:30px; cursor:pointer; font-size:13px; color:var(--primary-deep); }
  .bigcal .bgrid { display:grid; grid-template-columns:repeat(7,1fr); gap:5px; }
  .bigcal .bdow { text-align:center; font-size:8.5px; letter-spacing:1.6px; text-transform:uppercase; color:var(--faint); padding:4px 0; }
  .bigcal .bday { min-height:72px; background:var(--wash); border-radius:9px; padding:5px 7px; font-size:10.5px; cursor:pointer; }
  .bigcal .bday:hover { background:var(--soft); }
  .bigcal .bday .dn { font-size:10px; font-weight:700; color:var(--muted); }
  .bigcal .bday.wed { outline:2px solid var(--gold); background:var(--tintC); }
  .bigcal .bday.today { outline:2px solid var(--primary); }
  .bigcal .ev { display:block; margin-top:3px; padding:2px 6px; border-radius:6px; font-size:9px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .bigcal .ev.task { background:var(--tintA); color:var(--primary-deep); }
  .bigcal .ev.pay { background:var(--tintB); color:#8a5a52; }
  .bigcal .ev.own { background:var(--tintC); color:#8a7340; }

  .colorrow { display:flex; align-items:center; gap:12px; padding:8px 0; border-bottom:1px solid var(--hair); }
  .colorrow:last-child { border:none; }
  .colorrow label { flex:1; font-size:12px; }
  .colorrow input[type=color] { width:42px; height:30px; border:none; border-radius:8px; padding:0; background:none; cursor:pointer; }
  .decorbox { width:100%; min-height:64px; border:1px solid var(--line); border-radius:10px; padding:9px 12px; font-family:'Plus Jakarta Sans',sans-serif; font-size:12px; color:var(--ink); background:var(--wash); resize:vertical; }
  .decorbox:focus { outline:none; border-color:var(--gold); }

  .pgrid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }
  .pgrid .pimg { aspect-ratio:1; border-radius:12px; object-fit:cover; width:100%; display:block; }
  .pgrid .pempty { aspect-ratio:1; border-radius:12px; border:2px dashed var(--line); display:flex; align-items:center; justify-content:center; color:var(--faint); font-size:11px; cursor:pointer; text-align:center; padding:10px; }
  .pgrid .pempty:hover { border-color:var(--gold); color:var(--gold); }

  .pri { display:inline-block; border-radius:999px; padding:2px 9px; font-size:8.5px; font-weight:700; letter-spacing:.8px; text-transform:uppercase; }
  .pri.vh { background:#F6E3E1; color:#A05B54; } .pri.h { background:#F6ECD8; color:#9A7434; }
  .pri.m { background:var(--tintD); color:#5A6B7E; } .pri.l { background:#E3EEE0; color:#4E7A50; } .pri.vl { background:var(--soft); color:var(--muted); }
  .setupform .field label { color:var(--primary-deep); }

  /* ============ RICH MODULE SKIN — photo banners, section bands ============ */
  .mbanner { position:relative; border-radius:16px; overflow:hidden; min-height:120px; display:flex; align-items:flex-end; box-shadow:0 3px 14px rgba(90,80,55,.1); background-color:var(--primary-deep); background-size:cover; background-position:center; margin-bottom:14px; }
  .mbanner .shade { position:absolute; inset:0; background:linear-gradient(180deg, rgba(40,44,34,.05) 30%, rgba(40,44,34,.62)); }
  .mbanner .mtitle { position:relative; z-index:1; padding:16px 22px; color:#fff; }
  .mbanner .mtitle h3 { font-size:26px; color:#fff; margin:0; }
  .mbanner .mtitle .msub { font-size:9px; letter-spacing:2.4px; text-transform:uppercase; color:rgba(255,255,255,.85); margin-top:2px; }
  .secbanner { background:var(--primary); color:#fff; border-radius:10px; padding:8px 16px; font-size:10.5px; font-weight:700; letter-spacing:2.2px; text-transform:uppercase; text-align:center; margin:16px 0 10px; display:flex; align-items:center; }
  .secbanner span { flex:1; }
  .secbanner .btn.sm { background:rgba(255,255,255,.18); }
  .subband { background:var(--tintB); color:#8a5a52; border-radius:8px 8px 0 0; padding:7px 14px; font-size:9.5px; font-weight:700; letter-spacing:1.8px; text-transform:uppercase; text-align:center; }

  /* vendor choice cards */
  .vcat { background:var(--card); border-radius:14px; box-shadow:0 2px 10px rgba(90,80,55,.07); overflow:hidden; margin-bottom:12px; display:flex; }
  .vcat .vphoto { width:150px; flex-shrink:0; background-color:var(--soft); background-size:cover; background-position:center; }
  .vcat .vbody { flex:1; min-width:0; }
  .vcat .vhead { display:flex; align-items:center; background:var(--tintB); padding:7px 14px; }
  .vcat .vhead h5 { font-size:10px; font-weight:700; letter-spacing:1.8px; text-transform:uppercase; color:#8a5a52; flex:1; margin:0; font-family:'Plus Jakarta Sans',sans-serif; }
  .vcat table { border-radius:0; }
  .vcat th { background:transparent; color:var(--muted); font-size:8px; padding:6px 10px; border-bottom:1px solid var(--hair); }
  .vcat td { padding:5px 10px; font-size:11.5px; border-bottom:1px solid var(--hair); }
  .vcat tr.chosenrow td { background:var(--tintA); }
  .vcat input[type=text], .vcat input[type=number] { padding:5px 8px; font-size:11px; border-radius:7px; width:100%; min-width:60px; }
  .vcat .addc { font-size:10px; color:var(--primary-deep); cursor:pointer; padding:7px 14px; display:inline-block; font-weight:600; }
  .vcat .addc:hover { text-decoration:underline; }
  .vsummary td, .vsummary th { padding:6px 10px; font-size:11px; }
  @media (max-width:920px){ .vcat{flex-direction:column;} .vcat .vphoto{width:100%;height:90px;} }
