/* ============================================================
   MARCI LIST - shared shopping list for Marci + Chris
   Visual language borrowed from the Marci Eye Care PWA:
   deep navy, cyan/purple neon, glassmorphism, big soft type.
   ============================================================ */

@font-face{
  font-family:'Orbitron';
  font-style:normal;
  font-weight:400 900;
  font-display:swap;
  src:url(data:font/woff2;base64,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) format('woff2');
}

:root{
  --bg:#07131f;
  --bg2:#0a1a29;
  --panel:rgba(9,18,28,.52);
  --panel-solid:#0d1e2f;
  --panel2:#122a40;
  --border:rgba(120,205,232,.20);
  --border-bright:rgba(120,205,232,.42);
  --text:#f3fbff;
  --muted:#b9d3e3;
  --cyan:#6fe9ff;
  --purp:#a855f7;
  --pink:#ff9bd7;
  --green:#70e09b;
  --amber:#ffd36b;
  --red:#ff8a86;
  --radius:18px;
  --touch:62px;
  --ff-display:'Orbitron', ui-sans-serif, system-ui, 'Segoe UI', sans-serif;
  --ff-body:'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --ff-mono:ui-monospace, 'SF Mono', 'JetBrains Mono', 'Cascadia Code', monospace;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--ff-body);
  font-size:20px;
  line-height:1.4;
  color:var(--text);
  background:var(--bg);
  min-height:100dvh;
  -webkit-font-smoothing:antialiased;
}

/* background + fx canvases */
#store-map{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block;background:#04070b}
#fx-overlay{position:fixed;inset:0;width:100%;height:100%;z-index:9999;pointer-events:none}

/* app column */
.app{
  position:relative;z-index:1;
  max-width:560px;margin:0 auto;
  padding:0 16px calc(40px + env(safe-area-inset-bottom));
  min-height:100dvh;
}

/* ---------- sticky top bar ---------- */
.topbar{
  position:sticky;top:0;z-index:5;
  margin:0 -16px 14px;padding:14px 16px calc(14px + env(safe-area-inset-top));
  padding-top:max(14px, env(safe-area-inset-top));
  background:rgba(7,19,31,.72);
  -webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2);
  border-bottom:1px solid var(--border);
}
.brand-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand h1{
  font-family:var(--ff-display);font-weight:800;
  font-size:clamp(24px,7vw,34px);letter-spacing:.06em;margin:0;
  color:var(--text);text-shadow:0 0 18px rgba(111,233,255,.35);
}
.brand .sub{font-size:12px;letter-spacing:.02em;color:var(--muted);margin-top:2px}

.sync-chip{
  display:inline-flex;align-items:center;gap:7px;
  font-family:var(--ff-mono);font-size:12px;letter-spacing:.02em;
  padding:8px 12px;border-radius:999px;white-space:nowrap;
  background:rgba(120,205,232,.10);border:1px solid var(--border);color:var(--muted);
}
.sync-chip .dot{width:9px;height:9px;border-radius:50%;background:var(--muted);box-shadow:0 0 8px currentColor;flex:none}
.sync-chip[data-state="Saved"]{color:var(--green);border-color:rgba(112,224,155,.4)}
.sync-chip[data-state="Saved"] .dot{background:var(--green)}
.sync-chip[data-state="Syncing"]{color:var(--cyan);border-color:var(--border-bright)}
.sync-chip[data-state="Syncing"] .dot{background:var(--cyan);animation:pulseDot 1s ease-in-out infinite}
.sync-chip[data-state="Offline"]{color:var(--amber);border-color:rgba(255,211,107,.4)}
.sync-chip[data-state="Offline"] .dot{background:var(--amber)}
.sync-chip[data-state="Conflict fixed"]{color:var(--purp);border-color:rgba(168,85,247,.5)}
.sync-chip[data-state="Conflict fixed"] .dot{background:var(--purp)}
.sync-chip[data-state="Needs connection"]{color:var(--red);border-color:rgba(255,138,134,.45)}
.sync-chip[data-state="Needs connection"] .dot{background:var(--red)}
@keyframes pulseDot{0%,100%{opacity:1}50%{opacity:.35}}

/* who-are-you toggle */
.who{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:13px;color:var(--muted)}
.who .seg{display:inline-flex;background:rgba(120,205,232,.08);border:1px solid var(--border);border-radius:999px;padding:3px}
.who button{
  font-family:var(--ff-body);font-size:14px;font-weight:600;color:var(--muted);
  background:transparent;border:0;border-radius:999px;padding:8px 16px;min-height:38px;cursor:pointer;
}
.who button[aria-pressed="true"]{background:linear-gradient(135deg,var(--cyan),var(--purp));color:#06121d}

/* ---------- add row ---------- */
.add-row{display:flex;gap:10px;margin:4px 0 22px}
.add-row input{
  flex:1;min-height:var(--touch);
  font-family:var(--ff-body);font-size:19px;color:var(--text);
  background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);
  padding:0 16px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
}
.add-row input::placeholder{color:var(--muted);opacity:.8}
.add-row input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(111,233,255,.18)}
.btn-add{
  min-height:var(--touch);min-width:88px;padding:0 20px;
  font-family:var(--ff-display);font-weight:700;letter-spacing:.05em;font-size:16px;
  color:#06121d;background:linear-gradient(135deg,var(--cyan),var(--purp));
  border:0;border-radius:var(--radius);cursor:pointer;
  box-shadow:0 6px 22px rgba(111,233,255,.22);
}
.btn-add:active{transform:translateY(1px)}

/* ---------- sections ---------- */
.section{margin-bottom:26px}
.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 4px 12px}
.section-head h2{
  font-family:var(--ff-display);font-weight:700;letter-spacing:.14em;
  font-size:13px;text-transform:uppercase;color:var(--cyan);margin:0;
}
.section-head .count{font-family:var(--ff-mono);font-size:12px;color:var(--muted)}
.section.completed .section-head h2{color:var(--purp)}

.empty{
  padding:22px 18px;border:1px dashed var(--border);border-radius:var(--radius);
  color:var(--muted);font-size:15px;text-align:center;background:rgba(9,18,28,.32);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
}

/* ---------- item card ---------- */
.list{display:flex;flex-direction:column;gap:12px}
.item{
  display:flex;align-items:center;gap:14px;padding:12px 14px;
  background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);
  -webkit-backdrop-filter:blur(13px) saturate(1.2);backdrop-filter:blur(13px) saturate(1.2);
  box-shadow:0 8px 26px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.05);
}
.item.enter{animation:itemIn .32s cubic-bezier(.2,.9,.3,1)}
@keyframes itemIn{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
.item.leaving{animation:itemOut .3s ease forwards}
@keyframes itemOut{to{opacity:0;transform:translateY(10px) scale(.96)}}
.item.done .item-text{color:var(--muted);text-decoration:line-through;text-decoration-color:rgba(168,85,247,.6)}

/* hold-to-complete ring button */
.hold{
  position:relative;flex:none;width:var(--touch);height:var(--touch);
  border:0;background:transparent;cursor:pointer;padding:0;border-radius:50%;
  touch-action:none;-webkit-tap-highlight-color:transparent;
}
.hold svg{position:absolute;inset:0;transform:rotate(-90deg)}
.hold .track{fill:none;stroke:rgba(120,205,232,.22);stroke-width:5}
.hold .prog{fill:none;stroke:var(--cyan);stroke-width:5;stroke-linecap:round;
  stroke-dasharray:163.4;stroke-dashoffset:163.4;filter:drop-shadow(0 0 6px var(--cyan))}
.item.done .hold .prog{stroke:var(--purp);filter:drop-shadow(0 0 6px var(--purp))}
.hold .glyph{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:24px;color:var(--cyan)}
.item.done .hold .glyph{color:var(--purp)}
.hold:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}
.hold.holding .glyph{transform:scale(.86);transition:transform .1s}

/* text + edit */
.item-main{flex:1;min-width:0}
.item-text{font-size:20px;font-weight:600;color:var(--text);word-break:break-word;cursor:text}
.item-text:focus{outline:none;border-bottom:2px solid var(--cyan)}
.item-hint{font-size:11px;letter-spacing:.04em;color:var(--muted);margin-top:3px;font-family:var(--ff-mono)}

/* quantity */
.qty{display:flex;align-items:center;gap:8px;flex:none}
.qty button{
  width:52px;height:52px;font-size:30px;line-height:1;font-weight:400;
  color:var(--text);background:rgba(120,205,232,.10);border:1px solid var(--border);
  border-radius:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;
}
.qty button:active{transform:translateY(1px)}
.qty button.minus{color:var(--pink)}
.qty button.plus{color:var(--green)}
.qty .n{min-width:30px;text-align:center;font-family:var(--ff-mono);font-size:20px;font-weight:600}
.qty button:disabled{opacity:.35;cursor:not-allowed}

/* more menu + delete */
.more{flex:none;width:40px;height:40px;border-radius:12px;border:1px solid transparent;background:transparent;
  color:var(--muted);font-size:22px;cursor:pointer}
.more:hover,.more:focus-visible{border-color:var(--border);color:var(--text);outline:none}
.item-menu{display:none;gap:8px;margin-top:6px}
.item.menu-open .item-menu{display:flex}
.item-menu button{font-size:13px;font-family:var(--ff-mono);color:var(--muted);background:rgba(255,138,134,.08);
  border:1px solid rgba(255,138,134,.3);border-radius:10px;padding:8px 12px;min-height:40px;cursor:pointer}
.item-menu button.danger{color:var(--red)}

/* completed actions */
.completed-actions{margin-top:14px;text-align:center}
.btn-ghost{font-family:var(--ff-mono);font-size:13px;letter-spacing:.03em;color:var(--muted);
  background:transparent;border:1px solid var(--border);border-radius:12px;padding:12px 18px;min-height:46px;cursor:pointer}
.btn-ghost:hover,.btn-ghost:focus-visible{border-color:var(--purp);color:var(--text);outline:none}

/* celebrate outline (from fx.js) */
@keyframes fxRainbow{
  0%{box-shadow:0 0 0 2px rgba(168,85,247,.95),0 0 18px 5px rgba(168,85,247,.55)}
  50%{box-shadow:0 0 0 2px rgba(111,233,255,.95),0 0 22px 7px rgba(111,233,255,.5)}
  100%{box-shadow:0 0 0 2px rgba(168,85,247,0),0 0 0 0 rgba(168,85,247,0)}
}
.fx-celebrate{animation:fxRainbow 1.1s ease-out forwards;border-color:var(--purp)!important}

/* ---------- confirm sheet ---------- */
.sheet-backdrop{position:fixed;inset:0;z-index:10001;display:none;align-items:flex-end;justify-content:center;
  background:rgba(3,6,11,.62);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.sheet-backdrop.open{display:flex}
.sheet{width:100%;max-width:560px;margin:0 12px 12px;padding:22px;border-radius:22px;text-align:center;
  background:var(--panel-solid);border:1px solid var(--border-bright);box-shadow:0 -10px 40px rgba(0,0,0,.5);
  animation:sheetUp .26s cubic-bezier(.2,.9,.3,1)}
@keyframes sheetUp{from{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}}
.sheet h3{font-family:var(--ff-display);font-size:18px;letter-spacing:.03em;margin:0 0 8px}
.sheet p{color:var(--muted);font-size:15px;margin:0 0 20px}
.sheet-actions{display:flex;gap:12px}
.sheet-actions button{flex:1;min-height:54px;border-radius:14px;font-family:var(--ff-display);font-weight:700;
  letter-spacing:.04em;font-size:15px;cursor:pointer;border:1px solid}
.sheet .cancel{background:rgba(120,205,232,.10);border-color:var(--border);color:var(--text)}
.sheet .confirm{background:rgba(255,138,134,.16);border-color:rgba(255,138,134,.5);color:var(--red)}

/* screen-reader only live region */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}
