@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{--ink:#17201e;--muted:#73807c;--line:#dfe3dc;--surface:#fff;--lime:#d7f84b;--green:#1f5c4d}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:Manrope,"Noto Sans KR",sans-serif;background:#f4f5f0}button,input{font:inherit}button{cursor:pointer}
@media(min-width:861px){body{zoom:1.25}}
.dashboard.is-locked{filter:blur(9px);transform:scale(1.008);pointer-events:none;user-select:none;max-height:100vh;overflow:hidden}.access-gate{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;padding:20px;background:#101a18a8;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.access-card{width:min(390px,100%);padding:38px 36px 30px;border:1px solid #ffffff24;border-radius:16px;background:#111b19;color:white;box-shadow:0 28px 80px #08100e80;text-align:center}.access-logo{width:48px;height:48px;display:grid;place-items:center;margin:0 auto 21px;border-radius:13px;background:var(--lime);color:var(--ink);font-size:24px;font-weight:900;transform:rotate(-4deg)}.access-eyebrow{margin:0 0 8px;color:#82938e;font:500 9px "DM Mono";letter-spacing:1.6px}.access-card h2{margin:0;font-size:25px;letter-spacing:-.8px}.access-copy{margin:10px 0 23px;color:#91a09b;font-size:12px}.password-field{height:48px;display:flex;align-items:center;gap:10px;padding:0 14px;border:1px solid #354440;border-radius:8px;background:#0c1513}.password-field:focus-within{border-color:var(--lime);box-shadow:0 0 0 3px #d7f84b1c}.password-field.has-error{border-color:#d66f68}.password-field>span{color:#6f817c;font-size:7px}.password-field input{width:100%;height:100%;border:0;outline:0;background:transparent;color:white;font-size:13px}.password-field input::placeholder{color:#64736f}.password-error{margin:8px 2px 0!important;color:#ef8b84!important;text-align:left;font-size:10px!important}.access-button{width:100%;height:47px;display:flex;align-items:center;justify-content:space-between;margin-top:14px;padding:0 17px;border:0;border-radius:8px;background:var(--lime);color:var(--ink);font-size:12px;font-weight:800}.access-button:hover{background:#e2ff61}.access-button span{font-size:17px}.access-card>small{display:block;margin-top:20px;color:#53635f;font:400 8px "DM Mono";letter-spacing:1.2px}
.dashboard{max-width:1560px;margin:0 auto;padding:42px 44px 70px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:28px}
.eyebrow{margin:0 0 9px!important;color:#75817d!important;font-family:"DM Mono";font-size:10px!important;font-weight:500;letter-spacing:1.6px}.page-head h1{margin:0;font-size:clamp(29px,3vw,40px);line-height:1.15;letter-spacing:-1.8px;font-weight:800}.page-head p{margin:10px 0 0;font-size:14px;color:#71807c}
.head-meta{display:flex;align-items:flex-end;gap:10px;flex-direction:column}.head-meta small{color:#8b9693;font-family:"DM Mono";font-size:10px}.live-pill{padding:7px 10px;border:1px solid #ccd3cc;border-radius:99px;font:500 9px "DM Mono";letter-spacing:1px;background:white}.live-pill i{display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%;background:#68ad45;box-shadow:0 0 0 3px #68ad4520}
.filter-bar{display:flex;align-items:flex-end;gap:10px;padding:16px;margin-bottom:18px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 20px #24332d08}.filter-bar label{min-width:120px}.filter-bar label>span{display:block;margin:0 0 6px 2px;color:#77847f;font-size:10px;font-weight:700}.filter-bar input{width:100%;height:38px;padding:0 11px;border:1px solid #d9ded8;border-radius:7px;outline:none;background:#fafbf8;font-size:12px}.filter-bar input:focus{border-color:#799246;box-shadow:0 0 0 3px #d7f84b35;background:white}
.filter-divider{width:1px;height:38px;margin:0 3px;background:#e3e6e1}.range-mark{align-self:center;margin-top:17px;color:#9ca5a2;font-size:12px}.keyword-filter{flex:1;min-width:150px!important}.search-button,.reset-button{height:38px;border:0;border-radius:7px;font-weight:700}.search-button{padding:0 24px;background:var(--ink);color:white}.search-button:hover{background:#29453e}.reset-button{width:38px;border:1px solid #d9ded8;background:white;color:#66726e;font-size:17px}
.state-card{min-height:300px;display:flex;align-items:center;justify-content:center;gap:12px;background:white;border:1px solid var(--line);border-radius:12px;color:#71807c;font-size:14px}.state-card.error{flex-direction:column;color:#84504d}.state-card.error span{font-size:12px}.state-card.error button{padding:8px 15px;border:0;border-radius:6px;background:var(--ink);color:white}.spinner{width:18px;height:18px;border:2px solid #e5e8e2;border-top-color:var(--green);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.kpi-grid{display:grid;grid-template-columns:1.25fr repeat(4,1fr);gap:10px;margin-bottom:18px}.kpi-card{min-height:135px;padding:20px;border:1px solid var(--line);border-radius:10px;background:var(--surface);position:relative;overflow:hidden}.kpi-card.primary{background:var(--ink);border-color:var(--ink);color:white}.kpi-card.accent{background:var(--lime);border-color:#c7e63d}.kpi-label{display:block;color:#76837f;font-size:11px;font-weight:700}.kpi-card.primary .kpi-label{color:#9eb0aa}.kpi-card strong{display:block;margin-top:15px;font-family:"DM Mono";font-size:31px;line-height:1;letter-spacing:-1.8px}.kpi-card strong em{margin-left:2px;font:700 16px Manrope}.kpi-card small{display:block;margin-top:11px;color:#8a9591;font-size:10px}.kpi-card.primary small{color:#80938d}.kpi-card.accent .kpi-label,.kpi-card.accent small{color:#52612d}
.panel{margin-bottom:18px;padding:23px;border:1px solid var(--line);border-radius:11px;background:var(--surface)}.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:23px}.section-title>div{display:flex;align-items:center;gap:10px}.section-title h2{margin:0;font-size:16px;font-weight:800;letter-spacing:-.4px}.section-number{color:#90a03f;font:400 9px "DM Mono"}.section-note{color:#8d9894;font-size:10px}
.stage-flow{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid #e2e5df;border-radius:8px;overflow:hidden}.stage{min-height:180px;padding:18px;border-right:1px solid #e2e5df;background:#fafbf8;position:relative}.stage:last-child{border-right:0}.stage.is-active{background:white}.stage.is-active:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--lime)}.stage-top{display:flex;justify-content:space-between;align-items:center}.stage-index{color:#a3aca8;font:400 10px "DM Mono"}.stage-status{padding:3px 6px;border-radius:3px;background:#eef0ec;color:#8b9692;font-size:8px;font-weight:700}.stage.is-active .stage-status{background:#eef9bf;color:#627424}.stage>strong{display:block;margin-top:27px;font:500 25px "DM Mono";letter-spacing:-1px}.stage h3{margin:9px 0 6px;font-size:12px;font-weight:800}.stage p{margin:0;color:#8a9591;font-size:9px;line-height:1.5}
.content-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:18px}.hashtag-list{display:grid;gap:12px}.hashtag-row{display:grid;grid-template-columns:minmax(90px,1fr) 1.4fr 58px;gap:10px;align-items:center}.hashtag-row>div:first-child strong,.hashtag-row>div:first-child small{display:block}.hashtag-row>div:first-child strong{font-size:10px}.hashtag-row>div:first-child small{margin-top:3px;color:#98a19e;font-size:8px}.bar-track{height:5px;border-radius:99px;overflow:hidden;background:#eff1ed}.bar-track span{display:block;height:100%;border-radius:inherit;background:var(--green);min-width:2px}.hashtag-count{text-align:right}.hashtag-count strong,.hashtag-count small{display:block}.hashtag-count strong{font:500 10px "DM Mono"}.hashtag-count small{margin-top:3px;color:#9ba4a1;font-size:8px}
.activity-chart{position:relative;height:250px;padding:8px 16px 0}.chart-grid{position:absolute;inset:18px 16px 43px;display:flex;flex-direction:column;justify-content:space-between}.chart-grid span{display:block;border-top:1px dashed #e3e7e0}.chart-bars{position:relative;height:100%;display:grid;grid-template-columns:repeat(5,1fr);gap:18px;align-items:end}.chart-column{height:100%;display:grid;grid-template-rows:22px 1fr 34px;text-align:center;min-width:0}.chart-column>strong{font:500 10px "DM Mono";color:#4d5b56}.chart-column>small{padding-top:9px;color:#7d8985;font-size:9px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chart-bar-shell{height:100%;display:flex;align-items:flex-end;justify-content:center}.chart-bar{display:block;width:min(62px,70%);min-height:3px;border-radius:5px 5px 1px 1px;background:#dfe4dc;transition:height .35s ease}.chart-bar.has-data{background:linear-gradient(180deg,#d7f84b 0%,#9fbd31 100%);box-shadow:inset 0 0 0 1px #8ea62d55}.chart-summary{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding-top:13px;border-top:1px solid #edf0eb;font-size:9px;color:#7f8b87}.chart-summary span{display:flex;align-items:center;gap:6px}.chart-summary i{width:7px;height:7px;border-radius:2px;background:var(--lime);border:1px solid #a9c139}.chart-summary strong{font:500 10px "DM Mono";color:#34423d}
.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:11px}th{padding:10px 13px;text-align:left;border-bottom:1px solid #dfe4dd;color:#89948f;font-size:9px}td{padding:12px 13px;border-bottom:1px solid #edf0eb;color:#56625e}td a{display:flex;align-items:center;gap:9px;color:inherit;text-decoration:none}td a strong,td a small{display:block}td a strong{color:var(--ink);font-size:11px}td a small{color:#98a29e;font-size:9px;margin-top:2px}.avatar{width:29px;height:29px;border-radius:50%;display:grid;place-items:center;background:#eef1e9;color:#60706a;font-weight:800}.dm-status{padding:4px 7px;border-radius:4px;background:#f0f3ed;font-size:9px;font-weight:700}
.empty-state{min-height:170px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#96a09c;text-align:center}.empty-state>span{width:31px;height:31px;display:grid;place-items:center;margin-bottom:8px;border:1px solid #dce1da;border-radius:50%;color:#b0b8b4}.empty-state strong{color:#66736e;font-size:11px}.empty-state p{margin:5px 0 0;max-width:340px;font-size:9px;line-height:1.5}#blazor-error-ui{display:none;position:fixed;inset:auto 0 0;padding:10px;background:#fff2c8;z-index:1000}
@media(max-width:1200px){.dashboard{padding:32px 26px 60px}.filter-bar{flex-wrap:wrap}.keyword-filter{flex-basis:220px}.kpi-grid{grid-template-columns:repeat(3,1fr)}.stage-flow{grid-template-columns:repeat(3,1fr)}.stage{border-bottom:1px solid #e2e5df}}
@media(max-width:760px){.dashboard{padding:25px 16px 50px}.page-head{align-items:flex-start}.head-meta small{display:none}.filter-bar label{flex:1 1 43%}.filter-divider,.range-mark{display:none}.keyword-filter{flex-basis:100%!important}.search-button{flex:1}.kpi-grid{grid-template-columns:repeat(2,1fr)}.kpi-card{min-height:120px}.stage-flow{grid-template-columns:1fr}.stage{min-height:130px;border-right:0}.stage>strong{margin-top:17px}.content-grid{grid-template-columns:1fr}}
