:root {
  --pk-font: 'Nunito Sans', 'Segoe UI', sans-serif;
  --pk-bg: #f7f5ef;
  --pk-fg: #1d1d1b;
  --pk-surface: #eeede5;
  --pk-muted: #55594e;
  --pk-border: #cccfc1;
  --pk-accent: #008c44;
  --heading: #005f27;
  --yellow: #ffd100;
  --star-ink: #544500;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --pk-bg: #062a15;
    --pk-fg: #f3f6ee;
    --pk-surface: #0c3a1f;
    --pk-muted: #b9cdb6;
    --pk-border: #1f5a33;
    --pk-accent: #008c44;
    --heading: #a3d39c;
    --star-ink: #ffd100;
  }
}
* { box-sizing: border-box; }
a { color: var(--heading); text-underline-offset: 3px; }
button, input, textarea { font-family: inherit; }
button, .button { cursor: pointer; min-height: 44px; padding: 8px 12px; border: 1px solid var(--pk-border); background: transparent; color: var(--pk-fg); border-radius: 4px; font-size: 16px; font-weight: 600; }
button:disabled { opacity: .6; cursor: wait; }
button.primary { background: #008c44; color: #fff; border-color: #008c44; }
button[aria-pressed="true"]:not(.star) { background: #008c44; color: #fff; border-color: #008c44; }
input, textarea { width: 100%; min-height: 44px; padding: 9px 12px; border: 1px solid var(--pk-border); border-radius: 4px; background: var(--pk-bg); color: var(--pk-fg); font-size: 16px; }
textarea { resize: vertical; line-height: 1.5; }
:focus, :focus-visible { outline: none; }
svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; vertical-align: middle; }
h1, h2, h3, .wordmark { font-family: 'Roboto Condensed', 'Arial Narrow', sans-serif; color: var(--heading); font-weight: 700; line-height: 1.15; }
h1 { font-size: clamp(36px, 6vw, 54px); margin: 0 0 8px; }
h2 { font-size: 30px; margin: 28px 0 12px; }
h3 { font-size: 24px; margin: 0 0 8px; }
p { margin: 8px 0 16px; }
.pk-header { justify-content: space-between; }
.wordmark { font-size: 23px; text-decoration: none; }
.wordmark span { color: var(--pk-muted); margin-left: 8px; font-weight: 500; }
.pk-main { max-width: 1160px; margin: auto; padding: 24px 24px 0; }
.pk-tab { text-decoration: none; }
.pk-tab[aria-current] { color: var(--heading); font-weight: 700; }
.intro { display: flex; justify-content: space-between; gap: 16px; align-items: end; margin-bottom: 20px; }
.dateline { color: var(--pk-muted); font-size: 16px; margin: 0; }
.edition { color: var(--heading); font-size: 16px; text-align: right; margin: 0 0 4px; }
.toolbar { display: flex; justify-content: space-between; gap: 16px; align-items: center; margin: 20px 0 4px; }
.days { display: flex; gap: 4px; flex-shrink: 0; }
.search { display: flex; align-items: center; gap: 8px; width: min(360px, 100%); border-bottom: 1px solid var(--pk-border); }
.search input { border: 0; padding-left: 0; background: transparent; }
.slot { display: grid; grid-template-columns: 105px 1fr; border-top: 1px solid var(--pk-border); }
.slot-time { padding: 17px 12px 12px 0; font-variant-numeric: tabular-nums; font-size: 16px; font-weight: 600; }
.slot-time small { display: block; color: var(--pk-muted); font-size: 13px; font-weight: 400; margin-top: 2px; }
.now { display: inline-block; margin-top: 8px; background: var(--yellow); color: #1d1d1b; padding: 2px 7px; border-radius: 2px; font-size: 13px; }
.parallel { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 0 24px; }
.session { position: relative; padding: 16px 0; min-width: 0; }
.session h3 { padding-right: 38px; font-size: 25px; margin-top: 5px; }
.session h3 a { text-decoration: none; }
.room { font-size: 13px; color: var(--pk-muted); margin: 0 34px 4px 0; }
.speakers { font-size: 15px; margin: 8px 0 0; }
.star { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 0; min-width: 44px; }
.session > .star { position: absolute; right: -8px; top: 9px; padding: 10px; }
.star[aria-pressed="true"] svg { fill: var(--yellow); stroke: var(--star-ink); }
.break .session h3 { font-size: 22px; color: var(--pk-muted); }
.break { background: var(--pk-surface); }
.break .slot-time { padding-left: 8px; }
.meta { color: var(--pk-muted); margin-bottom: 18px; }
.count { color: var(--pk-muted); font-size: 14px; margin: 6px 0 0; }
.detail .count { margin: -6px 0 16px; }
.detail { max-width: 760px; }
.detail h1 { margin-top: 16px; }
.detail-heading { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.prose { font-size: 17px; line-height: 1.55; }
.prose li { margin-bottom: 8px; }
.section { border-top: 1px solid var(--pk-border); padding-top: 4px; margin-top: 24px; }
.section > h2 { margin-top: 16px; }
.muted, .hint { color: var(--pk-muted); }
.hint { font-size: 14px; }
.field-label { display: block; margin: 14px 0 8px; font-weight: 600; }
.vote { display: flex; gap: 8px; }
.plan-item { border-top: 1px solid var(--pk-border); padding: 16px 0; }
.plan-item h3 { margin: 6px 0; }
.plan-item a { text-decoration: none; }
.plan-item .star { float: right; }
.note-preview { white-space: pre-wrap; color: var(--pk-muted); overflow-wrap: anywhere; }
.clash { color: var(--heading); background: var(--pk-surface); display: inline-block; padding: 4px 8px; font-weight: 600; }
.info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 48px; }
.info-grid h2 { margin-top: 16px; }
.event { margin-bottom: 24px; }
.event h3 { font-size: 23px; }
.event p { margin: 4px 0; }
.sync-block { max-width: 700px; }
.pair-form { display: flex; align-items: end; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.pair-form label { flex: 1; min-width: 170px; }
.pair-form input { text-transform: uppercase; }
.actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0; }
#pair-code { display: block; font-size: 32px; color: var(--heading); font-variant-numeric: tabular-nums; }
#qr { background: #fff; padding: 16px; width: max-content; margin: 16px 0; }
#qr img, #qr canvas { display: block; max-width: 100%; }
.sync-link { display: block; overflow-wrap: anywhere; }
video { width: min(100%, 440px); display: block; background: #000; }
footer { border-top: 1px solid var(--pk-border); color: var(--pk-muted); margin-top: 32px; padding: 18px 0 10px; font-size: 13px; }
dialog { box-sizing: border-box; width: calc(100vw - 32px); max-width: 460px; margin: auto; max-height: 85dvh; overflow-y: auto; border: 1px solid var(--pk-border); border-radius: 8px; padding: 24px; background: var(--pk-bg); color: var(--pk-fg); }
dialog h2 { margin-top: 0; }
dialog::backdrop { background: #001c12aa; }
#message { position: fixed; z-index: 30; bottom: calc(90px + var(--pk-safe-bottom)); left: 16px; right: 16px; max-width: 650px; margin: auto; border: 1px solid var(--pk-border); background: var(--pk-surface); padding: 12px 16px; border-radius: 4px; }
.loading { padding: 24px 0; }
.admin { max-width: 900px; }
.admin .pk-tabbar { display: none; }
.admin-comment { white-space: pre-wrap; overflow-wrap: anywhere; }
html[data-updating] main { pointer-events: none; }
@media (hover: hover) {
  button:hover { background: var(--pk-surface); }
  a:hover { text-decoration: underline; }
  button.primary:hover { background: #005f27; }
}
@media (max-width: 600px) {
  .pk-main { padding: 20px 16px 0; }
  .edition { display: none; }
  .toolbar { flex-direction: column; align-items: stretch; gap: 12px; margin-top: 16px; }
  .search { width: 100%; }
  .days button { flex: 1; }
  .slot { grid-template-columns: 88px 1fr; }
  .slot-time { font-size: 15px; padding-right: 8px; }
  .parallel { grid-template-columns: minmax(0, 1fr); }
  .session + .session { border-top: 1px solid var(--pk-border); }
  .session h3 { font-size: 24px; }
  .info-grid { grid-template-columns: 1fr; }
  .detail-heading .star { padding-right: 0; }
}
fieldset { border: 0; padding: 0; margin: 0; }
legend { padding: 0; margin-bottom: 8px; font-weight: 600; }
.button { display: inline-flex; align-items: center; text-decoration: none; }
.pk-header:has(.pk-update[data-ready]) .wordmark span { display: none; }

.pk-tabbar { box-shadow: 0 -2px 12px rgba(0, 40, 18, 0.12); }
@media (prefers-color-scheme: dark) { .pk-tabbar { box-shadow: 0 -2px 14px rgba(0, 0, 0, 0.45); } }

h1, .wordmark, dialog h2 { font-family: 'Anton', 'Arial Narrow', sans-serif; font-weight: 400; letter-spacing: 0.01em; }
@media (display-mode: browser) { :root { --pk-tabbar-pad-bottom: 6px; --pk-tabbar-h: 60px; } }
dialog h2 { font-size: 24px; line-height: 1.15; margin-bottom: 10px; white-space: nowrap; }

:root { --pk-header-h: 58px; }
.pk-header { padding-top: calc(var(--pk-safe-top) + 10px); }
.pk-header { box-shadow: 0 2px 12px rgba(0, 40, 18, 0.12); }
@media (prefers-color-scheme: dark) { .pk-header { box-shadow: 0 2px 14px rgba(0, 0, 0, 0.45); } }
.map { margin: 12px 0; border: 1px solid var(--pk-border); border-radius: 8px; overflow: hidden; aspect-ratio: 4 / 3; max-width: 100%; background: var(--pk-surface); }
.map iframe { width: 100%; height: 100%; border: 0; display: block; }
.map-links { flex-wrap: wrap; gap: 8px; }
.rooms { padding-left: 18px; margin: 8px 0; }
.rooms li { margin: 4px 0; }
#message a { color: var(--heading); font-weight: 700; margin-left: 6px; }
main footer { user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; }
dialog h2 { text-align: center; } dialog .primary { display: block; margin: 16px auto 0; min-width: 140px; } dialog form { margin: 0; }
.pk-header { padding-inline: calc(16px + var(--pk-safe-left)) calc(16px + var(--pk-safe-right)); }
.slot.evening .session h3 { color: var(--heading); } .slot.evening { background: transparent; }
.search-day { font-size: 18px; margin: 18px 0 4px; }
.slot.is-now { background: #fff6cc; } @media (prefers-color-scheme: dark) { .slot.is-now { background: #24401f; } }
#message { background: #1d1d1b; color: #f7f5ef; border-color: #1d1d1b; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25); }
#message a { color: #a3d39c; }
@media (prefers-color-scheme: dark) {
  #message { background: #f7f5ef; color: #1d1d1b; border-color: #f7f5ef; }
  #message a { color: #005f27; }
}
.feedback-form .actions button { flex: 1; max-width: 160px; white-space: nowrap; }
.vote { display: flex; gap: 8px; }
.vote button { width: 64px; display: inline-flex; align-items: center; justify-content: center; }
.vote button svg { width: 26px; height: 26px; }
.detail-actions { display: flex; gap: 8px; align-items: center; margin: 12px 0; }
.detail-actions .star { border: 1px solid var(--pk-border); width: 44px; padding: 0; }
.detail-actions .button { display: inline-flex; align-items: center; text-decoration: none; }
.pk-header .pk-update { min-height: 0; height: 28px; padding: 0 12px; font-size: 14px; line-height: 28px; border-radius: 14px; border: 0; align-self: center; }
.event { position: relative; } .event > .star { position: absolute; right: -8px; top: 0; padding: 10px; }
.pk-tab { position: relative; color: var(--pk-muted); }
.pk-tab[aria-current] { color: #008c44; font-weight: 700; }
.pk-tab[aria-current] svg { background: rgba(0, 140, 68, 0.14); border-radius: 14px; padding: 3px 14px; box-sizing: content-box; stroke-width: 2; }
@media (prefers-color-scheme: dark) {
  .pk-tab[aria-current] { color: #a3d39c; }
  .pk-tab[aria-current] svg { background: rgba(163, 211, 156, 0.18); }
}
.pk-tab svg { padding: 3px 14px; box-sizing: content-box; border-radius: 14px; background: transparent; }
.also { margin: 10px 0; } .also a { font-weight: 700; color: var(--heading); }
p, .hint { text-wrap: pretty; }
.back-link { display: inline-flex; align-items: center; gap: 2px; min-height: 44px; margin-left: -8px; padding-right: 8px; color: var(--heading); font-weight: 700; font-size: 17px; text-decoration: none; }
.back-link svg { width: 24px; height: 24px; stroke-width: 2.2; }
.detail > .detail-heading { margin-top: 4px; }
.detail-actions { margin: 4px 0 16px; }
.detail-actions .button, .detail-actions .star { min-height: 36px; height: 36px; font-size: 15px; padding-top: 0; padding-bottom: 0; }
.detail-actions .star { width: 36px; min-width: 36px; }
.detail-actions .star svg { width: 20px; height: 20px; }
.toolbar { flex-wrap: wrap; }
.toolbar .day-hint { margin: 0; flex-basis: 100%; order: 3; }
@media (max-width: 600px) { .toolbar .day-hint { order: 0; margin: -4px 0 0; } }
#slots > .slot:first-child, #slots > .search-day:first-child + .slot { border-top: 0; }
.map { position: relative; }
.map iframe { position: relative; z-index: 1; opacity: 0; transition: opacity .3s; }
.map.loaded iframe { opacity: 1; }
.map-loading { position: absolute; inset: 0; margin: 0; display: flex; align-items: center; justify-content: center; gap: 10px; color: var(--pk-muted); font-size: 15px; }
.map.loaded .map-loading { display: none; }
.spinner { width: 18px; height: 18px; border: 2px solid var(--pk-border); border-top-color: #008c44; border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.days button { min-height: 38px; height: 38px; padding-top: 0; padding-bottom: 0; font-size: 15px; }
