.demo { color-scheme: dark; overflow-wrap: anywhere; }
.demo :is(input,textarea)::placeholder { color: var(--muted); opacity: 1; }
.demo-page { max-width: 1160px; margin: auto; padding: 28px 24px 64px; }
.demo nav { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding-bottom: 22px; border-bottom: 1px solid var(--line); }
.demo nav a { color: var(--ink); text-underline-offset: 5px; }
.demo header { margin: 32px 0 26px; }
.demo h1 { font-family: 'Gloock', serif; font-weight: 400; }
.demo h2, .demo h3 { font-family: 'Hanken Grotesk', system-ui, sans-serif; letter-spacing: normal; }
.demo h1 { font-size: 2rem; line-height: 1.2; margin: 0 0 10px; }
.demo h2 { font-size: 1.2rem; margin: 0 0 16px; }
.demo h3 { font-size: 1rem; }
.demo p { max-width: 70ch; }
.demo .intro { color: var(--muted); margin: 0; }
.demo .notice { color: var(--muted); font-size: .9rem; margin-top: 12px; }
.demo .toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-bottom: 24px; }
.demo .toolbar .summary { margin-left: auto; color: var(--muted); font-size: .9rem; }
.demo button, .demo input, .demo select, .demo textarea { font: inherit; }
.demo button { min-height: 44px; padding: 8px 15px; border: 1px solid var(--control-line); border-radius: 3px; color: var(--ink); background: transparent; cursor: pointer; }
.demo button:hover { border-color: var(--accent); color: var(--accent); }
.demo button.primary, .demo button[aria-pressed="true"] { background: var(--accent); border-color: var(--accent); color: var(--bg); }
.demo button.primary:hover { background: var(--ink); border-color: var(--ink); color: var(--bg); }
.demo button:disabled { opacity: .55; cursor: default; }
.demo :is(button,a,input,select,textarea):focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.demo :is(input:not([type="range"]),select,textarea) { width: 100%; min-height: 44px; padding: 9px 12px; color: var(--ink); border: 1px solid var(--control-line); border-radius: 3px; background: var(--bg); }
.demo textarea { resize: vertical; min-height: 110px; }
.demo input[type="range"] { width: 100%; min-height: 44px; accent-color: var(--accent); }
.demo label { display: block; margin-bottom: 8px; font-weight: 500; }
.demo .field { margin-bottom: 20px; }
.demo .columns { display: grid; grid-template-columns: minmax(0,1.6fr) minmax(250px,1fr); gap: 36px; }
.demo .study-columns { grid-template-columns: 260px minmax(0,1fr); }
.demo .section { padding-top: 22px; border-top: 1px solid var(--line); min-width: 0; }
.demo .section + .section { margin-top: 28px; }
.demo .columns > .section + .section { margin-top: 0; }
.demo .muted, .demo small { color: var(--muted); }
.demo .status { min-height: 27px; margin: 16px 0; color: var(--accent); }
.demo .error { color: var(--error); }
.demo .map { width: 100%; height: auto; display: block; background: #19281f; border-radius: 3px; }
.demo .map text { font-family: inherit; fill: var(--ink); }
.demo .map .route-line { fill: none; stroke: var(--control-line); stroke-width: 2; }
.demo .map .bus-dot { fill: var(--accent); stroke: var(--bg); stroke-width: 2; }
.demo .map .bus-dot.selected { stroke: var(--ink); stroke-width: 4; }
.demo .map .zone { fill: none; stroke: var(--accent); stroke-width: 1.5; stroke-dasharray: 5 5; }
.demo .table-wrap { overflow-x: auto; }
.demo table { width: 100%; border-collapse: collapse; font-size: .9rem; font-variant-numeric: tabular-nums; overflow-wrap: normal; }
.demo #vehicles td:nth-child(2), .demo #vehicles td:nth-child(3) { white-space: nowrap; }
.demo table:has(#vehicles) { min-width: 430px; }
.demo th, .demo td { padding: 12px 8px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.demo th { color: var(--muted); font-weight: 500; }
.demo .table-wrap button { padding: 6px 9px; }
.demo .deck-list { list-style: none; padding: 0; margin: 0; }
.demo .deck-list li { border-bottom: 1px solid var(--line); }
.demo .deck-list button { border: none; border-radius: 0; text-align: left; width: 100%; padding: 14px 10px; }
.demo .question { font-size: 1.5rem; line-height: 1.5; max-width: 45ch; margin-top: 22px; }
.demo .answer { white-space: pre-wrap; padding: 20px 0; border-top: 1px solid var(--line); line-height: 1.7; }
.demo .ratings { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
.demo .ratings button { flex: 1; min-width: 100px; }
.demo .ratings small { display: block; font-size: .8rem; }
.demo .updates { padding: 0; list-style: none; }
.demo .updates li { padding: 16px 0; border-bottom: 1px solid var(--line); }
.demo .updates p { margin: 6px 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.demo .attendance-row { display: grid; grid-template-columns: minmax(90px,1fr) minmax(120px,1fr); align-items: center; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.demo .attendance-row label { margin: 0; }
.demo .project-list { list-style: none; padding: 0; }
.demo .project-list li { display: grid; grid-template-columns: 1fr 2fr auto; gap: 24px; align-items: center; padding: 26px 0; border-top: 1px solid var(--line); }
.demo .project-list h2, .demo .project-list p { margin: 0; }
.demo .project-list a { white-space: nowrap; }
.demo details { margin-top: 24px; }
.demo summary { cursor: pointer; padding: 12px 0; color: var(--accent); }
.demo footer { margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--line); color: var(--muted); font-size: .85rem; }
@media (max-width: 760px) {
  .demo .columns, .demo .study-columns { grid-template-columns: minmax(0,1fr); gap: 28px; }
  .demo .study-columns .deck-list { max-height: 190px; overflow-y: auto; }
  .demo .project-list li { grid-template-columns: minmax(0,1fr); gap: 10px; }
  .demo .toolbar .summary { margin-left: 0; width: 100%; }
  .demo-page { padding-inline: 18px; }
}
