/* Editorial design tokens: single source of truth */
@import url('https://fonts.googleapis.com/css2?family=Hahmlet:wght@400;600;700&family=IBM+Plex+Sans+KR:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;600&display=swap');
:root{
 color-scheme:light;
 --tf-primary:#1F5C4D;
 --tf-primary-hover:#174638;
 --tf-secondary:#8FBBAD;
 --tf-bg:#F2F3F0;
 --tf-surface:#FFFFFF;
 --tf-soft:#FAFBF9;
 --tf-border:#C4CBC1;
 --tf-text:#141714;
 --tf-muted:#4E554E;
 --tf-warning:#8A6A1C;
 --tf-home-bg:#F2F3F0;
 --tf-home-section:#FAFBF9;
 --tf-danger:#9A3B2B;
 --tf-on-primary:#FFFFFF;
 --tf-soft-sage:#E2EDE8;
 --tf-soft-warm:#FAFBF9;
 --tf-warning-soft:#F5EEDD;
 --tf-danger-soft:#F7E8E3;
 --tf-overlay:color-mix(in srgb,var(--tf-text) 55%,transparent);
 --tf-shadow-soft:color-mix(in srgb,var(--tf-primary) 8%,transparent);
 --tf-shadow:color-mix(in srgb,var(--tf-primary) 18%,transparent);
 --tf-surface-translucent:color-mix(in srgb,var(--tf-surface) 72%,transparent);
 --tf-soft-translucent:color-mix(in srgb,var(--tf-soft) 90%,transparent);
 --tf-button-radius-pill:6px;
 --tf-button-radius-standard:6px;
 --tf-button-radius-compact:3px;
 font-family:'IBM Plex Sans KR','Malgun Gothic',sans-serif;
}
body{color:var(--tf-text);background:var(--tf-bg);font-family:'IBM Plex Sans KR','Malgun Gothic',sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,.flow h1,.condition-card h1,.result-toolbar h1,.auth-card h1{font-family:'Hahmlet','Malgun Gothic',serif;font-weight:600;letter-spacing:-.035em}
button,input,select,textarea{font-family:inherit}
.condition-kicker,.flow-logo,.section-kicker,.eyebrow,.conversation-label{font-family:'IBM Plex Mono',monospace;letter-spacing:.1em}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-color:var(--tf-secondary)}
body>header,.service-dropdown{background:var(--tf-surface);border-color:var(--tf-border)}
.service-dropdown a:hover,.service-dropdown a:focus-visible{background:var(--tf-soft)}
.primary,.flow .btn.strong{background:var(--tf-primary);border-color:var(--tf-primary);color:var(--tf-on-primary)}
.primary:hover,.flow .btn.strong:hover{background:var(--tf-primary-hover);border-color:var(--tf-primary-hover)}
.flow,.planner-work{background:var(--tf-bg);color:var(--tf-text)}
.planner-sidebar{background:var(--tf-soft-sage);border-color:var(--tf-border)}
.planner-home,.panel,.result-cart,.result-chatbox,.conversation-current,.part-row,.candidate-card,.service-dropdown{background:var(--tf-surface)}
.planner-home,.panel,.result-cart,.result-chatbox,.conversation-current,.part-row,.candidate-card,.service-dropdown,.flow .btn,.flow input:not([type=checkbox]),.flow select,.flow textarea{border-color:var(--tf-border)}
.planner-new,.flow-steps a,.flow-steps span,.planner-saved a,.flow .notice,.evidence-card,.review,.refined-review-panel{background:var(--tf-soft)}
.planner-saved .current,.flow-steps li.active a,.flow-steps li.active span,.condition-choice input:checked+span,.conversation-turn.user .conversation-bubble{background:var(--tf-primary);color:var(--tf-on-primary);border-color:var(--tf-primary)}
.condition-card,.condition-summary{background:var(--tf-surface);border-color:var(--tf-border)}
.condition-layout .conversation-bubble{background:var(--tf-soft-sage);border:1px solid var(--tf-secondary);box-shadow:0 8px 20px var(--tf-shadow)}
.condition-layout .conversation-turn.user .conversation-bubble{background:var(--tf-primary);border-color:var(--tf-primary);color:var(--tf-on-primary)}
.condition-layout .conversation-current{background:var(--tf-soft-warm);border-color:var(--tf-border)}
.condition-layout .conversation-complete{background:var(--tf-soft-sage);border:1px solid var(--tf-secondary)}
.condition-layout .condition-summary .summary-ready{background:var(--tf-soft-warm);border:1px solid var(--tf-border)}
.condition-layout .conversation-label,.condition-layout .condition-kicker{color:var(--tf-primary)}
.condition-layout .condition-summary-list div{border-color:var(--tf-border)}
.conversation-complete{background:var(--tf-secondary)}
.condition-choice span,.conversation-option,.flow .btn{background:var(--tf-surface);color:var(--tf-text);border-color:var(--tf-border)}
.conversation-option:hover,.conversation-option:focus-visible,.flow .btn:hover{background:var(--tf-soft);border-color:var(--tf-secondary)}
.flow .muted,.part-current,.condition-summary-list dt,.planner-side-note,.field-note,.score-muted,.review-filtered{color:var(--tf-muted)}
.flow .tag{background:var(--tf-border);color:var(--tf-primary)}
.flow .category-card .tag{color:var(--tf-text)}
.flow .tag.gray{background:var(--tf-soft);color:var(--tf-muted)}
.flow .tag.warn{background:var(--tf-warning-soft);color:var(--tf-text)}
.demo-note{background:var(--tf-warning-soft);color:var(--tf-text);border-color:var(--tf-border)}
.flow .report-banner,.toast{background:var(--tf-primary);color:var(--tf-on-primary)}
.flow .report-banner .muted,.flow .report-banner .flow-logo{color:var(--tf-on-primary)!important}
.flow .line,.flow th,.flow td,.about-section,.about-faq details,.site-footer,.footer-menu-bar,.footer-bottom{border-color:var(--tf-border)}
.site-footer{background:var(--tf-soft);color:var(--tf-muted)}
body:not(.tf-home-page) .site-footer{display:none}
.footer-menu-bar{background:var(--tf-surface)}
.about-category,.about-cta{background:var(--tf-soft);border-color:var(--tf-border)}
.about-category.baby-category{background:var(--tf-soft);border-color:var(--tf-border)}
.section-kicker,.about-card-top,.process-number,.flow-logo{color:var(--tf-primary)}
.about-text-link,.footer-support a,.report-product-link{color:var(--tf-primary);border-color:var(--tf-secondary)}
.report-product-table th{background:var(--tf-soft)}
.report-product-table tfoot th,.report-product-table tfoot td{background:var(--tf-border)}
.review-score-trigger,.report-review-metric,.review-score-strip{background:var(--tf-surface);border-color:var(--tf-border)}
.rating-score-track,.rating-distribution-track{background:var(--tf-soft-sage)}
.rating-score-track i,.rating-distribution-track .before,.rating-legend i{background:var(--tf-secondary)}
.rating-score-track i.filtered,.rating-distribution-track .after,.rating-legend .after{background:var(--tf-primary)}
.review-score-strip .score-arrow,.review-score-trigger .review-arrow,.report-review-metric .review-arrow{color:var(--tf-warning)}
input[type=checkbox],input[type=radio]{accent-color:var(--tf-primary)}
.flow.auth-route{padding:0;background:var(--tf-bg)}
.auth-page{min-height:calc(100vh - 88px);padding:52px 20px 90px;background:var(--tf-bg);color:var(--tf-text)}
.auth-wrap{width:min(560px,100%);margin:0 auto}
.auth-top{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px;font-size:14px;color:var(--tf-muted)}
.auth-top a{font-weight:700;color:var(--tf-primary);border-bottom:1px solid var(--tf-secondary)}
.auth-back{border:0!important}
.auth-demo-note{padding:12px 17px;background:var(--tf-warning-soft);color:var(--tf-text);border:1px solid var(--tf-border);border-radius:10px;font-size:13px;line-height:1.7;margin-bottom:26px}
.auth-card{background:var(--tf-surface);border:1px solid var(--tf-border);border-radius:40px;padding:clamp(28px,5vw,54px);box-shadow:0 18px 50px var(--tf-shadow-soft);margin-bottom:20px}
.auth-eyebrow{display:block;margin-bottom:12px;font-size:12px;letter-spacing:1.8px;color:var(--tf-primary);font-weight:700}
.auth-card h1{font-size:clamp(27px,3.4vw,36px);line-height:1.3;letter-spacing:-1.4px;margin:0 0 12px;font-weight:800;color:var(--tf-text)}
.auth-card .auth-sub{margin:0 0 22px;font-size:15px;line-height:1.8;color:var(--tf-muted)}
.auth-hint{background:var(--tf-soft);border:1px dashed var(--tf-border);border-radius:12px;padding:11px 15px;font-size:12.5px;line-height:1.7;color:var(--tf-muted);margin:0 0 24px}
.auth-hint b{color:var(--tf-primary)}
.auth-field{margin-bottom:18px}
.flow .auth-field label{display:block;margin:0 0 8px;font-size:14px;font-weight:700;color:var(--tf-text)}
.auth-two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.flow.auth-route input[type=email],.flow.auth-route input[type=password],.flow.auth-route input[type=text]{width:100%;min-height:50px;border:1px solid var(--tf-border);background:var(--tf-surface);border-radius:12px;padding:0 14px;font:inherit;font-size:15px;color:var(--tf-text)}
.flow.auth-route input::placeholder{color:var(--tf-muted)}
.flow.auth-route input.auth-invalid{border-color:var(--tf-danger)}
.flow.auth-route input.auth-ok{border-color:var(--tf-primary)}
.auth-row-between{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:2px 0 22px;flex-wrap:wrap}
.flow .auth-check-inline{display:flex;align-items:center;gap:8px;margin:0;font-size:13.5px;font-weight:400;color:var(--tf-text);cursor:pointer}
.auth-link-button{border:0;background:none;padding:0;color:var(--tf-primary);font-size:13px;text-decoration:underline;text-underline-offset:3px}
.auth-forgot{margin:-8px 0 18px;padding:11px 13px;border-radius:10px;background:var(--tf-soft);color:var(--tf-muted);font-size:12.5px;line-height:1.6}
.auth-field-note{margin:8px 2px 0;font-size:12.5px;line-height:1.6;color:var(--tf-muted)}
.auth-field-note.auth-ok-text{color:var(--tf-text)}
.auth-field-note.auth-bad-text,.auth-error{color:var(--tf-danger)}
.auth-field-note a{color:var(--tf-primary);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.auth-error{font-size:13.5px;min-height:1.4em;margin:4px 2px}
.auth-btn{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:54px;border:1px solid var(--tf-primary);border-radius:11px;padding:0 16px;background:var(--tf-primary);color:var(--tf-on-primary);font:inherit;font-size:16px;font-weight:800;cursor:pointer}
.auth-btn:hover{background:var(--tf-primary-hover)}
.auth-switch{text-align:center;margin:22px 0 0;font-size:14px;color:var(--tf-muted)}
.auth-switch a{font-weight:700;color:var(--tf-primary);border-bottom:1px solid var(--tf-secondary)}
.auth-terms{margin:26px 0 6px;padding-top:22px;border-top:1px solid var(--tf-border)}
.flow .auth-term-all{display:flex;align-items:center;gap:10px;padding-bottom:16px;margin:0 0 14px;border-bottom:1px solid var(--tf-border);font-weight:800;font-size:15px;color:var(--tf-text)}
.auth-term-item{border:1px solid var(--tf-border);border-radius:14px;padding:13px 15px;margin-bottom:9px;background:var(--tf-soft-sage)}
.auth-term-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.flow .auth-term-row>label{display:flex;align-items:center;gap:10px;margin:0;font-size:14px;font-weight:400;color:var(--tf-text);cursor:pointer}
.auth-term-item summary{list-style:none;cursor:pointer;color:var(--tf-primary);font-size:12.5px;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.auth-term-item summary::-webkit-details-marker{display:none}
.auth-term-detail{margin-top:13px;padding-top:13px;border-top:1px dashed var(--tf-border);max-height:220px;overflow:auto;font-size:12.5px;line-height:1.85;color:var(--tf-muted)}
.auth-term-detail h3{font-size:12.5px;margin:12px 0 4px;color:var(--tf-primary)}
.auth-term-detail h3:first-child{margin-top:0}
.auth-legal-note{margin-top:12px;padding-top:10px;border-top:1px dashed var(--tf-border);color:var(--tf-muted);font-style:italic}
.auth-success-badge{width:56px;height:56px;border-radius:50%;background:var(--tf-soft);color:var(--tf-primary);display:grid;place-items:center;font-size:28px;margin-bottom:18px}
.auth-danger{border-color:var(--tf-danger);background:var(--tf-danger-soft)}
.auth-danger .auth-eyebrow{color:var(--tf-danger)}
.auth-danger-row{display:flex;gap:10px;flex-wrap:wrap}
.auth-secondary-btn,.auth-danger-btn{min-height:48px;border:1px solid var(--tf-border);border-radius:11px;padding:0 16px;background:var(--tf-surface);color:var(--tf-primary);font:inherit;font-weight:700;cursor:pointer}
.auth-danger-btn{border-color:var(--tf-warning);color:var(--tf-danger);background:var(--tf-danger-soft)}
@media(max-width:600px){.auth-page{padding:30px 16px 60px}.auth-top{align-items:flex-start;font-size:12.5px}.auth-card{border-radius:26px;padding:26px 20px}.auth-two-col{grid-template-columns:1fr}}
@media print{body,.flow,.planner-work,.panel{background:var(--tf-surface)!important}.flow .report-banner{background:var(--tf-surface)!important;color:var(--tf-text)!important}.flow .report-banner .muted,.flow .report-banner .flow-logo{color:var(--tf-text)!important}}
/* Home-only Vintage surface balance. */
main{background:linear-gradient(180deg,var(--tf-home-bg) 0%,var(--tf-home-bg) 32%,var(--tf-home-section) 68%,var(--tf-home-bg) 100%)}
main>.intro,main .home-info,main .about-section,main .about-section:nth-of-type(even){background:transparent}
main .about-section{border-color:color-mix(in srgb,var(--tf-border) 45%,transparent)}
main .about-category,main .about-category.baby-category{background:var(--tf-surface)}
main .about-cta{background:var(--tf-home-section)}
/* Three-level button corner system: pill/icon, standard, compact. */
button{border-radius:var(--tf-button-radius-standard)!important}
.primary,.top-cta,.play,.flow .chip,.result-overlay-close,.close,.cart-remove,#lang-switch{border-radius:var(--tf-button-radius-pill)!important}
.sidebar-toggle{border-radius:50%!important}
.choice,.flow .btn,.flow .category-card,.conversation-option,.candidate-card,.review-score-trigger,.planner-home,.planner-new,.planner-saved a,.spec-file-button,.auth-btn,.auth-secondary-btn,.auth-danger-btn,.condition-card,.condition-summary{border-radius:var(--tf-button-radius-standard)!important}
.basket-context-menu button,.basket-name-form button,.cart-qty button,.summary-edit,.summary-review-link,.report-product-link,.cart-product-link{border-radius:var(--tf-button-radius-compact)!important}
