:root{
  --color-primary:#9A3412;   /* terracotta */
  --color-primary-d:#7c2d12;
  --color-secondary:#C2410C;
  --color-accent:#059669;    /* verde */
  --color-bg:#FFFBEB;        /* carta */
  --color-fg:#0F172A;
  --color-muted:#F8F2F0;
  --color-border:#F2E6E2;
  --color-destructive:#DC2626;
  --radius:12px;
  --shadow:0 1px 2px rgba(15,23,42,.06),0 4px 12px rgba(15,23,42,.05);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--color-bg);color:var(--color-fg);
  font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:16px;line-height:1.5;
}
a{color:var(--color-primary);text-decoration:none}
a:hover{text-decoration:underline}

.display{font-family:'Calistoga','Georgia',serif;font-weight:400;letter-spacing:.2px}
.mono{font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  font-variant-numeric:tabular-nums}

/* Header */
.site-header{position:sticky;top:0;z-index:20;background:rgba(255,251,235,.92);
  backdrop-filter:saturate(1.2) blur(6px);border-bottom:1px solid var(--color-border)}
.site-header .bar{max-width:1100px;margin:0 auto;padding:14px 20px;
  display:flex;align-items:center;gap:16px}
.brand{font-family:'Calistoga',serif;font-size:1.4rem;color:var(--color-primary);
  display:flex;align-items:center;gap:8px;white-space:nowrap}
.brand svg{width:24px;height:24px}
.search{flex:1;display:flex;min-width:0}
.search input{flex:1;min-width:0;height:44px;padding:0 14px;font-size:16px;
  border:1px solid var(--color-border);border-radius:var(--radius) 0 0 var(--radius);
  background:#fff;color:var(--color-fg)}
.search button{height:44px;padding:0 16px;border:1px solid var(--color-accent);
  background:var(--color-accent);color:#fff;border-radius:0 var(--radius) var(--radius) 0;
  cursor:pointer;display:flex;align-items:center;gap:6px;font-size:15px}
.search button:hover{background:#047857}
.header-actions{display:flex;align-items:center;gap:10px}
.btn-logout{height:40px;display:inline-flex;align-items:center;gap:6px;padding:0 12px;
  border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;
  color:var(--color-fg);cursor:pointer;font-size:14px}
.btn-logout:hover{background:var(--color-muted);text-decoration:none}

:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px;border-radius:6px}

.container{max-width:1100px;margin:0 auto;padding:24px 20px 64px}

/* Lista / griglia */
.list-head{display:flex;align-items:baseline;justify-content:space-between;
  gap:12px;margin:8px 0 20px;flex-wrap:wrap}
.list-head h1{font-family:'Calistoga',serif;font-size:1.6rem;margin:0;color:var(--color-primary)}
.count{color:#64748b;font-size:.9rem}

/* Messaggi flash */
.messages{margin:0 0 16px}
.msg{padding:10px 14px;border-radius:var(--radius);font-size:.9rem;margin-bottom:8px}
.msg.success{background:#dcfce7;color:#166534}
.msg.error{background:#fee2e2;color:#991b1b}

/* Import da YouTube */
.yt-import{margin:0 0 22px;border:1px solid var(--color-border);border-radius:var(--radius);
  background:#fff;padding:12px 16px;box-shadow:var(--shadow)}
.yt-import summary{cursor:pointer;display:flex;align-items:center;gap:8px;
  color:var(--color-primary);font-weight:500;user-select:none}
.yt-import summary svg{color:#c4302b}
.yt-form{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.yt-form input{flex:1;min-width:200px;height:42px;padding:0 12px;font-size:15px;
  border:1px solid var(--color-border);border-radius:10px;background:#fff}
.btn-import{height:42px;padding:0 20px;border:none;border-radius:10px;
  background:var(--color-primary);color:#fff;font-size:15px;cursor:pointer}
.btn-import:hover{background:var(--color-primary-d)}

/* Filtro per tipologia — pulsanti */
.course-nav{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 28px}
.course-pill{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;
  border:1px solid var(--color-border);border-radius:10px;background:#fff;
  color:var(--color-fg);font-weight:500;font-size:.9rem;box-shadow:var(--shadow);
  transition:transform .12s ease,background .15s,border-color .15s,box-shadow .15s}
.course-pill:hover{background:var(--color-muted);text-decoration:none;transform:translateY(-1px)}
.course-pill:active{transform:translateY(0)}
.course-pill.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary);
  box-shadow:0 4px 12px rgba(154,52,18,.25)}
.course-pill .course-count{display:inline-flex;align-items:center;justify-content:center;
  min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--color-muted);
  color:var(--color-primary-d);font-family:ui-monospace,Menlo,monospace;font-size:.72rem}
.course-pill.active .course-count{background:rgba(255,255,255,.25);color:#fff}

/* Sezioni raggruppate — titoli enfatici */
.course-section{margin-bottom:44px}
.course-heading{font-family:'Calistoga',serif;font-size:2rem;letter-spacing:.5px;
  text-transform:uppercase;color:var(--color-primary);margin:0 0 18px;
  border-bottom:3px solid var(--color-border);padding-bottom:10px}

/* Selettore categoria nel dettaglio */
.course-edit{display:flex;align-items:center;gap:8px;margin:0 0 18px}
.course-edit label{color:#64748b;font-size:.85rem}
.course-edit select{height:36px;padding:0 10px;border:1px solid var(--color-border);
  border-radius:8px;background:#fff;color:var(--color-fg);font-size:.9rem;cursor:pointer}
.course-edit select:focus{border-color:var(--color-accent)}

.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.card{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column;
  transition:transform .18s ease,box-shadow .18s ease}
.card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(15,23,42,.10);text-decoration:none}
.card a.cover{display:block;aspect-ratio:4/3;background:var(--color-muted);overflow:hidden}
.card a.cover img{width:100%;height:100%;object-fit:cover;display:block}
.card .ph{width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  color:#cbb8b0}
.card .body{padding:14px 14px 16px;display:flex;flex-direction:column;gap:8px;flex:1}
.card h3{margin:0;font-family:'Calistoga',serif;font-size:1.1rem;line-height:1.25;
  color:var(--color-fg)}
.card .times{display:flex;gap:10px;flex-wrap:wrap;color:#64748b;font-size:.8rem}
.card .tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}
.tag{background:var(--color-muted);border:1px solid var(--color-border);border-radius:999px;
  padding:2px 10px;font-size:.72rem;color:var(--color-primary-d)}

/* Badge di stato */
.badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;
  padding:2px 9px;font-size:.72rem;font-weight:500}
.badge.pending{background:#fef3c7;color:#92400e}
.badge.processing{background:#dbeafe;color:#1e40af}
.badge.failed{background:#fee2e2;color:#991b1b}
.badge::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}

/* Stato vuoto */
.empty{text-align:center;padding:64px 20px;color:#64748b}
.empty svg{width:48px;height:48px;color:#cbb8b0;margin-bottom:12px}
.empty h2{font-family:'Calistoga',serif;color:var(--color-primary);margin:0 0 8px}

/* Dettaglio */
.detail{max-width:820px;margin:0 auto}
.hero-wrap{position:relative;margin-bottom:20px}
.detail .hero{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius);
  background:var(--color-muted);display:block}
.hero-pos{position:absolute;bottom:10px;right:10px;display:flex;gap:4px;
  background:rgba(0,0,0,.4);border-radius:8px;padding:4px}
.pos-btn{width:30px;height:28px;border:none;border-radius:6px;background:transparent;
  color:#fff;cursor:pointer;font-size:.85rem;line-height:1;transition:background .15s}
.pos-btn:hover{background:rgba(255,255,255,.2)}
.pos-btn.active{background:rgba(255,255,255,.35);font-weight:bold}
.img-tools{display:flex;flex-wrap:wrap;gap:10px 24px;margin:0 0 20px}
.upload-form{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}
.upload-form input[type=file]{font-size:.85rem;max-width:100%}
.upload-hint{margin:8px 0 0;font-size:.82rem;color:#64748b}
.cover-picker{margin:0}
.cover-picker summary{cursor:pointer;color:var(--color-primary);font-size:.9rem;
  padding:8px 0;user-select:none}
.cover-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));
  gap:10px;margin-top:10px}
.cover-thumb{padding:0;border:2px solid var(--color-border);border-radius:10px;
  overflow:hidden;background:#fff;cursor:pointer;aspect-ratio:1/1}
.cover-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.cover-thumb:hover{border-color:var(--color-accent)}
.cover-thumb.selected{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary)}
.detail h1{font-family:'Calistoga',serif;font-size:2rem;color:var(--color-primary);margin:0 0 8px}
.detail .desc{color:#475569;margin:0 0 18px}
.detail .meta{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}
.detail .meta span{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);
  padding:8px 12px;font-size:.85rem}
.detail h2{font-family:'Calistoga',serif;font-size:1.3rem;color:var(--color-primary);
  border-bottom:2px solid var(--color-border);padding-bottom:6px;margin:28px 0 14px}
.ing-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  flex-wrap:wrap;margin:28px 0 14px;border-bottom:2px solid var(--color-border);padding-bottom:6px}
.ing-head h2{margin:0;border:none;padding:0}
.scaler{display:flex;align-items:center;gap:8px;font-size:.9rem}
.servings-label{color:#64748b}
.servings-suffix{color:#64748b}
.scale-input{width:64px;height:34px;padding:0 8px;border:1px solid var(--color-border);
  border-radius:8px;background:#fff;color:var(--color-fg);font-size:15px;text-align:center}
.scale-input:focus{border-color:var(--color-accent)}
.btn-reset{height:34px;padding:0 14px;border:1px solid var(--color-border);border-radius:8px;
  background:#fff;color:var(--color-primary);cursor:pointer;font-size:.85rem}
.btn-reset:hover{background:var(--color-muted)}
ul.ingredients .unit{color:var(--color-primary)}
ul.ingredients{list-style:none;padding:0;margin:0}
ul.ingredients li{padding:9px 0;border-bottom:1px solid var(--color-border);
  display:flex;justify-content:space-between;gap:16px}
ul.ingredients .qty{color:var(--color-primary);white-space:nowrap}
ol.steps{list-style:none;counter-reset:step;padding:0;margin:0}
ol.steps li{counter-increment:step;position:relative;padding:8px 0 16px 46px;
  border-bottom:1px solid var(--color-border)}
ol.steps li::before{content:counter(step);position:absolute;left:0;top:4px;width:32px;height:32px;
  border-radius:50%;background:var(--color-accent);color:#fff;display:flex;align-items:center;
  justify-content:center;font-size:.9rem}
ol.steps .step-img{display:block;margin-top:12px;max-width:100%;border-radius:var(--radius);
  border:1px solid var(--color-border)}
.source-link{display:inline-flex;align-items:center;gap:8px;margin-top:28px;padding:10px 16px;
  border:1px solid var(--color-border);border-radius:var(--radius);background:#fff}
.source-link:hover{background:var(--color-muted);text-decoration:none}
.delete-row{margin-top:36px;border-top:1px solid var(--color-border);padding-top:18px}
.btn-delete{height:38px;padding:0 16px;border:1px solid var(--color-destructive);
  border-radius:8px;background:#fff;color:var(--color-destructive);cursor:pointer;
  font-size:.88rem}
.btn-delete:hover{background:var(--color-destructive);color:#fff}

/* Login */
.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{width:100%;max-width:380px;background:#fff;border:1px solid var(--color-border);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:32px}
.login-card .brand{justify-content:center;font-size:1.7rem;margin-bottom:20px}
.field{margin-bottom:16px}
.field label{display:block;font-size:.85rem;color:#475569;margin-bottom:6px;font-weight:500}
.field input{width:100%;height:46px;padding:0 12px;font-size:16px;border:1px solid var(--color-border);
  border-radius:var(--radius);background:#fff;color:var(--color-fg)}
.btn-primary{width:100%;height:46px;border:none;border-radius:var(--radius);
  background:var(--color-primary);color:#fff;font-size:16px;cursor:pointer}
.btn-primary:hover{background:var(--color-primary-d)}
.form-error{background:#fee2e2;color:#991b1b;border-radius:var(--radius);padding:10px 12px;
  font-size:.85rem;margin-bottom:16px}

@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
}
