:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#182436;--ink:#17212f;--muted:#647386;--line:#1824361a;--panel:#ffffffe6;--green:#1d7a56;--blue:#315f9b;--gold:#d8923a;--coral:#df684e;background:#eef3f0;font-family:Inter,Noto Sans KR,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;min-width:100%;min-height:100%;margin:0}body{background:linear-gradient(135deg,#1d7a5629,#0000 34%),linear-gradient(315deg,#315f9b24,#0000 38%),#eef3f0}button{font:inherit}.dashboard-shell{grid-template-rows:auto auto minmax(0,1fr) minmax(260px,32vh);gap:clamp(10px,1.4vh,18px);width:100vw;height:100dvh;min-height:100vh;padding:clamp(14px,2vw,28px);display:grid;overflow:hidden}.dashboard-shell.is-crowd{grid-template-rows:auto minmax(0,1fr)}.dashboard-shell.is-login{grid-template-rows:1fr;place-items:center}.dashboard-login-panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;gap:14px;width:min(480px,100vw - 32px);padding:30px;display:grid;box-shadow:0 24px 70px #18243629}.dashboard-login-panel p,.dashboard-login-panel h1{margin:0}.dashboard-login-panel p{color:var(--green);letter-spacing:.12em;font-size:.78rem;font-weight:950}.dashboard-login-panel h1{font-size:clamp(2rem,6vw,3.4rem);line-height:1}.dashboard-login-panel button,.dashboard-top button{color:#fff;background:var(--ink);border:0;border-radius:999px;width:fit-content;min-height:42px;padding:0 18px;font-weight:950}.dashboard-login-panel span,.dashboard-error{color:#b42318;font-weight:850}.dashboard-top{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.dashboard-top p,.dashboard-top h1,.dashboard-top span{margin:0;display:block}.dashboard-top p{color:var(--green);letter-spacing:.08em;font-size:clamp(.86rem,1.2vw,1rem);font-weight:950}.dashboard-top h1{color:var(--ink);letter-spacing:0;margin-top:2px;font-size:clamp(3.2rem,7vw,7.4rem);line-height:.9}.dashboard-top span{color:var(--muted);margin-top:10px;font-size:clamp(.82rem,1.1vw,1rem);font-weight:850}.dashboard-top-actions{justify-content:flex-end;align-items:flex-start;gap:10px;display:flex}.dashboard-main-tabs{border:1px solid var(--line);background:#ffffffd1;border-radius:999px;gap:4px;padding:4px;display:inline-flex;box-shadow:0 12px 30px #18243614}.dashboard-main-tabs button{min-height:34px;color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:0 13px;font-size:.82rem;font-weight:950}.dashboard-main-tabs button.is-active{color:#fff;background:var(--ink)}.dashboard-shell.is-crowd .dashboard-top h1{font-size:clamp(2.4rem,5vw,5.2rem)}.dashboard-summary-grid{grid-template-columns:1.35fr 1fr 1fr 1.2fr;gap:clamp(10px,1vw,16px);display:grid}.dashboard-summary-grid article,.dashboard-gates article,.dashboard-chart,.dashboard-loading{background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 16px 44px #1824361a}.dashboard-summary-grid article{align-content:center;gap:10px;min-width:0;min-height:138px;padding:clamp(16px,1.7vw,24px);display:grid}.dashboard-summary-grid span,.dashboard-gates span,.dashboard-chart span{color:var(--muted);font-size:clamp(.95rem,1.08vw,1.12rem);font-weight:950}.dashboard-summary-grid strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;letter-spacing:0;font-size:clamp(2.55rem,4.85vw,5.25rem);line-height:.95;overflow:hidden}.dashboard-summary-grid small{color:var(--green);font-size:clamp(1.06rem,1.28vw,1.35rem);font-weight:950}.dashboard-total-card{color:#fff;background:linear-gradient(135deg,#17212f,#1d7a56)!important}.dashboard-total-card span,.dashboard-total-card small,.dashboard-total-card strong{color:#fff}.dashboard-ratio-card{grid-template-columns:minmax(96px,.8fr) minmax(0,1fr);align-items:center;column-gap:14px!important}.dashboard-ratio-card>span{grid-column:1/-1}.dashboard-gate-bar{background:#e4ece8;border-radius:999px;width:100%;height:14px;overflow:hidden}.dashboard-gate-bar i{border-radius:inherit;background:linear-gradient(90deg, var(--green), var(--gold));height:100%;display:block}.dashboard-ratio-donut{aspect-ratio:1;background:radial-gradient(circle, #fff 0 55%, transparent 56%), conic-gradient(var(--green) 0 var(--adult-ratio), var(--gold) var(--adult-ratio) 100%);border-radius:999px;justify-self:center;place-items:center;width:clamp(100px,8.4vw,148px);display:grid;box-shadow:inset 0 0 0 1px #18243614,0 12px 26px #1824361a}.dashboard-ratio-donut span,.dashboard-ratio-donut strong{text-align:center;grid-area:1/1;display:block}.dashboard-ratio-donut span{color:var(--muted);align-self:start;margin-top:31%;font-size:clamp(.78rem,.9vw,.95rem);font-weight:950}.dashboard-ratio-donut strong{color:var(--ink);align-self:end;margin-bottom:28%;font-size:clamp(1.38rem,2vw,2rem);line-height:1}.dashboard-ratio-legend{gap:8px;min-width:0;display:grid}.dashboard-ratio-legend span{min-width:0;color:var(--ink);white-space:nowrap;align-items:center;gap:7px;font-size:clamp(.96rem,1.15vw,1.18rem);font-weight:950;display:flex}.dashboard-ratio-legend i{border-radius:999px;flex:none;width:10px;height:10px}.dashboard-ratio-legend i.is-adult{background:var(--green)}.dashboard-ratio-legend i.is-child{background:var(--gold)}.dashboard-gates{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1vw,16px);min-height:0;display:grid;overflow:hidden}.dashboard-gates article{align-content:center;gap:12px;min-width:0;padding:clamp(16px,1.55vw,24px);display:grid}.dashboard-gates header{justify-content:space-between;align-items:baseline;gap:12px;min-width:0;display:flex}.dashboard-gates strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:clamp(2.25rem,3.8vw,4.25rem);line-height:1;overflow:hidden}.dashboard-gates span{color:#435167;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:clamp(1.1rem,1.38vw,1.45rem);overflow:hidden}.dashboard-gates small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:clamp(.92rem,1.08vw,1.1rem);font-weight:900;overflow:hidden}.dashboard-chart{grid-template-rows:auto minmax(0,1fr);gap:8px;min-height:0;padding:clamp(12px,1.25vw,18px);display:grid}.dashboard-chart span{font-size:clamp(.78rem,.95vw,.96rem)}.dashboard-chart header{justify-content:space-between;align-items:center;gap:12px;display:flex}.dashboard-chart-title{gap:2px;min-width:0;display:grid}.dashboard-chart header strong{color:var(--ink);font-size:clamp(1rem,1.35vw,1.28rem);line-height:1.1}.dashboard-chart header small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-weight:900;overflow:hidden}.dashboard-chart-tools{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;min-width:0;display:flex}.dashboard-segmented{background:#f7faf8;border:1px solid #1824361a;border-radius:999px;flex-wrap:nowrap;justify-content:flex-end;gap:3px;max-width:100%;padding:3px;display:inline-flex}.dashboard-segmented button{color:#46556a;background:0 0;border:0;border-radius:999px;min-height:26px;padding:0 8px;font-size:.72rem;font-weight:950}.dashboard-segmented button.is-active{color:#fff;background:var(--ink)}.dashboard-chart-bars{gap:10px;min-height:0;padding-bottom:2px;display:grid;overflow:auto hidden}.dashboard-chart-bars article{text-align:center;grid-template-rows:22px minmax(128px,1fr) 20px;align-items:end;gap:6px;min-width:0;display:grid}.dashboard-chart-bars article>span,.dashboard-chart-bars article>small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:clamp(.68rem,.85vw,.86rem);font-weight:950;overflow:hidden}.dashboard-chart-bars div{background:linear-gradient(#f7faf8,#e7eee9);border-radius:8px;align-items:flex-end;height:100%;min-height:128px;display:flex;overflow:hidden}.dashboard-chart-bars i{background:linear-gradient(180deg, var(--green), var(--coral));border-radius:8px 8px 0 0;width:100%;display:block}.dashboard-line-chart{min-height:0;padding-bottom:2px;overflow:auto hidden}.dashboard-line-chart svg{width:100%;height:100%;min-height:190px;display:block}.dashboard-line-chart line{stroke:#64738647;stroke-width:1.5px}.dashboard-line-chart polygon{fill:#1d7a5621}.dashboard-line-chart polyline{fill:none;stroke:var(--green);stroke-linecap:round;stroke-linejoin:round;stroke-width:4px}.dashboard-line-chart circle{fill:#fff;stroke:var(--green);stroke-width:3px}.dashboard-line-chart text{fill:#46556a;text-anchor:middle;font-size:13px;font-weight:950}.dashboard-line-chart text.is-label{fill:var(--muted);font-size:12px}.dashboard-crowd-view{grid-template-rows:auto minmax(0,1fr);gap:12px;min-height:0;display:grid;overflow:auto}.dashboard-crowd-summary{grid-template-columns:repeat(6,minmax(0,1fr));gap:clamp(8px,.9vw,14px);display:grid}.dashboard-crowd-summary article{border:1px solid color-mix(in srgb, var(--crowd) 30%, white);background:var(--crowd-bg);border-radius:8px;align-content:center;gap:5px;min-width:0;padding:clamp(12px,1.25vw,18px);display:grid;box-shadow:0 16px 36px #18243614}.dashboard-crowd-summary span,.dashboard-crowd-summary small{color:var(--crowd);text-overflow:ellipsis;white-space:nowrap;font-size:clamp(.78rem,.9vw,.96rem);font-weight:950;overflow:hidden}.dashboard-crowd-summary strong{color:var(--crowd);text-overflow:ellipsis;white-space:nowrap;font-size:clamp(2rem,3.4vw,4.2rem);line-height:.95;overflow:hidden}.dashboard-crowd-message{width:fit-content;max-width:100%;color:var(--green);background:#f3fbf6;border:1px solid #1d7a562e;border-radius:999px;padding:8px 12px;font-size:.82rem;font-weight:950}.map-crowd-status-toolbar,.map-crowd-status-controls,.map-crowd-status-card,.map-crowd-status-tile{background:#fff;border:1px solid #26374e14;border-radius:8px;box-shadow:0 16px 38px #1824361a}.map-crowd-status-toolbar{justify-content:space-between;align-items:flex-start;gap:16px;padding:16px;display:flex}.map-crowd-status-toolbar h2,.map-crowd-status-toolbar p{margin:0}.map-crowd-status-toolbar h2{color:var(--ink);font-size:clamp(1rem,1.4vw,1.28rem)}.map-crowd-status-toolbar p{color:var(--muted);margin-top:5px;font-size:.84rem;font-weight:850}.map-crowd-status-toolbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.map-crowd-view-toggle{background:#eef2f6;border-radius:999px;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;min-width:176px;padding:4px;display:grid}.map-crowd-view-toggle button{min-height:30px;color:var(--muted);background:0 0;border:0;border-radius:999px;padding:0 12px;font-size:.78rem;font-weight:950}.map-crowd-view-toggle button.is-active{color:#fff;background:var(--ink);box-shadow:0 8px 16px #18243624}.map-crowd-status-controls{grid-template-columns:minmax(150px,220px) minmax(190px,1fr) minmax(190px,1fr) minmax(180px,240px);align-items:end;gap:12px;padding:16px;display:grid}.map-crowd-status-controls label{color:#425168;gap:6px;font-size:.78rem;font-weight:950;display:grid}.map-crowd-status-controls select{min-height:40px;color:var(--ink);font:inherit;background:#fff;border:1px solid #26374e1f;border-radius:10px;padding:0 12px}.map-crowd-status-toolbar button,.map-crowd-status-actions button,.map-crowd-bulk-control button,.map-crowd-status-buttons button{color:#425168;background:#fff;border:1px solid #26374e1f;border-radius:999px;min-height:38px;padding:0 13px;font-weight:950}.map-crowd-status-toolbar .map-crowd-view-toggle button{min-height:30px;color:var(--muted);background:0 0;border:0;padding:0 12px;font-size:.78rem}.map-crowd-status-toolbar .map-crowd-view-toggle button.is-active{color:#fff;background:var(--ink)}.map-crowd-status-actions,.map-crowd-bulk-control,.map-crowd-status-buttons{flex-wrap:wrap;gap:8px;display:flex}.map-crowd-status-actions{justify-content:flex-end;align-items:center}.map-crowd-status-actions span{color:var(--muted);font-size:.78rem;font-weight:950}.map-crowd-bulk-control{align-items:end}.map-crowd-bulk-control label{flex:120px}.map-crowd-bulk-control button{border-color:var(--green);background:var(--green);color:#fff}.map-crowd-status-actions button:disabled,.map-crowd-bulk-control button:disabled,.map-crowd-status-buttons button:disabled,.map-crowd-status-toolbar button:disabled{cursor:not-allowed;opacity:.5}.map-crowd-status-list{grid-template-columns:1fr;gap:10px;min-height:0;padding-bottom:4px;display:grid;overflow:auto}.map-crowd-status-groups{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1vw,16px);min-height:0;display:grid;overflow:hidden}.map-crowd-status-group{background:#ffffff9e;border:1px solid #26374e14;border-radius:10px;grid-template-rows:auto minmax(0,1fr);gap:10px;min-height:0;padding:10px;transition:border-color .16s,background .16s,box-shadow .16s;display:grid}.map-crowd-status-group.is-drop-target{border-color:var(--green);background:#1d7a5614;box-shadow:inset 0 0 0 2px #1d7a562e}.map-crowd-status-group-title{z-index:1;background:#f7faf8f5;border:1px solid #26374e14;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex;box-shadow:0 12px 26px #18243614}.map-crowd-status-group-title div{align-items:center;gap:9px;min-width:0;display:flex}.map-crowd-status-group-title span{background:#fff;border-radius:999px;flex:none;place-items:center;width:30px;height:30px;font-size:1rem;display:grid;box-shadow:inset 0 0 0 1px #26374e14}.map-crowd-status-group-title h3{min-width:0;color:var(--ink);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:1rem;font-weight:950;overflow:hidden}.map-crowd-status-group-title small{color:var(--muted);white-space:nowrap;font-size:.8rem;font-weight:950}.map-crowd-status-list.is-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}.map-crowd-status-display-card{border:1px solid color-mix(in srgb, var(--crowd) 24%, white);border-left:8px solid var(--crowd);cursor:grab;background:#fff;border-radius:8px;grid-template-rows:auto 1fr auto;align-content:stretch;gap:10px;min-width:0;min-height:156px;padding:clamp(14px,1.2vw,20px);transition:opacity .16s,transform .16s,box-shadow .16s;display:grid;box-shadow:0 14px 32px #18243614}.map-crowd-status-display-card:active{cursor:grabbing}.map-crowd-status-display-card.is-moving{opacity:.45;transform:scale(.98);box-shadow:0 8px 18px #18243614}.map-crowd-status-display-card.is-readonly{cursor:default}.map-crowd-status-display-card strong{min-width:0;color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:clamp(1rem,1.22vw,1.35rem);font-weight:950;line-height:1.18;display:-webkit-box;overflow:hidden}.map-crowd-status-display-card span{background:var(--crowd-bg);width:100%;max-width:100%;color:var(--crowd);text-overflow:ellipsis;white-space:nowrap;border-radius:8px;place-items:center;padding:clamp(12px,1.3vw,18px) 12px;font-size:clamp(1.55rem,2.4vw,3rem);font-weight:950;line-height:1;display:grid;overflow:hidden}.map-crowd-status-display-card small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:clamp(.78rem,.9vw,.92rem);font-weight:900;overflow:hidden}.map-crowd-status-card{grid-template-columns:minmax(180px,1fr) minmax(220px,1.1fr) minmax(360px,1.4fr);align-items:center;gap:14px;padding:14px;display:grid}.map-crowd-status-card.is-selected{box-shadow:inset 0 0 0 2px var(--green), 0 18px 38px #1824361a}.map-crowd-status-name{min-width:0;color:var(--ink);font-weight:950}.map-crowd-status-name strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.map-checkbox{min-width:0;color:var(--ink);align-items:center;gap:10px;font-weight:950;display:flex}.map-checkbox input{width:18px;height:18px;accent-color:var(--green)}.map-checkbox strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.map-crowd-status-meta{min-width:0;color:var(--muted);gap:4px;font-size:.82rem;font-weight:850;display:grid}.map-crowd-status-meta span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.map-crowd-status-row{grid-template-columns:112px minmax(0,1fr);align-items:stretch;gap:12px;display:grid}.map-crowd-status-current-wrap,.map-crowd-status-change-wrap{gap:7px;min-width:0;display:grid}.map-crowd-status-current-wrap{justify-items:start}.map-crowd-status-change-wrap{border-left:1px solid #26374e1f;padding-left:12px}.map-crowd-status-current-wrap>span,.map-crowd-status-change-wrap>span{color:#7d8ba0;white-space:nowrap;font-size:.72rem;font-weight:950;line-height:1}.map-crowd-status-current{border:1px solid color-mix(in srgb, var(--crowd) 42%, white);background:var(--crowd-bg);min-width:96px;min-height:40px;color:var(--crowd);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;padding:0 12px;font-size:.94rem;font-weight:950;display:inline-flex}.map-crowd-status-buttons button{border-color:color-mix(in srgb, var(--crowd) 30%, white);background:var(--crowd-bg);min-width:72px;color:var(--crowd)}.map-crowd-status-buttons button.is-active{background:var(--crowd);color:#fff}.map-crowd-status-tile{--crowd:#2f7d63;--crowd-bg:#eaf6ee;border-left:5px solid var(--crowd);grid-template-rows:minmax(78px,1fr) auto;gap:10px;min-width:0;padding:12px;display:grid}.map-crowd-status-tile.is-selected{box-shadow:inset 0 0 0 2px var(--crowd), 0 18px 38px #1824361f}.map-crowd-status-tile-main{min-width:0;min-height:78px;color:var(--ink);text-align:left;background:0 0;border:0;align-content:space-between;gap:8px;padding:0;display:grid}.map-crowd-status-tile-main strong{min-width:0;color:var(--ink);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.94rem;font-weight:950;line-height:1.28;display:-webkit-box;overflow:hidden}.map-crowd-status-tile-main span{background:var(--crowd-bg);width:fit-content;max-width:100%;color:var(--crowd);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;padding:5px 9px;font-size:.75rem;font-weight:950;overflow:hidden}.map-crowd-status-icon-buttons{grid-template-columns:repeat(auto-fit,minmax(24px,1fr));gap:5px;display:grid}.map-crowd-status-icon-buttons button{border:1px solid color-mix(in srgb, var(--crowd) 28%, white);background:var(--crowd-bg);border-radius:999px;place-items:center;width:100%;min-width:0;height:28px;padding:0;display:grid}.map-crowd-status-icon-buttons button span{background:var(--crowd);border-radius:999px;width:10px;height:10px}.map-crowd-status-icon-buttons button.is-active{background:var(--crowd);box-shadow:inset 0 0 0 2px #ffffffb8}.map-crowd-status-icon-buttons button.is-active span{background:#fff}.map-empty-note{color:var(--muted);text-align:center;background:#ffffffb8;border:1px dashed #64738647;border-radius:8px;margin:0;padding:28px;font-weight:950}.dashboard-loading{color:var(--muted);grid-row:2/-1;place-items:center;font-size:clamp(1.2rem,2vw,1.8rem);font-weight:950;display:grid}.dashboard-error{background:#fff;border:1px solid #b4231838;border-radius:10px;max-width:min(640px,100vw - 32px);padding:12px 16px;position:fixed;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 18px 48px #18243629}@media (width<=980px){.dashboard-shell{grid-template-rows:auto auto auto auto;height:auto;min-height:100dvh;overflow:auto}.dashboard-summary-grid,.dashboard-gates{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-chart{min-height:300px}.dashboard-chart header{flex-direction:column;align-items:stretch}.dashboard-chart-tools,.dashboard-segmented{justify-content:flex-start;justify-items:start}.map-crowd-status-toolbar,.map-crowd-status-toolbar-actions,.map-crowd-status-controls,.map-crowd-status-card{grid-template-columns:1fr;align-items:stretch;display:grid}.map-crowd-status-actions{justify-content:flex-start}.dashboard-crowd-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.map-crowd-status-groups{grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}.map-crowd-status-list{overflow:visible}}@media (width<=560px){.dashboard-top{display:grid}.dashboard-top-actions{flex-wrap:wrap;justify-content:flex-start}.dashboard-summary-grid,.dashboard-gates,.dashboard-crowd-summary,.map-crowd-status-groups,.map-crowd-status-row{grid-template-columns:1fr}.map-crowd-status-change-wrap{border-top:1px solid #26374e1f;border-left:0;padding-top:12px;padding-left:0}}
