@font-face{font-family:"Google Sans";src:url("/static/fonts/GoogleSans-Latin.woff2") format("woff2");font-weight:400 700;font-display:swap}
:root{--blue:#4285f4;--green:#34a853;--yellow:#fbbc05;--red:#ea4335;--ink:#222;--muted:#5f6368;--line:#dadce0;font-family:"Google Sans","Segoe UI",sans-serif;color-scheme:light}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;color:var(--ink);background:#fafbfc}h1,h2,p{margin:0}button,input,a{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #1967d2;outline-offset:5px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.brand{display:flex;align-items:center;gap:12px;font-size:15px;font-weight:700;white-space:nowrap}
.projector{height:100dvh;display:flex;flex-direction:column;padding:0 3.4%;background-image:linear-gradient(#dfe4ec35 1px,transparent 1px),linear-gradient(90deg,#dfe4ec35 1px,transparent 1px);background-size:40px 40px}.projector-header{display:flex;justify-content:space-between;align-items:center;gap:24px;height:87px;flex-shrink:0}.room-status{display:flex;align-items:center;gap:13px;font-size:16px;font-weight:700;white-space:nowrap}.live-state{color:#137333;display:inline-flex;align-items:center;gap:6px;font-size:12px}.live-state:before{content:"";height:7px;width:7px;border-radius:50%;background:var(--green)}.live-state.offline{color:#b3261e}.live-state.offline:before{background:var(--red)}
.dashboard{flex:1;min-height:0;display:grid;grid-template-rows:minmax(140px,1fr) minmax(270px,2.1fr) minmax(112px,.75fr);gap:16px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.metric{position:relative;min-width:0;background:var(--blue);border:1.5px solid var(--ink);border-radius:17px;padding:clamp(16px,1.7vw,29px);display:flex;flex-direction:column;justify-content:center;overflow:hidden}.metric:nth-child(2){background:var(--green)}.metric:nth-child(3){background:var(--yellow)}.metric:nth-child(4){background:var(--red)}.metric-label{font-size:clamp(13px,1.25vw,21px);font-weight:700;line-height:1.1;padding-right:25px}.metric-value{font-size:clamp(41px,4.8vw,90px);font-weight:700;line-height:1.02;letter-spacing:-.065em;font-variant-numeric:tabular-nums;margin-top:12px;white-space:nowrap}.metric-value.long{font-size:clamp(28px,3.5vw,60px)}.metric-note{font-size:clamp(11px,1vw,17px);font-weight:600;margin-top:9px;line-height:1.25;min-height:2.5em}.metric-shape{position:absolute;top:19px;right:19px;width:25px;height:25px;border:6px solid #ffffffa8;border-radius:50%}.metric:nth-child(2) .metric-shape{border:0;background:#ffffffa8;border-radius:0 100% 0 0}.metric:nth-child(3) .metric-shape{border:0;background:#ffffffa8;border-radius:4px;transform:rotate(15deg)}.metric:nth-child(4) .metric-shape{border:0;background:#ffffffa8;clip-path:polygon(40% 0,60% 0,60% 30%,85% 5%,100% 20%,75% 45%,100% 45%,100% 65%,75% 65%,95% 85%,80% 100%,60% 75%,60% 100%,40% 100%,40% 75%,15% 100%,0 85%,25% 60%,0 60%,0 40%,25% 40%,5% 20%,20% 5%,40% 25%)}
.graphs{display:grid;grid-template-columns:.91fr 1.09fr;gap:16px;min-height:0}.graph{border:1.5px solid var(--ink);border-radius:17px;background:#fff;padding:clamp(17px,1.8vw,30px);display:flex;flex-direction:column;min-width:0;min-height:0}.graph-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}.graph-heading h2{font-size:clamp(20px,1.9vw,33px);font-weight:700;letter-spacing:-.045em;line-height:1.1}.graph-heading>span{font-size:clamp(10px,.9vw,15px);font-weight:700;color:var(--muted);white-space:nowrap}.buckets{display:flex;flex-direction:column;justify-content:center;flex:1;gap:clamp(11px,1.3vh,19px)}.bucket{display:grid;grid-template-columns:clamp(88px,8.8vw,151px) minmax(0,1fr) 32px;align-items:center;gap:13px;font-size:clamp(15px,1.5vw,26px);font-weight:700}.bucket-count{text-align:right;font-variant-numeric:tabular-nums}.bar-track{height:clamp(20px,2.7vh,33px);border-radius:5px;background:#f0f2f5;overflow:hidden}.bar-fill{height:100%;width:0;border-radius:5px;transition:width 900ms cubic-bezier(.2,.8,.2,1);background:var(--accent,var(--blue))}.graph-note{font-size:clamp(10px,.9vw,15px);font-weight:600;color:var(--muted);margin-top:12px;line-height:1.25}.mix{display:grid;grid-template-rows:minmax(0,1fr);grid-template-columns:.95fr 1fr;gap:clamp(12px,1.6vw,26px);align-items:center;flex:1;min-height:0}.donut{display:block;width:100%;height:100%;min-height:0;max-height:100%;overflow:visible}.donut-segment{transition:stroke-dasharray 950ms cubic-bezier(.2,.8,.2,1),stroke-dashoffset 950ms cubic-bezier(.2,.8,.2,1)}.donut-value{font:700 44px "Google Sans",sans-serif;letter-spacing:-2px;fill:var(--ink)}.donut-label{font:700 12px "Google Sans",sans-serif;fill:var(--muted)}.legend{display:grid;gap:clamp(7px,1vh,15px);align-content:center}.legend-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:clamp(13px,1.25vw,22px);font-weight:700;min-width:0}.legend-name{display:flex;align-items:center;gap:9px}.swatch{width:11px;height:11px;flex-shrink:0;border-radius:3px}.legend-percent{font-variant-numeric:tabular-nums;white-space:nowrap}.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;min-height:0}.fact{--fact-accent:#1967d2;--fact-tint:#e8f0fe;position:relative;isolation:isolate;overflow:hidden;min-width:0;padding:clamp(16px,1.35vw,26px) clamp(18px,1.5vw,28px);background:var(--fact-tint);border:1.5px solid #d2e3fc;border-radius:18px;display:flex;align-items:center;justify-content:space-between;gap:clamp(12px,1.2vw,24px)}.fact:nth-child(2){--fact-accent:#137333;--fact-tint:#e6f4ea;border-color:#ceead6}.fact:nth-child(3){--fact-accent:#b3261e;--fact-tint:#fce8e6;border-color:#fad2cf}.fact::before{content:"";position:absolute;right:-41px;top:-57px;width:154px;height:154px;border:22px solid var(--fact-accent);border-radius:50%;opacity:.055;z-index:-1;pointer-events:none}.fact-copy{min-width:0;flex:1}.fact-label{font-size:clamp(12px,1vw,18px);font-weight:700;color:var(--fact-accent);line-height:1.2}.fact-value{font-size:clamp(30px,2.8vw,54px);font-weight:700;letter-spacing:-.055em;line-height:1.05;margin-top:5px;white-space:nowrap;font-variant-numeric:tabular-nums}.fact-value.long{font-size:clamp(21px,2vw,38px)}.fact-note{font-size:clamp(11px,.95vw,17px);font-weight:600;color:#4b5056;margin-top:6px;line-height:1.25}.fact-icon{width:clamp(56px,4.5vw,86px);height:clamp(56px,4.5vw,86px);flex-shrink:0;display:grid;place-items:center;border-radius:22px;background:#fff;border:1.5px solid #fff;box-shadow:0 4px 0 #00000006;color:var(--fact-accent);transform:rotate(-6deg)}.fact-icon svg{display:block;width:66%;height:66%}.fact:nth-child(2) .fact-icon{transform:rotate(6deg)}.fact:nth-child(3) .fact-icon{transform:rotate(-5deg)}.projector-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:50px;flex-shrink:0;font-size:clamp(10px,.95vw,16px);font-weight:600;color:var(--muted)}.join-prompt{white-space:nowrap}.join-prompt a{color:var(--ink);text-decoration:none;font-weight:700;border-bottom:2px solid var(--blue);margin-left:8px}.arrival{position:fixed;top:88px;right:3.4%;background:var(--ink);color:white;border-radius:99px;padding:15px 24px;display:flex;align-items:center;gap:12px;z-index:5;font-size:19px;font-weight:700;opacity:0;transform:translateY(-14px);pointer-events:none}.arrival-spark{width:27px;height:27px;fill:var(--yellow);flex-shrink:0}.arrival.show{animation:arrival 2100ms cubic-bezier(.2,.8,.2,1) both}.metric.changed:after{content:"";position:absolute;inset:0;border:4px solid #fff;border-radius:15px;pointer-events:none;animation:metric-glow 1300ms ease-out forwards}.value-changing{animation:value-pop 550ms cubic-bezier(.2,.8,.2,1)}@keyframes arrival{0%{opacity:0;transform:translateY(-14px) scale(.96)}15%,75%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-8px)}}@keyframes metric-glow{0%{opacity:1}100%{opacity:0}}@keyframes value-pop{0%{transform:translateY(8px);opacity:.45}100%{transform:translateY(0);opacity:1}}
.audience{background:#fff;min-height:100dvh;display:flex;flex-direction:column;padding:max(22px,env(safe-area-inset-top)) 24px max(22px,env(safe-area-inset-bottom))}.audience-header{width:100%;max-width:560px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px}.audience-header .brand{font-size:12px;gap:9px}.audience-header img{width:40px}.audience-tag{font-size:9px;letter-spacing:.1em;font-weight:700;color:var(--muted)}.upload-page{width:100%;max-width:460px;margin:auto;padding:42px 0 34px;display:flex;align-items:stretch;flex-direction:column}.phone-art{width:186px;height:204px;display:block;overflow:visible;flex-shrink:0;margin:0 auto 32px}.phone-bars rect{transform-box:fill-box;transform-origin:center bottom}.icon-defs{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}.ui-icon{width:25px;height:25px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.upload-copy{text-align:center}.upload-copy h1{font-size:clamp(37px,9.5vw,48px);font-weight:700;line-height:1.03;letter-spacing:-.055em}.upload-copy h1>span{color:#1967d2}.upload-copy>p:last-child{font-size:15px;line-height:1.5;color:var(--muted);margin:18px auto 29px;max-width:345px}.upload-button{border:0;border-radius:18px;background:#1967d2;color:#fff;min-height:66px;padding:19px 23px;display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:18px;font-weight:700;box-shadow:0 4px 0 #d6e3fa;transition:background .2s,transform .2s}.upload-button:active{transform:translateY(2px)}.upload-button:disabled{cursor:default}.upload-button.busy{background:#4678bd}.upload-button.success{background:#137333;box-shadow:0 4px 0 #d6ebdc}.upload-button.error{background:#1967d2}#button-icon{width:26px;height:26px}.upload-help{font-size:11px;text-align:center;color:var(--muted);line-height:1.4;margin:15px 4px 0}.upload-how{display:flex;justify-content:space-between;gap:9px;border-top:1px solid #eceef0;padding-top:22px;margin-top:31px;font-size:11px;font-weight:700;color:#1967d2}.upload-how span{display:flex;flex-direction:column;gap:5px}.upload-how strong{font-size:10px;font-weight:500;color:var(--muted)}.audience-footer{text-align:center;font-size:11px;color:var(--muted);margin:0 auto}.color-line{display:flex;gap:4px;justify-content:center;margin-bottom:13px}.color-line i{width:22px;height:4px;border-radius:2px;background:var(--blue)}.color-line i:nth-child(2){background:var(--red)}.color-line i:nth-child(3){background:var(--yellow)}.color-line i:nth-child(4){background:var(--green)}.upload-feedback{display:flex;gap:12px;align-items:center;padding:16px;border-radius:13px;background:#e6f4ea;color:#137333;font-size:14px;font-weight:600;margin-bottom:18px}.upload-feedback.error{background:#fce8e6;color:#b3261e}#feedback-symbol{width:25px;height:25px}.audience.complete .phone-ring{stroke:var(--green)}.audience.uploading .phone-bars rect{animation:upload-bars 850ms ease-in-out alternate infinite}.audience.uploading .phone-bars rect:nth-child(2){animation-delay:170ms}.audience.uploading .phone-bars rect:nth-child(3){animation-delay:340ms}@keyframes upload-bars{from{transform:scaleY(.55);transform-origin:bottom}to{transform:scaleY(1);transform-origin:bottom}}
@media(min-width:1700px){.projector-header{height:110px}.projector-header .brand{font-size:20px}.projector-header .brand img{width:62px;height:auto}.room-status{font-size:23px}.live-state{font-size:16px}.dashboard,.metrics,.graphs,.facts{gap:23px}.projector-footer{min-height:62px}.metric-shape{width:34px;height:34px;right:25px;top:25px}.arrival{top:116px;font-size:25px}}
@media(min-width:900px) and (max-height:780px){.projector-header{height:70px}.projector-footer{min-height:43px}.dashboard{grid-template-rows:minmax(132px,1fr) minmax(245px,2fr) minmax(104px,.8fr);gap:13px}.metric{padding:16px 20px}.metric-value{font-size:clamp(40px,4.7vw,65px);margin-top:9px}.metric-label{font-size:14px}.metric-note{font-size:11px;margin-top:7px;min-height:2.3em}.graph{padding:17px 20px}.graph-heading{margin-bottom:10px}.graph-heading h2{font-size:21px}.bucket{font-size:16px}.bar-track{height:22px}.legend-row{font-size:14px}.legend{gap:9px}.graph-note{font-size:10px;margin-top:9px}.fact{padding:14px 18px}.fact-value{font-size:clamp(30px,2.8vw,40px)}.fact-value.long{font-size:clamp(21px,2vw,28px)}.fact-label,.fact-note{font-size:12px}.fact-icon{width:56px;height:56px;border-radius:17px}.arrival{top:76px}}
@media(max-width:899px){.projector{height:auto;min-height:100dvh;padding:0 5%}.projector-header{height:90px;flex-wrap:wrap;gap:9px;padding:17px 0}.projector-header h1{font-size:26px}.projector-header .brand span{display:none}.room-status{font-size:12px;gap:8px}.live-state{font-size:10px}.dashboard{grid-template-rows:auto;gap:12px}.metrics{grid-template-columns:1fr 1fr;gap:10px}.metric{min-height:150px;padding:17px}.metric-value{font-size:43px}.metric-label{font-size:12px}.metric-note{font-size:11px}.graphs{grid-template-columns:1fr;gap:12px}.graph{min-height:290px;padding:20px}.graph-heading h2{font-size:23px}.bucket{font-size:16px;grid-template-columns:100px 1fr 27px}.graph-note{font-size:11px}.legend-row{font-size:14px}.mix{grid-template-columns:1fr 1fr}.donut{max-height:220px}.facts{grid-template-columns:1fr;gap:9px}.fact{min-height:112px;padding:18px 20px}.fact-value{font-size:34px}.fact-value.long{font-size:25px}.fact-label,.fact-note{font-size:12px}.fact-icon{width:62px;height:62px;border-radius:18px}.projector-footer{padding:18px 0;font-size:10px;flex-wrap:wrap;gap:10px}.arrival{top:95px;font-size:15px;padding:10px 17px}.arrival-spark{width:21px;height:21px}}
@media(max-width:359px){.audience{padding-left:18px;padding-right:18px}.audience-header .brand{font-size:10px}.audience-tag{font-size:8px}.upload-copy h1{font-size:35px}.phone-art{transform:scale(.85);margin-top:-12px;margin-bottom:12px}.upload-copy>p:last-child{font-size:14px}.upload-button{font-size:16px}.upload-how{gap:7px}.upload-how strong{font-size:9px}.room-status{font-size:10px;gap:5px}.projector-header h1{font-size:23px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.arrival.show{opacity:1;transform:none}}

.clear-room{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 12px;min-height:36px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--muted);font-size:12px;font-weight:700;white-space:nowrap}.clear-room svg,.join-icon{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.clear-room:hover{border-color:#ea4335;color:#b3261e;background:#fef4f3}.clear-room:disabled{opacity:.6;cursor:wait}.join-prompt{display:inline-flex;align-items:center;gap:3px}.join-icon{width:14px;height:14px}@media(min-width:1700px){.clear-room{font-size:15px;min-height:42px;padding:9px 14px}.clear-room svg{width:19px;height:19px}}@media(max-width:359px){.clear-room{font-size:10px;gap:5px;padding:7px 8px;min-height:32px}.clear-room svg{width:14px;height:14px}}
.clear-dialog{width:min(390px,calc(100% - 40px));border:1.5px solid var(--ink);border-radius:18px;padding:26px;background:#fff;color:var(--ink);box-shadow:0 20px 80px #0002}.clear-dialog::backdrop{background:#20212480;backdrop-filter:blur(2px)}.clear-dialog h2{font-size:24px;font-weight:700;letter-spacing:-.04em;line-height:1.15}.clear-dialog p{font-size:15px;color:var(--muted);line-height:1.5;margin-top:12px}.clear-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.clear-actions button{min-height:42px;border:1px solid var(--line);border-radius:9px;padding:10px 17px;background:#fff;color:var(--ink);font-size:14px;font-weight:700}#confirm-clear{color:#fff;background:#b3261e;border-color:#b3261e}.clear-dialog .clear-error{color:#b3261e}
.metric-value,.fact-value{--minimum-value-size:24;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}.metric-value.app-name,.fact-value.app-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;overflow-wrap:anywhere;line-height:1.05}.metric-value.app-name{font-size:clamp(30px,3.3vw,64px)}.fact-value.app-name{font-size:clamp(28px,2.8vw,54px)}.metric-note,.fact-note{min-height:1.3em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric-label,.fact-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
