:root{--brand: #7048e8;--brand-deep: #5634c5;--brand-soft: #f3f0ff;--ink: #171a20;--sub: #4e5968;--muted: #8b95a1;--line: #eef0f4;--bg: #fbfaff;--surface: #ffffff;--radius: 22px;--shadow-sm: 0 1px 2px rgba(23, 26, 32, .04), 0 6px 16px rgba(23, 26, 32, .05);--shadow-lg: 0 8px 24px rgba(78, 40, 160, .1), 0 24px 64px rgba(78, 40, 160, .12)}*{margin:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:Pretendard,-apple-system,Apple SD Gothic Neo,Segoe UI,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5;letter-spacing:-.01em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background-image:radial-gradient(60% 50% at 82% -6%,rgba(112,72,232,.16),transparent 60%),radial-gradient(48% 44% at 6% 4%,rgba(140,110,246,.12),transparent 55%);background-repeat:no-repeat}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit}input{font:inherit;color:inherit}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.rise{animation:rise .6s cubic-bezier(.16,1,.3,1) both}@media (prefers-reduced-motion: reduce){.rise{animation:none}}#root{max-width:480px;margin:0 auto;min-height:100vh;min-height:100dvh;background:var(--bg);background-image:radial-gradient(70% 42% at 78% -4%,rgba(112,72,232,.15),transparent 60%),radial-gradient(52% 36% at 8% 3%,rgba(140,110,246,.11),transparent 55%);background-repeat:no-repeat;box-shadow:0 0 0 1px var(--line);display:flex;flex-direction:column}body{background-image:none}.wrap{width:100%;max-width:100%;margin:0 auto;padding-inline:20px}.nav{position:sticky;top:0;z-index:20;-webkit-backdrop-filter:saturate(1.4) blur(12px);backdrop-filter:saturate(1.4) blur(12px);background:#fbfaffb8;border-bottom:1px solid var(--line)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:64px}.brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:19px;letter-spacing:-.03em}.brand-dot{width:11px;height:11px;border-radius:50%;background:linear-gradient(135deg,#8f6cff,var(--brand));box-shadow:0 0 0 4px #7048e824}.nav-links{display:flex;align-items:center;gap:26px;font-size:15px;color:var(--sub);font-weight:600}.nav-links a{display:none}.nav-links a.nav-library{display:inline;font-weight:700;color:var(--brand-deep)}.btn-ghost{padding:9px 16px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-weight:700;font-size:14px;color:var(--ink)}.btn-ghost:hover{border-color:#d9d3f7}.login-page{min-height:100vh;padding-top:28px}.login-card{margin-top:36px;padding:32px 24px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-lg);text-align:center}.login-mark{display:inline-grid;width:48px;height:48px;place-items:center;border-radius:16px;color:var(--brand);background:var(--brand-soft);font-size:24px}.login-mascot{display:block;width:150px;margin:0 auto 6px;filter:drop-shadow(0 10px 18px rgba(78,40,160,.16))}.login-card h1{margin-top:18px;font-size:25px;letter-spacing:-.035em}.login-card>p:not(.login-error):not(.login-note){margin:12px 0 26px;color:var(--sub);font-size:15px;line-height:1.65}.login-seg{margin:20px 0 14px}.login-form{display:flex;flex-direction:column;gap:10px;text-align:left}.login-cta{margin-top:14px}.login-cta:disabled{opacity:.6;cursor:wait;box-shadow:none;transform:none}.login-error{margin-top:16px;color:#d9480f;font-size:14px}.login-notice{margin-top:16px;color:#2b8a3e;font-size:14px;background:#ebfbee;border-radius:10px;padding:10px 12px}.login-note{margin-top:22px;color:var(--muted);font-size:12px;line-height:1.55}.hero{display:flex;flex-direction:column;gap:34px;padding-top:32px;padding-bottom:48px}.eyebrow{display:inline-block;font-size:13px;font-weight:800;letter-spacing:.02em;color:var(--brand);background:var(--brand-soft);padding:6px 12px;border-radius:999px}.h1{margin-top:16px;font-size:34px;line-height:1.18;font-weight:800;letter-spacing:-.035em}.grad{background:linear-gradient(120deg,#8f6cff 10%,var(--brand) 60%,#5a37cf);-webkit-background-clip:text;background-clip:text;color:transparent}.lead{margin-top:14px;font-size:15.5px;color:var(--sub);line-height:1.66}.lead br{display:none}.lead b{color:var(--ink);font-weight:700}.card{margin-top:30px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:22px}.field{display:flex;flex-direction:column;gap:8px;flex:1}.field>span{font-size:13px;font-weight:700;color:var(--muted)}.row{display:flex;flex-direction:column;gap:12px;margin-top:14px}.input{height:48px;padding:0 14px;border-radius:13px;border:1.5px solid var(--line);background:#fcfcfe;font-size:16px;font-weight:600;transition:border-color .15s,box-shadow .15s;width:100%}.input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px #7048e81f}.seg{display:flex;height:48px;border-radius:13px;border:1.5px solid var(--line);background:#fcfcfe;overflow:hidden}.seg button{flex:1;font-weight:700;font-size:15px;color:var(--muted);transition:all .15s}.seg button.on{background:var(--brand);color:#fff}.hanja-block{margin-top:14px;padding:14px;background:#fbfaff;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;gap:12px}.hanja-title{font-size:13px;font-weight:700;color:var(--sub)}.hanja-title em{font-style:normal;font-weight:500;color:var(--muted)}.hanja-hint{font-size:12px;line-height:1.55;color:var(--muted)}.hanja-hint.warn{color:#e8590c;background:#fff4e6;padding:10px 12px;border-radius:10px}.hanja-row-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}.hanja-char-label{font-size:13px;color:var(--sub)}.hanja-char-label strong{font-size:15px;color:var(--ink)}.hanja-search{flex:1;max-width:170px;padding:7px 10px;border-radius:9px;border:1px solid var(--line);font-size:13px;background:var(--surface)}.hanja-search:focus{outline:none;border-color:var(--brand)}.hanja-chips{display:flex;flex-wrap:wrap;gap:6px}.hchip{display:flex;flex-direction:column;align-items:center;gap:1px;padding:7px 9px;border-radius:10px;border:1.5px solid var(--line);background:var(--surface)}.hchip.on{border-color:var(--brand);background:var(--brand-soft)}.hchip-char{font-size:17px;font-weight:700;color:var(--ink)}.hchip-meta{font-size:10.5px;color:var(--muted)}.hanja-more{padding:8px 12px;border-radius:10px;border:1.5px dashed #d4d9e0;background:var(--surface);color:var(--muted);font-size:12.5px;font-weight:600}.hanja-none{font-size:12.5px;color:var(--muted)}.cta{width:100%;height:54px;margin-top:18px;border-radius:15px;background:linear-gradient(135deg,#7c54f0,var(--brand));color:#fff;font-size:17px;font-weight:800;letter-spacing:-.01em;box-shadow:0 8px 20px #7048e852;transition:transform .12s,box-shadow .12s}.cta:hover{transform:translateY(-1px);box-shadow:0 12px 26px #7048e866}.cta:active{transform:translateY(0)}.fineprint{margin-top:12px;text-align:center;font-size:12.5px;color:var(--muted)}.hero-panel{position:relative;display:flex;flex-direction:column;align-items:center}.panel-glow{position:absolute;inset:-8% 4% auto;height:320px;border-radius:50%;background:radial-gradient(closest-side,rgba(124,84,240,.28),transparent 72%);filter:blur(8px);z-index:0}.mascot{position:relative;z-index:1;width:168px;height:auto;margin-bottom:-30px;filter:drop-shadow(0 16px 26px rgba(78,40,160,.22))}.score-card{position:relative;z-index:1;width:100%;max-width:340px;background:var(--surface);border:1px solid var(--line);border-radius:26px;box-shadow:var(--shadow-lg);padding:30px 26px 26px;text-align:center}.grade-pill{display:inline-block;font-size:13px;font-weight:800;color:var(--brand-deep);background:var(--brand-soft);padding:5px 14px;border-radius:999px}.score{margin-top:10px;font-size:64px;font-weight:800;line-height:1;letter-spacing:-.04em;background:linear-gradient(150deg,#8f6cff,var(--brand-deep));-webkit-background-clip:text;background-clip:text;color:transparent}.score span{font-size:24px;margin-left:3px;-webkit-text-fill-color:var(--muted)}.chips{display:flex;justify-content:center;gap:8px;margin-top:16px}.chips span{font-size:13px;font-weight:700;color:var(--sub);background:#f5f6f8;padding:7px 13px;border-radius:999px}.pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:20px;padding-top:18px;border-top:1px dashed var(--line)}.pillar{display:flex;flex-direction:column;align-items:center;gap:4px}.pillar em{font-size:11px;font-style:normal;font-weight:700;color:var(--muted)}.pillar .glyph{font-size:19px;font-weight:700;color:var(--ink);letter-spacing:-.02em}.pillar b{font-size:11.5px;font-weight:600;color:var(--brand)}.empty{padding:40px 8px;color:var(--muted);font-size:14px;font-weight:600}.features{display:grid;grid-template-columns:1fr;gap:12px;padding-bottom:52px}.feature{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px 22px;box-shadow:var(--shadow-sm)}.fic{font-size:26px}.feature h3{margin-top:12px;font-size:17px;font-weight:800;letter-spacing:-.02em}.feature p{margin-top:8px;font-size:14.5px;color:var(--sub);line-height:1.62}.foot{display:flex;align-items:center;justify-content:space-between;padding-block:28px;border-top:1px solid var(--line);font-size:13px;color:var(--muted);font-weight:600}.foot span:first-child{font-weight:800;color:var(--sub)}.result{padding-top:28px;padding-bottom:72px}.back{font-size:14px;font-weight:700;color:var(--sub);padding:6px 0}.back:hover{color:var(--brand)}.linklike{color:var(--brand);font-weight:700;text-decoration:underline}.result-hero{display:flex;flex-direction:column;align-items:flex-start;gap:18px;margin-top:12px;padding:24px 20px;background:linear-gradient(135deg,#f6f2ff,#fdfcff);border:1px solid #ece6ff;border-radius:var(--radius);box-shadow:var(--shadow-sm)}.rh-name{margin-top:12px;font-size:34px;font-weight:800;letter-spacing:-.03em}.rh-hanja{margin-left:10px;font-size:20px;font-weight:600;color:var(--muted)}.rh-sub{margin-top:6px;font-size:14px;font-weight:700;color:var(--brand-deep)}.rh-comment{margin-top:12px;max-width:380px;font-size:14.5px;line-height:1.6;color:var(--sub)}.rh-score{text-align:left;flex-shrink:0}.rh-score .chips{justify-content:flex-start}.panel{margin-top:18px;padding:22px 20px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.panel-title{font-size:19px;font-weight:800;letter-spacing:-.02em}.panel-desc{margin-top:8px;font-size:14.5px;line-height:1.6;color:var(--sub)}.bars{margin-top:18px;display:flex;flex-direction:column;gap:12px}.bar-row{display:grid;grid-template-columns:74px 1fr 62px;align-items:center;gap:12px}.bar-label{font-size:15px;font-weight:800}.bar-label em{font-size:12px;font-style:normal;font-weight:600;color:var(--muted)}.bar-track{height:12px;background:#f1f3f5;border-radius:999px;overflow:hidden}.bar-fill{height:100%;border-radius:999px;transition:width .5s cubic-bezier(.16,1,.3,1)}.bar-tag{font-size:12px;font-weight:700;color:var(--sub);text-align:right}.pillars-grid{margin-top:18px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.pcol{display:flex;flex-direction:column;align-items:center;gap:5px;padding:12px 4px;background:#fbfaff;border:1px solid var(--line);border-radius:16px;text-align:center}.pcol.me{background:var(--brand-soft);border-color:#ddd2ff}.pcol-label{font-size:12px;font-weight:700;color:var(--muted)}.pcol-hanja{font-size:22px;font-weight:700;letter-spacing:-.02em}.pcol-ko{font-size:13px;font-weight:600;color:var(--brand)}.pcol-ten{font-size:12px;font-weight:700;color:var(--sub);margin-top:2px}.pcol-ten.sub{color:var(--muted);margin-top:0}.pcol-stage{font-size:11.5px;color:var(--muted)}.pcol-shin{font-size:11px;font-weight:700;color:#e8590c;background:#fff4e6;padding:2px 7px;border-radius:999px}.pcol-none{font-size:12px;color:var(--muted);padding:20px 0}.sound-flow{margin-top:16px;display:flex;gap:8px;align-items:center}.sound-node{width:40px;height:40px;border-radius:12px;color:#fff;font-weight:800;font-size:16px;display:flex;align-items:center;justify-content:center}.cond-list{margin-top:16px;display:flex;flex-direction:column;gap:10px}.cond{display:flex;align-items:center;gap:10px;font-size:14px}.cond-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cond-dot.ok{background:#12b886}.cond-dot.no{background:#f59f00}.cond-label{font-weight:700;color:var(--ink);min-width:92px}.cond-flow{color:var(--sub);font-weight:600}.warn{margin-top:14px;padding:12px 14px;background:#fff4e6;border-radius:12px;font-size:13.5px;font-weight:600;color:#e8590c}.items{margin-top:18px;display:grid;grid-template-columns:1fr;gap:16px}.item-head{display:flex;align-items:baseline;justify-content:space-between}.item-label{font-size:15px;font-weight:700}.item-score{font-size:17px;font-weight:800;color:var(--brand)}.item-score em{font-size:12px;font-style:normal;font-weight:600;color:var(--muted)}.item-track{height:8px;margin-top:8px;background:#f1f3f5;border-radius:999px;overflow:hidden}.item-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#9775fa,var(--brand))}.item-comment{margin-top:8px;font-size:13px;line-height:1.55;color:var(--sub)}.deep{background:linear-gradient(160deg,#f7f4ff,#fdfcff);border-color:#ece6ff}.deep-mascot{display:block;width:190px;margin:0 auto 14px;filter:drop-shadow(0 10px 18px rgba(78,40,160,.16))}.deep-grid{margin-top:18px;display:grid;grid-template-columns:1fr;gap:12px}.deep-card{display:flex;flex-direction:column;gap:12px;padding:20px;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-sm)}.deep-ic{font-size:26px}.deep-body h3{font-size:16px;font-weight:800}.deep-body p{margin-top:6px;font-size:13.5px;line-height:1.55;color:var(--sub)}.deep-lock{margin-top:auto;height:44px;border-radius:12px;background:#f3f0ff;color:var(--brand-deep);font-weight:800;font-size:14px;border:1px solid #e5ddff;cursor:pointer}.checkout{padding-top:24px;padding-bottom:60px}.checkout-mascot{display:block;width:150px;margin:0 auto 12px;filter:drop-shadow(0 10px 18px rgba(78,40,160,.16))}.checkout-title,.checkout .panel-desc{text-align:center}.product-list{margin-top:18px;display:flex;flex-direction:column;gap:10px}.product{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px;border-radius:16px;border:1.5px solid var(--line);background:var(--surface)}.product.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 3px #7048e81f}.product.bundle{border-style:dashed}.product.bundle.on{border-style:solid}.product-ic{font-size:24px}.product-body{flex:1;display:flex;flex-direction:column;gap:3px}.product-name{font-size:15px;font-weight:800}.product-badge{margin-left:6px;font-style:normal;font-size:11px;font-weight:800;color:#e8590c;background:#fff4e6;padding:2px 8px;border-radius:999px}.product-desc{font-size:12.5px;line-height:1.5;color:var(--sub)}.product-price{font-size:15px;font-weight:800;color:var(--brand-deep);flex-shrink:0}.checkout-total{display:flex;justify-content:space-between;align-items:center;margin:18px 2px 12px;font-size:15px;color:var(--sub);font-weight:700}.checkout-total b{font-size:22px;color:var(--ink);letter-spacing:-.02em}.checkout-note{margin-top:12px;text-align:center;font-size:13px;color:var(--muted);background:#f5f6f8;border-radius:10px;padding:10px 12px}.bundle-cta{width:100%;margin-top:14px;height:50px;border-radius:14px;background:linear-gradient(135deg,#ffd43b,#fab005);color:#5f3d00;font-size:15px;font-weight:800;box-shadow:0 6px 16px #fab0054d}.legal{padding-top:24px;padding-bottom:60px}.legal-title{margin-top:14px;font-size:26px;font-weight:800;letter-spacing:-.03em}.legal-h2{margin-top:26px;font-size:17px;font-weight:800}.legal-h3{margin-top:18px;font-size:15px;font-weight:700}.legal-p{margin-top:10px;font-size:14px;line-height:1.7;color:var(--sub)}.legal-list{margin:10px 0 0 18px;font-size:14px;line-height:1.7;color:var(--sub)}.legal-table-wrap{margin-top:12px;overflow-x:auto}.legal-table{border-collapse:collapse;font-size:12.5px;min-width:100%}.legal-table th,.legal-table td{border:1px solid var(--line);padding:8px 10px;text-align:left;color:var(--sub)}.legal-table th{background:#f8f9fb;font-weight:700;color:var(--ink)}.legal-hr{margin:24px 0;border:none;border-top:1px solid var(--line)}.foot2{margin-top:auto;padding-block:26px 30px;border-top:1px solid var(--line);text-align:center}.foot2-links{display:flex;justify-content:center;gap:8px;font-size:13px;color:var(--sub);font-weight:600}.foot2-links button:hover{color:var(--brand)}.foot2-links .strong{font-weight:800}.foot2-biz{margin-top:12px;font-size:12px;line-height:1.7;color:var(--muted)}.foot2-note{margin-top:10px;font-size:12px;color:var(--muted)}.pay-msg{margin:14px 0 22px;font-size:14.5px;line-height:1.7;color:var(--sub);word-break:break-all}.reading{padding-top:24px;padding-bottom:60px}.gen{padding:46px 10px 60px;text-align:center;display:flex;flex-direction:column;align-items:center}.gen-mascot{width:190px;filter:drop-shadow(0 14px 24px rgba(78,40,160,.2))}.gen-title{margin-top:18px;font-size:23px;font-weight:800;letter-spacing:-.03em}.gen-line{margin-top:10px;font-size:14.5px;color:var(--sub);min-height:22px}.gen-bar{width:100%;max-width:300px;height:8px;margin-top:20px;background:#efe9ff;border-radius:999px;overflow:hidden}.gen-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#9775fa,var(--brand));transition:width 1s linear}.gen-hint{margin-top:14px;font-size:12.5px;color:var(--muted)}.reading-head{margin-top:14px;text-align:center}.reading-title{margin-top:10px;font-size:26px;font-weight:800;letter-spacing:-.03em}.reading-section{margin-top:14px}.reading-body{margin-top:10px;font-size:14.5px;line-height:1.78;color:var(--sub);word-break:keep-all}.reading-body b{color:var(--ink)}.reading-body .li{display:block;padding-left:4px}.month-graph{margin-top:16px;padding:16px 14px 8px;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-sm)}.month-graph-title{font-size:14px;font-weight:800;margin-bottom:6px}.library{padding-top:24px;padding-bottom:60px}.library-title{margin-top:14px;font-size:26px;font-weight:800;letter-spacing:-.03em}.library-empty{margin-top:30px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px}.library-empty img{width:160px;filter:drop-shadow(0 10px 18px rgba(78,40,160,.14))}.library-empty p{font-size:14.5px;color:var(--sub);line-height:1.6;max-width:300px}.library-list{margin-top:18px;display:flex;flex-direction:column;gap:10px}.library-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:16px 14px;border-radius:16px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-sm)}.library-ic{font-size:24px}.library-body{flex:1;display:flex;flex-direction:column;gap:3px}.library-name{font-size:15px;font-weight:800}.library-sub{font-size:12.5px;color:var(--muted)}.library-arrow{color:var(--brand);font-weight:800}.baby{padding-bottom:60px}.baby-mascot{display:block;width:170px;margin:18px auto 4px;filter:drop-shadow(0 12px 20px rgba(78,40,160,.16))}.baby-banner{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin-bottom:24px;padding:16px;border-radius:18px;border:1px solid #ffe3ec;background:linear-gradient(135deg,#fff0f6,#fff8fb);box-shadow:var(--shadow-sm)}.baby-banner-ic{font-size:26px}.baby-banner-body{flex:1;display:flex;flex-direction:column;gap:3px}.baby-banner-body b{font-size:15px;font-weight:800}.baby-banner-body span{font-size:12.5px;color:var(--sub)}.baby-banner-arrow{color:#e64980;font-weight:800}.couple{padding-bottom:60px}.person-block{padding:14px 0 18px}.person-block+.person-block{border-top:1px dashed var(--line)}.person-label{font-size:14px;font-weight:800;color:var(--brand-deep);margin-bottom:10px}.couple .row{flex-direction:row}.couple .row .field{min-width:0}.baby-recs{margin-top:14px;display:flex;flex-direction:column;gap:10px}.baby-rec{padding:14px;border:1px solid var(--line);border-radius:14px;background:#fbfaff}.baby-rec-head{display:flex;align-items:baseline;justify-content:space-between}.baby-rec-name{font-size:16px;font-weight:800}.baby-rec-name em{margin-left:8px;font-style:normal;font-size:13px;font-weight:600;color:var(--muted)}.baby-rec-score{font-size:15px;font-weight:800;color:var(--brand)}.baby-rec-why{margin-top:6px;font-size:13px;line-height:1.55;color:var(--sub)}
