:root{--toss-bg: #f6f7f8;--toss-card: #ffffff;--toss-text: #1f2933;--toss-subtle: #5b6675;--toss-muted: #8891a0;--toss-line: #e5e8ee;--toss-blue: #3182f6;--toss-blue-soft: #e8f1ff;--toss-green: #2fc7a2;--toss-red: #ef4946;--toss-radius-lg: 18px;--toss-radius-md: 12px;--toss-radius-sm: 8px;--font-family: "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Segoe UI", sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%}body{font-family:var(--font-family);background:var(--toss-bg);color:var(--toss-text);line-height:1.5;min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased}#root{min-height:100%}.bg-glow,.bg-glow-1,.bg-glow-2,.bg-glow-3{display:none}.container{position:relative;width:min(100%,430px);max-width:430px;margin:0 auto;padding:20px 16px calc(24px + var(--safe-bottom));padding-top:calc(18px + var(--safe-top))}.header{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.logo-area{display:flex;align-items:center;gap:12px}.logo-icon{width:36px;height:36px;border-radius:10px;background:linear-gradient(150deg,#2f66f5,#4589ff);position:relative;flex-shrink:0;overflow:hidden}.logo-mark{position:absolute;bottom:6px;width:4px;border-radius:999px;background:#fff}.bar-1{left:8px;height:9px}.bar-2{left:16px;height:14px}.bar-3{left:24px;height:19px}.header h1{font-size:25px;font-weight:800;letter-spacing:-.7px}.intro-screen{margin:10px 0;background:var(--toss-card);border:1px solid var(--toss-line);border-radius:var(--toss-radius-lg);box-shadow:0 2px 10px #0c163808;padding:28px 20px;display:flex;flex-direction:column;gap:14px;min-height:calc(100vh - 56px);justify-content:center}.intro-chip{align-self:flex-start;font-size:11px;font-weight:700;color:#1c58d8;background:var(--toss-blue-soft);border-radius:999px;padding:5px 10px}.intro-title{font-size:30px;line-height:1.2;letter-spacing:-.8px}.intro-desc{color:var(--toss-subtle);line-height:1.6;font-size:14px}.intro-list{list-style:none;display:flex;flex-direction:column;gap:10px;color:var(--toss-subtle);font-size:14px;padding-left:0}.intro-list li{padding-left:14px;position:relative}.intro-list li:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--toss-blue);position:absolute;left:0;top:8px}.intro-buttons{display:flex;flex-direction:column;gap:10px}.intro-btn{text-align:center;max-width:none}.ghost-btn{background:#fff;color:var(--toss-blue);border:1px solid var(--toss-line);box-shadow:none}.subtitle{margin-top:2px;color:var(--toss-subtle);font-size:13px}.date-badge{align-self:flex-start;font-size:12px;color:var(--toss-muted);border:1px solid var(--toss-line);background:#fff;border-radius:999px;padding:6px 12px}.section-title{font-size:18px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:8px}.badge{display:inline-flex;font-size:11px;font-weight:700;color:#fff;background:var(--toss-blue);border-radius:999px;padding:3px 8px}.legend-section,.analyze-section,.loading-state,.error-state,.stock-card,.report-section{background:var(--toss-card);border:1px solid var(--toss-line);border-radius:var(--toss-radius-lg);box-shadow:0 2px 10px #0c163808}.legend-section{padding:16px;margin-bottom:16px}.legend-grid{display:grid;grid-template-columns:1fr;gap:8px}.legend-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--toss-line);border-radius:var(--toss-radius-md);background:#fff}.legend-icon{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:var(--toss-blue-soft);color:var(--toss-blue);font-weight:700;font-size:12px;flex-shrink:0}.legend-label{display:block;font-size:14px;font-weight:600}.legend-score{display:inline-block;margin-top:2px;font-size:12px;color:var(--toss-muted);font-weight:600}.analyze-section{padding:16px;margin-bottom:18px}.filter-toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;margin:0 6px 10px 0;-webkit-user-select:none;user-select:none}.filter-toggle input[type=checkbox]{appearance:none;width:20px;height:20px;border:1.5px solid var(--toss-line);border-radius:6px;background:#fff;position:relative}.filter-toggle input[type=checkbox]:checked{border-color:var(--toss-blue);background:var(--toss-blue)}.filter-toggle input[type=checkbox]:after{content:"";position:absolute;inset:3px;border-radius:4px;background:#fff;transform:scale(0);transition:transform .15s ease}.filter-toggle input[type=checkbox]:checked:after{transform:scale(1)}.toggle-label{font-size:13px;color:var(--toss-subtle);font-weight:600}.analyze-btn{width:100%;border:0;border-radius:14px;padding:14px 16px;background:var(--toss-blue);color:#fff;font-family:var(--font-family);font-size:15px;font-weight:700;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease;box-shadow:0 8px 20px #3182f633}.analyze-btn:hover:not(:disabled){background:#1f72e6}.analyze-btn:active:not(:disabled){transform:translateY(1px)}.analyze-btn:disabled{background:#9dbaf3;cursor:not-allowed;box-shadow:none}.btn-text{display:block;font-size:16px}.btn-sub{margin-top:2px;display:block;font-size:12px;font-weight:400;color:#ffffffe0}.loading-state{padding:24px 16px;text-align:center;margin-bottom:18px}.loading-spinner{margin:0 auto 14px;width:58px;height:58px;position:relative}.spinner-ring{position:absolute;inset:0;border:3px solid rgba(49,130,246,.2);border-top-color:var(--toss-blue);border-radius:50%;animation:spin 1.1s linear infinite}.ring-2{inset:8px;border-color:#3182f629;border-top-color:#5f95ff;animation-duration:1.5s;animation-direction:reverse}.ring-3{inset:16px;border-color:#0000000a;border-top-color:#8dc0ff;animation-duration:1.9s}.loading-title{font-size:18px;margin-bottom:4px}.loading-desc{color:var(--toss-subtle);font-size:13px;margin-bottom:14px}.loading-steps{display:flex;flex-direction:column;gap:8px;align-items:stretch}.step{border:1px solid var(--toss-line);border-radius:var(--toss-radius-sm);background:#fbfdff;font-size:12px;padding:8px 10px;color:var(--toss-muted);text-align:left}.step.active{color:var(--toss-text);border-color:#b6d0fd;background:#edf4ff}.step.done{color:#2b9d73}.error-state{padding:24px 16px;text-align:center;margin-bottom:18px}.error-state h3{font-size:17px;margin-bottom:6px;color:#ea4744}.error-state p{color:var(--toss-subtle);font-size:13px;margin-bottom:14px}.retry-btn{border:1px solid #f3c8c8;background:#fff;color:#f23f46;border-radius:10px;font-size:13px;padding:10px 16px;font-weight:700;cursor:pointer}.results-section{margin-bottom:16px}.results-header{margin-bottom:12px}.results-meta{display:flex;flex-wrap:wrap;gap:8px}.meta-badge{font-size:12px;color:var(--toss-muted);border:1px solid var(--toss-line);border-radius:999px;padding:4px 8px;background:#fff}.stock-cards{display:flex;flex-direction:column;gap:12px}.stock-card{padding:16px;position:relative}.card-header{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;margin-bottom:12px}.card-left{display:flex;align-items:center;min-width:0;gap:10px}.rank-badge{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--toss-blue-soft);color:var(--toss-blue);font-size:12px;font-weight:800;flex-shrink:0}.rank-1 .rank-badge{background:linear-gradient(180deg,#fff5d7,#f5db79);color:#9d6900}.rank-2 .rank-badge{background:linear-gradient(180deg,#f3f7ff,#e3ecff);color:#5a79bc}.rank-3 .rank-badge{background:linear-gradient(180deg,#fff1e9,#ffd8c4);color:#ad6b44}.stock-name{font-size:18px;font-weight:800;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stock-meta{margin-top:4px;display:flex;gap:6px}.stock-ticker,.stock-market{font-size:11px;color:var(--toss-muted);background:#f5f7fb;border-radius:999px;padding:2px 7px}.card-right{text-align:right}.total-score{font-size:30px;line-height:1;font-weight:900;color:#111827}.score-label{margin-top:4px;color:var(--toss-muted);font-size:11px;font-weight:600}.price-info{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}.price-item{background:#fafcff;border:1px solid var(--toss-line);border-radius:var(--toss-radius-sm);padding:8px}.price-label{display:block;color:var(--toss-muted);font-size:11px;font-weight:600;margin-bottom:3px}.price-value{font-size:14px;font-weight:700}.price-value.positive{color:#10a67d}.price-value.negative{color:#ea4744}.score-bars{margin-bottom:10px}.score-bar-item{display:grid;grid-template-columns:72px 1fr 42px;align-items:center;gap:10px;margin-bottom:8px}.score-bar-label{font-size:12px;color:var(--toss-subtle);font-weight:600}.score-bar-track{height:6px;border-radius:999px;background:#edf0f5;overflow:hidden}.score-bar-fill{height:100%;border-radius:999px;transition:width .7s ease}.score-bar-fill.excellent{background:linear-gradient(90deg,#7ecf4f,#35c5a0)}.score-bar-fill.good{background:linear-gradient(90deg,#5ab3ff,#3182f6)}.score-bar-fill.average{background:linear-gradient(90deg,#ffc14f,#f4a024)}.score-bar-fill.poor{background:linear-gradient(90deg,#f98b8b,#ef4946)}.score-bar-value{font-size:12px;font-weight:700;text-align:right}.report-section{margin-top:12px;padding:12px}.report-title{font-size:12px;font-weight:700;color:#24324b;margin-bottom:8px}.report-list{list-style:none}.report-list li{position:relative;padding-left:12px;margin-top:6px;color:var(--toss-subtle);font-size:12px}.report-list li:before{content:"•";position:absolute;left:0;color:var(--toss-blue)}.disclaimer{padding-top:12px;border-top:1px solid var(--toss-line);margin-top:8px}.disclaimer p{font-size:11px;color:var(--toss-muted);line-height:1.6}.hidden{display:none!important}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:640px){.container{width:min(100%,430px);max-width:430px;padding:20px 16px calc(24px + var(--safe-bottom));padding-top:calc(18px + var(--safe-top))}.header h1{font-size:25px}.legend-grid{grid-template-columns:1fr}.price-info{grid-template-columns:repeat(2,1fr)}.stock-cards{gap:12px}}
