/* LocalFlowerShop admin/portal/editor styles: linked by those layouts only, never inlined into public pages. */
/* Admin */
.admin-body { background: #f2f4f3; min-height: 100vh; display: flex; flex-direction: column; }
.admin-body > main { flex: 1 0 auto; width: 100%; box-sizing: border-box; }
/* Portal + admin footer: one even row, footer pinned to the bottom of short pages */
.app-foot { margin-top: 48px; background: var(--green-dark); color: #b9cdc3; font-size: .88rem; padding: 18px 0; }
.app-foot .wrap { display: flex; align-items: center; justify-content: space-between; gap: 14px 24px; flex-wrap: wrap; }
.app-foot-brand { display: inline-flex; align-items: center; gap: 9px; color: #dce8e2; }
.app-foot-brand img { display: block; }
.app-foot-area { color: #f3bfd2; font-family: var(--head); padding-left: 9px; border-left: 1px solid rgba(255,255,255,.25); }
.app-foot-links { display: flex; flex-wrap: wrap; gap: 4px 0; }
.app-foot-links a { color: #b9cdc3; text-decoration: none; padding: 2px 10px; border-left: 1px solid rgba(255,255,255,.18); line-height: 1.3; }
.app-foot-links a:first-child { border-left: 0; padding-left: 0; }
.app-foot-links a:hover { color: #fff; }
@media (max-width: 720px) { .app-foot .wrap { flex-direction: column; align-items: center; text-align: center; } .app-foot-links { justify-content: center; } .app-foot-links a { padding: 2px 7px; font-size: .84rem; } }
.admin-nav { display: flex; gap: 4px; margin: 18px 0; flex-wrap: wrap; }
.admin-nav a { text-decoration: none; padding: 7px 14px; border-radius: 8px; font-weight: 500; font-size: .93rem; color: var(--ink); }
.admin-nav a.on, .admin-nav a:hover { background: var(--green); color: #fff; }
.admin-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 12px; overflow: hidden; box-shadow: var(--shadow); font-size: .93rem; }
.admin-table th { text-align: left; background: var(--green-soft); padding: 10px 12px; }
.admin-table td { padding: 10px 12px; border-top: 1px solid var(--line); vertical-align: top; }
.admin-actions { display: flex; gap: 6px; }
.admin-search { display: flex; gap: 8px; align-items: center; margin: 10px 0 14px; flex-wrap: wrap; }
.admin-search input { flex: 1 1 260px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 9px; font: inherit; }
.rescind-form { display: flex; flex-direction: column; gap: 6px; min-width: 170px; }
.rescind-form input { padding: 7px 9px; border: 1px solid var(--line); border-radius: 8px; font: inherit; font-size: .88rem; }
.flash-err { background: #fbeaea; border-color: #e5b8b8; }
.btn-sm { border: 0; border-radius: 7px; padding: 5px 11px; cursor: pointer; font-weight: 600; font-size: .82rem; }
.btn-ok { background: var(--green); color: #fff; }
.btn-no { background: #b3423f; color: #fff; }
.btn-plain { background: #e6e9e7; color: var(--ink); text-decoration: none; display: inline-block; }
.stat-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin: 16px 0; }
.stat-card { background: #fff; border-radius: 12px; padding: 16px; box-shadow: var(--shadow); }
.stat-card strong { font-family: var(--head); font-size: 1.7rem; color: var(--green); display: block; }
.stat-card span { color: var(--muted); font-size: .85rem; }
.admin-form label { display: block; margin: 10px 0; font-weight: 500; font-size: .93rem; }
.admin-form input, .admin-form select, .admin-form textarea { display: block; width: 100%; max-width: 520px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; margin-top: 4px; font: inherit; }
.admin-form .check { display: flex; align-items: center; gap: 8px; max-width: none; }
.admin-form .check input { width: auto; display: inline; }

/* Portal review kit: a printable counter card */
.review-kit-card { max-width: 420px; margin: 10px 0; border: 2px solid var(--green); border-radius: 16px; padding: 26px 30px; text-align: center; background: #fff; }
.review-kit-card .rk-brand { color: var(--rose-dark); font-weight: 700; margin: 0; }
.review-kit-card h2 { margin: 6px 0 10px; }
.review-kit-card img { margin: 10px auto; display: block; }
.review-kit-card .rk-url { font-weight: 600; word-break: break-all; margin: 4px 0 10px; }
@media print {
  .site-head, .site-foot, .admin-nav, .no-print, #raf-chat-btn, #raf-chat { display: none !important; }
  .review-kit-card { border-color: #333; margin: 0 auto; }
}

/* Premium listing features */
.announcement { margin: 6px 0 12px; }
.gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; margin: 4px 0 14px; }
.gallery img { width: 100%; height: 110px; object-fit: cover; border-radius: 10px; display: block; }

/* iOS Safari zooms the page when a focused field is under 16px. Every form on
   the site is a conversion point, so none may trigger that. This block is last
   on purpose: the per-form rules above set smaller sizes at equal specificity,
   and source order decides the tie. */
@media (max-width: 780px) {
  input, select, textarea, .review-form input, .review-form select, .review-form textarea,
  .admin-form input, .admin-form select, .admin-form textarea { font-size: 16px; }
}

.role-tag { display:inline-block; padding:2px 9px; border-radius:999px; background:var(--green-soft); color:var(--green-dark); font-size:.82rem; font-weight:600; }
/* Admin page editor */
.ed { border: 1px solid var(--line); border-radius: 12px; background: #fff; overflow: hidden; margin-top: 6px; }
.ed-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; padding: 8px 10px; border-bottom: 1px solid var(--line); background: #faf7f8; position: sticky; top: 0; z-index: 3; }
.ed-tools button { font: inherit; font-size: .84rem; padding: 5px 9px; border: 1px solid var(--line); border-radius: 7px; background: #fff; cursor: pointer; color: var(--ink); }
.ed-tools button:hover { border-color: var(--rose); color: var(--rose-dark); }
.ed-sep { width: 1px; height: 22px; background: var(--line); margin: 0 4px; }
.ed-count { margin-left: auto; font-size: .82rem; color: var(--muted); }
.ed-toggle { font-family: ui-monospace, Menlo, monospace; }
.ed-visual { min-height: 340px; padding: 22px 26px; outline: none; }
.ed-visual:focus { box-shadow: inset 0 0 0 2px var(--rose-light); }
.ed-visual img { max-width: 100%; height: auto; }
.ed-html { display: none; width: 100%; min-height: 460px; border: 0; padding: 16px; font: 13px/1.55 ui-monospace, Menlo, monospace; color: var(--ink); resize: vertical; }
.ed-mode-html .ed-visual { display: none; }
.ed-mode-html .ed-html { display: block; }
.ed-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 18px 0 30px; }
.ed-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 0 20px; }
.ed-form .admin-form input, .ed-form input { max-width: none; }
.faq-row { border: 1px solid var(--line); border-radius: 10px; padding: 8px 14px 12px; margin: 10px 0; background: #fff; }
.faq-row textarea, .faq-row input { max-width: none; }
.admin-table .btn-sm { white-space: nowrap; }
.announce { background: var(--rose-dark); color: #fff; font-size: .92rem; text-align: center; padding: 8px 0; }
.announce a { color: #fff; font-weight: 600; text-decoration: underline; margin-left: 6px; }
.soc-block { margin: 12px 0 18px; } .soc-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 4px; font-size: .8rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 600; color: var(--muted); }
.soc-block pre { background: #faf7f8; border: 1px solid var(--line); border-radius: 8px; padding: 12px; white-space: pre-wrap; word-wrap: break-word; font: 13px/1.55 ui-monospace, Menlo, monospace; margin: 0; }
.soc-imgs { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 14px; margin-bottom: 30px; }
.soc-imgs div { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: #fff; display: flex; flex-direction: column; gap: 4px; padding-bottom: 10px; }
.soc-imgs img { width: 100%; display: block; } .soc-imgs strong, .soc-imgs span, .soc-imgs a { margin: 0 10px; font-size: .85rem; } .soc-imgs a { text-align: center; margin-top: 6px; }



.verify-box { background: #fff7e0; border: 2px solid #e6b422; border-radius: 12px; padding: 16px 20px; margin: 0 0 18px; color: #2b2438; } .verify-box h2 { margin: 0 0 6px; font-size: 1.2rem; } .verify-box p { margin: 6px 0; } .verify-box form { margin-top: 10px; } .verify-sent { font-weight: 600; }

.shop-switch { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 0 0 16px; padding: 10px 14px; background: #fff; border: 1px solid var(--line); border-radius: 12px; font-size: .93rem; } .shop-switch label { font-weight: 700; } .shop-switch select { flex: 1 1 240px; min-width: 0; max-width: 520px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 9px; font: inherit; background: #fff; }

.psteps { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 12px 16px; margin: 0 0 16px; }
.psteps ol { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 22px; margin: 0; padding: 0; }
.pstep { display: flex; align-items: center; gap: 8px; font-size: .95rem; color: #6a6f7a; }
.pstep-n { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; border: 2px solid #c9ccd3; font-weight: 700; font-size: .85rem; flex: none; }
.pstep-done { color: #1f6b43; } .pstep-done .pstep-n { background: #1f6b43; border-color: #1f6b43; color: #fff; }
.pstep-now { color: #2b2438; font-weight: 700; } .pstep-now .pstep-n { background: #e6b422; border-color: #e6b422; color: #2b2438; }
.pstep-next { margin: 10px 0 0; padding-top: 10px; border-top: 1px solid var(--line); }
.verify-box ol { margin: 6px 0 8px; padding-left: 22px; } .verify-box li { margin: 4px 0; }
.how-steps { margin: 6px 0 16px; padding-left: 22px; } .how-steps li { margin: 6px 0; } .how-h { font-size: 1.05rem; margin: 18px 0 4px; }
.field-hint { margin: 4px 0 0; font-size: .88rem; color: #6a6f7a; }
.review-form label.showpw { display: flex; align-items: center; gap: 8px; font-weight: 400; margin-top: 8px; } .review-form label.showpw input { width: auto; margin: 0; }
.shop-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 16px 20px; margin: 14px 0; }
.shop-card-in { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; } .shop-card h2 { margin: 0; font-size: 1.3rem; } .shop-card .muted { margin: 4px 0 0; }
.shop-card .admin-actions { flex-wrap: wrap; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }

.shop-bar { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 10px 14px; margin: 0 0 16px; }
.shop-bar .shop-switch { flex: 1 1 320px; margin: 0; padding: 0; border: 0; background: none; } .shop-bar-name { margin: 0; }
.btn-live { flex: none; display: inline-block; padding: 10px 18px; border-radius: 999px; font-weight: 700; text-decoration: none; color: #fff; white-space: nowrap; background: linear-gradient(135deg, var(--pink-deep), var(--pink)); } .btn-live:hover { filter: brightness(1.08); color: #fff; }

.photo-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 6px 0 10px; } .photo-thumb-lg { width: 260px; max-width: 100%; height: auto; border-radius: 10px; display: block; }
.photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; max-width: 720px; margin: 6px 0 12px; } .photo-grid img { width: 100%; height: 100px; object-fit: cover; border-radius: 8px; display: block; }
.photo-grid .photo-form { margin: 6px 0 0; } .photo-form { margin: 0 0 8px; } .photo-form label { margin-bottom: 6px; }
