:root {
  --ink: #26332c;
  --ink-soft: #67716a;
  --paper: #f4f0e6;
  --paper-deep: #eae2d2;
  --cream: #fbf8f0;
  --sage: #647b68;
  --sage-deep: #3f5948;
  --sage-pale: #dce4d8;
  --clay: #b36e51;
  --clay-pale: #ead4c8;
  --gold: #c89c54;
  --line: rgba(54, 69, 59, 0.16);
  --shadow: 0 24px 60px rgba(64, 72, 61, 0.13);
  --serif: "Songti SC", "Noto Serif CJK SC", "STSong", Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", sans-serif;
}

* {
  box-sizing: border-box;
}

html {
  background: var(--paper);
  color: var(--ink);
  scroll-behavior: smooth;
}

body {
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0;
  font-family: var(--sans);
  background:
    radial-gradient(circle at 8% 12%, rgba(255, 255, 255, 0.78), transparent 24rem),
    radial-gradient(circle at 92% 88%, rgba(211, 219, 204, 0.55), transparent 25rem),
    var(--paper);
}

body[data-area="public"] {
  background:
    radial-gradient(circle at 84% 8%, rgba(220, 228, 216, 0.64), transparent 27rem),
    radial-gradient(circle at 8% 92%, rgba(234, 212, 200, 0.38), transparent 24rem),
    var(--paper);
}

body[data-area="vault"] {
  background:
    radial-gradient(circle at 82% 12%, rgba(63, 89, 72, 0.12), transparent 25rem),
    #ece9e1;
}

body[data-area="private"] .planned-page:has(.privacy-note) {
  --inner-accent: #756b78;
}

body[data-area="vault"] .paper-grain {
  opacity: 0.1;
}

button,
input,
textarea,
select {
  font: inherit;
}

button,
a {
  -webkit-tap-highlight-color: transparent;
}

button {
  color: inherit;
}

a {
  color: inherit;
  text-decoration: none;
}

.paper-grain {
  position: fixed;
  inset: 0;
  z-index: 20;
  pointer-events: none;
  opacity: 0.2;
  background-image: repeating-linear-gradient(15deg, transparent 0 8px, rgba(63, 89, 72, 0.045) 9px 10px);
  mix-blend-mode: multiply;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 15;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 24px;
  width: min(1180px, calc(100% - 48px));
  margin: 0 auto;
  padding: 22px 0 16px;
  backdrop-filter: blur(14px);
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  justify-self: start;
}

.brand-mark {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 1px solid rgba(63, 89, 72, 0.35);
  border-radius: 50% 50% 46% 54%;
  font: italic 24px/1 Georgia, serif;
  color: var(--sage-deep);
  background: rgba(251, 248, 240, 0.78);
}

.brand strong,
.brand small {
  display: block;
}

.brand strong {
  font: 600 17px/1.1 Georgia, var(--serif);
  letter-spacing: 0.01em;
}

.brand small {
  margin-top: 4px;
  color: var(--ink-soft);
  font-size: 8px;
  letter-spacing: 0.2em;
}

.desktop-nav {
  display: flex;
  gap: 8px;
  padding: 5px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(251, 248, 240, 0.65);
}

.desktop-nav a {
  padding: 8px 16px;
  border-radius: 999px;
  color: var(--ink-soft);
  font-size: 14px;
}

.desktop-nav a.active {
  color: var(--cream);
  background: var(--sage-deep);
}

.icon-button,
.close-button {
  display: grid;
  place-items: center;
  border: 1px solid var(--line);
  background: rgba(251, 248, 240, 0.72);
  cursor: pointer;
}

.icon-button {
  justify-self: end;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  font-size: 24px;
}

main {
  width: min(1180px, calc(100% - 48px));
  margin: 0 auto;
  padding: 44px 0 90px;
}

.loading-state {
  min-height: 60vh;
  display: grid;
  place-content: center;
  text-align: center;
}

h1,
h2,
h3,
p {
  margin-top: 0;
}

h1,
h2,
h3 {
  font-family: var(--serif);
  font-weight: 500;
}

h1 {
  max-width: 760px;
  margin-bottom: 22px;
  font-size: clamp(42px, 6vw, 76px);
  line-height: 1.08;
  letter-spacing: -0.055em;
}

h2 {
  font-size: clamp(28px, 3vw, 40px);
  letter-spacing: -0.03em;
}

h3 {
  font-size: 21px;
}

.eyebrow {
  margin-bottom: 14px;
  color: var(--sage-deep);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}

.hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(260px, 0.75fr);
  gap: 64px;
  align-items: end;
  padding: 34px 0 68px;
}

.public-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(280px, 0.7fr);
  gap: 70px;
  align-items: center;
  min-height: 66vh;
  padding: 52px 0 80px;
}

.tool-map-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(220px, 0.65fr);
  gap: 70px;
  align-items: center;
  padding: 52px 0 74px;
}

.tool-map-hero h1 {
  max-width: 820px;
}

.tool-count-card {
  display: flex;
  min-height: 250px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 32px;
  border: 1px solid var(--line);
  border-radius: 48% 48% 28px 28px;
  text-align: center;
  background: linear-gradient(145deg, rgba(251, 248, 240, 0.9), rgba(220, 228, 216, 0.72));
  box-shadow: var(--shadow);
}

.tool-count {
  font: 76px/1 Georgia, serif;
  color: var(--sage-deep);
}

.tool-count-card strong {
  margin-top: 8px;
  font-family: var(--serif);
  font-size: 20px;
}

.tool-count-card p {
  margin: 26px 0 0;
  color: var(--ink-soft);
  font-size: 13px;
}

.priority-home-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(250px, 0.55fr);
  gap: 64px;
  align-items: end;
  padding: 42px 0 46px;
}

.priority-home-hero h1 {
  max-width: 860px;
}

.home-date {
  margin: -4px 0 18px;
  color: var(--ink-soft);
  font: 15px/1.5 var(--serif);
  letter-spacing: 0.04em;
}

.home-safety-actions {
  display: grid;
  gap: 0;
  padding: 22px 24px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(251, 248, 240, 0.66);
}

.home-safety-actions .eyebrow {
  margin-bottom: 8px;
}

.home-safety-actions a,
.home-safety-actions button {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 13px 0;
  border: 0;
  border-bottom: 1px solid var(--line);
  color: var(--ink-soft);
  text-align: left;
  background: transparent;
  cursor: pointer;
}

.home-safety-actions a:last-child {
  border-bottom: 0;
}

.home-safety-actions b {
  color: var(--sage-deep);
}

.home-quick-bar {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: rgba(251, 248, 240, 0.76);
}

.home-quick-bar > a,
.home-quick-bar > button,
.home-quick-bar > div {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 92px;
  padding: 18px;
  border: 0;
  border-right: 1px solid var(--line);
  text-align: left;
  background: transparent;
}

.home-quick-bar > button {
  color: inherit;
  cursor: pointer;
}

.home-quick-bar > :last-child {
  border-right: 0;
}

.quick-action-mark {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  color: var(--cream);
  background: var(--sage-deep);
}

.home-quick-bar strong,
.home-quick-bar small {
  display: block;
}

.home-quick-bar strong {
  font-family: var(--serif);
  font-size: 16px;
}

.home-quick-bar small {
  margin-top: 5px;
  color: var(--ink-soft);
  line-height: 1.45;
}

.recent-shortcut small a {
  color: var(--sage-deep);
  font-weight: 700;
}

.priority-board {
  display: grid;
  gap: 18px;
  margin-top: 44px;
}

.direction-card {
  position: relative;
  display: flex;
  min-height: 310px;
  flex-direction: column;
  padding: 30px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 28px;
  transition: transform 180ms ease, box-shadow 180ms ease;
}

.direction-card:hover,
.secondary-direction-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow);
}

.direction-card .status-badge {
  position: absolute;
  top: 24px;
  right: 24px;
}

.direction-rank {
  color: var(--ink-soft);
  font: italic 14px Georgia, serif;
  letter-spacing: 0.08em;
}

.direction-card h2 {
  margin: 62px 0 12px;
  font-size: clamp(32px, 4vw, 50px);
}

.direction-card p {
  max-width: 560px;
  color: var(--ink-soft);
  line-height: 1.75;
}

.direction-link {
  margin-top: auto;
  color: var(--sage-deep);
  font-weight: 700;
}

.happiness-direction,
.primary-growth-direction {
  min-height: 430px;
  padding: 42px;
  background:
    radial-gradient(circle at 85% 20%, rgba(255, 255, 255, 0.75), transparent 16rem),
    linear-gradient(135deg, rgba(214, 229, 204, 0.94), rgba(246, 231, 204, 0.82));
}

.happiness-direction .direction-copy,
.primary-growth-direction .direction-copy {
  max-width: 720px;
}

.happiness-direction h2,
.primary-growth-direction h2 {
  margin-top: 90px;
  font-size: clamp(48px, 7vw, 78px);
}

.happiness-direction p,
.primary-growth-direction p {
  font: 18px/1.85 var(--serif);
}

.direction-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 22px;
}

.direction-tags span {
  padding: 7px 11px;
  border: 1px solid rgba(63, 89, 72, 0.16);
  border-radius: 999px;
  background: rgba(251, 248, 240, 0.52);
  font-size: 12px;
}

.core-direction-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.money-direction {
  background: linear-gradient(145deg, rgba(231, 220, 188, 0.82), rgba(251, 248, 240, 0.9));
}

.growth-direction {
  background: linear-gradient(145deg, rgba(216, 226, 218, 0.9), rgba(251, 248, 240, 0.9));
}

.happiness-summary-direction {
  background: linear-gradient(145deg, rgba(214, 229, 204, 0.86), rgba(246, 231, 204, 0.72));
}

.creator-direction {
  background: linear-gradient(145deg, rgba(226, 216, 232, 0.82), rgba(251, 248, 240, 0.92));
}

.secondary-directions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 34px;
}

.secondary-direction-card {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr) auto;
  gap: 22px;
  align-items: center;
  min-height: 170px;
  padding: 26px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(251, 248, 240, 0.56);
  transition: transform 180ms ease, box-shadow 180ms ease;
}

.secondary-direction-card > span {
  color: var(--ink-soft);
  font: italic 12px Georgia, serif;
}

.secondary-direction-card h2 {
  margin-bottom: 8px;
  font-size: 28px;
}

.secondary-direction-card p {
  margin: 0;
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.65;
}

.secondary-direction-card b {
  color: var(--sage-deep);
  white-space: nowrap;
}

.toolbox-direction {
  background: rgba(234, 212, 200, 0.34);
}

.home-boundary-note {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 36px;
  margin-top: 54px;
  padding: 26px 0;
  border-top: 1px solid var(--line);
  color: var(--ink-soft);
}

.home-boundary-note strong {
  color: var(--ink);
  font-family: var(--serif);
  font-size: 20px;
}

.home-boundary-note p {
  max-width: 760px;
  margin: 8px 0 0;
  line-height: 1.7;
}

.home-boundary-note a {
  flex: 0 0 auto;
  color: var(--sage-deep);
  font-weight: 700;
}

.direction-page {
  max-width: 980px;
  margin: 0 auto;
}

.direction-page-hero {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 32px;
  padding: 46px 0 34px;
}

.direction-page-hero h1 {
  margin-bottom: 18px;
}

.direction-module-list {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 26px;
  background: rgba(251, 248, 240, 0.68);
}

.direction-module-list a {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto 24px;
  gap: 18px;
  align-items: center;
  padding: 24px;
  border-bottom: 1px solid var(--line);
}

.direction-module-list a:last-child {
  border-bottom: 0;
}

.direction-module-list a > span {
  color: var(--clay);
  font: italic 15px Georgia, serif;
}

.direction-module-list h2 {
  margin-bottom: 5px;
  font-size: 24px;
}

.direction-module-list p {
  margin: 0;
  color: var(--ink-soft);
}

.direction-module-list small {
  padding: 6px 9px;
  border-radius: 999px;
  color: var(--sage-deep);
  background: var(--sage-pale);
  font-weight: 700;
}

.direction-module-list b {
  color: var(--sage-deep);
}

.direction-placeholder-note {
  margin-top: 24px;
  padding: 22px 24px;
  border-left: 3px solid var(--sage);
  color: var(--ink-soft);
  background: rgba(220, 228, 216, 0.42);
}

.direction-placeholder-note strong {
  color: var(--ink);
}

.direction-placeholder-note p {
  margin: 7px 0 0;
  line-height: 1.7;
}

.happiness-page {
  max-width: 1040px;
  margin: 0 auto;
}

.happiness-page-hero {
  max-width: 800px;
  padding: 48px 0 42px;
}

.happiness-page-hero h1 {
  margin-bottom: 22px;
  font-size: clamp(48px, 7vw, 76px);
}

.happiness-page-hero > p:last-child {
  max-width: 720px;
  color: var(--ink-soft);
  font: 18px/1.9 var(--serif);
}

.happiness-card-grid {
  display: grid;
  gap: 10px;
}

.happiness-module-card {
  display: grid;
  grid-template-columns: 50px minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  min-height: 84px;
  padding: 14px 20px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(251, 248, 240, 0.76);
  color: var(--ink);
  text-decoration: none;
  transition: background 160ms ease, transform 160ms ease;
}

.happiness-module-card.friction {
  background: linear-gradient(145deg, rgba(226, 231, 219, 0.88), rgba(251, 248, 240, 0.92));
}

.happiness-module-card.joy {
  background: linear-gradient(145deg, rgba(246, 228, 184, 0.76), rgba(251, 248, 240, 0.94));
}

.happiness-module-card.menu {
  background: linear-gradient(145deg, rgba(234, 212, 200, 0.78), rgba(251, 248, 240, 0.94));
}

.happiness-module-card.life-review {
  background: linear-gradient(145deg, rgba(220, 228, 216, 0.72), rgba(240, 231, 218, 0.84));
}

.happiness-module-card.success {
  background: linear-gradient(145deg, rgba(204, 224, 205, 0.82), rgba(251, 248, 240, 0.95));
}

.happiness-module-card.power-quote {
  background: linear-gradient(145deg, rgba(226, 215, 237, 0.72), rgba(251, 248, 240, 0.95));
}

.happiness-module-card:hover {
  background: rgba(220, 228, 216, 0.52);
  transform: translateY(-1px);
}

.happiness-card-icon {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border: 1px solid rgba(63, 89, 72, 0.18);
  border-radius: 50%;
  color: var(--sage-deep);
  background: rgba(251, 248, 240, 0.64);
  font: 22px/1 Georgia, var(--serif);
}

.happiness-card-main {
  display: grid;
  min-width: 0;
  gap: 4px;
}

.happiness-module-card h2 {
  margin: 0;
  font-size: clamp(20px, 2.6vw, 26px);
}

.happiness-card-main p {
  margin: 0;
  color: var(--ink-soft);
  font-size: 14px;
  line-height: 1.6;
}

.private-life-note {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-top: 30px;
  padding: 22px 26px;
  border: 1px solid var(--line);
  border-radius: 20px;
  color: var(--ink-soft);
  background: rgba(251, 248, 240, 0.55);
}

.private-life-note > span {
  display: grid;
  flex: 0 0 auto;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  color: var(--cream);
  background: var(--sage-deep);
}

.private-life-note p {
  margin: 0;
  line-height: 1.7;
}

.private-life-note strong {
  color: var(--ink);
}

.public-hero h1 {
  max-width: 850px;
}

.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 30px;
}

.public-intro-card {
  padding: 34px;
  border: 1px solid var(--line);
  border-radius: 52% 52% 28px 28px;
  background: rgba(251, 248, 240, 0.76);
  box-shadow: var(--shadow);
}

.public-intro-card p {
  margin: 56px 0 34px;
  color: var(--ink-soft);
  font: 18px/1.8 var(--serif);
}

.public-intro-card a {
  color: var(--sage-deep);
  font-weight: 700;
}

.hero-copy {
  color: var(--ink-soft);
  font: 18px/1.8 var(--serif);
}

.date-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 240px;
  padding: 38px 28px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 48% 48% 28px 28px;
  text-align: center;
  background: linear-gradient(145deg, rgba(251, 248, 240, 0.9), rgba(220, 228, 216, 0.78));
  box-shadow: var(--shadow);
}

.date-card::after {
  content: "";
  position: absolute;
  right: -30px;
  bottom: -44px;
  width: 160px;
  height: 160px;
  border: 1px solid rgba(63, 89, 72, 0.2);
  border-radius: 58% 42% 62% 38%;
  z-index: 0;
}

.date-card > * {
  position: relative;
  z-index: 1;
}

.date-card .eyebrow {
  width: 100%;
  margin-bottom: 0;
  white-space: nowrap;
  text-align: center;
  letter-spacing: 0.08em;
}

.date-card .day {
  display: block;
  margin-top: 22px;
  font: 72px/0.9 Georgia, serif;
}

.date-card .month {
  display: block;
  margin-top: 12px;
  color: var(--ink-soft);
  font-size: 13px;
  letter-spacing: 0.12em;
}

.section-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin: 26px 0 22px;
}

.section-heading h2 {
  margin-bottom: 0;
}

.section-heading p {
  margin: 0;
  color: var(--ink-soft);
}

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

.quick-tool-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.quick-tool-grid .module-card .status-badge {
  position: absolute;
  top: 26px;
  right: 26px;
}

.home-section {
  margin-top: 24px;
}

.tool-category-stack {
  display: grid;
  gap: 72px;
  margin-top: 76px;
  scroll-margin-top: 100px;
}

.tool-category {
  display: grid;
  grid-template-columns: minmax(220px, 0.34fr) minmax(0, 1fr);
  gap: 36px;
  padding-top: 34px;
  border-top: 1px solid var(--line);
}

.category-heading {
  display: grid;
  grid-template-columns: 42px 1fr;
  gap: 14px;
  align-content: start;
}

.category-number {
  color: var(--clay);
  font: italic 18px Georgia, serif;
}

.category-heading h2 {
  margin-bottom: 12px;
  font-size: 31px;
}

.category-heading > div > p:last-child {
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.7;
}

.home-tool-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 13px;
}

.home-tool-card {
  display: flex;
  min-height: 220px;
  flex-direction: column;
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 21px;
  background: rgba(251, 248, 240, 0.65);
  transition: transform 180ms ease, box-shadow 180ms ease;
}

.home-tool-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 36px rgba(64, 72, 61, 0.1);
}

.home-tool-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: var(--ink-soft);
  font-size: 9px;
  letter-spacing: 0.12em;
}

.home-tool-meta .project-status {
  flex: 0 0 auto;
  letter-spacing: 0;
}

.home-tool-card h3 {
  margin: 38px 0 10px;
  font-size: 24px;
}

.home-tool-card p {
  margin-bottom: 20px;
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.7;
}

.home-tool-card .idea-arrow {
  margin-top: auto;
}

.sensitive-tool-card {
  background: rgba(232, 228, 221, 0.72);
}

.quiet-tools-section {
  opacity: 0.88;
}

.home-footer-note {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-top: 76px;
  padding: 26px 0;
  border-top: 1px solid var(--line);
  color: var(--ink-soft);
}

.home-footer-note p {
  margin: 0;
}

.home-footer-note a {
  color: var(--sage-deep);
  font-weight: 700;
}

.module-card {
  position: relative;
  min-height: 310px;
  padding: 32px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 28px;
  background: rgba(251, 248, 240, 0.78);
  box-shadow: 0 12px 36px rgba(64, 72, 61, 0.07);
  transition: transform 180ms ease, box-shadow 180ms ease;
}

.module-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow);
}

.module-card.notes-card {
  background: linear-gradient(145deg, rgba(220, 228, 216, 0.9), rgba(251, 248, 240, 0.92));
}

.module-card.cook-card {
  background: linear-gradient(145deg, rgba(234, 212, 200, 0.84), rgba(251, 248, 240, 0.94));
}

.module-card.creator-card {
  background: linear-gradient(145deg, rgba(226, 216, 232, 0.78), rgba(251, 248, 240, 0.94));
}

.module-card.planned-card {
  min-height: 270px;
  background: linear-gradient(145deg, rgba(244, 240, 230, 0.92), rgba(226, 231, 219, 0.72));
}

.status-badge {
  display: inline-flex;
  align-items: center;
  padding: 5px 10px;
  border: 1px solid rgba(63, 89, 72, 0.2);
  border-radius: 999px;
  color: var(--sage-deep);
  background: rgba(251, 248, 240, 0.68);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.module-card .status-badge {
  position: absolute;
  top: 26px;
  right: 26px;
}

.status-badge.large {
  flex: 0 0 auto;
  padding: 7px 13px;
}

.module-number {
  color: var(--ink-soft);
  font: italic 15px Georgia, serif;
}

.module-card h3 {
  max-width: 360px;
  margin: 82px 0 10px;
  font-size: clamp(30px, 4vw, 46px);
}

.planned-card h3 {
  margin-top: 58px;
}

.module-card p {
  max-width: 400px;
  color: var(--ink-soft);
  line-height: 1.7;
}

.module-link {
  position: absolute;
  right: 28px;
  bottom: 28px;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  color: var(--cream);
  background: var(--sage-deep);
  font-size: 22px;
}

.recent-section {
  margin-top: 68px;
}

.ideas-section {
  margin-top: 68px;
}

.catalog-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.catalog-card {
  display: flex;
  min-height: 270px;
  flex-direction: column;
  padding: 26px;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: rgba(251, 248, 240, 0.68);
  box-shadow: 0 12px 32px rgba(64, 72, 61, 0.055);
  transition: transform 180ms ease, box-shadow 180ms ease;
}

.catalog-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow);
}

.catalog-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: var(--ink-soft);
  font-size: 11px;
}

.project-status {
  padding: 5px 9px;
  border-radius: 999px;
  color: var(--sage-deep);
  background: var(--sage-pale);
  font-weight: 700;
}

.catalog-card h3 {
  margin: 52px 0 12px;
  font-size: 28px;
}

.catalog-card p {
  margin-bottom: 24px;
  color: var(--ink-soft);
  line-height: 1.7;
}

.catalog-card .idea-arrow {
  margin-top: auto;
}

.public-boundary,
.vault-entry-strip {
  display: grid;
  grid-template-columns: minmax(240px, 0.9fr) minmax(280px, 1.1fr) auto;
  gap: 34px;
  align-items: center;
  margin-top: 76px;
  padding: 34px;
  border: 1px solid var(--line);
  border-radius: 28px;
  background: rgba(220, 228, 216, 0.52);
}

.public-boundary h2,
.vault-entry-strip h2 {
  margin: 0;
  font-size: 30px;
}

.public-boundary p,
.vault-entry-strip p {
  margin: 0;
  color: var(--ink-soft);
  line-height: 1.75;
}

.quiet-private-link {
  white-space: nowrap;
  color: var(--sage-deep);
  font-size: 13px;
  font-weight: 700;
}

.public-page-intro {
  padding-bottom: 28px;
}

.simple-public-page {
  max-width: 820px;
  min-height: 65vh;
  padding: 72px 0;
}

.large-copy {
  max-width: 760px;
  color: var(--ink-soft);
  font: 20px/1.9 var(--serif);
}

.about-placeholder {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 50px;
  padding: 26px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  color: var(--ink-soft);
}

.about-placeholder strong {
  color: var(--ink);
}

.contact-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 48px;
}

.contact-item {
  min-height: 150px;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(251, 248, 240, 0.64);
}

.contact-item span,
.contact-item strong {
  display: block;
}

.contact-item span {
  margin-bottom: 52px;
  color: var(--ink-soft);
  font-size: 12px;
}

.login-card {
  display: flex;
  width: min(620px, 100%);
  min-height: 560px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 12px auto;
  padding: 54px;
  border: 1px solid var(--line);
  border-radius: 44% 44% 28px 28px;
  text-align: center;
  background: rgba(251, 248, 240, 0.78);
  box-shadow: var(--shadow);
}

.private-door-mark {
  display: grid;
  width: 70px;
  height: 70px;
  place-items: center;
  margin-bottom: 30px;
  border: 1px solid rgba(63, 89, 72, 0.35);
  border-radius: 50%;
  color: var(--sage-deep);
  font: italic 38px Georgia, serif;
}

.login-card h1 {
  margin-bottom: 18px;
  font-size: clamp(38px, 6vw, 62px);
}

.login-card p {
  max-width: 450px;
  margin-bottom: 30px;
  color: var(--ink-soft);
  line-height: 1.8;
}

.login-card .back-link {
  margin: 24px 0 0;
}

.section-note {
  max-width: 300px;
  color: var(--ink-soft);
  font-size: 14px;
  line-height: 1.7;
  text-align: right;
}

.idea-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.idea-card {
  display: flex;
  min-height: 220px;
  flex-direction: column;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(251, 248, 240, 0.58);
  transition: transform 180ms ease, background 180ms ease;
}

.idea-card:hover {
  transform: translateY(-3px);
  background: rgba(251, 248, 240, 0.92);
}

.idea-label {
  color: var(--sage-deep);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.18em;
}

.idea-card h3 {
  margin: 32px 0 10px;
  font-size: 25px;
}

.idea-card p {
  margin-bottom: 22px;
  color: var(--ink-soft);
  font-size: 14px;
  line-height: 1.7;
}

.idea-arrow {
  margin-top: auto;
  color: var(--sage-deep);
  font-size: 13px;
  font-weight: 700;
}

.planned-page {
  padding-top: 22px;
}

.back-link {
  display: inline-flex;
  margin-bottom: 42px;
  color: var(--ink-soft);
  font-size: 14px;
}

.planned-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(220px, 0.7fr);
  gap: 56px;
  align-items: center;
  padding-bottom: 60px;
}

.planned-title-line {
  display: flex;
  align-items: center;
  gap: 18px;
}

.planned-title-line h1 {
  margin-bottom: 18px;
}

.planned-mark {
  display: grid;
  min-height: 230px;
  place-items: center;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 48% 48% 28px 28px;
  color: rgba(63, 89, 72, 0.5);
  background: linear-gradient(145deg, rgba(251, 248, 240, 0.88), rgba(220, 228, 216, 0.82));
  font: italic clamp(24px, 4vw, 50px)/1 Georgia, serif;
}

.public-mark {
  color: rgba(179, 110, 81, 0.56);
  background: linear-gradient(145deg, rgba(251, 248, 240, 0.88), rgba(234, 212, 200, 0.65));
}

.plan-panel {
  max-width: 780px;
  padding: 36px;
  border: 1px solid var(--line);
  border-radius: 28px;
  background: rgba(251, 248, 240, 0.7);
}

.plan-list {
  display: grid;
  margin-top: 28px;
  border-top: 1px solid var(--line);
}

.plan-item {
  display: grid;
  grid-template-columns: 52px 1fr;
  gap: 16px;
  padding: 20px 0;
  border-bottom: 1px solid var(--line);
}

.plan-item span {
  color: var(--clay);
  font: italic 17px Georgia, serif;
}

.plan-item p {
  margin: 0;
  line-height: 1.7;
}

.plan-footnote {
  margin: 24px 0 0;
  color: var(--ink-soft);
  font-size: 13px;
}

.submodule-section,
.connection-panel {
  max-width: 780px;
  margin-top: 42px;
}

.submodule-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-top: 22px;
}

.submodule-card {
  display: flex;
  min-height: 190px;
  flex-direction: column;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(251, 248, 240, 0.64);
}

.submodule-card h3 {
  margin-bottom: 12px;
  font-size: 26px;
}

.submodule-card p {
  color: var(--ink-soft);
  line-height: 1.7;
}

.submodule-card span {
  margin-top: auto;
  color: var(--sage-deep);
  font-size: 13px;
  font-weight: 700;
}

.connection-panel {
  padding: 30px;
  border: 1px dashed rgba(63, 89, 72, 0.35);
  border-radius: 24px;
}

.connection-list {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin: 22px 0;
}

.connection-list span {
  padding: 8px 12px;
  border-radius: 999px;
  color: var(--sage-deep);
  background: var(--sage-pale);
  font-size: 12px;
}

.connection-panel > p:last-child {
  margin: 0;
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.7;
}

.privacy-note {
  max-width: 780px;
  margin: -24px 0 24px;
  padding: 20px 24px;
  border-left: 3px solid var(--clay);
  color: var(--ink-soft);
  background: rgba(234, 212, 200, 0.42);
}

.privacy-note strong {
  color: var(--ink);
}

.privacy-note p {
  margin: 7px 0 0;
  line-height: 1.7;
}

.vault-hero {
  max-width: 820px;
  padding: 56px 0 34px;
}

.vault-hero h1 {
  font-family: Georgia, var(--serif);
  letter-spacing: 0.01em;
}

.vault-hero .privacy-note {
  margin: 38px 0 0;
}

.vault-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.vault-card {
  display: flex;
  min-height: 260px;
  flex-direction: column;
  padding: 26px;
  border: 1px solid rgba(38, 51, 44, 0.22);
  border-radius: 20px;
  background: rgba(245, 243, 237, 0.7);
}

.vault-card > span {
  color: var(--ink-soft);
  font-size: 10px;
  letter-spacing: 0.18em;
}

.vault-card h3 {
  margin: 58px 0 12px;
  font-size: 28px;
}

.vault-card p {
  color: var(--ink-soft);
  line-height: 1.7;
}

.vault-card small {
  margin-top: auto;
  color: var(--ink);
  font-weight: 700;
}

.vault-mark {
  color: rgba(38, 51, 44, 0.38);
  background: rgba(38, 51, 44, 0.08);
}

.creator-intro {
  padding-bottom: 22px;
}

.creator-stage-guide {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  margin: 8px 0 24px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(251, 248, 240, 0.58);
}

.creator-stage-guide span {
  display: flex;
  min-height: 64px;
  align-items: center;
  gap: 8px;
  padding: 14px;
  border-right: 1px solid var(--line);
  font-size: 12px;
}

.creator-stage-guide span:last-child {
  border-right: 0;
}

.creator-stage-guide small {
  color: var(--clay);
  font: italic 13px Georgia, serif;
}

.creator-filter-bar {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) 180px 180px;
  gap: 10px;
  margin-bottom: 22px;
}

.creator-filter-bar input,
.creator-filter-bar select {
  width: 100%;
  min-height: 46px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  color: var(--ink);
  background: rgba(251, 248, 240, 0.76);
}

.creator-project-grid,
.works-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.creator-project-card,
.work-card {
  display: flex;
  min-height: 270px;
  flex-direction: column;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(251, 248, 240, 0.7);
  transition: transform 180ms ease, box-shadow 180ms ease;
}

.creator-project-card:hover,
.work-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 38px rgba(64, 72, 61, 0.1);
}

.creator-card-top,
.creator-card-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  color: var(--ink-soft);
  font-size: 11px;
}

.creator-status,
.public-indicator {
  padding: 5px 9px;
  border-radius: 999px;
  color: var(--sage-deep);
  background: var(--sage-pale);
  font-weight: 700;
}

.status-published,
.public-indicator {
  color: #7e4938;
  background: var(--clay-pale);
}

.creator-project-card h3,
.work-card h3 {
  margin: 50px 0 12px;
  font-size: 27px;
}

.creator-project-card > p,
.work-card > p {
  color: var(--ink-soft);
  line-height: 1.7;
}

.creator-card-bottom,
.work-card small {
  margin-top: auto;
}

.creator-empty {
  grid-column: 1 / -1;
}

.creator-editor-page {
  padding-top: 12px;
}

.creator-form {
  display: grid;
  gap: 22px;
}

.creator-form-header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 28px;
  margin-bottom: 8px;
}

.creator-form-header h1 {
  margin-bottom: 0;
}

.creator-form-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-bottom: 8px;
}

.training-mode-note {
  padding: 22px 26px;
  border-left: 4px solid var(--sage);
  border-radius: 0 18px 18px 0;
  background: rgba(220, 228, 216, 0.58);
}

.training-mode-note p {
  margin: 7px 0 0;
  color: var(--ink-soft);
  line-height: 1.7;
}

.creator-form-section {
  display: grid;
  grid-template-columns: minmax(190px, 0.28fr) minmax(0, 1fr);
  gap: 30px;
  padding: 30px;
  border: 1px solid var(--line);
  border-radius: 26px;
  background: rgba(251, 248, 240, 0.66);
}

.form-section-heading {
  display: grid;
  grid-template-columns: 36px 1fr;
  gap: 10px;
  align-content: start;
}

.form-section-heading > span {
  color: var(--clay);
  font: italic 17px Georgia, serif;
}

.form-section-heading h2 {
  margin-bottom: 9px;
  font-size: 27px;
}

.form-section-heading p {
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.7;
}

.creator-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.creator-form-grid .wide {
  grid-column: 1 / -1;
}

.public-switch {
  padding: 16px;
  border-radius: 14px;
  background: rgba(234, 212, 200, 0.45);
}

.source-to-creator {
  width: 100%;
  padding: 14px 18px;
  border: 1px dashed rgba(63, 89, 72, 0.38);
  border-radius: 14px;
  color: var(--sage-deep);
  background: rgba(220, 228, 216, 0.44);
  cursor: pointer;
}

.note-conversion-actions {
  display: grid;
  gap: 8px;
}

.greenhouse-page,
.idea-editor-page {
  max-width: 1080px;
  margin: 0 auto;
}

.greenhouse-hero,
.idea-form-header,
.idea-validation-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 30px;
}

.greenhouse-hero {
  padding: 46px 0 34px;
}

.greenhouse-hero h1,
.idea-form-header h1 {
  margin-bottom: 16px;
  font-size: clamp(42px, 6vw, 68px);
}

.greenhouse-hero p,
.idea-form-header p {
  max-width: 700px;
  color: var(--ink-soft);
  line-height: 1.8;
}

.greenhouse-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  overflow: hidden;
  margin-bottom: 18px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(251, 248, 240, 0.72);
}

.greenhouse-stats > div {
  display: grid;
  gap: 7px;
  min-height: 104px;
  place-content: center;
  padding: 18px;
  border-right: 1px solid var(--line);
  text-align: center;
}

.greenhouse-stats > div:last-child {
  border-right: 0;
}

.greenhouse-stats strong {
  color: var(--sage-deep);
  font: 38px/1 var(--serif);
}

.greenhouse-stats span {
  color: var(--ink-soft);
  font-size: 12px;
}

.greenhouse-filter-bar {
  display: grid;
  grid-template-columns: minmax(220px, 1.6fr) repeat(4, minmax(120px, 1fr)) auto;
  gap: 9px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(251, 248, 240, 0.58);
}

.greenhouse-filter-bar select,
.greenhouse-search {
  min-height: 43px;
  border: 1px solid var(--line);
  border-radius: 12px;
  color: var(--ink);
  background: var(--cream);
}

.greenhouse-filter-bar select {
  width: 100%;
  padding: 0 10px;
}

.greenhouse-filter-bar > button {
  white-space: nowrap;
}

.greenhouse-search {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 12px;
}

.greenhouse-search input {
  width: 100%;
  border: 0;
  outline: 0;
  background: transparent;
}

.greenhouse-shortcuts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 12px 0 22px;
}

.greenhouse-shortcuts button {
  padding: 8px 12px;
  border: 1px solid rgba(63, 89, 72, 0.2);
  border-radius: 999px;
  color: var(--sage-deep);
  background: rgba(220, 228, 216, 0.45);
  cursor: pointer;
}

.greenhouse-list {
  display: grid;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(251, 248, 240, 0.7);
}

.greenhouse-count {
  margin: 14px 0 20px;
  color: var(--ink-soft);
  font-size: 13px;
}

.greenhouse-empty {
  grid-column: 1 / -1;
}

.greenhouse-row {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(390px, auto) 18px;
  gap: 12px;
  align-items: center;
  min-height: 58px;
  padding: 10px 16px;
  border-bottom: 1px solid rgba(54, 69, 59, 0.1);
  color: var(--ink);
  background: rgba(251, 248, 240, 0.52);
  transition: background 160ms ease;
}

.greenhouse-row:last-child {
  border-bottom: 0;
}

.greenhouse-row:hover {
  background: rgba(220, 228, 216, 0.52);
}

.greenhouse-row-title {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 15px;
}

.greenhouse-row-category,
.greenhouse-row time {
  overflow: hidden;
  color: var(--ink-soft);
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
}

.greenhouse-row-meta {
  display: grid;
  grid-template-columns: minmax(105px, 1fr) 74px 92px 76px;
  gap: 10px;
  align-items: center;
}

.greenhouse-row .plant-stage,
.greenhouse-row .idea-priority {
  justify-self: start;
  padding: 4px 8px;
  white-space: nowrap;
  font-size: 11px;
}

.greenhouse-row .priority-medium {
  color: #786432;
  background: rgba(246, 228, 184, 0.52);
}

.greenhouse-row .priority-low,
.greenhouse-row .priority-unset {
  color: var(--ink-soft);
  background: rgba(235, 231, 222, 0.82);
}

.greenhouse-row-arrow {
  color: var(--sage-deep);
  font-size: 22px;
  line-height: 1;
}

.greenhouse-card {
  position: relative;
  display: flex;
  min-height: 300px;
  flex-direction: column;
  padding: 24px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 25px 25px 18px 18px;
  background:
    linear-gradient(180deg, rgba(251, 248, 240, 0.84), rgba(220, 228, 216, 0.5));
  transition: transform 180ms ease, box-shadow 180ms ease;
}

.greenhouse-card::after {
  position: absolute;
  right: -22px;
  bottom: -38px;
  width: 115px;
  height: 115px;
  border: 1px solid rgba(63, 89, 72, 0.1);
  border-radius: 60% 40% 55% 45%;
  content: "";
  transform: rotate(-18deg);
}

.greenhouse-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 38px rgba(64, 72, 61, 0.1);
}

.greenhouse-card.status-validated,
.greenhouse-card.status-planned {
  background: linear-gradient(180deg, rgba(232, 239, 225, 0.92), rgba(201, 220, 198, 0.6));
}

.greenhouse-card.status-building,
.greenhouse-card.status-shipped {
  background: linear-gradient(180deg, rgba(226, 236, 217, 0.94), rgba(246, 228, 184, 0.58));
}

.greenhouse-card.status-archived {
  opacity: 0.72;
  background: rgba(235, 231, 222, 0.7);
}

.greenhouse-card-top,
.greenhouse-card-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: var(--ink-soft);
  font-size: 11px;
}

.plant-stage,
.idea-priority {
  padding: 6px 9px;
  border-radius: 999px;
  background: rgba(251, 248, 240, 0.72);
}

.idea-priority.priority-high {
  color: var(--sage-deep);
  border: 1px solid rgba(63, 89, 72, 0.2);
  font-weight: 700;
}

.greenhouse-card h3 {
  margin: 52px 0 12px;
  font-size: 27px;
}

.greenhouse-card > p {
  display: -webkit-box;
  overflow: hidden;
  color: var(--ink-soft);
  line-height: 1.7;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
}

.greenhouse-card .idea-cold-note {
  margin-top: 8px;
  padding: 9px 11px;
  border-left: 2px solid var(--gold);
  background: rgba(246, 228, 184, 0.42);
  font-size: 12px;
}

.greenhouse-card-bottom {
  flex-wrap: wrap;
  justify-content: flex-start;
  margin-top: auto;
  padding-top: 22px;
  border-top: 1px solid rgba(54, 69, 59, 0.11);
}

.greenhouse-card-bottom span + span::before {
  margin-right: 8px;
  content: "·";
}

.idea-form {
  display: grid;
  gap: 18px;
  padding-top: 30px;
}

.idea-form-header {
  padding-bottom: 22px;
  border-bottom: 1px solid var(--line);
}

.idea-form-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.idea-form-actions button:disabled {
  opacity: 0.58;
  cursor: wait;
}

.form-error {
  margin: 0;
  padding: 12px 15px;
  border-left: 3px solid var(--gold);
  border-radius: 0 12px 12px 0;
  color: #744f3f;
  background: rgba(246, 228, 184, 0.48);
}

.greenhouse-principle {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 20px 24px;
  border-left: 4px solid var(--sage);
  border-radius: 0 18px 18px 0;
  background: rgba(220, 228, 216, 0.55);
}

.greenhouse-principle > span {
  color: var(--sage-deep);
  font-size: 28px;
}

.greenhouse-principle p {
  margin: 5px 0 0;
  color: var(--ink-soft);
}

.idea-form-section,
.idea-validation-panel,
.idea-conversion-panel {
  padding: 28px;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: rgba(251, 248, 240, 0.7);
}

.idea-more-fields {
  border: 1px solid var(--line);
  border-radius: 20px;
  background: rgba(251, 248, 240, 0.64);
}

.idea-more-fields summary {
  padding: 18px 22px;
  color: var(--sage-deep);
  font-weight: 700;
  cursor: pointer;
}

.idea-more-fields[open] summary {
  border-bottom: 1px solid var(--line);
}

.idea-more-fields .idea-form-grid {
  padding: 22px;
}

.idea-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 15px;
}

.idea-form-grid .wide {
  grid-column: 1 / -1;
}

.idea-validation-panel,
.idea-conversion-panel {
  margin-top: 22px;
}

.idea-validation-heading h2,
.idea-conversion-panel h2 {
  margin-bottom: 0;
}

.review-meta {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.review-meta span {
  padding: 7px 10px;
  border-radius: 999px;
  color: var(--ink-soft);
  background: var(--sage-pale);
  font-size: 11px;
}

.greenhouse-reminder {
  margin: 22px 0 0;
  padding: 15px 18px;
  border-left: 3px solid var(--gold);
  background: rgba(246, 228, 184, 0.46);
}

.validation-question-list {
  display: grid;
  gap: 0;
  margin-top: 20px;
  border-top: 1px solid var(--line);
}

.validation-question-list p {
  display: flex;
  gap: 12px;
  margin: 0;
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
  line-height: 1.6;
}

.validation-question-list span {
  color: var(--sage);
}

.idea-review-actions,
.idea-conversion-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin-top: 20px;
}

.idea-review-actions button,
.idea-conversion-actions button {
  padding: 11px 14px;
  border: 1px solid rgba(63, 89, 72, 0.24);
  border-radius: 13px;
  color: var(--sage-deep);
  background: rgba(220, 228, 216, 0.44);
  cursor: pointer;
}

.idea-review-actions button:nth-child(2),
.idea-conversion-actions button:first-child {
  color: var(--cream);
  background: var(--sage-deep);
}

.converted-link {
  display: block;
  margin-top: 18px;
  color: var(--sage-deep);
  font-weight: 700;
}

#codex-summary-preview {
  margin: 22px 0 0;
  padding: 18px;
  overflow: auto;
  border: 1px dashed rgba(63, 89, 72, 0.28);
  border-radius: 16px;
  color: var(--ink-soft);
  white-space: pre-wrap;
  font: 13px/1.75 var(--sans);
  background: rgba(255, 255, 255, 0.38);
}

.work-card > span {
  color: var(--ink-soft);
  font-size: 11px;
  letter-spacing: 0.08em;
}

.work-card small {
  color: var(--sage-deep);
  font-weight: 700;
}

.public-work-page {
  max-width: 850px;
  padding: 34px 0 80px;
}

.public-work-outline {
  margin: 48px 0 32px;
  padding: 30px;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: rgba(251, 248, 240, 0.66);
}

.public-work-outline p {
  white-space: pre-wrap;
  color: var(--ink-soft);
  line-height: 1.8;
}

.happiness-workspace,
.happiness-editor {
  max-width: 1060px;
  margin: 0 auto;
}

.workspace-hero,
.happiness-form-header,
.summary-heading,
.resolution-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 28px;
}

.workspace-hero {
  padding: 46px 0 32px;
}

.workspace-hero h1,
.happiness-form-header h1 {
  margin-bottom: 16px;
  font-size: clamp(40px, 6vw, 66px);
}

.workspace-hero p,
.happiness-form-header p {
  max-width: 680px;
  color: var(--ink-soft);
  line-height: 1.8;
}

.workspace-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  overflow: hidden;
  margin-bottom: 20px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(251, 248, 240, 0.7);
}

.workspace-stats.joy-stats {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.workspace-stats > div {
  display: grid;
  gap: 6px;
  min-height: 104px;
  place-content: center;
  padding: 18px;
  border-right: 1px solid var(--line);
  text-align: center;
}

.workspace-stats > div:last-child {
  border-right: 0;
}

.workspace-stats strong {
  color: var(--sage-deep);
  font: 38px/1 var(--serif);
}

.workspace-stats strong small {
  color: var(--ink-soft);
  font-size: 16px;
}

.workspace-stats span {
  color: var(--ink-soft);
  font-size: 12px;
}

.gentle-recommendation {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  margin: 18px 0;
  padding: 20px 22px;
  border: 1px solid rgba(63, 89, 72, 0.22);
  border-radius: 20px;
  background: linear-gradient(120deg, rgba(220, 228, 216, 0.68), rgba(251, 248, 240, 0.82));
}

.gentle-recommendation > span {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  color: var(--cream);
  background: var(--sage-deep);
}

.gentle-recommendation p {
  margin: 5px 0 0;
  color: var(--ink-soft);
}

.gentle-recommendation b {
  color: var(--sage-deep);
}

.workspace-filter-panel {
  display: grid;
  grid-template-columns: repeat(6, minmax(120px, 1fr));
  gap: 10px;
  margin: 20px 0;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(251, 248, 240, 0.58);
}

.joy-filter-panel {
  grid-template-columns: repeat(5, minmax(125px, 1fr));
}

.workspace-filter-panel select,
.workspace-filter-panel input[type="date"] {
  width: 100%;
  min-height: 42px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 12px;
  color: var(--ink);
  background: var(--cream);
}

.high-filter {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 42px;
  padding: 8px 10px;
  border-radius: 12px;
  background: rgba(220, 228, 216, 0.55);
}

.view-switch {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-column: span 2;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 12px;
}

.view-switch button {
  min-height: 40px;
  border: 0;
  border-right: 1px solid var(--line);
  background: transparent;
  cursor: pointer;
}

.view-switch button:last-child {
  border-right: 0;
}

.view-switch button.active {
  color: var(--cream);
  background: var(--sage-deep);
}

.friction-card-top,
.joy-card-top,
.friction-card-meta,
.joy-card-meta {
  display: flex;
  align-items: center;
  gap: 9px;
}

.friction-card-top,
.joy-card-top {
  justify-content: space-between;
}

.friction-list-card h3,
.joy-list-card h3 {
  margin: 30px 0 10px;
}

.friction-list-card > p,
.joy-card-body > p {
  color: var(--ink-soft);
  line-height: 1.65;
}

.friction-card-meta,
.joy-card-meta {
  flex-wrap: wrap;
  margin-top: 22px;
  color: var(--ink-soft);
  font-size: 11px;
}

.friction-card-meta span + span::before,
.joy-card-meta span + span::before {
  margin-right: 9px;
  content: "·";
}

.score-dots {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.score-dots i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: rgba(63, 89, 72, 0.17);
}

.score-dots i.active {
  background: var(--sage-deep);
}

.score-dots.joy i.active {
  background: var(--gold);
}

.score-dots b {
  margin-left: 4px;
  color: var(--sage-deep);
  font-size: 12px;
}

.status-label,
.joy-type {
  padding: 6px 9px;
  border-radius: 999px;
  color: var(--ink-soft);
  background: rgba(220, 228, 216, 0.55);
  font-size: 11px;
}

.status-in_progress { background: rgba(246, 228, 184, 0.66); }
.status-resolved { color: var(--sage-deep); background: rgba(190, 215, 191, 0.7); }
.status-deferred { background: rgba(220, 216, 212, 0.66); }

.happiness-form {
  display: grid;
  gap: 18px;
  padding-top: 34px;
}

.happiness-form-header {
  padding-bottom: 24px;
  border-bottom: 1px solid var(--line);
}

.form-header-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.happiness-form-section,
.resolution-section,
.friction-timeline,
.happiness-summary-panel,
.joy-picker {
  padding: 28px;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: rgba(251, 248, 240, 0.7);
}

.happiness-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 15px;
}

.happiness-form-grid .wide {
  grid-column: 1 / -1;
}

.score-selector {
  margin: 22px 0 0;
  padding: 0;
  border: 0;
}

.score-selector legend {
  margin-bottom: 10px;
  color: var(--ink-soft);
  font-size: 12px;
  font-weight: 700;
}

.score-selector > div {
  display: grid;
  grid-template-columns: repeat(5, minmax(46px, 1fr));
  gap: 8px;
}

.score-selector input {
  position: absolute;
  opacity: 0;
}

.score-selector span {
  display: grid;
  min-height: 48px;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--cream);
  cursor: pointer;
}

.score-selector input:checked + span {
  color: var(--cream);
  border-color: var(--sage-deep);
  background: var(--sage-deep);
}

.joy-form-section .score-selector input:checked + span {
  color: var(--ink);
  border-color: var(--gold);
  background: #efd59d;
}

.score-help {
  margin: 10px 0 22px;
  color: var(--ink-soft);
  font-size: 12px;
  line-height: 1.65;
}

.form-photo-preview {
  display: block;
  width: min(100%, 360px);
  max-height: 280px;
  margin-top: 12px;
  border-radius: 16px;
  object-fit: cover;
}

.resolution-section {
  opacity: 0.64;
  transition: opacity 180ms ease;
}

.resolution-section.active {
  opacity: 1;
  background: rgba(220, 228, 216, 0.5);
}

.resolution-heading {
  margin-bottom: 20px;
}

.resolution-heading h2,
.friction-timeline h2,
.summary-heading h2 {
  margin-bottom: 0;
  font-size: 29px;
}

.friction-timeline,
.happiness-summary-panel {
  margin-top: 24px;
}

.timeline-list {
  display: grid;
  gap: 0;
  margin-top: 22px;
}

.timeline-item {
  display: grid;
  grid-template-columns: 18px 1fr;
  gap: 14px;
  min-height: 82px;
}

.timeline-item > span {
  position: relative;
  width: 10px;
  height: 10px;
  margin-top: 5px;
  border-radius: 50%;
  background: var(--sage);
}

.timeline-item > span::after {
  position: absolute;
  top: 14px;
  bottom: -60px;
  left: 4px;
  width: 1px;
  content: "";
  background: var(--line);
}

.timeline-item:last-child > span::after {
  display: none;
}

.timeline-item p {
  margin: 5px 0;
  color: var(--ink-soft);
}

.timeline-item small {
  color: var(--ink-soft);
}

.happiness-summary-panel {
  margin-top: 34px;
}

.summary-heading select {
  min-width: 120px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--cream);
}

.summary-stat-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 22px;
}

.summary-stat-grid > div {
  display: grid;
  gap: 7px;
  min-height: 102px;
  place-content: center;
  padding: 14px;
  border-radius: 16px;
  text-align: center;
  background: rgba(220, 228, 216, 0.38);
}

.summary-stat-grid strong {
  color: var(--sage-deep);
  font: 25px/1.25 var(--serif);
}

.summary-stat-grid span,
.summary-note {
  color: var(--ink-soft);
  font-size: 11px;
}

.summary-stat-grid .wide-summary {
  grid-column: span 2;
}

.summary-note {
  margin: 16px 0 0;
}

.joy-picker {
  margin: 20px 0;
  background: linear-gradient(125deg, rgba(246, 228, 184, 0.62), rgba(251, 248, 240, 0.86));
}

.joy-picker summary {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  cursor: pointer;
  list-style: none;
}

.joy-picker summary::-webkit-details-marker {
  display: none;
}

.joy-picker summary > span {
  font-size: 30px;
}

.joy-picker summary strong,
.joy-picker summary small {
  display: block;
}

.joy-picker summary small {
  margin-top: 4px;
  color: var(--ink-soft);
}

.joy-condition-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 24px;
}

.joy-condition-grid label {
  padding: 11px 12px;
  border: 1px solid rgba(200, 156, 84, 0.25);
  border-radius: 12px;
  background: rgba(251, 248, 240, 0.7);
}

.joy-picker-actions {
  display: flex;
  gap: 10px;
  margin-top: 18px;
}

.joy-picker-result {
  margin-top: 14px;
}

.joy-picker-result a,
.joy-picker-result > p {
  display: block;
  margin: 0;
  padding: 16px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.52);
}

.joy-picker-result p {
  margin: 6px 0;
  color: var(--ink-soft);
}

.joy-picker-result span {
  color: var(--sage-deep);
  font-weight: 700;
}

.recent-list,
.record-grid {
  display: grid;
  gap: 12px;
}

.record-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.recent-row,
.record-card {
  border: 1px solid var(--line);
  background: rgba(251, 248, 240, 0.7);
  cursor: pointer;
  transition: border-color 160ms ease, background 160ms ease;
}

.recent-row:hover,
.record-card:hover {
  border-color: rgba(63, 89, 72, 0.45);
  background: var(--cream);
}

.recent-row {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) auto;
  align-items: center;
  gap: 16px;
  padding: 15px 18px;
  border-radius: 16px;
}

.record-type {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 14px;
  background: var(--sage-pale);
}

.record-type.cook {
  background: var(--clay-pale);
}

.recent-row strong {
  display: block;
  margin-bottom: 4px;
}

.recent-row small,
.record-date {
  color: var(--ink-soft);
}

.record-date {
  font-size: 12px;
}

.page-intro {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 36px;
  align-items: end;
  margin: 18px 0 42px;
  padding-bottom: 32px;
  border-bottom: 1px solid var(--line);
}

.page-intro h1 {
  margin-bottom: 12px;
}

.page-intro .intro-copy {
  max-width: 620px;
  margin-bottom: 0;
  color: var(--ink-soft);
  font: 17px/1.7 var(--serif);
}

.page-actions {
  display: flex;
  gap: 10px;
}

.primary-button,
.secondary-button,
.text-button {
  border-radius: 999px;
  cursor: pointer;
}

.primary-button {
  padding: 12px 20px;
  border: 1px solid var(--sage-deep);
  color: var(--cream);
  background: var(--sage-deep);
}

.secondary-button {
  padding: 12px 20px;
  border: 1px solid var(--line);
  background: var(--cream);
}

.text-button {
  padding: 8px 2px;
  border: 0;
  color: var(--sage-deep);
  background: transparent;
}

.text-button.danger {
  color: #9a493c;
}

.stats-line {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 22px;
}

.stat-pill {
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink-soft);
  background: rgba(251, 248, 240, 0.52);
  font-size: 12px;
}

.record-card {
  position: relative;
  min-height: 210px;
  padding: 24px;
  border-radius: 22px;
}

.record-card.pinned::before {
  content: "置顶";
  position: absolute;
  top: 20px;
  right: 20px;
  color: var(--clay);
  font-size: 11px;
  letter-spacing: 0.12em;
}

.record-card h3 {
  margin-bottom: 12px;
  padding-right: 46px;
}

.record-card .excerpt {
  display: -webkit-box;
  margin-bottom: 22px;
  overflow: hidden;
  color: var(--ink-soft);
  line-height: 1.7;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.tag {
  padding: 4px 9px;
  border-radius: 999px;
  color: var(--sage-deep);
  background: var(--sage-pale);
  font-size: 11px;
}

.recipe-card {
  min-height: 280px;
  padding: 0;
  overflow: hidden;
}

.recipe-photo,
.recipe-photo-placeholder {
  width: 100%;
  height: 150px;
  object-fit: cover;
}

.recipe-photo-placeholder {
  display: grid;
  place-items: center;
  color: var(--clay);
  background: linear-gradient(135deg, var(--clay-pale), var(--paper-deep));
  font: italic 34px Georgia, serif;
}

.recipe-body {
  padding: 21px 22px 24px;
}

.recipe-meta {
  display: flex;
  gap: 12px;
  margin-bottom: 13px;
  color: var(--ink-soft);
  font-size: 12px;
}

.empty-state {
  grid-column: 1 / -1;
  padding: 70px 24px;
  border: 1px dashed rgba(63, 89, 72, 0.28);
  border-radius: 24px;
  text-align: center;
  background: rgba(251, 248, 240, 0.42);
}

.empty-state .empty-mark {
  display: block;
  margin-bottom: 14px;
  color: var(--sage);
  font: italic 46px Georgia, serif;
}

.empty-state h3 {
  margin-bottom: 8px;
  font-size: 26px;
}

.empty-state p,
.empty-hint,
.muted-copy {
  color: var(--ink-soft);
  line-height: 1.7;
}

dialog {
  max-width: none;
  padding: 0;
  border: 0;
  color: var(--ink);
  background: transparent;
}

dialog::backdrop {
  background: rgba(31, 40, 34, 0.5);
  backdrop-filter: blur(8px);
}

.editor-dialog {
  width: min(720px, calc(100% - 30px));
  max-height: calc(100vh - 40px);
}

.dialog-shell {
  max-height: calc(100vh - 40px);
  padding: 30px;
  overflow: auto;
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: 28px;
  background: var(--cream);
  box-shadow: var(--shadow);
}

.compact-dialog {
  max-width: 620px;
  margin: 0 auto;
}

.dialog-heading {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 24px;
}

.dialog-heading h2 {
  margin-bottom: 0;
}

.close-button {
  flex: 0 0 auto;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  font-size: 24px;
}

.field {
  display: grid;
  gap: 8px;
  margin-bottom: 18px;
}

.field-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.field label,
.field > span {
  color: var(--ink-soft);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.05em;
}

.field input,
.field textarea,
.field select {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 13px;
  outline: 0;
  color: var(--ink);
  background: rgba(244, 240, 230, 0.58);
}

.field textarea {
  min-height: 110px;
  resize: vertical;
  line-height: 1.65;
}

.field input:focus,
.field textarea:focus,
.field select:focus {
  border-color: var(--sage);
  box-shadow: 0 0 0 3px rgba(100, 123, 104, 0.12);
}

.note-input-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}

.note-input-heading > span {
  color: var(--ink-soft);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.05em;
}

.input-mode-switch {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(244, 240, 230, 0.72);
}

.input-mode-button {
  padding: 7px 11px;
  border: 0;
  border-radius: 999px;
  color: var(--ink-soft);
  background: transparent;
  cursor: pointer;
  font-size: 12px;
}

.input-mode-button.active {
  color: var(--cream);
  background: var(--sage-deep);
}

.voice-panel {
  margin-bottom: 12px;
  padding: 18px;
  border: 1px solid rgba(100, 123, 104, 0.26);
  border-radius: 18px;
  background: linear-gradient(145deg, rgba(220, 228, 216, 0.72), rgba(251, 248, 240, 0.86));
}

.voice-button {
  display: flex;
  align-items: center;
  gap: 13px;
  width: 100%;
  padding: 13px 15px;
  border: 1px solid rgba(63, 89, 72, 0.25);
  border-radius: 16px;
  color: var(--ink);
  text-align: left;
  background: var(--cream);
  cursor: pointer;
}

.voice-button-icon {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  border-radius: 50%;
  color: var(--cream);
  background: var(--clay);
  font-size: 12px;
}

.voice-button-copy strong,
.voice-button-copy small {
  display: block;
}

.voice-button-copy small {
  margin-top: 3px;
  color: var(--ink-soft);
  font-size: 11px;
}

.voice-button.listening {
  border-color: var(--clay);
}

.voice-button.listening .voice-button-icon {
  animation: voice-pulse 1.4s ease-in-out infinite;
  box-shadow: 0 0 0 8px rgba(179, 110, 81, 0.12);
}

.voice-feedback {
  min-height: 42px;
  padding: 12px 4px 0;
}

.voice-feedback p {
  margin-bottom: 3px;
  color: var(--ink-soft);
  font-size: 12px;
}

.voice-interim {
  color: var(--sage-deep) !important;
  font: 15px/1.6 var(--serif);
}

.voice-privacy {
  margin: 8px 4px 0;
  color: var(--ink-soft);
  font-size: 10px;
  line-height: 1.5;
}

.note-content-field textarea {
  min-height: 170px;
}

.simple-photo-field {
  margin-bottom: 22px;
}

.recipe-photo-preview {
  display: grid;
  place-items: center;
  min-height: 150px;
  padding: 24px;
  overflow: hidden;
  border: 1px dashed rgba(179, 110, 81, 0.38);
  border-radius: 18px;
  color: var(--clay);
  text-align: center;
  background: linear-gradient(145deg, rgba(234, 212, 200, 0.5), rgba(251, 248, 240, 0.85));
}

.recipe-photo-preview strong,
.recipe-photo-preview small {
  display: block;
}

.recipe-photo-preview small {
  margin-top: 5px;
  color: var(--ink-soft);
}

.recipe-photo-preview.has-photo {
  height: 220px;
  padding: 0;
  border-style: solid;
}

.recipe-photo-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.photo-choice-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 10px;
}

.photo-choice {
  display: grid;
  grid-template-columns: 34px 1fr;
  column-gap: 10px;
  align-items: center;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--paper);
  cursor: pointer;
}

.photo-choice > span {
  grid-row: 1 / 3;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  color: var(--cream);
  background: var(--clay);
}

.photo-choice strong,
.photo-choice small {
  display: block;
}

.photo-choice strong {
  font-size: 13px;
}

.photo-choice small {
  margin-top: 2px;
  color: var(--ink-soft);
  font-size: 10px;
}

.photo-selection-status {
  margin: 8px 4px 0;
  color: var(--ink-soft);
  font-size: 10px;
}

.simple-ratings {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.simple-rating {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(244, 240, 230, 0.55);
}

.simple-rating-heading {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.simple-rating-heading span {
  font-weight: 600;
  font-size: 13px;
}

.simple-rating-heading small {
  color: var(--ink-soft);
}

.rating-stars {
  display: flex;
  justify-content: space-between;
  gap: 3px;
}

.rating-star {
  width: 36px;
  height: 36px;
  padding: 0;
  border: 0;
  color: rgba(38, 51, 44, 0.2);
  background: transparent;
  cursor: pointer;
  font-size: 25px;
}

.rating-star.active {
  color: var(--gold);
}

@keyframes voice-pulse {
  0%,
  100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.08);
  }
}

.check-field {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 2px 0 20px;
  color: var(--ink-soft);
  font-size: 13px;
}

.dialog-actions {
  position: sticky;
  bottom: -30px;
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 24px -30px -30px;
  padding: 18px 30px 22px;
  border-top: 1px solid var(--line);
  background: var(--cream);
}

.dialog-spacer {
  flex: 1;
}

.search-dialog {
  inset: 0;
  width: 100%;
  height: 100%;
}

.search-shell {
  min-height: 100%;
  padding: max(42px, 7vh) max(24px, calc((100vw - 960px) / 2));
  background: rgba(244, 240, 230, 0.97);
}

.search-top {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 14px;
  align-items: center;
}

.search-field {
  display: flex;
  align-items: center;
  gap: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--ink);
  font-size: 25px;
}

.search-field input {
  width: 100%;
  border: 0;
  outline: 0;
  color: var(--ink);
  background: transparent;
  font: clamp(20px, 3.2vw, 34px) var(--serif);
}

.search-filters {
  display: flex;
  gap: 8px;
  margin: 24px 0 34px;
}

.filter-chip {
  padding: 8px 13px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink-soft);
  background: transparent;
  cursor: pointer;
}

.filter-chip.active {
  color: var(--cream);
  background: var(--sage-deep);
}

.search-results {
  display: grid;
  gap: 10px;
}

.backup-options {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-top: 24px;
}

.backup-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 18px;
  color: var(--ink);
  text-align: left;
  background: var(--paper);
  cursor: pointer;
}

.backup-card:hover {
  border-color: var(--sage);
}

.backup-icon {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  color: var(--cream);
  background: var(--sage-deep);
  font-size: 18px;
}

.backup-card strong,
.backup-card small {
  display: block;
}

.backup-card small {
  margin-top: 4px;
  color: var(--ink-soft);
}

.toast {
  position: fixed;
  left: 50%;
  bottom: 28px;
  z-index: 50;
  max-width: min(420px, calc(100% - 36px));
  padding: 12px 18px;
  border-radius: 999px;
  color: var(--cream);
  text-align: center;
  background: var(--ink);
  box-shadow: var(--shadow);
  opacity: 0;
  transform: translate(-50%, 20px);
  transition: 180ms ease;
  pointer-events: none;
}

.toast.show {
  opacity: 1;
  transform: translate(-50%, 0);
}

.mobile-nav {
  display: none;
}

.hidden {
  display: none !important;
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 760px) {
  .workspace-hero,
  .happiness-form-header,
  .summary-heading,
  .resolution-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .workspace-hero {
    padding-top: 34px;
  }

  .workspace-hero h1,
  .happiness-form-header h1 {
    font-size: 42px;
  }

  .workspace-stats,
  .workspace-stats.joy-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .workspace-stats > div {
    border-right: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
  }

  .workspace-stats > div:nth-child(2n) {
    border-right: 0;
  }

  .workspace-stats > div:nth-last-child(-n + 2) {
    border-bottom: 0;
  }

  .gentle-recommendation {
    grid-template-columns: 38px minmax(0, 1fr);
  }

  .gentle-recommendation b {
    display: none;
  }

  .workspace-filter-panel,
  .joy-filter-panel,
  .friction-list-grid,
  .joy-list-grid,
  .joy-list-grid.view-memories,
  .happiness-form-grid,
  .summary-stat-grid,
  .joy-condition-grid {
    grid-template-columns: 1fr;
  }

  .view-switch,
  .summary-stat-grid .wide-summary {
    grid-column: auto;
  }

  .friction-list-card {
    min-height: 210px;
  }

  .happiness-form-section,
  .resolution-section,
  .friction-timeline,
  .happiness-summary-panel,
  .joy-picker {
    padding: 21px;
    border-radius: 20px;
  }

  .happiness-form-grid .wide {
    grid-column: auto;
  }

  .form-header-actions,
  .joy-picker-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .score-selector > div {
    gap: 5px;
  }

  .joy-picker summary {
    grid-template-columns: 36px minmax(0, 1fr);
  }

  .joy-picker summary b {
    display: none;
  }

  .joy-list-card > img,
  .joy-photo-placeholder,
  .joy-list-grid.view-memories .joy-list-card > img,
  .joy-list-grid.view-memories .joy-photo-placeholder {
    height: 210px;
  }

  .site-header {
    width: calc(100% - 32px);
    padding-top: 15px;
  }

  .desktop-nav,
  .site-header .icon-button {
    display: none;
  }

  .site-header {
    grid-template-columns: 1fr;
  }

  main {
    width: calc(100% - 32px);
    padding-top: 24px;
    padding-bottom: 112px;
  }

  .hero {
    grid-template-columns: 1fr;
    gap: 28px;
    padding-top: 18px;
  }

  h1 {
    font-size: clamp(40px, 13vw, 58px);
  }

  .date-card {
    min-height: 170px;
    padding: 28px 22px;
    border-radius: 28px;
  }

  .date-card .eyebrow {
    font-size: 10px;
    letter-spacing: 0.05em;
  }

  .date-card .day {
    margin-top: 14px;
    font-size: 56px;
  }

  .garden-grid,
  .quick-tool-grid,
  .record-grid,
  .idea-grid,
  .catalog-grid,
  .contact-grid,
  .vault-grid,
  .submodule-grid,
  .creator-project-grid,
  .works-grid {
    grid-template-columns: 1fr;
  }

  .creator-stage-guide {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .creator-stage-guide span:nth-child(3) {
    border-right: 0;
  }

  .creator-filter-bar,
  .creator-form-section,
  .creator-form-grid {
    grid-template-columns: 1fr;
  }

  .creator-form-grid .wide {
    grid-column: auto;
  }

  .creator-form-header {
    display: block;
  }

  .creator-form-actions {
    margin-top: 22px;
  }

  .public-hero {
    grid-template-columns: 1fr;
    gap: 34px;
    min-height: auto;
    padding: 24px 0 58px;
  }

  .tool-map-hero {
    grid-template-columns: 1fr;
    gap: 28px;
    padding: 24px 0 54px;
  }

  .priority-home-hero {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 22px 0 30px;
  }

  .home-quick-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .home-quick-bar > a,
  .home-quick-bar > button,
  .home-quick-bar > div {
    min-height: 104px;
    border-bottom: 1px solid var(--line);
  }

  .home-quick-bar > :nth-child(2) {
    border-right: 0;
  }

  .home-quick-bar > :last-child {
    grid-column: 1 / -1;
    border-right: 0;
    border-bottom: 0;
  }

  .greenhouse-hero,
  .idea-form-header,
  .idea-validation-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .greenhouse-hero {
    padding-top: 32px;
  }

  .greenhouse-hero h1,
  .idea-form-header h1 {
    font-size: 42px;
  }

  .greenhouse-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .greenhouse-stats > div {
    border-bottom: 1px solid var(--line);
  }

  .greenhouse-stats > div:nth-child(2n) {
    border-right: 0;
  }

  .greenhouse-stats > div:nth-last-child(-n + 2) {
    border-bottom: 0;
  }

  .greenhouse-filter-bar,
  .greenhouse-grid,
  .idea-form-grid {
    grid-template-columns: 1fr;
  }

  .greenhouse-filter-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .greenhouse-search,
  .greenhouse-filter-bar > button {
    grid-column: 1 / -1;
  }

  .greenhouse-row {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 7px 10px;
    min-height: 76px;
    padding: 11px 13px;
  }

  .greenhouse-row-title {
    font-size: 15px;
  }

  .greenhouse-row-meta {
    display: flex;
    grid-column: 1;
    grid-row: 2;
    flex-wrap: wrap;
    gap: 5px 8px;
    align-items: center;
  }

  .greenhouse-row-category,
  .greenhouse-row time {
    font-size: 11px;
  }

  .greenhouse-row-arrow {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
  }

  .idea-form-grid .wide {
    grid-column: auto;
  }

  .greenhouse-card {
    min-height: 270px;
  }

  .idea-form-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .idea-form-section,
  .idea-validation-panel,
  .idea-conversion-panel {
    padding: 21px;
  }

  .review-meta {
    justify-content: flex-start;
  }

  .happiness-direction,
  .primary-growth-direction {
    min-height: 390px;
    padding: 28px;
  }

  .happiness-direction h2,
  .primary-growth-direction h2 {
    margin-top: 78px;
  }

  .core-direction-grid,
  .secondary-directions,
  .happiness-card-grid {
    grid-template-columns: 1fr;
  }

  .happiness-page-hero {
    padding: 34px 0 28px;
  }

  .happiness-module-card {
    grid-template-columns: 44px minmax(0, 1fr) auto;
    gap: 12px;
    min-height: 74px;
    padding: 12px 16px;
  }

  .happiness-card-icon {
    width: 42px;
    height: 42px;
    font-size: 20px;
  }

  .happiness-module-card h2 {
    font-size: 19px;
  }

  .private-life-note {
    align-items: flex-start;
  }

  .secondary-direction-card {
    grid-template-columns: 1fr auto;
  }

  .secondary-direction-card > span {
    grid-column: 1 / -1;
  }

  .home-boundary-note,
  .direction-page-hero {
    display: block;
  }

  .home-boundary-note a {
    display: inline-flex;
    margin-top: 18px;
  }

  .direction-page-hero .status-badge {
    margin-top: 18px;
  }

  .direction-module-list a {
    grid-template-columns: 36px minmax(0, 1fr) 20px;
    gap: 12px;
    padding: 20px 16px;
  }

  .direction-module-list small {
    grid-column: 2 / -1;
    justify-self: start;
  }

  .tool-count-card {
    min-height: 180px;
    border-radius: 32px;
  }

  .tool-count {
    font-size: 58px;
  }

  .tool-category {
    grid-template-columns: 1fr;
    gap: 18px;
  }

  .home-tool-grid {
    grid-template-columns: 1fr;
  }

  .home-footer-note {
    display: block;
  }

  .home-footer-note a {
    display: inline-flex;
    margin-top: 14px;
  }

  .public-intro-card {
    border-radius: 34px;
  }

  .public-intro-card p {
    margin-top: 30px;
  }

  .public-boundary,
  .vault-entry-strip {
    grid-template-columns: 1fr;
  }

  .login-card {
    min-height: 500px;
    padding: 38px 24px;
    border-radius: 34px;
  }

  .module-card {
    min-height: 255px;
    padding: 25px;
  }

  .module-card h3 {
    margin-top: 58px;
  }

  .planned-hero {
    grid-template-columns: 1fr;
    gap: 26px;
  }

  .planned-mark {
    min-height: 150px;
  }

  .planned-title-line {
    display: block;
  }

  .planned-title-line .status-badge {
    margin-bottom: 18px;
  }

  .plan-panel {
    padding: 25px;
  }

  .section-note {
    max-width: none;
    margin-top: 8px;
    text-align: left;
  }

  .section-heading,
  .page-intro {
    display: block;
  }

  .section-heading p {
    margin-top: 8px;
  }

  .page-actions {
    margin-top: 22px;
  }

  .primary-button,
  .secondary-button {
    flex: 1;
    text-align: center;
  }

  .recent-row {
    grid-template-columns: 44px minmax(0, 1fr);
  }

  .recent-row .record-date {
    display: none;
  }

  .mobile-nav {
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: max(12px, env(safe-area-inset-bottom));
    z-index: 18;
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    padding: 7px;
    border: 1px solid rgba(255, 255, 255, 0.55);
    border-radius: 22px;
    background: rgba(38, 51, 44, 0.93);
    box-shadow: var(--shadow);
    backdrop-filter: blur(16px);
  }

  .mobile-nav a,
  .mobile-nav button {
    display: grid;
    gap: 3px;
    place-items: center;
    min-height: 50px;
    border: 0;
    border-radius: 15px;
    color: rgba(251, 248, 240, 0.7);
    background: transparent;
    font-size: 10px;
  }

  .mobile-nav span {
    font-size: 20px;
  }

  .mobile-nav a.active {
    color: var(--cream);
    background: rgba(255, 255, 255, 0.11);
  }

  .editor-dialog {
    width: 100%;
    max-height: 92vh;
    margin: auto 0 0;
  }

  .dialog-shell {
    max-height: 92vh;
    padding: 24px 20px;
    border-radius: 26px 26px 0 0;
  }

  .dialog-actions {
    bottom: -24px;
    margin: 24px -20px -24px;
    padding: 16px 20px max(18px, env(safe-area-inset-bottom));
  }

  .field-row,
  .backup-options {
    grid-template-columns: 1fr;
  }

  .photo-choice-row,
  .simple-ratings {
    grid-template-columns: 1fr;
  }

  .rating-stars {
    justify-content: flex-start;
    gap: 8px;
  }

  .rating-star {
    width: 40px;
    height: 40px;
  }

  .note-input-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .input-mode-switch {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
  }

  .input-mode-button {
    min-height: 40px;
  }

  .search-shell {
    padding: 24px 18px 100px;
  }

  .toast {
    bottom: 86px;
  }
}

/* EF learning review */
.english-lab,.english-library,.english-editor{max-width:1120px;margin:0 auto;padding:38px 28px 110px}.english-lab-hero,.english-section-heading,.english-editor form>header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.english-lab-hero{padding:28px 0 34px}.english-lab-hero h1,.english-library h1,.english-editor h1{margin:5px 0 10px;font-family:var(--display-font);font-size:clamp(2rem,5vw,4rem);color:var(--forest)}.english-lab-hero p,.english-section-heading p{max-width:670px;color:var(--ink-soft)}.english-overview-grid{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:16px}.english-overview-grid>article,.english-library-links a,.english-lesson-row,.english-editor form,.english-linked-section,.english-training{border:1px solid rgba(34,76,57,.14);background:rgba(255,253,246,.82);box-shadow:0 16px 40px rgba(42,66,50,.07)}.english-overview-grid>article{border-radius:22px;padding:24px}.english-overview-grid article>span{font-size:.78rem;letter-spacing:.12em;color:var(--forest);font-weight:800}.english-due-panel strong{display:block;margin:10px 0 2px;font-family:var(--display-font);font-size:3.3rem;color:var(--forest)}.english-due-panel p{min-height:44px;color:var(--ink-soft)}.english-summary-panel>div{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:18px}.english-summary-panel p,.english-frequency-panel p{margin:0;padding:10px 0;border-bottom:1px dashed rgba(34,76,57,.14);display:flex;justify-content:space-between;gap:12px}.english-summary-panel b{font-size:1.35rem;color:var(--forest)}.english-summary-panel small,.english-frequency-panel small{color:var(--ink-soft)}.english-section-heading{align-items:end;margin:42px 0 16px}.english-section-heading h2{margin:4px 0;font-size:1.65rem;color:var(--forest)}.english-section-actions{display:flex;gap:10px;flex-wrap:wrap}.english-lesson-list{display:grid;gap:10px}.english-lesson-row{display:grid;grid-template-columns:110px minmax(0,1fr) auto;align-items:center;gap:18px;padding:18px 20px;border-radius:16px;color:inherit;text-decoration:none}.english-lesson-row:hover,.english-card-row:hover{border-color:rgba(34,76,57,.36);transform:translateY(-1px)}.english-lesson-row time{color:var(--forest);font-weight:800}.english-lesson-row h3,.english-lesson-row p{margin:0}.english-lesson-row p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft)}.english-lesson-row>span{color:var(--forest);font-weight:700}.english-library-links{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:18px}.english-library-links a{border-radius:18px;padding:20px;display:flex;justify-content:space-between;gap:16px;color:inherit;text-decoration:none}.english-library-links b{color:var(--forest)}.english-library-links span{color:var(--ink-soft)}.english-editor form{margin-top:22px;padding:26px;border-radius:24px}.english-editor form>label,.english-form-grid label{display:grid;gap:8px;margin:18px 0}.english-editor label>span{font-weight:700;color:var(--forest)}.english-editor input,.english-editor textarea,.english-editor select{width:100%;box-sizing:border-box;border:1px solid rgba(34,76,57,.2);border-radius:13px;background:#fffdf8;padding:13px 14px;font:inherit;color:var(--ink)}.english-editor textarea{min-height:96px;max-height:430px;resize:none;overflow-y:auto}.english-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.english-editor footer{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.english-linked-section,.english-training{margin-top:24px;padding:24px;border-radius:24px}.english-linked-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.english-card-list,.english-linked-grid>div{display:grid;gap:10px}.english-card-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:15px 16px;border:1px solid rgba(34,76,57,.14);border-radius:14px;background:#fffdf8;color:inherit;text-decoration:none;transition:.18s ease}.english-card-row>div{display:grid;gap:4px;min-width:0}.english-card-row b,.english-card-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.english-card-row span,.english-card-row small{color:var(--ink-soft)}.english-streak{padding:12px 15px;border-radius:12px;background:rgba(66,112,79,.09)}.english-training-tabs{display:flex;gap:9px;flex-wrap:wrap;margin:16px 0}.english-training-tabs button{border:1px solid rgba(34,76,57,.2);border-radius:999px;background:#fffdf8;padding:9px 13px;color:var(--forest);font-weight:700}.english-training-card{padding:20px;border-radius:18px;background:rgba(235,241,229,.65)}.english-training-card>p{white-space:pre-line}.english-training-card blockquote{margin:12px 0;padding:14px 18px;border-left:3px solid var(--forest);background:#fffdf8}.english-training-card #english-answer-panel>div{display:flex;gap:10px;flex-wrap:wrap}.english-attempt-history{margin-top:20px}.english-attempt-history p{display:grid;grid-template-columns:1fr auto auto;gap:12px;margin:0;padding:10px 0;border-bottom:1px dashed rgba(34,76,57,.14)}.english-attempt-history .correct{color:#2d7046}.english-attempt-history .wrong{color:#94603d}.english-attempt-history small{color:var(--ink-soft)}

@media (max-width:760px){.english-lab,.english-library,.english-editor{padding:24px 16px 100px}.english-lab-hero,.english-section-heading,.english-editor form>header{display:grid;gap:14px}.english-overview-grid,.english-library-links,.english-linked-grid,.english-form-grid{grid-template-columns:1fr}.english-lesson-row{grid-template-columns:78px minmax(0,1fr);gap:12px}.english-lesson-row>span{display:none}.english-library-links a{display:grid}.english-card-row{align-items:flex-start}.english-card-row small{white-space:nowrap}.english-editor form,.english-linked-section,.english-training{padding:18px}.english-section-actions{display:grid;grid-template-columns:1fr}.english-section-actions a{text-align:center}.english-training-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.english-training-tabs button{white-space:normal}.english-attempt-history p{grid-template-columns:1fr auto}.english-attempt-history small{grid-column:1/-1}}

/* Family finance V1 */
.finance-home,.finance-workspace,.finance-editor{max-width:1180px;margin:0 auto;padding:38px 28px 110px}.finance-hero,.finance-section-heading,.finance-editor form>header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.finance-hero{padding:28px 0 30px}.finance-hero h1,.finance-workspace h1,.finance-editor h1{margin:5px 0 10px;font-family:var(--display-font);font-size:clamp(2rem,5vw,3.8rem);color:var(--forest)}.finance-hero p,.finance-section-heading p{max-width:720px;color:var(--ink-soft)}.finance-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}.finance-actions a{padding:10px 15px;border:1px solid rgba(34,76,57,.18);border-radius:999px;background:#fffdf8;color:var(--forest);font-weight:700;text-decoration:none}.finance-number-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.finance-number-grid article{padding:20px;border:1px solid rgba(34,76,57,.14);border-radius:18px;background:rgba(255,253,246,.86);box-shadow:0 12px 30px rgba(42,66,50,.06)}.finance-number-grid span{display:block;color:var(--ink-soft);font-size:.84rem}.finance-number-grid strong{display:block;margin-top:7px;color:var(--forest);font-size:clamp(1.2rem,3vw,1.85rem)}.finance-as-of{margin:12px 2px 28px;color:var(--ink-soft)}.finance-first-step{margin:18px 0 28px;padding:26px;border-radius:22px;background:rgba(225,235,219,.72);border:1px solid rgba(34,76,57,.14)}.finance-first-step h2{margin-top:0;color:var(--forest)}.finance-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.finance-chart-grid>article,.finance-recent,.finance-management-grid>div,.finance-editor form,.snapshot-entry-section{padding:22px;border:1px solid rgba(34,76,57,.14);border-radius:22px;background:rgba(255,253,246,.84);box-shadow:0 14px 34px rgba(42,66,50,.06)}.finance-chart-grid h2{margin:0 0 16px;color:var(--forest);font-size:1.18rem}.finance-chart-empty{min-height:150px;display:grid;place-items:center;text-align:center;padding:15px;color:var(--ink-soft);border:1px dashed rgba(34,76,57,.2);border-radius:15px;background:rgba(247,244,235,.66)}.finance-line-chart{width:100%;height:auto}.finance-line-chart line{stroke:rgba(34,76,57,.18)}.finance-line-chart polyline{fill:none;stroke:var(--forest);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.finance-line-chart circle{fill:#f5efe1;stroke:var(--forest);stroke-width:3}.finance-line-chart text{font-size:12px;fill:var(--ink-soft)}.finance-donut-wrap{display:grid;grid-template-columns:170px 1fr;gap:22px;align-items:center}.finance-donut{width:160px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;position:relative}.finance-donut::after{content:"";position:absolute;inset:28px;border-radius:50%;background:#fffdf8}.finance-donut span{position:relative;z-index:1;font-weight:800;color:var(--forest);font-size:.82rem;text-align:center}.finance-legend p{display:grid;grid-template-columns:12px 1fr auto;gap:8px;align-items:center;margin:7px 0}.finance-legend i{width:10px;height:10px;border-radius:50%}.finance-legend b{font-size:.82rem}.finance-bar-list>div{margin:13px 0}.finance-bar-list>div>span{font-weight:700}.finance-bar-list>div>div,.finance-allocation-list>div>div{height:14px;position:relative;margin:7px 0;background:rgba(34,76,57,.07);border-radius:999px;overflow:hidden}.finance-bar-list i,.finance-bar-list em,.finance-allocation-list i,.finance-allocation-list em{position:absolute;left:0;height:6px;border-radius:999px}.finance-bar-list i,.finance-allocation-list i{top:1px;background:#b7925e}.finance-bar-list em,.finance-allocation-list em{bottom:1px;background:var(--forest)}.finance-bar-list small{color:var(--ink-soft)}.finance-chart-key{display:flex;align-items:center;gap:6px;font-size:.8rem;color:var(--ink-soft)}.finance-chart-key i,.finance-chart-key em{display:inline-block;width:18px;height:6px;background:#b7925e;border-radius:9px}.finance-chart-key em{background:var(--forest)}.finance-allocation-list p{display:flex;justify-content:space-between;margin:12px 0 0;font-size:.86rem}.finance-chart-grid details{margin-top:15px}.finance-chart-grid summary{cursor:pointer;color:var(--forest);font-weight:700}.finance-chart-grid details form{display:grid;gap:8px;margin-top:12px}.finance-chart-grid details label{display:grid;grid-template-columns:1fr 82px auto;align-items:center;gap:8px}.finance-chart-grid input,.finance-editor input,.finance-editor select,.finance-editor textarea{width:100%;box-sizing:border-box;border:1px solid rgba(34,76,57,.2);border-radius:12px;background:#fffdf8;padding:11px 12px;font:inherit}.finance-disclaimer{display:block;margin-top:12px;color:var(--ink-soft)}.finance-recent{margin-top:18px}.finance-recent>a,.finance-review-list>a,.finance-snapshot-list>a{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 0;border-top:1px dashed rgba(34,76,57,.16);color:inherit;text-decoration:none}.finance-recent a span,.finance-review-list span,.finance-snapshot-list span{color:var(--ink-soft)}.finance-section-heading{align-items:end;margin:24px 0 18px}.finance-section-heading h2{margin:0;color:var(--forest)}.finance-section-heading>div:last-child{display:flex;gap:10px;flex-wrap:wrap}.finance-management-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.finance-management-grid h2{margin-top:0;color:var(--forest)}.finance-list-row{display:flex;justify-content:space-between;gap:16px;padding:15px 0;border-top:1px dashed rgba(34,76,57,.16);color:inherit;text-decoration:none}.finance-list-row div{display:grid;gap:3px}.finance-list-row span,.finance-list-row small{color:var(--ink-soft)}.finance-editor form{margin-top:24px}.finance-editor form>label,.finance-editor .snapshot-number-grid label,.snapshot-liability-entry label{display:grid;gap:7px;margin:16px 0}.finance-editor label>span{font-weight:700;color:var(--forest)}.finance-editor textarea{min-height:90px;max-height:420px;resize:none}.finance-editor footer{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}.finance-check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;justify-content:start}.finance-check input{width:auto}.snapshot-entry-section{margin:18px 0}.snapshot-entry-section>h2{margin-top:0;color:var(--forest)}.snapshot-account-entry,.snapshot-liability-entry{padding:16px 0;border-top:1px dashed rgba(34,76,57,.16)}.snapshot-account-entry header{display:flex;justify-content:space-between;gap:14px}.snapshot-account-entry header div{display:grid}.snapshot-account-entry header span{color:var(--ink-soft);font-size:.84rem}.snapshot-number-grid,.review-number-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.review-number-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.finance-snapshot-list,.finance-review-list{display:grid}.finance-snapshot-list>a,.finance-review-list>a{padding:17px;border-bottom:1px solid rgba(34,76,57,.1)}

.finance-section-block{margin-top:34px}.finance-block-heading{margin-bottom:14px}.finance-block-heading h2{margin:4px 0;color:var(--forest);font-family:var(--display-font);font-size:clamp(1.45rem,3vw,2.2rem)}.finance-overview-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.finance-ownership-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.finance-ownership-grid a{display:grid;gap:8px;min-height:128px;padding:20px;border:1px solid rgba(34,76,57,.15);border-radius:20px;background:linear-gradient(145deg,rgba(255,253,246,.94),rgba(232,239,226,.78));color:inherit;text-decoration:none}.finance-ownership-grid a:last-child{background:var(--forest);color:#fff}.finance-ownership-grid a span{font-weight:700}.finance-ownership-grid a strong{font-size:1.35rem}.finance-ownership-grid a small{align-self:end;opacity:.72}.finance-composition-panel{padding:24px;border:1px solid rgba(34,76,57,.14);border-radius:22px;background:rgba(255,253,246,.84)}.finance-common-grid,.finance-change-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.finance-common-grid article,.finance-change-grid article{padding:18px;border:1px solid rgba(34,76,57,.13);border-radius:18px;background:rgba(255,253,246,.82)}.finance-common-grid span,.finance-change-grid span{display:block;color:var(--ink-soft);font-size:.84rem}.finance-common-grid strong,.finance-change-grid strong{display:block;margin-top:7px;color:var(--forest);font-size:1.1rem}.finance-secondary-charts{margin-top:34px}.finance-secondary-charts>article:last-child{grid-column:1/-1}.finance-detail-total{font-size:1.8rem;color:var(--forest)}.finance-asset-detail-list{display:grid;gap:10px}.finance-asset-detail-list article{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.7fr);gap:20px;padding:18px 20px;border:1px solid rgba(34,76,57,.14);border-radius:18px;background:#fffdf8}.finance-asset-detail-list article>div{display:grid;gap:4px}.finance-asset-detail-list article>div:last-child{text-align:right}.finance-asset-detail-list span{color:var(--ink-soft)}.finance-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}.finance-dimension-panel{margin:20px 0;padding:18px;border:1px solid rgba(34,76,57,.13);border-radius:18px;background:rgba(232,239,226,.42)}.finance-dimension-panel h2{margin:3px 0 8px;color:var(--forest);font-size:1.15rem}.finance-inclusion-box{display:grid;gap:8px;margin:18px 0;padding:16px;border-radius:16px;background:rgba(245,238,220,.65)}.finance-inclusion-box p{margin:2px 0 0;color:var(--ink-soft);font-size:.84rem}.snapshot-liability-entry>div{display:grid;gap:3px}.snapshot-liability-entry>div span{color:var(--ink-soft);font-size:.84rem}
.finance-goal-card{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:24px 0;padding:22px;border-radius:22px;background:linear-gradient(135deg,#315d46,#557859);color:#fff}.finance-goal-card h2{margin:.25rem 0}.finance-goal-card p{margin:.35rem 0;opacity:.86}.finance-goal-card>div:last-child{text-align:right;display:grid;gap:10px}.finance-goal-card strong{font-size:1.7rem}.finance-inline-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:12px 0 20px;padding:18px;border-radius:18px;background:rgba(232,239,226,.48)}.finance-inline-form label{display:grid;gap:6px}.finance-inline-form input{border:1px solid rgba(34,76,57,.2);border-radius:10px;padding:10px;background:#fffdf8;font:inherit}.finance-metric-switch{display:flex;gap:8px;align-items:center;margin:18px 0}.finance-metric-switch button{border:1px solid rgba(34,76,57,.2);border-radius:999px;background:#fffdf8;padding:8px 14px;color:var(--forest);cursor:pointer}.finance-metric-switch button.active{background:var(--forest);color:#fff}.finance-account-group{margin:16px 0}.finance-account-group h3{margin:10px 0;color:var(--forest)}.finance-account-group .finance-list-row{display:flex;align-items:center;padding:8px 0}.finance-account-group .finance-list-row>a{display:flex;justify-content:space-between;flex:1;gap:14px;color:inherit;text-decoration:none}.finance-order-buttons{display:flex;gap:4px}.finance-order-buttons button{border:1px solid rgba(34,76,57,.16);background:#fffdf8;border-radius:8px;padding:4px 8px;color:var(--forest)}.finance-order-buttons button:disabled{opacity:.3}.finance-snapshot-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border-bottom:1px solid rgba(34,76,57,.1)}.finance-snapshot-row>a{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:14px;align-items:center;padding:17px 0;color:inherit;text-decoration:none}.finance-snapshot-row details{position:relative}.finance-snapshot-row summary{cursor:pointer;color:var(--forest);list-style:none}.finance-snapshot-row details>div{position:absolute;right:0;z-index:2;display:grid;gap:8px;min-width:110px;padding:10px;border:1px solid rgba(34,76,57,.16);border-radius:12px;background:#fffdf8;box-shadow:0 8px 20px rgba(0,0,0,.08)}.finance-snapshot-row details a,.finance-snapshot-row details button{border:0;background:none;text-align:left;color:var(--forest);padding:5px;cursor:pointer}.finance-type-detail{display:block!important}.finance-type-detail>div:last-child{margin-top:10px;text-align:left!important}.finance-type-detail p{display:flex;justify-content:space-between;border-top:1px dashed rgba(34,76,57,.12);padding:8px 0;margin:0}
@media(max-width:900px){.finance-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-ownership-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-common-grid,.finance-change-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.finance-home,.finance-workspace,.finance-editor{padding:24px 16px 100px}.finance-hero,.finance-section-heading,.finance-editor form>header{display:grid;gap:14px}.finance-number-grid,.finance-chart-grid,.finance-management-grid,.finance-ownership-grid,.finance-common-grid,.finance-change-grid,.finance-form-grid{grid-template-columns:1fr}.finance-donut-wrap{grid-template-columns:1fr;justify-items:center}.finance-legend{width:100%}.snapshot-number-grid,.review-number-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-recent>a,.finance-review-list>a,.finance-snapshot-list>a{grid-template-columns:1fr;gap:4px}.finance-actions{display:grid;grid-template-columns:1fr}.finance-actions a{text-align:center}.finance-section-heading>div:last-child{display:grid}.finance-list-row{align-items:flex-start}.finance-chart-grid details label{grid-template-columns:1fr 72px auto}.finance-asset-detail-list article{grid-template-columns:1fr}.finance-asset-detail-list article>div:last-child{text-align:left}.finance-secondary-charts>article:last-child{grid-column:auto}}
@media(max-width:760px){.finance-goal-card{display:grid}.finance-goal-card>div:last-child{text-align:left;display:flex;align-items:center;justify-content:space-between}.finance-inline-form{grid-template-columns:1fr}.finance-snapshot-row{grid-template-columns:1fr}.finance-snapshot-row>a{grid-template-columns:1fr;gap:4px}.finance-snapshot-row details{padding-bottom:10px}.finance-account-group .finance-list-row{gap:8px}}

/* Family finance dashboard: the default view is an analysis surface, while
   profile and goal forms remain collapsed until the user explicitly edits. */
.finance-profile-summary{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:16px;align-items:center;margin:8px 0 18px;padding:18px 20px;border:1px solid rgba(34,76,57,.14);border-radius:18px;background:rgba(255,253,246,.84)}
.finance-profile-summary div{display:grid;gap:5px}.finance-profile-summary span{font-size:.8rem;color:var(--ink-soft)}.finance-profile-summary strong{font-size:1.1rem;color:var(--forest)}
.finance-net-goal-card{min-height:190px;padding:28px 32px;align-items:stretch;background:linear-gradient(135deg,#214b37,#64885e);box-shadow:0 18px 40px rgba(34,76,57,.18)}
.finance-net-goal-card h2{font-size:clamp(1.8rem,4vw,3rem);letter-spacing:-.02em}.finance-net-goal-card>div:first-child{flex:1}.finance-net-goal-card>div:last-child{min-width:150px;align-content:space-between}.finance-net-goal-card .secondary-button{border:1px solid rgba(255,255,255,.68);background:rgba(255,255,255,.16);color:#fff}.finance-goal-progress-large{height:22px!important;margin-top:22px!important;background:rgba(255,255,255,.28)!important;border:1px solid rgba(255,255,255,.35)}.finance-goal-progress-large i{background:#f2c879!important;box-shadow:0 0 12px rgba(242,200,121,.45)}
.finance-net-hero{padding:28px 30px;border-radius:22px;background:linear-gradient(140deg,#fffdf8,#e7efdf);border:1px solid rgba(34,76,57,.15)}.finance-net-hero span{color:var(--ink-soft);font-weight:700}.finance-net-hero strong{display:block;margin:8px 0;color:var(--forest);font-size:clamp(2.4rem,7vw,4.6rem);letter-spacing:-.04em}.finance-net-hero p{margin:0;color:var(--ink-soft)}.finance-secondary-metrics{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:14px}.finance-secondary-metrics article{min-height:94px;padding:16px}.finance-secondary-metrics strong{font-size:1.15rem}
.finance-analysis-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.finance-analysis-grid>article{padding:22px;border:1px solid rgba(34,76,57,.14);border-radius:22px;background:rgba(255,253,246,.84);box-shadow:0 14px 34px rgba(42,66,50,.06)}.finance-type-bars{display:grid;gap:16px}.finance-type-bar>div:first-child{display:flex;justify-content:space-between;gap:12px;margin-bottom:6px}.finance-type-bar span{color:var(--ink-soft);font-size:.82rem}.finance-type-bar>div:last-child{height:12px;overflow:hidden;border-radius:999px;background:rgba(34,76,57,.1)}.finance-type-bar i{display:block;height:100%;border-radius:999px}
.finance-portfolio-section{padding:24px;border:1px solid rgba(34,76,57,.14);border-radius:22px;background:rgba(255,253,246,.84);box-shadow:0 14px 34px rgba(42,66,50,.06)}.finance-portfolio-stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:20px}.finance-portfolio-stats article{padding:16px}.finance-portfolio-list{display:grid;gap:0;border-top:1px solid rgba(34,76,57,.12)}.finance-portfolio-list>a{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:18px;align-items:center;padding:14px 0;border-bottom:1px dashed rgba(34,76,57,.16);color:inherit;text-decoration:none}.finance-portfolio-list>a div{display:grid;gap:4px}.finance-portfolio-list>a span,.finance-portfolio-list>a small{color:var(--ink-soft)}.finance-portfolio-list>a strong{color:var(--forest)}.finance-portfolio-analysis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:22px}.finance-portfolio-analysis article{padding:18px;border-radius:18px;background:rgba(232,239,226,.4)}.finance-portfolio-analysis h3{margin-top:0;color:var(--forest)}.finance-portfolio-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.finance-portfolio-actions .secondary-button{display:inline-flex;align-items:center;text-decoration:none}
.finance-targets-section{margin-top:20px}.finance-targets-section>article{grid-column:1/-1}
@media(max-width:760px){.finance-profile-summary{grid-template-columns:1fr auto}.finance-profile-summary>div:nth-child(2){grid-column:1/-1}.finance-profile-summary button{grid-column:2;grid-row:1}.finance-net-goal-card{padding:22px 20px}.finance-net-goal-card>div:last-child{min-width:0}.finance-net-hero{padding:22px 20px}.finance-secondary-metrics,.finance-analysis-grid,.finance-portfolio-analysis{grid-template-columns:1fr}.finance-portfolio-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-portfolio-list>a{grid-template-columns:minmax(0,1fr) auto;gap:8px}.finance-portfolio-list>a small{grid-column:1/-1}.finance-type-bar>div:first-child{align-items:flex-start;flex-direction:column;gap:2px}}
.finance-portfolio-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){.finance-portfolio-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.finance-investment-manager{max-width:1180px}.finance-investment-summary{margin:18px 0 22px}.finance-investment-import,.finance-import-review{padding:20px;border:1px solid rgba(34,76,57,.14);border-radius:18px;background:rgba(255,253,246,.9);margin:16px 0}.finance-investment-import textarea{width:100%;min-height:160px;resize:vertical}.finance-investment-draft{padding:16px 0;border-top:1px dashed rgba(34,76,57,.18)}.finance-investment-draft-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:10px}.finance-investment-draft-grid label,.finance-investment-filters label{display:grid;gap:5px}.finance-investment-draft-grid input,.finance-investment-draft-grid select,.finance-investment-filters input,.finance-investment-filters select{min-width:0}.finance-investment-filters{display:grid;grid-template-columns:2fr repeat(5,minmax(0,1fr));gap:10px;align-items:end;margin:12px 0}.finance-investment-filters input,.finance-investment-filters select{height:42px;padding:0 10px;border:1px solid var(--line);border-radius:10px;background:var(--cream);color:var(--ink)}.finance-investment-major-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.finance-investment-major{display:grid;grid-template-columns:auto 1fr auto;gap:5px 10px;align-items:center;padding:16px;border:1px solid rgba(34,76,57,.14);border-radius:16px;background:rgba(255,253,246,.88);color:inherit;text-decoration:none}.finance-investment-major b{white-space:nowrap}.finance-investment-major strong{text-align:right}.finance-investment-major span,.finance-investment-major small{grid-column:2/-1;color:var(--ink-soft)}.finance-investment-major-swatch{width:12px;height:12px;border-radius:50%;background:var(--sage-deep);grid-row:1/3}.finance-investment-lines{border-top:1px solid rgba(34,76,57,.14)}.finance-investment-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border-bottom:1px dashed rgba(34,76,57,.15)}.finance-investment-line>a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:14px 0;color:inherit;text-decoration:none;min-width:0}.finance-investment-line>a div{display:grid;gap:4px;min-width:0}.finance-investment-line>a span,.finance-investment-line>a small{color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.finance-investment-line>a strong{text-align:right}.finance-investment-line .icon-button{border:0;background:transparent;color:var(--clay);cursor:pointer}.finance-investment-list-section{margin-top:26px}.finance-investment-dashboard{margin-top:26px}.finance-investment-dashboard .finance-block-heading{margin-bottom:12px}
@media(max-width:760px){.finance-investment-draft-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-investment-filters{grid-template-columns:1fr 1fr}.finance-investment-filters input,.finance-investment-filters button{grid-column:1/-1}.finance-investment-major-grid{grid-template-columns:1fr}.finance-investment-line>a{grid-template-columns:minmax(0,1fr) auto;gap:10px}.finance-investment-line>a span{max-width:52vw}.finance-investment-line .icon-button{font-size:12px;padding:6px}.finance-investment-import,.finance-import-review{padding:16px}}
.finance-goal-progress{height:16px;margin-top:14px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.3)}.finance-goal-progress i{display:block;height:100%;border-radius:inherit;background:#f4d28b;transition:width .2s ease}.finance-maintenance-row{margin:10px 0;padding:16px;border:1px solid rgba(34,76,57,.14);border-radius:16px;background:#fffdf8}.finance-maintenance-summary{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,.35fr);gap:18px;align-items:center}.finance-maintenance-summary>div{display:grid;gap:5px}.finance-maintenance-summary span{color:var(--ink-soft);font-size:.86rem}.finance-maintenance-summary label{display:grid;gap:5px}.finance-maintenance-summary input{width:100%;box-sizing:border-box;border:1px solid rgba(34,76,57,.2);border-radius:10px;padding:10px;background:#fffdf8;font:inherit}.finance-maintenance-row details{margin-top:12px}.finance-maintenance-row summary,.finance-add-panel summary{cursor:pointer;color:var(--forest);font-weight:700}.finance-add-panel{margin:14px 0;padding:16px;border:1px dashed rgba(34,76,57,.25);border-radius:16px;background:rgba(232,239,226,.35)}.finance-maintenance-preview{margin:24px 0;padding:18px;border-radius:16px;background:rgba(245,238,220,.65)}.finance-maintenance-preview>div{display:flex;gap:22px;flex-wrap:wrap;color:var(--ink-soft)}
@media(max-width:760px){.finance-maintenance-summary{grid-template-columns:1fr}.finance-maintenance-summary label{max-width:none}}

/* Success diary and words of strength */
.daily-energy-panel { margin: 0 0 28px; padding: 30px; border: 1px solid var(--line); border-radius: 30px; background: linear-gradient(145deg,#f7eddb,#edf2e8); box-shadow: 0 14px 38px rgba(64,72,61,.06); }
.daily-energy-heading,.daily-energy-actions,.energy-workspace-hero,.energy-form > header,.energy-form > footer { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.daily-energy-heading h2 { margin:3px 0 0; font: 34px/1.2 var(--serif); }
.daily-energy-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; margin:22px 0; }
.energy-quote,.energy-success,.energy-empty { min-height:220px; padding:24px; border:1px solid rgba(63,89,72,.12); border-radius:22px; background:rgba(255,253,248,.82); color:var(--ink); }
.energy-quote span,.energy-success span { color:var(--sage-deep); font-size:12px; font-weight:800; letter-spacing:.04em; }.energy-quote blockquote { margin:28px 0 18px; font:24px/1.65 var(--serif); }.energy-quote small,.energy-success small { color:var(--ink-soft); }.energy-success h3 { margin:28px 0 10px; font:25px/1.4 var(--serif); }.energy-success p,.energy-empty p { color:var(--ink-soft); line-height:1.7; }.energy-success small { display:block; margin-top:24px; font-weight:750; }.energy-empty { display:flex; flex-direction:column; justify-content:center; }.energy-empty > span { font-size:28px; }.energy-empty a { margin-top:auto; color:var(--sage-deep); font-weight:750; }
.daily-energy-actions { justify-content:flex-start; flex-wrap:wrap; }.confidence-result { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-top:20px; padding-top:20px; border-top:1px solid var(--line); }.confidence-result a { padding:16px; border-radius:16px; background:rgba(255,253,248,.72); color:var(--ink); }.confidence-result span { display:block; margin:5px 0; color:var(--ink-soft); font-size:12px; }.confidence-result p { margin:0; color:var(--ink-soft); line-height:1.6; }
.energy-workspace,.energy-editor { width:min(1040px,calc(100% - 40px)); margin:0 auto; padding:36px 0 90px; }.energy-workspace-hero { margin:25px 0; padding:36px; border-radius:28px; background:linear-gradient(145deg,#eef3e9,#fbf6eb); }.energy-workspace-hero h1,.energy-form h1 { margin:4px 0 10px; font:clamp(40px,6vw,64px)/1.08 var(--serif); }.energy-workspace-hero p { max-width:650px; color:var(--ink-soft); line-height:1.8; }
.energy-toolbar { display:grid; grid-template-columns:minmax(220px,1.4fr) minmax(140px,1fr) auto auto; gap:9px; align-items:center; margin:20px 0; padding:14px; border:1px solid var(--line); border-radius:18px; background:rgba(251,248,240,.58); }.energy-toolbar .greenhouse-search { min-height:43px; }.energy-toolbar select { min-height:43px; width:100%; min-width:0; padding:0 10px; border:1px solid var(--line); border-radius:12px; color:var(--ink); background:var(--cream); }.energy-toolbar > div { display:flex; gap:8px; }.favorite-filter { align-self:center; white-space:nowrap; }
.energy-random-result:not(:empty) { display:grid; gap:8px; margin:18px 0; padding:18px; border:1px dashed rgba(63,89,72,.28); border-radius:20px; background:#eef3e9; }
.quote-favorite { border:0; background:transparent; color:#b3aa92; cursor:pointer; }.quote-favorite.active { color:#d49d35; }
.energy-form { margin-top:24px; padding:34px; border:1px solid var(--line); border-radius:28px; background:#fffdf8; }.energy-form > header > div:last-child { display:flex; gap:10px; }.energy-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:28px; }.energy-form-grid .wide { grid-column:1/-1; }.ability-checks { display:flex; flex-wrap:wrap; gap:8px; padding:18px; border:1px solid var(--line); border-radius:16px; }.ability-checks legend { padding:0 6px; color:var(--ink-soft); }.ability-checks label { padding:7px 10px; border-radius:999px; background:var(--sage-pale); }.energy-form > footer { margin-top:24px; padding-top:20px; border-top:1px solid var(--line); }.energy-save-status { color:var(--ink-soft); font-size:13px; }

@media (max-width:760px) {
  .daily-energy-panel { padding:22px 18px; }.daily-energy-heading,.energy-workspace-hero,.energy-form > header,.energy-form > footer { align-items:stretch; flex-direction:column; }.daily-energy-grid,.confidence-result,.energy-form-grid { grid-template-columns:1fr; }.daily-energy-actions { display:grid; }.energy-workspace,.energy-editor { width:min(100% - 28px,680px); }.energy-workspace-hero,.energy-form { padding:24px 20px; }.energy-toolbar { grid-template-columns:1fr; }.energy-toolbar > div { display:grid; }.energy-form-grid .wide { grid-column:auto; }.energy-form > header > div:last-child { display:grid; grid-template-columns:1fr 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

/* 幸福生活通用列表：与灵感温室共用同一套横向整行列表语言。
   .garden-list 是列表容器，.garden-record-row 是行组件，
   刺点清单 / 开心小事 / 成功日记 / 力量语句共用这一套样式。 */
.garden-list {
  display: grid;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(251, 248, 240, 0.7);
}

/* 灵感温室行：保持原有三列布局（先声明，让后面的通用行规则覆盖同名元素）。 */
.greenhouse-row {
  grid-template-columns: 42px minmax(180px, 1fr) minmax(390px, auto) 18px;
}

.greenhouse-row-index {
  grid-column: auto;
}

.garden-record-row {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto auto 18px;
  gap: 12px;
  align-items: center;
  min-height: 58px;
  padding: 10px 16px;
  border-bottom: 1px solid rgba(54, 69, 59, 0.1);
  color: var(--ink);
  background: rgba(251, 248, 240, 0.52);
  text-decoration: none;
  transition: background 160ms ease;
}

.garden-record-row:last-child {
  border-bottom: 0;
}

.garden-record-row:hover {
  background: rgba(220, 228, 216, 0.52);
}

.garden-record-index {
  color: var(--sage-deep);
  font: 700 14px/1 var(--serif);
  letter-spacing: 0.04em;
  text-align: center;
}

.garden-row-main {
  display: grid;
  min-width: 0;
  gap: 4px;
  color: inherit;
  text-decoration: none;
}

.garden-row-main strong {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  white-space: normal;
  font-size: 15px;
  line-height: 1.5;
}

.garden-row-main small {
  overflow: hidden;
  color: var(--ink-soft);
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
}

.garden-row-meta {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 6px;
  min-width: 0;
}

.garden-tag {
  padding: 4px 8px;
  border-radius: 999px;
  color: var(--ink-soft);
  background: rgba(220, 228, 216, 0.55);
  white-space: nowrap;
  font-size: 11px;
}

.garden-tag.garden-score {
  color: var(--sage-deep);
  font-weight: 800;
}

.garden-date {
  color: var(--ink-soft);
  font-size: 12px;
  white-space: nowrap;
}

.garden-row-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

/* 力量语句行：主内容可点入详情，右侧保留收藏按钮。 */
.power-quote-card .garden-row-main strong {
  font: 600 16px/1.4 var(--serif);
}

.power-quote-card .quote-favorite {
  padding: 4px;
  font-size: 20px;
  line-height: 1;
}

@media (max-width: 760px) {
  .greenhouse-row {
    grid-template-columns: 34px minmax(0, 1fr) 18px;
    gap: 9px;
  }

  .garden-record-row {
    grid-template-columns: 34px minmax(0, 1fr) auto;
    gap: 7px 10px;
    min-height: 0;
    padding: 12px 13px;
  }

  .garden-record-index {
    grid-column: 1;
    grid-row: 1 / span 2;
    align-self: center;
  }

  .garden-row-main {
    grid-column: 2;
    grid-row: 1;
  }

  .garden-row-meta {
    grid-column: 2;
    grid-row: 2;
    justify-content: flex-start;
  }

  .garden-row-actions {
    grid-column: 3;
    grid-row: 1 / span 2;
    align-self: center;
  }

  .greenhouse-row-arrow {
    grid-column: 3;
    grid-row: 1 / span 2;
    align-self: center;
  }

  .power-quote-card .greenhouse-row-arrow {
    display: none;
  }

  .greenhouse-row-meta {
    grid-column: 2 / -1;
    grid-template-columns: auto auto 1fr;
    gap: 6px;
  }

  .greenhouse-row-meta time {
    display: none;
  }
}

/\* 幸福生活通用保存栏：保存并返回（主）/ 仅保存（次）。 \*/
.editor-save-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-top: 8px;
  padding-top: 20px;
  border-top: 1px solid var(--line);
}

.editor-save-footer .save-status {
  color: var(--ink-soft);
  font-size: 13px;
}

.editor-save-footer .save-status.error {
  color: #9a493c;
}

.editor-save-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

@media (max-width: 760px) {
  .editor-save-footer {
    align-items: stretch;
    flex-direction: column;
  }

  .editor-save-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Speaking Island */
.speaking-hero,
.speaking-inner { width: min(1120px, calc(100% - 40px)); margin: 0 auto; }
.speaking-hero { padding-top: 30px; }
.speaking-hero-grid {
  display: grid; grid-template-columns: 1.15fr .85fr; gap: 48px; align-items: center;
  min-height: 430px; margin-top: 26px; padding: 58px; overflow: hidden;
  border: 1px solid rgba(50,73,61,.12); border-radius: 42px;
  background: linear-gradient(145deg,#fbf5e9 0%,#e9eee3 64%,#dce8dc 100%);
}
.speaking-hero h1 { margin: 0; color: #23463f; font-family: Georgia,"Songti SC",serif; font-size: clamp(46px,6vw,76px); line-height: 1.06; letter-spacing: -.04em; }
.speaking-hero-grid > div > p:last-child { margin-top: 26px; padding-left: 18px; border-left: 3px solid #e58263; color: #64766f; font-size: 18px; line-height: 1.9; }
.speaking-island-mark { position: relative; display: grid; place-items: center; min-height: 280px; border-radius: 50% 46% 48% 52%; background: #6e9674; box-shadow: inset -28px -22px rgba(30,70,49,.12),0 24px 55px rgba(47,77,60,.16); transform: rotate(-3deg); }
.speaking-island-mark span { position: absolute; display: grid; width: 42px; height: 42px; place-items: center; border: 5px solid #fffaf0; border-radius: 50%; background: #e58263; color: white; font-weight: 800; }
.speaking-island-mark span:nth-child(1) { left: 18%; bottom: 22%; }.speaking-island-mark span:nth-child(2) { left: 45%; top: 45%; }.speaking-island-mark span:nth-child(3) { right: 17%; top: 20%; }
.speaking-island-mark strong { margin-top: 120px; color: #fffaf0; font-size: 15px; letter-spacing: .12em; }
.speaking-stats { display: grid; grid-template-columns: repeat(4,1fr); width: min(900px,calc(100% - 60px)); margin: -28px auto 64px; overflow: hidden; border: 1px solid rgba(50,73,61,.12); border-radius: 22px; background: #fffdf8; box-shadow: 0 18px 45px rgba(42,62,58,.09); }
.speaking-stats > * { display: grid; gap: 4px; padding: 22px 25px; border-right: 1px solid rgba(50,73,61,.12); color: #64766f; text-decoration: none; }
.speaking-stats > *:last-child { border: 0; }.speaking-stats strong { color: #23463f; font-family: Georgia,serif; font-size: 28px; }.speaking-stats span { font-size: 12px; }
.speaking-continue,.speaking-today { width: min(1120px,calc(100% - 40px)); margin: 0 auto 54px; padding: 28px 32px; border-radius: 22px; background: #fffdf8; border: 1px solid rgba(50,73,61,.12); }
.speaking-random-card { display: grid; grid-template-columns: minmax(0,.85fr) minmax(0,1.4fr); gap: 24px; align-items: center; width: min(1120px,calc(100% - 40px)); margin: 0 auto 28px; padding: 28px 32px; border: 1px solid rgba(50,73,61,.13); border-radius: 22px; background: linear-gradient(135deg,#fffdf8,#edf3e8); }.speaking-random-card h2 { margin: 5px 0 8px; font-family: Georgia,"Songti SC",serif; }.speaking-random-card p { color: #64766f; line-height: 1.7; }.speaking-random-result { padding-left: 24px; border-left: 1px solid rgba(50,73,61,.14); }.speaking-random-result > p { margin: 0 0 8px; color: #23463f; font-size: 18px; font-weight: 700; }.speaking-random-result > small { display: block; margin-bottom: 18px; color: #718078; line-height: 1.6; }
.speaking-continue { display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.speaking-continue { border-left: 5px solid #e58263; }.speaking-continue h2,.speaking-today h2 { margin: 5px 0 8px; font-family: Georgia,"Songti SC",serif; }.speaking-continue p,.speaking-today p { margin: 0; color: #64766f; }
.speaking-today { padding: 38px; background: #244d49; color: #fffaf0; }.speaking-today > header { margin-bottom: 24px; }.speaking-today .eyebrow { color: #efb99d; }.speaking-today > header h2 { max-width: 700px; font-size: 30px; }.speaking-today-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }.speaking-today-grid article { display: flex; flex-direction: column; min-height: 250px; padding: 26px; border: 1px solid rgba(255,255,255,.16); border-radius: 20px; background: rgba(255,255,255,.08); }.speaking-today-grid article > strong { font-size: 13px; letter-spacing: .06em; }.speaking-today-grid h3 { margin: 28px 0 10px; font-family: Georgia,"Songti SC",serif; font-size: 24px; line-height: 1.45; }.speaking-today-grid article > p { margin-bottom: 24px; color: rgba(255,250,240,.7); line-height: 1.65; }.speaking-today-grid button { align-self: flex-start; margin-top: auto; }.speaking-today-en { color: #23463f; background: #fffdf8 !important; }.speaking-today-en > p { color: #718078 !important; }.speaking-today-en > strong { color: #5d8365; }.speaking-language-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.speaking-section-heading { display: flex; align-items: end; justify-content: space-between; width: min(1120px,calc(100% - 40px)); margin: 0 auto 22px; }.speaking-section-heading h2 { margin: 0; font-family: Georgia,"Songti SC",serif; font-size: 34px; }.speaking-section-heading > p { color: #718078; }
.speaking-bank-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 18px; width: min(1120px,calc(100% - 40px)); margin: 0 auto 80px; }
.speaking-bank-card { position: relative; min-height: 285px; padding: 26px; overflow: hidden; border: 1px solid rgba(50,73,61,.12); border-top: 5px solid var(--speaking-bank); border-radius: 24px; background: #fffdf8; color: #23463f; text-decoration: none; transition: transform .18s ease,box-shadow .18s ease; }.speaking-bank-card:hover { transform: translateY(-4px); box-shadow: 0 20px 42px rgba(42,62,58,.1); }.speaking-bank-number { position: absolute; right: 20px; top: 18px; color: #b1b9b2; font-size: 12px; }.speaking-bank-icon { display: block; margin-top: 12px; font-size: 34px; }.speaking-bank-card h3 { margin: 32px 0 3px; font-family: Georgia,"Songti SC",serif; font-size: 24px; }.speaking-bank-card > strong { color: var(--speaking-bank); font-size: 12px; }.speaking-bank-card p { color: #64766f; line-height: 1.65; }.speaking-bank-card small { position: absolute; left: 26px; bottom: 24px; font-weight: 750; }
.speaking-adventure-overview { width: min(1120px,calc(100% - 40px)); margin: 0 auto 42px; padding: 28px; border: 1px solid rgba(50,73,61,.12); border-radius: 24px; background: linear-gradient(135deg,#fffdf8,#f1f5eb); }.speaking-overview-heading { display: grid; grid-template-columns: minmax(0,1fr) minmax(280px,.85fr); gap: 24px; align-items: start; }.speaking-overview-heading h2 { margin: 4px 0 8px; font-family: Georgia,"Songti SC",serif; }.speaking-overview-heading p { color: #64766f; }.speaking-map-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin-top: 22px; }.speaking-map-place { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; padding: 16px; border: 1px solid color-mix(in srgb,var(--speaking-bank) 30%,#dfe6dc); border-left: 4px solid var(--speaking-bank); border-radius: 16px; background: rgba(255,253,248,.8); color: #23463f; text-decoration: none; }.speaking-map-place:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(42,62,58,.08); }.speaking-map-place .speaking-bank-icon { margin: 0; font-size: 24px; }.speaking-map-place strong { display: block; }.speaking-map-place small,.speaking-map-place p,.speaking-map-place em { display: block; margin: 3px 0 0; color: #718078; font-size: 11px; font-style: normal; }.speaking-map-place em { color: #5d8365; }.speaking-map-arrow { color: var(--speaking-bank); font-size: 20px; }.speaking-skill-tree { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; padding: 16px; border-radius: 16px; background: rgba(255,255,255,.65); }.speaking-skill-tree > strong { grid-column: 1/-1; color: #23463f; }.speaking-skill-tree span { display: grid; gap: 2px; padding: 8px 10px; border-radius: 10px; background: #edf1e8; }.speaking-skill-tree b { font-size: 12px; }.speaking-skill-tree small { color: #718078; font-size: 10px; }
.speaking-adventure-steps { display: flex; gap: 8px; margin: 14px 0 18px; }.speaking-adventure-steps span { flex: 1; padding: 10px 12px; border-radius: 999px; background: #ece7dc; color: #718078; text-align: center; font-size: 12px; }.speaking-adventure-steps span.active { background: #e8f0e5; color: #345348; font-weight: 750; }.speaking-training-card-picker,.speaking-equipped-card { margin-bottom: 18px; padding: 22px; border: 1px solid rgba(82,126,94,.24); border-radius: 18px; background: #f2f4ec; }.speaking-training-card-picker h2 { margin: 4px 0; font-family: Georgia,"Songti SC",serif; }.speaking-training-card-picker p { color: #718078; }.speaking-training-card-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; margin-top: 16px; }.speaking-training-card { display: grid; gap: 8px; min-height: 112px; padding: 15px; border: 1px solid rgba(50,73,61,.16); border-radius: 14px; background: #fffdf8; color: #23463f; text-align: left; cursor: pointer; }.speaking-training-card:hover { border-color: #648e70; transform: translateY(-2px); }.speaking-training-card span,.speaking-equipped-card span { color: #718078; font-size: 13px; line-height: 1.6; }.speaking-equipped-card { display: flex; gap: 10px; align-items: baseline; margin-bottom: 18px; }.speaking-growth-evidence { margin: 16px 0; padding: 15px 17px; border-left: 4px solid #e58263; border-radius: 10px; background: #fff6ed; }.speaking-growth-evidence p { margin: 5px 0 0; color: #64766f; }.speaking-treasure { margin-top: 22px; padding: 20px; border: 1px solid #d2b66f; border-radius: 18px; background: linear-gradient(135deg,#fff9e9,#f5ecd1); }.speaking-treasure h3 { margin: 5px 0 8px; font-family: Georgia,"Songti SC",serif; }.speaking-treasure > p:not(.eyebrow) { color: #756b52; }.speaking-treasure > div { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }.speaking-reward { display: grid; gap: 7px; min-height: 100px; padding: 14px; border: 1px solid rgba(151,119,45,.28); border-radius: 13px; background: rgba(255,255,255,.55); color: #5f532f; text-align: left; cursor: pointer; }.speaking-reward span { color: #786f58; font-size: 12px; line-height: 1.55; }.speaking-reward-chosen { margin-top: 18px; padding: 12px 15px; border-radius: 10px; background: #e8f0e5; color: #345348; font-weight: 700; }
.speaking-inner { padding: 36px 0 90px; }.speaking-bank-hero { display: grid; grid-template-columns: auto 1fr; gap: 28px; align-items: center; margin: 24px 0 30px; padding: 40px; border-radius: 28px; background: color-mix(in srgb,var(--speaking-bank) 11%,#fffdf8); }.speaking-bank-hero > span { font-size: 54px; }.speaking-bank-hero h1 { margin: 0; font-family: Georgia,"Songti SC",serif; font-size: 44px; }.speaking-bank-hero h2 { margin: 4px 0 12px; color: var(--speaking-bank); font-size: 17px; }.speaking-bank-hero p { margin: 0; color: #64766f; }
.speaking-question-list { display: grid; gap: 10px; }.speaking-question-list article { display: grid; grid-template-columns: 42px 1fr auto; gap: 18px; align-items: center; padding: 22px; border: 1px solid rgba(50,73,61,.1); border-radius: 18px; background: #fffdf8; }.speaking-question-list article > span { color: #e58263; font-family: Georgia,serif; }.speaking-question-list h3 { margin: 0 0 5px; }.speaking-question-list p { margin: 0; color: #718078; }.speaking-question-list article > div:last-child { display: flex; gap: 8px; }.speaking-question-list button { padding: 9px 12px; border: 1px solid rgba(50,73,61,.18); border-radius: 999px; background: transparent; color: #23463f; cursor: pointer; }
.speaking-question-list article > div:nth-child(2) > small { display: block; margin-bottom: 5px; color: #7d8c84; }.speaking-retell-material { margin: 0 0 18px; padding: 24px 28px; border: 1px solid rgba(50,73,61,.12); border-left: 5px solid #63899a; border-radius: 20px; background: #fffdf8; }.speaking-retell-material h2 { margin: 3px 0 0; }.speaking-retell-material > p { color: #354f48; font-size: 17px; line-height: 1.9; white-space: pre-wrap; }.speaking-retell-material > small { color: #718078; line-height: 1.6; }
.speaking-training-header { display: flex; justify-content: space-between; gap: 24px; margin: 24px 0; padding: 34px; border-radius: 26px; background: #244d49; color: #fffaf0; }.speaking-training-header h1 { margin: 4px 0 8px; font-family: Georgia,"Songti SC",serif; font-size: 32px; }.speaking-training-header p:last-child { margin: 0; color: rgba(255,250,240,.68); }.speaking-training-header > span { align-self: flex-start; padding: 7px 11px; border-radius: 999px; background: rgba(255,255,255,.12); font-size: 12px; }
.speaking-round-nav { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; margin-bottom: 20px; }.speaking-round-nav button { display: grid; grid-template-columns: auto 1fr; gap: 2px 10px; padding: 16px; border: 1px solid rgba(50,73,61,.14); border-radius: 16px; background: #fffdf8; text-align: left; cursor: pointer; }.speaking-round-nav button > span { grid-row: 1/3; display: grid; width: 35px; height: 35px; place-items: center; border-radius: 50%; background: #ece7dc; }.speaking-round-nav button small { color: #718078; }.speaking-round-nav button.active { border-color: #e58263; }.speaking-round-nav button.active > span,.speaking-round-nav button.done > span { background: #e58263; color: white; }.speaking-round-nav button:disabled { opacity: .48; cursor: not-allowed; }
.speaking-editor,.speaking-summary { padding: 36px; border: 1px solid rgba(50,73,61,.12); border-radius: 26px; background: #fffdf8; }.speaking-editor h2,.speaking-summary h2 { margin-top: 0; font-family: Georgia,"Songti SC",serif; }.speaking-editor label,.speaking-summary label { display: grid; gap: 8px; margin-top: 25px; font-weight: 750; }.speaking-editor label span { color: #718078; font-size: 12px; font-weight: 400; }.speaking-editor textarea,.speaking-summary textarea { width: 100%; min-height: 160px; max-height: 560px; padding: 18px; resize: none; overflow-y: hidden; border: 1px solid rgba(50,73,61,.18); border-radius: 14px; background: #fbf8f0; color: #23463f; font: inherit; line-height: 1.75; }.speaking-editor label:nth-of-type(2) textarea,.speaking-summary textarea { min-height: 120px; }.speaking-copy-row { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 22px 0; padding: 20px; border-radius: 16px; background: #edf1e8; }.speaking-copy-row p { margin: 4px 0 0; color: #718078; }.speaking-editor-actions,.speaking-summary-actions { display: flex; align-items: center; justify-content: flex-end; gap: 12px; margin-top: 22px; }.speaking-save-status { margin-right: auto; color: #718078; font-size: 13px; }.speaking-save-status[data-state="saving"] { color: #8a6d2c; }.speaking-save-status[data-state="saved"] { color: #3f7250; }.speaking-save-status[data-state="error"] { color: #9a4d43; }.speaking-summary { margin-top: 20px; background: #f4e7dc; }
.speaking-training-main { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(300px,.75fr); gap: 20px; align-items: start; }.speaking-score-entry { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 18px; padding: 16px 18px; border: 1px dashed rgba(64,104,77,.28); border-radius: 14px; background: #f2f4ec; }.speaking-score-entry p,.speaking-score-confirm p { margin: 4px 0 0; color: #718078; font-size: 13px; }.speaking-score-confirm { margin-top: 18px; padding: 18px; border: 1px solid rgba(82,126,94,.24); border-radius: 16px; background: #f2f4ec; }.speaking-score-confirm-heading,.speaking-score-confirm-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; }.speaking-score-fields { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 8px; margin: 14px 0; }.speaking-score-fields label { gap: 5px; margin: 0; font-size: 12px; }.speaking-score-fields input { width: 100%; min-width: 0; padding: 9px 7px; border: 1px solid rgba(50,73,61,.18); border-radius: 9px; background: #fffdf8; color: #23463f; font: inherit; }.speaking-score-fields .not-applicable input { color: #718078; background: #e9e9e1; }.speaking-score-confirm-actions .form-error { margin-right: auto; }.speaking-score-dashboard { position: sticky; top: 92px; padding: 24px; overflow: hidden; border: 1px solid rgba(50,73,61,.12); border-radius: 26px; background: #fffdf8; }.speaking-score-dashboard h2 { margin: 3px 0 4px; font-family: Georgia,"Songti SC",serif; font-size: 24px; }.speaking-score-dashboard > div:first-child > p:last-child { margin: 0; color: #718078; font-size: 13px; }.speaking-overall-scores { display: grid; grid-template-columns: repeat(4,1fr); gap: 7px; margin: 18px 0; }.speaking-overall-scores > div { display: grid; gap: 3px; padding: 10px 5px; border-radius: 10px; background: #f3efe6; text-align: center; }.speaking-overall-scores span { color: #718078; font-size: 11px; }.speaking-overall-scores strong { color: #23463f; font-size: 18px; }.speaking-overall-scores .improvement { background: #e8f0e5; }.speaking-radar-wrap { width: 100%; max-width: 310px; margin: 0 auto; }.speaking-radar { display: block; width: 100%; overflow: visible; }.radar-grid,.radar-axis { fill: none; stroke: rgba(58,83,69,.16); stroke-width: 1; }.radar-series { stroke-width: 2; fill-opacity: .13; }.radar-round-1 { fill: #d97757; stroke: #d97757; }.radar-round-2 { fill: #648e70; stroke: #648e70; }.radar-round-3 { fill: #526f91; stroke: #526f91; }.speaking-radar text { fill: #65766e; font-size: 8px; }.speaking-radar-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }.speaking-radar-legend span { color: #52655b; font-size: 12px; }.speaking-radar-legend span::before { display: inline-block; width: 9px; height: 9px; margin-right: 5px; border-radius: 50%; background: var(--legend); content: ""; }.speaking-absorption-comparison { display: grid; grid-template-columns: 1fr repeat(3,auto); gap: 8px 12px; align-items: center; margin-top: 17px; padding: 13px; border-radius: 12px; background: #f3efe6; }.speaking-absorption-comparison > div { display: grid; text-align: center; }.speaking-absorption-comparison span { color: #718078; font-size: 10px; }.speaking-absorption-comparison b { color: #345348; font-size: 13px; }.speaking-radar-empty { display: grid; min-height: 230px; place-items: center; border: 1px dashed rgba(50,73,61,.18); border-radius: 16px; color: #849087; font-size: 13px; }.speaking-score-insight { margin: 18px 0 0; padding: 13px 14px; border-radius: 12px; background: #edf1e8; color: #45604f; font-size: 13px; line-height: 1.7; }
.speaking-archive-title h1 { margin: 0; font-family: Georgia,"Songti SC",serif; font-size: 48px; }.speaking-record-list { display: grid; gap: 14px; margin-top: 28px; }.speaking-record-list article { display: grid; grid-template-columns: auto 1fr auto; gap: 18px; align-items: center; padding: 25px; border: 1px solid rgba(50,73,61,.12); border-radius: 20px; background: #fffdf8; }.speaking-record-list h2 { margin: 5px 0; font-family: Georgia,"Songti SC",serif; font-size: 21px; }.speaking-record-list p { margin: 0 0 10px; color: #718078; }.speaking-record-list small { color: #e58263; }.speaking-record-list strong { color: #5d8365; font-size: 12px; }.speaking-favorite { align-self: flex-start; padding: 0; border: 0; background: transparent; color: #e3ae43; font-size: 25px; cursor: pointer; }.speaking-record-actions { display: flex; align-items: center; gap: 8px; }.speaking-record-actions .danger { padding: 9px 10px; }

@media (max-width: 760px) {
  .speaking-hero,.speaking-inner,.speaking-continue,.speaking-random-card,.speaking-today,.speaking-section-heading,.speaking-bank-grid,.speaking-adventure-overview { width: min(100% - 28px,680px); }
  .speaking-hero-grid { grid-template-columns: 1fr; min-height: auto; padding: 34px 24px; border-radius: 28px; }.speaking-island-mark { min-height: 210px; }.speaking-stats { grid-template-columns: repeat(2,1fr); width: calc(100% - 42px); margin-bottom: 45px; }.speaking-stats > *:nth-child(2) { border-right: 0; }.speaking-stats > *:nth-child(-n+2) { border-bottom: 1px solid rgba(50,73,61,.12); }
  .speaking-continue,.speaking-section-heading { align-items: stretch; flex-direction: column; }.speaking-random-card { grid-template-columns: 1fr; padding: 24px 20px; }.speaking-random-result { padding: 18px 0 0; border-left: 0; border-top: 1px solid rgba(50,73,61,.14); }.speaking-today { padding: 28px 20px; }.speaking-today-grid { grid-template-columns: 1fr; }.speaking-today-grid article { min-height: 230px; }.speaking-language-actions { display: grid; }.speaking-bank-grid { grid-template-columns: 1fr; }.speaking-bank-card { min-height: 250px; }.speaking-bank-hero { grid-template-columns: 1fr; padding: 28px 24px; }.speaking-question-list article { grid-template-columns: 34px 1fr; }.speaking-question-list article > div:last-child { grid-column: 2; flex-wrap: wrap; }.speaking-training-header { flex-direction: column; padding: 25px 22px; }.speaking-round-nav button { display: grid; place-items: center; text-align: center; }.speaking-round-nav button strong,.speaking-round-nav button small { display: none; }.speaking-round-nav button > span { grid-row: auto; }.speaking-training-main { grid-template-columns: 1fr; }.speaking-editor,.speaking-summary,.speaking-score-dashboard { padding: 26px 20px; }.speaking-score-dashboard { position: static; }.speaking-score-fields { grid-template-columns: repeat(2,minmax(0,1fr)); }.speaking-score-entry,.speaking-score-confirm-heading,.speaking-score-confirm-actions,.speaking-copy-row,.speaking-editor-actions,.speaking-summary-actions { align-items: stretch; flex-direction: column; }.speaking-save-status { margin-right: 0; }.speaking-record-list article { grid-template-columns: auto 1fr; }.speaking-record-actions { grid-column: 2; flex-wrap: wrap; justify-content: flex-start; }.speaking-overview-heading { grid-template-columns: 1fr; }.speaking-map-grid { grid-template-columns: 1fr; }.speaking-adventure-overview { padding: 22px 18px; }.speaking-training-card-grid,.speaking-treasure > div { grid-template-columns: 1fr; }.speaking-adventure-steps span { padding: 9px 5px; font-size: 10px; }.speaking-equipped-card { flex-direction: column; gap: 4px; }
}
.finance-investment-sub-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 18px}.finance-investment-sub-grid a{display:grid;grid-template-columns:1fr auto;gap:4px 8px;padding:13px;border-radius:14px;background:rgba(232,239,226,.45);color:inherit;text-decoration:none}.finance-investment-sub-grid span{grid-column:1/-1;color:var(--ink-soft);font-size:13px}
.finance-investment-sub-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 18px}.finance-investment-sub-grid a{display:grid;grid-template-columns:1fr auto;gap:4px 8px;padding:13px;border-radius:14px;background:rgba(232,239,226,.45);color:inherit;text-decoration:none}.finance-investment-sub-grid span{grid-column:1/-1;color:var(--ink-soft);font-size:13px}
@media(max-width:760px){.finance-investment-sub-grid{grid-template-columns:1fr 1fr}}
.finance-investment-allocation{display:grid;grid-template-columns:220px minmax(0,1fr);gap:22px;align-items:center}.finance-investment-donut{width:210px;height:210px;border-radius:50%;display:grid;place-items:center;position:relative}.finance-investment-donut::before{content:"";position:absolute;inset:34px;border-radius:50%;background:var(--cream)}.finance-investment-donut span{position:relative;z-index:1;font-weight:700;color:var(--ink);font-size:16px}
@media(max-width:760px){.finance-investment-allocation{grid-template-columns:1fr}.finance-investment-donut{margin:0 auto;width:180px;height:180px}}
.finance-investment-dashboard{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}.finance-investment-dashboard>.finance-block-heading,.finance-investment-dashboard>.finance-investment-allocation,.finance-investment-dashboard>.empty-state{grid-column:1}.finance-guide-card{grid-column:2;grid-row:1 / span 3;padding:20px;border:1px solid rgba(34,76,57,.14);border-radius:18px;background:rgba(255,253,246,.92)}.finance-guide-card h2{margin:0}.finance-guide-compact{padding:10px 0;border-top:1px dashed rgba(34,76,57,.15);font-size:13px;line-height:1.7}.finance-guide-details{margin-top:12px}.finance-guide-details summary,.finance-guide-edit summary{cursor:pointer;color:var(--sage-deep);font-size:13px}.finance-guide-details p{color:var(--ink-soft);font-size:12px}.finance-guide-details ul{padding-left:18px;color:var(--ink-soft);font-size:12px;line-height:1.8}.finance-guide-actions{margin-top:12px}.finance-guide-edit{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.finance-guide-edit form{display:grid;gap:9px;margin-top:10px}.finance-guide-edit textarea{min-height:60px}.finance-guide-rule-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.finance-investment-guidance{color:var(--sage-deep)!important}.finance-investment-alert{display:block;margin-top:4px;color:var(--clay)!important}.finance-investment-alert button{margin-left:6px;border:0;background:transparent;color:var(--sage-deep);text-decoration:underline;cursor:pointer}
@media(max-width:760px){.finance-investment-dashboard{display:block}.finance-guide-card{margin-top:18px}.finance-guide-card,.finance-investment-allocation{width:100%}}

/* ─── Skye Creator Studio｜自媒体工作台 ─── */
.creator-studio-entry {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  width: min(1180px, calc(100% - 48px));
  margin: 28px auto 0;
  padding: 26px 30px;
  border: 1px solid rgba(63, 89, 72, 0.18);
  border-radius: 26px;
  background:
    radial-gradient(circle at 88% 20%, rgba(247, 221, 227, 0.5), transparent 14rem),
    linear-gradient(135deg, rgba(220, 228, 216, 0.85), rgba(251, 248, 240, 0.9));
  box-shadow: 0 14px 34px rgba(64, 72, 61, 0.08);
}
.creator-studio-entry-copy .eyebrow { margin-bottom: 6px; }
.creator-studio-entry-copy h2 { margin: 0 0 6px; font: 600 24px/1.2 Georgia, var(--serif); color: var(--sage-deep); }
.creator-studio-entry-copy p:last-child { margin: 0; color: var(--ink-soft); font-size: 14px; }
.creator-studio-entry-button { flex-shrink: 0; padding: 14px 22px; }

.studio-shell {
  width: min(1180px, calc(100% - 48px));
  margin: 0 auto;
  padding: 4px 0 56px;
}
.studio-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 2px 16px;
}
.studio-back-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 14px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(251, 248, 240, 0.8);
  color: var(--sage-deep);
  font-weight: 600;
  font-size: 14px;
}
.studio-back-link:hover { border-color: var(--sage); }
.studio-crumb { color: var(--ink-soft); font-size: 12px; letter-spacing: 0.08em; }
.studio-page-heading { padding: 8px 0 22px; }
.studio-page-heading h1 { margin: 4px 0 6px; font: 600 34px/1.15 Georgia, var(--serif); color: var(--ink); }
.studio-subtitle { margin: 0; color: var(--ink-soft); font-size: 15px; }

.studio-home-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  align-items: start;
}
.studio-panel {
  border: 1px solid var(--line);
  border-radius: 22px;
  background: rgba(251, 248, 240, 0.82);
  padding: 20px;
  box-shadow: 0 10px 26px rgba(64, 72, 61, 0.05);
}
.studio-panel-wide { grid-column: 1 / -1; }
.studio-panel-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 14px;
}
.studio-panel-heading h2 { margin: 0; font: 600 17px/1.2 Georgia, var(--serif); color: var(--ink); }
.studio-panel-heading > a { color: var(--sage-deep); font-size: 13px; font-weight: 600; }

.studio-stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 16px; }
.studio-stat-card { padding: 16px; border-radius: 16px; background: var(--cream); border: 1px solid var(--line); }
.studio-stat-card p { margin: 0 0 6px; font-size: 13px; color: var(--ink-soft); }
.studio-stat-card strong { display: block; font: 600 26px/1.1 Georgia, var(--serif); color: var(--sage-deep); }
.studio-stat-card small { color: var(--ink-soft); font-size: 12px; }

.studio-focus-card {
  border-radius: 20px;
  padding: 22px;
  background: linear-gradient(135deg, rgba(220, 228, 216, 0.72), rgba(251, 248, 240, 0.9));
  border: 1px solid rgba(63, 89, 72, 0.18);
}
.studio-focus-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.studio-focus-label { font-size: 12px; letter-spacing: 0.06em; color: var(--ink-soft); }
.studio-focus-card h2 { margin: 0 0 6px; font: 600 22px/1.25 Georgia, var(--serif); color: var(--ink); }
.studio-focus-account { margin: 0 0 8px; color: var(--ink-soft); font-size: 13px; }
.studio-next-action { margin: 0 0 12px; padding: 10px 12px; border-radius: 12px; background: rgba(255, 255, 255, 0.55); font-size: 14px; }
.studio-focus-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.studio-date-chip { font-size: 13px; color: var(--ink-soft); }

.studio-quick-idea { margin-bottom: 18px; }
.studio-quick-idea-form {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(251, 248, 240, 0.85);
}
.studio-quick-idea-form input {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  padding: 8px 4px;
  font-size: 15px;
  outline: none;
}
.studio-quick-idea-form .primary-button { flex-shrink: 0; }

.studio-recent-list { display: flex; flex-direction: column; gap: 8px; }
.studio-recent-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid transparent;
}
.studio-recent-row:hover { background: var(--cream); border-color: var(--line); }
.studio-recent-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.studio-recent-main strong { font-size: 14px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.studio-recent-main small { font-size: 12px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.studio-recent-row > b { color: var(--sage-deep); font-size: 13px; flex-shrink: 0; }
.studio-progress-mini { width: 64px; height: 6px; border-radius: 999px; background: var(--paper-deep); overflow: hidden; flex-shrink: 0; }
.studio-progress-mini i { display: block; height: 100%; border-radius: 999px; background: var(--sage); }

.studio-idea-mini { display: flex; align-items: center; gap: 10px; padding: 8px 4px; }
.studio-idea-mini-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.studio-idea-mini-main strong { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.studio-idea-mini-main small { font-size: 12px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.studio-idea-converted { color: var(--sage-deep); font-size: 12px; font-weight: 600; flex-shrink: 0; }

.studio-stage-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  white-space: nowrap;
  background: var(--paper-deep);
  color: var(--sage-deep);
}
.stage-seed { background: #e7efe4; color: #4e7354; }
.stage-topic { background: #dce4d8; color: #3f5948; }
.stage-script { background: #f3e2d6; color: #a05f3f; }
.stage-shooting { background: #f5ead2; color: #8a6a24; }
.stage-editing { background: #e7e1ef; color: #6a5a8a; }
.stage-cover { background: #f0dfe6; color: #98546f; }
.stage-ready { background: #f7e8cf; color: #9a6a1f; }
.stage-published { background: #f7dde3; color: #b3506c; }
.stage-reviewed { background: #e9dccd; color: #8a5a2b; }

.studio-filter-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.studio-filter-bar .search-field {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  min-width: 200px;
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(251, 248, 240, 0.85);
}
.studio-filter-bar .search-field input { flex: 1; min-width: 0; border: 0; background: transparent; outline: none; font-size: 14px; }
.studio-filter-bar select {
  padding: 10px 14px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--cream);
  font-size: 14px;
}

.studio-idea-list { display: flex; flex-direction: column; gap: 12px; }
.studio-idea-card {
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: rgba(251, 248, 240, 0.85);
}
.studio-idea-card.converted { opacity: 0.78; }
.studio-idea-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.studio-idea-status { padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; background: var(--paper-deep); color: var(--sage-deep); }
.studio-idea-status.fresh { background: #e7efe4; color: #4e7354; }
.studio-idea-status.research { background: #e3ebf5; color: #3d5c8a; }
.studio-idea-status.ready { background: #f5ead2; color: #8a6a24; }
.studio-idea-status.shelved { background: #ececec; color: #7a7a7a; }
.studio-idea-status.converted { background: #d9ead9; color: #2f6b3a; }
.studio-priority { font-size: 12px; font-weight: 600; }
.studio-priority.high { color: #b3503a; }
.studio-priority.medium { color: #a0782a; }
.studio-priority.low { color: #6a7a6a; }
.studio-idea-time { margin-left: auto; color: var(--ink-soft); font-size: 12px; }
.studio-idea-card h3 { margin: 0 0 6px; font: 600 18px/1.3 Georgia, var(--serif); color: var(--ink); }
.studio-idea-summary { margin: 0 0 8px; color: var(--ink-soft); font-size: 14px; }
.studio-idea-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.studio-idea-meta span { font-size: 12px; color: var(--ink-soft); padding: 3px 9px; border-radius: 999px; background: var(--paper-deep); }
.studio-idea-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.studio-inline-editor { margin-top: 14px; padding: 16px; border-radius: 16px; background: var(--cream); border: 1px dashed var(--line); }

.studio-form-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.studio-form-row.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.studio-section-form { display: flex; flex-direction: column; gap: 12px; }
.studio-form-actions { display: flex; align-items: center; gap: 10px; margin-top: 4px; }
.save-status { font-size: 13px; color: var(--sage-deep); }

.studio-empty-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-top: 6px; }
.empty-mark { font-size: 30px; }

/* 看板 */
.kanban-board {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  padding-bottom: 14px;
  align-items: flex-start;
}
.kanban-column {
  flex: 0 0 238px;
  min-height: 220px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(251, 248, 240, 0.6);
  padding: 10px;
  transition: background 0.15s ease;
}
.kanban-column.drag-over { background: rgba(220, 228, 216, 0.9); border-color: var(--sage); }
.kanban-column-heading {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  border-radius: 12px;
  margin-bottom: 8px;
  background: var(--paper-deep);
  color: var(--sage-deep);
}
.kanban-column-heading h3 { margin: 0; font-size: 14px; font-weight: 600; flex: 1; }
.kanban-column-heading b { font-size: 12px; opacity: 0.7; }
.kanban-cards { display: flex; flex-direction: column; gap: 10px; min-height: 120px; }
.kanban-card {
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--cream);
  padding: 10px;
  box-shadow: 0 6px 16px rgba(64, 72, 61, 0.06);
  cursor: grab;
}
.kanban-card.dragging { opacity: 0.5; }
.kanban-card-main { display: block; }
.kanban-cover { width: 100%; height: 92px; object-fit: cover; border-radius: 12px; margin-bottom: 8px; }
.kanban-card-title { font-weight: 600; font-size: 14px; line-height: 1.35; margin-bottom: 6px; }
.kanban-card-meta { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
.kanban-card-meta span { font-size: 11px; color: var(--ink-soft); padding: 2px 8px; border-radius: 999px; background: var(--paper-deep); }
.kanban-next { margin: 0 0 8px; font-size: 12px; color: var(--ink-soft); }
.kanban-progress { height: 7px; border-radius: 999px; background: var(--paper-deep); overflow: hidden; }
.kanban-progress i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--sage-pale), var(--sage)); }
.kanban-date-row { display: flex; align-items: center; justify-content: space-between; gap: 6px; margin-top: 7px; font-size: 11px; color: var(--ink-soft); }
.kanban-date-row b { color: var(--sage-deep); }
.kanban-empty { padding: 26px 8px; text-align: center; color: var(--ink-soft); font-size: 12px; border: 1px dashed var(--line); border-radius: 12px; }
.kanban-stage-select {
  width: 100%;
  margin-top: 8px;
  padding: 7px 8px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--cream);
  font-size: 12px;
}
.studio-overdue { color: #b3503a; font-weight: 700; font-size: 12px; }

/* 制作页 */
.studio-project-heading { margin-bottom: 18px; }
.studio-project-title-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.studio-project-title-row h1 { margin: 6px 0; font: 600 26px/1.25 Georgia, var(--serif); color: var(--ink); flex: 1; min-width: 200px; }
.studio-project-stage-control { display: flex; align-items: center; gap: 8px; }
.studio-project-stage-control select { padding: 8px 10px; border: 1px solid var(--line); border-radius: 999px; background: var(--cream); font-size: 13px; }
.studio-project-actions { display: flex; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
.studio-project-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; align-items: start; }
.studio-project-grid .studio-panel-wide { grid-column: 1 / -1; }

.studio-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 10px 0 8px; }
.studio-check-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 11px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--cream);
  font-size: 14px;
  cursor: pointer;
}
.studio-check-item input { width: 18px; height: 18px; accent-color: var(--sage-deep); cursor: pointer; }
.studio-check-item.done span { text-decoration: line-through; color: var(--ink-soft); }
.studio-checklist-progress { margin-bottom: 2px; }
.studio-progress-label { font-size: 13px; font-weight: 700; color: var(--sage-deep); }

.studio-cover { display: flex; flex-direction: column; gap: 12px; }
.studio-cover img { width: 100%; border-radius: 14px; border: 1px solid var(--line); }
.studio-cover-empty { display: grid; place-items: center; min-height: 120px; border-radius: 14px; border: 1px dashed var(--line); color: var(--ink-soft); font-size: 13px; }

.studio-materials { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
.studio-material-card {
  display: flex;
  gap: 10px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--cream);
}
.studio-material-card > img { width: 76px; height: 76px; object-fit: cover; border-radius: 10px; flex-shrink: 0; }
.studio-material-file { display: grid; place-items: center; width: 76px; height: 76px; border-radius: 10px; background: var(--paper-deep); font-size: 22px; flex-shrink: 0; }
.studio-material-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.studio-material-top { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.studio-material-kind { font-size: 11px; padding: 2px 8px; border-radius: 999px; background: var(--paper-deep); color: var(--sage-deep); }
.studio-material-top a { font-size: 11px; color: var(--sage-deep); }
.studio-material-body strong { font-size: 14px; }
.studio-material-body p { margin: 0; font-size: 12px; color: var(--ink-soft); }

.studio-rate-note { font-size: 13px; color: var(--sage-deep); margin: 0; }
.studio-review-hint { padding: 16px; border: 1px dashed var(--line); border-radius: 14px; color: var(--ink-soft); font-size: 14px; }

.studio-reuse-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
.studio-reuse-row { display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 12px; border: 1px solid var(--line); background: var(--cream); }
.studio-reuse-row.done { opacity: 0.7; }
.studio-reuse-row .check-field { margin: 0; display: flex; align-items: center; gap: 6px; }
.studio-reuse-row input { width: 18px; height: 18px; accent-color: var(--sage-deep); }
.studio-reuse-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.studio-reuse-main strong { font-size: 14px; }
.studio-reuse-main small { font-size: 12px; color: var(--ink-soft); }
.studio-reuse-row.done .studio-reuse-main strong { text-decoration: line-through; color: var(--ink-soft); }
.studio-reuse-add { display: flex; gap: 8px; }
.studio-reuse-add input { flex: 1; min-width: 0; padding: 11px 14px; border: 1px solid var(--line); border-radius: 999px; background: var(--cream); font-size: 14px; outline: none; }
.studio-reuse-add input:focus { border-color: var(--sage); }

/* 日历 */
.studio-calendar-toolbar { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.studio-calendar-layout { display: grid; grid-template-columns: 1fr 300px; gap: 18px; margin-bottom: 18px; align-items: start; }
.calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.calendar-weekday { text-align: center; font-size: 12px; color: var(--ink-soft); padding: 6px 0; }
.calendar-day {
  min-height: 76px;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 6px;
  background: rgba(251, 248, 240, 0.8);
  cursor: pointer;
}
.calendar-day.empty { border-color: transparent; background: transparent; cursor: default; }
.calendar-day.today { border-color: var(--sage); }
.calendar-day.selected { background: rgba(220, 228, 216, 0.75); }
.calendar-day-number { display: block; font-size: 13px; font-weight: 600; color: var(--ink); margin-bottom: 4px; }
.calendar-chips { display: flex; flex-direction: column; gap: 3px; }
.calendar-chip { font-size: 10px; padding: 2px 5px; border-radius: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.calendar-chip.complete { background: #e7e1ef; color: #6a5a8a; }
.calendar-chip.planned { background: #f5ead2; color: #8a6a24; }
.calendar-chip.published { background: #f7dde3; color: #b3506c; }
.calendar-more { font-size: 10px; color: var(--ink-soft); }

/* 账号与栏目 */
.studio-account-toolbar { margin-bottom: 16px; }
.studio-account-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.studio-account-card { padding: 18px; border: 1px solid var(--line); border-radius: 20px; background: rgba(251, 248, 240, 0.85); }
.studio-account-card.inactive { opacity: 0.66; }
.studio-account-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.studio-account-heading h3 { margin: 0 0 4px; font: 600 19px/1.2 Georgia, var(--serif); color: var(--ink); }
.studio-account-heading p { margin: 0; font-size: 13px; color: var(--ink-soft); }
.studio-account-state { font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 999px; background: var(--sage-pale); color: var(--sage-deep); }
.studio-account-card.inactive .studio-account-state { background: #ececec; color: #7a7a7a; }
.studio-account-note { margin: 0 0 12px; color: var(--ink-soft); font-size: 13px; }
.studio-column-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.studio-column-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border-radius: 999px;
  background: var(--paper-deep);
  font-size: 13px;
}
.studio-column-chip button { border: 0; background: transparent; color: var(--ink-soft); cursor: pointer; font-size: 14px; line-height: 1; }
.studio-column-empty { font-size: 12px; color: var(--ink-soft); }
.studio-column-add { display: flex; gap: 8px; margin-bottom: 12px; }
.studio-column-add input { flex: 1; min-width: 0; padding: 9px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--cream); font-size: 13px; outline: none; }
.studio-account-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.studio-account-editor { margin-top: 14px; padding: 16px; border-radius: 16px; background: var(--cream); border: 1px dashed var(--line); }

/* 数据复盘 */
.studio-review-list { display: flex; flex-direction: column; gap: 10px; }
.studio-review-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(251, 248, 240, 0.85);
}
.studio-review-row:hover { border-color: var(--sage); }
.studio-review-row.needs { border-color: rgba(179, 80, 60, 0.35); background: rgba(243, 226, 214, 0.4); }
.studio-review-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.studio-review-main strong { font-size: 15px; }
.studio-review-main small { font-size: 12px; color: var(--ink-soft); }
.studio-review-action { color: var(--sage-deep); font-size: 13px; font-weight: 600; flex-shrink: 0; }

.studio-empty { text-align: center; }

/* 响应式 */
@media (max-width: 980px) {
  .studio-home-grid,
  .studio-project-grid { grid-template-columns: 1fr; }
  .studio-panel-wide { grid-column: auto; }
  .studio-stat-grid { grid-template-columns: repeat(2, 1fr); }
  .studio-calendar-layout { grid-template-columns: 1fr; }
  .studio-account-grid { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .studio-shell { width: min(100% - 28px, 1180px); }
  .creator-studio-entry { flex-direction: column; align-items: flex-start; width: calc(100% - 28px); }
  .studio-page-heading h1 { font-size: 27px; }
  .studio-form-row,
  .studio-form-row.two { grid-template-columns: 1fr; }
  .studio-checklist,
  .studio-materials { grid-template-columns: 1fr; }
  .studio-idea-time { margin-left: 0; width: 100%; }
  .studio-toolbar { flex-direction: column; align-items: flex-start; }
  .calendar-day { min-height: 60px; }
  .studio-project-title-row h1 { min-width: 0; }
}
.speaking-audio-panel,.speaking-ai-panel{margin:1rem 0;padding:1rem;border:1px solid rgba(41,79,55,.16);border-radius:18px;background:rgba(247,244,235,.75)}
.speaking-audio-panel{display:grid;grid-template-columns:1fr auto;gap:.75rem;align-items:center}
.speaking-audio-panel h3,.speaking-ai-panel h3{margin:.2rem 0;font-size:1.05rem}
.speaking-audio-panel p,.speaking-ai-panel p{margin:.25rem 0;color:var(--muted,#6f766c);font-size:.9rem}
.speaking-audio-panel>strong{font-variant-numeric:tabular-nums;font-size:1.25rem;color:var(--forest,#294f37)}
.speaking-audio-actions,.speaking-ai-actions{display:flex;flex-wrap:wrap;gap:.5rem;grid-column:1/-1}
.speaking-ai-panel label{display:flex;align-items:center;gap:.6rem;margin:.75rem 0}
.speaking-ai-panel select{max-width:14rem;padding:.55rem .7rem;border:1px solid rgba(41,79,55,.2);border-radius:10px;background:#fff}
.speaking-ai-feedback{margin-top:.8rem;padding:.8rem;border-radius:12px;background:#fff}
.speaking-ai-feedback ul{margin:.5rem 0;padding-left:1.2rem}
@media (max-width:600px){.speaking-audio-panel{grid-template-columns:1fr}.speaking-audio-actions button,.speaking-ai-actions button{flex:1 1 100%}.speaking-ai-panel label{align-items:flex-start;flex-direction:column}.speaking-ai-panel select{max-width:none;width:100%}}

/* ═══ 健康值 UP！V1 ═══ */
.happiness-module-card.health-up {
  background: linear-gradient(145deg, rgba(246, 228, 184, 0.88), rgba(220, 235, 218, 0.92));
}

.health-page {
  max-width: 1040px;
  margin: 0 auto;
  padding-bottom: 48px;
}

.health-hero {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
  padding: 44px 0 28px;
}

.health-hero h1 {
  margin: 0 0 8px;
  font-size: clamp(40px, 6vw, 64px);
  color: var(--sage-deep);
}

.health-subtitle {
  margin: 0;
  color: var(--ink-soft);
  font: 17px/1.8 var(--serif);
}

.health-year-select {
  display: grid;
  gap: 6px;
  color: var(--ink-soft);
  font-size: 13px;
}

.health-year-select select {
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(251, 248, 240, 0.9);
  color: var(--ink);
}

.health-quick-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  padding: 4px 0 22px;
}

.health-quick-actions .text-button {
  margin-left: 4px;
}

.health-overview-card {
  padding: 20px 22px;
  border: 1px solid var(--line);
  border-radius: 22px;
  background:
    radial-gradient(circle at 92% 8%, rgba(246, 228, 184, 0.5), transparent 15rem),
    rgba(251, 248, 240, 0.86);
  box-shadow: 0 10px 30px rgba(64, 72, 61, 0.06);
}

.health-overview-head {
  margin-bottom: 14px;
}

.health-overview-head h2 {
  margin: 4px 0 0;
  font-size: 24px;
}

.health-overview-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 10px;
}

.health-overview-stat {
  display: grid;
  gap: 4px;
  padding: 12px 14px;
  border-radius: 16px;
  background: rgba(220, 228, 216, 0.5);
}

.health-overview-stat span {
  color: var(--ink-soft);
  font-size: 13px;
}

.health-overview-stat strong {
  font-size: 22px;
  color: var(--sage-deep);
}

.health-overview-stat.health-tone-pending {
  background: rgba(246, 228, 184, 0.62);
}

.health-overview-stat.health-tone-caring {
  background: rgba(234, 212, 200, 0.72);
}

.health-overview-notes {
  display: grid;
  gap: 6px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px dashed var(--line);
  color: var(--ink-soft);
  font-size: 14px;
  line-height: 1.7;
}

.health-overview-notes span {
  margin-right: 8px;
  color: var(--ink);
  font-weight: 600;
}

.health-section {
  margin-top: 34px;
}

.health-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.health-section-head h2 {
  margin: 4px 0 0;
  font-size: 24px;
}

.health-concern-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 12px;
}

.health-concern-card {
  position: relative;
  display: grid;
  gap: 8px;
  padding: 18px 18px 16px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: rgba(251, 248, 240, 0.84);
  transition: transform 160ms ease, background 160ms ease;
}

.health-concern-card:hover {
  transform: translateY(-2px);
  background: rgba(220, 228, 216, 0.4);
}

.health-tone-fresh {
  border-top: 3px solid var(--gold);
}

.health-tone-pending {
  border-top: 3px solid var(--gold);
  background: linear-gradient(160deg, rgba(246, 228, 184, 0.5), rgba(251, 248, 240, 0.9));
}

.health-tone-watching {
  border-top: 3px solid var(--sage);
}

.health-tone-caring {
  border-top: 3px solid var(--clay);
  background: linear-gradient(160deg, rgba(234, 212, 200, 0.55), rgba(251, 248, 240, 0.92));
}

.health-tone-stable {
  border-top: 3px solid #7fa684;
}

.health-tone-done {
  border-top: 3px solid #9aa79d;
  opacity: 0.82;
}

.health-concern-status {
  position: absolute;
  top: 14px;
  right: 14px;
  padding: 3px 10px;
  border-radius: 999px;
  background: rgba(220, 228, 216, 0.8);
  color: var(--sage-deep);
  font-size: 12px;
}

.health-concern-card h3 {
  margin: 0;
  padding-right: 74px;
  font-size: 19px;
}

.health-concern-category {
  margin: 0;
  color: var(--ink-soft);
  font-size: 13px;
}

.health-concern-card dl {
  display: grid;
  gap: 4px;
  margin: 2px 0 0;
}

.health-concern-card dl div {
  display: flex;
  gap: 8px;
  font-size: 13px;
  line-height: 1.6;
}

.health-concern-card dt {
  flex: 0 0 auto;
  color: var(--ink-soft);
}

.health-concern-card dd {
  margin: 0;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.health-concern-todo {
  padding: 6px 10px;
  border-radius: 10px;
  background: rgba(246, 228, 184, 0.6);
  font-size: 13px;
  color: var(--sage-deep);
}

.health-month-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
}

.health-month-card {
  display: grid;
  gap: 8px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(251, 248, 240, 0.82);
  transition: transform 160ms ease, background 160ms ease;
}

.health-month-card:hover {
  transform: translateY(-2px);
  background: rgba(220, 228, 216, 0.42);
}

.health-month-number {
  font-size: 18px;
  font-weight: 600;
  color: var(--sage-deep);
}

.health-month-concerns {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.health-month-concerns i {
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(220, 228, 216, 0.8);
  color: var(--sage-deep);
  font-size: 11px;
  font-style: normal;
}

.health-month-concerns.muted {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-month-card dl {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0;
  font-size: 12px;
  color: var(--ink-soft);
}

.health-month-card dl div {
  display: flex;
  gap: 4px;
}

.health-month-card dd {
  margin: 0;
  color: var(--ink);
  font-weight: 600;
}

.health-month-flag {
  margin: 0;
  font-size: 12px;
  color: var(--clay);
}

.health-month-flag.caring {
  color: var(--sage-deep);
}

.health-month-summary {
  margin: 0;
  font-size: 12px;
  line-height: 1.6;
  color: var(--ink-soft);
}

.health-plan-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 10px;
}

.health-plan-card {
  display: grid;
  gap: 6px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(251, 248, 240, 0.84);
}

.health-plan-card.health-plan-pending {
  border-color: rgba(200, 156, 84, 0.55);
  background: linear-gradient(160deg, rgba(246, 228, 184, 0.45), rgba(251, 248, 240, 0.9));
}

.health-plan-card.health-plan-done {
  opacity: 0.78;
}

.health-plan-card.health-plan-muted {
  opacity: 0.6;
}

.health-plan-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 12px;
  color: var(--ink-soft);
}

.health-plan-status {
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(220, 228, 216, 0.8);
  color: var(--sage-deep);
}

.health-plan-card h3 {
  margin: 0;
  font-size: 16px;
}

.health-plan-linked,
.health-plan-last {
  margin: 0;
  font-size: 12px;
  color: var(--ink-soft);
}

.health-indicator-overview {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
}

.health-indicator-mini {
  display: grid;
  gap: 4px;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(251, 248, 240, 0.84);
}

.health-indicator-mini span {
  color: var(--ink-soft);
  font-size: 13px;
}

.health-indicator-mini strong {
  font-size: 18px;
  color: var(--sage-deep);
}

.health-indicator-mini small {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-recent-list {
  display: grid;
  gap: 8px;
}

.health-recent-item {
  display: grid;
  grid-template-columns: 44px 58px minmax(0, 1fr);
  gap: 10px;
  align-items: baseline;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(251, 248, 240, 0.8);
  font-size: 14px;
}

.health-recent-item p {
  margin: 0;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.health-recent-date {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-recent-type {
  color: var(--sage-deep);
  font-size: 12px;
}

.health-empty {
  display: grid;
  place-items: center;
  gap: 8px;
  padding: 28px 16px;
  border: 1px dashed var(--line);
  border-radius: 18px;
  color: var(--ink-soft);
  text-align: center;
}

.health-empty span {
  font-size: 30px;
}

.health-empty p {
  margin: 0;
  line-height: 1.8;
}

.health-hint {
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.7;
}

.health-editor {
  max-width: 720px;
  margin: 0 auto;
  padding-bottom: 48px;
}

.health-editor-head {
  padding: 34px 0 18px;
}

.health-editor-head h1 {
  margin: 6px 0 0;
  font-size: clamp(30px, 5vw, 44px);
}

.health-form {
  display: grid;
  gap: 14px;
}

.health-field {
  display: grid;
  gap: 6px;
}

.health-field > span,
.health-checks + .health-field > span,
.health-field .health-hint {
  color: var(--ink-soft);
  font-size: 13px;
  font-weight: 600;
}

.health-field textarea,
.health-field input,
.health-field select {
  width: 100%;
}

.health-form input[type="date"],
.health-form input[type="month"] {
  min-height: 42px;
}

.health-voice-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: start;
}

.health-voice-button {
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(220, 228, 216, 0.7);
  color: var(--sage-deep);
  font-size: 13px;
  white-space: nowrap;
}

.health-voice-button.listening {
  background: rgba(246, 228, 184, 0.85);
  color: var(--clay);
}

.health-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 18px;
  padding: 10px 12px;
  border-radius: 14px;
  background: rgba(220, 228, 216, 0.32);
}

.health-checkbox-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 6px 14px;
  padding: 10px 12px;
  border: 1px dashed var(--line);
  border-radius: 14px;
}

.health-checkbox {
  font-size: 14px;
}

.health-form-footer {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 8px;
}

.health-privacy-note {
  margin-top: 26px;
  padding: 12px 16px;
  border-radius: 14px;
  background: rgba(220, 228, 216, 0.4);
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.7;
}

.health-attachments-panel {
  margin-top: 22px;
}

.health-attachments-panel h2 {
  margin: 0 0 10px;
  font-size: 18px;
}

.health-attachment-list {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.health-attachment {
  display: grid;
  gap: 4px;
  justify-items: center;
  width: 108px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(251, 248, 240, 0.84);
  font-size: 12px;
  color: var(--ink-soft);
  text-align: center;
}

.health-attachment img {
  width: 100%;
  height: 74px;
  object-fit: cover;
  border-radius: 8px;
}

.health-file-pdf {
  display: grid;
  place-items: center;
  width: 100%;
  height: 74px;
  border-radius: 8px;
  background: rgba(234, 212, 200, 0.6);
  color: var(--clay);
  font-size: 13px;
  font-weight: 700;
}

.health-upload-field {
  margin-top: 10px;
}

.health-upload-button {
  display: inline-block;
  padding: 9px 14px;
  border: 1px dashed rgba(63, 89, 72, 0.4);
  border-radius: 12px;
  background: rgba(251, 248, 240, 0.7);
  color: var(--sage-deep);
  font-size: 13px;
  cursor: pointer;
}

.health-detail-page {
  max-width: 860px;
  margin: 0 auto;
  padding-bottom: 48px;
}

.health-detail-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 22px 0 6px;
}

.health-detail-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.health-detail-hero {
  padding: 18px 0 16px;
}

.health-detail-hero h1 {
  margin: 6px 0 6px;
  font-size: clamp(30px, 5vw, 46px);
}

.health-detail-hero p:last-child {
  margin: 0;
  color: var(--ink-soft);
}

.health-detail-card {
  margin-top: 18px;
  padding: 18px 20px;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: rgba(251, 248, 240, 0.84);
}

.health-detail-card h2 {
  margin: 0 0 12px;
  font-size: 19px;
}

.health-detail-card h2 small {
  color: var(--ink-soft);
  font-size: 13px;
  font-weight: 400;
}

.health-detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px 20px;
  margin: 0;
}

.health-detail-grid div {
  display: grid;
  gap: 3px;
}

.health-detail-grid dt {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-detail-grid dd {
  margin: 0;
  font-size: 14px;
  line-height: 1.7;
  white-space: pre-wrap;
}

.health-detail-attachments {
  margin-top: 14px;
}

.health-timeline {
  display: grid;
  gap: 0;
  margin-top: 4px;
}

.health-timeline-item {
  position: relative;
  display: grid;
  grid-template-columns: 92px 66px minmax(0, 1fr);
  gap: 10px;
  padding: 10px 0 14px 12px;
}

.health-timeline-item::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 18px;
  bottom: -4px;
  width: 1px;
  background: rgba(63, 89, 72, 0.2);
}

.health-timeline-item:last-child::before {
  display: none;
}

.health-timeline-item::after {
  content: "";
  position: absolute;
  left: -1px;
  top: 18px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--sage);
}

.health-timeline-date {
  color: var(--ink-soft);
  font-size: 12px;
  padding-top: 2px;
}

.health-timeline-type {
  align-self: start;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(220, 228, 216, 0.85);
  color: var(--sage-deep);
  font-size: 11px;
  text-align: center;
}

.health-timeline-body h3 {
  margin: 0 0 3px;
  font-size: 15px;
}

.health-timeline-body p {
  margin: 2px 0;
  font-size: 13px;
  line-height: 1.7;
  color: var(--ink);
  white-space: pre-wrap;
}

.health-timeline-detail {
  color: var(--ink-soft) !important;
}

.health-has-attachment {
  color: var(--clay);
  font-size: 12px;
}

.health-filter-panel {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: flex-end;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(251, 248, 240, 0.8);
}

.health-filter-panel label {
  display: grid;
  gap: 4px;
  color: var(--ink-soft);
  font-size: 12px;
}

.health-filter-panel select,
.health-filter-panel input {
  min-height: 38px;
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--cream);
  color: var(--ink);
}

.health-filter-count {
  margin: 12px 2px 0;
  color: var(--ink-soft);
  font-size: 13px;
}

.health-record-list {
  display: grid;
  gap: 10px;
  margin-top: 16px;
}

.health-record-card {
  display: grid;
  gap: 5px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(251, 248, 240, 0.84);
}

.health-record-card h3 {
  margin: 0;
  font-size: 16px;
}

.health-record-card p {
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
  color: var(--ink-soft);
}

.health-record-date {
  color: var(--sage-deep);
  font-size: 12px;
  font-weight: 600;
}

.health-record-next {
  color: var(--clay) !important;
}

.health-indicator-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.health-indicator-card {
  display: grid;
  gap: 5px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(251, 248, 240, 0.84);
}

.health-indicator-category {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-indicator-card h3 {
  margin: 0;
  font-size: 16px;
}

.health-indicator-card p {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  margin: 2px 0 0;
  font-size: 13px;
}

.health-indicator-card p strong {
  font-size: 18px;
  color: var(--sage-deep);
}

.health-indicator-range {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-result-list {
  display: grid;
  gap: 8px;
}

.health-result-row {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  gap: 4px 12px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(251, 248, 240, 0.7);
  font-size: 13px;
}

.health-result-date {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-result-row strong {
  font-size: 15px;
  color: var(--sage-deep);
}

.health-result-row small {
  grid-column: 2;
  color: var(--ink-soft);
  font-size: 12px;
}

.health-latest-result {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}

.health-latest-result p {
  display: grid;
  gap: 3px;
  margin: 0;
}

.health-latest-result p span {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-latest-result p strong {
  font-size: 28px;
  color: var(--sage-deep);
}

.health-latest-result p small {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-range-badge {
  padding: 4px 12px;
  border-radius: 999px;
  background: rgba(246, 228, 184, 0.75);
  color: var(--clay);
  font-size: 13px;
}

.health-change {
  margin: 10px 0 0;
  color: var(--ink-soft);
  font-size: 13px;
}

.health-trend-chart {
  width: 100%;
  max-width: 560px;
  height: auto;
  color: var(--sage-deep);
}

.health-chart-label {
  fill: var(--ink-soft);
  font-size: 9px;
}

.health-chart-empty {
  color: var(--ink-soft);
  font-size: 13px;
}

.health-checkin-panel {
  margin-bottom: 8px;
  padding: 14px 16px;
  border-radius: 16px;
  background: rgba(220, 228, 216, 0.4);
}

.health-checkin-panel h2 {
  margin: 0 0 10px;
  font-size: 17px;
}

.health-checkin-today {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
}

.health-checkin-history {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 10px;
}

.health-checkin-day {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: rgba(251, 248, 240, 0.8);
  color: var(--ink-soft);
  font-size: 11px;
}

.health-checkin-day.taken {
  background: rgba(127, 166, 132, 0.7);
  color: #fff;
}

.health-checkin-day.missed {
  background: rgba(234, 212, 200, 0.7);
  color: var(--clay);
}

.health-summary-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 10px;
}

.health-summary-actions textarea {
  width: 100%;
  min-height: 220px;
}

.health-inline-form {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
}

.health-inline-form input {
  flex: 1;
  min-height: 40px;
  padding: 8px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--cream);
}

.health-category-list {
  display: grid;
  gap: 6px;
}

.health-category-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(251, 248, 240, 0.7);
  font-size: 14px;
}

.health-category-row small {
  color: var(--ink-soft);
  font-size: 12px;
}

.health-category-actions {
  display: flex;
  gap: 8px;
  margin-left: auto;
}

.danger-text {
  color: var(--clay) !important;
}

.health-chip {
  display: inline-block;
  padding: 3px 9px;
  border-radius: 999px;
  background: rgba(220, 228, 216, 0.85);
  color: var(--sage-deep);
  font-size: 12px;
}

.health-chip.muted {
  background: rgba(220, 228, 216, 0.45);
  color: var(--ink-soft);
}

.health-related-row {
  display: grid;
  gap: 2px;
  padding: 9px 10px;
  border-bottom: 1px dashed var(--line);
  font-size: 14px;
}

.health-related-row:last-child {
  border-bottom: 0;
}

.health-related-row small {
  color: var(--ink-soft);
  font-size: 12px;
  line-height: 1.6;
}

.health-template-details {
  border: 1px dashed var(--line);
  border-radius: 14px;
  padding: 10px 14px;
}

.health-template-details summary {
  cursor: pointer;
  color: var(--sage-deep);
  font-size: 14px;
}

.health-template-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}

.health-template-chip {
  padding: 5px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(251, 248, 240, 0.8);
  color: var(--sage-deep);
  font-size: 12px;
  cursor: pointer;
}

.health-page-head {
  padding: 30px 0 10px;
}

.health-page-head h1 {
  margin: 6px 0 4px;
  font-size: clamp(30px, 5vw, 46px);
}

.health-page-head p:last-child {
  margin: 0 0 14px;
  color: var(--ink-soft);
}

.health-page-head .primary-button {
  margin-top: 4px;
}

@media (max-width: 720px) {
  .health-overview-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .health-concern-grid,
  .health-month-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .health-month-card {
    padding: 11px;
  }

  .health-timeline-item {
    grid-template-columns: 70px 54px minmax(0, 1fr);
    gap: 8px;
    padding-left: 8px;
  }

  .health-recent-item {
    grid-template-columns: 40px 52px minmax(0, 1fr);
    gap: 8px;
  }

  .health-result-row {
    grid-template-columns: 78px minmax(0, 1fr);
  }

  .health-detail-grid {
    grid-template-columns: 1fr;
  }

  .health-form-footer {
    position: sticky;
    bottom: 10px;
    z-index: 5;
    padding: 10px;
    border-radius: 16px;
    background: rgba(244, 240, 230, 0.94);
    box-shadow: 0 10px 30px rgba(64, 72, 61, 0.16);
  }

  .health-form-footer .primary-button {
    flex: 1;
  }
}

@media (max-width: 420px) {
  .health-concern-grid,
  .health-month-grid,
  .health-indicator-overview {
    grid-template-columns: 1fr;
  }

  .health-quick-actions .primary-button,
  .health-quick-actions .secondary-button {
    flex: 1 1 100%;
  }
}

/* ============================================================
   Skye Garden 上线改造：账号 / 访客落地 / 安装 / 移动端细节
   ============================================================ */

/* 账号入口 */
.account-slot { display: inline-flex; align-items: center; gap: 8px; margin-left: 10px; }
.account-link {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 600; color: var(--ink);
  text-decoration: none; padding: 8px 10px; border-radius: 999px;
  border: 1px solid var(--line); background: rgba(255,255,255,0.5);
}
.account-link:hover { background: #fff; }
.account-link-primary { background: var(--accent); color: #fff; border-color: transparent; }
.account-dot { width: 8px; height: 8px; border-radius: 50%; background: #5fae6f; display: inline-block; }

/* 认证卡片 */
.auth-card {
  max-width: 440px; margin: 40px auto 64px; padding: 32px 28px;
  background: rgba(255,255,255,0.72); border: 1px solid var(--line);
  border-radius: 24px; box-shadow: 0 12px 40px rgba(43,63,43,0.08);
}
.auth-card h1 { font-size: 26px; margin: 6px 0 8px; }
.auth-copy { color: var(--muted); font-size: 14px; line-height: 1.7; margin: 0 0 18px; }
.auth-error {
  background: #fdecec; color: #b3403a; border: 1px solid #f2c4c0;
  border-radius: 10px; padding: 10px 12px; font-size: 13px; margin: 0 0 14px;
}
.auth-form { display: grid; gap: 14px; }
.auth-form .field { margin: 0; }
.auth-submit { width: 100%; justify-content: center; min-height: 46px; }
.auth-switch { text-align: center; font-size: 14px; color: var(--muted); margin: 2px 0; }
.auth-switch a { color: var(--accent); font-weight: 600; }
.auth-hint { text-align: center; color: var(--muted); font-size: 12px; margin: 16px 0 0; }
.turnstile-wrap { min-height: 65px; display: flex; justify-content: center; }
.private-door-mark {
  display: block; width: 52px; height: 52px; line-height: 52px; text-align: center;
  background: linear-gradient(135deg, #3b7a4e, #2c5e3a); color: #f4f0e6;
  border-radius: 16px; font-weight: 800; font-size: 22px; margin-bottom: 14px;
}

/* 访客落地页 */
.guest-hero {
  display: grid; grid-template-columns: 1.2fr 0.8fr; gap: 32px; align-items: center;
  max-width: 1040px; margin: 0 auto; padding: 72px 24px 88px;
}
.guest-hero h1 { font-size: clamp(30px, 5vw, 46px); line-height: 1.2; margin: 10px 0 14px; }
.guest-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 20px; }
.guest-features {
  background: rgba(255,255,255,0.7); border: 1px solid var(--line); border-radius: 20px; padding: 24px;
}
.guest-features ul { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 14px; }
.guest-features li { display: grid; gap: 2px; }
.guest-features strong { font-size: 15px; }
.guest-features small { color: var(--muted); font-size: 13px; line-height: 1.5; }

/* 账号设置页 */
.account-card { max-width: 480px; }
.account-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px dashed var(--line); margin-bottom: 14px; font-size: 14px; color: var(--muted); }
.account-install, .account-danger { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--line); }
.account-danger .danger-button {
  margin-top: 10px; padding: 11px 18px; border-radius: 12px; border: 1px solid #e0b4b0;
  background: #fdf3f2; color: #b3403a; font-weight: 600; cursor: pointer; font-size: 14px;
}
.account-actions { display: flex; gap: 10px; margin-top: 24px; flex-wrap: wrap; }

/* 移动端细节 */
html { -webkit-text-size-adjust: 100%; }
input, select, textarea, button { font-size: 16px; }
a, button, input[type="file"] { touch-action: manipulation; }
button { min-height: 44px; }
.mobile-nav a, .mobile-nav button { min-height: 52px; }
@media (max-width: 760px) {
  .guest-hero { grid-template-columns: 1fr; padding: 44px 16px 64px; gap: 20px; }
  .auth-card { margin: 20px auto 48px; padding: 26px 18px; }
  .account-slot .account-link { padding: 7px 9px; font-size: 12px; }
}

/* 管理后台 */
.admin-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 8px 0 18px; }
.admin-stats div { background: rgba(59,122,78,0.08); border-radius: 12px; padding: 14px 10px; text-align: center; }
.admin-stats strong { display: block; font-size: 22px; color: var(--accent); }
.admin-stats small { color: var(--muted); font-size: 12px; }
.admin-section { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line); }
.admin-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px dashed var(--line); }
.admin-row strong { display: block; font-size: 14px; }
.admin-row small { color: var(--muted); font-size: 12px; }
.admin-badges { display: inline-flex; align-items: center; gap: 6px; }
.admin-role { font-size: 11px; background: #eef3ea; color: #3b7a4e; border-radius: 999px; padding: 3px 8px; }
.admin-status { font-size: 11px; background: #eef3ea; color: #3b7a4e; border-radius: 999px; padding: 3px 8px; }
.admin-status.is-disabled { background: #fdecec; color: #b3403a; }
.admin-disable { font-size: 12px; padding: 6px 10px; border-radius: 8px; border: 1px solid var(--line); background: #fff; cursor: pointer; min-height: auto; }
.admin-error { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px dashed var(--line); font-size: 13px; }
.admin-error small { color: var(--muted); }
@media (max-width: 560px) {
  .admin-stats { grid-template-columns: repeat(2, 1fr); }
  .admin-row { flex-direction: column; align-items: flex-start; }
}

/* ─── 日常训练 V1 ─── */
.training-page { max-width: 860px; margin: 0 auto; padding: 28px 20px 72px; }
.training-hero { padding: 18px 0 22px; }
.training-hero .eyebrow { color: var(--sage-deep); }
.training-hero h1 {
  font-family: var(--serif); font-size: clamp(26px, 4vw, 34px); line-height: 1.25;
  margin: 8px 0 10px; color: var(--ink);
}
.training-hero p { color: var(--ink-soft); line-height: 1.7; margin: 0; }
.training-subnav {
  display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 22px; padding: 6px;
  background: rgba(251, 248, 240, 0.8); border: 1px solid var(--line); border-radius: 16px;
}
.training-subnav a {
  padding: 9px 16px; border-radius: 11px; font-size: 14px; color: var(--ink-soft);
  text-decoration: none; transition: background 150ms ease, color 150ms ease;
}
.training-subnav a.active { background: var(--sage-deep); color: #fdfbf4; font-weight: 600; }
.training-subnav a:hover { background: var(--sage-pale); color: var(--sage-deep); }
.training-subnav a.active:hover { background: var(--sage-deep); color: #fdfbf4; }

.training-today-hint {
  display: flex; justify-content: space-between; align-items: center; gap: 18px; flex-wrap: wrap;
  padding: 20px 22px; border-radius: 18px; margin-bottom: 20px;
  background: linear-gradient(145deg, rgba(220, 228, 216, 0.82), rgba(251, 248, 240, 0.94));
  border: 1px solid var(--line);
}
.training-today-hint h2 { font-family: var(--serif); margin: 6px 0 6px; font-size: 20px; }
.training-today-hint p { color: var(--ink-soft); line-height: 1.6; margin: 0; }

.training-module-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.training-module-card {
  display: grid; gap: 8px; padding: 20px; border: 1px solid var(--line); border-radius: 18px;
  background: rgba(251, 248, 240, 0.78); text-decoration: none; color: var(--ink);
  transition: transform 160ms ease, background 160ms ease;
}
.training-module-card:hover { transform: translateY(-2px); background: rgba(220, 228, 216, 0.5); }
.training-module-card h2 { font-family: var(--serif); font-size: 19px; margin: 0; }
.training-module-card p { color: var(--ink-soft); font-size: 13px; line-height: 1.6; margin: 0; }
.training-module-icon {
  display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%;
  border: 1px solid rgba(63, 89, 72, 0.2); color: var(--sage-deep); background: var(--sage-pale);
}
.training-module-card.today .training-module-icon { background: rgba(200, 156, 84, 0.28); color: #8a6420; }
.training-module-card.plans .training-module-icon { background: rgba(220, 228, 216, 0.9); color: var(--sage-deep); }
.training-module-card.library .training-module-icon { background: rgba(234, 212, 200, 0.6); color: #9c5f43; }
.training-module-card.records .training-module-icon { background: rgba(226, 215, 237, 0.6); color: #6d5a84; }

.training-home-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 18px 0; }
.training-home-stats div {
  text-align: center; padding: 16px; border-radius: 16px; border: 1px solid var(--line);
  background: rgba(251, 248, 240, 0.66);
}
.training-home-stats span { display: block; font-family: var(--serif); font-size: 26px; color: var(--sage-deep); }
.training-home-stats small { color: var(--ink-soft); }

.training-last-record { border-top: 1px dashed var(--line); padding-top: 16px; }
.training-record-row {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center;
  padding: 14px 16px; border: 1px solid var(--line); border-radius: 16px; cursor: pointer;
  background: rgba(251, 248, 240, 0.8);
}
.training-record-row:hover { background: rgba(220, 228, 216, 0.5); }
.training-record-date { font-size: 13px; color: var(--ink-soft); }
.training-record-row h3 { font-family: var(--serif); margin: 0 0 4px; font-size: 17px; }
.training-record-row p { margin: 0; color: var(--ink-soft); font-size: 13px; }
.training-record-row small { color: var(--sage-deep); }

.training-page-actions { display: flex; justify-content: flex-end; margin-bottom: 14px; }
.training-tag {
  display: inline-block; padding: 3px 9px; border-radius: 999px; font-size: 12px;
  background: var(--sage-pale); color: var(--sage-deep);
}
.training-tag + .training-tag { margin-left: 6px; }

.training-day-chips { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; }
.training-day-chip {
  padding: 9px 15px; border-radius: 999px; border: 1px solid var(--line);
  background: rgba(251, 248, 240, 0.85); color: var(--ink-soft); cursor: pointer; font-size: 14px;
}
.training-day-chip.active { background: var(--sage-deep); color: #fdfbf4; border-color: var(--sage-deep); font-weight: 600; }

.training-today-guide { margin-top: 4px; }
.training-today-list { display: grid; gap: 12px; margin-top: 8px; }
.training-today-item {
  display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 12px; padding: 16px;
  border: 1px solid var(--line); border-radius: 18px; background: rgba(251, 248, 240, 0.82);
}
.training-today-order {
  display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%;
  background: var(--sage-pale); color: var(--sage-deep); font-size: 13px; font-weight: 700;
}
.training-today-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.training-today-head h3 { font-family: var(--serif); font-size: 18px; margin: 0; }
.training-today-head h3 a { color: var(--ink); }
.training-done { margin-left: auto; }
.training-today-media { width: 100%; max-width: 340px; border-radius: 14px; margin: 10px 0 2px; display: block; }
.training-points { color: var(--ink-soft); font-size: 14px; line-height: 1.7; margin: 8px 0 0; white-space: pre-wrap; }
.training-today-inputs {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 10px;
}
.training-today-inputs label { display: grid; gap: 4px; font-size: 12px; color: var(--ink-soft); }
.training-today-inputs input, .training-day-exercise-inputs input {
  width: 100%; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--cream); color: var(--ink); font-size: 14px;
}
.training-today-actions { display: flex; gap: 10px; flex-wrap: wrap; margin: 18px 0 6px; }
.training-feeling-input {
  width: 100%; min-height: 72px; margin-top: 12px; padding: 12px 14px; border: 1px solid var(--line);
  border-radius: 12px; background: var(--cream); color: var(--ink); resize: vertical;
}

.training-plan-list { display: grid; gap: 14px; }
.training-plan-card {
  padding: 18px 20px; border: 1px solid var(--line); border-radius: 18px;
  background: rgba(251, 248, 240, 0.8);
}
.training-plan-card.active { border-color: rgba(63, 89, 72, 0.45); background: rgba(231, 238, 227, 0.6); }
.training-plan-head h2 { font-family: var(--serif); margin: 10px 0 4px; font-size: 20px; }
.training-plan-head h2 a { color: var(--ink); }
.training-plan-head p { color: var(--ink-soft); font-size: 13px; margin: 0; }
.training-plan-days { display: flex; gap: 6px; flex-wrap: wrap; margin: 12px 0; }
.training-plan-day-chip {
  padding: 5px 10px; border-radius: 999px; font-size: 12px; background: var(--sage-pale); color: var(--sage-deep);
}
.training-plan-actions { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }

.training-form { display: grid; gap: 18px; }
.training-form-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.training-form-header h1 { font-family: var(--serif); font-size: clamp(22px, 3.4vw, 28px); margin: 8px 0 0; }
.training-form-section { padding: 20px; border: 1px solid var(--line); border-radius: 18px; background: rgba(251, 248, 240, 0.82); }
.training-form-section .eyebrow { margin: 0 0 8px; }
.training-form-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 10px; }
.training-form-hint { color: var(--ink-soft); font-size: 13px; line-height: 1.6; margin: 6px 0 0; }
.training-plan-days-editor { display: grid; gap: 10px; padding: 20px; border: 1px solid var(--line); border-radius: 18px; background: rgba(251, 248, 240, 0.82); }
.training-form .field, .training-form .check-field { font-size: 14px; }

.training-media-field { display: grid; gap: 12px; }
.training-media-field .training-media { max-width: 360px; border-radius: 14px; }
.training-upload-button {
  display: inline-flex; align-items: center; gap: 8px; justify-content: center;
  padding: 12px 16px; border-radius: 12px; border: 1px dashed rgba(63, 89, 72, 0.45);
  background: var(--sage-pale); color: var(--sage-deep); font-weight: 600; cursor: pointer; font-size: 14px;
  width: fit-content;
}
.training-join-days { display: flex; gap: 10px 18px; flex-wrap: wrap; margin-top: 8px; }

.training-plan-detail-days { display: grid; gap: 16px; }
.training-day-card { padding: 18px 20px; border: 1px solid var(--line); border-radius: 18px; background: rgba(251, 248, 240, 0.82); }
.training-day-name-form { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.training-day-name-form input {
  flex: 1; min-width: 180px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--cream); font-size: 16px; font-family: var(--serif); color: var(--ink);
}
.training-day-index { color: var(--sage-deep); font-size: 13px; font-weight: 700; }
.training-day-note { color: var(--ink-soft); font-size: 13px; }
.training-day-exercise-list { display: grid; gap: 10px; margin: 14px 0; }
.training-day-exercise {
  display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; gap: 10px; align-items: center;
  padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: var(--cream);
}
.training-day-exercise-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.training-day-exercise-head strong { font-size: 15px; }
.training-day-exercise-head a { color: var(--ink); }
.training-thumb { width: 64px; height: 64px; object-fit: cover; border-radius: 10px; }
.training-day-exercise-inputs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 8px; }
.training-day-exercise-inputs label { display: grid; gap: 3px; font-size: 12px; color: var(--ink-soft); }
.training-day-empty { color: var(--ink-soft); font-size: 13px; margin: 6px 0; }
.training-remove {
  padding: 7px 10px; border-radius: 10px; border: 1px solid #e0b4b0; background: #fdf3f2;
  color: #b3403a; cursor: pointer; font-size: 13px;
}
.training-add-exercise-field { display: grid; gap: 6px; font-size: 13px; color: var(--ink-soft); }
.training-add-exercise-field select {
  width: 100%; max-width: 420px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--cream); color: var(--ink);
}

.training-library-tools { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.training-search { flex: 1; min-width: 220px; }
.training-part-chips { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.training-part-chip {
  padding: 8px 14px; border-radius: 999px; border: 1px solid var(--line);
  background: rgba(251, 248, 240, 0.85); color: var(--ink-soft); cursor: pointer; font-size: 13px;
}
.training-part-chip.active { background: var(--sage-deep); color: #fdfbf4; border-color: var(--sage-deep); }
.training-exercise-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
.training-exercise-card {
  display: grid; gap: 8px; padding: 14px; border: 1px solid var(--line); border-radius: 18px;
  background: rgba(251, 248, 240, 0.8); cursor: pointer; transition: transform 160ms ease, background 160ms ease;
}
.training-exercise-card:hover { transform: translateY(-2px); background: rgba(220, 228, 216, 0.5); }
.training-exercise-card.favorite { border-color: rgba(200, 156, 84, 0.55); }
.training-card-media { width: 100%; height: 150px; object-fit: cover; border-radius: 12px; background: var(--paper-deep); }
.training-exercise-card-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.training-exercise-card-head h3 { font-family: var(--serif); font-size: 17px; margin: 0; }
.training-fav {
  border: none; background: transparent; cursor: pointer; font-size: 20px; line-height: 1; padding: 4px;
  color: #c89c54;
}
.training-fav[data-active="false"] { color: rgba(54, 67, 59, 0.28); }
.training-exercise-meta { display: flex; gap: 6px; flex-wrap: wrap; margin: 0; }
.training-exercise-meta span {
  font-size: 12px; padding: 3px 9px; border-radius: 999px; background: var(--sage-pale); color: var(--sage-deep);
}
.training-exercise-points {
  color: var(--ink-soft); font-size: 13px; line-height: 1.6; margin: 2px 0; white-space: pre-wrap;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.training-exercise-foot { color: var(--sage-deep); font-size: 12px; margin: 2px 0 0; }

.training-record-list { display: grid; gap: 14px; }
.training-record-card {
  padding: 18px 20px; border: 1px solid var(--line); border-radius: 18px; background: rgba(251, 248, 240, 0.82);
}
.training-record-card-head h2 { font-family: var(--serif); margin: 6px 0 4px; font-size: 19px; }
.training-record-card-head p { color: var(--ink-soft); font-size: 13px; margin: 0; }
.training-record-card-actions { display: flex; gap: 14px; align-items: center; margin-top: 8px; }
.training-record-items { display: grid; gap: 6px; margin: 12px 0; }
.training-record-item-row {
  display: flex; justify-content: space-between; gap: 10px; padding: 8px 12px;
  border-radius: 10px; background: var(--cream); font-size: 14px;
}
.training-record-item-row small { color: var(--ink-soft); }
.training-record-feeling {
  border-left: 3px solid var(--gold); padding: 6px 12px; color: var(--ink-soft); font-size: 14px; line-height: 1.6;
}

.training-record-input-row {
  display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1.4fr) 70px 90px 90px auto auto;
  gap: 8px; align-items: center; padding: 10px; border: 1px solid var(--line); border-radius: 12px; background: var(--cream);
}
.training-record-input-row select, .training-record-input-row input {
  width: 100%; padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--cream); color: var(--ink); font-size: 14px;
}
.training-empty-inline { color: var(--ink-soft); font-size: 14px; padding: 10px 0; }

@media (max-width: 760px) {
  .training-module-grid { grid-template-columns: 1fr; }
  .training-today-inputs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .training-form-grid { grid-template-columns: 1fr; }
  .training-record-input-row { grid-template-columns: 1fr 1fr; }
  .training-record-input-row select { grid-column: 1 / -1; }
  .training-today-hint { flex-direction: column; align-items: flex-start; }
}
