:root {
  font-family: "Nanum Myeongjo", "Apple SD Gothic Neo", "Noto Serif KR", serif;
  color: #292820;
  background: #eee5d5;
  color-scheme: light;
  text-rendering: optimizeLegibility;
  -webkit-text-size-adjust: 100%;
}
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; min-width: 280px; min-height: 100%; }
body { background: #eee5d5; overflow-x: clip; }
button, input, select { font: inherit; }
button { cursor: pointer; -webkit-tap-highlight-color: transparent; }
button:focus-visible, input:focus-visible, select:focus-visible {
  outline: 3px solid #934b36; outline-offset: 3px;
}
button:disabled { cursor: default; }
.cover {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  width: 100%;
  min-height: 100dvh;
  background: #ece1cf;
}
.cover-art {
  position: absolute;
  display: block;
  max-width: none;
  border: 0;
  pointer-events: none;
  -webkit-user-drag: none;
}
.cover-action {
  position: absolute;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  text-align: left;
  border: 0;
  padding: 0 4px;
  background: transparent;
  color: #231f19;
  outline-offset: -2px;
  touch-action: manipulation;
}
.cover-action img {
  max-width: none;
  display: block;
  object-fit: contain;
  object-position: left center;
  pointer-events: none;
  user-select: none;
}
.cover-action .cover-fallback { display: none; font-weight: 700; font-size: 1.3rem; }
.cover-action.art-missing .cover-fallback { display: block; }
.cover-action.art-missing img { display: none; }
.more {
  position: absolute;
  z-index: 10;
  top: max(10px, env(safe-area-inset-top));
  right: max(10px, env(safe-area-inset-right));
  border: 0;
  background: rgba(238,229,213,.83);
  color: #322a20;
  width: 48px;
  height: 48px;
  border-radius: 24px;
  padding: 0;
  font-size: 28px;
  line-height: 1;
}
.settings-sheet {
  position: absolute;
  z-index: 12;
  top: calc(60px + env(safe-area-inset-top));
  right: max(10px, env(safe-area-inset-right));
  display: flex;
  gap: 4px;
  padding: 8px;
  background: #eee5d5;
  border: 1px solid rgba(61,51,38,.25);
}
.settings-sheet[hidden] { display: none; }
.settings-sheet button {
  border: 0; background: transparent;
  color: #30271c; min-width: 48px; min-height: 48px;
  padding: 9px;
}
.settings-sheet button[aria-pressed="true"] {
  box-shadow: inset 0 -2px #9e4133;
}
.reader {
  position: relative;
  width: 100%;
  min-height: 100dvh;
  overflow: hidden;
  background: #eee5d5;
  padding:
    calc(80px + env(safe-area-inset-top))
    clamp(16px,5vw,56px)
    calc(84px + env(safe-area-inset-bottom));
}
.reader-nav {
  position: absolute;
  top: max(12px, env(safe-area-inset-top));
  left: max(12px, env(safe-area-inset-left));
  z-index: 4;
}
.reader-nav button {
  width: 48px; height: 48px; padding: 0;
  border: 0; color: #3a322a; background: transparent;
  font-size: 26px;
}
.reader-inner {
  position: relative;
  z-index: 2;
  max-width: 690px;
  margin: 0 auto;
  min-height: 72dvh;
}
.reader-title {
  max-width: min(72vw,370px);
  max-height: 64px;
  display: block;
  object-fit: contain;
  object-position: left center;
}
.reader-hanja {
  font-weight: 600; font-size: clamp(24px,6.5vw,38px);
  writing-mode: vertical-rl;
  text-orientation: upright;
  position: absolute; right: clamp(4px,4vw,28px); top: 58px;
  margin: 0; letter-spacing: .13em;
}
.reader-art {
  display: block; position: absolute; top: 122px; right: -15%;
  width: min(125%, 890px);
  height: auto;
  opacity: .12;
  object-fit: contain;
  pointer-events: none;
  z-index: -1;
}
.reader-controls {
  position: relative;
  display: flex; flex-wrap: wrap;
  align-items: center; gap: 10px;
  margin-top: 38px;
}
.reader-controls label { display: inline-flex; align-items: center; gap: 7px; }
.reader-year-controls, .reader-month-controls {
  display: inline-flex;
  align-items: center;
  gap: clamp(2px, .7vw, 7px);
  flex-wrap: nowrap;
  min-width: 0;
}
.reader-year-controls input { width: 88px; max-width: 88px; font-variant-numeric: tabular-nums; }
.reader-month-controls select { min-width: 74px; max-width: 92px; }
.reader-controls .reader-step { flex: 0 0 48px; width: 48px; min-width: 48px; min-height: 48px; }
.reader-controls .reader-step:disabled { opacity: .28; }

.reader-controls input, .reader-controls select {
  min-height: 48px;
  max-width: 190px;
  border: 0;
  border-bottom: 1px solid #a19887;
  background: transparent;
  padding: 6px 4px;
  color: #24221d;
}
.reader-controls button {
  border: 0;
  color: #292820; background: transparent;
  min-height: 48px; min-width: 48px;
  font-size: 21px;
}
.reader-copy {
  margin-top: clamp(82px,18vh,180px);
  max-width: 33em;
  font-size: clamp(16px,3.6vw,19px);
  line-height: 1.95;
  word-break: keep-all;
}
.reader-copy p { margin: 0 0 1.4em; }
.reader-copy .reader-retry {
  min-width: 96px;
  min-height: 48px;
  padding: 4px 14px;
  border: 1px solid currentColor;
  border-radius: 4px;
  background: transparent;
  color: #292820;
  font: inherit;
  cursor: pointer;
}
.reader-copy .reader-retry:disabled { opacity: .45; }
.reader-copy .reader-retry:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.reader-note { font-size: .89rem; line-height: 1.7; opacity: .72; }
.reader-month-name { margin: 0 0 26px; font-weight: 500; font-size: 1.45rem; }
@media (max-width: 360px) {
  .reader { padding-left: 16px; padding-right: 16px; }
  .reader-controls { gap: 5px; }
  .reader-year-controls input { width: 74px; max-width: 74px; }
  .reader-controls label:has(input[type="date"]) input { max-width: 160px; }
}
@media (prefers-reduced-motion: no-preference) {
  .reader-art { transition: opacity 180ms ease; }
}
@media (orientation: landscape) and (max-height: 600px) {
  /* Browser can reflow; this does NOT assert native Android portrait. */
  .reader { padding-top: 72px; }
  .reader-copy { margin-top: 50px; }
}

/* Pure document typography: no synthetic cards or detached art panels. */
.canonical-reading {
  margin-top: 1.6em;
}
.reader-subheading {
  font-size: clamp(19px, 4.6vw, 24px);
  font-weight: 600;
  line-height: 1.55;
  margin: 2em 0 .8em;
}
.reader-source {
  white-space: pre-line;
  line-height: 1.9;
  color: #504b42;
  padding-inline-start: .25em;
  font-size: clamp(16px, 3.5vw, 19px);
}


/* CBTOK desktop landscape from 900px: keep phone/tablet portrait art untouched.
   Approved mobile 941x1672 hero and its pixel geometry are untouched. */
.desktop-title, .desktop-ink { display: none; }
@media (min-width: 900px) and (orientation: landscape) and (hover: hover) and (pointer: fine) {
  :root { background: #fbfaf6; }
  body { background: #fbfaf6; }
  .cover {
    height: 100dvh; min-height: 680px;
    background: #fbfaf6;
  }
  .cover-art { display: none; }
  .desktop-ink {
    position: absolute; display: block; z-index: 1;
    right: -5vw; top: 2%;
    width: min(72vw, 1040px); height: auto; opacity: .57;
    pointer-events: none; user-select: none;
  }
  .desktop-title {
    position: absolute; display: flex; z-index: 2;
    top: 16%; right: clamp(8%, 12vw, 15%);
    align-items: flex-start;
    gap: clamp(16px, 2vw, 32px);
    color: #201c18;
  }
  .desktop-title-hanja {
    font-family: "Nanum Myeongjo", "Noto Serif CJK KR", serif;
    writing-mode: vertical-rl; text-orientation: upright;
    font-size: clamp(58px, 5.4vw, 82px);
    font-weight: 750; letter-spacing: .18em; line-height: 1.05;
  }
  .desktop-title-ko {
    writing-mode: vertical-rl; text-orientation: upright;
    font-size: 19px; line-height: 1.45;
    letter-spacing: .5em; padding-top: 8px;
  }
  /* English needs a horizontal two-line title, not vertical Latin glyphs. */
  .desktop-title[data-locale="en"] {
    top: 8%;
    right: clamp(11%, 15vw, 19%);
  }
  .desktop-title[data-locale="en"] .desktop-title-hanja {
    font-size: clamp(50px, 4.6vw, 68px);
    letter-spacing: .15em;
  }
  .desktop-title[data-locale="en"] .desktop-title-ko {
    writing-mode: horizontal-tb;
    text-orientation: mixed;
    white-space: pre-line;
    font-family: "Palatino Linotype", "Book Antiqua", Georgia, serif;
    font-style: italic;
    font-weight: 400;
    font-size: clamp(21px, 2.15vw, 29px);
    line-height: 1.38;
    letter-spacing: .035em;
    min-width: 170px;
    padding-top: 6px;
  }
  .desktop-title[data-locale="en"] .desktop-seal {
    position: absolute;
    left: -67px;
    top: calc(100% + 8px);
    margin: 0;
  }
  .desktop-seal {
    align-self: flex-end; margin-left: -58px; margin-bottom: -75px;
    display: flex; align-items: center; justify-content: center;
    width: 45px; height: 45px;
    font-size: 18px; font-weight: 700; writing-mode: vertical-rl;
    border: 3px solid #a34534; color: #a34534; letter-spacing: .05em;
  }
  .cover-action {
    position: absolute; top: 52%;
    left: clamp(140px, 18.5vw, 355px);
    height: 76px; width: 320px; padding: 0; z-index: 3;
  }
  .cover-action[data-service="tojeong"] { top: 66%; }
  .cover-action img { width: 292px; max-height: 86px; height: auto; }
  .cover-action:hover { transform: translateX(6px); }
  .cover-action:focus-visible { outline-offset: 10px; }
  .more { background: transparent; right: 3%; top: 4%; }
  .settings-sheet { background: #fbfaf6; }
  .reader { background: #fbfaf6; padding-top: max(84px, 10vh); }
  .reader-inner { max-width: min(76vw, 960px); }
  .reader-title { max-width: 360px; }
  .reader-copy { max-width: 670px; margin-top: clamp(70px,10vh,126px); }
  .reader-art { right: -8vw; opacity: .21; }
}
.daily-reading { margin-top: 1.8rem; }
.daily-area { margin-bottom: 2.7rem; }
.daily-area .reader-subheading { margin: 1.8rem 0 .6rem; }

/* Real annual + month readings share the same continuous paper and moving ink.
   Nine-couplet reference opens inline; no second art panel or card container. */
.reader-annual-name {
  margin: 1.2em 0 .3em;
  font-weight: 600;
  font-size: clamp(19px, 4.8vw, 25px);
  line-height: 1.5;
}
.reader-editorial {
  margin: 2.2em 0 1.8em;
  border-top: 1px solid rgba(71,59,44,.25);
  border-bottom: 1px solid rgba(71,59,44,.25);
  padding: .65em 0;
}
.reader-editorial > summary {
  cursor: pointer;
  min-height: 48px;
  display: list-item;
  align-content: center;
  font-size: clamp(16px,3.8vw,19px);
  font-weight: 600;
}
.reader-editorial > summary:focus-visible {
  outline: 3px solid #934b36;
  outline-offset: 3px;
}
.reader-editorial-notice {
  margin: 1.2em 0 1.7em;
  font-size: 13px;
  color: #665b4b;
  line-height: 1.6;
}
.reader-verse { margin: 0 0 2em; }
.reader-verse-hanja {
  font-size: clamp(17px,3.9vw,20px);
  color: #312c25;
  white-space: pre-wrap;
  letter-spacing: .055em;
}
.reader-verse-literal { font-size: 1em; }
.reader-verse-commentary {
  font-size: .89em;
  color: #655e54;
}
@media (min-width: 900px) and (orientation: landscape) and (hover: hover) and (pointer: fine) {
  .reader { background: #fbfaf6; }
  .reader-inner { max-width: 760px; }
  .reader-copy { max-width: 40em; font-size: 19px; }
  .reader-art { opacity: .13; right: -11%; }
}

/* Traditional I Ching and two-person compatibility within the approved
   continuous Hanji page; no extra splash-screen menus or generated artwork. */
.fortune-extra-links {
  display:flex; gap:clamp(14px,4vw,36px);
  justify-content:flex-start;
  align-items:center;
  margin:clamp(14px,3vw,24px) 0 0;
  border-top:1px solid rgba(69,59,45,.18);
  padding-top:12px;
}
.fortune-extra-link {
  border:0; background:transparent; color:#342c24;
  min-width:72px; min-height:48px; text-align:left;
  font-size:clamp(17px,4.3vw,20px); font-weight:600;
  padding:6px 0;
}
.fortune-extra-link:focus-visible,
.iching-cast:focus-visible,
.compatibility-go:focus-visible {
  outline:2px solid #9b624e; outline-offset:3px;
}
.iching-cast, .compatibility-go {
  min-height:48px; border:1px solid rgba(65,53,40,.42);
  padding:8px 16px; color:#332e26;
  background:rgba(250,247,239,.38);
  font-size:clamp(16px,3.5vw,18px);
}
.iching-reading, .compatibility-reading { padding-bottom:34px; }
.iching-diagram {
  display:flex; flex-direction:column; gap:clamp(7px,1.8vw,11px);
  width:min(72vw,290px); margin:22px auto 36px;
}
.iching-line {
  display:flex; align-items:center; justify-content:space-between;
  position:relative; min-height:clamp(15px,2.6vw,21px);
  width:100%;
}
.iching-line span { height:clamp(13px,2.4vw,19px); background:#27221c; }
.iching-yang span { width:100%; }
.iching-yin span { width:44%; }
.iching-moving::after {
  content:""; position:absolute; right:-18px; top:50%;
  width:7px; height:7px; border-radius:50%;
  background:#a34738; transform:translateY(-50%);
}
.iching-overview { font-size:clamp(18px,4.3vw,21px); font-weight:500; }
.iching-verse {
  border-top:1px solid rgba(67,55,40,.14);
  padding:22px 0 12px;
}
.iching-verse h3, .compatibility-signal-title {
  font-size:clamp(17px,3.9vw,20px); margin:0 0 9px;
  font-weight:600; color:#3d3227;
}
.iching-verse-moving { border-left:3px solid #a34738; padding-left:13px; }
.iching-changed { margin-top:38px; border-top:1px solid #aa9b85; padding-top:10px; }
/* Reuse the same inline birth-date picker and placement as Tojeong.
   One compact row per person on phones; no card or extra explanatory copy. */
.compatibility-controls {
  display:flex; flex-wrap:wrap; align-items:center;
  gap:10px 18px;
}
.compatibility-controls label {
  display:inline-flex; flex-direction:row; align-items:center; gap:7px;
  min-width:0; font-size:15px;
}
.compatibility-controls input[type="time"] {
  width:118px; min-width:108px; max-width:126px;
  font-variant-numeric:tabular-nums;
}
.compatibility-clock-note { margin:4px 0 9px; font-size:13px; }

/* Collapsed by default to preserve the approved sparse reader on phones. */
.compatibility-precision {
  flex-basis:100%;
  min-width:0;
  margin:2px 0;
  border-top:1px solid #b6aa95;
  padding:5px 0;
}
.compatibility-precision summary {
  cursor:pointer;
  min-height:44px;
  display:flex;
  align-items:center;
  font-size:14px;
}
.compatibility-precision label {
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin:5px 14px 5px 0;
  font-size:14px;
}
.compatibility-precision input[type="number"] {
  width:125px;
  min-width:0;
  font-variant-numeric:tabular-nums;
}
.compatibility-precision select { max-width:195px; }
@media (max-width:600px) {
  .compatibility-precision label { display:flex; justify-content:space-between; margin:4px 0; }
  .compatibility-precision input[type="number"] { width:min(44vw,125px); }
}

.compatibility-controls input[type="date"] {
  width:174px; max-width:190px; min-width:0;
  font-variant-numeric:tabular-nums;
}
.compatibility-controls button { margin-top:0; }
@media (max-width:600px) {
  .compatibility-controls { flex-direction:column; align-items:stretch; gap:8px; }
  .compatibility-controls label { justify-content:space-between; width:100%; }
  .compatibility-controls input[type="date"] { width:min(48vw,174px); }
  .compatibility-controls input[type="time"] { width:118px; }
  .compatibility-controls button { align-self:flex-start; margin-top:6px; }
}
@media (max-width:420px) {
  .iching-diagram { width:min(63vw,230px); }
}
@media (max-width:320px) {
  .compatibility-controls label { font-size:14px; white-space:normal; }
  .compatibility-controls input[type="date"] { width:46vw; }
  .compatibility-controls input[type="time"] { width:108px; }
}
@media (min-width:900px) and (orientation:landscape) {
  .fortune-extra-links { max-width:420px; }
  .iching-diagram { width:250px; }
}


/* Sparse hanji reader: the ten-year reference stays collapsed by default. */
.saju-decade { margin:18px 0 6px; border-top:1px solid rgba(69,59,45,.22); }
.saju-decade > summary, .saju-decade-year > summary {
  cursor:pointer; min-height:44px; display:flex; align-items:center;
  color:#3d3227; font-size:clamp(16px,3.8vw,19px);
}
.saju-decade-year { border-top:1px solid rgba(69,59,45,.12); }
.saju-decade-year[open] > summary { font-weight:600; }
.saju-decade-year > summary:focus-visible { outline:2px solid #6d604c; outline-offset:3px; }
.saju-decade-year p { margin:8px 0 14px; }
.seasonal-reading section { margin-bottom:28px; }

/* Sangpyeong Tongbo face: 常 top, 平 bottom, 通 right, 寶 left.
   Falling coins illustrate the exact secure coin results, not independent RNG. */
.coin-tray { display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:10px; padding:16px 4px; margin:9px 0 20px; min-height:142px; }
.coin-tray[hidden] { display:none; }
.coin-row { display:flex; align-items:center; justify-content:center; gap:clamp(8px,4vw,22px); }
.sangpyeong-coin { position:relative; display:block; width:clamp(68px,18vw,94px);
  height:clamp(68px,18vw,94px); border-radius:50%; flex-shrink:0;
  border:5px solid #79613f; box-shadow:inset 0 0 0 3px #c9a46a,
    inset 0 0 0 7px #725332, 0 5px 9px rgba(42,33,20,.18);
  background:radial-gradient(circle at 36% 26%,#c3a06a,#a18050 45%,#5a4b32 100%);
  transform-style:preserve-3d; }
.sangpyeong-coin > i { position:absolute; display:block; top:39%; left:39%;
  width:22%; height:22%; border:3px solid #5f492f; background:#eee5d5;
  box-shadow:0 0 0 2px #c5a571; z-index:1; }
.sangpyeong-coin > b { position:absolute; font-size:clamp(16px,4.3vw,23px);
  line-height:1; color:#3e301e; font-weight:800; text-shadow:0 1px #d5ad73; }
.sangpyeong-coin .coin-top { top:8%; left:50%; transform:translateX(-50%); }
.sangpyeong-coin .coin-bottom { bottom:7%; left:50%; transform:translateX(-50%); }
.sangpyeong-coin .coin-right { right:8%; top:50%; transform:translateY(-50%); }
.sangpyeong-coin .coin-left { left:8%; top:50%; transform:translateY(-50%); }
.sangpyeong-coin.coin-back { background:radial-gradient(circle at 35% 25%,#ae9468,#8c7045 55%,#56492e); }
.sangpyeong-coin.coin-back > b { display:none; }
.sangpyeong-coin.coin-back::after { content:""; position:absolute; inset:11%;
  border:2px solid rgba(55,42,23,.48); border-radius:50%; }
.sangpyeong-coin.is-falling { animation:coin-tumble 820ms cubic-bezier(.18,.7,.25,1) both; }
.sangpyeong-coin:nth-child(2) { animation-delay:90ms; }
.sangpyeong-coin:nth-child(3) { animation-delay:170ms; }
@keyframes coin-tumble {
  0% { transform:translateY(-75px) rotateY(15deg) rotateX(-130deg) scale(.68); opacity:.45; }
  62% { transform:translateY(13px) rotateY(720deg) rotateX(390deg) scale(1.08); opacity:1; }
  80% { transform:translateY(-9px) rotateY(835deg) rotateX(450deg); }
  100% { transform:translateY(0) rotateY(1080deg) rotateX(720deg) scale(1); opacity:1; }
}
@media (prefers-reduced-motion:reduce) {
  .sangpyeong-coin.is-falling { animation:none; }
}
.coin-progress { font-size:.92rem; letter-spacing:.06em; min-height:1.6em; }
.settings-sheet { flex-direction:column; width:min(440px,calc(100vw - 20px));
  max-height:min(82dvh,740px); overflow-y:auto; box-shadow:0 9px 30px rgba(30,24,15,.14); }
.settings-languages { display:flex; gap:8px; justify-content:flex-end; }
.settings-people { border-top:1px solid rgba(61,51,38,.24); padding:9px 4px; }
.settings-people summary { cursor:pointer; min-height:44px; display:flex; align-items:center; }
.settings-people label { display:grid; grid-template-columns:minmax(66px,1fr) minmax(0,1.85fr);
  align-items:center; gap:8px; padding:5px 0; font-size:14px; }
.settings-people input,.settings-people select { width:100%; min-width:0; min-height:42px;
  color:#27231e; background:#faf6ed; border:1px solid #bcb2a1; border-radius:2px; padding:5px; }
.settings-people .person-actions { display:flex; flex-wrap:wrap; gap:5px; margin-top:8px; }
.settings-people .person-actions button { flex:1 1 100px; border:1px solid #bcb2a1;
  font-size:14px; padding:6px; min-height:44px; }
.settings-people .person-note { font-size:12px; margin:8px 0; line-height:1.55; }
.reader-controls .fortune-profile-select { max-width:200px; }
/* Touch fold inner display and tablet, PORTRAIT as well as LANDSCAPE:
   layout the original 941x1672 painting at most one viewport tall. The
   desktop-only white ink CSS is deliberately excluded; no OS rotation claim. */
@media (min-width: 600px) and (pointer: coarse) {
  :root, body { background: #eee5d5; }
  .cover {
    width: min(100%, 690px, 56.28dvh);
    margin-inline: auto;
    min-height: 100dvh;
    background: #ece1cf;
  }
  .cover-art { display:block; }
  .desktop-ink, .desktop-title { display:none; }
  .reader { width:100%; min-height:100dvh; padding-top:clamp(64px,9vh,94px); }
  .reader-inner { max-width:min(690px,56.28dvh); }
  .reader-copy { margin-top:clamp(42px,8vh,90px); }
  .reader-art { right:-10%; max-width:none; }
  .settings-sheet { max-width:calc(100vw - 20px); }
}


/* Fortune Library / 운의 서재: deliberate mobile product identity, not a
   repainted classical cover. The legacy artwork stays at #/classic. */
.fortune-hub, .people-screen {
  --library-ink:#21302e;
  --library-quiet:#63716d;
  --library-paper:#f6f6f1;
  --library-line:#d6ddd5;
  --library-cinnabar:#a04436;
  position:relative;
  min-height:100dvh;
  color:var(--library-ink);
  background:var(--library-paper);
  font-family:"Apple SD Gothic Neo","Noto Sans KR",system-ui,sans-serif;
  font-feature-settings:"kern";
}
.fortune-hub-inner {
  width:min(100%,780px);
  margin-inline:auto;
  padding:calc(35px + env(safe-area-inset-top))
    clamp(18px,5vw,48px)
    calc(115px + env(safe-area-inset-bottom));
}
.fortune-hub-header {position:relative;padding:16px 70px 26px 0;}
.fortune-hub-kicker {
  margin:0 0 13px;
  font-size:11px;
  font-weight:650;
  letter-spacing:.16em;
  color:var(--library-cinnabar);
}
.fortune-hub-header h1 {
  margin:0;
  font-family:"Nanum Myeongjo","Noto Serif KR",serif;
  font-weight:650;
  letter-spacing:-.055em;
  font-size:clamp(38px,9vw,58px);
  line-height:1.28;
}
.fortune-hub-subtitle {
  color:var(--library-quiet);
  font-size:13px;
  line-height:1.65;
  margin:12px 0 0;
}
.fortune-hub-person {
  display:block;
  margin-top:18px;
  min-height:44px;
  min-width:100px;
  border:1px solid var(--library-line);
  background:transparent;
  color:var(--library-ink);
  font-size:13px;
  font-weight:650;
  text-align:left;
  padding:8px 13px;
  border-radius:12px;
}
.fortune-hub .more {background:transparent;color:var(--library-ink);z-index:30;}
.fortune-hub .settings-sheet {
  font-family:"Apple SD Gothic Neo","Noto Sans KR",system-ui,sans-serif;
  border-radius:16px;
  z-index:31;
  background:#fff;
  border-color:var(--library-line);
}
.settings-people-entry {font-size:15px;text-align:left;font-weight:650;}
.fortune-hub-lead {
  width:100%;
  min-height:154px;
  display:grid;
  grid-template-columns:1fr 32px;
  align-content:center;
  gap:12px;
  padding:26px clamp(24px,7vw,38px);
  text-align:left;
  border:none;
  border-radius:18px;
  color:#f6f6f0;
  background:#273d39;
  box-shadow:0 12px 27px rgba(35,60,54,.12);
  touch-action:manipulation;
}
.fortune-hub-date {
  grid-column:1/-1;
  color:#d5e0d8;
  font-size:12px;
  letter-spacing:.09em;
  font-variant-numeric:tabular-nums;
}
.fortune-hub-lead strong {
  font-family:"Nanum Myeongjo","Noto Serif KR",serif;
  font-size:clamp(27px,7vw,40px);
  font-weight:650;
}
.fortune-hub-arrow {font-size:29px;justify-self:end;line-height:1.2;}
.fortune-hub-shelf {margin-top:44px;}
.fortune-hub-shelf h2, .fortune-hub-pulse h2, .fortune-hub-season h2 {
  font-size:19px;
  font-weight:700;
  letter-spacing:-.03em;
  margin:0 0 18px;
}
.fortune-hub-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:11px;
}
.fortune-hub-tile {
  position:relative;
  min-width:0;
  min-height:122px;
  padding:20px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  align-items:flex-start;
  text-align:left;
  border:1px solid var(--library-line);
  border-radius:14px;
  background:#fff;
  color:var(--library-ink);
  touch-action:manipulation;
}
.fortune-hub-tile:active, .fortune-hub-lead:active {transform:scale(.987);}
.fortune-hub-category {
  font-size:11px;
  line-height:1.3;
  font-weight:650;
  letter-spacing:.09em;
  color:var(--library-quiet);
}
.fortune-hub-tile strong {
  font-family:"Nanum Myeongjo","Noto Serif KR",serif;
  font-weight:650;
  font-size:clamp(19px,5.2vw,27px);
  white-space:normal;
  word-break:keep-all;
}
.fortune-hub-tile-symbol {
  position:absolute;
  right:15px;
  top:12px;
  color:#c4cec7;
  font-size:21px;
  font-family:"Nanum Myeongjo","Noto Serif CJK KR",serif;
}
.fortune-hub-pulse, .fortune-hub-season {
  border-top:1px solid var(--library-line);
  margin-top:36px;
  padding-top:29px;
}
.fortune-hub-pulse-basis {
  font-size:13px;
  color:var(--library-quiet);
  margin:0 0 12px;
}
.fortune-hub-pulse>p:not(.fortune-hub-pulse-basis){
  line-height:1.8;
  font-size:16px;
  word-break:keep-all;
  margin:0 0 13px;
}
.fortune-hub-pulse details {
  color:var(--library-quiet);
  font-size:12px;
  line-height:1.65;
}
.fortune-hub-pulse summary {cursor:pointer;min-height:44px;align-content:center;}
.fortune-hub-term {padding:13px 0;border-bottom:1px solid var(--library-line);}
.fortune-hub-term strong {font-size:15px;font-weight:700;}
.fortune-hub-term p {
  color:var(--library-quiet);
  font-size:14px;
  line-height:1.75;
  margin:8px 0 0;
  word-break:keep-all;
}
.fortune-hub-archive {
  margin-top:24px;
  min-height:44px;
  padding:0;
  border:0;
  background:none;
  color:var(--library-quiet);
  font-size:13px;
}
.fortune-bottom-nav {
  position:fixed;
  bottom:0;
  left:0;
  right:0;
  z-index:28;
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  padding:6px max(2px,env(safe-area-inset-left))
    calc(7px + env(safe-area-inset-bottom)) max(2px,env(safe-area-inset-right));
  background:rgba(251,251,248,.97);
  border-top:1px solid #d9ddd7;
  box-shadow:0 -5px 20px rgba(28,38,34,.035);
  font-family:"Apple SD Gothic Neo","Noto Sans KR",system-ui,sans-serif;
}
.fortune-nav-item {
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:3px;
  border:0;
  border-radius:10px;
  background:transparent;
  color:#69736e;
  min-width:0;
  min-height:58px;
  padding:5px 1px;
  font-size:clamp(10px,2.6vw,12px);
  white-space:nowrap;
}
.fortune-nav-symbol {
  font-family:"Nanum Myeongjo","Noto Serif CJK KR",serif;
  font-size:21px;
  line-height:1.15;
}
.fortune-nav-item.is-current {
  color:#273d39;
  font-weight:750;
  background:#edf1eb;
}
.fortune-nav-item:focus-visible, .fortune-hub-tile:focus-visible,
.fortune-hub-lead:focus-visible, .people-back:focus-visible {
  outline:3px solid #a04436;
  outline-offset:2px;
}
.reader {padding-bottom:calc(118px + env(safe-area-inset-bottom));}
.people-screen {
  padding:calc(12px + env(safe-area-inset-top))
    clamp(16px,5vw,34px)
    calc(110px + env(safe-area-inset-bottom));
}
.people-top-bar {
  display:flex;
  align-items:center;
  gap:12px;
  max-width:600px;
  margin:0 auto 22px;
}
.people-top-bar h1 {font-size:24px;letter-spacing:-.045em;margin:0;}
.people-back {
  background:transparent;
  border:0;
  color:var(--library-ink);
  min-width:48px;
  min-height:48px;
  font-size:27px;
  padding:0;
  text-align:left;
}
.people-editor {
  max-width:600px;
  margin:0 auto;
  border:0;
  padding:0;
}
.people-editor>summary {display:none;}
.people-editor .person-note {
  color:var(--library-quiet);
  font-size:12px;
  line-height:1.55;
  margin:8px 0 17px;
}
.people-editor label {
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:7px;
  margin-bottom:18px;
  font-size:13px;
  font-weight:650;
}
.people-editor input, .people-editor select {
  appearance:auto;
  width:100%;
  min-width:0;
  max-width:none;
  border:1px solid var(--library-line);
  border-radius:12px;
  background:#fff;
  color:var(--library-ink);
  min-height:52px;
  padding:10px 13px;
  font:inherit;
  font-size:16px;
}
.people-editor .person-actions {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
  margin-top:22px;
}
.people-editor .person-actions button {
  border:1px solid var(--library-line);
  border-radius:12px;
  background:#fff;
  color:var(--library-ink);
  min-height:52px;
  padding:10px;
  font-size:14px;
  font-weight:650;
  touch-action:manipulation;
}
.people-editor .person-actions button:first-child {
  grid-column:1/-1;
  border-color:#273d39;
  background:#273d39;
  color:#fff;
}
.people-editor .person-actions button:last-child {
  color:#943f33;
}
@media(min-width:820px) and (hover:hover) and (pointer:fine) {
  .fortune-bottom-nav {
    left:50%;
    right:auto;
    width:min(640px,90vw);
    transform:translateX(-50%);
    border:1px solid var(--library-line,#d9ddd7);
    border-bottom:0;
    border-radius:18px 18px 0 0;
  }
  .fortune-hub-inner {padding-bottom:130px;}
}
@media(max-width:340px) {
  .fortune-hub-inner {padding-left:14px;padding-right:14px;}
  .fortune-hub-tile {padding:14px;min-height:116px;}
  .fortune-nav-item {font-size:10px;}
  .fortune-nav-symbol {font-size:19px;}
}
@media(prefers-reduced-motion:reduce){
  .fortune-hub-tile:active,.fortune-hub-lead:active {transform:none;}
}

/* Mobile people directory replaces a traditional web-form landing.
   Touch targets and focus follow Lumen Field / Echo WCAG guidance;
   the existing local-only HTML inputs retain OS date/time keyboards. */
.people-list {max-width:600px;margin:0 auto;}
.people-add {
  display:block;width:100%;min-height:54px;
  padding:13px 18px;margin:0 0 22px;
  border:1px solid #273d39;border-radius:14px;
  color:#fff;background:#273d39;
  font-size:16px;font-weight:700;text-align:center;
  touch-action:manipulation;
}
.people-list-item {
  background:#fff;
  border:1px solid #d6ddd5;
  border-radius:18px;
  margin-bottom:13px;
  padding:4px 15px 13px;
}
.people-list-edit {
  display:flex;flex-direction:column;gap:6px;align-items:flex-start;
  width:100%;min-height:74px;
  padding:15px 0 10px;
  border:0;background:transparent;color:#21302e;
  text-align:left;
}
.people-list-edit strong {font-size:18px;font-weight:700;}
.people-list-edit span {font-size:13px;color:#64716c;font-variant-numeric:tabular-nums;}
.people-list-roles {
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
}
.people-role {
  min-width:0;min-height:48px;
  padding:10px 4px;
  border:1px solid #d6ddd5;border-radius:12px;
  background:#f6f6f1;color:#46534e;
  font-size:13px;font-weight:600;
  touch-action:manipulation;
}
.people-role.is-current {
  background:#edf2ec;
  border-color:#426257;
  color:#243d33;
  font-weight:750;
}
.people-role.is-current::before {content:"✓ ";font-weight:800;}
.people-empty,.people-status {font-size:14px;line-height:1.75;color:#64716c;text-align:center;padding:30px 0;}
.people-editor.people-editor {background:transparent;}
.people-editor .people-editor-existing {display:none;}
.people-advanced {
  margin:6px 0 22px;border-top:1px solid #d6ddd5;
  border-bottom:1px solid #d6ddd5;padding:4px 0;
}
.people-advanced summary {
  min-height:50px;display:flex;align-items:center;cursor:pointer;
  color:#46534e;font-size:14px;font-weight:650;
}
.people-advanced label {margin:12px 0 16px;}
.people-editor input:focus-visible,.people-editor select:focus-visible,
.people-add:focus-visible,.people-list-edit:focus-visible,
.people-role:focus-visible,.people-editor .person-actions button:focus-visible {
  outline:3px solid #a04436;outline-offset:3px;
}
@media(max-width:330px) {
  .people-list-item {padding:4px 11px 12px;}
  .people-role {font-size:12px;}
}

/* 2026 guided native-style fortune intake — original hanji assets stay in /classic. */
.people-editor.people-editor {padding-bottom:calc(124px + env(safe-area-inset-bottom));}
.people-onboarding-progress {
  display:flex;align-items:center;min-height:40px;
  font:700 12px/1.4 "Apple SD Gothic Neo","Noto Sans KR",system-ui,sans-serif;
  letter-spacing:.07em;color:#63716d;
  border-bottom:1px solid #d8ded8;margin-bottom:22px;
}
.people-onboarding-progress::before {
  content:"";display:inline-block;width:32px;height:3px;
  border-radius:4px;background:#9d473a;margin-right:12px;
}
.people-onboarding-step {display:flex;flex-direction:column;gap:0;}
.people-onboarding-step[hidden] {display:none!important;}
.people-onboarding-step-title {
  font:650 clamp(25px,6vw,34px)/1.35 "Noto Serif KR","Nanum Myeongjo",serif;
  letter-spacing:-.055em;margin:4px 0 29px;color:#1c2d2a;
}
.people-onboarding-step .people-advanced {margin-top:7px;}
.people-unknown-time {
  display:flex!important;flex-direction:row!important;
  align-items:center!important;gap:11px!important;
  min-height:54px;margin:-10px 0 15px!important;
  font-size:15px!important;font-weight:600!important;
  color:#334941;cursor:pointer;
}
.people-unknown-time input[type="checkbox"] {
  appearance:auto;width:22px;height:22px;min-height:22px;
  accent-color:#334e43;flex:0 0 auto;
  margin:0;padding:0;
}
.people-editor input:disabled {
  opacity:.52;background:#edf0ec;color:#66736c;
}
.people-onboarding-action {
  width:100%;min-height:54px;padding:13px 22px;
  margin:14px 0 10px;
  border:0!important;border-radius:15px!important;
  color:#fff!important;background:#233e34!important;
  font-size:16px!important;font-weight:750!important;
  touch-action:manipulation;
}
.people-step-back {
  align-self:flex-start;min-height:44px;
  border:0;background:transparent;color:#465850;
  padding:8px 0;margin:4px 0 5px;font-size:14px;
}
.people-editor-management {
  border-top:1px solid #d6ddd5;margin-top:18px;
}
.people-editor-management summary {
  display:flex;min-height:52px;align-items:center;
  color:#64726c;font-size:13px;font-weight:600;cursor:pointer;
}
.people-editor-management .person-actions {
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;margin:6px 0 18px;
}
.people-editor-management .person-actions button {
  min-height:48px;padding:11px 8px;
  border:1px solid #d6ddd5;border-radius:12px;
  background:#fff;color:#2e4238;font-size:13px;
}
.people-editor-management .person-actions button:first-child {
  grid-column:auto;background:#fff;color:#2e4238;border:1px solid #d6ddd5;
}
.people-editor-management .person-actions button:last-child {
  grid-column:1/-1;border-color:#e7d3cc;color:#943f33;
}
.reader.reader-modern {
  background:#f6f6f1;color:#20302b;
  padding:calc(84px + env(safe-area-inset-top))
    clamp(19px,5vw,52px)
    calc(125px + env(safe-area-inset-bottom));
  font-family:"Apple SD Gothic Neo","Noto Sans KR",system-ui,sans-serif;
}
.reader-modern .reader-inner {max-width:680px;min-height:0;}
.reader-modern .reader-modern-eyebrow {
  margin:0 0 9px;color:#9d473a;
  letter-spacing:.18em;font:700 11px/1.5 system-ui,sans-serif;
}
.reader-modern .reader-modern-title {
  font:650 clamp(31px,8vw,48px)/1.22 "Noto Serif KR","Nanum Myeongjo",serif;
  letter-spacing:-.055em;
  color:#20302b;margin:0;padding:0 0 24px;
  border-bottom:1px solid #d6ddd5;
}
.reader-modern .reader-controls {
  margin-top:23px;gap:10px;
  padding:8px 0 17px;
}
.reader-modern .reader-controls input,
.reader-modern .reader-controls select,
.reader-modern .compatibility-controls input,
.reader-modern .compatibility-controls select {
  max-width:min(100%,230px);
  min-height:48px;border:1px solid #d6ddd5;
  border-radius:11px;background:#fff;color:#20302b;
  padding:8px 10px;font-size:16px;
}
.reader-modern .reader-controls label {font-size:13px;line-height:1.5;}
.reader-modern .reader-copy {
  margin-top:22px;max-width:42em;
  font-size:clamp(16px,3.5vw,18px);line-height:1.82;
}
.reader-modern .reader-copy p {margin-bottom:1.1em;}
.reader-modern .reader-subheading {
  color:#20302b;font-size:clamp(18px,4vw,23px);
  font-weight:750;letter-spacing:-.035em;
  margin:1.5em 0 .6em;
}
.reader-modern .reader-month-controls,
.reader-modern .reader-year-controls {max-width:100%;}
.reader-modern .reader-year-controls input {max-width:88px;}
.reader-modern .reader-month-controls select {max-width:92px;}
.reader-modern .reader-note {color:#64716c;opacity:1;}
.reader-modern .reader-nav button {color:#20302b;}
@media(max-width:360px){
  .reader.reader-modern {padding-left:13px;padding-right:13px;}
  .reader-modern .reader-controls input[type="date"] {max-width:168px;}
  .reader-modern .reader-controls {gap:5px;}
}


/* 0.5.43 editorial app home
 * Layout lessons studied from actual CHANI / The Pattern screenshots.
 * No third-party imagery, typography assets, markup or UI code is bundled.
 */
.fortune-hub {
  --home-ink:#1d2927;
  --home-subtle:#66766f;
  --home-rule:#dce4df;
  --home-paper:#f7f8f4;
  color:var(--home-ink);
  background:var(--home-paper);
}
.fortune-hub .fortune-hub-inner {
  width:min(100%,720px);
  padding:calc(24px + env(safe-area-inset-top))
    clamp(18px,5vw,40px)
    calc(120px + env(safe-area-inset-bottom));
}
.fortune-hub .fortune-hub-header {
  padding:10px 0 25px;
}
.fortune-hub .fortune-hub-kicker {
  color:#9f513e;
  font-size:11px;
  margin-bottom:9px;
  letter-spacing:.17em;
}
.fortune-hub .fortune-hub-header h1 {
  font-family:"Noto Serif KR","Nanum Myeongjo",serif;
  font-size:clamp(32px,8vw,50px);
  letter-spacing:-.065em;
  font-weight:650;
}
.fortune-hub .fortune-hub-subtitle {
  margin:7px 0 18px;
  font-size:13px;
  color:var(--home-subtle);
}
.fortune-hub-person-bar {
  display:flex;
  align-items:end;
  gap:9px;
  max-width:480px;
}
.fortune-hub-person-label {
  display:flex;
  flex:1;
  min-width:0;
  flex-direction:column;
  gap:5px;
  font-size:11px;
  font-weight:650;
  color:var(--home-subtle);
}
.fortune-hub .fortune-hub-profile-select {
  appearance:auto;
  display:block;
  width:100%;
  min-width:0;
  min-height:49px;
  border:1px solid var(--home-rule);
  border-radius:13px;
  background:#fff;
  color:var(--home-ink);
  padding:8px 12px;
  font:650 15px/1.3 "Apple SD Gothic Neo","Noto Sans KR",system-ui,sans-serif;
}
.fortune-hub .fortune-hub-person {
  margin:0;
  min-width:70px;
  min-height:49px;
  border-radius:13px;
  color:var(--home-ink);
  background:#edf3ee;
  font-size:14px;
  text-align:center;
}
.fortune-hub .fortune-hub-spotlight {
  width:100%;
  position:relative;
  isolation:isolate;
  overflow:hidden;
  min-height:235px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  gap:9px;
  padding:28px clamp(22px,6vw,36px);
  background:#233932;
  border-radius:23px;
  border:none;
  color:#f6f7ee;
  box-shadow:0 12px 28px rgb(35 57 50 / 13%);
}
.fortune-hub .fortune-hub-spotlight::before {
  content:"";
  position:absolute;
  width:240px;height:240px;
  border-radius:50%;
  right:-66px;top:-97px;
  z-index:-1;
  border:1px solid rgb(231 245 218 / 28%);
  box-shadow:0 0 0 36px rgb(232 245 223 / 4%),
    0 0 0 75px rgb(232 245 223 / 3%),
    0 0 0 112px rgb(232 245 223 / 2%);
}
.fortune-hub .fortune-hub-spotlight::after {
  content:"";
  position:absolute;inset:0;z-index:-1;
  background:linear-gradient(118deg,transparent 58%,rgb(255 253 230 / 8%) 100%);
}
.fortune-hub .fortune-hub-spotlight .fortune-hub-date {
  grid-column:auto;
  font:650 12px/1.5 system-ui,sans-serif;
  letter-spacing:.075em;
  color:#d0e4d4;
}
.fortune-hub .fortune-hub-spotlight strong {
  font:650 clamp(30px,7vw,41px)/1.2 "Noto Serif KR","Nanum Myeongjo",serif;
  letter-spacing:-.04em;
}
.fortune-hub .fortune-hub-today-context {
  font-size:14px;
  line-height:1.6;
  color:#e2eadd;
}
.fortune-hub .fortune-hub-spotlight .fortune-hub-arrow {
  position:absolute;
  right:24px;
  bottom:21px;
  background:rgb(255 255 255 / 13%);
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  width:43px;
  height:43px;
  font-size:21px;
}
.fortune-hub .fortune-hub-year-timeline {
  border:1px solid var(--home-rule);
  background:#fff;
  margin-top:17px;
  border-radius:19px;
  padding:15px 20px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.fortune-hub .fortune-hub-year-timeline h2 {
  flex:1;
  font-size:15px;
  font-weight:700;
  margin:0;
  letter-spacing:-.035em;
}
.fortune-hub .fortune-hub-year-controls {
  display:flex;
  align-items:center;
  gap:9px;
}
.fortune-hub .fortune-hub-current-year {
  font:750 23px/1.1 system-ui,sans-serif;
  font-variant-numeric:tabular-nums;
  min-width:56px;
  text-align:center;
}
.fortune-hub .fortune-hub-year-previous,
.fortune-hub .fortune-hub-year-next {
  width:43px;height:43px;min-height:43px;
  border:1px solid var(--home-rule);
  border-radius:50%;
  color:#263c35;
  background:#eff3f0;
  font-size:20px;
  font-weight:650;
  touch-action:manipulation;
}
.fortune-hub .fortune-hub-year-previous:disabled,
.fortune-hub .fortune-hub-year-next:disabled {
  opacity:.32;
}
.fortune-hub .fortune-hub-shelf {
  margin-top:37px;
}
.fortune-hub .fortune-hub-shelf h2 {
  font:700 22px/1.3 "Noto Serif KR","Nanum Myeongjo",serif;
  letter-spacing:-.045em;
  margin:0;
}
.fortune-hub .fortune-hub-shelf-intro {
  color:var(--home-subtle);
  font-size:13px;
  line-height:1.5;
  margin:5px 0 17px;
}
.fortune-hub .fortune-hub-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.fortune-hub .fortune-hub-section-card {
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:space-between;
  gap:13px;
  min-height:157px;
  min-width:0;
  padding:20px;
  text-align:left;
  background:#fff;
  color:var(--home-ink);
  border:1px solid var(--home-rule);
  border-radius:19px;
  box-shadow:0 3px 9px rgb(34 56 42 / 3%);
}
.fortune-hub .fortune-hub-service-symbol {
  display:grid;
  place-items:center;
  font:650 20px/1 "Nanum Myeongjo","Noto Serif KR",serif;
  width:41px;height:41px;
  border-radius:13px;
  background:#eef4f0;
  color:#365c4e;
}
.fortune-hub .fortune-hub-service-body {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:5px;
}
.fortune-hub .fortune-hub-section-card .fortune-hub-category {
  font-size:11px;
  color:#6a7972;
  letter-spacing:.07em;
}
.fortune-hub .fortune-hub-section-card strong {
  font:700 clamp(18px,4.7vw,23px)/1.3 "Noto Serif KR","Nanum Myeongjo",serif;
  white-space:normal;
  word-break:keep-all;
}
.fortune-hub .fortune-hub-card-arrow {
  position:absolute;
  right:15px;top:16px;
  font-size:16px;
  color:#82928a;
}
.fortune-hub .fortune-hub-shelf-flow .fortune-hub-section-card:first-child {
  background:#f4eadb;
  border-color:#eadcca;
}
.fortune-hub .fortune-hub-shelf-flow .fortune-hub-section-card:first-child .fortune-hub-service-symbol {
  background:#e9d7bb;
  color:#78552e;
}
.fortune-hub .fortune-hub-shelf-connection .fortune-hub-section-card:first-child {
  background:#f0eef6;
  border-color:#e2ddec;
}
.fortune-hub .fortune-hub-shelf-connection .fortune-hub-section-card:first-child .fortune-hub-service-symbol {
  background:#e3dcf0;
  color:#64537e;
}
.fortune-hub .fortune-hub-shelf-season .fortune-hub-grid {
  grid-template-columns:1fr;
}
.fortune-hub .fortune-hub-shelf-season .fortune-hub-section-card {
  min-height:95px;
  flex-direction:row;
  align-items:center;
  justify-content:flex-start;
  gap:16px;
}
.fortune-hub .fortune-hub-shelf-season .fortune-hub-card-arrow {
  top:auto;
  right:20px;
}
.fortune-hub .fortune-hub-pulse {
  background:#e7f0e9;
  border:1px solid #d2e1d6;
  border-radius:19px;
  padding:24px;
  margin:18px 0 0;
}
.fortune-hub .fortune-hub-pulse h3 {
  font:700 18px/1.4 "Noto Serif KR","Nanum Myeongjo",serif;
  margin:0 0 9px;
}
.fortune-hub .fortune-hub-pulse .fortune-hub-pulse-basis {
  color:#557063;
  font-size:12px;
  margin:0 0 11px;
}
.fortune-hub .fortune-hub-pulse>p:not(.fortune-hub-pulse-basis) {
  color:#304d3d;
  font-size:15px;
  line-height:1.8;
}
.fortune-hub .fortune-hub-pulse details {
  border-top:1px solid #cbded0;
  color:#506e5e;
  line-height:1.7;
}
.fortune-hub .fortune-hub-pulse summary {
  min-height:46px;
  cursor:pointer;
  align-content:center;
  font-weight:650;
  font-size:13px;
}
.fortune-hub .fortune-hub-season {
  margin-top:12px;
  border-top:0;
  padding-top:0;
}
.fortune-hub .fortune-hub-archive {
  display:block;
  font-size:13px;
  padding:0;
  margin-top:29px;
  color:#75837b;
}
.fortune-hub .fortune-hub-profile-select:focus-visible,
.fortune-hub .fortune-hub-year-previous:focus-visible,
.fortune-hub .fortune-hub-year-next:focus-visible,
.fortune-hub .fortune-hub-section-card:focus-visible,
.fortune-hub .fortune-hub-spotlight:focus-visible {
  outline:3px solid #a04436;
  outline-offset:3px;
}
@media(max-width:340px){
  .fortune-hub .fortune-hub-year-timeline {padding:12px;gap:4px;}
  .fortune-hub .fortune-hub-current-year {min-width:49px;font-size:21px;}
  .fortune-hub .fortune-hub-year-controls {gap:5px;}
  .fortune-hub .fortune-hub-section-card {padding:14px;min-height:146px;}
}
@media(min-width:780px){
  .fortune-hub .fortune-hub-spotlight {min-height:265px;}
  .fortune-hub .fortune-hub-section-card {min-height:160px;}
}


/* Annual-and-month bridge: source-verified Korean evidence stays on screen.
 * No Hanzi excerpts, unlicensed third-party imagery or fabricated forecasts.
 */
.reader-annual-linked-months {
  margin:27px 0 22px;
  padding:21px clamp(15px,4vw,25px);
  border:1px solid #dbe5dc;
  border-radius:18px;
  background:#f4f8f1;
  color:#293e33;
  max-width:100%;
}
.reader-annual-linked-title {
  margin:0 0 16px;
  font:700 clamp(17px,4.2vw,21px)/1.4
    "Noto Serif KR","Nanum Myeongjo",serif;
  letter-spacing:-.035em;
  word-break:keep-all;
}
.reader-annual-linked-content {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:13px;
}
.reader-annual-linked-month {
  min-width:0;
  border-radius:14px;
  background:#fff;
  border:1px solid #e1e9e3;
  padding:17px clamp(13px,3.5vw,22px);
}
.reader-annual-linked-month-label {
  color:#53715e;
  font:750 14px/1.4 system-ui,"Noto Sans KR",sans-serif;
  margin:0 0 10px;
}
.reader-annual-linked-month p {
  margin:0;
  color:#34463e;
  font-size:clamp(14px,3.5vw,16px);
  line-height:1.82;
  word-break:keep-all;
  overflow-wrap:anywhere;
}
.reader-annual-linked-content .reader-retry {
  min-height:44px;
  justify-self:start;
}
@media(min-width:760px){
  .reader-annual-linked-content {
    grid-template-columns:repeat(2,minmax(0,1fr));
    align-items:stretch;
  }
}
@media(max-width:330px){
  .reader-annual-linked-months {padding:12px;}
  .reader-annual-linked-month {padding:12px;}
}

/* Compact inline form feedback: keep errors adjacent to the active step,
   not below the second-page actions or bottom navigation. */
.people-onboarding-status:not(:empty) {
  margin:-13px 0 21px!important;
  padding:12px 14px;
  border:1px solid #ecd7ce;
  border-radius:12px;
  background:#fff8f3;
  color:#913f32!important;
  font-size:13px!important;
  line-height:1.55;
}
@media (min-width:900px) {
  /* Calm centered editing column in the white-paper CBTOK desktop reader. */
  .people-screen .people-top-bar,
  .people-screen .people-list,
  .people-screen .people-editor {max-width:640px;}
  .people-editor .people-onboarding-step-title {margin-bottom:33px;}
}

/* Preserve the full verified monthly readings while making annual results scannable. */
.reader-annual-linked-month{padding:0;overflow:hidden;}
.reader-annual-linked-month-label{
  display:flex;align-items:center;justify-content:space-between;
  min-height:48px;margin:0;padding:12px 18px;cursor:pointer;
  list-style:none;font-size:15px;
}
.reader-annual-linked-month-label::-webkit-details-marker{display:none;}
.reader-annual-linked-month-label::after{content:"+";font-size:20px;font-weight:400;color:#6b8173;}
.reader-annual-linked-month[open] .reader-annual-linked-month-label::after{content:"−";}
.reader-annual-linked-month>p{padding:0 18px 18px;}
.reader-annual-linked-month-label:focus-visible{outline:3px solid #a04436;outline-offset:-3px;}
@media(min-width:760px){.reader-annual-linked-content{align-items:start;}}
