:root{--ink: #1f2833;--paper: #e6eef7;--blue: #0059b8;--blue-2: #4d97e8;--ink-60: rgba(31, 40, 51, .6);--ink-55: rgba(31, 40, 51, .55);--ink-45: rgba(31, 40, 51, .45);--ink-24: rgba(31, 40, 51, .24);--ink-18: rgba(31, 40, 51, .18);--ink-12: rgba(31, 40, 51, .12);--ink-08: rgba(31, 40, 51, .08);--paper-75: rgba(230, 238, 247, .75);--paper-50: rgba(230, 238, 247, .5);--paper-28: rgba(230, 238, 247, .28);--paper-16: rgba(230, 238, 247, .16);--font-heading: "Caprasimo", Georgia, serif;--font-body: "Figtree", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body{margin:0}body{background:var(--ink);color:var(--paper);font-family:var(--font-body);-webkit-font-smoothing:antialiased}#root{min-height:100vh}@keyframes ap-mark{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes ap-blink{0%,to{opacity:1}50%{opacity:.25}}@keyframes ap-fill{0%{width:0}to{width:100%}}.stage{min-height:100vh;background:radial-gradient(120% 80% at 50% -10%,#2a3a4c,#2a3a4c00 60%),linear-gradient(180deg,#1f2833,#172029);padding:26px;color:var(--paper)}@media (max-width: 640px){.stage{padding:14px}}.sheet{background:var(--paper);color:var(--ink);border-radius:28px;padding:30px 34px 26px;min-height:calc(100vh - 52px);display:flex;flex-direction:column;box-shadow:0 30px 80px #00000059}@media (max-width: 640px){.sheet{padding:22px 18px;border-radius:22px;min-height:calc(100vh - 28px)}}.topbar{display:flex;flex-wrap:wrap;align-items:center;gap:14px}.brand{font-family:var(--font-heading);font-size:26px;letter-spacing:-.02em;margin-right:auto;color:var(--ink);text-decoration:none}.nav-pills{display:flex;flex-wrap:wrap;gap:6px}.pill{padding:8px 18px;border:0;border-radius:999px;background:transparent;color:var(--ink-60);font:inherit;font-size:12px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;text-decoration:none;transition:background .15s,color .15s}.pill:hover{background:var(--ink-08);color:var(--ink)}.pill.active{background:var(--ink);color:var(--paper)}.btn{border:0;border-radius:999px;font:inherit;font-size:12px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;padding:10px 22px;transition:background .15s,color .15s}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--blue);color:var(--paper)}.btn-primary:hover:not(:disabled){background:var(--ink)}.btn-dark{background:var(--ink);color:var(--paper)}.btn-dark:hover:not(:disabled){background:var(--blue)}.btn-outline{background:transparent;color:var(--ink);border:1px solid var(--ink-24)}.btn-outline:hover:not(:disabled){background:var(--ink);color:var(--paper)}.btn-lg{padding:14px 28px;font-size:13px}.display{font-family:var(--font-heading);line-height:.88;letter-spacing:-.03em;text-align:center;margin:0}.paren{text-align:center;font-size:14px;font-style:italic;color:var(--ink-60)}.kicker{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-55)}.field-label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-55)}.line-input{width:100%;padding:12px 18px;border:1px solid var(--ink-24);border-radius:999px;background:transparent;color:var(--ink);font:inherit;font-size:15px}.line-input::placeholder{color:var(--ink-45)}.line-input:focus{outline:none;border-color:var(--blue)}.error{color:#c0392b;font-size:14px}.center{text-align:center}.session-row{width:100%;text-align:left;display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 22px;padding:20px 14px;border:0;border-top:1px solid var(--ink-18);background:transparent;color:var(--ink);font:inherit;cursor:pointer;transition:background .12s,color .12s}.session-row:last-of-type{border-bottom:1px solid var(--ink-18)}.session-row:hover{background:var(--ink);color:var(--paper)}.sr-index{flex:0 0 34px;font-style:italic;font-size:13px;opacity:.6}.sr-title{flex:1 1 240px;min-width:0;font-family:var(--font-heading);font-size:clamp(22px,2.6vw,34px);line-height:1.05}.sr-date{flex:0 0 128px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;opacity:.62}.sr-status{flex:0 0 74px;font-size:12px;letter-spacing:.1em;text-transform:uppercase}.sr-status.live{color:var(--blue)}.session-row:hover .sr-status.live{color:var(--blue-2)}.sr-status.closed{opacity:.45}.sr-count{flex:0 0 72px;text-align:right;font-family:var(--font-heading);font-size:20px}.create-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.create-row .line-input{flex:1 1 280px}.scan-hero{position:relative;margin:18px 0 0;min-height:clamp(160px,20vw,300px);display:grid;place-items:center}.scan-word{font-family:var(--font-heading);font-size:clamp(72px,15vw,240px);line-height:.9;letter-spacing:-.03em;text-align:center;white-space:nowrap;color:var(--ink)}.qr-tile{position:absolute;overflow:hidden;width:clamp(160px,20vw,300px);aspect-ratio:1;padding:clamp(10px,1.1vw,16px);border-radius:22px;border:1px solid rgba(255,255,255,.8);background:linear-gradient(150deg,#f0f5fc9e,#f0f5fc6b);-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);box-shadow:0 18px 50px #1f28333d,inset 0 1px #ffffffe6;display:grid;place-items:center}.qr-tile .scan-word-white{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-family:var(--font-heading);font-size:clamp(72px,15vw,240px);line-height:.9;letter-spacing:-.03em;white-space:nowrap;color:#fff;pointer-events:none}.qr-tile.big .scan-word-white{font-size:clamp(90px,17vw,300px)}.qr-tile .qr-sheen{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:22px;background:linear-gradient(150deg,#ffffff57,#fff0 46%);pointer-events:none}.qr-tile .qr-code{position:relative;width:100%;display:block}.qr-tile svg,.qr-tile canvas{position:relative;display:block;width:100%;height:auto}.qr-tile .qr-ph{color:var(--ink-45);font-size:13px}.rotate-bar{width:min(420px,100%);margin:20px auto 0;height:2px;background:var(--ink-18);overflow:hidden}.rotate-bar>span{display:block;height:100%;background:var(--blue);animation:ap-fill 1s linear}.room-open{display:inline-flex;align-items:center;gap:10px;padding:8px 16px;border-radius:999px;background:var(--ink);color:var(--paper);font-size:12px}.room-open .dot{width:7px;height:7px;border-radius:999px;background:var(--blue-2);animation:ap-blink 2.4s ease-in-out infinite}.count-big{font-family:var(--font-heading);font-size:clamp(30px,4vw,56px);line-height:.9;color:var(--ink)}.brand-mirror{font-family:var(--font-heading);font-size:clamp(18px,2vw,28px);line-height:.9;transform:scaleY(-1);color:var(--ink-24);align-self:flex-end}.projector .brand-mirror{font-size:clamp(22px,2.6vw,40px)}.live-under{padding-top:6px}.live-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:18px;padding:48px 12px 18px;border-bottom:1px solid var(--paper-16)}.live-head .idx{font-size:12px;font-style:italic;color:var(--paper-50)}.live-head .h{font-family:var(--font-heading);font-size:clamp(28px,3.6vw,46px);margin-right:auto}.live-head .meta{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--paper-75)}.roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:0 34px;padding:6px 12px 0}.roster-item{display:flex;align-items:baseline;gap:12px;padding:10px 0;border-bottom:1px solid var(--paper-16)}.roster-item .mark{width:7px;height:7px;flex:none;background:var(--blue-2);animation:ap-mark .45s ease both}.roster-item .name{flex:1;min-width:0;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roster-item .time{font-size:12px;color:var(--paper-75)}.roster-empty{padding:20px 12px;color:var(--paper-50);font-size:14px}.arrivals{padding:44px 12px 8px}.arrivals .a-title{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--paper-50);margin-bottom:14px}.arrivals .a-row{display:flex;align-items:baseline;gap:14px;padding:11px 0;border-bottom:1px solid var(--paper-16);max-width:520px}.arrivals .a-name{flex:1;min-width:0;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.arrivals .a-time{font-size:12px;color:var(--paper-75)}.arrivals .a-method{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--paper-50)}.stu-wrap{display:flex;flex-direction:column;align-items:center;width:100%;max-width:360px}.stu-frame{flex:0 1 340px;min-width:280px;border:1px solid var(--ink-18);padding:10px}.stu-card{background:var(--ink);color:var(--paper);padding:26px 22px;min-height:460px;display:flex;flex-direction:column;gap:16px}.stu-card.blue{background:var(--blue);align-items:center;text-align:center}.stu-kicker{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--paper-50)}.stu-title{font-family:var(--font-heading);font-size:27px;margin-top:8px;line-height:1.05}.stu-note{display:flex;align-items:center;gap:9px;padding:10px 0;border-top:1px solid var(--paper-16);border-bottom:1px solid var(--paper-16);font-size:12px;color:var(--paper-75)}.stu-note .sq{width:6px;height:6px;background:var(--blue-2);flex:none}.stu-field .field-label{color:var(--paper-50)}.stu-input{width:100%;margin-top:6px;padding:9px 0;border:0;border-bottom:1px solid var(--paper-28);background:transparent;color:var(--paper);font:inherit;font-size:16px}.stu-input::placeholder{color:var(--paper-50)}.stu-input:focus{outline:none;border-color:var(--blue-2)}.btn-paper{width:100%;min-height:50px;border:0;border-radius:999px;background:var(--paper);color:var(--ink);font-family:var(--font-heading);font-size:16px;cursor:pointer;transition:background .15s}.btn-paper:hover:not(:disabled){background:var(--blue-2)}.btn-paper:disabled{opacity:.5;cursor:default}.stu-video{position:relative;border-radius:14px;overflow:hidden;background:#000;aspect-ratio:3 / 4}.stu-video video{width:100%;height:100%;object-fit:cover}.stu-video .frame{position:absolute;top:12%;right:12%;bottom:12%;left:12%;border:3px solid rgba(77,151,232,.85);border-radius:12px;pointer-events:none}.progress-dots{display:flex;align-items:center;gap:8px;justify-content:center}.progress-dots .d{width:12px;height:12px;border-radius:50%;border:2px solid var(--blue-2)}.progress-dots .d.on{background:var(--blue-2)}.stu-clock{font-family:var(--font-heading);font-size:clamp(50px,9vw,88px);line-height:.9;margin-top:10px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));border-top:1px solid var(--ink-18);border-bottom:1px solid var(--ink-18)}.stat{padding:26px 22px}.stat+.stat{border-left:1px solid var(--ink-18)}.stat .num{font-family:var(--font-heading);font-size:clamp(38px,4.4vw,58px);line-height:1.05;margin-top:6px}.stat .sub{font-size:12px;color:var(--ink-55)}.stat .sub.up{color:var(--blue)}.bars{display:flex;align-items:flex-end;gap:7px;height:190px}.bars .bar{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:8px}.bars .bar>i{width:100%;background:var(--ink-18);display:block}.bars .bar.hot>i{background:var(--blue)}.bars .bar span{font-size:10px;color:var(--ink-45)}.projector{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:var(--paper);color:var(--ink);overflow-y:auto;overflow-x:clip;padding:clamp(22px,3.5vh,46px) clamp(26px,3.5vw,56px);display:flex;flex-direction:column}.projector .pj-top{display:flex;flex-wrap:wrap;align-items:center;gap:18px}.projector .pj-title{font-family:var(--font-heading);font-size:clamp(20px,2vw,30px);margin-right:auto}.projector .pj-mid{flex:1 0 auto;display:flex;flex-direction:column;justify-content:center;padding:clamp(18px,3vh,40px) 0}.scan-hero.big{min-height:clamp(180px,22vw,360px)}.scan-hero.big .scan-word{font-size:clamp(90px,17vw,300px)}.qr-tile.big{width:clamp(180px,22vw,360px);padding:clamp(12px,1.3vw,20px);border-radius:28px}.rotate-bar.big{width:min(620px,100%);height:4px;margin-top:26px}.projector .pj-foot{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px}.projector .count-big{font-size:clamp(54px,8vw,132px);line-height:.84}.auth{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:100%;max-width:420px;background:var(--paper);color:var(--ink);border-radius:28px;padding:34px 32px 30px;box-shadow:0 30px 80px #00000059}.auth-card .brand{font-size:30px;display:block;margin:0}.auth-field{display:flex;flex-direction:column;gap:6px}.row-between{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px}.stack{display:flex;flex-direction:column;gap:1rem}.grow{flex:1}.mt-auto{margin-top:auto}@media (prefers-reduced-motion: reduce){.room-open .dot,.roster-item .mark,.rotate-bar>span{animation:none!important}}
