[hidden]{display:none!important}
:root{--bg:#E8EEEB;--paper:#F7F9F8;--ink:#1B2422;--mute:#5A6763;--line:#C9D3CF;--accent:#1F4E5F;
 --e0:#2E7D5B;--e1:#C23A2E;--e2:#B8891E;--e3:#8A9296;--e4:#22364A;--e3ink:#1B2422;
 box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#121816;--paper:#1B2321;--ink:#E6ECE9;--mute:#98A5A0;--line:#2F3B38;--accent:#7FB3C4;--e0:#4FA87F;--e1:#E0574A;--e2:#D9AA3F;--e3:#B9C0C3;--e4:#5E86AD;--e3ink:#121816;}}
:root[data-theme="dark"]{--bg:#121816;--paper:#1B2321;--ink:#E6ECE9;--mute:#98A5A0;--line:#2F3B38;--accent:#7FB3C4;--e0:#4FA87F;--e1:#E0574A;--e2:#D9AA3F;--e3:#B9C0C3;--e4:#5E86AD;--e3ink:#121816;}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.7 "IBM Plex Sans KR",system-ui,-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;word-break:keep-all}
main{max-width:560px;margin:0 auto;padding:28px 18px 56px}
.brand{font:700 15px/1 "Noto Serif KR",serif;letter-spacing:.02em;color:var(--accent);margin:0 0 28px}
.hero h1{font:900 clamp(34px,9vw,46px)/1.15 "Noto Serif KR","Batang",serif;margin:0 0 10px;letter-spacing:-.02em}
.hero p{color:var(--mute);margin:0 0 22px}
.strip{display:flex;gap:6px;margin:0 0 26px}
.strip span{flex:1;aspect-ratio:1;display:grid;place-items:center;font:700 22px "Noto Serif KR",serif;color:#fff;border-radius:3px}
.strip span:nth-child(4){color:var(--e3ink)}
form{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:20px}
.row{margin:0 0 16px}.row>label.t,.row>.t{display:block;font-weight:600;font-size:14px;margin:0 0 6px}
.seg{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg label{flex:1;text-align:center;padding:10px 0;cursor:pointer;font-size:15px}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg label:has(input:checked){background:var(--accent);color:var(--paper);font-weight:600}
.seg label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:-4px}
.ymd{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px}
input[type=number],input[type=text],input[type=time],select{width:100%;font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:11px 12px;min-height:46px}
input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.check{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--mute);margin-top:8px;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--accent)}
.tt{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}
.hint{font-size:13px;color:var(--mute);margin:6px 0 0}
button{font:600 16px/1 inherit;font-family:inherit;width:100%;padding:16px;border:0;border-radius:12px;background:var(--accent);color:var(--paper);cursor:pointer}
button:disabled{opacity:.6;cursor:default}
#ferr{color:var(--e1);font-size:14px;margin:0 0 12px}
#result{margin-top:28px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:20px;margin:0 0 14px}
.card h2{font:700 20px/1.35 "Noto Serif KR",serif;margin:0 0 8px}.card h3{font:700 16px/1.4 "Noto Serif KR",serif;margin:18px 0 4px}
.card p{margin:0 0 10px}.lead{color:var(--mute);font-size:14px}
.who{font:700 22px "Noto Serif KR",serif;margin:0}.meta{color:var(--mute);font-size:13px;margin:2px 0 16px!important}
.chart{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.col{text-align:center;border-radius:10px;padding:8px 4px}
.col.me{background:var(--bg);outline:2px solid var(--accent)}
.cap{font-size:12px;color:var(--mute)}.ten{font-size:12px;color:var(--ink);min-height:18px;font-weight:500}
.ch{margin:4px 0;border-radius:8px;padding:8px 0 6px;color:#fff;display:flex;flex-direction:column;align-items:center}
.ch b{font:900 clamp(30px,9vw,40px)/1.05 "Noto Serif KR",serif}.ch small{font-size:11px;opacity:.9}
.ch.none{background:transparent;border:1px dashed var(--line);color:var(--mute);font:700 28px "Noto Serif KR",serif;padding:14px 0}
.e0{background:var(--e0)}.e1{background:var(--e1)}.e2{background:var(--e2)}.e3{background:var(--e3);color:var(--e3ink)}.e4{background:var(--e4)}
.e0t{color:var(--e0)}.e1t{color:var(--e1)}.e2t{color:var(--e2)}.e3t{color:var(--mute)}.e4t{color:var(--e4)}
.note{font-size:13px;color:var(--mute);margin:12px 0 0!important}
.bars{margin:6px 0 14px}.bar{display:grid;grid-template-columns:62px 1fr 22px;gap:8px;align-items:center;margin:6px 0;font-size:14px}
.track{height:12px;background:var(--bg);border-radius:6px;overflow:hidden}.track i{display:block;height:100%;border-radius:6px}
.bn{text-align:right;font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 12px}.chips span{border:1px solid var(--line);border-radius:999px;padding:3px 12px;font-size:14px}
.daeun{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}
.du{flex:0 0 64px;border:1px solid var(--line);border-radius:10px;text-align:center;padding:8px 0;display:flex;flex-direction:column}
.du b{font:900 22px/1.15 "Noto Serif KR",serif}.age{font-size:12px;color:var(--mute)}.dk{font-size:11px;color:var(--mute);margin-top:2px}
.ai button{margin-top:6px}#aiout{margin-top:14px}.err{color:var(--e1)}
.disc{font-size:12px;color:var(--mute);margin:18px 4px}
footer{font-size:12px;color:var(--mute);text-align:center;margin-top:30px}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

a{color:var(--accent)}
.topnav{display:flex;gap:4px 14px;flex-wrap:wrap;align-items:center;margin:-12px 0 26px;font-size:14px}
.topnav a{color:var(--mute);text-decoration:none;padding:4px 0}.topnav a[aria-current]{color:var(--ink);font-weight:600;border-bottom:2px solid var(--accent)}
.topnav .lang{margin-left:auto;border:1px solid var(--line);border-radius:999px;padding:3px 10px}
details.opts{margin:0 0 16px;border:1px dashed var(--line);border-radius:10px;padding:10px 12px}
details.opts summary{cursor:pointer;font-size:14px;font-weight:600}
details.opts .row{margin:12px 0 0}
.hid{font:500 13px "Noto Serif KR",serif;color:var(--mute);letter-spacing:.05em;margin-top:2px}
.unk{font-size:11px;color:var(--mute)}
details.bx{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
details.bx summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--accent)}
dl.basis{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:14px;margin:10px 0}
dl.basis dt{color:var(--mute)}dl.basis dd{margin:0}
ul.notes{margin:8px 0 0;padding-left:18px;font-size:14px}ul.notes li{margin:4px 0}
.warnline{font-size:13px;color:var(--e1);margin:8px 0 0!important}
.lucky{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0}
.lucky div{background:var(--bg);border-radius:10px;padding:10px;text-align:center}.lucky span{display:block;font-size:12px;color:var(--mute)}.lucky b{font-size:15px}
ul.rels{padding-left:18px;margin:6px 0}ul.rels li{margin:6px 0}
.tw{overflow-x:auto;margin:8px 0}table{border-collapse:collapse;width:100%;font-size:14px;min-width:420px}
th,td{border-bottom:1px solid var(--line);padding:9px 6px;text-align:left;vertical-align:top}th{font-weight:600;color:var(--mute);font-size:13px}
td small{display:block;color:var(--mute);font-size:12px}td.gz{font:700 18px "Noto Serif KR",serif;white-space:nowrap}td em{font-style:normal;color:var(--mute);font-size:13px}
.badge{display:inline-block;font-size:12px;font-weight:600;border-radius:999px;padding:1px 8px;margin-right:4px}
.b-good{background:color-mix(in srgb,var(--e0) 18%,transparent);color:var(--e0)}.b-normal{background:var(--bg);color:var(--mute)}.b-caution{background:color-mix(in srgb,var(--e1) 15%,transparent);color:var(--e1)}
.du.cur{border-color:var(--accent);outline:2px solid var(--accent)}
.links{display:flex;flex-wrap:wrap;gap:8px}.links a{flex:1 1 45%;text-align:center;padding:12px;border:1px solid var(--line);border-radius:10px;color:var(--ink);text-decoration:none;background:var(--bg);font-size:14px}
.center{text-align:center}.score{font:900 64px/1 "Noto Serif KR",serif;margin:6px 0!important;color:var(--accent)}.score small{font-size:18px;font-weight:700;margin-left:2px}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.mini{background:var(--bg);border-radius:10px;padding:10px}.mn{font-weight:600;margin:0 0 6px!important;font-size:14px}
.mrow{display:flex;justify-content:center;gap:6px}.mrow span{display:flex;flex-direction:column;font:900 22px/1.15 "Noto Serif KR",serif}.mrow span.me{outline:2px solid var(--accent);border-radius:4px;padding:0 2px}.unk2{color:var(--mute)}
button.ghost{background:transparent;color:var(--accent);border:1.5px solid var(--accent);margin-top:12px}
.plcard{border-width:2px;border-color:var(--accent)}.plrole{font:900 34px/1.2 "Noto Serif KR",serif;margin:4px 0!important}.plera{color:var(--mute);margin-bottom:14px!important}
.person{border:1px solid var(--line);border-radius:12px;padding:14px;margin:0 0 14px}.person h2{font:700 17px "Noto Serif KR",serif;margin:0 0 12px}
.wl{background:var(--paper);border:1.5px solid var(--accent);border-radius:14px;padding:20px;margin:0 0 14px}
.wl h2{font:700 20px/1.35 "Noto Serif KR",serif;margin:0 0 6px}.wl .check{align-items:flex-start;margin:10px 0}.wl .check input{margin-top:3px}
#wlmsg.ok{color:var(--e0)}#wlmsg.err,.err{color:var(--e1)}
.hp{position:absolute;left:-9999px}
.site-foot{font-size:12px;color:var(--mute);margin-top:30px;text-align:center}.site-foot a{color:var(--mute)}
.prose h2{font:700 19px/1.4 "Noto Serif KR",serif;margin:26px 0 8px}.prose p,.prose li{font-size:15px}
.plrole::first-letter{text-transform:uppercase}
