@import"https://fonts.googleapis.com/css2?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:Noto Sans KR,sans-serif;background:#f5efe6;color:#1e1c17}#root{min-height:100vh}button,input,select{font:inherit}fieldset{margin:0;padding:0;border:none}legend{padding:0}:root{--bg: #0f1b2d;--bg-accent: #0b1322;--ink: #f3efe7;--muted: #b5b1a9;--card: rgba(19, 31, 49, .92);--border: rgba(201, 168, 76, .25);--accent: #c9a84c;--accent-dark: #a78a3f;--jade: #5fb8a5;--shadow: 0 24px 60px rgba(5, 10, 18, .4);--panel: rgba(12, 20, 34, .9);--panel-strong: rgba(8, 14, 26, .95)}.app{min-height:100vh;background:radial-gradient(circle at 15% 10%,rgba(95,184,165,.2),transparent 45%),radial-gradient(circle at 80% 20%,rgba(201,168,76,.18),transparent 40%),linear-gradient(140deg,var(--bg),var(--bg-accent));color:var(--ink)}.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 var(--border);background:#0a121e99;width:fit-content}.lang-toggle button{border-radius:999px;padding:8px 16px;background:transparent;color:var(--muted);border:1px solid transparent;box-shadow:none;font-weight:600}.lang-toggle button.active{background:var(--accent);color:#131e2f;box-shadow:0 10px 20px #c1572a40}.eyebrow{text-transform:uppercase;letter-spacing:.28em;font-size:.72rem;color:var(--muted);margin:0}.hero h1{font-family:Marcellus,"Noto Serif KR",serif;font-size:clamp(2.4rem,2.8vw,3.4rem);margin:0;line-height:1.1}.subhead{font-size:1.02rem;color:var(--muted);margin:0}.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);animation:rise .9s ease .1s forwards;opacity:0}.card-header{margin-bottom:24px}.card-header h2{margin:0 0 8px;font-size:1.6rem;font-family: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(--ink);font-size:.95rem;font-family:Noto Sans KR,sans-serif;transition:border .2s ease,box-shadow .2s ease}.field select:focus,.field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #c1572a33}.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:Noto Sans KR,sans-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:var(--accent);color:#101623;box-shadow:0 12px 24px #c1572a40}.primary:hover{background:var(--accent-dark)}.ghost{background:transparent;color:var(--accent);border-color:#c9a84c59}.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:#9a421f66;background:#c1572a1f}.error-box p{margin:0;color:var(--accent-dark)}.json-error{margin:0;color:#f3c27a;font-size:.9rem}.chart-wrap{display:grid;gap:14px;padding:16px;border-radius:16px;background:#080e1ad9;border:1px solid rgba(201,168,76,.25)}.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:#0c1422f2;border-radius:16px;border:1px solid rgba(201,168,76,.2);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(255,255,255,.08);font-family:"Noto Serif KR",serif}.pillars-row .cell.subtle{opacity:.75}.wood{background:#5fb86940;color:#baf0c9}.fire{background:#d45b5b40;color:#f7c1b5}.earth{background:#c9a84c40;color:#f2dea2}.metal{background:#c7cbd133;color:#e0e4ea}.water{background:#4f8fd840;color:#bfdcff}.radar{width:100%;height:auto}.radar-grid{fill:#5fb8a514;stroke:#5fb8a559;stroke-width:1}.radar-axis{stroke:#ffffff1f;stroke-width:1}.radar-axis.yongsin{stroke:#c9a84c;stroke-width:2}.radar-axis.gisin{stroke:#c9a84c80;stroke-dasharray:4 4}.radar-label{fill:var(--muted);font-size:10px;text-anchor:middle;dominant-baseline:middle}.radar-area{fill:#c9a84c4d;stroke:#c9a84ccc;stroke-width:1.5}.radar-legend{display:grid;gap:6px}.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:#ffffff0a;display:grid;gap:4px;border:1px solid rgba(255,255,255,.08)}.timeline-item.current{border-color:#c9a84c99;box-shadow:0 0 0 2px #c9a84c26}.timeline-item .age{font-weight:600;color:var(--accent)}.timeline-item .ganji{font-family:"Noto Serif KR",serif}.timeline-item .badge{font-size:.75rem;color:#101623;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:#5fb8a580}.season-block.summer{fill:#c9a84c80}.season-block.autumn{fill:#8fa6b380}.season-block.winter{fill:#44556e80}.age-line{stroke:#f2dea2;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)}.report-markdown{background:#080e1aa6;padding:14px;border-radius:12px;border:1px solid rgba(255,255,255,.08)}.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(255,255,255,.12);padding:8px 10px;text-align:left}.markdown-body th{background:#c9a84c2e;color:#f2dea2}.markdown-body code{background:#5fb8a526;color:#cfe9e3;padding:2px 6px;border-radius:6px;font-family:"Noto Serif KR",serif;font-size:.92rem}.markdown-body pre{background:#080e1ad9;padding:12px;border-radius:10px;border:1px solid rgba(255,255,255,.08);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:#f2dea2}
