/* ── Planner Cards ───────────────────────────────────────────── */
    .card.allow-overflow,
    .card.allow-overflow .card-body { overflow: visible; }
    .card-header {
      background: linear-gradient(180deg, rgba(220,233,223,.92), rgba(220,233,223,.78));
      padding: .85rem 1.2rem;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: .6rem;
      cursor: pointer;
      user-select: none;
      border-bottom: 1px solid rgba(60,60,67,.1);
    }
    .card-header:hover { background: linear-gradient(180deg, rgba(212,226,216,.98), rgba(220,233,223,.84)); }
    .card-header h2 { font-size: 1rem; font-weight: 600; color: var(--green-dark); display: flex; align-items: center; gap: .5rem; }
    .card-header .toggle { font-size: 1.1rem; transition: transform .2s; }
    .card-header.collapsed .toggle { transform: rotate(-90deg); }
    .card-body { padding: 1.25rem; display: grid; grid-template-columns: 1fr 1fr; gap: .85rem 1.2rem; }
    .card-body.single-col { grid-template-columns: 1fr; }
    .card-body.triple-col { grid-template-columns: 1fr 1fr 1fr; }
    .card-body.collapsed { display: none; }

    /* ── Form Elements ───────────────────────────────────────────── */
    .field { display: flex; flex-direction: column; gap: .3rem; }
    .field.full-width { grid-column: 1 / -1; }
    label { font-size: .82rem; font-weight: 600; color: var(--text-muted); }
    label .hint { font-weight: 400; opacity: .7; font-size: .77rem; }

    input[type="text"],
    input[type="number"],
    textarea,
    select {
      border: 1.5px solid var(--border);
      border-radius: 7px;
      padding: .45rem .65rem;
      font-size: .9rem;
      color: var(--text);
      background: var(--color-surface-elevated);
      transition: border-color .15s, box-shadow .15s;
      width: 100%;
    }
    input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
    input[type="number"]::-webkit-inner-spin-button { opacity: 1; }
    textarea { resize: vertical; min-height: 70px; font-family: inherit; }
    input:focus, textarea:focus, select:focus {
      outline: none;
      border-color: var(--green);
      box-shadow: 0 0 0 3px rgba(64,145,108,.18);
    }

    /* Checkboxes / Radios */
    .check-group { display: flex; flex-wrap: wrap; gap: .4rem .75rem; padding-top: .1rem; }
    .check-group label {
      display: flex; align-items: center; gap: .35rem;
      font-weight: 500; font-size: .85rem; color: var(--text);
      cursor: pointer;
      background: var(--green-pale); border: 1px solid var(--border);
      border-radius: 20px; padding: .25rem .7rem;
      transition: background .12s, border-color .12s;
    }
    .check-group label:hover { background: #c7ead4; }
    .check-group input[type="checkbox"],
    .check-group input[type="radio"] { accent-color: var(--green); width: 14px; height: 14px; }
    .check-group label.checked { background: var(--green-light); border-color: var(--green); color: var(--green-dark); }

    .togo-picker-row {
      display: flex;
      flex-wrap: wrap;
      gap: .4rem .75rem;
      align-items: center;
    }
    .togo-picker {
      position: relative;
      display: inline-flex;
      align-items: flex-start;
    }
    .togo-trigger {
      display: inline-flex;
      align-items: center;
      gap: .35rem;
      font-weight: 500;
      font-size: .8rem;
      color: var(--text);
      cursor: pointer;
      background: var(--green-pale);
      border: 1px solid var(--border);
      border-radius: 20px;
      padding: .2rem .62rem;
      transition: background .12s, border-color .12s;
      min-width: 2.9rem;
      justify-content: center;
    }
    .togo-trigger:hover,
    .togo-picker.open .togo-trigger { background: #c7ead4; }
    .togo-picker.has-selection .togo-trigger { background: var(--green-light); border-color: var(--green); color: var(--green-dark); }
    .togo-trigger-count {
      min-width: .95rem;
      height: .95rem;
      padding: 0 .18rem;
      border-radius: 999px;
      background: rgba(27,67,50,.12);
      color: var(--green-dark);
      font-size: .62rem;
      font-weight: 700;
      display: inline-flex;
      align-items: center;
      justify-content: center;
    }
    .togo-picker:not(.has-selection) .togo-trigger-count { display: none; }
    .togo-menu {
      display: none;
      position: absolute;
      top: calc(100% - 1px);
      left: 0;
      width: 100%;
      min-width: 100%;
      background: #fcfffd;
      border: 1px solid var(--border);
      border-top: 0;
      border-radius: 0 0 12px 12px;
      box-shadow: 0 10px 20px rgba(27,67,50,.14);
      padding: .1rem .16rem .16rem;
      box-sizing: border-box;
      z-index: 9996;
    }
    .togo-menu label {
      justify-content: flex-start;
      gap: .22rem;
      padding: .24rem .28rem;
      min-height: auto;
      border-radius: 8px;
      background: transparent;
      border: 1px solid transparent;
      font-size: .72rem;
      white-space: nowrap;
    }
    .togo-menu label:hover { background: #f4fbf7; border-color: #d8eee1; }
    .togo-menu label.checked { background: var(--green-light); }

    @media (hover: hover) and (pointer: fine) {
      .togo-picker:hover .togo-menu { display: grid; gap: .22rem; }
      .togo-picker:hover .togo-trigger {
        background: #e5f4eb;
        border-bottom-color: transparent;
        border-bottom-left-radius: 0;
        border-bottom-right-radius: 0;
      }
    }

    @media (hover: none), (pointer: coarse) {
      .togo-picker.open .togo-menu { display: grid; gap: .22rem; }
      .togo-picker.open .togo-trigger {
        background: #e5f4eb;
        border-bottom-color: transparent;
        border-bottom-left-radius: 0;
        border-bottom-right-radius: 0;
      }
    }

    .radio-row { display: flex; flex-wrap: wrap; gap: .4rem .75rem; }
    .radio-row label {
      display: flex; align-items: center; gap: .35rem;
      font-weight: 500; font-size: .85rem; cursor: pointer;
      background: var(--green-pale); border: 1px solid var(--border);
      border-radius: 20px; padding: .25rem .75rem;
      transition: background .12s;
    }
    .radio-row label:hover { background: #c7ead4; }
    .radio-row input { accent-color: var(--green); }

    /* Tags input */
    .tags-container {
      border: 1.5px solid var(--border); border-radius: 7px;
      padding: .35rem .5rem; min-height: 42px;
      background: #fafffe; display: flex; flex-wrap: wrap; gap: .3rem;
      cursor: text;
    }
    .tags-container:focus-within { border-color: var(--green); box-shadow: 0 0 0 3px rgba(64,145,108,.18); }
    .tag {
      background: var(--green-light); color: var(--green-dark);
      border-radius: 20px; padding: .15rem .6rem;
      font-size: .8rem; display: flex; align-items: center; gap: .3rem; font-weight: 600;
    }
    .tag .del { cursor: pointer; opacity: .6; font-size: .9rem; }
    .tag .del:hover { opacity: 1; }
    .tags-input {
      border: none; outline: none; background: transparent;
      font-size: .9rem; color: var(--text); flex: 1; min-width: 80px;
    }

    /* ── Generate Button ─────────────────────────────────────────── */
    .btn-generate {
      display: block; width: 100%;
      background: linear-gradient(135deg, var(--green-dark), var(--green));
      color: white; border: none; border-radius: 10px;
      padding: 1rem; font-size: 1.1rem; font-weight: 700;
      cursor: pointer; letter-spacing: .03em;
      box-shadow: 0 4px 14px rgba(45,106,79,.3);
      transition: transform .1s, box-shadow .1s;
    }
    .btn-generate:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(45,106,79,.35); }
    .btn-generate:active { transform: translateY(0); }

    /* ── Output Card ─────────────────────────────────────────────── */
    #output-card { display: none; }
    .output-toolbar {
      display: flex; gap: .6rem; flex-wrap: wrap;
      padding: .75rem 1.25rem; background: var(--green-pale);
      border-bottom: 1px solid var(--border);
    }
    .btn-small {
      min-height: 2.75rem;
      padding: .35rem .9rem; border-radius: 7px; border: 1.5px solid var(--green);
      background: white; color: var(--green-dark);
      font-size: .85rem; font-weight: 600; cursor: pointer;
      transition: background .12s;
    }
    .btn-small:hover { background: var(--green-pale); }
    .btn-small.primary { background: var(--green); color: white; border-color: var(--green-dark); }
    .btn-small.primary:hover { background: var(--green-dark); }
    #prompt-output {
      font-family: 'Cascadia Code', 'Consolas', monospace;
      font-size: .8rem; line-height: 1.6;
      padding: 1.25rem;
      white-space: pre-wrap;
      color: var(--text);
      max-height: 500px;
      overflow-y: auto;
    }
    .copy-toast {
      position: fixed; bottom: calc(var(--tab-bar-height) + var(--safe-bottom) + 1rem); right: 1.5rem;
      background: var(--green-dark); color: white;
      padding: .6rem 1.2rem; border-radius: 8px;
      font-weight: 600; font-size: .9rem;
      opacity: 0; pointer-events: none;
      transition: opacity .2s;
      z-index: 9999;
    }
    .copy-toast.show { opacity: 1; }

    /* ── Analysis Prompt Modal ───────────────────────────────────── */
    .analysis-prompt-overlay {
      display: none; position: fixed; inset: 0;
      background: rgba(0,0,0,.45); z-index: 10000;
      align-items: center; justify-content: center;
    }
    .analysis-prompt-overlay.open { display: flex; }
    .analysis-prompt-box {
      background: var(--card-bg); border: 1px solid var(--border);
      border-radius: 12px; padding: 1.2rem 1.4rem;
      max-width: 680px; width: 95%; box-shadow: 0 8px 30px rgba(0,0,0,.25);
    }
    .analysis-prompt-box h3 {
      margin: 0 0 .8rem; font-size: 1rem; color: var(--green-dark);
    }
    .analysis-prompt-box textarea {
      width: 100%; min-height: 260px; font-family: monospace;
      font-size: .82rem; line-height: 1.5; resize: vertical;
      border: 1px solid var(--border); border-radius: 6px;
      padding: .6rem; background: var(--input-bg); color: var(--text);
      box-sizing: border-box;
    }
    .analysis-prompt-actions {
      display: flex; gap: .5rem; margin-top: .7rem; justify-content: flex-end;
    }

    /* ── Responsive ──────────────────────────────────────────────── */
    @media (max-width: 600px) {
      .card-body { grid-template-columns: 1fr; }
      .card-body.triple-col { grid-template-columns: 1fr; }
    }

    /* ── API Settings Card ───────────────────────────────────────── */
    .api-card { border-color: var(--amber); }
    .api-card .card-header { background: var(--amber-light); }
    .api-card .card-header:hover { background: #f9d4b0; }
    .api-card .card-header h2 { color: #7c3900; }
    .api-key-row { display: flex; gap: .5rem; align-items: center; }
    .api-key-row input { flex: 1; font-family: monospace; font-size: .85rem; }
    .btn-icon { min-width: 2.75rem; min-height: 2.75rem; background: none; border: 1.5px solid var(--border); border-radius: 7px; padding: .38rem .65rem; cursor: pointer; font-size: .95rem; transition: background .12s; }
    .btn-icon:hover { background: var(--green-pale); }

    .section-banner {
      padding: 1rem 1.15rem;
      border-radius: 18px;
      background: linear-gradient(180deg, rgba(255,255,255,.82), rgba(244,247,245,.92));
      border: 1px solid rgba(60,60,67,.1);
      box-shadow: 0 8px 22px rgba(28,28,30,.06);
      display: grid;
      gap: .22rem;
    }
    .section-banner__eyebrow {
      font-size: .74rem;
      font-weight: 700;
      letter-spacing: .12em;
      text-transform: uppercase;
      color: var(--green);
    }
    .section-banner__title {
      font-size: 1.18rem;
      line-height: 1.15;
      color: var(--text);
    }
    .section-banner__hint {
      font-size: .86rem;
      color: var(--text-muted);
      line-height: 1.45;
    }

    /* ── Profile Bar ─────────────────────────────────────────────── */
    .profile-bar {
      background: color-mix(in srgb, var(--white) 92%, transparent); border: 1px solid var(--border);
      border-radius: 18px; padding: .8rem 1.1rem;
      display: flex; gap: .5rem; align-items: center; flex-wrap: wrap;
      box-shadow: var(--shadow-card);
    }
    .profile-bar-label { font-size: .8rem; font-weight: 700; color: var(--text-muted); white-space: nowrap; }
    .profile-bar input[type="text"] { width: 185px; min-width: 110px; }
    .profile-bar select { width: 185px; min-width: 110px; }
    .autosave-status {
      margin-left: auto; font-size: .75rem; color: var(--text-muted);
      display: flex; align-items: center; gap: .35rem; white-space: nowrap;
    }
    .autosave-dot {
      width: 8px; height: 8px; border-radius: 50%; background: #cbd5e1;
      display: inline-block; transition: background .4s;
    }
    .autosave-dot.active { background: var(--green-light); }

    /* ── Two-button row ──────────────────────────────────────────── */
    .btn-row { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }
    @media (max-width: 600px) { .btn-row { grid-template-columns: 1fr; } }
    .btn-generate.api-btn {
      background: linear-gradient(135deg, #b45309, var(--amber));
      box-shadow: 0 4px 14px rgba(180,83,9,.28);
    }
    .btn-generate.api-btn:hover { box-shadow: 0 6px 18px rgba(180,83,9,.35); }
    .btn-generate.api-btn:disabled,
    .btn-generate:disabled { opacity: .65; cursor: wait; transform: none !important; }

    /* ── Spinner ─────────────────────────────────────────────────── */
    .spinner {
      display: inline-block; width: 16px; height: 16px;
      border: 2.5px solid rgba(255,255,255,.35);
      border-radius: 50%; border-top-color: #fff;
      animation: _spin .7s linear infinite; vertical-align: middle; margin-right: .4rem;
    }
    @keyframes _spin { to { transform: rotate(360deg); } }

    /* ── Tooltip ─────────────────────────────────────────────────── */
    .info-tip {
      display: inline-flex; align-items: center; justify-content: center;
      width: 15px; height: 15px; border-radius: 50%;
      background: var(--green-light); color: var(--green-dark);
      font-size: .68rem; font-weight: 700; cursor: help;
      margin-left: .3rem; position: relative; vertical-align: middle;
      user-select: none; flex-shrink: 0;
    }
    .info-tip::after {
      content: attr(data-tip);
      position: fixed;
      background: #1b4332; color: white;
      font-size: .75rem; font-weight: 400; line-height: 1.4;
      padding: .5rem .75rem; border-radius: 7px;
      white-space: normal; width: 240px;
      max-width: calc(100vw - 16px);
      z-index: 9999; pointer-events: none;
      opacity: 0; transition: opacity .15s;
      box-shadow: 0 4px 12px rgba(0,0,0,.2);
      top: var(--tip-top, 0px);
      left: var(--tip-left, 0px);
    }
    .info-tip:hover::after { opacity: 1; }

    /* ── Receipt DB ──────────────────────────────────────────────── */
    .receipt-db-wrap { margin-top: .6rem; }
    .receipt-db-search { width: 100%; box-sizing: border-box; padding: .32rem .55rem; border: 1px solid var(--border); border-radius: 5px; font-size: .82rem; margin-bottom: .35rem; }
    .receipt-db-filter-row { display: flex; gap: .35rem; align-items: center; margin-bottom: .4rem; flex-wrap: wrap; }
    .receipt-db-filter-row span { font-size: .75rem; color: var(--text-muted); white-space: nowrap; }
    .receipt-db-filter-row input { flex: 1; min-width: 60px; padding: .22rem .4rem; font-size: .75rem; border: 1px solid var(--border); border-radius: 4px; box-sizing: border-box; }
    .receipt-db-scroll { max-height: 340px; overflow-y: auto; overflow-x: auto; border: 1px solid var(--border); border-radius: 5px; }
    .receipt-db-wrap table { border-collapse: collapse; width: 100%; font-size: .8rem; min-width: 600px; }
    .receipt-db-wrap th { background: var(--green-pale); color: var(--green-dark); font-weight: 700; padding: .3rem .5rem; border: 1px solid var(--border); text-align: left; white-space: nowrap; position: sticky; top: 0; z-index: 1; }
    .receipt-db-wrap td { padding: .28rem .45rem; border: 1px solid var(--border); vertical-align: top; }
    .receipt-db-wrap td[contenteditable="true"]:focus { outline: 2px solid var(--green); border-radius: 3px; }
    .receipt-db-wrap tr:nth-child(even) td { background: #f8fdfb; }
    .receipt-db-btn-row { display: flex; gap: .5rem; margin-top: .5rem; flex-wrap: wrap; }
    .menge-guess-cell { font-style: italic; color: var(--text-muted, #888); cursor: pointer; }
    .menge-guess-cell:hover { background: #fefce8 !important; }
    .guess-btn { background: none; border: none; cursor: pointer; font-size: .88rem; padding: 0 .1rem; vertical-align: middle; line-height: 1; }

    /* ── Liter sub-input ─────────────────────────────────────────── */
    .liter-input-row { display: flex; align-items: center; gap: .4rem; margin-top: .35rem; }
    .liter-input-row input { width: 80px; }
    .liter-input-row span { font-size: .82rem; color: var(--text-muted); }

    /* ── Week label ──────────────────────────────────────────────── */
    .week-label { font-size: .82rem; color: var(--green-dark); font-weight: 600; margin-top: .3rem; min-height: 1.2em; }

    /* ── API Response Card ───────────────────────────────────────── */
    #api-output-card { display: none; border-color: var(--amber); }
    #api-response {
      font-size: .88rem; line-height: 1.75; padding: 1.4rem 1.5rem;
      color: var(--text); max-height: 75vh; overflow-y: auto;
    }
    #api-response h1 { font-size: 1.2rem; color: var(--green-dark); border-bottom: 2px solid var(--green-pale); padding-bottom: .3rem; margin: 1.2rem 0 .5rem; }
    #api-response h2 { font-size: 1.05rem; color: var(--green-dark); margin: 1rem 0 .4rem; }
    #api-response h3 { font-size: .95rem; color: var(--green); margin: .8rem 0 .3rem; }
    #api-response p  { margin: .4rem 0; }
    #api-response ul, #api-response ol { padding-left: 1.5rem; margin: .3rem 0 .5rem; }
    #api-response li { margin: .15rem 0; }
    #api-response table { border-collapse: collapse; width: 100%; margin: .6rem 0; font-size: .82rem; display: block; overflow-x: auto; }
    #api-response th { background: var(--green-pale); color: var(--green-dark); font-weight: 700; padding: .4rem .65rem; border: 1px solid var(--border); text-align: left; }
    #api-response td { padding: .35rem .65rem; border: 1px solid var(--border); vertical-align: top; }
    #api-response tr:nth-child(even) td { background: #f8fdfb; }
    #api-response code { background: var(--green-pale); padding: .08rem .3rem; border-radius: 3px; font-family: monospace; font-size: .82rem; }
    #api-response pre { background: #f1f5f9; padding: .75rem 1rem; border-radius: 7px; overflow-x: auto; font-size: .82rem; line-height: 1.5; margin: .5rem 0; }
    #api-response blockquote { border-left: 3px solid var(--green-light); padding-left: .9rem; color: var(--text-muted); margin: .5rem 0; font-style: italic; }
    #api-response strong { color: var(--green-dark); }
    #api-response hr { border: none; border-top: 1px dashed var(--border); margin: .8rem 0; }
    .api-meta { font-size: .73rem; color: var(--text-muted); padding: .45rem 1.25rem; background: var(--green-pale); }
    .api-error-box { background: #fff5f5; border: 1px solid #fecaca; border-radius: 8px; padding: .9rem 1.1rem; color: #b91c1c; font-size: .88rem; margin: 1rem; }

    /* ── Data sub-sections (H) Belege) ──────────────────────────── */
    .data-subsection { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
    .dsh-header { background: var(--green-pale); padding: .55rem .9rem; display: flex; align-items: center; gap: .5rem; cursor: pointer; user-select: none; flex-wrap: wrap; }
    .dsh-header:hover { background: #c7ead4; }
    .dsh-title { font-size: .87rem; font-weight: 700; color: var(--green-dark); flex: 1; min-width: 60px; }
    .dsh-badge { background: var(--green-light); color: var(--green-dark); font-size: .7rem; font-weight: 700; padding: .06rem .42rem; border-radius: 10px; min-width: 1.5em; text-align: center; }
    .dsh-icon { font-size: 1rem; transition: transform .2s; }
    .dsh-header.collapsed .dsh-icon { transform: rotate(-90deg); }
    .dsh-body { padding: .75rem; }
    .dsh-body.collapsed { display: none; }

    /* Scroll button */
    .scroll-fab { position: fixed; bottom: calc(var(--tab-bar-height) + var(--safe-bottom) + 1rem); right: 1.25rem; z-index: 9998; display: grid; gap: .55rem; }
    .scroll-fab .sa { width: 3rem; height: 3rem; display: flex; align-items: center; justify-content: center; cursor: pointer; color: white; border: none; border-radius: 999px; background: var(--green-dark); box-shadow: 0 3px 10px rgba(45,106,79,.35); padding: 0; line-height: 1; transition: transform .16s, opacity .25s, background .2s; }
    .scroll-fab .sa:hover { background: var(--green); transform: translateY(-1px); }
    .scroll-fab.at-top .sa-up,
    .scroll-fab.at-bottom .sa-down { opacity: .45; }