/* ===== 사주노트 — 화면 스타일 (모던) ===== */

/* ---- 색 (밝은 화면 / 어두운 화면) ---- */
:root{
  --ground:#F4F5F7; --paper:#FFFFFF; --sunk:#F1F2F5; --ink:#16181D; --ink-soft:#6B7080; --line:#E4E6EB;
  --accent:#6246EA; --accent-ink:#FFFFFF; --accent-soft:#EFEBFF;
  --wood:#12A150; --fire:#E5484D; --earth:#C98A00; --metal:#8A8F9C; --water:#2F6FEB;
  --focus:#6246EA;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 6px 20px rgba(16,24,40,.05);
  --radius:18px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --ground:#0F1115; --paper:#181B21; --sunk:#20242C; --ink:#ECEEF2; --ink-soft:#9AA0AE; --line:#2A2E37;
    --accent:#8F7BFF; --accent-ink:#0F1115; --accent-soft:#252042;
    --wood:#3DD68C; --fire:#FF6B6B; --earth:#F5C04A; --metal:#B0B4BF; --water:#6EA0FF; --focus:#8F7BFF;
    --shadow:0 1px 2px rgba(0,0,0,.3);
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --ground:#0F1115; --paper:#181B21; --sunk:#20242C; --ink:#ECEEF2; --ink-soft:#9AA0AE; --line:#2A2E37;
  --accent:#8F7BFF; --accent-ink:#0F1115; --accent-soft:#252042;
  --wood:#3DD68C; --fire:#FF6B6B; --earth:#F5C04A; --metal:#B0B4BF; --water:#6EA0FF; --focus:#8F7BFF;
  --shadow:0 1px 2px rgba(0,0,0,.3);
}

/* ---- 기본 ---- */
*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;min-height:100vh;background:var(--ground);color:var(--ink);font-family:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;font-size:15px;line-height:1.65;word-break:keep-all;-webkit-font-smoothing:antialiased}
.hanja{font-weight:700}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
h1{font-weight:800;font-size:clamp(30px,7.5vw,44px);line-height:1.2;letter-spacing:-.03em;margin:0;text-wrap:balance}
h1 .seal-inline{color:var(--accent)}
h2{font-weight:700;font-size:19px;letter-spacing:-.02em;margin:0;text-wrap:balance}
h3{font-size:13px;font-weight:600;color:var(--ink-soft);margin:0}
.eyebrow{font-size:13px;font-weight:600;color:var(--accent)}
.lede{margin:0;color:var(--ink-soft);max-width:34em}
.el-0{color:var(--wood)} .el-1{color:var(--fire)} .el-2{color:var(--earth)} .el-3{color:var(--metal)} .el-4{color:var(--water)}
.bg-0{background:var(--wood)} .bg-1{background:var(--fire)} .bg-2{background:var(--earth)} .bg-3{background:var(--metal)} .bg-4{background:var(--water)}
.ic{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ---- 전체 배치 (휴대폰 기준, 넓은 화면은 맨 아래) ---- */
.wrap{max-width:640px;margin:0 auto;padding-inline:16px;padding-block:0 56px;display:flex;flex-direction:column;gap:24px}
footer{font-size:12px;color:var(--ink-soft);border-top:1px solid var(--line);padding-top:16px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 20px;display:flex;flex-direction:column;gap:16px}

/* ---- 입력 폼 ---- */
form{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px}
.field{display:flex;flex-direction:column;gap:6px}
.field.full{grid-column:1/-1}
label,.lbl{font-size:13px;font-weight:600;color:var(--ink-soft)}
input,select{font:inherit;font-size:16px;min-height:48px;color:var(--ink);background:var(--sunk);border:1px solid transparent;border-radius:12px;padding:10px 12px;width:100%;min-width:0;transition:border-color .15s,background .15s}
input:focus,select:focus{border-color:var(--accent);background:var(--paper);outline:none}
input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.seg{display:flex;gap:4px;padding:4px;background:var(--sunk);border-radius:14px}
.seg label{flex:1;text-align:center;padding:9px 0;cursor:pointer;color:var(--ink-soft);border-radius:10px;font-size:15px;font-weight:600;transition:background .15s,color .15s}
.seg input{position:absolute;opacity:0;width:1px;height:1px;min-height:0}
.seg label:has(input:checked){background:var(--paper);color:var(--ink);box-shadow:0 1px 3px rgba(16,24,40,.12)}
.seg label:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:-2px}
.ymd{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px}
.chk{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:14px;color:var(--ink)}
.chk input{width:20px;height:20px;min-height:0;margin:0;cursor:pointer;accent-color:var(--accent);flex:none}
.note{grid-column:1/-1;font-size:12px;color:var(--ink-soft);margin:0}
.err{grid-column:1/-1;color:var(--fire);font-size:13px;margin:0}

/* ---- 버튼 ---- */
.btn{grid-column:1/-1;font:inherit;font-size:16px;font-weight:700;border:0;border-radius:14px;padding:15px;background:var(--accent);color:var(--accent-ink);cursor:pointer;transition:filter .15s,transform .1s}
.btn:hover{filter:brightness(1.08)}
.btn:active{transform:scale(.99)}
.btn:disabled{opacity:.6;cursor:wait}
.ghost{font:inherit;font-weight:600;background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:9px 16px;cursor:pointer;text-decoration:none;display:inline-block}
.actions{display:flex;gap:10px;flex-wrap:wrap}
.toast{font-size:13px;color:var(--wood);align-self:center}

/* ---- 사주 원국 · 오행 ---- */
.board{display:flex;flex-direction:column;gap:12px}
.pillars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--paper);box-shadow:var(--shadow)}
.pl{display:flex;flex-direction:column;align-items:center;border-left:1px solid var(--line)}
.pl:first-child{border-left:0}
.pl .cap{font-size:12px;color:var(--ink-soft);padding:10px 0 4px}
.pl .ch{width:100%;display:flex;flex-direction:column;align-items:center;padding:10px 0 10px;gap:2px}
.pl .ch .h{font-weight:700;font-size:clamp(28px,8vw,38px);line-height:1}
.pl .ch .k{font-size:12px}
.pl .ch.stem{border-bottom:1px solid var(--line)}
.pl.me{background:var(--accent-soft)}
.pl.me .cap{color:var(--accent);font-weight:700}
.pl.empty .ch .h{color:var(--line)}
.meta{font-size:13px;color:var(--ink-soft);margin:0}
.bars{display:flex;flex-direction:column;gap:10px}
.bar{display:grid;grid-template-columns:52px 1fr 28px;align-items:center;gap:10px;font-variant-numeric:tabular-nums}
.bar .nm{font-size:14px;font-weight:600}
.bar .tr{display:block;height:10px;background:var(--sunk);border-radius:999px;overflow:hidden}
.bar .fl{display:block;height:100%;border-radius:999px;transition:width .6s ease}
.bar .ct{text-align:right;font-size:14px}
.summary{margin:0}

/* ---- 전생 초상화 (AI) ---- */
.seal{width:64px;height:64px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;border-radius:20px;font-weight:700;font-size:32px;line-height:1}
.ai-head{display:flex;flex-direction:column;gap:6px}
.ai-teaser{display:flex;justify-content:center}
.teaser-frame{width:100%;max-width:240px;aspect-ratio:2/3;border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;padding:16px;background:linear-gradient(160deg,var(--accent-soft),var(--sunk))}
.teaser-frame p{margin:0;color:var(--ink-soft);font-size:14px;line-height:1.7}
.teaser-frame b{color:var(--ink)}
.ai-form{display:flex;flex-direction:column;gap:12px}
.status{margin:0;font-size:14px;color:var(--ink-soft);min-height:1.5em}
.status.err{color:var(--fire)}
.ai-out{display:flex;flex-direction:column;gap:22px}
.ai-left,.ai-right{display:flex;flex-direction:column;gap:18px;min-width:0}
.frame{position:relative;aspect-ratio:2/3;border-radius:var(--radius);overflow:hidden;background:var(--sunk)}
.frame img{display:block;width:100%;height:100%;object-fit:cover}
.ai-portrait{margin:0 auto;width:100%;max-width:340px}
.skel{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(100deg,var(--sunk) 30%,var(--paper) 50%,var(--sunk) 70%);background-size:300% 100%;animation:shimmer 1.6s linear infinite;color:var(--ink-soft);font-size:14px}
@keyframes shimmer{from{background-position:100% 0}to{background-position:0 0}}
.ai-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.ai-card{display:flex;flex-direction:column;gap:6px;text-align:center;align-items:center}
.role{font-weight:800;letter-spacing:-.03em;font-size:clamp(24px,6vw,30px);line-height:1.3;margin:4px 0 0;text-wrap:balance}
.tagline{margin:4px 0 0;color:var(--ink-soft)}
.chips{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.chips span{font-size:13px;font-weight:600;background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:3px 12px}
.ai-step{display:flex;flex-direction:column;gap:10px}
.attrs{display:grid;grid-template-columns:72px 1fr;gap:10px 12px;margin:0;border-top:1px solid var(--line);padding-top:16px}
.attrs dt{font-size:13px;font-weight:600;color:var(--ink-soft);padding-top:2px}
.attrs dd{margin:0}
.last{background:var(--sunk);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:6px}
.last p{margin:0;font-size:15px;line-height:1.85}

/* ---- 상세 풀이 (올해·연애·금전) ---- */
.fortune{display:flex;flex-direction:column;gap:14px}
.f-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
.f-year{font-size:14px;color:var(--ink-soft)}
.f-item{display:flex;flex-direction:column;gap:8px}
.f-title{display:flex;align-items:center;gap:8px;margin:0;font-size:17px;font-weight:700;color:var(--ink)}
.f-ic{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.f-ic .ic{width:18px;height:18px}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column;gap:16px}
.panel p{margin:0}
.score{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.score .kw{font-weight:700;font-size:19px;letter-spacing:-.02em;line-height:1.35}
.dots{display:flex;gap:4px}
.dots i{width:12px;height:12px;border-radius:50%;background:var(--sunk);display:block;box-shadow:inset 0 0 0 1px var(--line)}
.dots i.on{background:var(--accent);box-shadow:none}
.half{margin:0;display:grid;grid-template-columns:64px 1fr;gap:8px 12px}
.half dt{font-size:13px;font-weight:600;color:var(--ink-soft);padding-top:2px}
.half dd{margin:0}
.caution{background:color-mix(in srgb,var(--earth) 12%,var(--paper));border-radius:12px;padding:12px 14px;font-size:14px;margin:0}
.lucky{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.lucky div{display:flex;flex-direction:column;gap:2px;background:var(--sunk);border-radius:12px;padding:12px}
.lucky span{font-size:12px;color:var(--ink-soft)}
.lucky b{font-weight:700;font-size:15px}
.lucky .wide{grid-column:1/-1}
.basis{font-size:12px;color:var(--ink-soft)}

/* ---- 궁합 ---- */
.m-score{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}
.m-pair{display:flex;align-items:center;gap:14px;font-size:28px;font-weight:700}
.m-pair i{font-style:normal;font-size:18px;color:var(--accent);display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--accent-soft)}
.m-num{margin:0;font-size:15px;color:var(--ink-soft)}
.m-num b{font-size:48px;font-weight:800;letter-spacing:-.03em;color:var(--accent);font-variant-numeric:tabular-nums}
.m-score .kw{margin:0;font-size:20px;font-weight:700}
.m-table-wrap{overflow-x:auto}
.m-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;background:var(--paper);border:1px solid var(--line);border-radius:14px;overflow:hidden;font-variant-numeric:tabular-nums}
.m-table th,.m-table td{border-left:1px solid var(--line);border-top:1px solid var(--line);text-align:center;padding:7px 2px;vertical-align:middle}
.m-table tr>:first-child{border-left:0}
.m-table thead th{border-top:0;font-size:12px;font-weight:500;color:var(--ink-soft);padding:8px 2px;background:var(--sunk)}
.m-table thead th.day{color:var(--accent);font-weight:700}
.m-table col.who{width:17%}
.m-table th.who{font-weight:700;font-size:16px;line-height:1.2}
.m-table th.who small{display:block;font-weight:400;font-size:11px;color:var(--ink-soft);margin-top:3px}
.m-table td .h{display:block;font-weight:700;font-size:clamp(20px,6vw,28px);line-height:1.15}
.m-table td .k{display:block;font-size:11px;color:var(--ink-soft)}
.m-table td.day{background:var(--accent-soft)}
.m-table td.none .h{color:var(--line)}
.m-table tr.sep td,.m-table tr.sep th{border-top:2px solid var(--line)}
.duo{display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--line);padding-top:16px}
.duo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.duo-card{margin:0;display:flex;flex-direction:column;gap:8px}
.duo-card figcaption{display:flex;flex-direction:column;gap:2px;text-align:center}
.duo-card small{font-size:12px;font-weight:600;color:var(--accent)}
.duo-card b{font-weight:700;font-size:15px;line-height:1.4;text-wrap:balance}
.duo-card .s{font-size:12px;color:var(--ink-soft)}

/* ===== 메인 화면 · 메뉴 · 운세 화면 ===== */
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px;padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top, 0px));background:color-mix(in srgb,var(--ground) 85%,transparent);backdrop-filter:saturate(1.6) blur(12px);-webkit-backdrop-filter:saturate(1.6) blur(12px);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}
.brand{display:flex;align-items:center;gap:8px;color:var(--ink);text-decoration:none;font-size:18px;font-weight:800;letter-spacing:-.03em}
.brand-mark{width:30px;height:30px;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);border-radius:9px}
.brand-mark .ic{width:18px;height:18px;stroke-width:2}
.me-chip{font-size:13px;font-weight:600;color:var(--ink);text-decoration:none;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:5px 12px;white-space:nowrap}
.view{display:flex;flex-direction:column;gap:16px}
.view-head{display:flex;align-items:center;gap:10px}
.view-title{font-size:clamp(24px,6vw,30px)}
.back{display:grid;place-items:center;width:40px;height:40px;flex:none;color:var(--ink);text-decoration:none;font-size:22px;line-height:1;border-radius:12px;background:var(--paper);border:1px solid var(--line)}
.hero{display:flex;flex-direction:column;gap:10px;padding-block:8px 4px}
.ghost.sm{padding:6px 12px;font-size:14px}
.seal.sm{width:52px;height:52px;font-size:26px;border-radius:16px;flex:none}
.profile form{background:none;border:0;box-shadow:none;padding:0}
.form-title{grid-column:1/-1;font-size:19px}
.me-sum{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.me-text{flex:1;min-width:180px}
.me-name{margin:0;font-size:17px;font-weight:700}
.me-sub{margin:0;font-size:13px;color:var(--ink-soft)}
.today-mini{text-decoration:none;color:var(--accent-ink);background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 60%,#E04FB0));border:0;display:grid;grid-template-columns:1fr auto;gap:6px 12px;align-items:center}
.today-mini:hover{filter:brightness(1.05)}
.today-mini .dots i{background:rgba(255,255,255,.3);box-shadow:none}
.today-mini .dots i.on{background:var(--accent-ink)}
.tm-date{font-size:13px;opacity:.85}
.tm-score{display:flex;flex-direction:column;align-items:flex-end;gap:4px;grid-row:span 2}
.tm-score b{font-size:32px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}
.tm-line{font-size:19px;font-weight:700;letter-spacing:-.02em}
.tm-more{grid-column:1/-1;font-size:13px;font-weight:600;opacity:.9}
.menu{display:flex;flex-direction:column;gap:12px}
.menu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:18px 16px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);text-decoration:none;color:var(--ink);transition:border-color .15s,transform .15s}
.tile:hover{border-color:var(--accent);transform:translateY(-2px)}
.tile-ic{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;margin-bottom:10px;color:var(--c);background:color-mix(in srgb,var(--c) 13%,var(--paper))}
.tile-ic.c1{--c:#F08C00} .tile-ic.c2{--c:#2F6FEB} .tile-ic.c3{--c:#E5484D} .tile-ic.c4{--c:#6246EA} .tile-ic.c5{--c:#12A150} .tile-ic.c6{--c:#D6409F}
.tile b{font-size:16px;font-weight:700}
.tile small{font-size:12px;color:var(--ink-soft)}
.date-nav{display:flex;align-items:center;gap:8px}
.date-nav input{flex:1}
.date-nav .ghost{min-width:48px;min-height:48px;font-size:20px;line-height:1}
.day-hero{align-items:center;text-align:center}
.day-ganji{margin:0;color:var(--ink-soft);font-size:14px}
.big-score{display:flex;align-items:baseline;gap:4px;color:var(--ink-soft)}
.big-score b{font-size:64px;font-weight:800;letter-spacing:-.04em;line-height:1;color:var(--accent);font-variant-numeric:tabular-nums}
.day-kw{margin:0;font-size:21px;font-weight:700;letter-spacing:-.02em}
.day-hero p:last-child{margin:0;text-align:left}
.cats{display:flex;flex-direction:column;gap:18px}
.cat p{margin:6px 0 0}
.cat-head{display:grid;grid-template-columns:92px 1fr 30px;align-items:center;gap:10px;font-variant-numeric:tabular-nums}
.cat-bar{height:8px;border-radius:999px;background:var(--sunk);overflow:hidden}
.cat-bar span{display:block;height:100%;background:var(--accent);border-radius:999px}
.cat-num{text-align:right;font-size:14px;font-weight:600;color:var(--ink-soft)}
.year-tabs label{padding:10px 0;font-size:15px}
.samjae{margin:0;background:color-mix(in srgb,var(--fire) 10%,var(--paper));border-radius:12px;padding:12px 14px;font-size:14px}
.month-chart{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:3px;align-items:end;height:150px;border-bottom:1px solid var(--line);padding-top:8px}
.mc-col{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;outline:none}
.mc-bar{width:70%;max-width:24px;background:color-mix(in srgb,var(--accent) 35%,var(--paper));border-radius:6px 6px 0 0}
.mc-col.best .mc-bar{background:var(--accent)}
.mc-col:hover .mc-bar,.mc-col:focus-visible .mc-bar{background:var(--ink)}
.mc-lbl{position:absolute;bottom:-22px;font-size:11px;color:var(--ink-soft);white-space:nowrap}
.month-list{list-style:none;margin:28px 0 0;padding:0;display:flex;flex-direction:column}
.month-list li{display:grid;grid-template-columns:118px auto;gap:4px 12px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}
.ml-when{display:flex;flex-direction:column;line-height:1.35}
.ml-when small{font-size:11px;color:var(--ink-soft)}
.ml-text{grid-column:1/-1;font-size:14px}
.row2{display:grid;grid-template-columns:1fr;gap:16px}
.prose p{margin:0 0 10px}
.prose p:last-child{margin:0}
.saju-table td .tg{display:block;font-size:11px;font-weight:600;color:var(--accent);margin-bottom:2px}
.daeun{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.du{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;border:1px solid transparent;border-radius:14px;background:var(--sunk);text-align:center}
.du.now{border:2px solid var(--accent);background:var(--accent-soft)}
.du-age{font-size:12px;color:var(--ink-soft)}
.du-p{font-size:24px;font-weight:700;line-height:1.1}
.du-tg{font-size:12px;font-weight:600;color:var(--accent)}
.du .dots i{width:8px;height:8px}
.du-text{font-size:12px;color:var(--ink-soft);line-height:1.5}
.sj-out{display:flex;flex-direction:column;gap:14px;border-top:1px solid var(--line);padding-top:16px}

/* ===== 반응형 ===== */
/* 좁은 휴대폰 */
@media (max-width:420px){
  form{grid-template-columns:1fr}
  .attrs,.half{grid-template-columns:1fr;gap:2px}
  .attrs dd,.half dd{margin-bottom:8px}
  .panel{padding:16px}
}
@media (max-width:380px){
  .wrap{padding-inline:12px}
  form,.card{padding:18px 14px}
  .pl .ch .h{font-size:24px}
}
/* 태블릿 이상 */
@media (min-width:720px){
  .wrap{max-width:780px}
  .ai-out{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:28px;align-items:start}
  .ai-left{position:sticky;top:76px}
  .ai-card{text-align:left;align-items:flex-start}
  .ai-card .chips{justify-content:flex-start}
  .duo-grid{gap:20px}
  .half{grid-template-columns:128px minmax(0,1fr)}
  .attrs{grid-template-columns:110px minmax(0,1fr)}
  .menu-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .daeun{grid-template-columns:repeat(4,minmax(0,1fr))}
}
/* PC */
@media (min-width:1000px){
  .wrap{max-width:980px;padding-inline:32px}
  .topbar{padding-inline:max(32px,calc((100vw - 980px)/2 + 32px))}
  .row2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hero h1{font-size:48px}
  .daeun{grid-template-columns:repeat(8,minmax(0,1fr))}
  .du-text{display:none}
}
@media (hover:hover){.ghost:hover{background:var(--sunk)}}
@media (prefers-reduced-motion:reduce){.skel{animation:none}.bar .fl,.tile,.btn{transition:none}}

/* ===== 새 메뉴 (띠별 · 별자리 · 타로 · 번호 · 토정비결 · 좋은 날 · AI) ===== */
.tile{position:relative}
.badge{position:absolute;top:12px;right:12px;font-style:normal;font-size:11px;font-weight:800;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:2px 8px}
textarea{font:inherit;font-size:16px;color:var(--ink);background:var(--sunk);border:1px solid transparent;border-radius:12px;padding:12px;width:100%;resize:vertical;min-height:110px;line-height:1.6}
textarea:focus{border-color:var(--accent);background:var(--paper);outline:none}
.chips-left{display:flex;gap:6px;flex-wrap:wrap;margin:0;justify-content:flex-start}
.chips-left span{font-size:13px;font-weight:600;background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:3px 12px}
.me-tag{font-style:normal;font-size:11px;font-weight:700;color:var(--accent-ink);background:var(--accent);border-radius:999px;padding:1px 8px;margin-left:6px;vertical-align:2px}

/* 띠별 */
.tti-list{display:flex;flex-direction:column;gap:10px}
.tti{padding:0;gap:0}
.tti summary{list-style:none;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:16px 18px;cursor:pointer}
.tti summary::-webkit-details-marker{display:none}
.tti-emoji{font-size:30px;width:48px;height:48px;display:grid;place-items:center;background:var(--sunk);border-radius:14px}
.tti-name{display:flex;flex-direction:column;line-height:1.35}
.tti-name b{font-size:16px}
.tti-name small{font-size:12px;color:var(--ink-soft)}
.tti-score{font-size:24px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.tti-score small{font-size:12px;color:var(--ink-soft);font-weight:500;margin-left:1px}
.tti[open] summary{border-bottom:1px solid var(--line)}
.tti>p{margin:0;padding:12px 18px 0}
.tti-trait{font-size:13px;color:var(--ink-soft)}
.tti-years{list-style:none;margin:12px 0 0;padding:4px 18px 16px;display:flex;flex-direction:column;gap:6px}
.tti-years li{display:grid;grid-template-columns:62px 1fr;gap:8px;font-size:14px}
.tti-years b{color:var(--accent);font-variant-numeric:tabular-nums}

/* 별자리 */
.sign-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.sign{display:flex;flex-direction:column;align-items:center;gap:0;padding:8px 2px;background:var(--paper);border:1px solid var(--line);border-radius:14px;cursor:pointer;font-size:12px;font-weight:600;color:var(--ink-soft)}
.sign input{position:absolute;opacity:0;width:1px;height:1px;min-height:0}
.sign .sg{font-size:20px;line-height:1.3;color:var(--ink)}
.sign.mine{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.sign:has(input:checked){background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.sign:has(input:checked) .sg{color:var(--accent-ink)}
.sign:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}
.star-head{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px}
.star-glyph{width:56px;height:56px;display:grid;place-items:center;font-size:30px;border-radius:18px;background:var(--accent-soft);color:var(--accent)}
.star-head .meta{margin-top:2px}
.star-score{display:flex;align-items:baseline;gap:2px;color:var(--ink-soft)}
.star-score b{font-size:36px;font-weight:800;color:var(--accent);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
#star-total{margin:0}

/* 타로 */
.deck{display:flex;justify-content:center;padding:26px 0 12px;min-height:170px}
.card-back{width:74px;height:118px;margin:0 -14px;border:0;border-radius:12px;cursor:pointer;color:rgba(255,255,255,.85);font-size:22px;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.18) 0 18px,transparent 19px),repeating-linear-gradient(45deg,rgba(255,255,255,.08) 0 6px,transparent 6px 12px),linear-gradient(160deg,#6246EA,#2B1A7A);box-shadow:0 6px 16px rgba(40,20,120,.25),inset 0 0 0 3px rgba(255,255,255,.2);transform:rotate(calc(var(--i) * 6deg)) translateY(calc(var(--i) * var(--i) * 3px));transition:transform .2s}
.card-back:hover,.card-back:focus-visible{transform:rotate(calc(var(--i) * 6deg)) translateY(-14px);z-index:1}
.tarot-result{display:grid;grid-template-columns:1fr;gap:20px;justify-items:center}
.tarot-card{width:160px;aspect-ratio:3/5;border-radius:16px;background:linear-gradient(170deg,#FFF8E7,#F5E6C4);border:6px solid #fff;box-shadow:0 10px 30px rgba(16,24,40,.18),inset 0 0 0 1px #E3CD97;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:12px 8px;color:#5B4312}
.tc-n{font-weight:700;font-size:14px;letter-spacing:.08em}
.tc-ic{font-size:64px;line-height:1}
.tc-en{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;text-align:center}
.tarot-text{display:flex;flex-direction:column;gap:12px;width:100%}
.tarot-text p{margin:0}
.flip-in .tarot-card{animation:flipIn .6s ease}
@keyframes flipIn{from{transform:rotateY(90deg) scale(.9)}to{transform:none}}

/* 행운의 번호 */
.lotto-sets{display:flex;flex-direction:column;gap:12px}
.lotto-row{display:grid;grid-template-columns:30px 1fr;gap:4px 10px;align-items:center}
.lotto-row small{grid-column:2;font-size:12px;color:var(--ink-soft)}
.lr-label{font-weight:800;color:var(--ink-soft);font-size:14px}
.balls{display:flex;gap:6px;flex-wrap:wrap}
.ball{font-style:normal;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:15px;color:#fff;box-shadow:inset -3px -4px 8px rgba(0,0,0,.18);font-variant-numeric:tabular-nums}
.ball.b1{background:#F2B705;color:#3A2A00} .ball.b2{background:#3B82F6} .ball.b3{background:#EF4444} .ball.b4{background:#8A8F9C} .ball.b5{background:#22A559}

/* 토정비결 */
.tj-title{font-size:21px;line-height:1.45}
.tj-months{margin-top:0}

/* 좋은 날 찾기 · 상담 분야 */
.purpose{display:flex;flex-wrap:wrap;gap:8px}
.pill{cursor:pointer}
.pill input{position:absolute;opacity:0;width:1px;height:1px;min-height:0}
.pill span{display:inline-block;padding:8px 14px;border-radius:999px;background:var(--sunk);color:var(--ink);font-size:14px;font-weight:600;border:1px solid transparent}
.pill input:checked+span{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.pill input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}
.tk-top{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.tk-top li{display:grid;grid-template-columns:28px 1fr auto;gap:2px 12px;align-items:center;padding:12px;border-radius:14px;background:var(--sunk)}
.tk-top li.best{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}
.tk-top li.empty{display:block;color:var(--ink-soft)}
.tk-rank{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--paper);font-weight:800;font-size:13px;grid-row:1 / span 2;align-self:center}
.tk-date{display:flex;flex-direction:column;line-height:1.35}
.tk-date small{font-size:12px;color:var(--ink-soft)}
.tk-score{font-size:22px;font-weight:800;color:var(--accent);grid-row:1 / span 2;grid-column:3;align-self:center;font-variant-numeric:tabular-nums}
.tk-why{grid-column:2;font-size:12px;color:var(--ink-soft)}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center}
.cal-h{font-size:12px;color:var(--ink-soft);padding:4px 0}
.cal-d{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:10px;padding:6px 0;line-height:1.2;font-variant-numeric:tabular-nums}
.cal-d b{font-size:14px}
.cal-d small{font-size:10px;opacity:.8}
.cal-d.lv1{background:var(--sunk)}
.cal-d.lv2{background:color-mix(in srgb,var(--accent) 14%,var(--paper))}
.cal-d.lv3{background:color-mix(in srgb,var(--accent) 32%,var(--paper))}
.cal-d.lv4{background:var(--accent);color:var(--accent-ink)}
.cal-d.top{box-shadow:inset 0 0 0 2px var(--ink)}
.cal-d.past{opacity:.35}

/* AI 결과 */
.verdict{align-self:flex-start;font-size:14px;font-weight:700;border-radius:999px;padding:5px 14px}
.verdict.good{background:color-mix(in srgb,var(--wood) 14%,var(--paper));color:var(--wood)}
.verdict.bad{background:color-mix(in srgb,var(--water) 14%,var(--paper));color:var(--water)}
.verdict.plain{background:var(--sunk);color:var(--ink-soft)}
.tips{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px}
#dr-summary,#ask-q{margin:0}

@media (min-width:720px){
  .menu-grid.grid4{grid-template-columns:repeat(4,minmax(0,1fr))}
  .sign-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
  .tarot-result{grid-template-columns:180px 1fr;justify-items:start;align-items:start}
  .tti-years{display:grid;grid-template-columns:1fr 1fr;column-gap:24px}
  .cal-d{padding:10px 0}
}
@media (max-width:380px){
  .ball{width:34px;height:34px;font-size:14px}
  .card-back{width:62px;height:100px}
}
@media (prefers-reduced-motion:reduce){.flip-in .tarot-card{animation:none}.card-back{transition:none}}

/* ===== 사주 MBTI ===== */
.menu-grid.grid5>.tile:last-child:nth-child(odd){grid-column:1/-1}
.mb-hero{align-items:flex-start}
.mb-type{display:flex;gap:6px}
.mb-l{width:52px;height:60px;display:grid;place-items:center;border-radius:14px;font-size:30px;font-weight:800;color:#fff}
.mb-l.l0{background:#6246EA} .mb-l.l1{background:#0EA5A4} .mb-l.l2{background:#E5484D} .mb-l.l3{background:#F08C00}
.mb-hero h2{font-size:21px}
.mb-hero .meta{margin-top:-8px}
.mb-hero p{margin:0}
.mb-axes{display:flex;flex-direction:column;gap:18px}
.mb-axis p{margin:6px 0 0;font-size:14px;color:var(--ink-soft)}
.mb-axis .mb-basis{margin-top:4px;font-size:12px;line-height:1.6;color:color-mix(in srgb,var(--ink-soft) 80%,var(--paper))}
.mb-ends{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--ink-soft);font-variant-numeric:tabular-nums}
.mb-ends b{font-weight:600}
.mb-ends b.on{color:var(--ink);font-weight:800}
/* 가운데를 기준으로 양쪽이 각각 100% */
.mb-bar{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:6px}
.mb-bar::after{content:"";position:absolute;left:50%;top:-4px;bottom:-4px;width:2px;margin-left:-1px;background:var(--ink-soft);border-radius:1px}
.mb-half{display:flex;height:12px;background:var(--sunk);overflow:hidden}
.mb-half.l{justify-content:flex-end;border-radius:999px 0 0 999px}
.mb-half.r{justify-content:flex-start;border-radius:0 999px 999px 0}
.mb-half i{display:block;height:100%;background:color-mix(in srgb,var(--accent) 30%,var(--paper))}
.mb-half i.on{background:var(--accent)}
.mb-half.l i{border-radius:999px 0 0 999px}
.mb-half.r i{border-radius:0 999px 999px 0}
.mb-pick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.mb-chip{cursor:pointer}
.mb-chip input{position:absolute;opacity:0;width:1px;height:1px;min-height:0}
.mb-chip span{display:block;text-align:center;padding:9px 0;border-radius:12px;background:var(--sunk);font-weight:700;font-size:14px;letter-spacing:.02em;border:1px solid transparent}
.mb-chip.none{grid-column:1/-1}
.mb-chip input:checked+span{background:var(--accent);color:var(--accent-ink)}
.mb-chip input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}
.mb-compare{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--line);padding-top:16px}
.mb-compare p{margin:0}
.mb-cmp-head{font-size:17px}
.mb-same{color:var(--accent);font-weight:800}
@media (min-width:720px){
  .menu-grid.grid5{grid-template-columns:repeat(3,minmax(0,1fr))}
  .menu-grid.grid5>.tile:last-child:nth-child(odd){grid-column:auto}
  .mb-pick{grid-template-columns:repeat(8,minmax(0,1fr))}
}
@media (min-width:1000px){.menu-grid.grid5{grid-template-columns:repeat(5,minmax(0,1fr))}}

/* ===== 가족·친구 ===== */
.actions.full{grid-column:1/-1}
.btn.sm{grid-column:auto;font-size:14px;padding:9px 16px;border-radius:12px;text-decoration:none;display:inline-block}
.ghost.danger{color:var(--fire)}
.pp-avatar{width:44px;height:44px;flex:none;display:grid;place-items:center;font-size:22px;background:var(--sunk);border-radius:14px}
.pp-strip{display:flex;flex-direction:column;gap:10px}
.strip-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.strip-head a{font-size:13px;font-weight:600;color:var(--accent);text-decoration:none}
.strip{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 8px;margin:0 -2px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.pp-chip{flex:none;width:150px;scroll-snap-align:start;display:flex;flex-direction:column;gap:2px;padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);text-decoration:none;color:var(--ink)}
.pp-chip .pp-avatar{margin-bottom:6px}
.pp-chip b{font-size:15px}
.pp-chip small{font-size:12px;color:var(--ink-soft);line-height:1.4}
.pp-chip-score{font-size:22px;font-weight:800;color:var(--accent);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.pp-chip.add{border-style:dashed;box-shadow:none;background:transparent}
.pp-chip.add .pp-avatar{color:var(--accent);background:var(--accent-soft);font-weight:800}
.pp-chip:hover{border-color:var(--accent)}
.pp-list{display:flex;flex-direction:column;gap:10px}
.pp-empty{color:var(--ink-soft);margin:0}
.person{padding:0;gap:0}
.person summary{list-style:none;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:16px 18px;cursor:pointer}
.person summary::-webkit-details-marker{display:none}
.person[open] summary{border-bottom:1px solid var(--line)}
.pp-name{display:flex;flex-direction:column;line-height:1.35;min-width:0}
.pp-name b{font-size:16px}
.pp-name small{font-size:12px;color:var(--ink-soft)}
.pp-score{display:flex;flex-direction:column;align-items:flex-end;line-height:1.1}
.pp-score b{font-size:24px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.pp-score small{font-size:11px;color:var(--ink-soft)}
.pp-body{display:flex;flex-direction:column;gap:12px;padding:14px 18px 18px}
.pp-body p{margin:0}
.pp-kw{font-size:17px;font-weight:700}
.pp-body .cat p{display:none}
.pp-body .cats{gap:8px}
.pp-match{display:flex;align-items:baseline;gap:10px;padding:12px 14px;border-radius:12px;background:var(--accent-soft)}
.pp-match span{font-size:13px;color:var(--ink-soft)}
.pp-match b{font-size:20px;color:var(--accent)}
.pp-match em{font-style:normal;font-weight:600}
.m-saved{display:flex;flex-direction:column;gap:8px}
.pill-btn{font:inherit;font-size:14px;font-weight:600;padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer}
.pill-btn:hover{border-color:var(--accent);color:var(--accent)}

/* ===== 이어서 보면 좋아요 ===== */
.next{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.next h2{font-size:17px}
.next-list{display:grid;grid-template-columns:1fr;gap:8px}
.next-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;background:var(--paper);border:1px solid var(--line);border-radius:16px;text-decoration:none;color:var(--ink);transition:border-color .15s}
.next-item:hover{border-color:var(--accent)}
.next-item .tile-ic{margin:0;width:40px;height:40px;border-radius:12px}
.next-text{display:flex;flex-direction:column;min-width:0;line-height:1.4}
.next-text b{font-size:15px}
.next-text small{font-size:12px;color:var(--ink-soft)}
.next-go{font-size:22px;color:var(--ink-soft)}
.badge-inline{font-style:normal;font-size:10px;font-weight:800;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:1px 6px;vertical-align:2px}

/* ===== 사주 용어 ===== */
.term{font:inherit;color:inherit;background:none;border:0;padding:0;margin:0;cursor:help;text-decoration:underline dotted color-mix(in srgb,var(--accent) 70%,transparent);text-decoration-thickness:2px;text-underline-offset:3px}
.term:hover{color:var(--accent)}
.term-dlg{border:0;padding:0;border-radius:20px;max-width:min(420px,calc(100vw - 32px));width:100%;background:var(--paper);color:var(--ink);box-shadow:0 20px 60px rgba(0,0,0,.25)}
.term-dlg::backdrop{background:rgba(15,17,21,.45)}
.term-box{padding:22px 20px;display:flex;flex-direction:column;gap:10px}
.term-box h3{font-size:20px;font-weight:800;color:var(--ink)}
.term-box p{margin:0;line-height:1.75}

@media (min-width:720px){
  .next-list{grid-template-columns:repeat(3,minmax(0,1fr))}
  .next-item{grid-template-columns:auto 1fr}
  .next-go{display:none}
}

/* ===== 오행 관계도 · 두 사람의 오행 ===== */
.oh-wrap{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}
.oh-fig{margin:0;display:flex;flex-direction:column;align-items:center;gap:6px}
.oh-svg{width:100%;max-width:300px;height:auto;display:block}
.oh-gen{stroke:var(--ink-soft);stroke-width:1.6}
.oh-ctrl{stroke:var(--line);stroke-width:1.4;stroke-dasharray:4 4}
.oh-arh{fill:var(--ink-soft)} .oh-arh2{fill:color-mix(in srgb,var(--ink-soft) 55%,var(--paper))}
.oh-c{stroke:var(--paper);stroke-width:3}
.oh-c.e0{fill:var(--wood)} .oh-c.e1{fill:var(--fire)} .oh-c.e2{fill:var(--earth)} .oh-c.e3{fill:var(--metal)} .oh-c.e4{fill:var(--water)}
.oh-node.zero .oh-c{fill:var(--sunk);stroke:var(--line);stroke-width:1.5;stroke-dasharray:3 3}
.oh-h,.oh-n,.oh-tag{text-anchor:middle;font-family:inherit}
.oh-h{font-size:15px;font-weight:800;fill:#fff}
.oh-n{font-size:11px;font-weight:700;fill:rgba(255,255,255,.9)}
.oh-node.zero .oh-h,.oh-node.zero .oh-n{fill:var(--ink-soft)}
.oh-yong{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-dasharray:5 3}
.oh-tag{font-size:11px;font-weight:800;fill:var(--accent)}
.oh-legend{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;font-size:12px;color:var(--ink-soft)}
.oh-legend i{display:inline-block;width:18px;height:0;vertical-align:middle;margin-right:5px;border-top:2px solid var(--ink-soft)}
.oh-legend i.lg-ctrl{border-top:2px dashed var(--line)}
.oh-side{display:flex;flex-direction:column;gap:14px}
.oh-side .prose p{font-size:14px}
.oh-fill{background:var(--sunk);border-radius:14px;padding:14px 16px}
.oh-fill .attrs{border-top:0;padding-top:8px}
.oh-duo{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--line);padding-top:16px}
.ohd{display:flex;flex-direction:column;gap:8px}
.ohd-head,.ohd-row{display:grid;grid-template-columns:1fr 64px 1fr;align-items:center;gap:8px}
.ohd-head{font-size:12px;font-weight:700;color:var(--ink-soft)}
.ohd-head span:first-child{text-align:right}
.ohd-side{display:flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}
.ohd-side b{width:14px;text-align:center;font-size:13px}
.ohd-bar{flex:1;height:10px;background:var(--sunk);overflow:hidden;display:flex}
.ohd-side.l .ohd-bar{justify-content:flex-end;border-radius:999px 0 0 999px}
.ohd-side.r .ohd-bar{border-radius:0 999px 999px 0}
.ohd-bar i{display:block;height:100%}
.ohd-side.l .ohd-bar i{border-radius:999px 0 0 999px}
.ohd-side.r .ohd-bar i{border-radius:0 999px 999px 0}
.ohd-el{text-align:center;font-size:13px;font-weight:700}
.oh-duo .prose p{font-size:14px}
@media (min-width:720px){.oh-wrap{grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:24px}}

/* ===== 나의 오행 캐릭터 ===== */
.bgs-0{background:color-mix(in srgb,var(--wood) 16%,var(--paper))} .bgs-1{background:color-mix(in srgb,var(--fire) 16%,var(--paper))}
.bgs-2{background:color-mix(in srgb,var(--earth) 18%,var(--paper))} .bgs-3{background:color-mix(in srgb,var(--metal) 18%,var(--paper))}
.bgs-4{background:color-mix(in srgb,var(--water) 16%,var(--paper))}
.oh-hero{align-items:flex-start}
.oh-hero p{margin:0}
.oh-hero .meta{margin-top:-8px}
.oh-emoji{width:88px;height:88px;border-radius:28px;display:grid;place-items:center;font-size:48px;line-height:1}
.oh-hero h2{font-size:23px}
.oh-hero .bars{width:100%}
.oh-match{display:grid;grid-template-columns:1fr;gap:8px}
.oh-mcard{display:grid;grid-template-columns:auto 1fr;gap:0 12px;align-items:center;padding:12px 14px;border-radius:14px;background:var(--sunk)}
.oh-mcard .oh-mic{grid-row:span 2;font-size:28px}
.oh-mcard b{font-size:15px}
.oh-mcard small{font-size:13px;color:var(--ink-soft);line-height:1.5}
.oh-mcard.good b::after{content:" · 잘 맞아요";color:var(--wood);font-size:12px;font-weight:700}
.oh-mcard.bad b::after{content:" · 부딪혀요";color:var(--fire);font-size:12px;font-weight:700}
.oh-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.oh-pcard{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;padding:14px 8px;border-radius:16px;border:1px solid var(--line);background:var(--paper);text-decoration:none;color:var(--ink)}
.oh-pic{width:52px;height:52px;border-radius:18px;display:grid;place-items:center;font-size:28px;margin-bottom:4px;background:var(--sunk)}
.oh-pcard b{font-size:15px}
.oh-pcard small{font-size:12px;color:var(--ink-soft)}
.oh-pcard em{font-style:normal;font-size:12px;font-weight:700;margin-top:4px;padding:2px 8px;border-radius:999px}
.oh-pcard .rel-me{background:var(--accent);color:var(--accent-ink)}
.oh-pcard .rel-same{background:var(--sunk);color:var(--ink-soft)}
.oh-pcard .rel-gen{background:color-mix(in srgb,var(--wood) 14%,var(--paper));color:var(--wood)}
.oh-pcard .rel-ctrl{background:color-mix(in srgb,var(--fire) 12%,var(--paper));color:var(--fire)}
.oh-pcard.add{border-style:dashed}
.oh-pcard.add .oh-pic{color:var(--accent);background:var(--accent-soft);font-weight:800}
#oh-map-note{margin:0}
.oh-lock{position:relative;filter:blur(4px);opacity:.75;user-select:none;pointer-events:none}
.oh-lock::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent,var(--paper))}
.wp-out{display:flex;flex-direction:column;align-items:center;gap:12px}
.wp-frame{width:100%;max-width:280px;margin:0}
@media (min-width:720px){
  .oh-match{grid-template-columns:repeat(3,minmax(0,1fr))}
  .oh-mcard{grid-template-columns:1fr;text-align:center;justify-items:center;gap:4px}
  .oh-mcard .oh-mic{grid-row:auto}
  .oh-map{grid-template-columns:repeat(4,minmax(0,1fr))}
}
#oh-r-guide{list-style:none;padding-left:0}

/* ===== 일주 캐릭터 그림 ===== */
.ilju-wrap{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}
.ilju-fig{margin:0;display:flex;flex-direction:column;align-items:center;gap:6px}
.ilju-art{position:relative;width:148px;aspect-ratio:1;border-radius:32px;overflow:hidden;display:grid;place-items:center}
.ilju-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ilju-ph{font-size:64px;line-height:1}
.ilju-ph.loading{animation:bob 1.2s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-6px)}}
.ilju-fig figcaption{font-size:13px;font-weight:700;color:var(--ink-soft)}
@media (min-width:720px){.ilju-wrap{grid-template-columns:minmax(0,1fr) 160px}.ilju-fig{order:2}}
@media (prefers-reduced-motion:reduce){.ilju-ph.loading{animation:none}}

/* ===== 공유 줄 ===== */
.share-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.actions:has(.share-bar){flex-direction:column;align-items:flex-start;gap:8px}
@media (min-width:720px){.actions:has(.share-bar){flex-direction:row;align-items:center}}

/* ===== 새 콘텐츠 묶음 (달력 · 출석 · 코디 · 연애 · 이름 궁합 · 초대장 · 작명 · 일주 사전) ===== */
.stack{display:flex;flex-direction:column;gap:16px}
.mo-label{flex:1;text-align:center;font-size:17px;font-weight:800}
.mo-sum{grid-template-columns:1fr}
.mo-sum a{color:var(--accent);font-weight:700;text-decoration:none;margin-right:6px}
#mo-kw{margin:0}
a.cal-d{text-decoration:none;color:inherit;position:relative}
.cal-d.today{outline:2px solid var(--ink);outline-offset:1px}
.cal-d .att{position:absolute;top:1px;right:3px;font-style:normal;font-size:10px;font-weight:800;color:var(--wood)}
.cal-d.lv4 .att{color:var(--accent-ink)}
.tm-streak{grid-column:1/-1;justify-self:start;font-size:12px;font-weight:700;background:rgba(255,255,255,.2);border-radius:999px;padding:2px 10px}
.at-row{display:flex;align-items:center;gap:16px}
.at-big{display:flex;align-items:baseline;gap:4px}
.at-big b{font-size:48px;font-weight:800;color:var(--accent);line-height:1;font-variant-numeric:tabular-nums}
.at-big small{font-size:14px;color:var(--ink-soft)}
#at-month{margin:0}
.at-badges{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.badge-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 2px;border-radius:14px;background:var(--sunk);filter:grayscale(1);opacity:.45;text-align:center}
.badge-item i{font-style:normal;font-size:24px}
.badge-item small{font-size:11px;color:var(--ink-soft)}
.badge-item.on{filter:none;opacity:1;background:var(--accent-soft)}
.co-top{display:grid;grid-template-columns:1fr;gap:16px;align-items:center}
.co-lookwrap{width:100%;max-width:260px;margin:0 auto;display:flex;flex-direction:column;gap:8px}
.co-style{display:flex;align-items:center;justify-content:space-between;gap:8px}
.co-style small{color:var(--ink-soft);font-size:12px}
.co-top .co-palette{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.co-top .sw{grid-template-columns:1fr;grid-template-rows:auto;justify-items:center;text-align:center;row-gap:4px}
.co-top .sw-c{grid-row:auto}
.co-look{position:relative;aspect-ratio:2/3;width:100%;border-radius:20px;overflow:hidden;background:var(--sunk);display:flex;align-items:center;justify-content:center}
.co-look .co-fig{width:auto;height:70%}
.co-img{width:100%;height:100%;object-fit:cover;display:block;animation:coIn .4s ease}
@keyframes coIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
.co-wait{position:absolute;left:0;right:0;bottom:8px;text-align:center;font-size:11px;color:var(--ink-soft)}
.co-look.loading .co-fig{animation:coPulse 1.4s ease-in-out infinite}
@keyframes coPulse{50%{opacity:.45}}
@media (min-width:700px){.co-top{grid-template-columns:300px 1fr}.co-lookwrap{margin:0}.co-top .co-palette{grid-template-columns:1fr}.co-top .sw{grid-template-columns:36px 1fr;justify-items:start;text-align:left;row-gap:0}.co-top .sw-c{grid-row:span 2}}
.co-palette{display:flex;flex-direction:column;gap:8px}
.sw{display:grid;grid-template-columns:36px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center}
.sw-c{grid-row:span 2;width:36px;height:36px;border-radius:12px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
.sw small{font-size:11px;color:var(--ink-soft)}
.sw b{font-size:15px}
.sw.avoid .sw-c{background-image:linear-gradient(135deg,transparent 45%,var(--fire) 45% 55%,transparent 55%)!important}
.sw.avoid b{text-decoration:line-through;color:var(--ink-soft)}
#co-msg,#lv-desc,#lv-ideal{margin:0}
.lv-match{grid-template-columns:1fr}
.lv-year{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:center;padding:14px;border-radius:14px;background:var(--sunk)}
.lv-year span:last-child{grid-column:1/-1;font-size:14px;color:var(--ink-soft)}
.nm-out{display:grid;grid-template-columns:1fr;gap:16px}
.nm-res{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:18px 12px;border-radius:18px;background:var(--sunk)}
.nm-res p{margin:0}
.nm-order{font-size:13px;font-weight:700;color:var(--ink-soft)}
.nm-pct{font-size:56px;font-weight:800;color:var(--accent);line-height:1.1;letter-spacing:-.03em}
.nm-pct small{font-size:24px}
.nm-kw{font-size:17px;font-weight:700}
.nm-t{font-size:14px;color:var(--ink-soft)}
.nm-pyr{display:flex;flex-direction:column;align-items:center;gap:3px;margin-top:10px}
.nm-row{display:flex;gap:4px}
.nm-row span{width:24px;height:24px;display:grid;place-items:center;border-radius:7px;background:var(--paper);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.nm-row.names span{background:var(--accent-soft);color:var(--accent)}
.nm-row:last-child span{background:var(--accent);color:var(--accent-ink)}
.iv-card{border:2px dashed color-mix(in srgb,var(--accent) 45%,var(--line));box-shadow:none}
.mr{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--line);padding-top:16px}
.mr-h{font-size:16px;color:var(--ink)}
.nmg-chips{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.nmg-syl{display:flex;flex-direction:column;align-items:center;padding:10px 14px;border-radius:16px}
.nmg-syl b{font-size:26px;line-height:1.2}
.nmg-syl small{font-size:12px;font-weight:700}
.nmg-link{font-style:normal;font-size:18px;color:var(--ink-soft)}
.nmg-link.ctrl{color:var(--fire)}
.nb-names{display:grid;grid-template-columns:1fr;gap:10px}
.nb-name{padding:14px 16px;border-radius:16px;background:var(--sunk);display:flex;flex-direction:column;gap:4px}
.nb-name p{margin:0}
.nb-h{display:flex;align-items:baseline;gap:10px}
.nb-h b{font-size:22px}
.nb-h .hanja{font-size:17px;color:var(--ink-soft)}
.nb-els{font-size:12px;font-weight:700}
.nb-m{font-size:14px}
.nb-f{font-size:13px;color:var(--ink-soft)}
.dict-tabs label{font-size:14px}
.dict-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.dict-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:14px 6px;border-radius:16px;text-decoration:none;color:var(--ink);border:1px solid transparent;text-align:center}
.dict-item:hover{border-color:var(--accent)}
.dict-item.mine{border:2px solid var(--accent)}
.di-emoji{font-size:26px}
.dict-item b{font-size:24px;line-height:1.2}
.dict-item small{font-size:12px;color:var(--ink-soft)}
.dict-item .me-tag{position:absolute;top:6px;right:6px;margin:0}
.dj-head{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:center}
.dj-head .ilju-art{width:112px;border-radius:26px}
.dj-head .ilju-ph{font-size:52px}
.dj-head h2{font-size:22px}
.dj-head .meta{margin-top:4px}
.dj-rels{display:grid;grid-template-columns:1fr;gap:8px}
.dj-rel{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;text-decoration:none;color:var(--ink);background:var(--sunk)}
.dj-rel span{font-size:24px}
.dj-rel b{font-size:20px}
.dj-rel small{font-size:13px;color:var(--ink-soft)}
.dj-rel.good{background:color-mix(in srgb,var(--wood) 12%,var(--paper))}
.dj-rel.bad{background:color-mix(in srgb,var(--fire) 10%,var(--paper))}
#dj-next{margin:0}
.dj-nav{display:flex;justify-content:space-between;gap:8px}
@media (min-width:720px){
  .dict-list{grid-template-columns:repeat(4,minmax(0,1fr))}
  .nm-out{grid-template-columns:1fr 1fr}
  .nb-names{grid-template-columns:1fr 1fr}
  .dj-rels{grid-template-columns:1fr 1fr}
  .lv-match{grid-template-columns:1fr 1fr}
  .mo-sum{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (min-width:1000px){.dict-list{grid-template-columns:repeat(6,minmax(0,1fr))}}
/* 3칸 메뉴: 휴대폰은 2칸 + 마지막 칸 가로 전체, 태블릿·PC는 3칸 */
.menu-grid.grid3>.tile:last-child:nth-child(odd){grid-column:1/-1}
@media (min-width:720px){.menu-grid.grid3{grid-template-columns:repeat(3,minmax(0,1fr))}.menu-grid.grid3>.tile:last-child:nth-child(odd){grid-column:auto}}

/* ===== 밸런스 게임 · 심리테스트 ===== */
.bg-play{gap:14px}
.bg-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.bg-step{font-size:13px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.bg-prog{height:8px;border-radius:999px;background:var(--sunk);overflow:hidden}
.bg-prog span{display:block;height:100%;width:0;background:var(--accent);border-radius:999px;transition:width .3s ease}
.bg-card{display:flex;flex-direction:column;gap:18px}
.bg-in{animation:bgIn .35s ease}
@keyframes bgIn{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
.bg-q{font-size:22px;text-align:center;line-height:1.4;padding:6px 0}
.bg-opts{display:grid;grid-template-columns:1fr;gap:10px;align-items:center}
.bg-or{justify-self:center;font-size:13px;font-weight:800;color:var(--ink-soft);background:var(--sunk);border-radius:999px;padding:4px 12px}
.bg-opt{font:inherit;display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 16px;border-radius:20px;border:2px solid transparent;cursor:pointer;color:var(--ink);transition:transform .12s,border-color .15s}
.bg-opt.a{background:color-mix(in srgb,#2F6FEB 10%,var(--paper))}
.bg-opt.b{background:color-mix(in srgb,#E5484D 10%,var(--paper))}
.bg-opt:hover{border-color:var(--accent)}
.bg-opt:active{transform:scale(.98)}
.bg-ic{font-size:42px;line-height:1}
.bg-opt b{font-size:17px;line-height:1.4}
.bg-cmp{display:flex;flex-direction:column;gap:10px}
.bg-cmp p{margin:0}
.bg-vs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;text-align:center}
.bg-vs div{display:flex;flex-direction:column;align-items:center;gap:4px}
.bg-vs small{font-size:12px;color:var(--ink-soft)}
.bg-vs-ic{width:64px;height:64px;border-radius:22px;display:grid;place-items:center;font-size:34px}
.bg-vs i{font-style:normal;font-weight:800;color:var(--ink-soft)}
.bg-cmp-kw{font-size:19px;font-weight:800;color:var(--accent);text-align:center}
.bg-cmp-need{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.bg-cmp-need p{margin:0}
.ps-list{display:flex;flex-direction:column;gap:10px}
.ps-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:16px;border-radius:var(--radius);background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);text-decoration:none;color:var(--ink)}
.ps-item:hover{border-color:var(--c)}
.ps-ic{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-size:28px;background:color-mix(in srgb,var(--c) 14%,var(--paper))}
.ps-text{display:flex;flex-direction:column;line-height:1.4}
.ps-text b{font-size:16px}
.ps-text small{font-size:13px;color:var(--ink-soft)}
.ps-opts{display:flex;flex-direction:column;gap:8px}
.ps-opt{font:inherit;display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:16px;border:2px solid transparent;background:var(--sunk);color:var(--ink);cursor:pointer;text-align:left}
.ps-opt span{font-size:24px}
.ps-opt b{font-size:16px;font-weight:600}
.ps-opt:hover{border-color:var(--accent);background:var(--accent-soft)}
#ps-r-desc,#bg-desc,#bg-good{margin:0}
@media (min-width:720px){
  .bg-opts{grid-template-columns:1fr auto 1fr}
  .bg-opt{padding:32px 16px}
  .ps-list{display:grid;grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){.bg-in{animation:none}.bg-prog span{transition:none}}
a.pill-btn{text-decoration:none;display:inline-block}

/* ===== 일주 색 입힌 동물 이모지 (푸른·붉은·누런·흰·검은) ===== */
.tint-0{filter:sepia(1) saturate(5) hue-rotate(95deg) brightness(.95)}
.tint-1{filter:sepia(1) saturate(9) hue-rotate(-55deg) brightness(.9)}
.tint-2{filter:sepia(1) saturate(3.2) hue-rotate(-8deg) brightness(.95)}
.tint-3{filter:grayscale(1) brightness(1.35) contrast(.85)}
.tint-4{filter:grayscale(1) brightness(.5) contrast(1.3)}
.di-emoji{display:inline-block}
.di-bubble{width:52px;height:52px;border-radius:50%;background:var(--paper);display:grid;place-items:center;box-shadow:0 1px 3px rgba(16,24,40,.08)}
.di-bubble .di-emoji{font-size:30px;line-height:1}
#ps-invite{align-self:flex-start}
#bg-invite{align-self:flex-start}

.bar.bar-wide{grid-template-columns:minmax(96px,40%) 1fr 34px}
.bar.bar-wide .nm{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.co-levels{margin:0 0 12px}
.co-tip{display:inline-block;margin-top:6px;padding:1px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,var(--paper));color:var(--accent);font-size:13px}
.co-img.dim{opacity:.35;filter:blur(2px);transition:opacity .2s,filter .2s}
.co-wait.on{top:50%;bottom:auto;transform:translateY(-50%);font-size:13px;font-weight:700;color:var(--ink)}
#co-restyle{white-space:nowrap;flex:none}

/* ===== 출석 체크 · 코인 ===== */
.top-right{display:flex;align-items:center;gap:8px}
.coin-chip{font-size:13px;font-weight:700;color:var(--ink);text-decoration:none;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:5px 12px;white-space:nowrap;font-variant-numeric:tabular-nums}
.att-home{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;position:relative}
.att-home .ah-ic{font-size:26px;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--accent-soft)}
.ah-text{display:flex;flex-direction:column;min-width:0}
.ah-text b{font-size:15px}
.ah-text small{font-size:12px;color:var(--ink-soft)}
.att-home #ah-go{animation:ahPulse 1.8s ease-in-out infinite}
@keyframes ahPulse{50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 20%,transparent)}}
.ah-toast{position:absolute;right:12px;top:-12px;background:var(--ink);color:var(--paper);font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}
.ac-hero{display:flex;flex-direction:column;gap:14px;text-align:center}
.ac-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ac-stats div{background:var(--sunk);border-radius:16px;padding:14px 8px;display:flex;flex-direction:column;gap:2px}
.ac-stats small{font-size:12px;color:var(--ink-soft)}
.ac-stats b{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}
.ac-go{font-size:18px;padding:18px}
.ac-go.done{background:var(--sunk);color:var(--ink-soft);cursor:default;opacity:1}
.ac-hero .meta{margin:0}
.ac-reward{display:flex;flex-direction:column;gap:4px;background:var(--accent-soft);border-radius:16px;padding:14px}
.ac-reward b{font-size:24px;color:var(--accent)}
.ac-reward span{font-size:13px;color:var(--ink-soft)}
.ac-reward a{font-size:14px;font-weight:700;color:var(--accent);text-decoration:none}
.ac-reward.pop{animation:acPop .45s cubic-bezier(.2,1.4,.4,1)}
@keyframes acPop{from{transform:scale(.85);opacity:0}to{transform:none;opacity:1}}
.st-d{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;border-radius:50%;background:var(--sunk);font-variant-numeric:tabular-nums}
.st-d b{font-size:13px;font-weight:600;color:var(--ink-soft)}
.st-d.future{opacity:.45}
.st-d.today{box-shadow:inset 0 0 0 2px var(--accent)}
.st-d.on{background:var(--accent)}
.st-d.on b{color:var(--accent-ink);font-size:11px;opacity:.85}
.st-d i{font-style:normal;font-weight:800;color:var(--accent-ink);font-size:14px;line-height:1}
.st-d.stamp-in{animation:stampIn .5s cubic-bezier(.2,1.6,.4,1)}
@keyframes stampIn{from{transform:scale(1.8) rotate(-18deg);opacity:0}to{transform:none;opacity:1}}
.ac-miles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.ac-miles li{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 2px;border-radius:14px;background:var(--sunk);text-align:center}
.ac-miles li b{font-size:14px}
.ac-miles li small{font-size:12px;color:var(--ink-soft);font-variant-numeric:tabular-nums}
.ac-miles li.on{background:var(--accent-soft)}
.ac-miles li.on small{color:var(--accent);font-weight:700}
.shop{display:flex;flex-direction:column;gap:8px}
.shop-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px;border-radius:14px;background:var(--sunk);color:var(--ink);text-decoration:none}
.shop-ic{font-size:24px}
.shop-text{display:flex;flex-direction:column;min-width:0}
.shop-text small{font-size:12px;color:var(--ink-soft)}
.shop-item em{font-style:normal;font-weight:800;font-size:14px;white-space:nowrap}
.shop-item.soon{opacity:.6}
.shop-item.soon em{font-weight:600;color:var(--ink-soft)}
.ac-log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ac-log li{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
.ac-log li:last-child{border-bottom:0}
.ac-log li b{color:var(--wood);font-variant-numeric:tabular-nums}
.ac-log li b.minus{color:var(--fire)}
.ac-log li.empty{color:var(--ink-soft)}
.tarot-redraw{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0 0}
.tarot-redraw small{font-size:12px;color:var(--ink-soft)}
.tarot-redraw small a{color:var(--accent);font-weight:700}
@media (prefers-reduced-motion:reduce){.att-home #ah-go,.ac-reward.pop,.st-d.stamp-in{animation:none}}
.co-season-row{display:flex;align-items:center;gap:8px;margin:0 0 10px}
.co-season{font-size:13px;font-weight:700;background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:4px 12px}
.co-season-row small{font-size:12px;color:var(--ink-soft)}
/* 심리테스트 캐릭터 그림 (그림이 오면 이모지 위를 덮음) */
.has-art{position:relative;overflow:hidden}
.has-art .art-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s}
.has-art .art-img.on{opacity:1}
.ps-hero-art{width:132px;height:132px;border-radius:36px;font-size:64px}
.oh-mcard .oh-mic.has-art{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:var(--paper)}
.coin-ic{display:inline-block;width:1em;height:1em;margin-right:.3em;vertical-align:-.14em;border-radius:50%;background:radial-gradient(circle at 35% 30%,#FFE58A,#F5B90A 55%,#C98A00);box-shadow:inset 0 0 0 .09em #B77900,inset 0 0 0 .2em #FFD34D;flex:none}
/* 그림을 기다리는 동안 이모지가 위아래로 통통 (60일주 사전과 같은 움직임) */
.has-art .art-emo{display:inline-block;animation:bob 1.2s ease-in-out infinite}
.has-art:has(.art-img.on) .art-emo,.has-art.art-fail .art-emo{animation:none}
.has-art:has(.art-img.on) .art-emo{opacity:0}
@media (prefers-reduced-motion:reduce){.has-art .art-emo{animation:none}}
.oh-mcard .oh-mic.ps-mart{width:64px;height:64px;border-radius:18px;font-size:32px}

/* ===== 행운 부적 ===== */
.ta-purposes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.ta-p{font:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 4px;border-radius:14px;border:1.5px solid var(--line);background:var(--paper);color:var(--ink);font-size:15px}
.ta-p.on{border-color:var(--accent);background:var(--accent-soft)}
.ta-result{display:flex;flex-direction:column;gap:12px;align-items:center;text-align:center}
.ta-result p{margin:0}
.ta-phone{--c:#6246EA;position:relative;width:100%;max-width:300px;aspect-ratio:9/16;border-radius:32px;overflow:hidden;background:linear-gradient(var(--c),#111);box-shadow:0 12px 30px rgba(16,24,40,.18),inset 0 0 0 1px rgba(255,255,255,.08)}
.ta-phone canvas{display:block;width:100%;height:100%}
.ta-wait{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff;background:rgba(0,0,0,.25);text-align:center;font-size:13px;line-height:1.5}
.ta-wait-ic{font-size:48px;animation:bob 1.2s ease-in-out infinite}
.ta-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
#v-talisman .card h2{margin-top:4px}
@media (prefers-reduced-motion:reduce){.ta-wait-ic{animation:none}}
.ta-hint{margin:0;padding:16px;border-radius:var(--radius);background:var(--accent-soft);color:var(--ink);text-align:center;font-size:14px}
.ta-need{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:16px;background:color-mix(in srgb,var(--c) 12%,var(--paper));border:1.5px solid color-mix(in srgb,var(--c) 45%,var(--paper))}
.ta-need>b{font-size:40px;line-height:1;color:var(--c)}
.ta-need span{display:flex;flex-direction:column}
.ta-need small{font-size:12px;color:var(--ink-soft)}
.ta-need strong{font-size:17px}

/* ===== 로그인 · AI 이용 안내 ===== */
.kakao-btn{background:#FEE500!important;color:#191600!important}
.acc-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px}
.acc-ic{font-size:26px;width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--sunk)}
.acc-text{display:flex;flex-direction:column;min-width:0}
.acc-text b{font-size:15px}
.acc-text small{font-size:12px;color:var(--ink-soft)}
@media (max-width:420px){.acc-card{grid-template-columns:auto 1fr}.acc-card .btn,.acc-card .ghost{grid-column:1/-1}}
.gate-body{display:flex;flex-direction:column;align-items:center;gap:12px;padding:28px 24px 20px;text-align:center}
.gate-ic{font-size:44px}
.gate-body h2{margin:0;font-size:20px}
.gate-body p{margin:0;color:var(--ink-soft);line-height:1.6}
.gate-body p b{color:var(--ink)}
.gate-body .btn{width:100%}
.gate-code{width:100%;font-size:13px;color:var(--ink-soft)}
.gate-code summary{cursor:pointer}
.gate-code-row{display:flex;gap:6px;margin-top:8px}
.gate-code-row input{flex:1;min-width:0;font:inherit;padding:9px 12px;border-radius:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink)}
.gate-close{align-self:center}
.gate-toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom, 0px));transform:translateX(-50%);z-index:50;max-width:calc(100vw - 32px);background:var(--ink);color:var(--paper);font-size:14px;font-weight:600;padding:10px 16px;border-radius:999px;box-shadow:0 8px 24px rgba(0,0,0,.2)}
.gate-toast.show{animation:acPop .35s ease}

/* ===== 잠금 미리보기 · AI 신년 리포트 ===== */
dd.is-locked{position:relative;color:transparent;text-shadow:0 0 7px color-mix(in srgb,var(--ink) 55%,transparent);user-select:none;-webkit-user-select:none}
dd.is-locked::after{content:"🔒";position:absolute;right:0;top:0;text-shadow:none;color:var(--ink)}
.unlock-box{display:flex;flex-direction:column;align-items:center;gap:8px;margin:14px 0 4px;padding:18px 16px;border-radius:16px;text-align:center;background:linear-gradient(180deg,var(--accent-soft),color-mix(in srgb,var(--accent-soft) 40%,var(--paper)));border:1px solid color-mix(in srgb,var(--accent) 25%,var(--paper))}
.unlock-box .ub-ic{font-size:28px}
.unlock-box b{font-size:15px}
.unlock-box small{font-size:12px;color:var(--ink-soft);line-height:1.5}
.unlock-box .btn{width:100%;max-width:320px}
.unlock-box .ub-bal a{color:var(--accent);font-weight:700}
.ny-ai-months{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.ny-ai-months li{display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:start;padding:10px 12px;border-radius:12px;background:var(--sunk)}
.ny-ai-months li b{color:var(--accent);font-variant-numeric:tabular-nums}
.ny-ai-months li span{font-size:14px;line-height:1.6}
.ny-ai-months li.is-locked{opacity:.55}
.ny-for{margin:0;font-size:12px;color:var(--ink-soft)}
.ny-pdf{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:10px}
.ny-pdf small{font-size:12px;color:var(--ink-soft)}
@media print{
  body.print-ny{background:#fff!important;color:#111!important}
  body.print-ny .topbar, body.print-ny .view:not(#v-newyear), body.print-ny #v-newyear > :not(#ny-ai-sec),
  body.print-ny #ny-ai-sec > :not(#ny-ai-out):not(h2):not(.eyebrow), body.print-ny #next, body.print-ny footer, body.print-ny .ny-pdf,
  body.print-ny .unlock-box, body.print-ny .gate-toast, body.print-ny dialog{display:none!important}
  body.print-ny #ny-ai-sec{box-shadow:none;border:0;padding:0}
  body.print-ny .ny-ai-months li{break-inside:avoid;background:#f4f4f6}
  body.print-ny dd, body.print-ny dt{break-inside:avoid}
}

/* ===== 내 계정 · 머리의 로그인 버튼 ===== */
.acct-chip{display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--ink);text-decoration:none;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:5px 12px;white-space:nowrap;min-height:30px}
.acct-chip.on{width:32px;height:32px;padding:0;background:var(--sunk)}
.acct-chip .ic{width:18px;height:18px}
.me-where{margin:4px 0 0;font-size:12px;color:var(--ink-soft)}
.me-where a{color:inherit}
.where-tag{display:inline-block;font-size:11px;font-weight:700;border-radius:999px;padding:2px 8px;background:var(--sunk);color:var(--ink-soft)}
.where-tag.on{background:#E6F4EA;color:#1E6B3A}
.f-login{grid-column:1/-1;display:flex;align-items:center;gap:10px;justify-content:space-between;background:var(--sunk);border-radius:14px;padding:10px 12px;flex-wrap:wrap}
.f-login span{display:flex;flex-direction:column;min-width:0;flex:1 1 180px}
.f-login b{font-size:13px}.f-login small{font-size:12px;color:var(--ink-soft)}
.my-list{padding:4px 0}
.my-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 16px;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line)}
.my-row:last-child{border-bottom:0}
.my-ic{font-size:20px;width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:var(--sunk)}
.my-text{display:flex;flex-direction:column;min-width:0}
.my-text b{font-size:14px}.my-text small{font-size:12px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.my-row em{font-style:normal;font-size:12px;color:var(--ink-soft);white-space:nowrap}
ul.my-where{list-style:none;margin:0 0 10px;padding:0}
ul.my-where li{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:13px}
ul.my-where li b{font-weight:600;color:var(--ink-soft)}
ul.my-where li b.on{color:#1E6B3A}
.my-foot{text-align:center;margin:8px 0 24px}
.linkish{background:none;border:0;color:var(--ink-soft);font-size:12px;text-decoration:underline;cursor:pointer;padding:6px}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .where-tag.on,:root:not([data-theme="light"]) ul.my-where li b.on{background:transparent;color:#7FD49B}}
@media (max-width:374px){.top-right{gap:5px}.coin-chip,.me-chip,.acct-chip{padding:5px 9px}.acct-chip.on{padding:0}.brand-name{font-size:15px}}
@media (max-width:339px){.brand-name{display:none}}

/* ===== 관리자 화면 ===== */
.ad-login label{font-weight:700;font-size:14px}
.ad-row{display:flex;gap:8px;margin-top:8px}.ad-row input{flex:1;min-width:0}
.ad-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.ad-stats .card{margin:0;padding:14px;display:flex;flex-direction:column;gap:4px}
.ad-stats small{font-size:12px;color:var(--ink-soft)}.ad-stats b{font-size:22px;font-variant-numeric:tabular-nums}
@media (max-width:560px){.ad-stats{grid-template-columns:repeat(2,1fr)}}
.ad-grant{display:grid;grid-template-columns:2fr 1fr;gap:10px;margin-bottom:12px}
.ad-grant label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;min-width:0}
.ad-grant .full{grid-column:1/-1}
.ad-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.ad-head h2{margin:0}.ad-head small{font-size:13px;color:var(--ink-soft);font-weight:500}
.ad-head input{flex:0 1 180px;min-width:0}
.ad-table-wrap{overflow-x:auto;margin:0 -4px}
.ad-table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}
.ad-table th{text-align:left;font-size:12px;color:var(--ink-soft);font-weight:600;padding:8px 6px;border-bottom:1px solid var(--line)}
.ad-table td{padding:8px 6px;border-bottom:1px dashed var(--line)}
.ad-table td.num{text-align:right;font-variant-numeric:tabular-nums}
.ad-table td.empty{text-align:center;color:var(--ink-soft);padding:20px}
.ad-feat{list-style:none;margin:0 0 10px;padding:0}
.ad-feat li{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px dashed var(--line);font-size:13px}
.ta-more-row{display:flex;justify-content:center;margin:10px 0 0}
#ta-more small{color:var(--ink-soft);font-weight:500;margin-left:2px}
#ta-canvas.dim{filter:blur(2px) brightness(.8);transition:filter .3s}
/* 띠별 운세: AI 띠 캐릭터 (그림이 오기 전엔 이모지) */
.tti-emoji{position:relative;overflow:hidden;flex:none}
.tti-emoji img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s}
.tti-emoji.has-img img{opacity:1}
.tti-emoji.has-img{font-size:0}

/* ===== 고객센터 ===== */
.faq{display:flex;flex-direction:column}
.faq-item{border-bottom:1px solid var(--line)}
.faq-item:last-child{border-bottom:0}
.faq-item summary{cursor:pointer;padding:12px 0;font-weight:600;font-size:14px;list-style:none;display:flex;justify-content:space-between;gap:10px}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:'+';color:var(--ink-soft);font-weight:400}
.faq-item[open] summary::after{content:'−'}
.faq-item p{margin:0 0 12px;font-size:13px;line-height:1.7;color:var(--ink-soft)}
.hp-form{display:grid;gap:12px}
.hp-form h2{margin:0}
.hp-form textarea,.hp-form input[type=text]{width:100%;box-sizing:border-box}
.hp-form .count{display:block;text-align:right;font-size:11px;color:var(--ink-soft);margin-top:4px}
.hp-form label small{font-weight:400;color:var(--ink-soft)}
.hp-trap{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0}
.hp-done{display:flex;gap:12px;align-items:flex-start}
.hp-done .ah-ic{font-size:26px}
.hp-done p{margin:4px 0 10px}
.inq{border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px;display:flex;flex-direction:column;gap:8px}
.inq.done{opacity:.85}
.inq-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.inq-head small{font-size:12px;color:var(--ink-soft)}
.inq-text{margin:0;font-size:14px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.inq-meta{margin:0;font-size:12px;color:var(--ink-soft);word-break:break-all}
.inq-meta code{font-size:11px}
.inq-reply{background:var(--sunk);border-radius:10px;padding:10px 12px}
.inq-reply b{font-size:12px}.inq-reply p{margin:4px 0;font-size:13px;white-space:pre-wrap}.inq-reply small{font-size:11px;color:var(--ink-soft)}
.inq textarea{width:100%;box-sizing:border-box;font:inherit;font-size:13px;padding:8px 10px;border-radius:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink)}
.inq-act{display:flex;gap:8px;flex-wrap:wrap}
.foot-links{margin:0 0 8px;font-weight:600}
.foot-links a{color:inherit}

/* ===== 친구 초대 ===== */
.ref-card h2{margin:0 0 6px}
.ref-rule{margin:0 0 12px;font-size:14px;line-height:1.6}
.ref-link{display:flex;gap:8px;margin-bottom:10px}
.ref-link input{flex:1;min-width:0;font:inherit;font-size:13px;padding:9px 12px;border-radius:10px;border:1px solid var(--line);background:var(--sunk);color:var(--ink)}
.ref-card .meta{margin:10px 0 0}

/* ===== 궁합툰 ===== */
.toon{margin:18px 0;padding:18px 16px;border-radius:20px;background:#FBF8F2;border:1px solid var(--line);color:#1B1C20}
.toon-head{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}
.toon-head .eyebrow{color:#E2557A}
.toon-title{margin:0;font-size:21px;font-weight:800;letter-spacing:-.03em;line-height:1.35;word-break:keep-all}
.toon-rel{margin:0;font-size:13px;color:#6B6F78}
.toon-cast{display:flex;align-items:center;justify-content:center;gap:14px;margin:6px 0 4px}
.toon-cast>i{font-style:normal;color:#9AA0A6;font-size:18px}
.toon-char{margin:0;display:flex;flex-direction:column;align-items:center;gap:4px}
.toon-face{width:76px;height:76px;border-radius:50%;overflow:hidden;background:color-mix(in srgb,var(--c) 14%,#fff);display:block;border:2px solid color-mix(in srgb,var(--c) 35%,#fff)}
.toon-face img{width:100%;height:100%;object-fit:cover;display:block}
.toon-char figcaption{display:flex;flex-direction:column;align-items:center;line-height:1.2}
.toon-char b{font-size:14px}.toon-char small{font-size:11px;color:#6B6F78}
.toon-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}
.toon-panel{margin:0;display:flex;flex-direction:column;gap:6px;min-width:0}
.tp-img{aspect-ratio:1;border-radius:14px;background-color:#EFEAE0;background-size:200% 200%;background-repeat:no-repeat;display:grid;place-items:center;text-align:center;font-size:12px;color:#6B6F78;padding:6px}
.tp-img[data-i="0"]{background-position:0 0}.tp-img[data-i="1"]{background-position:100% 0}.tp-img[data-i="2"]{background-position:0 100%}.tp-img[data-i="3"]{background-position:100% 100%}
.tp-img.loading{animation:tpPulse 1.6s ease-in-out infinite}
@keyframes tpPulse{50%{background-color:#E4DED2}}
@media (prefers-reduced-motion:reduce){.tp-img.loading{animation:none}}
.toon-panel figcaption{display:flex;flex-direction:column;gap:2px}
.tl{margin:0;font-size:13px;line-height:1.45;word-break:keep-all}
.tl b{margin-right:6px;font-weight:800}
.tl.sfx{font-weight:800;color:#9AA0A6}
.toon-desc{margin:0 0 10px;font-size:14px;line-height:1.7;color:#3A3D44}
.toon-actions{justify-content:center}
.toon .status{text-align:center}

/* ===== 간편 로그인 (카카오 · 네이버 · 구글) ===== */
.login-dlg .term-box{max-width:360px}
.login-sub{margin:4px 0 14px;font-size:13px;color:var(--ink-soft)}
.login-list{display:flex;flex-direction:column;gap:8px}
.login-p{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:46px;border-radius:12px;font:inherit;font-size:15px;font-weight:700;cursor:pointer;border:1px solid transparent;position:relative}
.login-p .lp-ic{position:absolute;left:14px;width:20px;height:20px;display:grid;place-items:center}
.login-p .lp-ic svg{width:20px;height:20px}
.lp-kakao{background:#FEE500;color:#191600}.lp-kakao svg{fill:#191600}
.lp-naver{background:#03C75A;color:#fff}.lp-naver svg{fill:#fff;width:16px!important;height:16px!important}
.lp-google{background:#fff;color:#1F1F1F;border-color:#DADCE0}
.login-note{margin:12px 0 0;font-size:11.5px;color:var(--ink-soft);line-height:1.6}

/* ===== 휴대폰 홈 메뉴: 4칸 아이콘 메뉴 (점신처럼 한눈에) ===== */
@media (max-width:560px){
  .menu{gap:8px}
  .menu h2{font-size:16px}
  .menu-grid,.menu-grid.grid3,.menu-grid.grid4,.menu-grid.grid5{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 4px}
  .menu-grid>.tile:last-child:nth-child(odd),.menu-grid.grid3>.tile:last-child:nth-child(odd),.menu-grid.grid5>.tile:last-child:nth-child(odd){grid-column:auto}
  .menu-grid>.tile{align-items:center;text-align:center;gap:0;padding:10px 2px 8px;background:none;border:0;box-shadow:none;border-radius:14px}
  .menu-grid>.tile:hover{transform:none;background:none}
  .menu-grid>.tile:active{background:var(--sunk)}
  .menu-grid>.tile .tile-ic{width:48px;height:48px;border-radius:16px;margin:0 0 6px}
  .menu-grid>.tile b{font-size:12.5px;font-weight:600;line-height:1.3;letter-spacing:-.02em}
  .menu-grid>.tile small{display:none}
  .menu-grid>.tile .badge{top:4px;right:calc(50% - 32px);font-size:9px;padding:1px 5px;letter-spacing:0}
  .menu{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:14px 10px 6px}
  .menu h2{padding:0 6px}
}
/* 휴대폰: "매일 보는 운세"만 4칸으로 다 보이고, 나머지 카테고리는 옆으로 넘기는 한 줄 (오른쪽 메뉴가 반쯤 보여 넘길 수 있음을 알려 줌) */
@media (max-width:560px){
  .menu:not([aria-labelledby="t-menu1"]){padding-right:0}
  .menu:not([aria-labelledby="t-menu1"]) .menu-grid{display:flex;overflow-x:auto;gap:2px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-right:10px;overscroll-behavior-x:contain}
  .menu:not([aria-labelledby="t-menu1"]) .menu-grid::-webkit-scrollbar{display:none}
  .menu:not([aria-labelledby="t-menu1"]) .menu-grid>.tile{flex:0 0 76px;scroll-snap-align:start}
}
.swipe-bar{display:none}
@media (max-width:560px){
  .swipe-bar{display:block;height:4px;margin:2px 50px 8px 40px;border-radius:99px;background:var(--sunk);overflow:hidden}
  .swipe-bar[hidden]{display:none}
  .swipe-bar i{display:block;height:100%;border-radius:99px;background:color-mix(in srgb,var(--accent) 55%,var(--sunk));transition:transform .08s linear}
}
