:root{color-scheme:light;--bg: #f5f8f2;--panel: rgba(255, 255, 255, .92);--panel-strong: #ffffff;--text: #163226;--muted: #617468;--line: rgba(22, 50, 38, .1);--brand: #0f9f6e;--brand-deep: #0b7a55;--good-bg: #e8f7ef;--good-text: #0e6f4f;--normal-bg: #f8f0d8;--normal-text: #876a16;--bad-bg: #fde7df;--bad-text: #b34b2d;--critical-bg: #ffd9cf;--critical-text: #8f2a12;--critical-border: rgba(179, 75, 45, .35);--empty-bg: #eef1f2;--empty-text: #6d7a80;--shadow: 0 18px 50px rgba(17, 33, 26, .08);--radius-xl: 28px;--radius-lg: 20px;--radius-md: 16px;--transition-fast: .15s ease;--transition-base: .22s cubic-bezier(.22, 1, .36, 1);--focus-ring: 0 0 0 3px rgba(15, 159, 110, .28)}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{min-height:100dvh;font-family:Pretendard Variable,Pretendard,Apple SD Gothic Neo,sans-serif;color:var(--text);background:linear-gradient(165deg,rgba(181,106,27,.04) 0%,transparent 22%),linear-gradient(195deg,rgba(107,157,34,.05) 0%,transparent 18%),linear-gradient(180deg,#f7fbf5,#eef5ef);transition:background var(--transition-base)}button,input{font:inherit}button{border:0;background:none;cursor:pointer;transition:transform var(--transition-fast),background-color var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),opacity var(--transition-fast)}button:focus-visible{outline:none;box-shadow:var(--focus-ring)}button:active:not(:disabled){transform:scale(.98)}.app-shell{max-width:460px;margin:0 auto;padding:20px 16px 32px}.app-shell--grade-낮음{--ambient-tint: rgba(15, 159, 110, .06)}.app-shell--grade-보통{--ambient-tint: rgba(135, 106, 22, .07)}.app-shell--grade-높음{--ambient-tint: rgba(179, 75, 45, .08)}.app-shell--grade-매우높음{--ambient-tint: rgba(143, 42, 18, .1)}.app-shell[class*=app-shell--grade-]:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 0%,var(--ambient-tint),transparent 55%);z-index:-1}.hero{display:grid;gap:18px}.hero-copy{padding-top:10px}.hero-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.hero-heading{min-width:0}.hero h1,.focus-header h2{margin:0;font-family:Pretendard Variable,Pretendard,Apple SD Gothic Neo,sans-serif;letter-spacing:-.04em;font-weight:800}.hero h1{font-size:clamp(31px,8vw,36px);line-height:1.06}.hero-subtitle{margin:8px 0 0;color:var(--muted);font-size:15px;line-height:1.5;font-weight:500;letter-spacing:-.01em}.title-help-button{flex-shrink:0;width:28px;height:28px;border-radius:999px;border:1px solid rgba(22,50,38,.14);background:#ffffffe6;color:var(--muted);font-size:16px;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #16322614}.title-help-button:hover{background:#fff;border-color:#0f9f6e3d;color:var(--brand-deep)}.search-panel,.focus-card,.status-card{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow)}.search-panel{padding:16px;border-radius:var(--radius-xl)}.search-panel--modal{border:0;background:transparent;box-shadow:none;padding:0}.location-button{width:100%;min-height:48px;border-radius:14px;border:1px solid rgba(15,159,110,.18);background:linear-gradient(180deg,#16b27d24,#0f9f6e14);color:var(--brand-deep);font-weight:700}.location-button:hover:not(:disabled){background:linear-gradient(180deg,#16b27d33,#0f9f6e1f);border-color:#0f9f6e47}.location-button:disabled{opacity:.6;cursor:not-allowed}.location-helper{margin:10px 2px 0;color:var(--muted);font-size:13px;line-height:1.5;text-align:center}.selector-label{margin:18px 2px 0;color:var(--muted);font-size:13px;font-weight:600}.chip-groups{display:grid;gap:10px;margin-top:10px}.chip-row{display:flex;flex-wrap:wrap;gap:10px}.chip-button{min-width:0;min-height:42px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:#ffffffeb;color:var(--muted);font-size:15px;font-weight:600;letter-spacing:-.03em;display:inline-flex;align-items:center;gap:6px}.chip-button:hover{background:#fff;border-color:#0f9f6e2e;color:var(--text)}.chip-button--active{background:#0f9f6e1f;border-color:#0f9f6e3d;color:var(--brand-deep);font-weight:700}.chip-check{font-size:13px;line-height:1}.content{display:grid;gap:18px;margin-top:28px}.focus-card{padding:20px;border-radius:var(--radius-xl);background:linear-gradient(180deg,#fffffff5,#f7fbf8fa);animation:focus-card-enter var(--transition-base) both}.focus-card--높음{border-color:#b34b2d24}.focus-card--매우높음{border-color:var(--critical-border);box-shadow:0 18px 50px #8f2a121a}.focus-header{display:flex;justify-content:space-between;gap:12px}.focus-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.focus-header h2{font-size:clamp(24px,6.5vw,30px);font-weight:700;letter-spacing:-.03em}.change-region-button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid rgba(15,159,110,.18);background:linear-gradient(180deg,#16b27d24,#0f9f6e14);color:var(--brand-deep);font-size:13px;font-weight:600;box-shadow:0 6px 14px #0f9f6e1a}.change-region-button:hover{background:linear-gradient(180deg,#16b27d33,#0f9f6e1f)}.change-region-icon{width:14px;height:14px;object-fit:contain}.overall-grade{margin-top:18px;padding:18px 16px;border-radius:var(--radius-lg);border:1px solid var(--line);background:#ffffffb8}.overall-grade--낮음{background:linear-gradient(180deg,#e8f7eff2,#ffffffe6);border-color:#0f6f4f24}.overall-grade--보통{background:linear-gradient(180deg,#f8f0d8f2,#ffffffe6);border-color:#876a1624}.overall-grade--높음{background:linear-gradient(180deg,#fde7dff2,#ffffffe6);border-color:#b34b2d29}.overall-grade--매우높음{background:linear-gradient(180deg,#ffd9cffa,#ffffffeb);border-color:var(--critical-border)}.overall-grade--정보없음{background:linear-gradient(180deg,#eef1f2f2,#ffffffe6)}.overall-grade-eyebrow{margin:0;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.overall-grade-value{margin:10px 0 0;font-size:clamp(28px,7vw,34px);font-weight:800;letter-spacing:-.04em;line-height:1.1}.overall-grade--낮음 .overall-grade-value{color:var(--good-text)}.overall-grade--보통 .overall-grade-value{color:var(--normal-text)}.overall-grade--높음 .overall-grade-value{color:var(--bad-text)}.overall-grade--매우높음 .overall-grade-value{color:var(--critical-text)}.overall-grade--정보없음 .overall-grade-value{color:var(--empty-text)}.grade-scale{margin-top:16px}.grade-scale-track{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.grade-scale-step{height:8px;border-radius:999px;background:#16322614;transition:background var(--transition-base),transform var(--transition-base)}.grade-scale-step--active{background:#0f9f6e73}.grade-scale-step--current{transform:scaleY(1.25)}.grade-scale-step--critical{background:linear-gradient(90deg,#d85a38,#8f2a12)}.overall-grade--높음 .grade-scale-step--active:not(.grade-scale-step--critical){background:#b34b2d8c}.overall-grade--보통 .grade-scale-step--active{background:#876a1680}.overall-grade--낮음 .grade-scale-step--active{background:#0f6f4f80}.grade-scale-labels{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin-top:8px}.grade-scale-label{color:var(--muted);font-size:10px;font-weight:600;text-align:center;line-height:1.3}.grade-scale-label--current{color:var(--text);font-weight:700}.guide-card{margin:18px 0 14px;padding:16px 18px;border-radius:var(--radius-md);background:linear-gradient(135deg,#0f9f6e1a,#fffffff5);border:1px solid rgba(15,159,110,.22);box-shadow:inset 4px 0 0 var(--brand)}.guide-card-label{margin:0 0 8px;color:var(--brand-deep);font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.guide-card-headline{margin:0;color:var(--text);font-size:17px;line-height:1.5;font-weight:700;letter-spacing:-.02em}.guide-card-body{margin:10px 0 0;color:var(--muted);font-size:14px;line-height:1.6;font-weight:500}.focus-footer{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.focus-meta,.source-note{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.focus-meta{text-align:center}.source-note{margin-top:6px;text-align:center;font-size:11px;opacity:.85}.metric-grid{display:grid;margin-top:20px;gap:14px}.metric-card{position:relative;padding:14px 14px 14px 18px;border-radius:var(--radius-md);background:var(--panel-strong);border:1px solid var(--line);overflow:hidden}.metric-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--metric-accent, var(--brand))}.metric-top{display:flex;justify-content:space-between;gap:12px}.metric-label{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:15px}.metric-icon{width:18px;height:18px;object-fit:contain}.metric-forecast-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:12px;gap:10px}.forecast-chip{display:flex;flex-direction:column;gap:8px;padding:10px 12px;border-radius:14px;background:#f7faf8b8;border:1px dashed rgba(22,50,38,.12)}.forecast-chip--낮음{background:#e8f7ef8c}.forecast-chip--보통{background:#f8f0d88c}.forecast-chip--높음{background:#fde7df8c}.forecast-chip--매우높음{background:#ffd9cfa6;border-style:solid;border-color:#8f2a1229}.forecast-chip-label{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.region-picker-modal{position:fixed;inset:0;z-index:100}.region-picker-modal--open .region-picker-backdrop{animation:backdrop-enter var(--transition-base) both}.region-picker-modal--open .region-picker-sheet{animation:sheet-enter var(--transition-base) both}.region-picker-backdrop{position:absolute;inset:0;background:#11181447}.region-picker-sheet{position:absolute;left:0;right:0;bottom:0;padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:#fff;box-shadow:0 -16px 40px #1118141f}.region-picker-sheet__header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.region-picker-sheet__header h3{margin:0;color:var(--text);font-size:20px;font-weight:700}.region-picker-close{min-height:34px;padding:0 12px;border-radius:999px;border:1px solid rgba(22,50,38,.08);background:#f7faf8e6;color:var(--muted);font-size:13px;font-weight:600}.region-picker-close:hover{background:#fff;color:var(--text)}.pollen-info-modal{position:fixed;inset:0;z-index:110}.pollen-info-modal--open .pollen-info-backdrop{animation:backdrop-enter var(--transition-base) both}.pollen-info-modal--open .pollen-info-sheet{animation:modal-enter var(--transition-base) both}.pollen-info-backdrop{position:absolute;inset:0;background:#1118145c}.pollen-info-sheet{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:calc(100% - 32px);max-width:360px;padding:22px 18px 18px;border-radius:var(--radius-lg);border:1px solid rgba(22,50,38,.08);background:#fff;box-shadow:0 16px 40px #11181433}.pollen-info-sheet h3{margin:0;color:var(--text);font-size:20px;font-weight:700}.pollen-info-lead{margin:10px 0 0;color:var(--muted);font-size:14px;line-height:1.5}.pollen-info-sections{display:grid;gap:12px;margin-top:16px}.pollen-info-season{padding:14px;border-radius:14px;border:1px solid var(--line)}.pollen-info-season--spring{background:linear-gradient(180deg,#e8f7efb3,#fffffff2)}.pollen-info-season--fall{background:linear-gradient(180deg,#f8f0d8b3,#fffffff2)}.pollen-info-season h4{margin:0;font-size:14px;font-weight:700;color:var(--text)}.pollen-info-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}.pollen-info-list li{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--text)}.pollen-info-icon{width:20px;height:20px;object-fit:contain}.pollen-info-season-note{margin:10px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.pollen-info-close{width:100%;min-height:44px;margin-top:16px;border-radius:12px;background:var(--brand);color:#fff;font-size:15px;font-weight:700}.pollen-info-close:hover{background:var(--brand-deep)}.status-card{padding:16px;border-radius:22px}.status-card--loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:140px;text-align:center}.status-card--error{color:var(--bad-text);border-color:#b34b2d2e;background:#fde7df8c}.loading-spinner{width:28px;height:28px;border-radius:999px;border:3px solid rgba(15,159,110,.14);border-top-color:var(--brand);animation:pollen-spin .9s linear infinite}.loading-text{margin:0;color:var(--muted);font-size:15px;line-height:1.5}.focus-card--skeleton{pointer-events:none}.skeleton-block{border-radius:12px;background:linear-gradient(90deg,#1632260f,#1632261a,#1632260f);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite}.skeleton-block--title{height:28px;width:55%}.skeleton-block--hero{height:120px;margin-top:18px}.skeleton-block--guide{height:88px;margin-top:18px}.skeleton-metric-grid{display:grid;gap:14px;margin-top:20px}.skeleton-block--metric{height:96px}.risk-badge{display:inline-flex;align-items:center;gap:4px;align-self:flex-start;padding:8px 12px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.risk-badge-icon{width:14px;height:14px;object-fit:contain}.risk-badge-icon--critical{width:16px;height:16px;filter:saturate(1.2)}.risk-badge--낮음{background:var(--good-bg);color:var(--good-text)}.risk-badge--보통{background:var(--normal-bg);color:var(--normal-text)}.risk-badge--높음{background:var(--bad-bg);color:var(--bad-text)}.risk-badge--매우높음{background:var(--critical-bg);color:var(--critical-text);border:1px solid var(--critical-border);font-weight:700}.risk-badge--정보없음{background:var(--empty-bg);color:var(--empty-text)}@keyframes pollen-spin{to{transform:rotate(360deg)}}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes focus-card-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes backdrop-enter{0%{opacity:0}to{opacity:1}}@keyframes sheet-enter{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes modal-enter{0%{opacity:0;transform:translate(-50%,calc(-50% + 12px)) scale(.98)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@media(max-width:380px){.chip-button{min-height:40px;padding:0 12px;font-size:14px}.grade-scale-label{font-size:9px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
