@font-face { font-family:'VT323'; font-style:normal; font-weight:400; size-adjust:125%; font-display:swap;
  src:url(/fonts/vt323-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family:'VT323'; font-style:normal; font-weight:400; size-adjust:125%; font-display:swap;
  src:url(/fonts/vt323-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
:root { color-scheme: light dark; --fg:#1d1d1f; --bg:#fafafa; --card:#fff; --muted:#6b6b70; --line:#e2e2e6; --accent:#5b4bdb; }
@media (prefers-color-scheme: dark) { :root { --fg:#ececf0; --bg:#151518; --card:#1f1f24; --muted:#9a9aa3; --line:#2e2e35; --accent:#9b8cff; } }
* { box-sizing: border-box; }
body { margin:0; font:16px/1.5 'VT323', -apple-system, system-ui, sans-serif; color:var(--fg); background:var(--bg); }
main { max-width:820px; margin:0 auto; padding:24px 16px 64px; }
header { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; }
h1 { font-size:20px; margin:0; }
.muted { color:var(--muted); font-size:13px; }
form.ask { display:flex; gap:8px; }
input, button, textarea, select { font:inherit; }
input[type=text], input[type=password] { flex:1; padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); color:var(--fg); }
button { padding:10px 16px; border:0; border-radius:10px; background:var(--accent); color:#fff; cursor:pointer; }
button.link { background:none; color:var(--muted); padding:4px; }
label.switch { display:flex; gap:6px; align-items:center; font-size:14px; color:var(--muted); margin:8px 0 0; }
.answer { white-space:pre-wrap; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin:16px 0; }
.answer:empty { display:none; }
.passage { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:12px 16px; margin:10px 0; }
.passage a { color:var(--accent); font-weight:600; text-decoration:none; }
.passage .text { white-space:pre-wrap; font-size:14px; max-height:12em; overflow:hidden; margin-top:6px; }
.passage .n { color:var(--muted); font-size:13px; margin-right:6px; }
.error { color:#d33; }
.login { max-width:360px; margin:15vh auto; }
.login form { display:flex; flex-direction:column; gap:10px; }

/* ---- chat layout */
body.chat-app { display:flex; height:100vh; height:100dvh; overflow:hidden; }
#sidebar { width:260px; flex:none; display:flex; flex-direction:column; gap:8px; padding:12px; border-right:1px solid var(--line); background:var(--card); }
.new-chat { width:100%; background:none; color:var(--fg); border:1px solid var(--line); text-align:left; }
.new-chat:hover { background:var(--bg); }
#chat-list { flex:1; overflow-y:auto; display:flex; flex-direction:column; gap:2px; }
.chat-row { display:flex; align-items:center; border-radius:8px; }
.chat-row:hover, .chat-row.active { background:var(--bg); }
.chat-open { flex:1; min-width:0; background:none; color:var(--fg); text-align:left; padding:8px 10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:14px; }
.chat-del { background:none; color:var(--muted); padding:4px 10px; opacity:0; }
.chat-row:hover .chat-del, .chat-row.active .chat-del { opacity:1; }
.side-foot { display:flex; justify-content:space-between; align-items:center; border-top:1px solid var(--line); padding-top:8px; }
main.chat { flex:1; min-width:0; display:flex; flex-direction:column; max-width:none; margin:0; padding:0; }
.topbar { display:flex; align-items:center; gap:8px; padding:10px 16px; border-bottom:1px solid var(--line); margin:0; justify-content:flex-start; }
.topbar h1 { font-size:16px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
button.icon { display:none; background:none; color:var(--fg); padding:4px 8px; font-size:18px; }
#thread { flex:1; overflow-y:auto; padding:20px max(16px, calc((100% - 780px) / 2)); }
.empty { text-align:center; margin-top:18vh; }
.msg { display:flex; flex-direction:column; margin:0 0 18px; }
.msg.user { align-items:flex-end; }
.msg.user .bubble { background:var(--accent); color:#fff; border-radius:18px 18px 4px 18px; padding:10px 14px; max-width:85%; white-space:pre-wrap; overflow-wrap:anywhere; }
.msg.assistant .bubble { max-width:100%; overflow-wrap:anywhere; }
.md p { margin:0 0 10px; } .md ul, .md ol { margin:0 0 10px; padding-left:22px; }
.md pre { background:var(--card); border:1px solid var(--line); border-radius:8px; padding:10px; overflow-x:auto; font-size:14px; }
.md code { font:13px ui-monospace, SFMono-Regular, Menlo, monospace; background:var(--card); padding:1px 4px; border-radius:4px; }
.md pre code { padding:0; background:none; }
.md blockquote { margin:0 0 10px; padding-left:10px; border-left:3px solid var(--line); color:var(--muted); }
.md h3, .md h4, .md h5, .md h6 { margin:12px 0 6px; font-size:16px; }
.md a { color:var(--accent); }
.md .table-wrap { overflow-x:auto; margin:0 0 12px; border:1px solid var(--line); border-radius:8px; }
.md table { border-collapse:collapse; width:100%; font-size:15px; }
.md th, .md td { padding:7px 10px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; }
.md th { background:var(--card); font-weight:700; white-space:nowrap; }
.md tbody tr:last-child td { border-bottom:none; }
.md tbody tr:nth-child(even) td { background:color-mix(in srgb, var(--card) 45%, transparent); }
.md hr { border:none; border-top:1px solid var(--line); margin:14px 0; }
.cite { color:var(--accent); font-size:11px; }
.typing { color:var(--muted); }
.meta { margin-top:4px; }
.sources > details > summary { cursor:pointer; color:var(--muted); font-size:13px; margin-top:6px; }
.source { background:var(--card); border:1px solid var(--line); border-radius:10px; padding:8px 12px; margin:6px 0; font-size:14px; }
.source summary { cursor:pointer; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.source .n { color:var(--muted); margin-right:6px; } .source .path { font-weight:600; }
.source .snippet { white-space:pre-wrap; max-height:14em; overflow:auto; margin:8px 0; font-size:13px; }
.source .open { color:var(--accent); font-size:13px; text-decoration:none; }
#composer { display:grid; grid-template-columns:1fr auto; gap:6px 8px; padding:12px max(16px, calc((100% - 780px) / 2)) max(12px, env(safe-area-inset-bottom)); border-top:1px solid var(--line); }
#composer textarea { font:inherit; resize:none; padding:10px 12px; border:1px solid var(--line); border-radius:12px; background:var(--card); color:var(--fg); max-height:200px; }
#composer button { align-self:end; width:44px; height:44px; padding:0; border-radius:12px; font-size:18px; }
#composer.has-attach { grid-template-columns:auto 1fr auto; }
#composer #attach { background:var(--card); color:var(--fg); border:1px solid var(--line); }
#composer .switch { grid-column:1 / -1; margin:0; font-size:12px; }
button.stop { background:var(--fg); color:var(--bg); }
#scrim { display:none; }
@media (max-width: 760px) {
  #sidebar { position:fixed; inset:0 auto 0 0; z-index:20; transform:translateX(-100%); transition:transform .2s; width:80vw; max-width:300px; }
  body.menu-open #sidebar { transform:none; }
  body.menu-open #scrim { display:block; position:fixed; inset:0; background:#0006; z-index:10; }
  button.icon { display:block; }
  .chat-del { opacity:1; }
  #composer textarea { font-size:16px; }
}

/* ---- admin */
main.admin { max-width:760px; }
.admin header h1 { font-size:22px; }
.admin .back { color:var(--accent); text-decoration:none; }
.admin h2 { font-size:18px; margin:0 0 10px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin:14px 0; }
.card.off { opacity:.6; }
.user-head { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.badge { font-size:13px; padding:2px 8px; border-radius:999px; border:1px solid var(--line); }
.badge.admin { color:var(--accent); border-color:var(--accent); }
.tabs { display:flex; gap:4px; border-bottom:1px solid var(--line); margin:8px 0 16px; }
.tabs button { background:none; color:var(--muted); border-radius:8px 8px 0 0; padding:8px 16px; border-bottom:2px solid transparent; }
.tabs button[aria-selected="true"] { color:var(--fg); border-bottom-color:var(--accent); font-weight:700; }
.field { display:flex; flex-direction:column; gap:4px; margin:0 0 12px; }
.field select, .tree-tools input { padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); color:var(--fg); }
.access-line { margin:8px 0 0; }
button.link.inline { color:var(--accent); padding:0 4px; }
.folders .label { font-weight:700; margin-bottom:6px; }
.chips { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px; }
.chip { display:inline-flex; align-items:center; gap:2px; background:color-mix(in srgb, var(--accent) 15%, transparent); color:var(--fg); border-radius:999px; padding:2px 4px 2px 10px; font-size:15px; }
.chip-x { background:none; color:var(--muted); padding:0 6px; font-size:16px; }
.tree-tools { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:8px; }
.tree-tools input { flex:1; min-width:160px; }
.tree-tools select { padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); color:var(--fg); }
.pager { display:flex; justify-content:space-between; align-items:center; gap:8px; margin:8px 0; }
.folder-list { max-height:min(60vh, 520px); overflow-y:auto; border:1px solid var(--line); border-radius:8px; padding:4px 8px; margin-bottom:8px; }
.folder { display:flex; align-items:center; gap:2px; min-height:34px; }
.folder label { display:flex; align-items:center; gap:4px; cursor:pointer; flex:1; min-width:0; }
.folder input { width:18px; height:18px; flex:none; }
.folder .name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.caret { background:none; color:var(--muted); width:28px; height:28px; padding:0; flex:none; font-size:16px; }
.caret:disabled { opacity:1; cursor:default; }
.partial { color:var(--accent); font-size:14px; }
mark { background:color-mix(in srgb, var(--accent) 35%, transparent); color:inherit; border-radius:3px; }
.actions, .row { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:10px; }
.row input[type=text] { flex:1; min-width:0; }
button.secondary { background:none; color:var(--fg); border:1px solid var(--line); }
button.danger { background:none; color:#d33; border:1px solid #d33; }
button:disabled { opacity:.5; cursor:default; }
.add-form { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.add-form select { grid-column:1 / -1; padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); color:var(--fg); }
.add-form button { grid-column:1 / -1; }
.login input[type=text] { flex:none; }
.side-user { display:flex; flex-direction:column; min-width:0; }
.side-user a { color:var(--accent); font-size:14px; text-decoration:none; }
.side-actions { display:flex; flex-direction:column; align-items:flex-end; gap:4px; flex:none; }
.side-actions select { padding:4px 6px; border:1px solid var(--line); border-radius:8px; background:var(--card); color:var(--fg); font-size:13px; }
@media (max-width: 760px) { .add-form { grid-template-columns:1fr; } }

/* ---- Money change cards (admin) */
.change { border:1px solid var(--line); border-left:3px solid var(--accent); border-radius:10px; background:var(--card); padding:10px 12px; margin:8px 0; }
.change-head { display:flex; justify-content:space-between; gap:8px; align-items:center; }
.change-summary { margin:6px 0; }
.change-cells { border-collapse:collapse; width:100%; font-size:14px; }
.change-cells th, .change-cells td { padding:5px 8px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; overflow-wrap:anywhere; }
.change .table-wrap { overflow-x:auto; margin:4px 0 6px; }
.change-actions { display:flex; gap:8px; align-items:center; margin-top:8px; }
.change-actions button.secondary { background:none; color:var(--fg); border:1px solid var(--line); }
.change-actions button:disabled { opacity:.5; cursor:default; }
.badge { font-size:12px; padding:1px 8px; border-radius:999px; border:1px solid var(--line); color:var(--muted); }
.badge.applied { color:#1a7f37; border-color:#1a7f37; }
.badge.preview { color:var(--accent); border-color:var(--accent); }

/* Money charts (admin): Dither Kit bundle from the Money dashboard, in this page's colours. */
.mcharts:empty { display:none; }
.mchart { margin:8px 0; padding:10px 12px 6px; border:1px solid var(--line); border-radius:10px; background:var(--card);
  --mc-surface:var(--card); --mc-text:var(--fg); --mc-muted:var(--muted); --mc-grid:var(--line); }
.mchart-title { font-size:13px; font-weight:600; margin-bottom:6px; }
.mchart-host { min-height:240px; }

/* Suggested questions on the empty screen */
.suggest { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; max-width:640px; margin:18px auto 0; padding:0 12px; }
.chip { font:inherit; border:1px solid var(--line); background:var(--card); color:var(--fg); border-radius:999px; padding:6px 12px; cursor:pointer; }
.chip:hover { border-color:var(--accent); }

/* ---- shared lists */
.side-links { display:flex; gap:12px; padding:0 4px; font-size:15px; }
.side-links a, .row-links a { color:var(--accent); text-decoration:none; }
.row-links { display:flex; gap:14px; }
.change-actions a { color:var(--accent); text-decoration:none; font-size:14px; }
main.lists-page { max-width:760px; }
.lists-page h2 { font-size:18px; margin:0 0 8px; }
.lists-page h3 { font-size:15px; margin:12px 0 4px; color:var(--muted); }
.list-tabs { display:flex; flex-wrap:wrap; gap:8px; margin:6px 0; }
.chip.on { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 15%, var(--card)); }
.new-list { display:flex; flex-wrap:wrap; gap:8px; }
.new-list input { flex:1; min-width:160px; }
.lists-page select, .lists-page input[type=number], .fridge input[type=text], .lists-page input[type=text] { padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:var(--card); color:var(--fg); }
ul.items, ul.upcoming, ul.f-items { list-style:none; margin:8px 0; padding:0; }
ul.items li { display:flex; align-items:center; gap:8px; min-height:40px; border-bottom:1px solid var(--line); }
ul.items li:last-child { border-bottom:none; }
ul.items label { display:flex; align-items:center; gap:10px; flex:1; cursor:pointer; }
ul.items input[type=checkbox] { width:20px; height:20px; }
ul.items li.done span, .f-item.done .grow { text-decoration:line-through; color:var(--muted); }
ul.items .chat-del { opacity:1; }
ul.upcoming li { display:flex; gap:12px; padding:4px 0; }
.when { color:var(--muted); min-width:9.5em; flex:none; }
.grow { flex:1; min-width:0; }
.date-form { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:8px; margin:6px 0 4px; }
.date-form input[type=text] { grid-column:1 / -1; }
.date-form button { grid-column:1 / -1; }
@media (max-width: 560px) { .date-form { grid-template-columns:1fr 1fr; } .when { min-width:7em; } }

/* ---- fridge screen: large type, big tap targets */
body.fridge { padding:24px; font-size:24px; }
.f-top { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:16px; }
.f-clock { font-size:110px; line-height:1; }
.f-date { font-size:34px; color:var(--muted); text-transform:capitalize; }
.f-link { color:var(--accent); text-decoration:none; font-size:24px; }
.f-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(340px, 1fr)); gap:16px; }
.f-lists { display:contents; }
.f-card { background:var(--card); border:1px solid var(--line); border-radius:16px; padding:16px 20px; }
.f-card h2 { font-size:30px; margin:0 0 8px; }
.fridge .muted { font-size:22px; }
.f-item { display:flex; align-items:center; gap:14px; width:100%; min-height:60px; background:none; color:var(--fg); text-align:left; font-size:28px; padding:6px 4px; border-radius:10px; }
.f-item:active { background:var(--bg); }
.f-box { width:36px; height:36px; flex:none; border:2px solid var(--accent); border-radius:8px; display:inline-flex; align-items:center; justify-content:center; color:var(--accent); }
.f-item.done .f-box { background:var(--accent); color:#fff; }
.f-item:disabled { opacity:1; cursor:default; }
.fridge .row input { font-size:22px; }
.fridge button { font-size:22px; }
.f-ask { margin-top:16px; }
.f-ask #answer { margin-top:12px; font-size:24px; }

/* ---- Projetos: project colours, grid, project page, rich items, dialogs */
.pc-violet { --pc:#7c5cff; } .pc-blue { --pc:#3b82f6; } .pc-teal { --pc:#14b8a6; } .pc-green { --pc:#22a55a; } .pc-yellow { --pc:#e0a800; }
.pc-orange { --pc:#f97316; } .pc-red { --pc:#e5484d; } .pc-pink { --pc:#e04f9a; } .pc-gray { --pc:#8b8b94; }
.p-tile { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; flex:none; border-radius:10px; font-size:22px;
  background:color-mix(in srgb, var(--pc) 22%, var(--card)); border:1px solid color-mix(in srgb, var(--pc) 45%, transparent); }
.p-tile.big { width:64px; height:64px; border-radius:16px; font-size:36px; }
.p-dot { display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; flex:none; border-radius:7px; font-size:14px;
  background:color-mix(in srgb, var(--pc) 22%, var(--card)); }
main.proj { max-width:1080px; }
main.proj select, main.proj input[type=number], main.proj input[type=date], main.proj input[type=text], main.proj textarea, .dlg textarea, .dlg select, .dlg input[type=text] {
  padding:9px 11px; border:1px solid var(--line); border-radius:10px; background:var(--card); color:var(--fg); font:inherit; }
.p-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:14px; margin:16px 0; }
.p-card { display:flex; flex-direction:column; gap:10px; padding:16px; border:1px solid var(--line); border-radius:14px; background:var(--card);
  color:var(--fg); text-decoration:none; text-align:left; min-height:150px; transition:border-color .15s, transform .15s; }
.p-card:hover { border-color:var(--accent); transform:translateY(-1px); }
.p-card h3 { margin:0; font-size:20px; }
.p-meta { display:flex; flex-direction:column; flex:1; }
.p-foot { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.p-new { align-items:center; justify-content:center; border-style:dashed; background:none; color:var(--accent); font-size:18px; }
.avatars { display:inline-flex; }
.avatar { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; flex:none; border-radius:50%; font-size:12px;
  background:color-mix(in srgb, var(--accent) 20%, var(--card)); border:2px solid var(--card); color:var(--fg); }
.avatars .avatar + .avatar { margin-left:-8px; }
.p-hero { display:flex; align-items:center; gap:16px; margin:4px 0 18px; }
.p-hero h1 { font-size:30px; }
.p-sub { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:4px; }
.back { color:var(--accent); text-decoration:none; }
.p-compose { display:flex; gap:8px; align-items:flex-end; background:var(--card); border:1px solid var(--line); border-radius:16px; padding:8px; }
.p-compose:focus-within { border-color:var(--accent); }
main.proj .p-compose textarea { flex:1; border:0; resize:none; background:none; padding:8px; max-height:160px; outline:none; }
.p-compose button { width:40px; height:40px; padding:0; border-radius:50%; }
.suggest.left { justify-content:flex-start; margin:10px 0 0; padding:0; max-width:none; }
.p-cols { display:grid; grid-template-columns:minmax(0, 1fr) 320px; gap:18px; margin-top:20px; align-items:start; }
.p-side .card:first-child { margin-top:0; }
.list-tabs { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
.list-card { margin-top:0; }
.list-card h2 { margin:0; }
.menu { position:relative; }
.menu summary { list-style:none; cursor:pointer; padding:4px 10px; border-radius:8px; font-size:20px; color:var(--muted); }
.menu summary::-webkit-details-marker { display:none; }
.menu summary:hover { background:var(--bg); }
.menu-pop { position:absolute; right:0; top:100%; z-index:5; display:flex; flex-direction:column; align-items:stretch; min-width:180px;
  background:var(--card); border:1px solid var(--line); border-radius:10px; padding:6px; box-shadow:0 8px 24px rgb(0 0 0 / .15); }
.menu-pop button { text-align:left; padding:8px 10px; color:var(--fg); }
.menu-pop button:hover { background:var(--bg); }
.danger-text { color:#d33 !important; }
.add-item { display:flex; flex-wrap:wrap; gap:8px; margin:10px 0 6px; }
.add-item input[type=text]:first-child { flex:1 1 200px; }
main.proj input.small { flex:0 1 110px; min-width:80px; }
.p-group { border-radius:10px; }
.p-group h3 { font-size:14px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); margin:14px 0 2px; }
.p-group.drop-in { outline:2px dashed var(--accent); outline-offset:2px; }
.p-item { position:relative; }
.p-item.dragging { opacity:.45; }
.p-item.drop-before { box-shadow:inset 0 2px 0 var(--accent); }
.p-item.drop-after { box-shadow:inset 0 -2px 0 var(--accent); }
.p-handle { cursor:grab; color:var(--muted); padding:0 4px; touch-action:none; user-select:none; font-size:14px; letter-spacing:-2px; opacity:.5; }
.p-item:hover .p-handle { opacity:1; }
.p-text { flex:1; min-width:0; cursor:text; overflow-wrap:anywhere; padding:6px 0; }
.p-tags { display:flex; gap:4px; flex-wrap:wrap; justify-content:flex-end; }
.tag { font-size:13px; padding:1px 8px; border-radius:999px; background:var(--bg); border:1px solid var(--line); color:var(--muted); white-space:nowrap; }
.tag.who { color:var(--accent); border-color:color-mix(in srgb, var(--accent) 40%, transparent); }
.tag.late, .overdue .when { color:#d33; border-color:#d33; }
ul.items li.p-item.done .tag { opacity:.6; text-decoration:none; }
.p-item.editing { display:block; padding:8px 0; }
.p-edit { display:flex; flex-wrap:wrap; gap:8px; align-items:flex-end; }
.p-edit > input[type=text] { flex:1 1 100%; }
.p-edit .field { margin:0; }
.p-done { margin-top:10px; }
.p-done summary { cursor:pointer; color:var(--muted); padding:6px 0; }
.p-chats { list-style:none; padding:0; margin:0; }
.p-chats li { display:flex; flex-direction:column; padding:6px 0; border-bottom:1px solid var(--line); }
.p-chats li:last-child { border-bottom:none; }
.p-chats a { color:var(--fg); text-decoration:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.p-chats a:hover { color:var(--accent); }
.p-instr { white-space:pre-wrap; margin:0; font-size:14px; }
.dlg { border:1px solid var(--line); border-radius:16px; background:var(--card); color:var(--fg); padding:18px 20px; width:min(520px, 92vw); }
.dlg::backdrop { background:rgb(0 0 0 / .45); }
.dlg-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; }
.dlg-head h2 { margin:0; font-size:20px; }
.dlg-head .link { font-size:22px; }
.dlg textarea { width:100%; resize:vertical; }
.dlg .field input[type=text] { width:100%; }
.actions.spread { justify-content:space-between; }
button.danger { background:#d33; }
.icon-pick { display:grid; grid-template-columns:repeat(8, 1fr); gap:4px; }
.icon-opt { background:var(--bg); color:var(--fg); padding:6px 0; font-size:20px; border:2px solid transparent; }
.icon-opt.on { border-color:var(--accent); }
.color-pick { display:flex; gap:8px; flex-wrap:wrap; }
.swatch { width:30px; height:30px; padding:0; border-radius:50%; background:var(--pc); border:3px solid var(--card); outline:2px solid transparent; }
.swatch.on { outline-color:var(--fg); }
.share-rows { display:flex; flex-direction:column; gap:6px; margin:8px 0; }
.share-row { display:flex; align-items:center; gap:10px; padding:4px 0; }
.share-row .chat-del { opacity:1; }
.invite { border:1px solid var(--line); border-radius:10px; padding:8px 12px; margin-top:10px; }
.invite p { margin:4px 0; }
/* chat sidebar + project chats */
.proj-side { display:flex; flex-direction:column; gap:1px; padding:4px 0 8px; border-bottom:1px solid var(--line); margin-bottom:6px; }
.proj-head { background:none; color:var(--muted); text-align:left; padding:6px 10px; font-size:14px; }
.proj-row { display:flex; align-items:center; gap:8px; padding:6px 10px; border-radius:8px; color:var(--fg); text-decoration:none; font-size:14px; }
.proj-row:hover, .proj-row.active { background:var(--bg); }
.proj-row.muted { color:var(--muted); }
.crumb { color:var(--accent); text-decoration:none; }
.msg .author { font-size:12px; margin:0 6px 2px; }
@media (max-width: 860px) { .p-cols { grid-template-columns:1fr; } }
@media (max-width: 560px) { .p-hero h1 { font-size:24px; } .p-tile.big { width:52px; height:52px; font-size:28px; } .p-tags { flex-basis:100%; justify-content:flex-start; padding-left:34px; } .p-item { flex-wrap:wrap; } }
/* fridge, restyled to match */
.f-head { display:flex; align-items:center; gap:12px; margin-bottom:6px; }
.f-head h2 { margin:0; }
.fridge .p-tile { width:52px; height:52px; font-size:30px; border-radius:14px; }
.pc-edge { border-top:6px solid var(--pc); }
.f-proj { white-space:nowrap; }
.f-cat { font-size:20px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); margin:12px 0 0; }
.f-fold { background:none; color:var(--muted); padding:8px 4px; }
.fridge .tag { font-size:20px; padding:2px 12px; }
.f-add { margin-top:8px; }
.fridge ul.upcoming li { align-items:center; }
[hidden] { display:none !important; }
.p-side .card h2, .list-card h2 { margin-top:0; font-size:20px; }

/* search + pins (chat sidebar) */
.chat-search { width:100%; font-size:14px; padding:7px 10px; }
.search-results { display:flex; flex-direction:column; gap:2px; overflow-y:auto; flex:1; }
.search-hit { display:flex; flex-direction:column; gap:2px; background:none; color:var(--fg); text-align:left; padding:8px 10px; border-radius:8px; font-size:14px; }
.search-hit:hover, .search-hit.active { background:var(--bg); }
.hit-title { font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hit-snippet { font-size:12.5px; line-height:1.35; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.hit-snippet mark { background:color-mix(in srgb, var(--accent) 25%, transparent); color:inherit; border-radius:3px; padding:0 1px; }
.side-label { font-size:12px; text-transform:uppercase; letter-spacing:.04em; padding:8px 10px 2px; }
.chat-row.pinned .chat-del { opacity:1; color:var(--accent); }
.topbar .pin { margin-left:auto; flex:none; background:none; color:var(--accent); font-size:20px; padding:2px 8px; }

/* note card */
.note-path { font-size:12.5px; word-break:break-all; }
.note-preview { margin:6px 0; }
.note-preview .md { border-left:3px solid var(--line); padding:4px 12px; margin-top:6px; max-height:320px; overflow:auto; font-size:14px; }

/* recurring + activity */
.tag.rec { color:var(--accent); }
.activity { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; font-size:14px; }
.activity li { display:flex; gap:8px; align-items:baseline; }
.activity li .muted { font-size:12px; white-space:nowrap; }

/* shopping mode */
.shop-btn { white-space:nowrap; }
body.shopping { overflow:hidden; }
.shop { position:fixed; inset:0; z-index:50; background:var(--bg); overflow-y:auto; padding:max(12px, env(safe-area-inset-top)) 16px 40px; display:flex; flex-direction:column; gap:10px; }
.shop > * { width:100%; max-width:720px; margin:0 auto; }
.shop-head { display:flex; align-items:center; gap:12px; }
.shop-head h2 { margin:0; font-size:22px; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.shop-x { font-size:32px; line-height:1; padding:0 8px; color:var(--fg); }
.shop-add { display:flex; gap:8px; }
.shop-add input { flex:1; font-size:18px; padding:10px 12px; }
.shop-hints { align-items:center; }
.shop-list { display:flex; flex-direction:column; gap:4px; }
.shop-list h3 { margin:14px 0 2px; font-size:14px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); }
.shop-item { display:flex; align-items:center; gap:14px; width:100%; min-height:58px; background:var(--card); color:var(--fg); border:1px solid var(--line); border-radius:12px; text-align:left; font-size:21px; padding:8px 12px; }
.shop-item:active { transform:scale(.99); }
.shop-box { width:30px; height:30px; flex:none; border:2px solid var(--accent); border-radius:8px; display:inline-flex; align-items:center; justify-content:center; color:#fff; font-size:18px; }
.shop-item.done { opacity:.55; }
.shop-item.done .grow { text-decoration:line-through; }
.shop-item.done .shop-box { background:var(--accent); }
.shop-empty { text-align:center; font-size:22px; padding:30px 0; }
.shop .p-done { display:flex; flex-direction:column; gap:4px; margin-top:10px; }
