@import"https://fonts.googleapis.com/css2?family=Cinzel:wght@500;700&family=Cormorant+Garamond:wght@400;500;600&family=Marcellus&family=Noto+Sans+KR:wght@400;500;600;700&family=Noto+Serif+KR:wght@500;700&display=swap";*{box-sizing:border-box}body{margin:0;font-family:Cormorant Garamond,Noto Sans KR,serif;background:#e7d9c0;color:#2f2518}#root{min-height:100vh}button,input,select{font:inherit}fieldset{margin:0;padding:0;border:none}legend{padding:0}:root{--bg: #e7d9c0;--bg-accent: #d8c4a4;--ink: #2f2518;--muted: #6f5b45;--card: rgba(244, 233, 212, .92);--border: rgba(123, 93, 61, .36);--accent: #8a5e34;--accent-dark: #684224;--jade: #5f7260;--shadow: 0 18px 50px rgba(42, 28, 16, .2);--panel: rgba(238, 224, 198, .9);--panel-strong: rgba(245, 234, 214, .96)}.app{min-height:100vh;background:radial-gradient(circle at 14% 12%,rgba(98,66,36,.18),transparent 42%),radial-gradient(circle at 86% 18%,rgba(165,127,74,.16),transparent 40%),linear-gradient(135deg,var(--bg),var(--bg-accent));color:var(--ink);position:relative}.app:before{content:"";position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(86,57,32,.03) 0,rgba(86,57,32,.03) 1px,transparent 1px,transparent 5px),radial-gradient(circle at 50% 25%,transparent 35%,rgba(70,43,23,.16) 100%);mix-blend-mode:multiply;opacity:.7;z-index:0}.app>*{position:relative;z-index:1}.layout{max-width:1120px;margin:0 auto;padding:72px 20px 96px;display:grid;gap:40px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start}.hero{display:grid;gap:20px;align-content:start;animation:rise .8s ease forwards}.lang-toggle{display:inline-flex;gap:8px;padding:6px;border-radius:999px;border:1px solid rgba(115,86,56,.45);background:linear-gradient(180deg,#efe1c6,#dec8a5);box-shadow:inset 0 1px #fffcf0cc;width:fit-content}.lang-toggle button{border-radius:999px;padding:8px 16px;background:transparent;color:#5d4a36;border:1px solid transparent;box-shadow:none;font-weight:600}.lang-toggle button.active{background:linear-gradient(180deg,#8f653a,#744a28);color:#f8efdc;box-shadow:0 8px 14px #492c1533}.eyebrow{text-transform:uppercase;letter-spacing:.28em;font-size:.72rem;color:var(--muted);margin:0}.hero h1{font-family:Cinzel,Marcellus,"Noto Serif KR",serif;font-size:clamp(2.4rem,2.8vw,3.4rem);letter-spacing:.02em;margin:0;line-height:1.1}.subhead{font-size:1.1rem;color:var(--muted);margin:0}.hero-visual{margin:12px 0 0;border-radius:24px;overflow:hidden;border:2px solid rgba(122,91,59,.5);background:#e9d9badb;box-shadow:0 20px 38px #462a1738;aspect-ratio:16 / 9}.hero-visual img{display:block;width:100%;height:100%;object-fit:cover;filter:sepia(.35) saturate(.85) contrast(1.04)}.hero-tag{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:999px;background:#c1572a1f;color:var(--accent-dark);font-weight:600;font-size:.95rem;width:fit-content}.card{background:var(--card);border:1px solid var(--border);border-radius:24px;padding:32px;box-shadow:var(--shadow);position:relative;animation:rise .9s ease .1s forwards;opacity:0}.card:before{content:"";position:absolute;inset:10px;border-radius:16px;border:1px solid rgba(140,106,72,.25);pointer-events:none}.card-header{margin-bottom:24px}.card-header h2{margin:0 0 8px;font-size:1.6rem;font-family:Cinzel,Marcellus,"Noto Serif KR",serif}.card-header p{margin:0;color:var(--muted)}.form{display:grid;gap:20px}.form-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.date-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.time-place-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field{display:grid;gap:8px;font-size:.95rem;color:var(--ink)}.field span,.field legend{font-weight:600}.field select,.field input{padding:12px 14px;border-radius:14px;border:1px solid var(--border);background:var(--panel-strong);color:var(--muted);font-size:.95rem;font-family:Cormorant Garamond,Noto Sans KR,serif;transition:border .2s ease,box-shadow .2s ease}.field select option{color:#2f2518}.field select:required:valid,.field input:not(:placeholder-shown){color:var(--ink);border-color:#8a5e348c;background:#f9f1e2}.field select:focus,.field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #8a5e342e}.span-2{grid-column:span 2}.inline-group{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.actions{display:flex;gap:12px;flex-wrap:wrap}button{font-family:Cinzel,"Noto Serif KR",serif;border-radius:999px;padding:12px 26px;border:1px solid transparent;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}button:active{transform:scale(.98)}.primary{background:linear-gradient(180deg,#9a6b3d,#7f532f);color:#f8efdc;box-shadow:0 10px 20px #5f3b1f42}.primary:hover{background:linear-gradient(180deg,#87562f,#694121)}.ghost{background:#f5ecdb99;color:#6c4524;border-color:#7d5f3f73}.helper{margin:0;color:var(--muted);font-size:.88rem}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media(max-width:720px){.layout{padding:56px 18px 80px}.span-2{grid-column:span 1}.time-place-grid,.inline-group,.chart-grid{grid-template-columns:1fr}.pillars-row{grid-template-columns:50px repeat(4,minmax(0,1fr))}}.primary:disabled{opacity:.7;cursor:not-allowed}.result{margin-top:4px;border:1px solid var(--border);border-radius:14px;padding:16px;background:var(--panel);display:grid;gap:10px}.result h3{margin:0;font-size:1rem;font-family:Marcellus,"Noto Serif KR",serif}.result pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:Noto Sans KR,sans-serif;line-height:1.55}.error-box{border-color:#84482859;background:#a0653e1a}.error-box p{margin:0;color:var(--accent-dark)}.json-error{margin:0;color:#8a4f2d;font-size:.9rem}.chart-wrap{display:grid;gap:14px;padding:16px;border-radius:16px;background:#eddfc5e0;border:1px solid rgba(130,99,66,.3)}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.chart-head h4{margin:0;font-size:1.05rem;font-family:"Noto Serif KR",serif;color:var(--accent)}.chart-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.chart-card{background:#f5ebd9e6;border-radius:16px;border:1px solid rgba(130,99,66,.25);padding:16px;display:grid;gap:12px}.chart-card h5{margin:0;font-size:.95rem;color:var(--jade);font-family:"Noto Serif KR",serif}.chart-hint{margin:0;font-size:.78rem;color:var(--muted)}.pillars-table{display:grid;gap:6px;font-size:.88rem}.pillars-row{display:grid;grid-template-columns:60px repeat(4,minmax(0,1fr));gap:6px;align-items:center}.pillars-row.head{color:var(--muted);font-weight:600}.pillars-row span{text-align:center}.pillars-row .label{text-align:left;color:var(--muted);font-weight:600}.pillars-row .cell{padding:8px 6px;border-radius:10px;border:1px solid rgba(130,99,66,.18);font-family:"Noto Serif KR",serif}.pillars-row .cell.subtle{opacity:.75}.wood{background:#708e583d;color:#2f4429}.fire{background:#9a593d38;color:#4d2a19}.earth{background:#b390563d;color:#4f3a1e}.metal{background:#a89c893d;color:#3f3527}.water{background:#62758938;color:#223346}.radar{width:100%;height:auto}.radar-grid{fill:#7d624314;stroke:#7d624359;stroke-width:1}.radar-axis{stroke:#48342129;stroke-width:1}.radar-axis.yongsin{stroke:#8a5e34;stroke-width:2}.radar-axis.gisin{stroke:#7a5b3b8c;stroke-dasharray:4 4}.radar-label{fill:var(--muted);font-size:10px;text-anchor:middle;dominant-baseline:middle}.radar-area{fill:#966f3f38;stroke:#7a542cbf;stroke-width:1.5}.radar-legend{display:grid;gap:6px}.element-counts{display:grid;gap:8px}.element-count-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:10px;border:1px solid rgba(126,95,62,.2);font-weight:600}.element-count-item strong{font-size:1rem}.legend-item{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;color:var(--muted)}.legend-dot{width:10px;height:10px;border-radius:50%;margin-right:6px;display:inline-block}.legend-item span{display:inline-flex;align-items:center;gap:6px}.timeline{display:grid;gap:8px}.timeline-item{padding:10px 12px;border-radius:12px;background:#f7f0e3bf;display:grid;gap:4px;border:1px solid rgba(126,95,62,.2)}.timeline-item.current{border-color:#8a5e34a6;box-shadow:0 0 0 2px #8a5e3424}.timeline-item .age{font-weight:600;color:var(--accent)}.timeline-item .ganji{font-family:"Noto Serif KR",serif}.timeline-item .meaning{margin:0;font-size:.8rem;color:var(--muted);line-height:1.4}.timeline-item .badge{font-size:.75rem;color:#f8efdc;background:var(--accent);padding:2px 8px;border-radius:999px;width:fit-content}.season-graph{padding:8px 0}.season-block{opacity:.18}.season-block.spring{fill:#708e586b}.season-block.summer{fill:#b390566b}.season-block.autumn{fill:#a07a4f6b}.season-block.winter{fill:#62758961}.age-line{stroke:#6d4929;stroke-width:2;stroke-dasharray:4 4}.season-label{fill:var(--muted);font-size:10px}.season-note{margin:0;font-size:.85rem;color:var(--muted)}.ten-gods-grid{display:grid;gap:8px}.ten-gods-grid p{margin:0;font-size:.86rem;line-height:1.45}.report-markdown{background:#f5ebd9d9;padding:14px;border-radius:12px;border:1px solid rgba(120,89,58,.2)}.markdown-body h2,.markdown-body h3,.markdown-body h4{margin:18px 0 8px;font-family:"Noto Serif KR",serif;color:var(--accent)}.markdown-body h2:first-child{margin-top:0}.markdown-body p{margin:0 0 10px;color:var(--ink)}.markdown-body ul,.markdown-body ol{margin:0 0 12px 18px;padding:0;color:var(--ink)}.markdown-body li{margin-bottom:6px}.markdown-body table{width:100%;border-collapse:collapse;margin:12px 0;font-size:.95rem}.markdown-body th,.markdown-body td{border:1px solid rgba(114,85,56,.26);padding:8px 10px;text-align:left}.markdown-body th{background:#a67d4d38;color:#412a17}.markdown-body code{background:#708e5829;color:#344628;padding:2px 6px;border-radius:6px;font-family:"Noto Serif KR",serif;font-size:.92rem}.markdown-body pre{background:#e9d9becc;padding:12px;border-radius:10px;border:1px solid rgba(114,85,56,.24);overflow:auto}.markdown-body pre code{background:transparent;padding:0;color:var(--ink);font-family:"Noto Serif KR",serif;font-size:.92rem}.markdown-body strong{color:#714724}.saju-page{min-height:100vh;background:#f2e7d2;color:#2d2115}.saju-wrap{max-width:1040px;margin:0 auto;padding:36px 18px 48px;display:grid;gap:16px}.saju-header h1{margin:0;font-family:Cinzel,"Noto Serif KR",serif}.saju-header p{margin:8px 0 0;color:#6f5840}.saju-card{background:#f7ecd9f5;border:1px solid rgba(118,90,61,.3);border-radius:14px;padding:16px}.saju-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.saju-form label{display:grid;gap:6px;font-size:.95rem}.saju-form label>span{font-weight:600}.saju-form input,.saju-form select,.saju-form textarea{border:1px solid rgba(117,88,58,.36);border-radius:10px;padding:10px 12px;background:#fff9ee;color:#2d2115;font:inherit}.saju-form .checkbox-line{display:flex;align-items:center;gap:8px;padding-top:26px}.saju-form .checkbox-line input{width:16px;height:16px}.saju-form .full{grid-column:1 / -1}.actions{grid-column:1 / -1;display:flex;gap:8px}.actions button{border:1px solid transparent;border-radius:999px;padding:11px 20px;font-weight:700;cursor:pointer;color:#f8efdc;background:linear-gradient(180deg,#95693e,#744a28)}.actions button.ghost{background:transparent;color:#6f4726;border-color:#75583a66}.actions button:disabled{opacity:.65;cursor:not-allowed}.error{margin:0;color:#7a2f1c;font-weight:600}.report-panel{background:#f7ecd9f5;border:1px solid rgba(118,90,61,.3);border-radius:14px;padding:16px}.report-panel h2{margin:0 0 10px;font-family:Cinzel,"Noto Serif KR",serif;font-size:1.2rem}.elements-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin:0 0 12px}.element-chip{border-radius:10px;padding:8px 10px;border:1px solid rgba(117,88,58,.25);display:grid;gap:2px}.element-chip strong{font-size:.95rem}.element-chip span{font-size:.86rem;opacity:.9}.element-chip.wood{background:#708e5838;color:#2f4429}.element-chip.fire{background:#9a593d33;color:#4d2a19}.element-chip.earth{background:#b390563d;color:#4f3a1e}.element-chip.metal{background:#a89c893d;color:#3f3527}.element-chip.water{background:#62758933;color:#223346}.report-panel pre{margin:0;background:#fdf7ed;border:1px solid rgba(118,90,61,.25);border-radius:10px;padding:14px;white-space:pre-wrap;word-break:break-word;font-family:"Noto Serif KR",Courier New,monospace;font-size:.92rem;line-height:1.6;max-height:70vh;overflow:auto}@media(max-width:740px){.saju-wrap{padding:24px 14px 40px}.saju-form{grid-template-columns:1fr}.saju-form .checkbox-line{padding-top:0}}
