/* Visual garden bed planner. Layered on top of tools.css tokens. */
.planner {
  --soil: #6b4f34;
  --soil-2: #5c4129;
  --grid-line: rgba(255, 255, 255, 0.16);
  --z-shade: rgba(38, 42, 86, 0.34);
  --z-wet: rgba(36, 92, 168, 0.34);
  --z-dry: rgba(196, 150, 52, 0.32);
  display: grid;
  gap: 16px;
}

/* Bars: bed tabs + tool bar */
.planner-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--tool-border);
  background: #fff;
  border-radius: 8px;
  padding: 10px 12px;
}

.planner-bar-label {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--tool-muted);
  font-weight: 700;
  margin-right: 2px;
}

.planner-sep {
  width: 1px;
  align-self: stretch;
  background: var(--tool-border);
  margin: 2px 4px;
}

.planner-spacer { margin-left: auto; }

.tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--tool-border);
  background: #fff;
  color: var(--tool-ink);
  border-radius: 7px;
  padding: 7px 11px;
  font: inherit;
  font-weight: 700;
  font-size: 0.88rem;
  cursor: pointer;
  min-height: 36px;
}

.tab:hover,
.tab:focus-visible { border-color: #98c9ad; background: var(--tool-soft); outline: none; }

.tab.is-active {
  border-color: var(--tool-accent);
  background: var(--tool-soft-2);
  color: var(--tool-accent-dark);
  box-shadow: inset 0 -2px 0 var(--tool-accent);
}

.tab-x {
  border: 0;
  background: transparent;
  color: var(--tool-muted);
  font-weight: 700;
  cursor: pointer;
  padding: 0 2px;
  border-radius: 4px;
  line-height: 1;
}
.tab-x:hover { color: var(--tool-bad); }

.planner-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--tool-border);
  background: #fff;
  color: var(--tool-accent-dark);
  border-radius: 7px;
  padding: 8px 11px;
  font: inherit;
  font-weight: 700;
  font-size: 0.86rem;
  cursor: pointer;
  min-height: 36px;
}
.planner-btn:hover,
.planner-btn:focus-visible { border-color: #98c9ad; background: var(--tool-soft); outline: none; }
.planner-btn[disabled] { opacity: 0.4; cursor: not-allowed; }
.planner-btn.is-danger { color: var(--tool-bad); }
.planner-btn.is-danger:hover { border-color: #d8a6a6; background: #fbf1f1; }

/* mode tools (plant / zones / objects / erase) */
.mode-tool.is-active {
  border-color: var(--tool-accent);
  background: var(--tool-accent);
  color: #fff;
}

.planner-saved {
  font-size: 0.8rem;
  color: var(--tool-accent);
  font-weight: 700;
  opacity: 0;
  transition: opacity 200ms ease;
  align-self: center;
}
.planner-saved.show { opacity: 1; }

.planner-main {
  display: grid;
  grid-template-columns: minmax(0, 234px) minmax(0, 1fr) minmax(0, 290px);
  gap: 16px;
  align-items: start;
}

/* Palette */
.planner-palette {
  position: sticky;
  top: 16px;
  max-height: calc(100vh - 32px);
  overflow: auto;
}

.planner-card {
  border: 1px solid var(--tool-border);
  background: #fff;
  border-radius: 8px;
  padding: 14px;
}

.planner-card h2 {
  font-family: var(--tool-serif);
  font-size: 1.02rem;
  margin: 0 0 8px;
}

.palette-search {
  width: 100%;
  border: 1px solid #c9d8d0;
  border-radius: 7px;
  padding: 8px 10px;
  font: inherit;
  font-size: 0.92rem;
  margin-bottom: 10px;
}

.palette-group { margin-bottom: 12px; }

.palette-group h3 {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--tool-muted);
  margin: 0 0 7px;
}

.palette-items { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }

.palette-item {
  display: flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--tool-border);
  border-left: 4px solid var(--cat, #9bbf9b);
  background: #fff;
  border-radius: 7px;
  padding: 6px 8px;
  font: inherit;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--tool-ink);
  cursor: pointer;
  text-align: left;
  min-width: 0;
}
.palette-item span.emoji { font-size: 1.05rem; line-height: 1; }
.palette-item span.txt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.palette-item:hover,
.palette-item:focus-visible { border-color: #98c9ad; background: var(--tool-soft); outline: none; }
.palette-item.is-active {
  border-color: var(--tool-accent);
  background: var(--tool-soft-2);
  box-shadow: 0 0 0 2px rgba(47, 109, 58, 0.18);
}

.palette-cat-results { display: grid; gap: 5px; }
.palette-cat-results .palette-item { width: 100%; }
.palette-meta { font-size: 0.72rem; color: var(--tool-muted); font-weight: 600; margin-left: auto; white-space: nowrap; }

/* Stage + bed */
.planner-stage { min-width: 0; }

.planner-bed-wrap {
  position: relative;
  border-radius: 12px;
  padding: 12px;
  background: repeating-linear-gradient(45deg, var(--soil) 0 14px, var(--soil-2) 14px 28px);
  box-shadow: inset 0 0 0 6px rgba(0, 0, 0, 0.12), 0 10px 24px rgba(26, 48, 22, 0.12);
}

.planner-bed {
  display: grid;
  width: 100%;
  position: relative;
  background: var(--soil);
  border-radius: 4px;
  outline: 2px solid rgba(255, 255, 255, 0.1);
  touch-action: none;
  user-select: none;
}

.bed-cell {
  border: 0;
  margin: 0;
  padding: 0;
  background: transparent;
  border-right: 1px solid var(--grid-line);
  border-bottom: 1px solid var(--grid-line);
  cursor: cell;
  min-width: 0;
}
.bed-cell[data-zone="shade"] { background: var(--z-shade); }
.bed-cell[data-zone="wet"] { background: var(--z-wet); }
.bed-cell[data-zone="dry"] { background: var(--z-dry); }
.bed-cell:hover { background-color: rgba(255, 255, 255, 0.08); }
.planner-bed.armed-plant .bed-cell:hover { background-color: rgba(132, 197, 130, 0.32); }

.bed-token {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 2px;
  border-radius: 50%;
  border: 1.5px solid rgba(0, 0, 0, 0.25);
  background: var(--cat, #8fbf7f);
  color: #16331f;
  cursor: grab;
  overflow: hidden;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.22);
  font-weight: 700;
  z-index: 2;
}
.bed-token.is-object { border-radius: 9px; background: var(--obj, #c9bfa6); cursor: grab; }
.bed-token .t-emoji { font-size: clamp(0.8rem, 2.3vw, 1.5rem); line-height: 1; }
.bed-token .t-label {
  font-size: 0.58rem; line-height: 1; max-width: 96%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 0 2px;
}
.bed-token .t-count {
  position: absolute; top: 1px; right: 3px;
  font-size: 0.56rem; background: rgba(0,0,0,0.5); color: #fff;
  border-radius: 8px; padding: 0 4px; line-height: 1.4;
}
.bed-token.is-warn { border-color: var(--tool-warn); box-shadow: 0 0 0 2px rgba(139, 91, 19, 0.6); }
.bed-token.is-bad { border-color: var(--tool-bad); box-shadow: 0 0 0 2px rgba(156, 47, 47, 0.6); }
.bed-token.is-dragging { opacity: 0.35; }
.bed-token:hover { filter: brightness(1.05); }

/* drag ghost */
.bed-ghost {
  position: absolute;
  pointer-events: none;
  border-radius: 50%;
  border: 2px dashed rgba(255,255,255,0.9);
  background: rgba(132, 197, 130, 0.35);
  z-index: 5;
  display: none;
}
.bed-ghost.bad { background: rgba(156, 47, 47, 0.4); border-color: #ffd2d2; }
.bed-ghost.show { display: block; }

.planner-hint {
  color: var(--tool-muted);
  font-size: 0.9rem;
  margin: 10px 2px 0;
  min-height: 1.2em;
}
.planner-hint strong { color: var(--tool-accent-dark); }

.planner-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin: 10px 2px 0;
  font-size: 0.78rem;
  color: var(--tool-muted);
}
.planner-legend span { display: inline-flex; align-items: center; gap: 5px; }
.planner-legend i { width: 13px; height: 13px; border-radius: 3px; display: inline-block; border: 1px solid rgba(0,0,0,0.15); }

/* Side panels */
.planner-side { display: grid; gap: 14px; }
@media (min-width: 1001px) {
  .planner-side { position: sticky; top: 16px; }
}

.metric-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-bottom: 10px; }
.metric { background: var(--tool-soft); border: 1px solid var(--tool-border); border-radius: 8px; padding: 9px 10px; }
.metric strong { display: block; font-size: 1.3rem; line-height: 1.1; }
.metric span { display: block; font-size: 0.74rem; color: var(--tool-muted); margin-top: 2px; }

.fill-bar { height: 9px; border-radius: 6px; background: #e7ece4; overflow: hidden; margin: 4px 0 6px; }
.fill-bar > i { display: block; height: 100%; background: linear-gradient(90deg, #5ba35f, #2f6d3a); border-radius: 6px; transition: width 160ms ease; }

.warn-list, .remind-list, .shop-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.warn-list li {
  font-size: 0.85rem; border-left: 3px solid var(--tool-warn);
  background: #fbf6ec; border-radius: 0 7px 7px 0; padding: 7px 10px; color: #5d4a22;
}
.warn-list li.is-bad { border-left-color: var(--tool-bad); background: #fbf1f1; color: #6b2626; }
.warn-list li.is-good { border-left-color: var(--tool-accent); background: var(--tool-soft); color: var(--tool-accent-dark); }
.warn-list li small { display: block; opacity: 0.85; font-weight: 600; margin-top: 2px; }

.remind-list li { font-size: 0.85rem; display: flex; align-items: center; gap: 8px; color: var(--tool-muted); }
.remind-list li b { color: var(--tool-ink); }

.shop-list li {
  font-size: 0.85rem; display: flex; align-items: center; gap: 8px;
  border-bottom: 1px solid #eef2ee; padding-bottom: 6px;
}
.shop-list li .s-emoji { font-size: 1rem; }
.shop-list li a { color: var(--tool-accent-dark); font-weight: 700; text-decoration: none; }
.shop-list li .s-qty { margin-left: auto; font-weight: 700; }
.shop-total { display: flex; justify-content: space-between; font-weight: 700; margin-top: 8px; font-size: 0.9rem; }

.planner-empty { color: var(--tool-muted); font-size: 0.85rem; margin: 0; }

/* Journal */
.planner-journal { border: 1px solid var(--tool-border); background: #fff; border-radius: 8px; padding: 16px; }
.planner-journal h2 { font-family: var(--tool-serif); font-size: 1.1rem; margin: 0 0 4px; }
.journal-form { display: grid; gap: 8px; margin: 12px 0 16px; }
.journal-form textarea {
  width: 100%; border: 1px solid #c9d8d0; border-radius: 7px; padding: 10px 11px;
  font: inherit; font-size: 0.95rem; min-height: 64px; resize: vertical;
}
.journal-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.journal-entry { border: 1px solid var(--tool-border); border-radius: 8px; padding: 10px 12px; background: var(--tool-soft); }
.journal-entry header { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 4px; }
.journal-entry time { font-size: 0.78rem; color: var(--tool-muted); font-weight: 700; }
.journal-entry p { margin: 0; font-size: 0.92rem; white-space: pre-wrap; }
.journal-del { border: 0; background: transparent; color: var(--tool-bad); font-weight: 700; font-size: 0.8rem; cursor: pointer; padding: 2px 6px; border-radius: 6px; }
.journal-del:hover { background: #fbf1f1; }

@media (max-width: 1000px) {
  .planner-main { grid-template-columns: minmax(0, 200px) minmax(0, 1fr); }
  .planner-side { grid-column: 1 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .planner-main { grid-template-columns: 1fr; }
  .planner-palette { position: static; max-height: none; }
  .planner-side { grid-template-columns: 1fr; }
}

.planner-bed:focus-visible,
.palette-item:focus-visible,
.planner-btn:focus-visible,
.tab:focus-visible,
.bed-cell:focus-visible,
.bed-token:focus-visible { outline: 2px solid var(--tool-accent); outline-offset: 2px; }

/* Print: show only the bed + legend */
@media print {
  body.tools-page { background: #fff; }
  .tools-nav, .tools-hero, .planner-bar, .planner-palette, .planner-side,
  .planner-journal, .tool-footer, .planner-hint, .palette-search { display: none !important; }
  .planner-main { display: block; }
  .planner-bed-wrap { box-shadow: none; break-inside: avoid; }
  .planner-legend { margin-top: 8px; }
}
