:root {
  --primary: #15803D;
  --primary-dark: #166534;
  --accent: #F59E0B;
  --teal: #27A7A8;
  --background: #F8FAF7;
  --surface: #FFFFFF;
  --text: #1F2937;
  --muted: #6B7280;
  --border: #E5E7EB;
  --completed: #DCFCE7;
  --danger: #DC2626;
  --shadow: 0 14px 35px rgba(31, 41, 55, .08);
  --radius-lg: 24px;
  --radius-md: 17px;
  --radius-sm: 12px;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--text);
  background: var(--background);
}

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--background); }
body { margin: 0; min-height: 100vh; background: var(--background); color: var(--text); }
a { color: var(--primary); }
button, input { font: inherit; }
button { cursor: pointer; }
.hidden { display: none !important; }

.auth-pending main,
.auth-pending .app-shell { visibility: hidden; }

.app-shell { min-height: 100vh; padding-bottom: 86px; }
.topbar {
  position: sticky; top: 0; z-index: 20;
  background: rgba(248,250,247,.94);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid rgba(229,231,235,.75);
}
.topbar-inner {
  max-width: 1180px; margin: auto; padding: 14px 20px;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.brand { display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--text); font-weight:800; }
.brand img { width: 42px; height:42px; }
.brand span { font-size: 1.2rem; }
.user-tools { display:flex; align-items:center; gap:12px; }
.user-name { font-weight:700; }
.icon-button {
  width:42px; height:42px; border:1px solid var(--border); border-radius:14px;
  background:var(--surface); display:grid; place-items:center; color:var(--text);
}

.page { max-width:1180px; margin:auto; padding:28px 20px 110px; }
.welcome { display:flex; justify-content:space-between; align-items:end; gap:20px; margin-bottom:22px; }
.eyebrow { color:var(--primary); font-weight:800; font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; }
h1 { margin:5px 0 5px; font-size:clamp(2rem, 5vw, 3rem); line-height:1.02; }
h2 { margin:0; font-size:1.2rem; }
p { color:var(--muted); line-height:1.55; }

.search-bar {
  display:flex; gap:10px; align-items:center; background:var(--surface); border:1px solid var(--border);
  border-radius:18px; padding:10px 12px; box-shadow:0 8px 24px rgba(31,41,55,.05); margin-bottom:20px;
}
.search-bar input { flex:1; min-width:0; border:0; outline:0; padding:6px; background:transparent; color:var(--text); }
.search-icon { color:var(--muted); font-size:1.25rem; }

.quick-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin:20px 0 30px; }
.quick-card {
  text-decoration:none; color:var(--text); background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius-md); padding:16px; box-shadow:0 8px 20px rgba(31,41,55,.04);
  transition:transform .15s ease, box-shadow .15s ease;
}
.quick-card:hover { transform:translateY(-2px); box-shadow:var(--shadow); }
.quick-icon { width:43px; height:43px; border-radius:14px; display:grid; place-items:center; background:#EAF7EE; color:var(--primary); font-size:1.3rem; margin-bottom:12px; }
.quick-card:nth-child(2) .quick-icon { background:#FFF4D9; color:#B97400; }
.quick-card:nth-child(3) .quick-icon { background:#E8F8F8; color:var(--teal); }
.quick-card:nth-child(4) .quick-icon { background:#F3EDFF; color:#7C3AED; }
.quick-title { font-weight:800; }
.quick-copy { margin-top:4px; color:var(--muted); font-size:.86rem; }

.section { margin-top:28px; }
.section-head { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-bottom:12px; }
.section-link { font-size:.9rem; font-weight:800; text-decoration:none; }

.card {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg);
  box-shadow:0 8px 24px rgba(31,41,55,.05);
}
.empty-state { padding:30px; text-align:center; }
.empty-illustration { width:68px; height:68px; margin:0 auto 14px; border-radius:22px; background:#EAF7EE; display:grid; place-items:center; font-size:2rem; }
.empty-state h3 { margin:0 0 6px; font-size:1.15rem; }
.empty-state p { max-width:470px; margin:0 auto 18px; }

.btn {
  border:0; border-radius:14px; min-height:46px; padding:0 18px; font-weight:800;
  display:inline-flex; align-items:center; justify-content:center; gap:8px; text-decoration:none;
}
.btn-primary { background:var(--primary); color:#fff; }
.btn-primary:hover { background:var(--primary-dark); }
.btn-soft { background:#EAF7EE; color:var(--primary-dark); }
.btn-ghost { background:transparent; color:var(--text); border:1px solid var(--border); }

.favourite-row { display:grid; grid-template-columns:repeat(5,1fr); gap:12px; }
.favourite-placeholder { padding:18px; text-align:center; min-height:120px; }
.favourite-placeholder strong { display:block; margin-top:8px; }
.fav-symbol { width:48px; height:48px; border-radius:16px; background:#F3F4F6; margin:auto; display:grid; place-items:center; font-size:1.35rem; }

.bottom-nav {
  display:none; position:fixed; z-index:30; left:0; right:0; bottom:0; background:rgba(255,255,255,.97);
  border-top:1px solid var(--border); padding:8px max(8px, env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));
}
.bottom-nav a { flex:1; text-decoration:none; color:var(--muted); text-align:center; font-size:.72rem; font-weight:700; padding:5px 2px; }
.bottom-nav .nav-ico { display:block; font-size:1.3rem; line-height:1.3; }
.bottom-nav a.active { color:var(--primary); }

/* Authentication */
.auth-page {
  min-height:100vh; display:grid; place-items:center; padding:26px 18px;
  background:
    radial-gradient(circle at 8% 12%, rgba(39,167,168,.13), transparent 28%),
    radial-gradient(circle at 92% 90%, rgba(245,158,11,.10), transparent 28%),
    var(--background);
}
.auth-shell { width:min(100%, 470px); }
.auth-card { padding:30px; }
.auth-logo { display:block; width:min(100%, 290px); height:auto; margin-bottom:28px; }
.auth-card h1 { font-size:2rem; }
.auth-card > p { margin-top:7px; }
.field { margin:17px 0; }
.field label { display:block; margin-bottom:7px; font-weight:800; font-size:.9rem; }
.field input {
  width:100%; border:1px solid #D1D5DB; border-radius:13px; padding:13px 14px; outline:none;
  background:#fff; color:var(--text);
}
.field input:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(21,128,61,.12); }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.check-row { display:flex; gap:9px; align-items:flex-start; color:var(--muted); font-size:.9rem; margin:12px 0 18px; }
.auth-submit { width:100%; }
.auth-footer-note { text-align:center; margin:19px 0 0; }
.status { border-radius:12px; padding:11px 13px; margin:14px 0; font-size:.9rem; }
.status:empty { display:none; }
.status.success { color:#166534; background:#DCFCE7; }
.status.error { color:#991B1B; background:#FEE2E2; }
.small { font-size:.83rem; color:var(--muted); }

@media (max-width: 760px) {
  .topbar-inner { padding:11px 16px; }
  .brand span { font-size:1rem; }
  .brand img { width:38px; height:38px; }
  .user-name { display:none; }
  .page { padding:22px 16px 100px; }
  .welcome { align-items:flex-start; }
  h1 { font-size:2rem; }
  .quick-grid { grid-template-columns:repeat(4, minmax(0,1fr)); gap:8px; }
  .quick-card { padding:10px 6px; text-align:center; border-radius:15px; }
  .quick-icon { margin:0 auto 8px; width:40px; height:40px; }
  .quick-title { font-size:.78rem; }
  .quick-copy { display:none; }
  .favourite-row { grid-template-columns:repeat(2,1fr); }
  .bottom-nav { display:flex; }
  .form-grid { grid-template-columns:1fr; gap:0; }
  .auth-card { padding:24px 20px; }
}

@media (min-width: 900px) {
  .page { display:grid; grid-template-columns:minmax(0, 1fr); }
}

/* ShopList SA v0.2 - Lists and items */
button.quick-card { width:100%; text-align:left; font:inherit; }
.quick-button { cursor:pointer; }
.button-link { border:0; background:transparent; cursor:pointer; }
.lists-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.list-card { display:flex; align-items:center; gap:14px; padding:18px; text-decoration:none; color:var(--text); }
.list-card:hover { box-shadow:var(--shadow); transform:translateY(-1px); }
.list-card-icon { width:54px; height:54px; flex:0 0 54px; border-radius:17px; display:grid; place-items:center; background:#EAF7EE; font-size:1.45rem; }
.list-card-content { min-width:0; flex:1; }
.list-card-top { display:flex; justify-content:space-between; align-items:center; gap:10px; }
.list-card-top strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.list-card-meta, .list-card-type { color:var(--muted); font-size:.86rem; margin-top:4px; }
.list-card-type { color:var(--primary); font-weight:700; }
.list-card-arrow { color:var(--muted); font-size:1.7rem; }
.status-pill { font-size:.72rem; font-weight:800; padding:5px 8px; border-radius:999px; background:#F3F4F6; color:var(--muted); white-space:nowrap; }
.status-pill.shopping { background:#E8F8F8; color:#147B7C; }
.status-pill.completed { background:var(--completed); color:var(--primary-dark); }
.no-results { padding:22px; display:flex; flex-direction:column; gap:4px; color:var(--muted); }
.no-results strong { color:var(--text); }

.modal { border:0; padding:0; background:transparent; width:min(94vw,560px); max-height:90vh; overflow:visible; }
.modal::backdrop { background:rgba(17,24,39,.46); backdrop-filter:blur(3px); }
.modal-card { background:var(--surface); border-radius:24px; padding:24px; box-shadow:0 30px 80px rgba(17,24,39,.22); max-height:90vh; overflow:auto; }
.modal-head { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:8px; }
.modal-head h2 { font-size:1.4rem; margin-top:4px; }
.modal-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:20px; }
.spread-actions { justify-content:space-between; align-items:center; }
.action-right { display:flex; gap:10px; }
.field select, .field textarea {
  width:100%; border:1px solid #D1D5DB; border-radius:13px; padding:13px 14px; outline:none; background:#fff; color:var(--text);
}
.field select:focus, .field textarea:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(21,128,61,.12); }
.field-help { margin-top:6px; font-size:.78rem; color:var(--muted); }
.muted-label { font-weight:500; color:var(--muted); }
.btn-danger-soft { background:#FEE2E2; color:#991B1B; }
.btn-small { min-height:38px; padding:0 13px; font-size:.86rem; }
.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; }

.list-page { max-width:920px; }
.list-toolbar { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-bottom:18px; }
.back-link { color:var(--muted); text-decoration:none; font-weight:800; }
.list-hero { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:22px; }
.list-hero h1 { margin-bottom:4px; }
.list-notes { margin:7px 0 4px; }
.list-meta { color:var(--muted); font-size:.88rem; }
.list-progress-card { flex:0 0 110px; min-height:96px; border-radius:22px; background:#EAF7EE; display:flex; flex-direction:column; align-items:center; justify-content:center; color:var(--primary-dark); }
.list-progress-card strong { font-size:2rem; line-height:1; }
.list-progress-card span { margin-top:5px; font-size:.8rem; font-weight:700; }
.add-item-panel { padding:14px; border-radius:20px; }
.quick-add-main { display:grid; grid-template-columns:minmax(0,1fr) 190px auto; gap:10px; }
.quick-add-main input, .quick-add-main select { width:100%; min-width:0; border:1px solid var(--border); border-radius:13px; padding:12px 13px; background:#fff; color:var(--text); outline:none; }
.quick-add-main input:focus, .quick-add-main select:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(21,128,61,.1); }
.add-item-panel .status { margin-bottom:0; }
.list-filter-bar { display:flex; justify-content:space-between; align-items:center; gap:12px; margin:18px 0; }
.segmented { display:flex; background:#EEF2EF; border-radius:14px; padding:4px; overflow:auto; }
.segmented button { border:0; background:transparent; color:var(--muted); border-radius:11px; padding:8px 12px; font-size:.82rem; font-weight:800; white-space:nowrap; }
.segmented button.active { background:#fff; color:var(--primary-dark); box-shadow:0 2px 8px rgba(31,41,55,.08); }
.segmented span { opacity:.7; margin-left:3px; }
.category-groups { display:flex; flex-direction:column; gap:20px; }
.category-title { display:flex; align-items:center; gap:8px; margin:0 5px 8px; }
.category-count { margin-left:auto; color:var(--muted); font-size:.8rem; }
.item-card { overflow:hidden; border-radius:18px; }
.shopping-item { display:flex; align-items:center; min-height:72px; padding:10px 13px; border-bottom:1px solid var(--border); transition:background .15s ease; }
.shopping-item:last-child { border-bottom:0; }
.shopping-item:hover { background:#FAFCFA; }
.item-check { width:30px; height:30px; flex:0 0 30px; border:2px solid #CBD5D1; border-radius:9px; background:#fff; color:#fff; display:grid; place-items:center; font-weight:900; }
.item-check.checked { background:var(--primary); border-color:var(--primary); }
.item-body { border:0; background:transparent; min-width:0; flex:1; text-align:left; padding:4px 12px; color:var(--text); }
.item-name { display:block; font-weight:800; font-size:.98rem; }
.item-sub { display:block; margin-top:4px; color:var(--muted); font-size:.8rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.item-more { border:0; background:transparent; color:#9CA3AF; font-size:1.5rem; padding:8px; }
.shopping-item.is-bought .item-name { text-decoration:line-through; color:var(--muted); }
.shopping-item.is-bought { background:#F8FCF9; }
.must-get { color:var(--accent); margin-right:6px; }
.toggle-row { display:flex; gap:12px; align-items:flex-start; background:#FFF9E8; border:1px solid #FDE9A9; border-radius:14px; padding:12px; cursor:pointer; }
.toggle-row input { margin-top:4px; }
.toggle-row span { display:flex; flex-direction:column; gap:2px; }
.toggle-row small { color:var(--muted); }

@media (max-width:760px) {
  .lists-grid { grid-template-columns:1fr; }
  .list-card { padding:14px; }
  .list-card-icon { width:48px; height:48px; flex-basis:48px; }
  .list-card-top { align-items:flex-start; }
  .list-hero { align-items:center; }
  .list-progress-card { flex-basis:82px; min-height:78px; border-radius:18px; }
  .list-progress-card strong { font-size:1.55rem; }
  .quick-add-main { grid-template-columns:minmax(0,1fr) auto; }
  .quick-add-main select { grid-column:1 / -1; grid-row:2; }
  .quick-add-main .btn { grid-column:2; grid-row:1; padding:0 14px; }
  .list-filter-bar { align-items:flex-start; }
  .segmented { max-width:calc(100vw - 120px); }
  .modal { width:calc(100vw - 20px); }
  .modal-card { padding:20px 16px; border-radius:20px; }
  .spread-actions { align-items:stretch; flex-direction:column-reverse; }
  .action-right { width:100%; }
  .action-right .btn { flex:1; }
  .spread-actions > .btn-danger-soft { align-self:flex-start; }
}


/* v0.3.0 searchable category picker */
.category-picker { position:relative; width:100%; }
.category-picker > input[type="search"] {
  width:100%; min-width:0; border:1px solid var(--border); border-radius:13px;
  padding:12px 38px 12px 13px; background:#fff; color:var(--text); outline:none;
  appearance:none; -webkit-appearance:none;
}
.category-picker > input[type="search"]:focus {
  border-color:var(--primary); box-shadow:0 0 0 3px rgba(21,128,61,.12);
}
.category-picker::after {
  content:'⌄'; position:absolute; right:13px; top:10px; color:var(--muted);
  pointer-events:none; font-size:1.1rem;
}
.category-picker.compact::after { top:10px; }
.category-menu {
  position:absolute; z-index:60; left:0; right:0; top:calc(100% + 6px);
  max-height:300px; overflow-y:auto; overscroll-behavior:contain;
  background:#fff; border:1px solid var(--border); border-radius:14px;
  box-shadow:0 18px 45px rgba(31,41,55,.16); padding:6px;
}
.category-option {
  display:flex; align-items:center; gap:9px; width:100%; border:0; background:transparent;
  color:var(--text); text-align:left; padding:10px 11px; border-radius:9px;
  cursor:pointer; font:inherit;
}
.category-option:hover, .category-option:focus { background:#f0f8f2; outline:none; }
.category-option.selected { background:var(--completed); font-weight:800; color:var(--primary-dark); }
.category-option-icon { width:22px; text-align:center; flex:0 0 22px; }
.category-no-results { padding:12px 11px; color:var(--muted); font-size:.9rem; }
.quick-add-main .category-picker { min-width:0; }
@media (max-width:700px) {
  .quick-add-main .category-picker { grid-column:1 / -1; grid-row:2; }
  .category-menu { max-height:240px; }
}

/* ============================================================
   ShopList SA v0.3.0 - Shopping Mode
   ============================================================ */
.start-shopping-card{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:18px 0 22px;padding:22px 24px;border:1px solid #DDEBE1;background:linear-gradient(135deg,#F7FCF8,#EFF9F1)}
.start-shopping-card h2{margin:3px 0 4px}.start-shopping-card p{margin:0;color:var(--muted);max-width:650px}.btn-large{min-height:48px;padding:12px 18px;font-size:.95rem}
.shopping-mode-active{background:#F8FAF7}.shopping-mode-active .page{padding-bottom:110px}.shopping-mode-active .topbar{position:sticky;top:0;z-index:20}
.shopping-mode-header{position:sticky;top:66px;z-index:15;display:grid;grid-template-columns:1fr auto;gap:10px 16px;margin:-2px -2px 20px;padding:18px 18px 14px;background:rgba(248,250,247,.96);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}
.shopping-mode-header h1{margin:1px 0 3px;font-size:clamp(1.45rem,4vw,2rem)}.shopping-kicker{text-transform:uppercase;letter-spacing:.11em;color:var(--primary);font-size:.72rem;font-weight:900}.shopping-progress-text{font-size:.9rem;color:var(--muted)}
.shopping-progress-track{grid-column:1/-1;height:8px;background:#E5EDE7;border-radius:999px;overflow:hidden}.shopping-progress-track span{display:block;height:100%;width:0;background:var(--primary);border-radius:inherit;transition:width .2s ease}
.shopping-category{margin-bottom:20px}.shopping-category-head{display:flex;align-items:center;gap:8px;margin:0 6px 8px;color:#34443A}.shopping-category-head strong{flex:1}.shopping-category-head>span:last-child{font-size:.76rem;font-weight:900;background:#EAF4ED;color:var(--primary-dark);border-radius:999px;min-width:25px;padding:4px 8px;text-align:center}
.shopping-mode-card{overflow:hidden;background:#fff;border:1px solid #E2EAE4;border-radius:18px;box-shadow:0 5px 18px rgba(31,41,55,.05)}
.shopping-mode-item{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:86px;padding:10px 12px;border-bottom:1px solid var(--border)}.shopping-mode-item:last-child{border-bottom:0}.shopping-mode-item.must-get-row{background:#FFFDF6}
.shop-check{width:52px;height:52px;border-radius:16px;border:2px solid #BFD8C7;background:#F6FBF7;color:#fff;font-size:0;display:grid;place-items:center;cursor:pointer}.shop-check span{font-size:1.35rem;opacity:0}.shop-check:active,.shop-check:hover{background:#E8F6EC;border-color:var(--primary)}.shop-check:active span,.shop-check:hover span{opacity:.45;color:var(--primary)}
.shop-item-body{min-width:0;border:0;background:none;text-align:left;padding:8px 2px;cursor:pointer}.shop-item-name{display:block;font-weight:900;color:var(--text);font-size:1rem;line-height:1.3}.shop-item-sub{display:block;margin-top:4px;color:var(--muted);font-size:.82rem;white-space:normal}.shop-item-name .must-get{display:block;width:max-content;margin-bottom:4px;font-size:.68rem;line-height:1;background:#FFF2C6;color:#8A5A00;padding:5px 7px;border-radius:999px;text-decoration:none}
.cant-find-btn{min-height:42px;border:1px solid #F1C36C;background:#FFF9E9;color:#8A5A00;border-radius:12px;padding:8px 10px;font-size:.76rem;font-weight:900;cursor:pointer}.cant-find-btn:hover{background:#FFF3CE}
.shopping-clear{display:flex;flex-direction:column;align-items:center;text-align:center;padding:36px 20px;margin:20px 0}.shopping-clear div{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:#DCFCE7;color:var(--primary-dark);font-size:1.5rem;margin-bottom:9px}.shopping-clear span{color:var(--muted);margin-top:4px}
.shopping-results{margin-top:25px;display:flex;flex-direction:column;gap:8px}.shopping-result-toggle{width:100%;display:grid;grid-template-columns:1fr auto 24px;align-items:center;gap:8px;border:0;border-radius:14px;background:#EAF6ED;color:var(--primary-dark);padding:13px 15px;text-align:left;font-weight:900;cursor:pointer}.shopping-result-toggle.unavailable-toggle{background:#FFF6DF;color:#845900}.shopping-result-toggle.empty-result{opacity:.55}.shopping-result-toggle strong{min-width:28px;text-align:center;background:rgba(255,255,255,.75);border-radius:999px;padding:3px 8px}.shopping-result-items{background:#fff;border:1px solid var(--border);border-radius:14px;overflow:hidden}.shopping-result-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border)}.shopping-result-row:last-child{border-bottom:0}.shopping-result-row>div{flex:1;min-width:0}.shopping-result-row strong,.shopping-result-row span{display:block}.shopping-result-row strong{text-decoration:line-through;color:#647269}.shopping-result-row span{font-size:.77rem;color:var(--muted);margin-top:2px}.shopping-result-row.unavailable strong{text-decoration:none}.shopping-result-row button{border:0;background:#F1F5F2;border-radius:10px;padding:8px 10px;font-weight:800;color:#405147;cursor:pointer}
.shopping-footer{position:fixed;z-index:30;left:0;right:0;bottom:0;display:flex;justify-content:center;gap:10px;padding:12px max(16px,calc((100vw - 1120px)/2));padding-bottom:max(12px,env(safe-area-inset-bottom));background:rgba(255,255,255,.97);border-top:1px solid var(--border);box-shadow:0 -8px 24px rgba(31,41,55,.08)}.shopping-footer .btn-primary{min-width:220px}
.finish-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0 18px}.finish-summary-grid>div{text-align:center;background:#F7FAF8;border:1px solid var(--border);border-radius:14px;padding:14px 8px}.finish-summary-grid strong{display:block;font-size:1.65rem;color:var(--primary-dark)}.finish-summary-grid span{display:block;color:var(--muted);font-size:.75rem;font-weight:800;margin-top:2px}.finish-warning{background:#FFF6DF;border:1px solid #F2D28E;color:#765200;border-radius:12px;padding:11px 13px;font-size:.84rem;margin-bottom:12px}
.completed-banner{display:flex;align-items:center;gap:16px;margin:6px 0 22px;background:#F1FAF3;border-color:#D4EAD9}.completed-icon{flex:0 0 auto;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:#DCFCE7;color:var(--primary-dark);font-size:1.5rem;font-weight:900}.completed-banner h2{margin:2px 0}.completed-banner p{margin:0;color:var(--muted)}
.item-status-badge{display:inline-block;vertical-align:middle;margin-left:7px;border-radius:999px;padding:3px 7px;font-size:.65rem;font-weight:900;text-decoration:none!important}.item-status-badge.unavailable{background:#FFF3CD;color:#765200}.item-status-badge.skipped{background:#EEF1EF;color:#667168}.shopping-item.is-unavailable{background:#FFFCF5}.shopping-item.is-skipped{opacity:.68}

@media(max-width:720px){
  .start-shopping-card{align-items:stretch;flex-direction:column;padding:18px}.start-shopping-card .btn{width:100%}
  .shopping-mode-header{top:57px;margin-left:-16px;margin-right:-16px;padding:14px 16px 12px}.shopping-mode-header .btn{padding:8px 10px}
  .shopping-mode-active .page{padding-top:12px;padding-bottom:112px}
  .shopping-mode-item{grid-template-columns:52px minmax(0,1fr) auto;gap:7px;padding:9px 9px;min-height:82px}.shop-check{width:48px;height:48px;border-radius:15px}.cant-find-btn{max-width:76px;padding:7px 8px;font-size:.69rem;line-height:1.12}
  .shopping-footer{padding-left:12px;padding-right:12px}.shopping-footer .btn{flex:1}.shopping-footer .btn-primary{min-width:0}
  .finish-summary-grid strong{font-size:1.4rem}.finish-summary-grid span{font-size:.69rem}
}

/* ============================================================
   ShopList SA v0.3.2 - UX refinements
   ============================================================ */
.list-status-group{grid-column:1/-1;min-width:0}.list-status-group+.list-status-group{margin-top:10px}.list-status-heading{display:flex;align-items:center;gap:9px;margin:2px 2px 10px}.list-status-heading h3{margin:0;font-size:1rem}.list-status-heading span{display:inline-grid;place-items:center;min-width:25px;height:25px;padding:0 7px;border-radius:999px;background:#EAF4ED;color:var(--primary-dark);font-size:.75rem;font-weight:900}.list-status-completed .list-status-heading span{background:#EEF1EF;color:#667168}.list-status-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.list-filter-bar{justify-content:flex-start}.list-filter-bar .segmented{max-width:100%}
.qty-stepper{display:inline-grid;grid-template-columns:34px minmax(42px,auto) 34px;align-items:stretch;border:1px solid #DCE5DF;border-radius:12px;overflow:hidden;background:#F7FAF8;flex:0 0 auto}.qty-stepper button{border:0;background:transparent;color:var(--primary-dark);font:inherit;font-weight:900;min-height:36px;padding:0;cursor:pointer}.qty-stepper>button:first-child,.qty-stepper>button:last-child{font-size:1.05rem}.qty-stepper button:hover:not(:disabled){background:#EAF6ED}.qty-stepper button:disabled{opacity:.35;cursor:default}.qty-stepper .qty-value{display:flex;flex-direction:column;align-items:center;justify-content:center;border-left:1px solid #DCE5DF;border-right:1px solid #DCE5DF;padding:3px 7px;line-height:1.05}.qty-stepper .qty-value strong{font-size:.88rem}.qty-stepper .qty-value small{font-size:.61rem;color:var(--muted);font-weight:700;margin-top:2px;max-width:48px;overflow:hidden;text-overflow:ellipsis}.qty-stepper.compact{grid-template-columns:30px minmax(38px,auto) 30px;border-radius:11px}.qty-stepper.compact button{min-height:34px}.completed-qty{font-size:.82rem;color:var(--muted);font-weight:800;padding:0 8px}
.shop-item-main{min-width:0;display:flex;align-items:center;gap:8px}.shop-item-main .shop-item-body{flex:1}.shop-item-main .qty-stepper{flex:0 0 auto}

@media(max-width:760px){
  .list-status-cards{grid-template-columns:1fr}
  .shopping-item{padding-left:10px;padding-right:7px}.item-body{padding-left:9px;padding-right:7px}.item-more{padding:7px 4px}.shopping-item .qty-stepper.compact{grid-template-columns:27px minmax(34px,auto) 27px}.shopping-item .qty-stepper.compact button{min-height:32px}
  .shop-item-main{align-items:flex-start;flex-direction:column;gap:5px}.shop-item-main .qty-stepper{align-self:flex-start}.shopping-mode-item{grid-template-columns:50px minmax(0,1fr) auto}
}


/* v0.3.3 partial quantity shopping controls */
.item-status-badge.partial { background:#FFF4D6; color:#8A5A00; }
.purchased-stepper { display:flex; align-items:center; gap:.45rem; flex-wrap:wrap; margin-top:.45rem; }
.purchased-stepper .purchased-label { font-size:.75rem; color:#6B7280; margin-right:.15rem; }
.purchased-stepper button { width:34px; height:34px; border:1px solid #D7E0DA; border-radius:10px; background:#fff; font-size:1.15rem; color:#166534; font-weight:800; }
.purchased-stepper button:disabled { opacity:.35; }
.purchased-stepper strong { min-width:70px; text-align:center; color:#1F2937; }
.purchased-stepper small { color:#6B7280; }
@media (max-width: 640px) {
  .purchased-stepper { gap:.35rem; }
  .purchased-stepper button { width:40px; height:40px; }
  .purchased-stepper strong { min-width:76px; }
}

.category-suggestion-hint{font-size:.78rem;color:#15803D;margin-top:.35rem;min-height:1em}.quick-add-main .category-suggestion-hint{grid-column:auto;align-self:center;margin:0 .2rem;font-size:.72rem}@media(max-width:760px){.quick-add-main .category-suggestion-hint{grid-column:1/-1;margin-top:-.35rem}}

/* ============================================================
   ShopList SA v0.4.0 - Favourite products
   ============================================================ */
.favourite-row{display:flex;gap:14px;overflow-x:auto;padding:2px 2px 10px;scrollbar-width:thin}.favourite-card{min-width:210px;display:grid;grid-template-columns:48px minmax(0,1fr) 42px;align-items:center;gap:10px;padding:14px}.favourite-card-copy{min-width:0}.favourite-card-copy strong,.favourite-card-copy span{display:block}.favourite-card-copy strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.favourite-card-copy span{font-size:.76rem;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.favourite-add{width:38px;height:38px;border-radius:50%;border:1px solid #BFD8C7;background:#EFF9F1;color:var(--primary);font-size:1.35rem;font-weight:800;cursor:pointer}.favourite-add:hover{background:#DCFCE7}.compact-empty{padding:22px}.compact-empty .empty-illustration{margin-bottom:6px}
.favourite-save-row{width:100%;border:1px solid #D9E9DD;border-radius:14px;background:#F4FBF6;color:var(--text);padding:12px 14px;display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer}.favourite-save-row>span:first-child{font-size:1.35rem;color:#D58A00}.favourite-save-row strong,.favourite-save-row small{display:block}.favourite-save-row small{color:var(--muted);margin-top:2px}.favourite-save-row:hover,.favourite-save-row.is-saved{background:#EAF8EE;border-color:#B8DCC2}.favourite-save-row:disabled{opacity:.65;cursor:default}
.compact-heading{margin-bottom:18px}.compact-heading h1{margin-bottom:6px}.compact-heading p{color:var(--muted);margin-top:0}.favourites-manage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.favourite-manage-card{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px}.favourite-manage-icon{width:48px;height:48px;border-radius:14px;background:#F1F8F3;display:grid;place-items:center;font-size:1.35rem}.favourite-manage-copy{min-width:0}.favourite-manage-copy strong,.favourite-manage-copy span{display:block}.favourite-manage-copy strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.favourite-manage-copy span{color:var(--muted);font-size:.8rem;margin-top:3px}.favourite-manage-actions{display:flex;align-items:center;gap:7px}.danger-icon{color:#B91C1C;background:#FFF5F5;border-color:#F1D8D8}
@media(max-width:760px){.favourite-card{min-width:190px}.favourites-manage-grid{grid-template-columns:1fr}.favourite-manage-card{grid-template-columns:48px minmax(0,1fr) auto}.favourite-manage-actions .btn{padding-left:10px;padding-right:10px}}


/* v0.4.1 - one-tap favourites */
.item-favourite{width:34px;height:34px;display:grid;place-items:center;border:0;background:transparent;border-radius:50%;font-size:1.28rem;line-height:1;color:#9CA3AF;cursor:pointer;flex:0 0 auto}
.item-favourite:hover{background:#FFF7E1;color:#D58A00}
.item-favourite.is-favourite{color:#D58A00}
.shopping-favourite{align-self:center}
@media(max-width:640px){.item-favourite{width:32px;height:32px;font-size:1.2rem}.shopping-favourite{grid-row:1 / span 2}}


/* v0.5 Family sharing */
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:26px}.page-head h1{margin:.2rem 0 .35rem}.family-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px}.family-card{padding:22px}.family-card-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;border-bottom:1px solid var(--border,#e5e7eb);padding-bottom:16px;margin-bottom:10px}.family-card-head h2{margin:3px 0}.family-card-head p{margin:0;color:#6b7280}.family-member{display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #eef2ef}.family-member:last-child{border-bottom:0}.family-member div:nth-child(2){display:flex;flex-direction:column}.family-member span{font-size:.82rem;color:#6b7280}.member-avatar{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:#dcfce7;color:#166534;font-weight:800}.role-pill{background:#f3f4f6;padding:5px 9px;border-radius:999px;text-transform:capitalize;color:#374151!important}.pending-title{margin-top:14px;font-weight:700}.pending-invite{display:flex;justify-content:space-between;gap:10px;padding:9px 0;color:#4b5563}.pending-invite span{color:#b45309}.invite-link-box{margin-top:14px;padding:12px;border-radius:12px;background:#f8faf7}.invite-link-box label{font-weight:700;font-size:.85rem}.copy-row{display:flex;gap:8px;margin-top:7px}.copy-row input{min-width:0;flex:1}.btn-small{padding:9px 12px}.list-family-badge{display:inline-flex;margin-top:7px;padding:5px 9px;border-radius:999px;background:#eefbf2;color:#166534;font-size:.82rem;font-weight:700}
@media(max-width:650px){.page-head{flex-direction:column}.page-head .btn{width:100%}.family-grid{grid-template-columns:1fr}.family-card{padding:16px}.family-card-head{align-items:center}.copy-row{flex-direction:column}}


/* ============================================================
   ShopList SA v0.5.1 - Family UI / invitation refinements
   ============================================================ */
.family-page-back{margin-bottom:16px}
.family-card{overflow:hidden}
.family-card-head .btn-small{white-space:nowrap}
.family-members{min-height:42px}
.invite-link-box{border:1px solid #DCE8DF;background:#F7FBF8;padding:14px}
.invite-link-box>label{display:block;margin-bottom:8px;color:var(--text)}
.copy-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:stretch;margin-top:0}
.copy-row input{width:100%;min-width:0;border:1px solid #D1D5DB;border-radius:13px;padding:12px 14px;background:#fff;color:var(--text);outline:none}
.copy-row input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(21,128,61,.12)}
.copy-row .btn{min-height:46px}
.family-invite-page{padding:28px 18px}
.family-invite-page .auth-shell{width:min(100%,520px)}
.family-invite-page .auth-card{width:100%}
.invite-brand{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--text);margin-bottom:28px}
.invite-brand>img{width:72px;height:72px;flex:0 0 72px}
.invite-brand-copy{display:flex;flex-direction:column;min-width:0}
.invite-brand-copy strong{font-size:2rem;line-height:1;font-weight:900;letter-spacing:-.035em;white-space:nowrap}
.invite-brand-copy strong em{font-style:normal;color:var(--primary);margin-left:.16em}
.invite-brand-copy small{margin-top:5px;color:var(--muted);font-size:.82rem}
.family-invite-page #inviteActions{margin-top:18px}

@media(max-width:650px){
  .copy-row{grid-template-columns:1fr}
  .copy-row .btn{width:100%}
  .family-page-back{margin-bottom:10px}
  .invite-brand>img{width:58px;height:58px;flex-basis:58px}
  .invite-brand-copy strong{font-size:1.55rem}
}

/* v0.5.4 - Family invitation success state */
.invite-success-state{display:flex;align-items:flex-start;gap:14px;margin-top:6px;padding:16px;border:1px solid #bbf7d0;border-radius:14px;background:#f0fdf4}
.invite-success-state.hidden{display:none}
.invite-success-icon{width:40px;height:40px;flex:0 0 40px;border-radius:50%;display:grid;place-items:center;background:#15803d;color:#fff;font-size:1.35rem;font-weight:900}
.invite-success-state h3{margin:1px 0 5px;color:#166534}
.invite-success-state p{margin:0 0 4px;color:#374151;line-height:1.45}
.invite-success-state .small{color:#6b7280}

/* ============================================================
   ShopList SA v0.6.0 - Recipes
   ============================================================ */
.recipe-page,.recipe-detail-page{padding-bottom:100px}.recipe-list-head{margin-top:14px}.recipe-list-head p{margin:4px 0 0;color:var(--muted)}.recipe-count{margin:14px 2px}.recipes-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.recipe-card{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:14px;align-items:center;padding:18px;text-decoration:none;color:var(--text)}.recipe-card:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.recipe-card-icon{width:56px;height:56px;border-radius:17px;display:grid;place-items:center;background:#FFF4D6;color:#B36B00;font-size:1.45rem}.recipe-card-copy{min-width:0}.recipe-card-title{display:flex;align-items:center;gap:8px;min-width:0}.recipe-card-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recipe-card-copy p{margin:6px 0;color:var(--muted);font-size:.88rem;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.recipe-card-meta{font-size:.8rem;color:#4B5563}.recipe-card-scope{font-size:.78rem;color:var(--primary);font-weight:700;margin-top:5px}.recipe-fav-tag{font-size:.68rem;background:#FFF4D6;color:#8A5A00;padding:4px 7px;border-radius:999px;font-weight:800;white-space:nowrap}.recipe-view-actions{display:flex;gap:8px}.recipe-view-actions .is-active{background:#FFF4D6;color:#8A5A00;border-color:#F5D589}
.recipe-hero{padding:8px 0 20px}.recipe-hero h1{margin:4px 0 8px}.recipe-hero p{margin:0;color:var(--muted);max-width:720px;font-size:1rem;line-height:1.55}.recipe-meta-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.recipe-meta-pills span{padding:7px 10px;border-radius:999px;background:#F1F5F2;color:#374151;font-size:.8rem;font-weight:700}.recipe-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}.recipe-panel{padding:20px}.recipe-panel h2{margin:4px 0 14px}.recipe-panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.text-button{border:0;background:transparent;color:var(--primary);font-weight:800;cursor:pointer;padding:6px}.ingredient-checklist{display:flex;flex-direction:column;border-top:1px solid var(--border);margin-bottom:18px}.ingredient-check-row{display:grid;grid-template-columns:24px minmax(0,1fr);gap:11px;align-items:center;padding:13px 2px;border-bottom:1px solid var(--border);cursor:pointer}.ingredient-check-row input{width:20px;height:20px;accent-color:var(--primary)}.ingredient-check-copy strong,.ingredient-check-copy span{display:block}.ingredient-check-copy span{font-size:.78rem;color:var(--muted);margin-top:3px}.btn-wide{width:100%}.recipe-instructions{line-height:1.65;color:#374151}.method-text{white-space:normal}
.recipe-editor{display:flex;flex-direction:column;gap:16px}.recipe-editor-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.recipe-editor-heading h1{margin:4px 0}.recipe-form-card{padding:20px}.recipe-form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.recipe-favourite-check{display:flex;align-items:center;gap:8px;margin-top:12px;font-weight:700;color:#8A5A00}.recipe-favourite-check input{width:18px;height:18px;accent-color:#D58A00}.recipe-help{margin:-4px 0 12px}.ingredient-editor{display:flex;flex-direction:column;gap:10px}.ingredient-edit-row{border:1px solid var(--border);border-radius:15px;padding:12px;background:#FBFCFB}.ingredient-main-fields{display:grid;grid-template-columns:minmax(0,2fr) 90px 110px;gap:8px}.ingredient-extra-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto 38px;gap:8px;align-items:center;margin-top:8px}.ingredient-edit-row input{width:100%;min-width:0;border:1px solid #D1D5DB;border-radius:11px;padding:10px 11px;background:#fff;color:var(--text);outline:none}.ingredient-edit-row input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(21,128,61,.1)}.optional-check{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--muted);white-space:nowrap}.optional-check input{width:16px;height:16px;accent-color:var(--primary)}.ingredient-remove{width:36px;height:36px;border:1px solid #F0D4D4;border-radius:10px;background:#FFF7F7;color:#B91C1C;font-size:1.2rem;cursor:pointer}.recipe-save-bar{display:flex;justify-content:space-between;gap:12px;position:sticky;bottom:78px;background:rgba(248,250,247,.94);backdrop-filter:blur(8px);padding:12px 0;z-index:5}
@media(max-width:820px){.recipes-grid{grid-template-columns:1fr}.recipe-layout{grid-template-columns:1fr}.recipe-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ingredient-main-fields{grid-template-columns:minmax(0,1fr) 80px 95px}.ingredient-extra-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto 38px}}
@media(max-width:600px){.recipe-list-head{flex-direction:column}.recipe-list-head .btn{width:100%}.recipe-card{grid-template-columns:48px minmax(0,1fr) auto;padding:14px}.recipe-card-icon{width:46px;height:46px}.recipe-view-actions{width:100%}.recipe-view-actions .btn{flex:1}.list-toolbar{align-items:flex-start;flex-direction:column}.recipe-panel,.recipe-form-card{padding:16px}.recipe-form-grid{grid-template-columns:1fr 1fr}.ingredient-main-fields{grid-template-columns:minmax(0,1fr) 70px 80px}.ingredient-extra-fields{grid-template-columns:1fr 38px}.ingredient-extra-fields>div,.ingredient-extra-fields .ing-notes{grid-column:1/-1}.optional-check{grid-column:1}.ingredient-remove{grid-column:2;grid-row:3}.recipe-save-bar{bottom:70px}.recipe-save-bar .btn{flex:1}.recipe-editor-heading{flex-direction:column}.recipe-editor-heading .btn{width:100%}}


/* ============================================================
   ShopList SA v0.6.1 - Recipe/list UX refinements
   ============================================================ */
.ingredient-edit-row{position:relative}
.ingredient-category-wrap{min-width:0}
.ingredient-category-wrap .category-picker{width:100%}
.ingredient-category-wrap .category-menu{z-index:90}
.ingredient-category-wrap .category-suggestion-hint{min-height:18px;margin-top:4px}
.recipe-help{line-height:1.45}
.recipe-card-scope,.list-card-type{line-height:1.45}
#shoppingListWarning{margin:2px 0 4px}
#finishNoProgressWarning strong{color:#92400E}


/* ============================================================
   ShopList SA v0.6.2 - Recipe editor + mobile viewport polish
   ============================================================ */

/* Keep every major layout container inside the viewport. */
html, body { width:100%; max-width:100%; overflow-x:hidden; }
.app-shell, .page, .section, .lists-grid, .list-status-group, .list-status-cards { min-width:0; max-width:100%; }

/* Recipe save actions belong to the normal document flow. A sticky bar covered
   ingredient rows on shorter desktop/mobile viewports. */
.recipe-save-bar {
  position:static;
  bottom:auto;
  z-index:auto;
  background:transparent;
  backdrop-filter:none;
  padding:2px 0 0;
  margin-top:2px;
}

/* Recipe ingredient secondary row: category + note align to the same control
   height and start position. */
.ingredient-extra-fields {
  align-items:start;
}
.ingredient-extra-fields .category-picker > input[type="search"],
.ingredient-extra-fields .ing-notes {
  min-height:44px;
  height:44px;
}
.optional-check { min-height:44px; align-items:center; }
.ingredient-remove { margin-top:4px; }

/* Modern chevron for every searchable category picker. */
.category-picker::after {
  content:'';
  width:7px;
  height:7px;
  right:16px;
  top:50%;
  margin-top:-5px;
  border-right:2px solid #64748B;
  border-bottom:2px solid #64748B;
  transform:rotate(45deg);
  transform-origin:center;
  pointer-events:none;
  font-size:0;
  transition:transform .16s ease, margin-top .16s ease;
}
.category-picker.is-open::after {
  transform:rotate(225deg);
  margin-top:-1px;
}
.category-picker.compact::after { top:50%; }

/* Mobile favourites stay a real horizontal carousel without causing the whole
   document to become horizontally scrollable. */
.favourite-row {
  width:100%;
  max-width:100%;
  min-width:0;
  overflow-x:auto;
  overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;
  scrollbar-width:none;
}
.favourite-row::-webkit-scrollbar { display:none; }
.favourite-card { flex:0 0 auto; scroll-snap-align:start; }

@media(max-width:760px) {
  .page { width:100%; max-width:100vw; overflow-x:hidden; }
  .section-head { min-width:0; }
  .list-status-cards, .list-card { width:100%; max-width:100%; min-width:0; }
  .list-card { padding:14px 12px; gap:10px; }
  .list-card-arrow { flex:0 0 auto; }
  .list-card-type, .list-card-meta { overflow-wrap:anywhere; }
  .favourite-row { padding-right:16px; }
  .favourite-card { min-width:0; width:min(78vw,260px); }

  .ingredient-extra-fields {
    grid-template-columns:minmax(0,1fr) 38px;
  }
  .ingredient-extra-fields .ingredient-category-wrap,
  .ingredient-extra-fields .ing-notes {
    grid-column:1 / -1;
  }
  .ingredient-extra-fields .optional-check { grid-column:1; }
  .ingredient-extra-fields .ingredient-remove { grid-column:2; grid-row:3; }
  .recipe-save-bar { bottom:auto; }
}


/* ============================================================
   ShopList SA v0.7.0 - Shopping history + repeat lists
   ============================================================ */
.section-actions{display:flex;align-items:center;gap:14px}.history-page{padding-bottom:100px}.history-search{margin:18px 0 12px}.history-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.history-toolbar select{border:1px solid var(--border);border-radius:11px;background:#fff;color:var(--text);padding:9px 34px 9px 12px}.history-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.history-card{padding:0;overflow:hidden}.history-card-main{display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:12px;align-items:center;padding:16px;text-decoration:none;color:var(--text)}.history-card-main:hover{background:#FBFCFB}.history-icon{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:#DCFCE7;color:#15803D;font-weight:900;font-size:1.15rem}.history-copy{min-width:0}.history-title-row{display:flex;align-items:center;gap:8px;min-width:0}.history-title-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-meta{font-size:.82rem;color:#4B5563;margin-top:5px}.history-submeta{font-size:.76rem;color:var(--muted);margin-top:5px;line-height:1.45}.history-repeat{margin:0 16px 16px;width:calc(100% - 32px)}.status-pill.completed{background:#DCFCE7;color:#166534}.completed-banner-copy{min-width:0}.completed-banner-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.repeat-card{max-width:720px}.repeat-scope-note{padding:11px 13px;border-radius:12px;background:#F1F5F2;color:#475569;font-size:.86rem;margin-bottom:12px}.repeat-select-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:6px 0 10px}.repeat-select-head>div:last-child{display:flex;gap:4px}.repeat-items{display:flex;flex-direction:column;gap:8px;max-height:min(52vh,480px);overflow:auto;padding-right:3px}.repeat-item-row{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px;border:1px solid var(--border);border-radius:13px;background:#FBFCFB}.repeat-item-row>input{width:18px;height:18px;accent-color:var(--primary)}.repeat-item-copy{min-width:0}.repeat-item-copy strong,.repeat-item-copy small{display:block}.repeat-item-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repeat-item-copy small{font-size:.74rem;color:var(--muted);margin-top:3px}.repeat-qty{display:grid;grid-template-columns:34px 58px 34px;gap:4px;align-items:center}.repeat-qty button{width:34px;height:34px;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--primary);font-size:1.05rem;font-weight:800}.repeat-qty input{width:58px;height:34px;border:1px solid var(--border);border-radius:9px;text-align:center;background:#fff;color:var(--text);padding:4px}
@media(max-width:760px){.history-grid{grid-template-columns:1fr}.history-toolbar{align-items:stretch;flex-direction:column}.history-toolbar select{width:100%}.history-card-main{grid-template-columns:42px minmax(0,1fr) auto;padding:14px}.repeat-item-row{grid-template-columns:20px minmax(0,1fr);align-items:start}.repeat-qty{grid-column:2;margin-top:7px;justify-content:start}.repeat-select-head{align-items:flex-start;flex-direction:column}.completed-banner-actions .btn{flex:1}.section-actions{gap:10px}}


/* v0.7.2 Home dashboard */
.dashboard-heading{justify-content:flex-start}.dashboard-heading>div{display:flex;align-items:center;gap:9px}.dashboard-heading .eyebrow{margin:0;font-size:.68rem}.dashboard-priority-group{padding:14px;border:1px solid #CDEDD7;border-radius:18px;background:#F4FCF6}.dashboard-priority-group .list-status-heading{margin-top:0}.dashboard-shopping-card{border-color:#CDEDD7;background:#fff}.dashboard-continue{margin-top:7px;color:var(--primary);font-size:.78rem;font-weight:900}.dashboard-list-footer{display:flex;justify-content:flex-end;padding-top:12px}.dashboard-view-all{padding:7px 2px}.list-status-active+.list-status-group{margin-top:0}
@media(max-width:760px){.dashboard-priority-group{padding:11px}.dashboard-list-footer{justify-content:stretch}.dashboard-view-all{width:100%;text-align:center;padding:10px}.dashboard-heading>div{align-items:flex-start;flex-direction:column;gap:2px}}

/* v0.8 offline shopping -------------------------------------------------- */
.offline-banner{display:flex;align-items:center;gap:12px;margin:0 0 18px;padding:12px 14px;border:1px solid #F59E0B;background:#FFF7E6;border-radius:14px;color:#78350F}.offline-banner>span:first-child{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#FFEDD5;font-size:18px}.offline-banner div{display:flex;flex-direction:column;gap:2px;min-width:0}.offline-banner strong{font-size:14px}.offline-banner small{font-size:12px;line-height:1.35;color:#92400E}.offline-queue-count{margin-left:auto;white-space:nowrap;font-size:12px;font-weight:800;background:#fff;border-radius:999px;padding:5px 8px}.offline-disabled{opacity:.55;pointer-events:none}.sync-success-toast{position:fixed;left:50%;bottom:88px;transform:translateX(-50%);z-index:1000;background:#166534;color:#fff;border-radius:999px;padding:10px 16px;font-weight:700;box-shadow:0 8px 30px rgba(0,0,0,.15)}
@media(max-width:640px){.offline-banner{margin:0 2px 14px}.offline-banner small{font-size:11px}.offline-queue-count{display:none}}

/* ============================================================
   ShopList SA v0.8.2 - Mobile Shopping Mode layout polish
   ============================================================ */
.shopping-mode-item{
  grid-template-columns:56px minmax(0,1fr) auto;
  grid-template-areas:"check main actions";
  align-items:center;
}
.shopping-mode-item>.shop-check{grid-area:check}
.shopping-mode-item>.shop-item-main{grid-area:main}
.shopping-mode-item>.shopping-item-actions{grid-area:actions}
.shopping-item-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0}
.shopping-item-actions .shopping-favourite{width:auto;height:40px;padding:0 10px;border:1px solid #E1E7E3;border-radius:12px;background:#fff;display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:800;color:#667168}
.shopping-item-actions .shopping-favourite:hover{background:#FFF9E9;color:#8A5A00;border-color:#F1D59A}
.shopping-item-actions .shopping-favourite.is-favourite{background:#FFF8E8;color:#B06F00;border-color:#F1D59A}
.shopping-action-icon{font-size:1.05rem;line-height:1}
.shopping-action-label{font-size:.72rem;line-height:1}
.shopping-item-actions .cant-find-btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;max-width:none;min-height:40px;padding:8px 11px}
.shopping-item-actions .cant-find-btn>span:first-child{display:none}
.shop-item-main{display:flex;align-items:center;gap:12px}
.shop-item-main .shop-item-body{min-width:0}
.shop-item-main .purchased-stepper{margin-top:0;flex:0 0 auto;flex-wrap:nowrap}
.purchased-stepper small{white-space:nowrap}

@media(max-width:760px){
  .shopping-mode-item{
    grid-template-columns:52px minmax(0,1fr);
    grid-template-areas:
      "check main"
      ". actions";
    align-items:start;
    gap:8px 10px;
    padding:13px 12px;
  }
  .shop-check{width:46px;height:46px;border-radius:14px;margin-top:2px}
  .shop-item-main{display:flex;flex-direction:column;align-items:stretch;gap:9px;min-width:0}
  .shop-item-body{padding:2px 0 0}
  .shop-item-name{font-size:1rem}
  .shop-item-sub{margin-top:2px;font-size:.78rem}
  .shop-item-main .purchased-stepper{
    width:100%;
    display:grid;
    grid-template-columns:auto 40px minmax(84px,1fr) auto 40px;
    align-items:center;
    gap:6px;
    margin:0;
  }
  .purchased-stepper .purchased-label{margin:0;white-space:nowrap;font-size:.72rem}
  .purchased-stepper button{width:40px;height:40px}
  .purchased-stepper strong{min-width:0;text-align:center;white-space:nowrap;font-size:.9rem}
  .purchased-stepper small{font-size:.72rem;min-width:max-content}
  .shopping-item-actions{justify-content:flex-start;gap:8px;padding-top:1px}
  .shopping-item-actions .shopping-favourite,.shopping-item-actions .cant-find-btn{min-height:36px;height:36px;padding:0 10px;border-radius:10px}
  .shopping-item-actions .cant-find-btn{padding:0 12px;font-size:.72rem}
}

@media(max-width:390px){
  .shopping-mode-item{grid-template-columns:48px minmax(0,1fr);padding:12px 9px;gap:7px 8px}
  .shop-check{width:44px;height:44px}
  .shop-item-main .purchased-stepper{grid-template-columns:auto 36px minmax(72px,1fr) auto 36px;gap:4px}
  .purchased-stepper button{width:36px;height:36px}
  .purchased-stepper strong{font-size:.84rem}
  .shopping-item-actions .shopping-favourite,.shopping-item-actions .cant-find-btn{padding-left:8px;padding-right:8px}
  .shopping-action-label{font-size:.68rem}
}

/* ============================================================
   ShopList SA v0.8.4 - Consistent section chevrons
   ============================================================ */
.shopping-result-toggle {
  grid-template-columns:minmax(0,1fr) auto 20px;
  gap:10px;
  padding-right:16px;
}
.shopping-result-toggle .section-chevron {
  display:block;
  width:8px;
  height:8px;
  box-sizing:border-box;
  justify-self:center;
  align-self:center;
  border-right:2px solid currentColor;
  border-bottom:2px solid currentColor;
  transform:rotate(45deg);
  transform-origin:center;
  transition:transform .16s ease;
  opacity:.82;
}
.shopping-result-toggle .section-chevron.is-open {
  transform:rotate(225deg);
}
@media(max-width:600px) {
  .shopping-result-toggle {
    grid-template-columns:minmax(0,1fr) auto 18px;
    gap:10px;
    padding:13px 14px;
  }
}


/* v0.9.4 Barcode scanning */
.item-name-scan-row,.manual-barcode-row{display:flex;gap:10px;align-items:center}
.item-name-scan-row input,.manual-barcode-row input{flex:1;min-width:0}
.barcode-inline-button{white-space:nowrap}
.barcode-field-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.7fr);gap:14px;align-items:end}
.barcode-lookup-status{font-size:.82rem;color:var(--muted);padding-bottom:12px;min-height:1.2em}
.barcode-lookup-status.success{color:var(--primary);font-weight:700}.barcode-lookup-status.error{color:#b42318}
.scan-from-list{margin-top:8px}
.barcode-card{width:min(560px,calc(100vw - 28px))}
.barcode-help{margin-top:-2px;margin-bottom:14px}
.barcode-camera-wrap{position:relative;background:#111827;border-radius:18px;overflow:hidden;aspect-ratio:4/3;margin-bottom:14px}
.barcode-camera-wrap video{width:100%;height:100%;object-fit:cover;display:block}
.barcode-camera-wrap.scanner-unavailable{display:none}
.barcode-scan-guide{position:absolute;left:10%;right:10%;top:34%;height:32%;border:2px solid rgba(255,255,255,.9);border-radius:12px;box-shadow:0 0 0 999px rgba(0,0,0,.18)}
@media(max-width:640px){.item-name-scan-row{align-items:stretch;flex-direction:column}.barcode-inline-button{width:100%}.barcode-field-row{grid-template-columns:1fr}.barcode-lookup-status{padding:0}.manual-barcode-row{align-items:stretch}.manual-barcode-row .btn{padding-inline:14px}.barcode-camera-wrap{aspect-ratio:3/4;max-height:52vh}}


/* ============================================================
   ShopList SA v0.9.2 - Product identification workflow
   ============================================================ */
.scan-product-btn,.completed-scan-btn{border:1px solid #D8E8DE;background:#F7FBF8;color:#166534;border-radius:10px;font-weight:800;cursor:pointer}
.scan-product-btn{display:inline-flex;align-items:center;gap:5px;min-height:36px;padding:0 10px;font-size:.72rem;white-space:nowrap}
.completed-scan-btn{padding:8px 10px;margin-right:8px;font-size:.75rem;white-space:nowrap}
.product-link-target,.product-link-recognised{display:flex;flex-direction:column;gap:4px;border-radius:14px;padding:12px 14px;margin-bottom:14px}
.product-link-target{background:#F8FAF7;border:1px solid #E5E7EB}.product-link-recognised{background:#EFFAF2;border:1px solid #CDEDD7;color:#166534}
.product-link-target span,.product-link-recognised span{font-size:.72rem;color:#6B7280;text-transform:uppercase;letter-spacing:.04em;font-weight:800}.product-link-recognised small{color:#4B6354}
@media(max-width:760px){.shopping-item-actions{flex-wrap:wrap}.scan-product-btn{order:2}.cant-find-btn{order:3}.completed-scan-btn{width:auto;max-width:130px;font-size:.7rem}}


/* ==========================================================
   ShopList SA v0.9.2 - Post-shopping barcode learning
   ========================================================== */
.completed-product-learning{display:grid;grid-template-columns:42px minmax(0,1fr);gap:13px;align-items:start;padding:16px 18px;margin:-8px 0 18px;background:#F7FBF8;border:1px solid #DCECE1}
.completed-product-learning-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:#E4F5E9;color:#166534;font-size:1.1rem;font-weight:900}
.completed-product-learning strong{display:block;color:#1F2937;margin:2px 0 3px}.completed-product-learning p{margin:0;color:#6B7280;font-size:.82rem;line-height:1.5}
.completed-item-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:10px;align-items:center;padding:13px 14px;min-height:78px}
.completed-item-status{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:#EEF2EF;color:#8A9690;font-weight:900}.completed-item-status.was-bought{background:#DCFCE7;color:#15803D}
.completed-item-main{min-width:0}.completed-item-main .item-name{display:block}.completed-item-main .item-sub{white-space:normal;line-height:1.35}.completed-item-qty{display:block;margin-top:5px;color:#667168;font-size:.75rem;font-weight:700}
.completed-scan-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:0 12px;margin:0;border:1px solid #CFE6D6;background:#F4FBF6;color:#166534;border-radius:11px;font-size:.76rem;font-weight:850;white-space:nowrap;cursor:pointer}
.completed-scan-btn:hover{background:#EAF7EE;border-color:#BBDAC4}
@media(max-width:760px){.completed-product-learning{grid-template-columns:36px minmax(0,1fr);padding:14px;margin-top:-6px}.completed-product-learning-icon{width:36px;height:36px}.completed-item-row{grid-template-columns:30px minmax(0,1fr);align-items:start;padding:13px 12px}.completed-scan-btn{grid-column:2;width:100%;margin-top:2px;min-height:38px}.completed-item-main .item-sub{font-size:.78rem}}


/* ============================================================
   ShopList SA v0.9.4 - Scanner permission guidance + feedback
   ============================================================ */
.barcode-permission-intro{
  display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:center;
  padding:12px 14px;margin:0 0 14px;border:1px solid #DCECE1;border-radius:14px;background:#F7FBF8;color:#33433A;
}
.barcode-permission-intro.hidden{display:none}
.permission-camera-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:#DCFCE7;color:#166534;font-weight:900;font-size:1.05rem}
.barcode-permission-intro strong{display:block;margin-bottom:3px;color:#1F2937}.barcode-permission-intro div > span{display:block;color:#667168;font-size:.8rem;line-height:1.45}
.barcode-permission-help{padding:13px 14px;margin:10px 0 12px;border-radius:14px;background:#FFF8E8;border:1px solid #F3D79B;color:#684F16}
.barcode-permission-help.hidden{display:none}.barcode-permission-help strong{display:block;margin-bottom:5px;color:#5B4210}.barcode-permission-help span{display:block;font-size:.8rem;line-height:1.5}
.barcode-retry{width:100%;margin:0 0 14px}.barcode-retry.hidden{display:none}
.barcode-camera-wrap{border:1px solid #243246}
.barcode-camera-wrap .barcode-live-label{display:none;position:absolute;left:12px;top:12px;padding:5px 9px;border-radius:999px;background:rgba(17,24,39,.72);color:#fff;font-size:.68rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;backdrop-filter:blur(4px)}
.barcode-camera-wrap.is-scanning .barcode-live-label{display:inline-flex;align-items:center;gap:5px}
.barcode-camera-wrap.is-scanning .barcode-live-label::before{content:"";width:7px;height:7px;border-radius:50%;background:#4ADE80;box-shadow:0 0 0 3px rgba(74,222,128,.18)}
.barcode-scan-guide{overflow:hidden}
.barcode-scan-line{display:none;position:absolute;left:5%;right:5%;height:2px;top:50%;background:rgba(74,222,128,.95);box-shadow:0 0 8px rgba(74,222,128,.8)}
.barcode-camera-wrap.is-scanning .barcode-scan-line{display:block;animation:barcodeScanSweep 1.8s ease-in-out infinite}
.barcode-camera-wrap.is-detected .barcode-scan-guide{border-color:#4ADE80;box-shadow:0 0 0 999px rgba(0,0,0,.22),0 0 0 3px rgba(74,222,128,.2)}
.barcode-camera-wrap.is-detected .barcode-scan-line{animation:none;top:50%}
@keyframes barcodeScanSweep{0%,100%{top:14%}50%{top:84%}}
@media (prefers-reduced-motion:reduce){.barcode-camera-wrap.is-scanning .barcode-scan-line{animation:none;top:50%}}
@media(max-width:640px){.barcode-permission-intro{grid-template-columns:36px minmax(0,1fr);padding:11px 12px}.permission-camera-icon{width:36px;height:36px}}


/* ShopList SA v0.9.6 - scanner diagnostics */
.barcode-diagnostics{margin-top:10px;padding:10px 12px;border:1px solid #d9e2dc;border-radius:12px;background:#f7faf8;color:#34403a}
.barcode-diagnostics-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.barcode-diagnostics-head strong{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:#66756c}
.barcode-diagnostics pre{margin:0;max-height:190px;overflow:auto;white-space:pre-wrap;word-break:break-word;font:11px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#405049}
@media(max-width:600px){.barcode-diagnostics pre{max-height:150px;font-size:10px}}

/* v0.9.7 barcode scanner troubleshooting */
.barcode-troubleshoot-button{align-self:flex-start;margin-top:-2px;font-size:.78rem;color:var(--muted);}

/* ============================================================
   ShopList SA v0.9.16 - List actions + navigation polish
   ============================================================ */
.item-delete{
  width:38px;height:38px;flex:0 0 38px;border:0;border-radius:11px;background:transparent;
  color:#B42318;display:grid;place-items:center;cursor:pointer;transition:background .15s ease,color .15s ease;
}
.item-delete svg{width:19px;height:19px;fill:currentColor;display:block}
.item-delete:hover,.item-delete:focus-visible{background:#FFF0EE;color:#8F1D14;outline:none}
.item-delete:active{transform:scale(.96)}
@media(max-width:760px){
  .shopping-item .item-delete{width:36px;height:36px;flex-basis:36px}
  .shopping-item .item-more{display:none}
}

/* v1.0 subscription foundation */
.subscription-top-link{font-weight:800;color:#15803d;text-decoration:none;font-size:.88rem;padding:.45rem .65rem;border-radius:999px;background:#ecfdf3}
.subscription-required-card{max-width:540px}.subscription-price{display:flex;align-items:baseline;gap:.35rem;margin:.25rem 0 1rem}.subscription-price strong{font-size:2.35rem;color:#15803d}.subscription-price span{color:#667085;font-weight:700}.subscription-family-note{display:flex;gap:.8rem;padding:1rem;border-radius:16px;background:#f3faf5;margin:1rem 0}.subscription-family-note>span{font-size:1.4rem}.subscription-family-note p{margin:.25rem 0 0;color:#667085}.subscription-page{max-width:860px}.subscription-plan-card{padding:1.5rem}.subscription-plan-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.subscription-plan-head h2{margin:.25rem 0;font-size:2rem}.subscription-plan-head h2 span{font-size:1rem;color:#667085;font-weight:700}.subscription-benefits{display:grid;gap:.65rem;margin:1.3rem 0;font-weight:700}.subscription-details{padding:.9rem 1rem;border-radius:14px;background:#f8faf7}.subscription-payment-note{display:flex;flex-direction:column;gap:.35rem;margin-top:1rem;padding:1rem;border:1px solid #fde7a8;background:#fffaf0;border-radius:14px}.subscription-payment-note span{color:#667085;line-height:1.5}.subscription-readonly-banner,.subscription-readonly-note{border:1px solid #f3d28b;background:#fff8e8;color:#6f551c;border-radius:14px;padding:.85rem 1rem}.subscription-readonly-banner{display:flex;gap:.55rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}.subscription-readonly-banner strong{color:#8a6400}.subscription-readonly-banner a{margin-left:auto;color:#15803d;font-weight:800}.subscription-readonly-note{margin:.75rem 0}.read-only-item-row{opacity:.82}
@media(max-width:640px){.subscription-top-link{display:inline-flex;align-items:center;padding:.4rem .55rem;font-size:.78rem}.subscription-plan-head{flex-direction:column}.subscription-readonly-banner a{margin-left:0;width:100%}}

/* v1.0.1 password recovery & account security */
.auth-password-help{display:flex;justify-content:flex-end;margin:-4px 0 12px}.auth-password-help a{color:var(--primary);font-size:.86rem;font-weight:800;text-decoration:none}.auth-password-help a:hover{text-decoration:underline}.account-page{max-width:760px}.security-card{padding:1.4rem}.security-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.security-card-head h2{margin:.2rem 0}.security-icon{width:46px;height:46px;display:grid;place-items:center;border-radius:14px;background:#ecfdf3;font-size:1.35rem}.security-form{display:grid;gap:.15rem;margin-top:1rem}.security-form .btn{justify-self:start;margin-top:.4rem}.security-info-card{display:grid;gap:.55rem;margin-top:1rem;color:#475569}.security-info-card strong{color:var(--text);font-size:1rem}.subscription-account-action{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1rem;padding:1rem;border:1px solid var(--border);border-radius:14px;background:#fbfcfb}.subscription-account-action>div{display:flex;flex-direction:column;gap:.2rem}.subscription-account-action span{color:#667085;font-size:.86rem}.status a{color:inherit;font-weight:800}.auth-card .field-help{margin-top:6px}
@media(max-width:640px){.subscription-account-action{align-items:stretch;flex-direction:column}.subscription-account-action .btn{width:100%}.security-form .btn{width:100%;justify-self:stretch}}

/* v1.1.0 payment checkout */
.subscription-checkout{display:flex;flex-direction:column;gap:8px;margin-top:16px;align-items:flex-start}.subscription-checkout[hidden]{display:none!important}.payment-return-card{max-width:620px;margin:36px auto;text-align:center}.payment-return-card .btn{margin-top:18px}.payment-spinner{width:34px;height:34px;border:4px solid rgba(21,128,61,.15);border-top-color:currentColor;border-radius:50%;margin:22px auto;animation:slsa-spin .8s linear infinite}@keyframes slsa-spin{to{transform:rotate(360deg)}}

/* v1.2.0 subscription management */
.subscription-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}.subscription-metrics>div{display:flex;flex-direction:column;gap:5px;padding:14px;border:1px solid var(--border);border-radius:14px;background:#fbfcfb}.subscription-metrics span{font-size:.76rem;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.035em}.subscription-metrics strong{font-size:1rem}.subscription-consent{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;align-items:start;max-width:650px;padding:13px 14px;border:1px solid #d8e7dc;background:#f7fbf8;border-radius:14px;line-height:1.45;color:#475569}.subscription-consent input{width:18px;height:18px;margin-top:2px;accent-color:var(--primary)}.subscription-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.btn-danger,.btn-danger-ghost{border-radius:12px;font-weight:800;cursor:pointer}.btn-danger{border:1px solid #b42318;background:#b42318;color:#fff;padding:11px 15px}.btn-danger-ghost{border:1px solid #f1b6b1;background:#fff;color:#a61b12;padding:11px 15px}.subscription-consent-evidence{margin-top:10px}.subscription-history-card{margin-top:18px;padding:1.4rem}.payment-history{display:flex;flex-direction:column;margin-top:10px}.payment-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--border)}.payment-row:last-child{border-bottom:0}.payment-row-main,.payment-row-side{display:flex;flex-direction:column;gap:3px}.payment-row-main span,.payment-secondary{font-size:.78rem;color:var(--muted)}.payment-row-side{align-items:flex-end}.payment-status{font-size:.74rem;font-weight:900;padding:4px 8px;border-radius:999px;text-transform:capitalize}.payment-status.paid{color:#166534;background:#dcfce7}.payment-status.failed{color:#991b1b;background:#fee2e2}.subscription-empty{padding:16px 0;color:var(--muted)}.subscription-status-success{background:#dcfce7!important;color:#166534!important}.subscription-status-warning{background:#fff3cd!important;color:#7a5810!important}.subscription-status-cancelled{background:#f1f5f9!important;color:#475569!important}.subscription-status-pending{background:#eef2ff!important;color:#4338ca!important}.subscription-status-neutral{background:#f1f5f9!important;color:#64748b!important}.cancel-subscription-card{max-width:560px}
@media(max-width:640px){.subscription-metrics{grid-template-columns:1fr}.subscription-actions{flex-direction:column}.subscription-actions .btn{width:100%}.payment-row{align-items:flex-start}.payment-row-side{align-items:flex-end}}

/* v1.2.1 subscription polish */
.payment-status.abandoned {
  background: #f1f5f9;
  color: #64748b;
}

/* v1.2.2: HTML hidden must win over component display rules. */
[hidden]{display:none!important}

/* v1.2.3 - household sponsorship linking */
.household-sponsor-panel{
  margin:18px 0;
  padding:18px;
  border:1px solid #cfe8d7;
  border-radius:18px;
  background:#f4fbf6;
}
.household-sponsor-panel h3{margin:4px 0 6px;font-size:1.05rem}
.household-sponsor-choices{display:grid;gap:10px;margin:14px 0 10px}
.household-sponsor-choice{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 16px;border:1px solid #d9e1dd;border-radius:14px;background:#fff;
  color:inherit;text-align:left;cursor:pointer;font:inherit
}
.household-sponsor-choice:hover{border-color:#15803d;box-shadow:0 4px 14px rgba(21,128,61,.08)}
.household-sponsor-choice:disabled{opacity:.65;cursor:wait}
.household-sponsor-choice span:first-child{display:grid;gap:3px}
.household-sponsor-choice small{color:#667085;font-weight:500}
.household-sponsor-action{color:#15803d;font-weight:800;white-space:nowrap}
.household-sponsor-empty{display:grid;gap:8px;padding:14px;border-radius:14px;background:#fff;border:1px solid #e4e7ec}
.household-sponsor-empty .btn{justify-self:start}
@media (max-width:640px){
  .household-sponsor-choice{align-items:flex-start;flex-direction:column;gap:8px}
  .household-sponsor-action{white-space:normal}
}

/* v1.2.4 household-member subscription visibility */
@media(max-width:640px){.user-tools{gap:8px}.subscription-top-link{white-space:nowrap}}

/* v1.3.0 Admin & Revenue Dashboard */
.admin-top-link{font-weight:800;color:#0f5f2f;text-decoration:none;font-size:.88rem;padding:.45rem .65rem;border-radius:999px;background:#dcfce7}
.admin-page{max-width:1180px}.admin-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:10px 0 24px}.admin-hero h1{margin:.2rem 0;font-size:clamp(2.2rem,5vw,3.4rem)}.admin-hero p{margin:.35rem 0 0;color:var(--muted)}
.admin-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0}.admin-kpi{padding:18px;display:grid;gap:5px}.admin-kpi>span{font-size:.75rem;color:var(--muted);font-weight:900;text-transform:uppercase;letter-spacing:.04em}.admin-kpi>strong{font-size:1.7rem;line-height:1.15}.admin-kpi>small{color:var(--muted);line-height:1.35}
.admin-grid-two{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:16px;margin:16px 0}.admin-panel{padding:20px}.compact-head{margin-bottom:12px}.compact-head h2{margin:.15rem 0;font-size:1.35rem}
.revenue-trend{display:grid;gap:14px}.revenue-month{display:grid;grid-template-columns:minmax(125px,1fr) minmax(160px,2fr) auto;gap:12px;align-items:center}.revenue-month-label{display:grid;gap:2px}.revenue-month-label span,.revenue-count{font-size:.75rem;color:var(--muted)}.revenue-bar-track{height:12px;border-radius:999px;background:#eef2ef;overflow:hidden}.revenue-bar{height:100%;border-radius:inherit;background:#15803d;min-width:3px}
.admin-health-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.admin-health-grid>div{display:grid;gap:3px;padding:13px;border:1px solid var(--border);border-radius:13px;background:#fbfcfb}.admin-health-grid span{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:900}.admin-health-grid strong{font-size:1.35rem}.admin-health-grid small{color:var(--muted)}
.admin-table-wrap{overflow:auto}.admin-table{width:100%;border-collapse:collapse;min-width:780px}.admin-table th{text-align:left;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;padding:10px 12px;border-bottom:1px solid var(--border)}.admin-table td{padding:13px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.admin-table td:first-child{display:grid;gap:2px}.admin-table td small{color:var(--muted)}.admin-table tr:last-child td{border-bottom:0}.admin-empty-cell{text-align:center;color:var(--muted)!important;padding:28px!important}
.admin-badge{display:inline-flex;align-items:center;width:max-content;padding:4px 8px;border-radius:999px;font-size:.7rem;font-weight:900;text-transform:capitalize;background:#f1f5f9;color:#475569}.admin-badge.active,.admin-badge.paid{background:#dcfce7;color:#166534}.admin-badge.cancelled,.admin-badge.abandoned{background:#f1f5f9;color:#475569}.admin-badge.pending{background:#eef2ff;color:#4338ca}.admin-badge.past_due,.admin-badge.failed,.admin-badge.rejected,.admin-badge.exception{background:#fee2e2;color:#991b1b}
.admin-sub-list,.admin-issue-list{display:grid}.admin-sub-row{display:flex;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--border)}.admin-sub-row:last-child{border-bottom:0}.admin-sub-row>div{display:grid;gap:3px}.admin-sub-row>div:last-child{justify-items:end}.admin-sub-row span,.admin-sub-row small,.admin-issue span{font-size:.76rem;color:var(--muted)}.admin-issue{display:grid;gap:5px;padding:12px 0;border-bottom:1px solid var(--border)}.admin-issue:last-child{border-bottom:0}.admin-good-state{padding:18px;border-radius:14px;background:#f0fdf4;color:#166534;font-weight:800}
@media(max-width:980px){.admin-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-grid-two{grid-template-columns:1fr}}
@media(max-width:640px){.admin-top-link{padding:.4rem .52rem;font-size:.76rem}.admin-hero{align-items:stretch;flex-direction:column}.admin-hero .btn{width:100%}.admin-kpis{grid-template-columns:1fr 1fr;gap:10px}.admin-kpi{padding:14px}.admin-kpi>strong{font-size:1.35rem}.revenue-month{grid-template-columns:1fr}.revenue-count{justify-self:start}.admin-health-grid{grid-template-columns:1fr 1fr}.admin-panel{padding:15px}}
@media(max-width:430px){.admin-kpis,.admin-health-grid{grid-template-columns:1fr}.admin-top-link{padding:.35rem .45rem;font-size:.72rem}}

/* v1.4 legal & launch readiness */
.legal-consent-box,.subscription-consent{display:flex;align-items:flex-start;gap:10px;padding:13px 14px;border:1px solid #d7e7dc;border-radius:14px;background:#f7fcf8;margin:12px 0;font-size:.9rem;line-height:1.45}.legal-consent-box input,.subscription-consent input{width:18px;height:18px;flex:0 0 auto;margin-top:2px}.legal-consent-box a,.subscription-consent a,.legal-document a{color:#15803d;font-weight:800}.legal-site-footer{margin-top:34px;padding:20px 18px calc(20px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:#fff;color:#64748b;font-size:.78rem}.legal-site-footer-inner{max-width:1120px;margin:auto;display:flex;justify-content:space-between;gap:16px;align-items:center}.legal-site-footer nav{display:flex;flex-wrap:wrap;gap:14px}.legal-site-footer a{color:#475569;font-weight:700;text-decoration:none}.legal-shell{max-width:900px;margin:0 auto;padding:36px 20px 60px}.legal-document{padding:28px}.legal-document h1{margin:.2rem 0 .5rem}.legal-document h2{margin:1.8rem 0 .55rem;font-size:1.18rem}.legal-document p,.legal-document li{line-height:1.65;color:#475569}.legal-document .legal-meta{padding:12px 14px;border-radius:12px;background:#f5f8f5;color:#64748b;font-size:.85rem}.legal-warning{padding:14px;border:1px solid #f0cf7a;border-radius:14px;background:#fffaf0;margin:18px 0;color:#6b5320}.legal-links-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:20px}.legal-links-grid a{padding:14px;border:1px solid var(--border);border-radius:14px;text-decoration:none;background:#fff}.legal-contact-table{display:grid;grid-template-columns:180px 1fr;gap:8px 16px;margin:16px 0}.legal-contact-table div:nth-child(odd){font-weight:800;color:#334155}
@media(max-width:640px){.legal-site-footer-inner{flex-direction:column;align-items:flex-start}.legal-shell{padding:20px 12px 45px}.legal-document{padding:20px 16px}.legal-links-grid{grid-template-columns:1fr}.legal-contact-table{grid-template-columns:1fr;gap:2px}.legal-contact-table div:nth-child(even){margin-bottom:9px}}


/* v1.4.5 checkout validation */
.checkout-validation-error{
  width:100%;
  box-sizing:border-box;
  margin-top:4px;
  padding:12px 14px;
  border:1px solid #ef4444;
  border-radius:12px;
  background:#fef2f2;
  color:#b42318;
  font-weight:800;
  line-height:1.45;
}
.subscription-consent-error{
  border-color:#ef4444!important;
  background:#fff5f5!important;
  box-shadow:0 0 0 2px rgba(239,68,68,.10);
}
.subscription-consent-error input[type=checkbox]{
  outline:2px solid #ef4444;
  outline-offset:2px;
}
\n\n/* v1.4.7 failed checkout recovery */\n.pending-checkout-recovery{\n  display:grid;gap:12px;margin:18px 0;padding:16px 18px;\n  border:1px solid #f2c66d;border-radius:16px;background:#fffaf0;\n}\n.pending-checkout-recovery h3{margin:4px 0 4px;font-size:1.05rem}\n.pending-checkout-recovery .btn{justify-self:start}\n.pending-checkout-recovery[hidden]{display:none!important}\n
/* v1.4.8 cancellation processing UX */
.cancel-processing{display:flex;align-items:center;gap:12px;padding:13px 14px;margin-top:12px;border:1px solid #bfdbfe;background:#eff6ff;border-radius:14px;color:#1e3a5f}.cancel-processing[hidden]{display:none!important}.cancel-processing>span:last-child{display:flex;flex-direction:column;gap:2px}.cancel-processing small{color:#64748b}.cancel-spinner,.button-spinner{display:inline-block;border-radius:50%;border:3px solid rgba(255,255,255,.45);border-top-color:currentColor;animation:slsa-spin .8s linear infinite}.cancel-spinner{width:24px;height:24px;color:#15803d;border-color:rgba(21,128,61,.18);border-top-color:#15803d;flex:0 0 auto}.button-spinner{width:15px;height:15px;vertical-align:-2px;margin-right:6px}.cancel-success-mark{display:grid!important;place-items:center;width:26px;height:26px;flex:0 0 26px;border-radius:50%;background:#dcfce7;color:#166534;font-weight:900}.cancel-subscription-card button:disabled{cursor:wait;opacity:.7}


/* ============================================================
   v1.4.11 Public landing page + PWA install experience
   ============================================================ */
.landing-page{background:#f8faf7;color:#10233f;min-height:100vh}
.landing-header{position:sticky;top:0;z-index:30;background:rgba(248,250,247,.94);backdrop-filter:blur(16px);border-bottom:1px solid #e4e9e3}
.landing-header-inner{max-width:1180px;margin:0 auto;padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.landing-brand{display:flex;align-items:center;gap:12px;color:#10233f;text-decoration:none;font-size:22px;font-weight:800}
.landing-brand img{width:44px;height:44px;border-radius:12px}
.landing-brand strong{color:#15803d}
.landing-nav{display:flex;align-items:center;gap:26px}
.landing-nav a{color:#536176;text-decoration:none;font-weight:700;font-size:14px}
.landing-nav a:hover{color:#15803d}
.landing-nav .landing-signin{border:1px solid #dfe6df;background:#fff;color:#10233f;padding:10px 16px;border-radius:14px}
.landing-hero{overflow:hidden;background:radial-gradient(circle at 82% 20%,rgba(22,163,74,.13),transparent 31%),linear-gradient(180deg,#fbfcfa 0,#f3f8f2 100%)}
.landing-hero-inner{max-width:1180px;margin:0 auto;padding:76px 24px 84px;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.75fr);gap:80px;align-items:center}
.landing-hero-copy h1{font-size:clamp(44px,5.7vw,72px);line-height:.98;letter-spacing:-2.8px;margin:16px 0 24px;max-width:760px}
.landing-lead{font-size:20px;line-height:1.65;color:#5f6d7e;max-width:700px;margin:0 0 30px}
.landing-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.landing-actions .btn{min-height:52px;padding:0 22px;border-radius:15px;font-size:16px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.landing-start-button{background:#fff}
.landing-install-note{margin-top:13px;color:#637084;font-size:13px}
.landing-trust-row{margin-top:28px;display:flex;flex-wrap:wrap;gap:10px 22px;color:#3e5549;font-size:14px;font-weight:700}
.landing-phone-wrap{display:flex;justify-content:center}
.landing-phone{width:340px;background:#fff;border:9px solid #162033;border-radius:38px;padding:17px 16px 24px;box-shadow:0 32px 70px rgba(16,35,63,.22);transform:rotate(2deg)}
.landing-phone-top{display:flex;justify-content:space-between;font-size:12px;padding:0 5px 18px}
.landing-phone-greeting{display:flex;flex-direction:column;gap:5px;padding:8px 5px 18px}
.landing-phone-greeting small{color:#15803d;font-size:9px;font-weight:900;letter-spacing:.08em}
.landing-phone-greeting strong{font-size:24px}
.landing-phone-greeting span{font-size:12px;color:#788397}
.landing-phone-search{border:1px solid #e5e8eb;border-radius:14px;padding:12px;color:#8a93a0;font-size:11px}
.landing-phone-quick{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:14px 0 18px}
.landing-phone-quick div{border:1px solid #e7ebe7;border-radius:13px;padding:9px 3px;text-align:center}
.landing-phone-quick b{display:block;color:#15803d;font-size:19px;margin-bottom:3px}
.landing-phone-quick span{font-size:8px;font-weight:800}
.landing-phone-heading{display:flex;justify-content:space-between;align-items:end;margin:0 3px 9px}
.landing-phone-heading strong{font-size:15px}.landing-phone-heading span{font-size:9px;color:#788397}
.landing-phone-card{display:grid;grid-template-columns:38px 1fr 12px;gap:9px;align-items:center;border:1px solid #e4e8e5;border-radius:15px;padding:11px;margin-top:8px;box-shadow:0 8px 18px rgba(16,35,63,.05)}
.landing-phone-card i{width:36px;height:36px;border-radius:10px;background:#ecf8ef;display:grid;place-items:center;font-style:normal}
.landing-phone-card div{min-width:0;display:flex;flex-direction:column;gap:2px}
.landing-phone-card b{font-size:11px}.landing-phone-card span{font-size:9px;color:#778397}.landing-phone-card em{font-size:8px;color:#15803d;font-style:normal;font-weight:800}
.landing-section{max-width:1180px;margin:0 auto;padding:86px 24px}
.landing-section-head{max-width:760px;margin:0 auto 44px;text-align:center}
.landing-section-head h2,.landing-price-card h2,.landing-final-cta h2{font-size:clamp(31px,4vw,48px);letter-spacing:-1.3px;line-height:1.08;margin:12px 0 16px}
.landing-section-head p,.landing-price-card p,.landing-final-cta p{color:#667487;line-height:1.65;font-size:17px}
.landing-feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.landing-feature{background:#fff;border:1px solid #e2e8e2;border-radius:22px;padding:28px;box-shadow:0 14px 35px rgba(16,35,63,.05)}
.landing-feature-icon{width:48px;height:48px;border-radius:15px;background:#eef8f0;display:grid;place-items:center;font-size:23px;margin-bottom:18px}
.landing-feature h3{font-size:19px;margin:0 0 8px}
.landing-feature p{margin:0;color:#687589;line-height:1.6;font-size:14px}
.landing-how{padding-top:42px}
.landing-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.landing-steps article{display:flex;gap:16px;padding:24px}
.landing-steps article>span{flex:0 0 42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#15803d;color:#fff;font-weight:900}
.landing-steps h3{margin:3px 0 8px}.landing-steps p{margin:0;color:#687589;line-height:1.55}
.landing-pricing{padding-top:44px}
.landing-price-card{background:#10233f;color:#fff;border-radius:28px;padding:38px 42px;display:grid;grid-template-columns:1fr auto auto;gap:34px;align-items:center;box-shadow:0 25px 50px rgba(16,35,63,.16)}
.landing-price-card .eyebrow{color:#74d690}.landing-price-card p{color:#cbd4df;margin-bottom:0}
.landing-price-card h2{font-size:34px;margin-bottom:8px}
.landing-price{display:flex;align-items:center;gap:8px;white-space:nowrap}.landing-price strong{font-size:48px}.landing-price span{color:#cbd4df;font-size:12px;line-height:1.4}
.landing-final-cta{text-align:center;padding-top:72px;padding-bottom:90px}.landing-final-cta img{border-radius:18px}.landing-final-cta p{margin:0 auto 26px}.landing-actions-center{justify-content:center}
.landing-footer{border-top:1px solid #e2e8e2;max-width:1180px;margin:0 auto;padding:30px 24px 45px;display:flex;justify-content:space-between;gap:24px;color:#667487;font-size:13px}
.landing-footer>div{display:flex;flex-direction:column;gap:3px}.landing-footer strong{color:#10233f}
.landing-footer nav{display:flex;flex-wrap:wrap;gap:16px}.landing-footer a{color:#536176}
.landing-install-card{max-width:520px}.landing-install-steps{list-style:none;padding:0;margin:18px 0;display:grid;gap:14px}
.landing-install-steps li{display:flex;gap:13px;align-items:flex-start;border:1px solid #e4e9e4;border-radius:14px;padding:14px}
.landing-install-steps li>span{flex:0 0 30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#eaf7ed;color:#15803d;font-weight:900}
@media(max-width:820px){
  .landing-header-inner{padding:11px 16px}.landing-brand{font-size:19px}.landing-brand img{width:40px;height:40px}
  .landing-nav>a:not(.landing-signin){display:none}
  .landing-hero-inner{grid-template-columns:1fr;gap:48px;padding:54px 18px 62px;text-align:center}
  .landing-hero-copy h1{font-size:47px;letter-spacing:-1.9px}.landing-lead{font-size:17px}
  .landing-actions,.landing-trust-row{justify-content:center}.landing-phone{width:min(330px,88vw);transform:none}
  .landing-section{padding:66px 18px}.landing-feature-grid,.landing-steps{grid-template-columns:1fr}
  .landing-feature{padding:23px}.landing-steps article{padding:14px 6px;text-align:left}
  .landing-price-card{grid-template-columns:1fr;text-align:center;padding:32px 24px}.landing-price{justify-content:center}.landing-price-card .btn{justify-self:center}
  .landing-footer{flex-direction:column;text-align:center;align-items:center}.landing-footer nav{justify-content:center}
}
@media(max-width:480px){
  .landing-header-inner{gap:10px}.landing-signin{padding:9px 12px!important}.landing-hero-copy h1{font-size:40px}
  .landing-actions{display:grid;grid-template-columns:1fr;width:100%}.landing-actions .btn{width:100%}
  .landing-trust-row{display:grid;gap:7px}.landing-section-head{text-align:left}.landing-section-head h2{font-size:34px}
}

/* v1.4.12 */
.signout-button{appearance:none;border:1px solid #dfe5df;background:#fff;color:#536176;min-height:38px;padding:0 11px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.signout-button:hover{border-color:#cfd7cf;background:#f7f9f7;color:#10233f}.signout-button:disabled{opacity:.65;cursor:wait}
.signout-icon{font-size:16px;line-height:1;transform:rotate(180deg)}
.signout-spinner{width:13px;height:13px;border:2px solid #cbd5cb;border-top-color:#15803d;border-radius:50%;display:inline-block;animation:shoplist-signout-spin .7s linear infinite}
@keyframes shoplist-signout-spin{to{transform:rotate(360deg)}}
.list-toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media(max-width:640px){.signout-button{width:40px;padding:0}.signout-button .signout-label{display:none}.signout-button .signout-icon{font-size:18px}.list-toolbar-actions{gap:6px}}

/* v1.4.13 - Confirmation & back-navigation UX */
.shoplist-confirm-dialog{border:0;background:transparent;padding:16px;max-width:none;width:auto}
.shoplist-confirm-dialog::backdrop{background:rgba(15,23,42,.48);backdrop-filter:blur(3px)}
.shoplist-confirm-card{width:min(440px,calc(100vw - 32px));padding:26px;border-radius:24px;text-align:center;box-shadow:0 28px 75px rgba(15,23,42,.28)}
.shoplist-confirm-icon{width:58px;height:58px;margin:0 auto 15px;border-radius:18px;display:grid;place-items:center;background:#eef8f0;color:#15803d;font-size:26px;font-weight:900}
.shoplist-confirm-dialog.is-danger .shoplist-confirm-icon{background:#fff0f0;color:#c62828}
.shoplist-confirm-copy h2{margin:5px 0 10px;font-size:24px;letter-spacing:-.4px}
.shoplist-confirm-copy p{margin:0 auto;color:#667487;line-height:1.55;max-width:360px}
.shoplist-confirm-actions{justify-content:center;margin-top:24px;gap:10px}
.shoplist-confirm-actions .btn{min-width:130px}
.btn-danger{background:#c62828;color:#fff;border-color:#c62828}
.btn-danger:hover{background:#ad1f1f;border-color:#ad1f1f}
@media(max-width:520px){
  .shoplist-confirm-dialog{padding:10px}
  .shoplist-confirm-card{width:calc(100vw - 20px);padding:24px 18px;border-radius:22px}
  .shoplist-confirm-actions{display:grid;grid-template-columns:1fr;gap:9px}
  .shoplist-confirm-actions .btn{width:100%;min-height:48px}
  .shoplist-confirm-actions .btn-danger{order:-1}
}

/* v1.4.16: visible support and review entry points */
.feedback-entry{margin:22px 0;padding:20px;border:1px solid #cde5d3;border-radius:18px;background:#eff8f1;color:#163a25;text-align:left}
.feedback-entry strong{font-size:17px}.feedback-entry p{margin:6px 0 14px;color:#536176;font-size:14px;line-height:1.5}
.feedback-entry nav{display:flex;flex-wrap:wrap;gap:10px}
.feedback-entry a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px solid #b8d6c1;border-radius:12px;background:#fff;color:#166534;font-size:14px;font-weight:700;text-decoration:none}
.feedback-entry a:hover{background:#e0f0e4}.feedback-entry a:focus-visible{outline:3px solid #15803d;outline-offset:3px}
@media(max-width:820px){.landing-nav>a.landing-support{display:inline-flex}.landing-header-inner{flex-wrap:wrap;gap:10px}.landing-nav{flex-wrap:wrap;gap:12px}}
@media(max-width:480px){.feedback-entry{padding:16px}.feedback-entry nav{display:grid;grid-template-columns:1fr}.feedback-entry a{width:100%}.landing-nav>a.landing-support{font-size:13px}}

/* v1.5.1 landing feedback below the main shopping/install content */
.landing-feedback-wrap{max-width:1180px;margin:0 auto;padding:0 24px 30px}.landing-feedback-wrap .feedback-entry{margin:0}@media(max-width:480px){.landing-feedback-wrap{padding:0 18px 24px}}


/* v1.4.14 - public SEO content and feature pages */
.landing-resource-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.landing-resource{display:flex;gap:18px;padding:24px;background:#fff;border:1px solid #e2e8e2;border-radius:20px;text-decoration:none;color:#10233f;box-shadow:0 12px 30px rgba(16,35,63,.04)}.landing-resource:hover{border-color:#b8d6c1;transform:translateY(-1px)}.landing-resource>span{font-size:28px}.landing-resource h3{margin:0 0 7px;font-size:19px}.landing-resource p{margin:0 0 12px;color:#687589;line-height:1.55;font-size:14px}.landing-resource strong{color:#15803d;font-size:14px}.landing-faq-list{max-width:860px;margin:0 auto;display:grid;gap:12px}.landing-faq-list details{background:#fff;border:1px solid #e2e8e2;border-radius:16px;padding:0 20px}.landing-faq-list summary{cursor:pointer;font-weight:800;padding:18px 0;color:#10233f}.landing-faq-list p{margin:0 0 20px;color:#667487;line-height:1.65}.seo-page{background:#f8faf8;color:#10233f}.seo-main{max-width:960px;margin:0 auto;padding:70px 24px 90px}.seo-hero{text-align:center;max-width:780px;margin:0 auto 54px}.seo-hero h1{font-size:48px;letter-spacing:-1.5px;margin:10px 0 18px}.seo-hero p{font-size:19px;line-height:1.65;color:#667487}.seo-content{background:#fff;border:1px solid #e2e8e2;border-radius:24px;padding:38px;box-shadow:0 14px 35px rgba(16,35,63,.04)}.seo-content h2{font-size:30px;margin:34px 0 12px}.seo-content h2:first-child{margin-top:0}.seo-content p,.seo-content li{color:#536176;line-height:1.75}.seo-content ul{padding-left:22px}.seo-cta{margin-top:34px;padding:28px;border-radius:20px;background:#eef8f0;text-align:center}.seo-links{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:30px}.seo-links a{color:#166534;font-weight:700}.seo-back{display:inline-flex;margin-bottom:24px;color:#166534;font-weight:700;text-decoration:none}@media(max-width:820px){.landing-resource-grid{grid-template-columns:1fr}.seo-main{padding:48px 18px 70px}.seo-hero h1{font-size:38px}.seo-content{padding:25px 20px}}
