@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&family=Space+Mono:wght@400;700&display=swap');

:root {
  color-scheme: light;
  --paper: #FF91AF;
  --paper-deep: #B284BE;
  --card: #000000;
  --ink: #000000;
  --muted: #000000;
  --line: #000000;
  --leaf: #000000;
  --leaf-dark: #000000;
  --leaf-pale: #000000;
  --gold: #000000;
  --gold-pale: #000000;
  --rust: #000000;
  --rust-pale: #000000;
  --serif: "comic_sans", Georgia, serif;
  --sans: "papyrus", sans-serif;
  --mono: "papyrus", monospace;
}

* { box-sizing: border-box; }
.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; }
html { min-width: 320px; background: var(--paper); scroll-behavior: smooth; }
body {
  margin: 0;
  min-height: 100dvh;
  color: var(--ink);
  background:
    radial-gradient(ellipse at 92% 0%, rgba(222, 224, 207, .38), transparent 35rem),
    var(--paper);
  font-family: var(--sans);
  -webkit-font-smoothing: antialiased;
}
button, input, textarea, select { font: inherit; }
button { color: inherit; }
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: 3px solid rgba(82, 108, 84, .34);
  outline-offset: 2px;
}
.shell { width: min(1160px, calc(100% - 64px)); margin-inline: auto; }
.topbar { border-bottom: 1px solid rgba(77, 93, 72, .15); }
.topbar-inner { display:flex; align-items:center; justify-content:space-between; height:78px; }
.brand { display:flex; align-items:center; gap:12px; color:var(--ink); text-decoration:none; }
.brand-name { font-family:var(--serif); font-size:25px; letter-spacing:-.02em; }
.brand-note { color:var(--muted); font-family:var(--mono); font-size:10px; letter-spacing:.08em; text-transform:uppercase; }
.top-note { display:flex; align-items:center; gap:9px; color:var(--muted); font-size:12px; }
.top-note svg { color:var(--leaf); }
.intro { display:grid; grid-template-columns:1fr auto; align-items:end; gap:40px; padding:57px 0 35px; }
.eyebrow { margin:0 0 13px; color:var(--leaf); font: 11px var(--mono); letter-spacing:.13em; text-transform:uppercase; }
h1 { margin:0; max-width:710px; font: normal clamp(43px, 6vw, 70px)/.98 var(--serif); letter-spacing:-.025em; }
.intro-copy { margin:18px 0 0; max-width:500px; color:#737d71; font-size:15px; line-height:1.65; }
.toolbar { padding:21px 0 22px; border-top:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:20px; }
.collection-label { display:flex; align-items:baseline; gap:12px; }
.collection-label h2 { margin:0; font:normal 31px var(--serif); }
.count { color:var(--muted); font:11px var(--mono); }
.toolbar-actions { display:flex; align-items:center; gap:10px; }
.search-wrap { position:relative; }
.search-wrap svg { position:absolute; left:13px; top:50%; transform:translateY(-50%); color:#828b7d; pointer-events:none; }
.search { height:42px; width:230px; padding:0 13px 0 39px; border:1px solid #d6d9cb; border-radius:4px; background:rgba(252,251,246,.62); color:var(--ink); font-size:13px; }
.search::placeholder { color:#92998e; }
.filter { height:42px; padding:0 32px 0 12px; border:1px solid #000000; border-radius:4px; appearance:none; background:#fcfbf6 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='m2 4 4 4 4-4' fill='none' stroke='%23778176' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 12px center; color:#59665a; font-size:12px; cursor:pointer; }
.button { border:0; display:inline-flex; align-items:center; justify-content:center; gap:9px; min-height:42px; padding:0 16px; border-radius:4px; background:var(--leaf); color:#fffdf5; font-size:13px; font-weight:600; cursor:pointer; transition:background .18s ease, transform .18s ease; }
.button:hover { background:var(--leaf-dark); transform:translateY(-1px); }
.button:disabled { opacity:.55; cursor:wait; transform:none; }
.button-secondary { border:1px solid #d3d8ca; background:transparent; color:var(--leaf-dark); }
.button-secondary:hover { background:var(--leaf-pale); color:var(--leaf-dark); }
.streak-card { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:22px; margin:0 0 24px; padding:20px 22px; border:1px solid rgba(0,0,0,.3); border-radius:7px; background:rgba(255,255,255,.28); }
.streak-stat { min-width:145px; display:flex; align-items:baseline; gap:8px; }
.streak-number { font:normal 46px/.9 var(--serif); letter-spacing:-.04em; }
.streak-unit { font:10px var(--mono); letter-spacing:.04em; text-transform:uppercase; }
.streak-kicker { margin:0 0 4px; font:10px var(--mono); letter-spacing:.12em; text-transform:uppercase; }
.streak-copy h2 { margin:0; font:normal 23px/1.15 var(--serif); }
.streak-message { margin:5px 0 0; font-size:12px; line-height:1.45; }
.streak-best { margin:5px 0 0; font:10px var(--mono); }
.streak-button { white-space:nowrap; }
.reminder-card { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:20px; margin:0 0 24px; padding:18px 22px; border:1px solid rgba(0,0,0,.3); border-radius:7px; background:rgba(255,255,255,.2); }
.reminder-copy h2 { margin:0; font:normal 22px/1.2 var(--serif); }
.reminder-status { max-width:520px; margin:5px 0 0; font-size:12px; line-height:1.45; }
.reminder-controls { display:flex; align-items:end; gap:10px; }
.reminder-time-field { display:flex; flex-direction:column; gap:5px; font:10px var(--mono); letter-spacing:.06em; text-transform:uppercase; }
.reminder-time-field input { min-height:42px; padding:0 10px; border:1px solid rgba(0,0,0,.35); border-radius:4px; background:rgba(255,255,255,.55); color:var(--ink); }
.reminder-actions { display:flex; gap:8px; }
.reminder-actions .button { white-space:nowrap; }
.reminder-actions .button[hidden] { display:none; }
.plants-list { border-top:1px solid var(--line); }
.plant-row { display:grid; grid-template-columns:minmax(250px, 1.2fr) minmax(150px,.8fr) minmax(160px,.85fr) minmax(205px,1fr) auto; align-items:center; gap:21px; min-height:112px; padding:18px 9px; border-bottom:1px solid var(--line); animation:rise .36s both; }
@keyframes rise { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }
.plant-main { display:flex; align-items:center; gap:17px; min-width:0; }
.plant-seal { position:relative; flex:0 0 53px; height:53px; display:grid; place-items:center; border-radius:50%; color:#546f54; background:#e5ecdf; }
.plant-seal::before { content:""; position:absolute; inset:5px; border:1px solid rgba(82,108,84,.2); border-radius:50%; }
.plant-seal.gold { color:#9e7643; background:#f2ead8; }
.plant-seal.rose { color:#a66e59; background:#f2e5dc; }
.plant-name { margin:0 0 4px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font:normal 25px/1.05 var(--serif); }
.plant-species { margin:0; color:var(--muted); font-size:12px; font-style:italic; }
.meta-label { margin:0 0 6px; color:#92988c; font:9px var(--mono); letter-spacing:.1em; text-transform:uppercase; }
.meta-value { margin:0; color:#4b594c; font-size:13px; line-height:1.4; }
.care-cell { display:flex; align-items:center; gap:10px; }
.care-dot { width:8px; height:8px; flex:0 0 8px; border-radius:50%; background:#84977c; }
.care-dot.due { background:#c17956; }
.care-dot.soon { background:#c3a15c; }
.care-copy { min-width:0; }
.care-copy .meta-value { font-size:12px; }
.care-action { color:#697367; font-size:11px; margin-top:2px; }
.row-actions { display:flex; align-items:center; gap:7px; }
.icon-button { width:35px; height:35px; display:grid; place-items:center; border:1px solid transparent; border-radius:4px; background:transparent; color:#748073; cursor:pointer; }
.icon-button:hover { border-color:#d8ddcf; background:#f1f1e8; color:var(--leaf-dark); }
.icon-button.delete:hover { border-color:#e4ccc2; background:var(--rust-pale); color:var(--rust); }
.done-button { white-space:nowrap; min-height:35px; padding:0 10px; border:1px solid #cbd6c7; border-radius:4px; background:transparent; color:var(--leaf-dark); font-size:11px; font-weight:600; cursor:pointer; }
.done-button:hover { background:var(--leaf-pale); }
.done-button:disabled { color:#919b8f; cursor:default; border-color:#e0e3d8; }
.notice { min-height:22px; margin:8px 0 0; color:var(--leaf-dark); font-size:13px; }
.notice.error { color:#a44e3e; }
.notice:empty { display:none; }
.loading-state, .empty-state, .error-state, .no-results { margin:22px 0; padding:62px 24px; text-align:center; border:1px dashed #d2d8c9; border-radius:5px; background:rgba(252,251,246,.52); }
.loading-state { height:150px; border-style:solid; background:linear-gradient(90deg,#efeee5 20%,#f7f6ef 38%,#efeee5 60%); background-size:300% 100%; animation:shimmer 1.5s ease-in-out infinite; }
@keyframes shimmer { to { background-position:-150% 0; } }
.empty-leaf { margin:0 auto 18px; width:56px; height:56px; border-radius:50%; display:grid; place-items:center; color:var(--leaf); background:var(--leaf-pale); }
.empty-state h3, .error-state h3, .no-results h3 { margin:0; font:normal 30px var(--serif); }
.empty-state p, .error-state p, .no-results p { max-width:430px; margin:9px auto 20px; color:var(--muted); font-size:13px; line-height:1.6; }
.journal-footer { display:flex; align-items:center; justify-content:space-between; gap:15px; padding:32px 0 45px; color:#879082; font-size:11px; }
.journal-footer span:last-child { font:10px var(--mono); letter-spacing:.06em; text-transform:uppercase; }

dialog { width:min(590px, calc(100% - 28px)); max-height:min(92dvh, 800px); padding:0; border:1px solid #d8ddcf; border-radius:7px; background:var(--card); color:var(--ink); box-shadow:0 24px 80px rgba(42,55,43,.2); }
dialog::backdrop { background:rgba(34,45,36,.42); backdrop-filter:blur(2px); }
.dialog-head { display:flex; align-items:flex-start; justify-content:space-between; padding:25px 27px 18px; border-bottom:1px solid var(--line); }
.dialog-kicker { margin:0 0 5px; color:var(--leaf); font:10px var(--mono); letter-spacing:.1em; text-transform:uppercase; }
.dialog-head h2 { margin:0; font:normal 33px var(--serif); }
.close-button { border:0; background:none; color:#7e887d; cursor:pointer; padding:5px; }
.plant-form { padding:22px 27px 26px; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px 14px; }
.field { display:flex; flex-direction:column; gap:6px; min-width:0; }
.field.full { grid-column:1/-1; }
.field label { color:#657164; font:10px var(--mono); letter-spacing:.06em; text-transform:uppercase; }
.field input, .field textarea { width:100%; border:1px solid #d7dbcf; border-radius:4px; background:#fffef9; padding:11px 12px; color:var(--ink); font-size:13px; }
.field input { height:42px; }
.field textarea { min-height:82px; resize:vertical; line-height:1.5; }
.field input::placeholder, .field textarea::placeholder { color:#a0a69b; }
.field-error { min-height:14px; color:#a44e3e; font-size:11px; }
.form-error { min-height:18px; margin:12px 0 0; color:#a44e3e; font-size:12px; }
.form-actions { display:flex; justify-content:flex-end; gap:9px; padding-top:9px; }
.form-help { margin:0; color:#8a9287; font-size:11px; }

@media (max-width: 900px) {
  .plant-row { grid-template-columns:minmax(220px,1.2fr) minmax(120px,.7fr) minmax(185px,1fr) auto; }
  .plant-row .planted-cell { display:none; }
}
@media (max-width: 650px) {
  .shell { width:calc(100% - 36px); }
  .topbar-inner { height:66px; }
  .brand-note { display:none; }
  .top-note { font-size:10px; }
  .intro { grid-template-columns:1fr; padding:39px 0 30px; }
  h1 { max-width:calc(100% - 30px); font-size:54px; }
  .intro-copy { max-width:350px; padding-right:10px; font-size:14px; }
  .toolbar { align-items:flex-start; flex-direction:column; gap:14px; padding:20px 0 17px; }
  .toolbar-actions { width:100%; display:grid; grid-template-columns:1fr auto; gap:8px; }
  .search-wrap { min-width:0; }
  .search { width:100%; }
  .filter { width:100%; grid-column:1/-1; }
  .toolbar-actions .button { grid-column:1/-1; grid-row:2; }
  .streak-card { grid-template-columns:auto minmax(0,1fr); gap:12px; padding:16px; }
  .streak-stat { min-width:0; align-self:start; flex-direction:column; gap:2px; }
  .streak-number { font-size:36px; }
  .streak-unit { font-size:9px; }
  .streak-copy h2 { font-size:20px; }
  .streak-button { grid-column:1/-1; width:100%; }
  .reminder-card { grid-template-columns:1fr; gap:12px; padding:16px; }
  .reminder-copy h2 { font-size:20px; }
  .reminder-controls { display:grid; grid-template-columns:minmax(0,1fr); gap:9px; }
  .reminder-time-field { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; }
  .reminder-time-field input { width:100%; }
  .reminder-actions .button { flex:1; }
  .plant-row { grid-template-columns:1fr auto; gap:12px 8px; padding:17px 2px; }
  .plant-main { grid-column:1; grid-row:1; }
  .plant-seal { flex-basis:47px; height:47px; }
  .plant-name { font-size:24px; }
  .row-actions { grid-column:2; grid-row:1; align-self:start; }
  .plant-row .planted-cell { display:block; grid-column:1; grid-row:2; padding-left:64px; }
  .plant-row .care-cell { grid-column:1/-1; grid-row:3; padding-left:64px; }
  .care-copy { flex:1; }
  .journal-footer { align-items:flex-start; flex-direction:column; padding:26px 0 34px; }
  .form-grid { grid-template-columns:1fr; gap:12px; }
  .field.full { grid-column:auto; }
  .dialog-head { padding:20px 20px 15px; }
  .plant-form { padding:18px 20px 21px; }
  .form-actions { flex-wrap:wrap; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}