:root {
  --bg: #0b1120;
  --bg-soft: #0f172a;
  --panel: #131c30;
  --panel-2: #1a2540;
  --border: #233252;
  --text: #e8eef9;
  --muted: #94a3b8;
  --accent: #6366f1;
  --accent-2: #22d3ee;
  --done: #34d399;
  --doing: #60a5fa;
  --plan: #fbbf24;
  --blocked: #f87171;
  --radius: 14px;
  --shadow: 0 14px 40px rgba(0, 0, 0, .35);
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background:
    radial-gradient(1100px 520px at 12% -8%, rgba(99, 102, 241, .18), transparent 60%),
    radial-gradient(900px 520px at 105% 0%, rgba(34, 211, 238, .12), transparent 55%),
    var(--bg);
  color: var(--text);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  -webkit-font-smoothing: antialiased;
  line-height: 1.6;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px clamp(16px, 4vw, 44px);
  flex-wrap: wrap;
}
.brand { display: flex; align-items: center; gap: 14px; }
.logo {
  font-size: 34px;
  line-height: 1;
  filter: drop-shadow(0 4px 10px rgba(99, 102, 241, .5));
}
.brand h1 { margin: 0; font-size: clamp(20px, 3.2vw, 27px); letter-spacing: .5px; }
.tagline { margin: 2px 0 0; color: var(--muted); font-size: 13.5px; }
.topbar-actions { display: flex; gap: 10px; }

button {
  font: inherit;
  cursor: pointer;
  border-radius: 10px;
  border: 1px solid var(--border);
  transition: transform .08s ease, background .15s ease, border-color .15s ease, opacity .15s ease;
  padding: 9px 16px;
}
button:active { transform: translateY(1px); }
.ghost { background: var(--panel); color: var(--text); }
.ghost:hover { background: var(--panel-2); border-color: var(--accent); }
.primary {
  background: linear-gradient(135deg, var(--accent), #8b5cf6);
  color: #fff;
  border-color: transparent;
  font-weight: 600;
}
.primary:hover { filter: brightness(1.08); }

.layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  padding: 4px clamp(16px, 4vw, 44px) 8px;
  align-items: stretch;
}
@media (max-width: 900px) {
  .layout { grid-template-columns: 1fr; }
}

.panel {
  background: linear-gradient(180deg, var(--panel), var(--bg-soft));
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 18px;
  display: flex;
  flex-direction: column;
  min-height: 520px;
}
.panel-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.panel-head h2 { margin: 0; font-size: 16px; }
.hint { color: var(--muted); font-size: 12.5px; }

textarea {
  width: 100%;
  flex: 1;
  resize: vertical;
  background: #0a1020;
  border: 1px solid var(--border);
  border-radius: 12px;
  color: var(--text);
  padding: 14px;
  font: 14px/1.7 "SF Mono", ui-monospace, "Cascadia Code", Menlo, "PingFang SC", monospace;
  outline: none;
  min-height: 240px;
}
textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(99, 102, 241, .18); }
.output { background: #0a1224; }

.stats { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.chip {
  font-size: 12.5px;
  padding: 5px 11px;
  border-radius: 999px;
  background: var(--panel-2);
  border: 1px solid var(--border);
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.chip.done { color: var(--done); border-color: rgba(52, 211, 153, .35); }
.chip.doing { color: var(--doing); border-color: rgba(96, 165, 250, .35); }
.chip.plan { color: var(--plan); border-color: rgba(251, 191, 36, .35); }
.chip.blocked { color: var(--blocked); border-color: rgba(248, 113, 113, .35); }
.chip.proj { color: var(--accent-2); border-color: rgba(34, 211, 238, .35); }

.meta-row { display: flex; gap: 12px; margin-top: 12px; flex-wrap: wrap; }
.meta-row label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--muted); flex: 1; min-width: 140px; }
.meta-row input {
  background: #0a1020;
  border: 1px solid var(--border);
  border-radius: 9px;
  color: var(--text);
  padding: 8px 11px;
  font: inherit;
  font-size: 13.5px;
  outline: none;
}
.meta-row input:focus { border-color: var(--accent); }

.tabs { display: flex; gap: 6px; background: var(--panel-2); padding: 5px; border-radius: 11px; margin-bottom: 12px; }
.tab {
  flex: 1;
  background: transparent;
  border: 1px solid transparent;
  color: var(--muted);
  padding: 9px 8px;
  font-size: 14px;
}
.tab.active {
  background: linear-gradient(135deg, var(--accent), #8b5cf6);
  color: #fff;
  font-weight: 600;
  box-shadow: 0 6px 16px rgba(99, 102, 241, .35);
}

.tab-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.tab-desc { color: var(--muted); font-size: 12.5px; }
.tab-actions { display: flex; gap: 8px; }

.privacy { color: var(--muted); font-size: 12px; margin: 10px 0 0; }

.how {
  margin: 18px clamp(16px, 4vw, 44px);
  padding: 22px;
  background: linear-gradient(180deg, var(--panel), var(--bg-soft));
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.how h2 { margin: 0 0 12px; font-size: 17px; }
.how ol { margin: 0; padding-left: 22px; color: var(--text); }
.how li { margin: 6px 0; }
.how .tip { margin: 14px 0 0; color: var(--muted); font-size: 13px; }
code {
  background: #0a1020;
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 1px 6px;
  font-family: "SF Mono", ui-monospace, Menlo, monospace;
  font-size: 12.5px;
  color: var(--accent-2);
}

.footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 20px clamp(16px, 4vw, 44px) 36px;
  color: var(--muted);
  font-size: 12.5px;
}

.toast {
  position: fixed;
  left: 50%;
  bottom: 32px;
  transform: translateX(-50%) translateY(20px);
  background: #111c33;
  border: 1px solid var(--accent);
  color: var(--text);
  padding: 11px 20px;
  border-radius: 12px;
  box-shadow: var(--shadow);
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease;
  z-index: 50;
  font-size: 14px;
}
.toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
