:root{
    --kraft:#C9A66B;
    --kraft-dark:#9C7B45;
    --ink:#2B2420;
    --card:#F7F0E1;
    --card-line:#E3D6BB;
    --stamp:#A33B20;
    --sage:#6B7A5E;
    --shadow: rgba(43,36,32,0.25);
  }
  *{box-sizing:border-box;}
  body{
    margin:0;
    min-height:100vh;
    background:#F4EFE6;
    font-family:'Source Serif 4', serif;
    color:var(--ink);
    padding:32px 16px 80px;
  }
  .wrap{max-width:1320px;margin:0 auto;}
  .hero{
    background: linear-gradient(160deg, #10141f 0%, #161b29 60%, #1b2032 100%);
    border-radius:22px;
    padding:26px 24px 30px;
    margin-bottom:22px;
    box-shadow:0 18px 40px rgba(0,0,0,0.35);
    color:#fff;
    font-family:'Source Serif 4', serif;
  }
  .hero-top{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    flex-wrap:wrap;
    gap:12px;
    margin-bottom:22px;
  }
  .hero-logo{
    font-family:'Special Elite', monospace;
    font-size:26px;
    font-weight:700;
    letter-spacing:0.5px;
  }
  .hero-sub{
    font-family:'JetBrains Mono',monospace;
    font-size:11px;
    letter-spacing:0.2em;
    color:rgba(255,255,255,0.5);
    margin-top:4px;
  }
  .hero-actions{
    flex-shrink:0;
  }
  .hero-link{
    display:inline-block;
    color:#fff;
    text-decoration:none;
    font-family:'JetBrains Mono',monospace;
    font-size:12.5px;
    background:rgba(255,255,255,0.08);
    border:1px solid rgba(255,255,255,0.18);
    padding:9px 16px;
    border-radius:999px;
    white-space:nowrap;
  }
  .hero-link:hover{background:rgba(255,255,255,0.15);}
  .hero-content{
    display:flex;
    gap:24px;
    align-items:center;
    flex-wrap:wrap;
  }
  .hero-left{flex:1 1 260px;}
  .hero-right{
    flex:1 1 220px;
    min-width:180px;
  }
  .hero-right img{
    width:100%;
    height:auto;
    display:block;
    border-radius:14px;
    object-fit:cover;
  }
  @media (max-width:520px){
    .hero-content{flex-direction:column;align-items:stretch;}
    .hero-right{order:2;}
  }
  .hero-pill{
    display:inline-block;
    background:rgba(107,122,94,0.18);
    color:#8fd6a8;
    border:1px solid rgba(143,214,168,0.3);
    font-family:'JetBrains Mono',monospace;
    font-size:11.5px;
    padding:6px 12px;
    border-radius:999px;
    margin-bottom:16px;
  }
  .hero-left h2{
    font-family:'Special Elite', monospace;
    font-size:30px;
    line-height:1.25;
    margin:0 0 12px;
    color:#fff;
    text-shadow:
      -1px -1px 0 rgba(255,255,255,0.15),
      1px 1px 0 rgba(0,0,0,0.4),
      2px 2px 0 rgba(0,0,0,0.25);
  }
  .hero-left p{
    margin:0 0 20px;
    color:rgba(255,255,255,0.65);
    font-size:14.5px;
    line-height:1.6;
    max-width:52ch;
  }
  .hero-cta{
    display:flex;
    gap:10px;
    flex-wrap:wrap;
  }
  .hero-cta a{
    font-family:'JetBrains Mono',monospace;
    font-size:13px;
    padding:11px 20px;
    border-radius:999px;
    text-decoration:none;
    cursor:pointer;
    border:1px solid transparent;
  }
  .hero-cta .primary{
    background:#fff;
    color:#10141f;
  }
  .hero-cta .primary:hover{background:#e9e4d8;}
  .hero-cta .secondary{
    background:rgba(255,255,255,0.06);
    color:#fff;
    border-color:rgba(255,255,255,0.25);
  }
  .hero-cta .secondary:hover{background:rgba(255,255,255,0.14);}

  .card{
    background:var(--card);
    border:1px solid var(--card-line);
    border-radius:3px;
    box-shadow: 0 10px 24px var(--shadow), 0 1px 0 #fff inset;
    padding:26px 26px 22px;
    margin-bottom:22px;
    position:relative;
  }
  .card::before{
    content:"";
    position:absolute;
    top:0; left:28px; right:28px; height:10px;
    background: repeating-linear-gradient(90deg, transparent 0 10px, rgba(163,59,32,0.15) 10px 11px);
  }
  .card h2{
    font-family:'Special Elite', monospace;
    font-size:16px;
    margin:0 0 14px;
    display:flex;
    align-items:center;
    gap:10px;
  }
  .card h2 .num{
    background:var(--stamp);
    color:var(--card);
    width:24px;height:24px;
    border-radius:50%;
    display:inline-flex;align-items:center;justify-content:center;
    font-size:13px;
  }

  label{
    display:block;
    font-family:'JetBrains Mono',monospace;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:0.08em;
    opacity:0.7;
    margin-bottom:6px;
  }
  input[type=text], input[type=password], textarea, select{
    width:100%;
    font-family:'Source Serif 4', serif;
    font-size:15px;
    padding:10px 12px;
    border:1px solid var(--card-line);
    border-radius:2px;
    background:#fffdf8;
    color:var(--ink);
    margin-bottom:14px;
  }
  textarea{min-height:64px;resize:vertical;}
  small.hint{
    display:block;
    margin-top:-10px;
    margin-bottom:14px;
    font-size:12px;
    opacity:0.6;
  }

  /* Datei-Upload (Bild hochladen zum Bearbeiten) im gleichen Kraftpapier-Look wie die übrigen Felder */
  input[type=file]{
    width:100%;
    font-family:'JetBrains Mono', monospace;
    font-size:12.5px;
    padding:10px 12px;
    border:1px dashed var(--kraft-dark);
    border-radius:2px;
    background:#fffdf8;
    color:var(--ink);
    margin-bottom:14px;
    cursor:pointer;
  }
  input[type=file]:hover{
    background:rgba(107,122,94,0.08);
    border-color:var(--sage);
  }
  input[type=file]::file-selector-button{
    font-family:'JetBrains Mono', monospace;
    font-size:11.5px;
    background:var(--sage);
    color:#fff;
    border:none;
    padding:7px 12px;
    border-radius:999px;
    cursor:pointer;
    margin-right:10px;
  }
  input[type=file]::file-selector-button:hover{
    background:var(--kraft-dark);
  }
  /* Vorschau-Bild des hochgeladenen Motivs */
  #sourceImagePreviewWrap img{
    border:1px solid var(--card-line);
    box-shadow:0 6px 16px var(--shadow);
  }

  .ingredients{margin-bottom:14px;}
  .chips{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-bottom:14px;
  }
  .chip{
    font-family:'JetBrains Mono',monospace;
    font-size:11.5px;
    background:#fffdf8;
    border:1px solid var(--card-line);
    color:var(--ink);
    padding:7px 12px;
    border-radius:999px;
    cursor:pointer;
  }
  .chip:hover{border-color:var(--kraft-dark);background:rgba(107,122,94,0.08);}
  .chip.active{
    background:var(--sage);
    color:#fff;
    border-color:var(--sage);
  }
  .ingredient-row{
    display:flex;
    gap:8px;
    margin-bottom:8px;
  }
  .ingredient-row input{margin-bottom:0;flex:1;}
  .ingredient-row button{
    flex-shrink:0;
    background:none;
    border:1px solid var(--card-line);
    color:var(--stamp);
    border-radius:2px;
    width:38px;
    cursor:pointer;
    font-size:16px;
  }
  .add-btn{
    background:none;
    border:1px dashed var(--kraft-dark);
    color:var(--ink);
    padding:8px 14px;
    border-radius:2px;
    cursor:pointer;
    font-family:'JetBrains Mono',monospace;
    font-size:12px;
  }
  .add-btn:hover{background:rgba(107,122,94,0.08);}

  .preview{
    font-family:'JetBrains Mono',monospace;
    font-size:12.5px;
    background:#fffdf8;
    border:1px solid var(--card-line);
    border-radius:2px;
    padding:12px;
    white-space:pre-wrap;
    line-height:1.5;
    color:#4a3f33;
  }

  .generate{
    width:100%;
    background:var(--stamp);
    color:#fff;
    border:none;
    padding:16px;
    font-family:'Special Elite', monospace;
    font-size:16px;
    letter-spacing:0.5px;
    border-radius:6px;
    cursor:pointer;
    box-shadow:0 6px 0 #7a2a17;
    transition:transform 0.05s;
    margin:30px 0;
  }
  .generate:active{transform:translateY(4px);box-shadow:0 2px 0 #7a2a17;}
  .generate:disabled{background:#b7a897;box-shadow:none;cursor:wait;}

  .result{text-align:center;}
  .result img{
    max-width:100%;
    border:6px solid #fff;
    box-shadow:0 12px 30px var(--shadow);
    transform:rotate(-1deg);
    border-radius:1px;
  }
  .result .stamp{
    display:inline-block;
    margin-top:14px;
    font-family:'Special Elite',monospace;
    color:var(--sage);
    border:2px solid var(--sage);
    padding:4px 10px;
    transform:rotate(-3deg);
    border-radius:3px;
  }
  .error{
    background:#fbe9e4;
    border:1px solid var(--stamp);
    color:#7a2a17;
    padding:12px 14px;
    border-radius:2px;
    font-size:14px;
    line-height:1.5;
  }
  .error code{
    font-family:'JetBrains Mono',monospace;
    font-size:12px;
    background:rgba(0,0,0,0.06);
    padding:1px 4px;
    border-radius:2px;
  }
  .note{
    font-family:'JetBrains Mono',monospace;
    font-size:11.5px;
    opacity:0.6;
    margin-top:6px;
  }
  .actions{
    display:flex;
    gap:10px;
    justify-content:center;
    margin-top:14px;
    flex-wrap:wrap;
  }
  .actions button{
    font-family:'JetBrains Mono',monospace;
    font-size:12px;
    padding:9px 16px;
    border-radius:2px;
    cursor:pointer;
    border:1px solid var(--kraft-dark);
    background:#fffdf8;
    color:var(--ink);
  }
  .actions button:hover{background:rgba(107,122,94,0.1);}
  .actions button.saved{
    background:var(--sage);
    color:#fff;
    border-color:var(--sage);
  }
  .gallery{
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(110px, 1fr));
    gap:10px;
  }
  .gallery-item{
    position:relative;
    border:1px solid var(--card-line);
    border-radius:2px;
    overflow:hidden;
    background:#fffdf8;
  }
  .gallery-item img{
    width:100%;
    height:110px;
    object-fit:cover;
    display:block;
  }
  .gallery-item .cap{
    font-family:'JetBrains Mono',monospace;
    font-size:9.5px;
    padding:4px 6px;
    opacity:0.65;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .gallery-item .del{
    position:absolute;
    top:4px;right:4px;
    background:rgba(43,36,32,0.7);
    color:#fff;
    border:none;
    width:20px;height:20px;
    border-radius:50%;
    cursor:pointer;
    font-size:12px;
    line-height:1;
  }
  .empty-hint{
    font-family:'JetBrains Mono',monospace;
    font-size:12px;
    opacity:0.5;
  }
  .gallery-item img{cursor:pointer;}
  .lightbox{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(16,20,31,0.88);
    z-index:1000;
    align-items:center;
    justify-content:center;
    padding:24px;
  }
  .lightbox.open{display:flex;}
  .lightbox-inner{
    position:relative;
    max-width:min(90vw, 700px);
    max-height:90vh;
    text-align:center;
  }
  .lightbox-inner img{
    max-width:100%;
    max-height:78vh;
    border-radius:4px;
    box-shadow:0 20px 50px rgba(0,0,0,0.5);
  }
  .lightbox-caption{
    color:#fff;
    font-family:'JetBrains Mono',monospace;
    font-size:12.5px;
    margin-top:14px;
    opacity:0.8;
  }
  .lightbox-close{
    position:absolute;
    top:-40px;
    right:0;
    background:rgba(255,255,255,0.1);
    border:1px solid rgba(255,255,255,0.3);
    color:#fff;
    width:34px;height:34px;
    border-radius:50%;
    cursor:pointer;
    font-size:16px;
  }
  .spinner{
    display:inline-block;width:16px;height:16px;
    border:2px solid #fff;border-top-color:transparent;
    border-radius:50%;
    animation:spin 0.7s linear infinite;
    vertical-align:middle;margin-right:8px;
  }
  @keyframes spin{to{transform:rotate(360deg);}}