:root{font-family:"Microsoft YaHei","PingFang SC",sans-serif;color:#eaf3f3;background:#071b23;font-synthesis:none;--gold:#ebca8e;--muted:#91aaaf;--line:#ffffff1c;--panel:#102a33;--mint:#77e1c2}*{box-sizing:border-box}body{margin:0;min-height:100vh;display:flow-root}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button,.button{border:1px solid var(--line);border-radius:9px;background:#21424a;color:#f2f6f4;padding:11px 17px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}button:hover,.button:hover{filter:brightness(1.16)}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--gold);color:#152a30;border-color:var(--gold);font-weight:700}.danger{background:#673b42}.quiet{background:transparent}a{color:var(--mint)}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #ffffff25;border-radius:8px;background:#0c222b;color:#f0f5f5}select option{background:#102a33}textarea{min-height:110px;resize:vertical}label{font-size:13px;color:#bdcfd1;display:block;line-height:1.7}label input,label select,label textarea{margin-top:6px}h1,h2,h3,p{margin-top:0}h1{font-weight:600;letter-spacing:1px}h2{font-size:22px}h3{font-size:16px}.muted{color:var(--muted);font-size:13px;line-height:1.8}.eyebrow{font-size:11px;color:var(--gold);letter-spacing:4px;text-transform:uppercase}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.spread{justify-content:space-between}.grid{display:grid;gap:18px}.two{grid-template-columns:1fr 1fr}.three{grid-template-columns:repeat(3,1fr)}.card{padding:24px;background:linear-gradient(140deg,#12313b,#0d252e);border:1px solid var(--line);border-radius:14px}.pill{display:inline-flex;border:1px solid var(--line);padding:5px 10px;border-radius:20px;color:var(--mint);font-size:12px}.shell{max-width:1380px;margin:auto;padding:30px 36px}.topbar{padding:0 0 24px;border-bottom:1px solid var(--line);margin-bottom:25px}.brand{display:flex;align-items:center;gap:12px;font-weight:600}.brandmark{width:34px;height:34px;border-radius:11px;background:var(--gold);color:#17323a;display:grid;place-items:center;font-size:20px}.nav{display:flex;gap:7px;margin-bottom:24px;flex-wrap:wrap}.nav button{background:transparent;color:var(--muted)}.nav button.active{background:#23444b;color:var(--gold);border-color:#b79a5c66}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.fields .wide{grid-column:1/-1}.check{display:flex;gap:9px;align-items:center}.check input{width:17px;height:17px;margin:0;accent-color:#ebca8e}.stat{font-size:34px;font-weight:600;color:var(--gold)}.stats{margin-bottom:22px}.stats .card{padding:18px 24px}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px;text-align:left}th{color:var(--muted);font-weight:400}td,th{padding:13px 10px;border-bottom:1px solid var(--line)}.avatar{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;background:linear-gradient(145deg,#396773,#183f4c);color:var(--gold);font-weight:600;overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover}.mini{width:34px;height:34px;border-radius:10px;font-size:13px}.notice{padding:12px 16px;background:#ebca8e0b;border:1px solid #ebca8e30;border-radius:8px;color:#ddcbac;font-size:13px;line-height:1.8;margin:15px 0}.empty{padding:40px 16px;text-align:center;color:var(--muted);line-height:1.8}.loading{padding:80px;text-align:center}.mobile{max-width:500px;margin:0 auto;padding:35px 20px}.mobile h1{font-size:30px;margin:18px 0 10px}.mobile .card{margin-top:24px}.mobile form{display:grid;gap:18px}.mobile .primary{width:100%}.bigscore{font-size:68px;font-weight:700;color:var(--gold);text-align:center;padding:15px}.scoreinput{font-size:38px;text-align:center}.login{max-width:420px;margin:12vh auto;padding:32px}.login form{display:grid;gap:16px}.success{color:var(--mint);text-align:center;padding:30px 0}.success strong{display:block;font-size:28px;margin-bottom:12px}.qr{background:white;padding:5px;border-radius:12px;width:150px;height:150px}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);padding:12px 20px;border-radius:10px;background:#f5dfb8;color:#1e3035;box-shadow:0 10px 60px #0006;display:none;z-index:100;max-width:90vw}#toast.show{display:block}.screen{min-height:100vh;padding:42px 60px 25px;background:radial-gradient(ellipse at 50% 50%,#1a4853 0%,#0a252e 52%,#061920 100%);position:relative;overflow:hidden}.screen:before{content:"";position:absolute;inset:14px;border:1px solid #ebca8e28;pointer-events:none}.screen-head{text-align:center;position:relative}.screen-head h1{font-size:clamp(30px,4vw,65px);margin:15px 0 8px;letter-spacing:7px;color:#f9e4be}.screen-head p{color:#9fbabf;letter-spacing:4px}.screen-tools{position:absolute;top:34px;right:35px;opacity:.3;z-index:3}.screen-tools:hover{opacity:1}.stage{min-height:490px;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:35px 0}.wall{display:grid;grid-template-columns:repeat(10,1fr);gap:12px;width:100%}.tile{padding:16px 8px 12px;text-align:center;background:#ffffff05;border:1px solid #ffffff0c;border-radius:13px;transition:background .15s,transform .15s}.tile .avatar{margin:0 auto 9px;width:62px;height:62px;font-size:20px}.tile small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.tile.hot{background:#b7a57930;border-color:var(--gold);transform:translateY(-5px);box-shadow:0 0 35px #d8bb6d20}.stage-label{color:var(--gold);letter-spacing:6px;margin-bottom:30px;font-size:13px}.hero-person{display:flex;align-items:center;gap:35px;margin:10px 0 25px}.hero-person .avatar{width:150px;height:150px;border-radius:35px;font-size:52px;border:1px solid #ebca8e66}.hero-person h2{font-size:62px;margin:0 0 15px}.hero-person p{font-size:22px;color:#9fbabf}.screen-foot{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:20px;gap:25px}.screen-foot .qr{width:105px;height:105px}.screen-foot .count{font-size:32px;color:var(--gold)}.timer{font-variant-numeric:tabular-nums;color:var(--gold);font-size:40px;letter-spacing:5px}.ranks{width:min(900px,100%)}.rank{display:flex;align-items:center;gap:18px;padding:17px 24px;background:#ffffff05;border:1px solid var(--line);border-radius:12px;margin-bottom:10px}.rank b{font-size:23px;color:var(--gold);width:40px}.rank .value{margin-left:auto;font-size:30px;color:var(--gold)}.large-number{font-size:110px;font-weight:600;color:var(--gold);line-height:1.1}.divider{height:1px;background:var(--line);margin:22px 0}.smallbutton{padding:6px 10px;font-size:12px}.judge-link{word-break:break-all;font-size:12px}.connection{font-size:11px;color:var(--muted)}@media(min-width:1700px){.stage{min-height:650px}.wall{gap:20px}.tile{padding:22px}.tile .avatar{width:80px;height:80px}}@media(max-width:900px){.shell{padding:22px 16px}.two,.three{grid-template-columns:1fr}.wall{grid-template-columns:repeat(5,1fr)}.screen{padding:35px 25px}.stage{min-height:430px}.screen-head h1{letter-spacing:2px}.hero-person h2{font-size:38px}.hero-person .avatar{width:100px;height:100px}.fields{grid-template-columns:1fr}.fields .wide{grid-column:auto}.screen-tools{display:none}.topbar .row{gap:7px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.screen{display:flex;flex-direction:column}.screen .stage{flex:1;width:100%}.screen-foot{flex-shrink:0}
.appearance{margin-bottom:24px}.theme-options{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px}.theme-option{cursor:pointer;position:relative;color:#c7d8d9}.theme-option input{width:16px;margin:0 6px 8px 0;accent-color:#ebca8e}.theme-swatch{height:78px;width:100%;border-radius:10px;border:2px solid #ffffff22;display:grid;place-items:center;font-size:25px;color:#f9e4be;margin-bottom:7px;overflow:hidden}.theme-option:has(input:checked) .theme-swatch{border-color:#ebca8e;box-shadow:0 0 0 2px #ebca8e22}.theme-option:has(input:disabled){opacity:.4}.theme-swatch img{width:100%;height:100%;object-fit:cover}.theme-teal{background:radial-gradient(ellipse at 50% 50%,#1a4853 0%,#0a252e 52%,#061920 100%)}.theme-red{background:radial-gradient(ellipse at 50% 36%,#b62c35 0%,#72101e 55%,#310714 100%)}.theme-blue{background:radial-gradient(ellipse at 50% 36%,#245798 0%,#102d58 55%,#07142d 100%)}.theme-purple{background:radial-gradient(ellipse at 50% 36%,#6b4290 0%,#35204f 55%,#170c2a 100%)}.theme-amber{background:radial-gradient(ellipse at 50% 36%,#98662e 0%,#50321b 55%,#20160f 100%)}.screen.theme-image{background-color:#081820;background-image:linear-gradient(rgba(3,10,16,var(--shade)),rgba(3,10,16,var(--shade))),var(--custom-image);background-size:100% 100%,var(--image-fit);background-position:center;background-repeat:no-repeat}.theme-swatch.theme-image{background:#071b23}.screen.hide-titles .screen-head{visibility:hidden}.screen[class*="theme-"] .tile{background:#09151a65}.screen[class*="theme-"] .tile.hot{background:#b7a57950}.screen[class*="theme-"] .hero-person p,.screen[class*="theme-"] .screen-head p{color:#d0dadd}.screen.theme-image h1,.screen.theme-image h2,.screen.theme-image .stage-label,.screen.theme-image .timer,.screen.theme-image .large-number{text-shadow:0 2px 12px #0009}@media(max-width:900px){.theme-options{grid-template-columns:repeat(3,minmax(0,1fr))}}
.screen .empty{color:#d0dadd}
.event-brand{display:flex;align-items:center;justify-content:flex-start;margin-bottom:18px;flex-shrink:0;position:relative;z-index:1}.event-brand.logo-center{justify-content:center}.event-brand.logo-right{justify-content:flex-end}.event-logo{display:block;width:var(--logo-width,180px);max-width:60vw;max-height:100px;height:auto;object-fit:contain;object-position:inherit}.event-brand.logo-left .event-logo{object-position:left center}.event-brand.logo-right .event-logo{object-position:right center}.screen:has(.event-brand) .stage{min-height:350px}.mobile-brand .event-logo{max-height:70px;max-width:60%}.mobile-brand{margin-bottom:25px}.logo-preview{padding:20px;background:repeating-conic-gradient(#14313a 0% 25%,#1e3e48 0% 50%) 50% / 20px 20px;border:1px solid var(--line);border-radius:10px;margin-bottom:20px}.logo-preview .event-brand{margin:0}.screen .event-brand{padding-right:70px}
.screen .event-brand.logo-center{padding-right:0}.screen .event-brand.logo-left{padding-right:0}
body[data-ui-theme="red"]{--ui-background:radial-gradient(ellipse at 35% 0%,#a62332 0%,#5d1425 48%,#290d19 100%);--ui-panel-top:#681e2d;--ui-panel-bottom:#431421;--ui-input:#37121f;--ui-button:#813044;--ui-avatar:#a74750;--muted:#d9b6bd;--mint:#f6d7af;--gold:#ffe0a0}
body[data-ui-theme="blue"]{--ui-background:radial-gradient(ellipse at 35% 0%,#244e87 0%,#152d50 48%,#08152c 100%);--ui-panel-top:#203e62;--ui-panel-bottom:#142d4c;--ui-input:#0d2039;--ui-button:#2d537b;--ui-avatar:#47759b;--muted:#afc5df;--mint:#a9dbf4;--gold:#f5daa5}
body[data-ui-theme="purple"]{--ui-background:radial-gradient(ellipse at 35% 0%,#654080 0%,#38234e 48%,#1a1029 100%);--ui-panel-top:#49305e;--ui-panel-bottom:#30203f;--ui-input:#25192f;--ui-button:#614376;--ui-avatar:#86609e;--muted:#cbbbd9;--mint:#dcc6f6;--gold:#f4d7a3}
body[data-ui-theme="amber"]{--ui-background:radial-gradient(ellipse at 35% 0%,#815c32 0%,#49301f 48%,#22170f 100%);--ui-panel-top:#573c29;--ui-panel-bottom:#35251b;--ui-input:#2b1e17;--ui-button:#715137;--ui-avatar:#9b754b;--muted:#d3c0a7;--mint:#f4d4a1;--gold:#ffe0a0}
body[data-ui-theme="teal"]{--ui-background:radial-gradient(ellipse at 35% 0%,#1a4853 0%,#0a252e 48%,#061920 100%);--ui-panel-top:#12313b;--ui-panel-bottom:#0d252e;--ui-input:#0c222b;--ui-button:#21424a;--ui-avatar:#396773;--muted:#a7bec2;--mint:#77e1c2;--gold:#ebca8e}
body[data-ui-theme]:not([data-ui-theme=""]){background:var(--ui-background);background-attachment:fixed;color:#fff5ed;--line:#ffffff24}
body[data-ui-theme]:not([data-ui-theme=""]) .card{background:linear-gradient(140deg,var(--ui-panel-top),var(--ui-panel-bottom))}
body[data-ui-theme]:not([data-ui-theme=""]) input,body[data-ui-theme]:not([data-ui-theme=""]) select,body[data-ui-theme]:not([data-ui-theme=""]) textarea{background:var(--ui-input);color:#fff5ed;border-color:#ffffff35}
body[data-ui-theme]:not([data-ui-theme=""]) select option{background:var(--ui-input)}
body[data-ui-theme]:not([data-ui-theme=""]) button:not(.primary):not(.danger):not(.quiet),body[data-ui-theme]:not([data-ui-theme=""]) .button:not(.primary):not(.danger):not(.quiet){background:var(--ui-button)}
body[data-ui-theme]:not([data-ui-theme=""]) .nav button{background:transparent!important}
body[data-ui-theme]:not([data-ui-theme=""]) .nav button.active{background:var(--ui-button)!important}
body[data-ui-theme]:not([data-ui-theme=""]) .avatar{background:linear-gradient(145deg,var(--ui-avatar),var(--ui-panel-bottom))}
body[data-ui-theme]:not([data-ui-theme=""]) label{color:#ead8da}
body[data-ui-theme]:not([data-ui-theme=""]) .logo-preview{background:repeating-conic-gradient(var(--ui-panel-top) 0% 25%,var(--ui-panel-bottom) 0% 50%) 50% / 20px 20px}
.draw-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-height:320px;overflow:auto;margin-top:12px}.draw-choice{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px;cursor:pointer}.draw-choice input{width:18px;height:18px;margin:0;accent-color:var(--gold);flex-shrink:0}.draw-choice small{display:block;color:var(--muted)}.draw-choice:has(input:checked){border-color:var(--gold);background:#ffe0a015}#specified-people[hidden],.draw-choice[hidden]{display:none!important}@media(max-width:900px){.draw-choices{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:500px){.draw-choices{grid-template-columns:1fr}}
.platform-columns{grid-template-columns:minmax(0,1.7fr) minmax(320px,1fr);align-items:start}.company-row{padding:20px 0;border-bottom:1px solid var(--line)}.company-row:first-child{padding-top:5px}.company-row:last-child{border:0;padding-bottom:0}.company-links{display:grid;gap:12px;margin:15px 0}.company-links label{display:grid;gap:4px}.company-links a{font-size:12px;word-break:break-all}.platform-dialog{color:#fff5ed;background:var(--ui-panel-bottom,#521927);max-width:500px;width:90vw}.platform-dialog::backdrop{background:#16080cc9}#action-name-label[hidden]{display:none!important}@media(max-width:1000px){.platform-columns{grid-template-columns:1fr}}

/* Keep controls aligned when labels wrap to multiple lines. */
.fields>label:not(.check){display:flex;flex-direction:column;justify-content:flex-end;min-width:0}.fields>label:not(.check)>input,.fields>label:not(.check)>select,.fields>label:not(.check)>textarea{flex-shrink:0}.fields>.check{align-self:end;min-height:44px}
.fields>label:not(.check)>input:not([type=file]),.fields>label:not(.check)>select{height:46px;line-height:1.4}

.brand-icon{object-fit:contain;padding:0;background:transparent;border-radius:10px}.login-brand{display:block;width:240px;max-width:100%;height:auto;margin-bottom:24px}.favicon-preview{display:flex;align-items:center;gap:16px;margin:18px 0 24px;color:var(--muted)}.favicon-preview img{width:56px;height:56px;object-fit:contain;background:#ffffff12;border:1px solid var(--line);border-radius:12px;padding:5px}.brand-upload{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.brand-upload>label{flex:1;min-width:220px}.brand-upload .muted{display:block;margin-top:8px}#platformtheme{align-items:end}#platformtheme button{height:46px}.brand-upload input[type=file]{min-height:46px}.screen .event-logo{max-height:88px}@media(max-width:600px){.brand-upload{display:grid;grid-template-columns:1fr}.brand-upload>label{min-width:0}.brand-upload button{width:100%}.login{margin:7vh 16px}.login-brand{width:220px}}

.brand-upload,#logoupload,#backgroundupload{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:end;gap:16px}.brand-upload>label,#logoupload>label,#backgroundupload>label{min-width:0}.brand-upload button,#logoupload button,#backgroundupload button{min-height:46px}.upload-note{grid-column:1/-1;margin:0}.brand-upload input[type=file],#logoupload input[type=file],#backgroundupload input[type=file]{height:46px}@media(max-width:900px){.brand-upload,#logoupload,#backgroundupload{grid-template-columns:1fr}.brand-upload button,#logoupload button,#backgroundupload button{width:100%}}

.roster-heading{margin:22px 0 14px}.roster-heading h3{margin:0}.roster-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}.roster-search button{min-height:46px}.draw-person-row{min-width:0}.draw-person-row .draw-choice{height:100%;margin:0}.draw-person-row[hidden],#roster-no-match[hidden]{display:none!important}.draw-person-info{min-width:0;overflow-wrap:anywhere}.draw-choice.already-drawn{opacity:.5}.draw-choices{min-height:100px;max-height:380px;overflow:auto;align-items:stretch;padding:3px}.roster-empty{grid-column:1/-1}.draw-choice:has(input:checked){background:#ffe0a023}.qr[role=button]{cursor:zoom-in}.qr[role=button]:focus-visible{outline:3px solid var(--gold);outline-offset:4px}.qr-dialog{position:fixed;inset:0;margin:auto;border:1px solid #ffffff44;border-radius:20px;padding:24px;width:min(90vw,620px);max-height:94dvh;overflow:auto;background:#fff8ec;color:#38212a;text-align:center;box-shadow:0 20px 90px #0009}.qr-dialog::backdrop{background:#080b16c9}.qr-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.qr-modal-head h2{margin:0}.qr-modal-head button{background:#6a2032;color:white}.qr-large{display:block;width:min(100%,56dvh);height:auto;aspect-ratio:1;margin:0 auto 16px;background:white;padding:12px;border-radius:10px}.qr-dialog p{margin:10px 0}.qr-dialog .muted{color:#785965}.qr-join-link{font-size:12px;color:#713148;overflow-wrap:anywhere}body:has(#qr-dialog[open]){overflow:hidden}@media(max-width:600px){.roster-search{grid-template-columns:1fr}.qr-dialog{padding:18px}.qr-large{padding:8px}}

/* Conference attendee cards: readable identity, portrait first, adaptive density. */
.screen .attendee-wall{grid-template-columns:repeat(var(--attendee-columns),minmax(0,1fr));width:100%;max-width:1600px;margin:0 auto;gap:clamp(10px,1.3vw,22px);align-items:stretch}
.screen .attendee-card{position:relative;min-width:0;padding:0;overflow:hidden;border:1px solid #f0d4a780;border-radius:18px;background:linear-gradient(145deg,#fffcf5,#eee3d0);color:#39252a;box-shadow:0 12px 34px #16050c24;text-align:left;transition:transform .2s,border-color .2s,box-shadow .2s}
.attendee-portrait{position:relative;aspect-ratio:1.25;background:linear-gradient(140deg,#e9d1a9,#c6a674);overflow:hidden}
.screen .attendee-card .avatar{width:100%;height:100%;margin:0;border:0;border-radius:0;font-size:clamp(26px,3vw,56px);background:radial-gradient(ellipse at 35% 20%,#fff4d7,#dbbd88);color:#69482e;font-weight:600;letter-spacing:5px}
.screen .attendee-card .avatar img{width:100%;height:100%;object-fit:cover;object-position:center 35%;border-radius:0}
.attendee-identity{position:relative;padding:15px 18px 18px;min-width:0;border-top:3px solid #cda86b}
.attendee-status{display:flex;align-items:center;gap:6px;font-size:10px;letter-spacing:2px;color:#89683f;margin-bottom:8px}
.attendee-status i{display:block;width:5px;height:5px;border-radius:50%;background:#b88e4f}
.screen .attendee-name{display:block;font-size:clamp(18px,1.7vw,30px);font-weight:700;line-height:1.3;letter-spacing:1px;overflow-wrap:anywhere;text-shadow:none}
.screen .attendee-card .attendee-org{display:block;margin-top:7px;color:#78696a;font-size:clamp(11px,.9vw,16px);line-height:1.5;overflow-wrap:anywhere}
.screen .attendee-wall[data-density=solo]{display:flex;justify-content:center;max-width:760px}
.screen .attendee-wall[data-density=solo] .attendee-card{display:grid;grid-template-columns:44% minmax(0,1fr);width:min(100%,620px);border-radius:24px;min-height:246px}
.attendee-wall[data-density=solo] .attendee-portrait{aspect-ratio:auto;min-height:246px}
.attendee-wall[data-density=solo] .attendee-identity{border-top:0;border-left:1px solid #d9bd91;padding:34px;display:flex;flex-direction:column;justify-content:center}
.attendee-wall[data-density=solo] .attendee-status{font-size:12px;margin-bottom:20px}
.screen .attendee-wall[data-density=solo] .attendee-name{font-size:clamp(32px,3vw,52px);letter-spacing:3px}
.screen .attendee-wall[data-density=solo] .attendee-org{font-size:clamp(16px,1.3vw,22px);margin-top:16px}
.screen .attendee-wall[data-density=few]{max-width:calc(var(--attendee-columns)*260px)}
.attendee-wall[data-density=dense] .attendee-portrait{aspect-ratio:1.5}
.attendee-wall[data-density=dense] .attendee-identity{padding:8px 10px 10px;border-top-width:2px}
.attendee-wall[data-density=dense] .attendee-status{display:none}
.screen .attendee-wall[data-density=dense] .attendee-name{font-size:clamp(13px,1.15vw,22px)}
.screen .attendee-wall[data-density=dense] .attendee-org{font-size:clamp(10px,.7vw,13px);margin-top:4px}
.screen .attendee-card.hot{background:linear-gradient(145deg,#fff8df,#efd39d);border-color:#fff2c7;transform:translateY(-5px) scale(1.025);box-shadow:0 0 0 3px #ffe6a559,0 14px 35px #12050855}
@media(max-width:900px){.screen .attendee-wall[data-density=medium],.screen .attendee-wall[data-density=dense]{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.screen .attendee-wall[data-density=few]{grid-template-columns:repeat(min(var(--attendee-columns),2),minmax(0,1fr));max-width:600px}.attendee-identity{padding:12px}.screen .attendee-wall[data-density=solo] .attendee-card{min-height:200px}.attendee-wall[data-density=solo] .attendee-portrait{min-height:200px}.attendee-wall[data-density=solo] .attendee-identity{padding:24px}}
@media(max-width:500px){.screen .attendee-wall[data-density=solo] .attendee-card{grid-template-columns:40% minmax(0,1fr);min-height:180px;border-radius:18px}.attendee-wall[data-density=solo] .attendee-portrait{min-height:180px}.attendee-wall[data-density=solo] .attendee-identity{padding:18px}.screen .attendee-wall[data-density=solo] .attendee-name{font-size:28px}.screen .attendee-wall[data-density=solo] .attendee-org{font-size:14px;margin-top:10px}.attendee-wall[data-density=solo] .attendee-status{font-size:10px;margin-bottom:14px}.screen .attendee-wall[data-density=medium],.screen .attendee-wall[data-density=dense]{grid-template-columns:repeat(3,minmax(0,1fr))}}

@media(min-width:901px){.screen:has(.attendee-wall){height:100dvh;min-height:700px}.screen:has(.attendee-wall) .stage{min-height:0;padding:20px 0}.screen:has(.attendee-wall) .stage-label{flex-shrink:0;margin-bottom:20px}.screen .attendee-wall[data-density=dense]{flex:1;min-height:0;grid-template-rows:repeat(var(--attendee-rows),minmax(0,1fr));max-height:760px}.attendee-wall[data-density=dense] .attendee-card{display:grid;grid-template-rows:minmax(0,1fr) auto;border-radius:12px}.attendee-wall[data-density=dense] .attendee-portrait{aspect-ratio:auto;min-height:0}.attendee-wall[data-density=dense] .attendee-org{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}
.screen .attendee-wall .attendee-card{background:linear-gradient(145deg,#fffcf5,#eee3d0)}.screen .attendee-wall .attendee-card.hot{background:linear-gradient(145deg,#fff8df,#efd39d)}

@media(min-width:901px){.screen .attendee-wall[data-density=medium]{flex:1;min-height:0;grid-template-rows:repeat(var(--attendee-rows),minmax(0,1fr));max-height:340px}.attendee-wall[data-density=medium] .attendee-card{display:grid;grid-template-columns:32% minmax(0,1fr);border-radius:14px}.attendee-wall[data-density=medium] .attendee-portrait{aspect-ratio:auto;min-height:0}.attendee-wall[data-density=medium] .attendee-identity{border-top:0;border-left:1px solid #d9bd91;padding:12px;display:flex;flex-direction:column;justify-content:center}.attendee-wall[data-density=medium] .attendee-status{display:none}.screen .attendee-wall[data-density=medium] .attendee-name{font-size:clamp(18px,1.65vw,28px)}.screen .attendee-wall[data-density=medium] .attendee-org{font-size:clamp(11px,.9vw,16px);margin-top:6px}}
.screen .attendee-wall[data-density=medium] .avatar{font-size:clamp(22px,2vw,34px);letter-spacing:1px}.screen .attendee-wall[data-density=dense] .avatar{font-size:clamp(22px,2vw,34px);letter-spacing:1px}

/* Event motion: short entrances, stable idle views, and a compact mobile brand. */
.logo-frame{position:relative;display:block;width:min(var(--logo-width,180px),calc(88px * var(--logo-ratio,4)));max-width:100%;overflow:hidden;flex-shrink:0}
.logo-frame .event-logo{width:100%;max-width:100%;max-height:none;height:auto}
.logo-frame.logo-fitted{overflow:hidden}
.mobile{padding:20px 20px max(28px,env(safe-area-inset-bottom));width:100%}
body:has(.mobile){background-attachment:scroll}
.mobile .mobile-brand{margin:0 0 16px;min-height:0}
.mobile-brand .logo-frame{width:min(var(--logo-width,180px),calc(42px * var(--logo-ratio,4)));max-width:100%}
.mobile-brand .event-logo{max-width:100%;max-height:none}
.mobile h1{font-size:clamp(23px,5.8vw,29px);line-height:1.45;letter-spacing:.5px;margin:12px 0 10px;overflow-wrap:anywhere}
.mobile .card{margin-top:18px;padding:22px;border-radius:18px}
.mobile .grid.two{grid-template-columns:1fr 1fr;gap:10px}
.mobile input[type=file]{font-size:12px;padding:10px 6px;min-width:0;max-width:100%}
.mobile input[type=file]::file-selector-button{font:inherit;border:0;border-radius:5px;padding:5px;background:#ffffff1c;color:inherit;margin-right:4px}
.mobile .row.spread>.eyebrow{letter-spacing:2px;font-size:10px}
.joined-card{position:relative;overflow:hidden}
.joined-confirmation{display:block;color:var(--gold);font-size:12px;letter-spacing:2px;margin-bottom:20px}
.joined-card>.row>.avatar{width:68px;height:68px;border-radius:20px}
button,.button{touch-action:manipulation;transition:transform .18s ease,filter .18s ease,box-shadow .18s ease}
button:active:not(:disabled),.button:active{transform:scale(.97)}
.screen .attendee-card{transform-origin:center;transition:transform .3s cubic-bezier(.2,.8,.2,1),border-color .25s,box-shadow .3s}
.screen .attendee-card.just-arrived{box-shadow:0 0 0 2px #ffe8ad99,0 18px 60px #f6c96538}
@media(min-width:901px){.screen .attendee-wall[data-density=few]{flex:1;min-height:0;grid-template-rows:minmax(0,1fr);max-height:340px}.attendee-wall[data-density=few] .attendee-card{display:grid;grid-template-rows:minmax(0,1fr) auto}.attendee-wall[data-density=few] .attendee-portrait{aspect-ratio:auto;min-height:0}}
.attendee-card.just-arrived:after{content:"";position:absolute;inset:-70%;background:linear-gradient(110deg,transparent 42%,#fff9 50%,transparent 58%);transform:translateX(-70%);animation:card-light 1.2s .1s both;pointer-events:none}
@keyframes card-light{from{transform:translateX(-70%) rotate(-10deg)}to{transform:translateX(70%) rotate(-10deg)}}
.arrival-spotlight{position:fixed;right:clamp(24px,4vw,80px);bottom:148px;z-index:15;width:min(370px,calc(100vw - 48px));padding:22px 25px;border:1px solid #ffe9b8;border-radius:22px;background:linear-gradient(135deg,#fff9ec,#f2dfb9);color:#541e2d;box-shadow:0 20px 70px #21061465;pointer-events:none;animation:arrival-pop .75s cubic-bezier(.2,.8,.2,1) both}
.arrival-tag{display:block;font-size:12px;letter-spacing:4px;color:#956a35;margin-bottom:14px}
.arrival-person{display:flex;align-items:center;gap:16px;margin-top:10px;min-width:0}
.arrival-avatar{display:grid;place-items:center;width:64px;height:64px;flex-shrink:0;border-radius:18px;overflow:hidden;background:#dcb877;color:#602b25;font-size:22px}
.arrival-avatar img{width:100%;height:100%;object-fit:cover}
.arrival-person>div:last-child{min-width:0}.arrival-person strong{display:block;font-size:26px;overflow-wrap:anywhere}.arrival-person small{display:block;font-size:14px;color:#826861;line-height:1.5;margin-top:4px;overflow-wrap:anywhere}
.arrival-spotlight.leaving{animation:arrival-exit .4s ease both}
@keyframes arrival-pop{0%{opacity:0;transform:translateY(40px) scale(.8) rotate(-2deg)}65%{opacity:1;transform:translateY(-6px) scale(1.025) rotate(.7deg)}100%{opacity:1;transform:none}}
@keyframes arrival-exit{to{opacity:0;transform:translateY(18px) scale(.96)}}
.checkin-celebration{padding:0;border:1px solid #ffe5a47a;border-radius:28px;width:min(390px,calc(100vw - 40px));max-height:calc(100dvh - 48px);overflow-x:hidden;overflow-y:auto;background:#fff8eb;color:#592333;box-shadow:0 30px 100px #17040b80;animation:arrival-pop .78s cubic-bezier(.2,.8,.2,1) both}
.checkin-celebration::backdrop{background:#200811aa;backdrop-filter:blur(5px);animation:veil-in .3s ease both}
.celebration-card{padding:38px 26px 26px;position:relative;text-align:center;overflow:hidden;background:radial-gradient(ellipse at 50% 0,#ffe4a8,transparent 55%)}
.celebration-card .eyebrow{display:block;font-size:10px;letter-spacing:4px;color:#987044;margin-top:20px}
.celebration-card h2{font-size:32px;letter-spacing:3px;margin:8px 0 24px;color:#622638}
.celebration-check{position:relative;display:grid;place-items:center;width:80px;height:80px;margin:auto;border-radius:50%;font-size:43px;color:#785025;background:linear-gradient(145deg,#ffefbd,#dfb36d);box-shadow:0 0 0 9px #dfb36d1f,0 10px 30px #a06c2930;animation:check-bloom .85s .12s both}
.celebration-name{font-size:26px;display:block;overflow-wrap:anywhere}.celebration-org{color:#906b65;line-height:1.6;margin:6px 0 20px;overflow-wrap:anywhere}
.celebration-card .muted{color:#947a70;font-size:13px;line-height:1.8}.celebration-card .primary{width:100%;min-height:48px;background:#86263a;color:#fff3df;border-color:#86263a;margin-top:12px}
.celebration-sparks{position:absolute;top:80px;left:50%;pointer-events:none}
.celebration-sparks i{position:absolute;display:block;width:5px;height:10px;border-radius:2px;background:#d6a353;transform:rotate(calc(var(--i)*25.7deg));animation:spark-flight 1.2s .18s both;--angle:calc(var(--i)*25.7deg)}
.celebration-sparks i:nth-child(3n){background:#9c3347;height:6px}
@keyframes spark-flight{0%{opacity:0;transform:rotate(var(--angle)) translateY(-20px) scale(.5)}25%{opacity:1}100%{opacity:0;transform:rotate(var(--angle)) translateY(-145px) rotate(90deg) scale(.6)}}
@keyframes check-bloom{0%{opacity:0;transform:scale(.35) rotate(-18deg)}65%{opacity:1;transform:scale(1.1) rotate(4deg)}100%{opacity:1;transform:none}}
@keyframes veil-in{from{opacity:0}to{opacity:1}}
@media(max-width:380px){.mobile{padding-left:16px;padding-right:16px}.mobile .card{padding:18px}.mobile .grid.two{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.celebration-sparks{display:none}.checkin-celebration::backdrop{backdrop-filter:none}}
@media(min-width:901px){.screen .attendee-wall[data-density=solo] .attendee-card{min-height:220px}.attendee-wall[data-density=solo] .attendee-portrait{min-height:0}}
