/* KLN Surname Engine components (theme-agnostic) */
:root{--kln-accent:#0F6E56;--kln-accent-soft:#E1F5EE;--kln-accent-dark:#04342C;--kln-ink:#1d1d1b;--kln-muted:#5f5e5a;--kln-line:#e5e3dc;--kln-bg:#faf9f6;--kln-white:#fff;--kln-radius:12px}
.kln-hg{font-family:"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic","NanumGothic",sans-serif}
.kln-lead{font-size:1.15em;color:var(--kln-muted);line-height:1.65}
/* checker */
.kln-checker{background:var(--kln-white);border:1px solid var(--kln-line);border-radius:var(--kln-radius);padding:22px;margin:0 0 28px}
.kln-checker__title{margin:0 0 12px;font-size:1.2em}
.kln-checker__form{display:flex;gap:8px}
.kln-checker__input{flex:1;font-size:17px;padding:11px 14px;border:1px solid #cfcdc4;border-radius:8px;background:#fff;min-width:0}
.kln-checker__input:focus{outline:none;border-color:var(--kln-accent);box-shadow:0 0 0 3px var(--kln-accent-soft)}
.kln-checker__btn{background:var(--kln-accent);color:#fff;border:0;border-radius:8px;padding:0 18px;font-size:15px;font-weight:500;cursor:pointer;white-space:nowrap}
.kln-checker__btn:hover{background:var(--kln-accent-dark)}
.kln-checker__hint{font-size:13px;color:var(--kln-muted);margin-top:10px}
.kln-checker__result{margin-top:14px}
.kln-checker__note,.kln-checker__err,.kln-checker__loading,.kln-checker__no{font-size:14px;color:var(--kln-muted);margin:8px 0}
.kln-checker__no{background:var(--kln-bg);border-radius:8px;padding:12px 14px;color:var(--kln-ink)}
.kln-checker__err{color:#a32d2d}
/* surname card */
.kln-card{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;background:var(--kln-bg);border-radius:var(--kln-radius);padding:16px 18px;margin:0 0 12px;text-decoration:none;color:var(--kln-ink);border:1px solid transparent}
a.kln-card:hover{border-color:var(--kln-accent);background:#fff}
.kln-card__hg{font-size:44px;line-height:1;font-family:"Apple SD Gothic Neo","Noto Sans KR","Malgun Gothic",sans-serif;color:var(--kln-accent-dark);min-width:56px;text-align:center}
.kln-card__title{font-weight:600;font-size:18px}
.kln-card__title span{font-weight:400;color:var(--kln-muted);font-size:14px}
.kln-card__sub{font-size:14px;color:var(--kln-muted);margin-top:3px;line-height:1.5}
.kln-card__more{font-size:13px;color:var(--kln-accent);margin-top:6px}
.kln-card--mini{margin:16px 0}
.kln-badge{font-size:12px;font-weight:500;padding:4px 10px;border-radius:999px;white-space:nowrap;background:#eee;color:#444}
.kln-badge--top{background:#E6F1FB;color:#042C53}.kln-badge--common{background:var(--kln-accent-soft);color:var(--kln-accent-dark)}
.kln-badge--uncommon{background:#FAEEDA;color:#412402}.kln-badge--rare{background:#FAECE7;color:#4A1B0C}.kln-badge--ultra{background:#EEEDFE;color:#26215C}
/* metrics */
.kln-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:0 0 28px}
.kln-metric{background:var(--kln-bg);border-radius:10px;padding:14px 16px}
.kln-metric span{display:block;font-size:12px;color:var(--kln-muted)}
.kln-metric strong{display:block;font-size:24px;font-weight:600;margin:2px 0;line-height:1.2}
.kln-metric small{font-size:12px;color:var(--kln-muted)}
.kln-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:0 0 16px}
.kln-stats div{background:var(--kln-bg);border-radius:8px;padding:10px 12px}
.kln-stats span{display:block;font-size:12px;color:var(--kln-muted)}
.kln-stats strong{font-size:18px}
/* table */
.kln-tablewrap{margin:0 0 28px}
.kln-table__controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 10px}
.kln-table__search{flex:1;min-width:200px;padding:9px 12px;border:1px solid #cfcdc4;border-radius:8px;font-size:15px}
.kln-table__letters{display:flex;flex-wrap:wrap;gap:3px}
.kln-table__letters button{border:1px solid var(--kln-line);background:#fff;border-radius:6px;padding:4px 7px;font-size:12px;cursor:pointer;color:var(--kln-muted)}
.kln-table__letters button.is-on,.kln-table__letters button:hover{background:var(--kln-accent);color:#fff;border-color:var(--kln-accent)}
.kln-table{width:100%;border-collapse:collapse;font-size:14px}
.kln-table th{text-align:left;font-weight:500;font-size:12px;color:var(--kln-muted);padding:8px 8px;border-bottom:1px solid #cfcdc4;text-transform:uppercase;letter-spacing:.03em}
.kln-table th[data-sort]:after{content:" ↕";opacity:.5}
.kln-table td{padding:9px 8px;border-bottom:1px solid var(--kln-line);vertical-align:middle}
.kln-table td a{font-weight:500;text-decoration:none;color:var(--kln-accent-dark)}
.kln-table td a:hover{text-decoration:underline}
.kln-table td small{display:block;color:var(--kln-muted);font-size:12px}
.kln-table .kln-hg{font-size:17px}.kln-table .kln-hj{color:var(--kln-muted)}
.kln-table .kln-mean{color:var(--kln-muted);max-width:220px}
.kln-table--plain td,.kln-table--plain th{padding:8px}
.kln-bar{height:6px;background:var(--kln-line);border-radius:3px;overflow:hidden;min-width:70px}
.kln-bar i{display:block;height:100%;background:#5DCAA5;border-radius:3px}
/* top list */
.kln-top{list-style:none;margin:0 0 28px;padding:0;counter-reset:k}
.kln-top li{display:grid;grid-template-columns:1fr 140px 150px;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--kln-line);counter-increment:k}
.kln-top li a{text-decoration:none;color:var(--kln-ink);display:flex;align-items:center;gap:10px}
.kln-top li a:before{content:counter(k);font-size:12px;color:var(--kln-muted);width:18px}
.kln-top .kln-hg{font-size:24px;color:var(--kln-accent-dark)}
.kln-top strong{font-size:17px}.kln-top em{font-style:normal;color:var(--kln-muted);font-size:13px}
.kln-top small{color:var(--kln-muted);font-size:13px;text-align:right}
/* related / lists */
.kln-related{list-style:none;padding:0;margin:0 0 24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.kln-related li{background:var(--kln-bg);border-radius:8px;padding:10px 12px}
.kln-related a{text-decoration:none;color:var(--kln-ink);font-weight:500}
.kln-related .kln-hg{font-size:18px;color:var(--kln-accent-dark);margin-right:4px}
.kln-related small{display:block;color:var(--kln-muted);font-size:12px}
.kln-az__group{margin:0 0 18px}.kln-az__group h3{margin:0 0 6px;font-size:16px}.kln-az__group h3 small{color:var(--kln-muted);font-weight:400}
.kln-az__group ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px}
.kln-az__group li a{display:inline-block;background:var(--kln-bg);border-radius:6px;padding:5px 10px;text-decoration:none;color:var(--kln-ink);font-size:14px}
.kln-az__group li a:hover{background:var(--kln-accent-soft)}
.kln-az__group .kln-hg{color:var(--kln-muted);font-size:13px}
/* faq & grid */
.kln-faq h3{font-size:17px;margin:18px 0 6px}
.kln-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:0 0 28px}
.kln-grid a{display:block;border:1px solid var(--kln-line);border-radius:var(--kln-radius);padding:16px;text-decoration:none;color:var(--kln-ink)}
.kln-grid a:hover{border-color:var(--kln-accent)}
.kln-grid strong{display:block;margin-bottom:4px}.kln-grid span{font-size:13px;color:var(--kln-muted);line-height:1.5}
.kln-source{font-size:13px;color:var(--kln-muted);border-top:1px solid var(--kln-line);padding-top:10px}
.kln-extra{margin:20px 0}
@media (max-width:640px){.kln-checker__form{flex-direction:column}.kln-top li{grid-template-columns:1fr;gap:6px}.kln-top small{text-align:left}.kln-table .kln-mean,.kln-table .kln-hj{display:none}.kln-card{grid-template-columns:auto 1fr}.kln-badge{grid-column:2}}

/* tools */
.kln-tool{background:var(--kln-white);border:1px solid var(--kln-line);border-radius:var(--kln-radius);padding:22px;margin:0 0 28px}
.kln-writer__input{flex:1;font-size:17px;padding:11px 14px;border:1px solid #cfcdc4;border-radius:8px;min-width:0}
.kln-writer__input:focus{outline:none;border-color:var(--kln-accent);box-shadow:0 0 0 3px var(--kln-accent-soft)}
.kln-writer__result{margin-top:14px}
.kln-card__hg--wide{font-size:34px;min-width:auto;letter-spacing:.02em}
.kln-writer__copy,.kln-quiz__share,.kln-quiz__again{cursor:pointer;border:0}
.kln-quiz__step{margin:0 0 14px}
.kln-quiz__step label{display:block;font-size:14px;font-weight:500;margin-bottom:6px}
.kln-quiz__step label small{font-weight:400;color:var(--kln-muted)}
.kln-quiz__row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.kln-tool input[type=text],.kln-tool select{width:100%;font-size:16px;padding:10px 12px;border:1px solid #cfcdc4;border-radius:8px;background:#fff;-webkit-appearance:none;appearance:none;color:var(--kln-ink)}
.kln-tool select{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%235f5e5a' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 12px center;padding-right:32px}
.kln-tool input[type=text]:focus,.kln-tool select:focus{outline:none;border-color:var(--kln-accent);box-shadow:0 0 0 3px var(--kln-accent-soft)}
.kln-quiz__opts{display:flex;flex-wrap:wrap;gap:8px}
.kln-quiz__opts label{font-weight:400;font-size:14px;background:var(--kln-bg);padding:7px 12px;border-radius:999px;cursor:pointer;margin:0}
.kln-quiz__opts input{margin-right:4px}
.kln-quiz__go,.kln-gen__go{margin-top:6px;padding:12px 22px;font-size:16px}
.kln-quiz__result{margin-top:16px}
.kln-quiz__actions{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}
.kln-quiz__actions .kln-badge{text-decoration:none;background:var(--kln-accent-soft);color:var(--kln-accent-dark)}
.kln-mgroup{margin:0 0 26px}.kln-mgroup h3{margin:0 0 4px}.kln-mgroup p{color:var(--kln-muted);font-size:14px;margin:0 0 10px}
.kln-gen__result{margin-top:16px}
.kln-gen__list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.kln-gen__list li{background:var(--kln-bg);border-radius:10px;padding:12px 14px;position:relative}
.kln-gen__list .kln-hg{display:block;font-size:26px;color:var(--kln-accent-dark)}
.kln-gen__list strong{display:block;font-size:16px}
.kln-gen__list small{display:block;color:var(--kln-muted);font-size:12px;line-height:1.5;margin-top:2px}
.kln-gen__list .kln-badge{position:absolute;top:12px;right:12px;cursor:pointer;border:0}
