/* The conference's own brand, through the same tokens the order form uses
   (public/buy/buy.css). Nothing defines them on virtualconference.app, so every
   fallback below is today's value and the platform look does not move. On a
   conference's own host the shell sets them from the brand profile
   (public/shared/platform-shell.js wearConference); on the order form buy.js
   does. */
:root{font:16px/1.5 var(--brand-body-font,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif);color:var(--brand-text,#202225);background:var(--brand-bg,#f5f6f8);color-scheme:light}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}a{color:inherit}button,.button,select,input{min-height:44px}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.6rem 1rem;border:1px solid #d9dde3;border-radius:.65rem;background:white;color:var(--brand-text,#202225);font-weight:600;text-decoration:none;cursor:pointer}button:hover,.button:hover{background:#edf0f4}button:active,.button:active{background:#e0e5ec}button:disabled{opacity:.6;cursor:wait}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--brand-accent,#176d86);outline-offset:3px}.primary{background:var(--brand-ink,#e80018);color:white;border-color:var(--brand-ink,#e80018)}.primary:hover{background:var(--brand-ink-hover,#c60014)}.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem clamp(1rem,4vw,3rem);background:white;border-bottom:1px solid #e0e3e8}.brand{display:flex;align-items:center;gap:.75rem;text-decoration:none;font-weight:700}.mark{display:grid;place-items:center;width:40px;height:40px;background:var(--brand-accent,#e80018);color:white;border-radius:.7rem;font-size:.85rem}.brand-logo{display:block;width:auto;height:40px}#account{display:flex;align-items:center;gap:1rem;font-size:.875rem}main{max-width:1120px;margin:auto;padding:clamp(1.25rem,4vw,3rem)}h1{font-size:clamp(1.85rem,4vw,3rem);line-height:1.12;letter-spacing:-.035em;margin:.5rem 0 1rem;overflow-wrap:anywhere}h2{font-size:1.25rem;line-height:1.3;letter-spacing:-.02em;margin:0 0 .65rem}h3{font-size:1rem;margin:0 0 .5rem}h1,h2,h3{font-family:var(--brand-heading-font,var(--brand-body-font,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif))}p{margin:.5rem 0 1rem}.muted,small{color:#5c626c}.eyebrow{font-size:.75rem;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:#59616d}.hero{margin:0 0 2rem}.hero p{max-width:65ch}nav{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.75rem 0}nav button[aria-current=page]{background:var(--brand-ink,#202225);border-color:var(--brand-ink,#202225);color:white}.card{background:white;border:1px solid #dee2e8;border-radius:1rem;padding:clamp(1.25rem,3vw,2rem);margin-bottom:1rem;min-width:0}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.grid>.card{margin:0}.row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.stack{display:grid;gap:1rem}.status{padding:.7rem 0;margin:0;font-size:.9rem;min-height:2.5rem;overflow-wrap:anywhere}.status.error{color:#a01625}.status.success{color:#126451}.pill{display:inline-block;background:#eef3f5;color:#36505d;padding:.3rem .7rem;border-radius:2rem;font-size:.8rem;font-weight:600}.checklist{list-style:none;margin:1rem 0 0;padding:0}.checklist li{padding:1rem 0;border-top:1px solid #e4e7ec;display:flex;gap:.75rem;align-items:baseline}.check{color:#14765d;font-weight:700}form{display:grid;gap:1rem}label{display:grid;gap:.4rem;font-size:.9rem;font-weight:600}input,select,textarea{width:100%;border:1px solid #c5cbd4;border-radius:.6rem;padding:.7rem .85rem;background:white;color:inherit;min-width:0}textarea{min-height:130px;resize:vertical}label.inline{display:flex;align-items:flex-start;gap:.75rem;font-weight:400}input[type=checkbox]{width:22px;min-height:22px;flex:0 0 22px;margin:.15rem 0}.form-actions{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.registration{max-width:620px}.session-meta{font-size:.85rem;color:#5c626c;margin-bottom:.5rem}.description{white-space:pre-wrap;overflow-wrap:anywhere}.empty{padding:1.5rem;background:#eef1f5;border-radius:.75rem}.pager{display:flex;gap:1rem;align-items:center;justify-content:flex-end;margin-top:1.5rem}.roster{width:100%;border-collapse:collapse}.roster th,.roster td{text-align:left;padding:.85rem;border-bottom:1px solid #e3e6eb}.table-scroll{overflow:auto}.help{font-size:.85rem;color:#5c626c}details{margin:1rem 0}summary{cursor:pointer;padding:.7rem 0;min-height:44px;font-weight:600}.event-link{display:block;text-decoration:none}.event-link:hover{border-color:#7b8b9e}.join{margin-top:1rem}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.nowrap{white-space:nowrap}@media(max-width:650px){.grid,.setup-grid{grid-template-columns:1fr}#account>span{display:none}.topbar{padding:.75rem 1rem}main{padding:1.25rem}nav{gap:.4rem}nav button{flex:1 1 auto}.card{padding:1.25rem}.pager{justify-content:space-between}.roster th,.roster td{padding:.7rem .5rem}.form-actions>*{max-width:100%}}

/* An organizer arriving from the dashboard must still feel inside the workspace.
   This bar carries the way back, so it is navigation rather than a stray button. */
.workspace-context{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0 0 1.5rem;padding:.6rem .9rem;background:white;border:1px solid #dee2e8;border-radius:.65rem;font-size:.85rem;color:#5c626c}
.workspace-context a{color:var(--brand-link,#176d86);font-weight:600;text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.workspace-context a:hover{text-decoration:underline}
.workspace-context strong{color:var(--brand-text,#202225)}
/* Section tabs and workspace destinations are different things, so they are
   kept in different regions instead of wrapping into one another. */
.organizer-tools{background:white;border:1px solid #dee2e8;border-radius:1rem;padding:clamp(1.25rem,3vw,2rem);margin-bottom:1rem}
.organizer-tools h2{margin-bottom:.25rem}
.organizer-tools .help{margin:0 0 1rem}
.organizer-tools-links{display:flex;flex-wrap:wrap;gap:.75rem}
@media(max-width:650px){.organizer-tools-links{flex-direction:column;align-items:stretch}}

/* Agenda research and the one planning action on each talk: Add to calendar. */
.agenda-filter{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr) auto;gap:.75rem;align-items:end;margin:1rem 0 .25rem}
.agenda-count{margin:0 0 1rem;font-size:.9rem}
.session-card h2{margin-bottom:.35rem}
.session-card.is-target{border-color:var(--brand-link,#176d86);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-link,#176d86) 15%,transparent)}
.session-speakers{margin:.25rem 0 .75rem;color:#36505d;font-weight:600}
.session-more{border-top:1px solid #e4e7ec;margin:1rem 0 0}
.session-more h3{margin-top:1rem}
.speaker-bio{display:flex;gap:1rem;align-items:flex-start;margin:1rem 0}
.speaker-bio img{width:72px;height:72px;object-fit:cover;border-radius:12px;flex:0 0 72px}
.speaker-bio h3{margin:0 0 .25rem}
.plan-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-top:1.25rem}
.plan-alt{color:var(--brand-link,#176d86);font-weight:600;font-size:.9rem;min-height:44px;display:inline-flex;align-items:center}
.plan-alt:hover{text-decoration:none}
.plan-state{color:#126451;font-weight:700}
.plan-note{margin:.5rem 0 0}
[aria-disabled=true]{opacity:.6;pointer-events:none}
.talk-momentum{background:#eef6f3;border:1px solid #d3e8e0;border-radius:.75rem;padding:1rem 1.15rem;margin:.5rem 0 1.25rem}
.talk-momentum p{margin:.2rem 0}
.talk-count{font-size:1.05rem}
.talk-count strong{font-size:1.35rem;letter-spacing:-.02em;color:#126451}
.talk-counts-note button{min-height:36px;padding:.3rem .75rem;margin-left:.25rem}
@media(max-width:650px){.agenda-filter{grid-template-columns:1fr}.plan-actions>.button{flex:1 1 auto}}
/* Remove is reversible but should never compete with the main action. */
.plan-remove{background:none;border-color:transparent;color:#5c626c;font-weight:600;padding:.6rem .5rem;text-decoration:underline;text-underline-offset:3px}
.plan-remove:hover{background:#edf0f4;color:var(--brand-text,#202225)}
/* A speaker's own links sit inside their profile form, grouped so the block
   reads as one decision rather than seven unrelated boxes. */
.speaker-socials{border:1px solid #e4e7ec;border-radius:.75rem;padding:1rem 1.15rem 1.15rem;margin:1.25rem 0 0;min-width:0}
.speaker-socials legend{padding:0 .4rem;font-weight:700}
.speaker-socials .help{margin:0 0 .75rem}
.speaker-socials label{display:block;margin-bottom:.75rem}
/* Linked speakers read as a list of facts, with removal available but quiet. */
.assigned-speakers{list-style:none;margin:.75rem 0 0;padding:0}
.assigned-speakers li{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #e4e7ec}
.assigned-speakers form{margin:0}
/* The title a speaker recommends is a request, not an edit, so it sits in its
   own box with the organizer's answer above it rather than in the talk form. */
.talk-title-request{background:#f6f7fa;border:1px solid #dee2e8;border-radius:.75rem;padding:1rem 1.15rem;margin:0 0 1.25rem}
.talk-title-request form{gap:.75rem}
.talk-title-request .status{min-height:0;padding:0 0 .5rem;font-weight:600}
.talk-title-request .help{margin:0}
/* Speaker home, My talks and My link & results (2026-09-26 speaker QA). */
.checklist-link{min-height:0;padding:0;border:0;background:none;font-weight:500;text-align:left;color:inherit;text-decoration:underline;text-decoration-color:#c5cbd4;text-underline-offset:3px}.checklist-link:hover{background:none;text-decoration-color:currentColor}
.talk-home-title{margin-top:.35rem}.talk-home-title+.muted{margin-top:0}.talk-when{margin:0 0 .75rem;font-size:.9rem;color:#5c626c}
.share-row{display:flex;gap:.75rem;align-items:flex-end}.share-link{flex:1 1 auto;min-width:0}.share-row>button{flex:0 0 auto}
.speaker-codes{display:grid;gap:.75rem;margin-top:1rem}
.speaker-code{display:flex;gap:1rem;align-items:flex-start;justify-content:space-between;padding:1.1rem 1.25rem;border:1px solid #dee2e8;border-radius:.85rem;background:var(--brand-bg,#f8f9fb)}
.speaker-code-copy{min-width:0}.speaker-code-copy p{margin:0}.speaker-code-copy .help{margin:.35rem 0 0;max-width:60ch}
.speaker-code-label{font-size:.75rem;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:#59616d}
.speaker-code-value{font:700 1.35rem/1.25 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.01em;overflow-wrap:anywhere;margin-top:.2rem!important}
.speaker-code-status{margin-top:.5rem!important;font-size:.85rem;font-weight:600;color:#126451}.speaker-code-status.is-empty{color:#a01625}
.speaker-code>button{flex:0 0 auto}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;margin:1rem 0 0}
.stat-grid>div{padding:1rem;border:1px solid #e3e6eb;border-radius:.75rem}.stat-grid dt{font-size:.8rem;color:#5c626c;font-weight:600}.stat-grid dd{margin:.25rem 0 0;font-size:1.6rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
button,.button{transition:transform 120ms ease-out}button:active:not(:disabled),.button:active{transform:scale(.97)}
@media (prefers-reduced-motion:reduce){button,.button{transition:none}button:active:not(:disabled),.button:active{transform:none}}
@media(max-width:650px){.share-row{flex-direction:column;align-items:stretch}.speaker-code{flex-direction:column}.speaker-code>button{width:100%}}
