
:root{
  --bg:#f3f3f0;
  --surface:#ffffff;
  --surface-soft:#e9e9e5;
  --surface-hover:#dfdfda;
  --text:#171717;
  --muted:#70706a;
  --faint:#989890;
  --line:#d8d8d2;
  --accent:#171717;
  --accent-text:#ffffff;
  --danger:#a02929;
  --danger-soft:#f7eaea;
  --success:#2f6f47;
  --radius:20px;
  --radius-sm:13px;
  --shadow:0 18px 50px rgba(0,0,0,.08);
  --topbar:rgba(243,243,240,.88);
  --focus:0 0 0 3px rgba(80,80,80,.14);
}
@media(prefers-color-scheme:dark){
  :root{
    --bg:#0f0f0f;
    --surface:#181818;
    --surface-soft:#232323;
    --surface-hover:#2c2c2c;
    --text:#f3f3ef;
    --muted:#a9a9a1;
    --faint:#777770;
    --line:#343434;
    --accent:#f0f0eb;
    --accent-text:#111111;
    --danger:#ff8a8a;
    --danger-soft:#331d1d;
    --success:#7fc497;
    --shadow:none;
    --topbar:rgba(15,15,15,.88);
    --focus:0 0 0 3px rgba(255,255,255,.10);
  }
}
*{box-sizing:border-box}
html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--text)}
button,input,textarea{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.55}
.topbar{
  position:sticky;top:0;z-index:20;height:64px;padding:max(0px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));
  display:flex;align-items:center;justify-content:space-between;
  background:var(--topbar);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-bottom:1px solid var(--line)
}
.brand{display:flex;align-items:center;gap:11px;color:var(--text);text-decoration:none;min-width:0}
.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:var(--accent);color:var(--accent-text);font-weight:900}
.brand-copy{display:grid;line-height:1.05}.brand-copy strong{font-size:16px}.brand-copy small{margin-top:4px;font-size:11px;color:var(--muted);font-weight:500}
.top-actions{display:flex;align-items:center;gap:5px}
.icon-button{width:42px;height:42px;display:grid;place-items:center;border:0;border-radius:12px;background:transparent;color:var(--text);text-decoration:none;font-size:20px}
.icon-button:hover{background:var(--surface-soft)}
.app-shell{width:min(1120px,100%);margin:0 auto;padding:22px 18px max(92px,calc(36px + env(safe-area-inset-bottom)));display:grid;grid-template-columns:minmax(320px,410px) minmax(0,1fr);gap:22px;align-items:start}
.card,.list-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.composer{padding:20px;position:sticky;top:86px}
.section-heading{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:15px}
.eyebrow{display:block;color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
h1{font-size:21px;line-height:1.15;margin:4px 0 0}
.count-badge{white-space:nowrap;border:1px solid var(--line);background:var(--surface-soft);border-radius:999px;padding:7px 10px;color:var(--muted);font-size:12px;font-weight:700}
textarea,input{width:100%;border:1px solid var(--line);border-radius:14px;background:var(--bg);color:var(--text);padding:13px 14px;outline:none}
textarea{resize:vertical;min-height:96px;max-height:220px;font-size:17px;line-height:1.45}
textarea::placeholder,input::placeholder{color:var(--faint)}
textarea:focus,input:focus{border-color:var(--text);box-shadow:var(--focus)}
.category-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0}
.cat,.filter,.text-button{border:1px solid var(--line);background:var(--surface-soft);color:var(--text);border-radius:12px;font-weight:700}
.cat{min-height:44px;padding:9px 10px}
.cat:hover,.filter:hover,.text-button:hover{background:var(--surface-hover)}
.cat.active,.filter.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}
.composer-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}
.desktop-hint{font-size:11px;color:var(--muted)}
.primary{border:0;border-radius:13px;padding:12px 18px;min-width:118px;background:var(--accent);color:var(--accent-text);font-weight:800}
.primary:hover{filter:brightness(.94)}
.list-panel{padding:18px;min-width:0}
.list-toolbar{display:grid;gap:12px}
.search-wrap{position:relative;display:flex;align-items:center}
.search-wrap>span{position:absolute;left:13px;color:var(--muted);font-size:19px;pointer-events:none}
.search-wrap input{padding-left:38px;padding-right:40px;background:var(--bg);height:46px}
.clear-search{position:absolute;right:8px;width:30px;height:30px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:20px}
.clear-search:hover{background:var(--surface-soft)}
.filters{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.filter{padding:9px 12px;white-space:nowrap}.filter span{opacity:.64;margin-left:4px;font-size:11px}
.result-line{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 2px 10px;color:var(--muted);font-size:12px}
.text-button{padding:7px 10px;background:transparent}
.items{display:grid;gap:8px}
.item{
  display:grid;grid-template-columns:38px minmax(0,1fr) 38px;align-items:center;gap:9px;
  background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:11px 10px;transition:.14s ease
}
.item:hover{background:color-mix(in srgb,var(--surface) 88%,var(--surface-soft));transform:translateY(-1px)}
.item.high{border-left:4px solid var(--text)}
.item.done{opacity:.62}
.item.done .item-text{text-decoration:line-through}
.check{width:32px;height:32px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);color:var(--text);font-weight:900}
.check:hover{background:var(--surface-hover)}
.item.done .check{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}
.delete{width:34px;height:34px;border:0;background:transparent;color:var(--muted);font-size:23px;border-radius:10px}
.delete:hover{background:var(--danger-soft);color:var(--danger)}
.item-text{font-size:15px;font-weight:650;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}
.item-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px;color:var(--muted);font-size:11px}
.category-pill{display:inline-flex;align-items:center;padding:2px 7px;border-radius:999px;background:var(--surface-soft);font-weight:700}
.empty{text-align:center;color:var(--muted);padding:64px 20px 70px;display:grid;justify-items:center;gap:7px}
.empty-mark{display:grid;place-items:center;width:46px;height:46px;border-radius:15px;background:var(--surface-soft);color:var(--text);font-size:21px;font-weight:900;margin-bottom:3px}
.empty strong{color:var(--text);font-size:15px}.empty span{font-size:12px}
.hidden{display:none!important}
.toast{
  position:fixed;left:50%;bottom:max(24px,calc(16px + env(safe-area-inset-bottom)));z-index:50;transform:translate(-50%,18px);
  max-width:min(420px,calc(100vw - 24px));padding:11px 14px;border-radius:12px;background:var(--text);color:var(--bg);
  font-size:13px;font-weight:700;opacity:0;pointer-events:none;transition:.18s ease
}
.toast.show{opacity:1;transform:translate(-50%,0)}
.auth-page{display:grid;place-items:center;padding:20px}.auth-card{width:min(420px,100%);padding:25px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.auth-card h1{margin-bottom:4px}.logo-mark{width:48px;height:48px;display:grid;place-items:center;border-radius:14px;background:var(--text);color:var(--bg);font-weight:900;font-size:24px}
label{display:grid;gap:6px;margin:14px 0;font-size:13px;font-weight:700}.auth-card form button{width:100%;margin-top:8px}
.muted{color:var(--muted)}.error,.success,.token-box{padding:12px;border-radius:12px;margin:12px 0;background:var(--surface-soft)}.error{color:var(--danger)}
.settings{width:min(760px,100%);margin:0 auto;padding:18px 14px 90px}.settings .card{padding:18px;margin-bottom:14px}
.inline-form{display:grid;grid-template-columns:1fr auto;gap:8px}.token-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.token-box code{display:block;overflow-wrap:anywhere;padding:10px 0}.button-link{display:inline-block;text-decoration:none;border:0;border-radius:13px;padding:12px 16px;background:var(--accent);color:var(--accent-text);font-weight:700}.danger{color:var(--danger)}

@media(max-width:800px){
  .topbar{height:60px}
  .brand-copy small{display:none}
  .app-shell{display:block;padding:12px 10px max(96px,calc(24px + env(safe-area-inset-bottom)))}
  .composer{position:static;padding:14px;border-radius:17px}
  .section-heading{margin-bottom:11px}.eyebrow{display:none}h1{font-size:18px;margin:0}
  textarea{min-height:78px;font-size:16px}
  .category-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin:9px 0}
  .cat{min-height:40px;padding:7px 5px;font-size:12px}
  .composer-actions{margin-top:7px}.desktop-hint{display:none}.primary{width:100%;min-height:44px}
  .list-panel{margin-top:12px;padding:12px;border-radius:17px;box-shadow:none}
  .search-wrap input{height:44px}
  .filters{margin-left:-2px;margin-right:-2px}
  .filter{flex:1;text-align:center;padding:9px 8px;font-size:12px}
  .result-line{margin-top:10px}
  .item{grid-template-columns:36px minmax(0,1fr) 34px;padding:10px 8px;border-radius:14px}
  .item-text{font-size:15px}
}
@media(max-width:430px){
  .category-grid{grid-template-columns:repeat(2,1fr)}
  .section-heading{align-items:center}
  .count-badge{padding:6px 9px}
  .top-actions .icon-button:first-child{display:none}
}
@media(min-width:801px){
  .composer textarea:focus{min-height:120px}
}
@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto!important;transition:none!important}
}


/* v1.3.0 – category filtering / shopping mode */
.category-filters{
  display:flex;
  gap:7px;
  overflow-x:auto;
  padding-bottom:2px;
  scrollbar-width:none;
}
.category-filters::-webkit-scrollbar{display:none}
.category-filter{
  display:inline-flex;
  align-items:center;
  gap:6px;
  flex:0 0 auto;
  min-height:36px;
  padding:7px 10px;
  border:1px solid var(--line);
  border-radius:999px;
  background:transparent;
  color:var(--muted);
  font-size:12px;
  font-weight:750;
  white-space:nowrap;
}
.category-filter:hover{
  background:var(--surface-soft);
  color:var(--text);
}
.category-filter.active{
  background:var(--accent);
  color:var(--accent-text);
  border-color:var(--accent);
}
.category-filter>span:last-child{
  opacity:.62;
  font-size:10px;
}
.category-dot{
  display:grid;
  place-items:center;
  min-width:18px;
  height:18px;
  padding:0 4px;
  border-radius:999px;
  background:var(--surface-soft);
  color:var(--text);
  font-size:9px;
  line-height:1;
  font-weight:900;
}
.category-filter.active .category-dot{
  background:color-mix(in srgb,var(--accent-text) 18%,transparent);
  color:var(--accent-text);
}
body.shopping-mode .composer .cat[data-category="shopping"]{
  box-shadow:var(--focus);
}
body.shopping-mode .list-panel{
  border-color:color-mix(in srgb,var(--accent) 55%,var(--line));
}
.mode-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:5px 9px;
  border-radius:999px;
  background:var(--surface-soft);
  color:var(--muted);
  font-size:11px;
  font-weight:800;
}
@media(max-width:800px){
  .category-filters{
    margin-left:-2px;
    margin-right:-2px;
    padding-right:8px;
  }
  .category-filter{
    min-height:34px;
    padding:6px 9px;
  }
}
