/* ===== Schulfoto Portal – Frontend CSS ===== */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600&family=DM+Sans:wght@400;500;600&display=swap');

:root {
  --sfp-primary:    #1a1a2e;
  --sfp-accent:     #e8a020;
  --sfp-accent-2:   #c47a15;
  --sfp-bg:         #fafaf8;
  --sfp-card:       #ffffff;
  --sfp-border:     #e5e2dc;
  --sfp-text:       #1a1a2e;
  --sfp-muted:      #6b6860;
  --sfp-success:    #2d7a4f;
  --sfp-error:      #c0392b;
  --sfp-radius:     10px;
  --sfp-shadow:     0 2px 16px rgba(26,26,46,.08);
}

.sfp-portal * { box-sizing: border-box; }
.sfp-portal { font-family: 'DM Sans', sans-serif; color: var(--sfp-text); max-width: 1100px; margin: 0 auto; }

/* ── LOGIN ──────────────────────────────── */
.sfp-login-wrap { display: flex; justify-content: center; padding: 60px 16px; background: var(--sfp-bg); }
.sfp-login-box {
  background: var(--sfp-card); border: 1px solid var(--sfp-border);
  border-radius: 16px; padding: 48px 40px; max-width: 420px; width: 100%;
  box-shadow: 0 8px 40px rgba(26,26,46,.12); text-align: center;
}
.sfp-login-logo { margin-bottom: 20px; }
.sfp-login-box h2 { font-family: 'Playfair Display', serif; font-size: 1.8rem; margin: 0 0 8px; }
.sfp-login-subtitle { color: var(--sfp-muted); font-size: .9rem; margin-bottom: 28px; }
.sfp-login-hint { font-size: .8rem; color: var(--sfp-muted); margin-top: 16px; }

/* ── FORMS ─────────────────────────────── */
.sfp-form-group { margin-bottom: 16px; text-align: left; }
.sfp-form-group label { display: block; font-size: .85rem; font-weight: 600; margin-bottom: 6px; color: var(--sfp-text); }
.sfp-form-group input, .sfp-form-group select, .sfp-form-group textarea {
  width: 100%; padding: 10px 14px; border: 1.5px solid var(--sfp-border);
  border-radius: var(--sfp-radius); font-size: .95rem; font-family: inherit;
  transition: border-color .2s; background: white;
}
.sfp-form-group input:focus, .sfp-form-group select:focus, .sfp-form-group textarea:focus {
  outline: none; border-color: var(--sfp-accent);
}
.sfp-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.sfp-required { color: var(--sfp-error); }

/* ── BUTTONS ────────────────────────────── */
.sfp-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 10px 20px; border-radius: var(--sfp-radius); border: none;
  font-family: inherit; font-size: .9rem; font-weight: 600; cursor: pointer;
  text-decoration: none; transition: all .2s;
}
.sfp-btn-primary { background: var(--sfp-accent); color: var(--sfp-primary); }
.sfp-btn-primary:hover { background: var(--sfp-accent-2); color: var(--sfp-primary); transform: translateY(-1px); }
.sfp-btn-outline { background: transparent; color: var(--sfp-text); border: 1.5px solid var(--sfp-border); }
.sfp-btn-outline:hover { border-color: var(--sfp-accent); color: var(--sfp-accent); }
.sfp-btn-full { width: 100%; justify-content: center; padding: 13px; font-size: 1rem; }
.sfp-btn-large { padding: 13px 28px; font-size: 1rem; }
.sfp-btn-cart { background: var(--sfp-primary); color: white; position: relative; }
.sfp-btn-cart:hover { background: #2d2d50; color: white; }
.sfp-btn-add { background: var(--sfp-primary); color: white; width: 100%; justify-content: center; font-size: .82rem; padding: 8px; border-radius: 6px; }
.sfp-btn-add:hover { background: var(--sfp-accent); color: var(--sfp-primary); }
.sfp-cart-badge {
  background: var(--sfp-accent); color: var(--sfp-primary); border-radius: 50%;
  min-width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center;
  font-size: .75rem; font-weight: 700; padding: 0 4px;
}
.sfp-spinner { width: 16px; height: 16px; border: 2px solid rgba(255,255,255,.4); border-top-color: white; border-radius: 50%; animation: sfp-spin .7s linear infinite; display: inline-block; }
@keyframes sfp-spin { to { transform: rotate(360deg); } }

/* ── HEADER ─────────────────────────────── */
.sfp-header { display: flex; justify-content: space-between; align-items: center; padding: 16px 0 20px; border-bottom: 2px solid var(--sfp-border); margin-bottom: 24px; flex-wrap: wrap; gap: 12px; }
.sfp-header h2 { font-family: 'Playfair Display', serif; font-size: 1.5rem; margin: 0 0 4px; }
.sfp-school-badge { background: var(--sfp-accent); color: var(--sfp-primary); padding: 3px 10px; border-radius: 20px; font-size: .8rem; font-weight: 600; }
.sfp-header-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }

/* ── PACKAGES BAR ───────────────────────── */
.sfp-packages-bar { background: var(--sfp-primary); color: white; padding: 10px 16px; border-radius: var(--sfp-radius); margin-bottom: 24px; display: flex; flex-wrap: wrap; gap: 10px; align-items: center; font-size: .85rem; }
.sfp-pkg-chip { background: rgba(232,160,32,.2); border: 1px solid rgba(232,160,32,.4); padding: 3px 10px; border-radius: 20px; font-size: .8rem; cursor: help; }

/* ── SETS & GALLERY ─────────────────────── */
.sfp-set-section { margin-bottom: 40px; }
.sfp-set-header { display: flex; align-items: baseline; gap: 12px; margin-bottom: 16px; padding-bottom: 10px; border-bottom: 1px solid var(--sfp-border); flex-wrap: wrap; }
.sfp-set-header h3 { font-family: 'Playfair Display', serif; font-size: 1.3rem; margin: 0; }
.sfp-set-desc { color: var(--sfp-muted); font-size: .85rem; margin: 0; }
.sfp-set-count { color: var(--sfp-muted); font-size: .8rem; margin-left: auto; }

.sfp-photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; }
.sfp-photo-card { background: var(--sfp-card); border: 1px solid var(--sfp-border); border-radius: var(--sfp-radius); overflow: hidden; box-shadow: var(--sfp-shadow); transition: transform .2s, box-shadow .2s; }
.sfp-photo-card:hover { transform: translateY(-3px); box-shadow: 0 8px 24px rgba(26,26,46,.13); }
.sfp-photo-img-wrap { position: relative; aspect-ratio: 4/3; overflow: hidden; background: #f0ede8; }
.sfp-photo-thumb { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .3s; }
.sfp-photo-card:hover .sfp-photo-thumb { transform: scale(1.04); }
.sfp-photo-overlay { position: absolute; inset: 0; background: rgba(26,26,46,.5); display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .2s; }
.sfp-photo-card:hover .sfp-photo-overlay { opacity: 1; }
.sfp-btn-zoom { background: white; color: var(--sfp-primary); border: none; padding: 7px 14px; border-radius: 6px; cursor: pointer; font-size: .82rem; font-weight: 600; }
.sfp-photo-info { padding: 8px 10px 4px; display: flex; justify-content: space-between; align-items: center; }
.sfp-photo-title { font-size: .82rem; color: var(--sfp-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 70%; }
.sfp-photo-price { font-size: .82rem; font-weight: 700; color: var(--sfp-accent-2); }
.sfp-photo-actions { padding: 6px 10px 10px; display: flex; flex-direction: column; gap: 6px; }
.sfp-package-select { width: 100%; padding: 6px 8px; border: 1.5px solid var(--sfp-border); border-radius: 6px; font-size: .8rem; font-family: inherit; }

/* ── WARENKORB ──────────────────────────── */
.sfp-cart-table-wrap { overflow-x: auto; }
.sfp-cart-table { width: 100%; border-collapse: collapse; }
.sfp-cart-table th, .sfp-cart-table td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--sfp-border); font-size: .9rem; }
.sfp-cart-table th { background: var(--sfp-primary); color: white; font-weight: 600; }
.sfp-cart-thumb { width: 50px; height: 40px; object-fit: cover; border-radius: 4px; vertical-align: middle; margin-right: 8px; }
.sfp-price-col { text-align: right; font-weight: 600; }
.sfp-total-price { font-size: 1.1rem; color: var(--sfp-accent-2); }
.sfp-btn-remove { background: none; border: none; color: var(--sfp-error); cursor: pointer; font-size: 1rem; padding: 4px 8px; border-radius: 4px; }
.sfp-btn-remove:hover { background: #ffeaea; }
.sfp-cart-footer { margin-top: 24px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; }
.sfp-cart-hint { color: var(--sfp-muted); font-size: .85rem; margin: 0; }

/* ── CHECKOUT ───────────────────────────── */
.sfp-checkout-layout { display: grid; grid-template-columns: 1fr 360px; gap: 24px; align-items: start; }
.sfp-card { background: var(--sfp-card); border: 1px solid var(--sfp-border); border-radius: 12px; padding: 28px; }
.sfp-card h3 { margin: 0 0 20px; font-family: 'Playfair Display', serif; }
.sfp-privacy-check { margin: 16px 0; font-size: .88rem; }
.sfp-privacy-check a { color: var(--sfp-accent-2); }
.sfp-order-summary { position: sticky; top: 20px; }
.sfp-summary-item { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--sfp-border); }
.sfp-summary-thumb { width: 44px; height: 36px; object-fit: cover; border-radius: 4px; flex-shrink: 0; }
.sfp-summary-info { flex: 1; }
.sfp-summary-info span { display: block; font-size: .88rem; font-weight: 600; }
.sfp-summary-info small { color: var(--sfp-muted); font-size: .78rem; }
.sfp-summary-total { display: flex; justify-content: space-between; padding-top: 14px; font-size: 1.05rem; margin-top: 4px; }

/* ── BESTÄTIGUNG ────────────────────────── */
.sfp-confirm-box { text-align: center; padding: 60px 20px; max-width: 500px; margin: 0 auto; }
.sfp-confirm-icon { font-size: 4rem; margin-bottom: 16px; }
.sfp-confirm-box h2 { font-family: 'Playfair Display', serif; font-size: 1.8rem; }
.sfp-confirm-details { background: var(--sfp-bg); border: 1px solid var(--sfp-border); border-radius: var(--sfp-radius); padding: 16px; margin: 20px 0; text-align: left; }
.sfp-confirm-details p { margin: 6px 0; font-size: .9rem; }
.sfp-confirm-text { color: var(--sfp-muted); font-size: .9rem; margin-bottom: 24px; }

/* ── LIGHTBOX ───────────────────────────── */
.sfp-lightbox { position: fixed; inset: 0; z-index: 99999; }
.sfp-lightbox-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.88); }
.sfp-lightbox-inner { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; padding: 20px; }
.sfp-lightbox-inner img { max-width: 90vw; max-height: 80vh; border-radius: 8px; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.sfp-lightbox-inner p { color: white; margin-top: 12px; font-size: .9rem; }
.sfp-lightbox-close { position: absolute; top: 20px; right: 24px; background: none; border: none; color: white; font-size: 1.8rem; cursor: pointer; z-index: 2; }

/* ── TOAST ──────────────────────────────── */
.sfp-toast { position: fixed; bottom: 24px; right: 24px; background: var(--sfp-primary); color: white; padding: 12px 20px; border-radius: var(--sfp-radius); font-size: .88rem; z-index: 9999; box-shadow: 0 4px 20px rgba(0,0,0,.2); animation: sfp-toast-in .3s ease; }
.sfp-toast.success { background: var(--sfp-success); }
@keyframes sfp-toast-in { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }

/* ── ALERTS ─────────────────────────────── */
.sfp-alert { padding: 10px 14px; border-radius: var(--sfp-radius); font-size: .9rem; margin-bottom: 12px; }
.sfp-alert-error { background: #ffeaea; color: var(--sfp-error); border: 1px solid #f5c6c6; }

/* ── EMPTY STATES ───────────────────────── */
.sfp-empty-state { text-align: center; padding: 60px 20px; color: var(--sfp-muted); }
.sfp-empty-icon { font-size: 3rem; margin-bottom: 12px; }
.sfp-empty-state h3 { color: var(--sfp-text); margin-bottom: 8px; }

/* ── RESPONSIVE ─────────────────────────── */
@media (max-width: 700px) {
  .sfp-checkout-layout { grid-template-columns: 1fr; }
  .sfp-photo-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
  .sfp-form-row { grid-template-columns: 1fr; }
  .sfp-login-box { padding: 32px 20px; }
  .sfp-header { flex-direction: column; align-items: flex-start; }
}
