/* Deadline and author-aside components shared by lessons and the shell. */
.deadline { display:flex; align-items:center; gap:4px; max-width:280px; }
.deadline-copy { display:flex; flex-direction:column; align-items:flex-end; min-width:0; }
.deadline [data-countdown] { min-width:0; font:600 23px/1.15 var(--display); font-variant-numeric:tabular-nums; letter-spacing:-.3px; }
.deadline [data-countdown-label] { font-size:10px; line-height:1.4; text-align:right; }
.deadline-reminder { font:600 11px/1.4 var(--display); color:var(--green-dark); text-align:right; text-underline-offset:3px; }
.deadline[data-countdown-hidden=true] [data-countdown-label],.deadline[data-submission-state=closed] [data-countdown-label] { max-width:210px; font-size:12px; }
.deadline[data-submission-state=soon] .deadline-reminder { color:#775019; }
.deadline[data-submission-state=final] .deadline-reminder { color:#984227; }
.deadline[data-submission-state=closed] .deadline-reminder { color:var(--muted); }
#countdown-toggle { width:40px; height:40px; flex-shrink:0; border-radius:7px; }
#countdown-toggle .eye-slash { display:block; opacity:0; transition:opacity 140ms ease; }
#countdown-toggle[aria-expanded=false] .eye-slash { opacity:1; }
.submission-banner { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); align-items:center; column-gap:24px; row-gap:20px; padding:24px; border-radius:16px; background:#f7f5ed; box-shadow:0 0 0 1px #332b160c,0 2px 4px #332b1605; }
.submission-banner-title { font:600 16px/1.4 var(--display); text-wrap:balance; }
.submission-countdown { display:block; margin:8px 0 2px; font:600 clamp(36px,4.7vw,64px)/1.1 var(--display); font-variant-numeric:tabular-nums; letter-spacing:-1.8px; }
.submission-banner [data-countdown-label] { font-size:12px; color:#655c48; }
.submission-banner-action { min-width:0; }
.submission-button { display:flex; justify-content:center; align-items:center; gap:12px; min-height:48px; width:100%; padding:12px 18px; border:0; border-radius:8px; background:#263d29; color:#fff; font:600 15px/1.4 var(--display); transition:transform 140ms ease; }
.submission-button:not(:disabled):hover { background:#1c2f1f; text-decoration:none; }
.submission-button:not(:disabled):active { transform:scale(.98); }
.submission-button:disabled { cursor:not-allowed; background:#dedbce; color:#5f5a4c; }
.submission-banner-action p { margin-top:8px; font-size:11px; line-height:1.6; color:#655c48; text-wrap:pretty; }
.submission-banner .submission-banner-tip { grid-column:1 / -1; margin:0; padding-top:14px; border-top:1px solid #332b1614; font-size:13px; line-height:1.6; text-wrap:pretty; }
.submission-banner[data-submission-state=soon] { background:#fcf3e2; }
.submission-banner[data-submission-state=final] { background:#fbeee8; }
.submission-banner[data-submission-state=closed] { background:#f0f1ed; }
.submission-banner[data-submission-state=closed] .submission-banner-title { margin-bottom:6px; }
.author-quote { display:flex; align-items:flex-start; gap:14px; margin:24px 0; padding:18px 20px; background:#faf5f7; border-radius:12px; }
.author-quote>div { min-width:0; }
.author-quote blockquote { margin:0; }
.author-quote blockquote p { margin:0; color:#51454b; font:400 17px/1.7 var(--heading); text-wrap:pretty; }
.author-quote figcaption { margin-top:8px; font:500 11px/1.4 var(--body); color:#75616b; }
.lesson>.author-quote { margin-block:0; }
.lesson h1,.lesson h2,.lesson h3 { text-wrap:balance; }
.lesson p { text-wrap:pretty; }
.submission-state-gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:24px; }
.submission-state-preview { display:flex; flex-direction:column; min-width:0; border-radius:14px; padding:16px; box-shadow:0 0 0 1px #23271e12,0 2px 4px #23271e05; background:#fff; }
.submission-state-preview h3 { display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin-bottom:14px; font:600 15px/1.4 var(--display); }
.submission-state-preview h3 span { font:400 10px/1.4 var(--body); color:var(--muted); white-space:nowrap; }
.submission-state-sample { display:flex; flex-direction:column; align-items:flex-start; padding:14px; background:#f7f8f5; border-radius:8px; font-size:11px; line-height:1.6; }
.submission-state-sample + .submission-state-sample { margin-top:8px; flex:1; }
.submission-state-sample .submission-sample-mode { margin-bottom:10px; font-size:10px; color:var(--muted); }
.submission-state-sample strong { font:600 12px/1.5 var(--display); color:var(--green-dark); }
.submission-sample-countdown { font:600 28px/1.3 var(--display); font-variant-numeric:tabular-nums; }
.submission-state-sample[data-submission-state=soon] { background:#fcf3e2; }
.submission-state-sample[data-submission-state=final] { background:#fbeee8; }
.submission-state-preview button { display:flex; justify-content:space-between; gap:12px; width:100%; min-height:44px; margin-top:12px; padding:10px; border:0; border-radius:6px; font-size:12px; background:#eaf0e6; }
.submission-state-preview button:hover { background:#dfe9d9; }
@media(max-width:1100px) { .submission-state-gallery { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:720px) {
  .submission-banner { grid-template-columns:minmax(0,1fr); padding:20px; }
  .submission-countdown { font-size:clamp(40px,12vw,64px); }
  .author-quote { gap:12px; padding:16px; }
  .submission-state-gallery { grid-template-columns:minmax(0,1fr); }
}
@media(max-width:650px) {
  .deadline { max-width:198px; gap:0; }
  .deadline [data-countdown] { font-size:22px; }
  .deadline [data-countdown-label] { font-size:9px; max-width:156px; }
  .deadline-reminder { max-width:155px; font-size:10px; }
  .deadline[data-countdown-hidden=true] [data-countdown-label],.deadline[data-submission-state=closed] [data-countdown-label] { font-size:11px; }
  #countdown-toggle { width:34px; }
}
@media(prefers-reduced-motion:reduce) {
  #countdown-toggle .eye-slash,.submission-button { transition:none; }
}
@media(max-width:360px) {
  :root { --header-height:132px; }
  .site-header { grid-template-rows:88px 44px; }
  .tabs { height:44px; }
}

.header-tools { grid-column:3; grid-row:1; display:flex; align-items:center; gap:10px; }
.venue-access-button { display:grid; place-items:center; flex-shrink:0; width:36px; height:36px; padding:8px; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--muted); }
.venue-access-button:hover,.venue-access-button[aria-expanded=true] { background:var(--pale); color:var(--green-dark); }
.venue-access-button svg { width:20px; height:20px; }
#venue-access { position:fixed; inset:calc(var(--header-height) + 12px) 24px auto auto; margin:0; width:min(340px,calc(100vw - 32px)); padding:20px; border:1px solid var(--line); border-radius:16px; background:#fff; color:var(--ink); box-shadow:0 12px 40px #1e1e1b1a; }
#venue-access:popover-open { animation:venue-access-in 240ms cubic-bezier(.2,1.3,.4,1); }
.venue-access-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.venue-access-heading h2 { font:600 18px/1.4 var(--display); letter-spacing:-.3px; }
.venue-access-heading button { display:grid; place-items:center; width:32px; height:32px; padding:0; border:0; border-radius:6px; background:var(--paper); font-size:24px; line-height:1; }
#venue-access dl { margin:16px 0 0; }
.credential-row + .credential-row { margin-top:16px; padding-top:16px; border-top:1px solid var(--line); }
.credential-row dt { font-size:11px; color:var(--muted); margin-bottom:5px; }
.credential-row dd { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin:0; }
.credential-row code { flex:1; font:500 15px/1.5 var(--body); user-select:all; }
.credential-row button { min-height:32px; font-size:12px; }
.credential-row .copy-status:not(.sr-only) { flex-basis:100%; margin:0; }
@keyframes venue-access-in { from { opacity:0; transform:translateY(-6px) scale(.97); } to { opacity:1; transform:none; } }
@media(max-width:999px) { .header-tools { grid-column:2; } }
@media(max-width:650px) {
  .header-tools { gap:4px; }
  .header-tools .deadline { max-width:150px; }
  .header-tools .deadline [data-countdown-label],.header-tools .deadline-reminder { max-width:116px; }
  .header-tools #countdown-toggle { width:28px; }
  .venue-access-button { width:32px; height:34px; padding:6px; }
  #venue-access { right:16px; }
}
@media(max-width:360px) {
  .site-header { grid-template-columns:1fr; }
  .event-brand { align-self:start; padding-top:8px; }
  .header-tools { grid-column:1; justify-self:end; align-self:end; padding-bottom:6px; }
  .header-tools .deadline { max-width:240px; }
  .header-tools .deadline [data-countdown-label],.header-tools .deadline-reminder { max-width:210px; }
}
@media(prefers-reduced-motion:reduce) { #venue-access:popover-open { animation:none; } }

#schedule-list .session-access .session-title { display:flex; align-items:center; flex-wrap:wrap; gap:5px 10px; width:100%; }
#schedule-list .session-access .session-title h2 { min-width:0; }
.session-access-button { border:1px solid #5d8bbf; border-radius:6px; padding:4px 8px; background:#202936; color:#b8daff; font:500 11px/1.3 var(--body); white-space:nowrap; cursor:pointer; }
.session-access-button:hover,.session-access-button:focus-visible { background:#2c425e; }
.workshop-access-dialog { width:min(460px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); padding:32px; border:1px solid var(--line); border-radius:16px; background:#19191c; color:var(--ink); box-shadow:0 24px 80px #0008; }
.workshop-access-dialog::backdrop { background:#0009; backdrop-filter:blur(4px); }
.workshop-access-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.workshop-access-heading h2 { font:600 26px/1.2 var(--display); letter-spacing:-.02em; }
.workshop-access-heading button { display:grid; place-items:center; width:40px; height:40px; border:0; border-radius:8px; background:transparent; color:var(--muted); font-size:26px; line-height:1; cursor:pointer; }
.workshop-access-heading button:hover { background:#292a2f; color:var(--ink); }
.workshop-access-dialog p { margin:12px 0 28px; color:var(--muted); font-size:14px; line-height:1.6; }
.workshop-access-dialog label { display:block; margin-bottom:9px; font:600 13px/1.4 var(--body); }
.workshop-access-dialog input { width:100%; min-width:0; min-height:48px; padding:11px 14px; border:1px solid #555962; border-radius:8px; outline:0; box-shadow:none; background:#242428; color:var(--ink); caret-color:#67aaff; font:400 16px/1.4 var(--body); }
.workshop-access-dialog input:focus-visible { border:2px solid #67aaff; padding:10px 13px; outline:0; box-shadow:none; }
.workshop-access-dialog form>button,.workshop-access-copy button { min-height:44px; margin-top:24px; padding:10px 16px; border:0; border-radius:8px; background:#2269bd; color:#fff; font:600 14px/1.4 var(--body); box-shadow:none; cursor:pointer; }
.workshop-access-dialog form>button { width:100%; }
.workshop-access-dialog form>button:focus-visible,.workshop-access-copy button:focus-visible { outline:2px solid #67aaff; outline-offset:2px; box-shadow:none; }
.workshop-access-dialog form>button:hover,.workshop-access-copy button:hover { background:#327dd2; }
.workshop-access-dialog #workshop-access-error { margin:12px 0 0; color:#ffb49e; }
.workshop-access-copy { display:flex; align-items:stretch; gap:8px; }
.workshop-access-copy button { flex:none; margin:0; }
.workshop-access-dialog #workshop-access-status { min-height:18px; margin:10px 0 12px; }
.workshop-access-dialog a { color:#8bc4ff; font-size:13px; }
@media(max-width:650px) { #schedule-list .session-access .session-title { gap:3px 6px; } .session-access-button { padding:3px 6px; font-size:10px; } .workshop-access-dialog { padding:24px; } .workshop-access-copy { flex-direction:column; } .workshop-access-copy button { width:100%; } }

.site-header .deadline { position:relative; margin-left:auto; gap:0; }
.site-header #countdown-toggle { position:absolute; right:calc(100% + 6px); top:50%; transform:translate(6px,-50%); width:28px; height:28px; opacity:0; pointer-events:none; transition:opacity 160ms ease,transform 160ms ease; }
.site-header .deadline:hover #countdown-toggle,.site-header .deadline:focus-within #countdown-toggle { opacity:1; pointer-events:auto; transform:translate(0,-50%); }
@media(hover:none) { .site-header #countdown-toggle { opacity:1; pointer-events:auto; transform:translate(0,-50%); } }
@media(prefers-reduced-motion:reduce) { .site-header #countdown-toggle { transition:none; } }
