<style>
  :root{
    --bg:#f3eee6;
    --paper:#fbf9f5;
    --ink:#171512;
    --muted:#746e65;
    --line:#d9d0c3;
    --beige:#e6dccd;
    --beige-2:#eee7dc;
    --accent:#26231f;
    --warning:#9a6334;
    --danger:#8e3e38;
    --white:#fffdfa;
    --shadow:0 18px 45px rgba(33,28,22,.08);
  }

  *{box-sizing:border-box}
  body{
    margin:0;
    font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color:var(--ink);
    background:
      radial-gradient(circle at 10% 0%, rgba(255,255,255,.55), transparent 30%),
      var(--bg);
    min-height:100vh;
  }

  button,input,select{font:inherit}
  button{cursor:pointer}

  .app{
    width:min(1180px, calc(100% - 32px));
    margin:auto;
    padding:28px 0 48px;
  }

  header{
    display:flex;
    justify-content:space-between;
    gap:20px;
    align-items:flex-end;
    padding:10px 0 28px;
    border-bottom:1px solid var(--line);
  }

  .brand small{
    display:block;
    font-size:12px;
    letter-spacing:.22em;
    text-transform:uppercase;
    color:var(--muted);
    margin-top:10px;
    font-weight:750;
  }

  h1,h2,h3,p{margin:0}
  h1{
    font-family:Georgia, "Times New Roman", serif;
    font-size:clamp(42px, 8vw, 76px);
    line-height:.92;
    font-weight:500;
    letter-spacing:-.045em;
  }

  .brand-sub{
    margin-top:10px;
    color:var(--muted);
    font-size:15px;
  }

  .tabs{
    display:flex;
    gap:7px;
    padding:5px;
    background:rgba(255,255,255,.45);
    border:1px solid var(--line);
    border-radius:14px;
  }

  .tab{
    border:0;
    background:transparent;
    color:var(--muted);
    border-radius:10px;
    padding:10px 14px;
    font-weight:750;
  }

  .tab.active{
    background:var(--accent);
    color:var(--white);
  }

  .view{display:none}
  .view.active{display:block}

  .form-card{
    margin-top:22px;
    background:var(--paper);
    border:1px solid var(--line);
    border-radius:20px;
    padding:18px;
    box-shadow:var(--shadow);
  }

  .form-grid{
    display:grid;
    grid-template-columns:1.65fr .95fr .55fr .9fr auto;
    gap:12px;
    align-items:end;
  }

  .field label{
    display:block;
    font-size:12px;
    font-weight:800;
    margin-bottom:7px;
    color:var(--muted);
    letter-spacing:.04em;
    text-transform:uppercase;
  }

  input,select{
    width:100%;
    height:46px;
    border:1px solid var(--line);
    background:var(--white);
    border-radius:11px;
    padding:0 12px;
    color:var(--ink);
    outline:none;
  }

  input:focus,select:focus{
    border-color:var(--ink);
    box-shadow:0 0 0 3px rgba(23,21,18,.08)
  }

  .btn{
    height:46px;
    border-radius:11px;
    border:1px solid var(--ink);
    padding:0 16px;
    font-weight:800;
  }
  .btn-dark{background:var(--ink);color:var(--white)}
  .btn-light{background:transparent;color:var(--ink)}
  .btn-light:hover{background:var(--beige-2)}

  .toolbar{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    margin-top:22px;
    flex-wrap:wrap;
  }

  .filters{display:flex;gap:7px;flex-wrap:wrap}
  .filter{
    padding:9px 12px;
    border-radius:999px;
    border:1px solid var(--line);
    background:transparent;
    color:var(--muted);
    font-weight:750;
  }
  .filter.active{background:var(--beige);color:var(--ink);border-color:#cdbfae}
  .stats{color:var(--muted);font-size:14px}

  .inventory-grid{
    margin-top:16px;
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:15px;
  }

  .shopping-by-category{
    margin-top:28px;
  }
  .section-subtitle{
    font-family:Georgia, "Times New Roman", serif;
    font-size:22px;font-weight:500;letter-spacing:-.02em;
    padding-bottom:2px;
  }

  .shelf{
    background:var(--paper);
    border:1px solid var(--line);
    border-radius:18px;
    overflow:hidden;
    box-shadow:var(--shadow);
  }

  .shelf-head{
    padding:16px 16px 13px;
    border-bottom:1px solid var(--line);
    display:flex;
    justify-content:space-between;
    align-items:center;
  }

  .shelf-head h2{
    font-size:16px;
    letter-spacing:-.02em;
  }

  .count-badge{
    min-width:29px;height:29px;border-radius:50%;
    display:grid;place-items:center;
    background:var(--beige-2);font-size:12px;font-weight:800;
  }

  .items{padding:7px}
  .item{
    display:grid;
    grid-template-columns:1fr auto;
    gap:10px;
    padding:11px 9px;
    border-radius:12px;
  }
  .item + .item{border-top:1px solid #eee8de}
  .item:hover{background:#f7f2ea}

  .item-main{min-width:0}
  .item-name{font-weight:800;overflow-wrap:anywhere}
  .item-meta{
    display:flex;gap:10px;flex-wrap:wrap;
    margin-top:5px;font-size:12px;color:var(--muted);
  }

  .expiry.soon{color:var(--warning);font-weight:800}
  .expiry.expired{color:var(--danger);font-weight:850}

  .expiry-input{
    border:none;
    background:transparent;
    padding:0;
    height:auto;
    font-size:12px;
    color:var(--muted);
    font-family:inherit;
    width:auto;
    cursor:pointer;
  }
  .expiry-input.soon{color:var(--warning);font-weight:800}
  .expiry-input.expired{color:var(--danger);font-weight:850}
  .expiry-input:focus{box-shadow:none;outline:1px solid var(--line);border-radius:4px}

  .item-actions{display:flex;align-items:center;gap:6px}
  .stepper{
    width:30px;height:30px;border-radius:8px;
    border:1px solid var(--line);background:var(--white);
    color:var(--ink);font-size:16px;font-weight:800;
    display:grid;place-items:center;line-height:1;
  }
  .stepper:active{background:var(--beige-2)}
  .delete{
    width:34px;height:34px;border-radius:9px;
    border:1px solid #e5d3d0;background:#fff8f7;
    color:var(--danger);font-size:17px
  }

  .empty{
    padding:18px 10px 20px;
    text-align:center;color:var(--muted);font-size:13px;
  }

  /* Weekly */
  .week-intro{
    margin-top:22px;
    padding:0 2px;
  }
  .week-intro-top{
    display:flex;justify-content:space-between;gap:16px;align-items:flex-end;
  }
  .week-intro h2{
    font-family:Georgia, "Times New Roman", serif;
    font-size:30px;font-weight:500;letter-spacing:-.03em;
  }
  .week-intro p{color:var(--muted);max-width:760px;margin-top:6px;line-height:1.5;font-size:14px}

  /* Planner sheet: columnas por día, minimalista sobre fondo blanco */
  .planner-sheet{
    margin-top:16px;
    background:var(--white);
    border:1px solid var(--line);
    border-radius:14px;
    overflow:hidden;
  }

  .planner{
    display:grid;
    grid-template-columns:repeat(7, minmax(0,1fr));
  }

  .planner-day{
    padding:16px 14px 20px;
    border-left:1px solid var(--line);
  }
  .planner-day:first-child{border-left:none}
  .planner-day.today{box-shadow:inset 0 2px 0 var(--ink)}

  .day-head{
    padding-bottom:11px;
    margin-bottom:12px;
    border-bottom:1px solid var(--line);
  }

  .day{
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.08em;
    font-size:11px;
  }
  .date-label{font-size:12px;color:var(--muted);margin-top:2px}
  .today-tag{
    display:inline-block;margin-top:6px;
    font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
    color:var(--ink);
  }

  .meal{
    padding-top:6px;
    padding-bottom:14px;
  }
  .meal + .meal{
    border-top:1px solid var(--line);
  }
  .meal-label{
    font-size:11px;text-transform:uppercase;letter-spacing:.1em;
    color:var(--muted);font-weight:700;margin-bottom:5px;
  }
  .meal-title{font-weight:600;font-size:14px;line-height:1.35}
  .meal-note{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.4}

  .priority{
    margin-top:9px;
    display:block;
    color:var(--warning);font-size:11px;font-weight:700;
  }

  .no-plan{
    margin-top:15px;
    border:1px dashed var(--line);
    border-radius:15px;
    padding:18px;
    color:var(--muted);
    background:var(--white);
  }

  @media (max-width:980px){
    .planner{
      grid-template-columns:none;
      grid-auto-flow:column;
      grid-auto-columns:min(78vw, 260px);
      overflow-x:auto;
      scroll-snap-type:x mandatory;
      -webkit-overflow-scrolling:touch;
    }
    .planner-day{scroll-snap-align:start}
  }

  .footnote{
    margin-top:14px;
    color:var(--muted);font-size:12px;line-height:1.5;
  }


  /* Groceries List */
  .shopping-card{margin-top:22px;background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:var(--shadow)}
  .shopping-head h2{font-family:Georgia,"Times New Roman",serif;font-size:34px;font-weight:500;letter-spacing:-.03em}
  .shopping-head p{margin-top:6px;color:var(--muted);line-height:1.5;max-width:760px}
  .shopping-form{display:grid;grid-template-columns:1.6fr .85fr .55fr .9fr auto;gap:10px;margin-top:17px}
  .shopping-items{margin-top:16px;display:grid;gap:22px}
  .shopping-group-head{display:flex;align-items:center;gap:8px;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--line)}
  .shopping-group-head h3{font-size:13px;text-transform:uppercase;letter-spacing:.08em;font-weight:850}
  .shopping-group{scroll-margin-top:110px}
  .shopping-group .empty{color:var(--muted);font-size:13px;padding:6px 2px}
  .shopping-group .shopping-row + .shopping-row{margin-top:8px}
  .shopping-details{margin-top:4px;display:flex;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
  .shopping-detail{padding:3px 7px;border-radius:999px;background:var(--beige-2)}
  .expiry-pill-input{
    border:none;
    height:auto;
    width:auto;
    font-size:12px;
    font-family:inherit;
    color:var(--muted);
    cursor:pointer;
  }
  .expiry-pill-input:focus{box-shadow:none;outline:1px solid var(--ink)}
  .shopping-bought-note{font-size:11px;color:#416149;font-weight:800;margin-top:4px}
  .shopping-row{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:13px;background:var(--white);border:1px solid var(--line);border-radius:13px}
  .shopping-row.checked{opacity:.58}
  .shopping-row.checked .shopping-name{text-decoration:line-through}
  .check{width:22px;height:22px;accent-color:var(--ink);cursor:pointer}
  .shopping-name{font-weight:800;overflow-wrap:anywhere}
  .shopping-status{margin-top:4px;display:flex;gap:7px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted)}
  .have,.missing{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:800}
  .have{background:#e7eee8;color:#416149}
  .missing{background:#f0e3d7;color:#8a5a32}
  .shopping-actions{display:flex;gap:6px;align-items:center}
  .icon-btn{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:transparent;color:var(--ink);font-weight:800}
  .icon-btn.danger{color:var(--danger);background:#fff8f7}
  .shopping-empty{margin-top:15px;padding:24px;text-align:center;border:1px dashed var(--line);border-radius:15px;color:var(--muted)}

  @media (max-width:980px){
    .shopping-form{grid-template-columns:1fr 1fr}
    .shopping-form button{grid-column:1/-1}
    .form-grid{grid-template-columns:1fr 1fr}
    .submit-wrap{grid-column:1/-1}
    .inventory-grid{grid-template-columns:1fr}
  }
  @media (max-width:760px){
    header{align-items:flex-start;flex-direction:column}
  }
  @media (max-width:560px){
    .app{width:min(100% - 20px,1180px);padding-top:18px}
    .form-grid{grid-template-columns:1fr}
    .submit-wrap{grid-column:auto}
    .tabs{width:100%}
    .tab{flex:1}
    .week-intro h2{font-size:28px}
  }

  /* iPhone / Safari touch compatibility — no visual redesign */
  html{
    -webkit-text-size-adjust:100%;
    text-size-adjust:100%;
  }
  button, input, select{
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .tabs{
    touch-action:pan-x;
  }
  .tab, .filter, .btn, .delete, .stepper, .icon-btn{
    -webkit-appearance:none;
    appearance:none;
  }
  @supports (-webkit-touch-callout:none){
    input, select, button{
      -webkit-user-select:none;
      user-select:none;
    }
    input{
      -webkit-user-select:text;
      user-select:text;
    }
  }

  @media (max-width:560px){
    .tabs{
      display:flex;
      width:100%;
      gap:4px;
      overflow:visible;
      touch-action:none;
    }
    .tab{
      flex:1 1 0;
      min-width:0;
      min-height:44px;
      padding:10px 6px;
      white-space:nowrap;
      touch-action:none;
    }
  }

</style>
