:root { font-family: system-ui, -apple-system, Segoe UI, sans-serif; color: #172033; background: #f5f7fb; }
* { box-sizing: border-box; }
body { margin: 0; }
a { color: #174ea6; }
.topbar { background: #172033; color: white; padding: .8rem 1rem; display: flex; align-items: center; gap: 1rem; position: sticky; top: 0; z-index: 5; }
.brand { color: white; text-decoration: none; font-weight: 700; margin-right: auto; }
.topbar nav { display: flex; flex-wrap: wrap; gap: .8rem; }
.topbar nav a { color: white; text-decoration: none; }
.nav-toggle { display: none; background: transparent; color: white; border: 0; font-size: 1.5rem; }
.container { width: min(1100px, calc(100% - 2rem)); margin: 1.25rem auto 3rem; }
.card { background: white; border-radius: 12px; box-shadow: 0 2px 12px rgba(23,32,51,.08); padding: 1rem; margin-bottom: 1rem; }
.grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap: 1rem; }
label { display: block; font-weight: 650; margin: .75rem 0 .3rem; }
input, select, textarea, button { font: inherit; }
input, select, textarea { width: 100%; padding: .8rem; border: 1px solid #bac2d0; border-radius: 8px; background: white; }
button, .button { display: inline-block; border: 0; border-radius: 9px; padding: .8rem 1rem; background: #174ea6; color: white; font-weight: 700; text-decoration: none; cursor: pointer; }
.button.secondary, button.secondary { background: #5b6474; }
.button.danger, button.danger { background: #a42121; }
.actions { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1rem; }
.alert { padding: .8rem 1rem; border-radius: 8px; margin-bottom: 1rem; }
.alert-success { background: #dff4e6; }
.alert-danger { background: #fde2e2; }
.alert-warning { background: #fff0c9; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; background: white; }
th, td { text-align: left; padding: .7rem; border-bottom: 1px solid #e2e6ee; }
th { background: #eef2f8; }
.score-input { font-size: 2rem; text-align: center; min-height: 70px; }
.dog-list { display: grid; gap: .65rem; }
.dog-card { display: block; background: white; border: 1px solid #d9dfeb; border-radius: 10px; padding: .9rem; color: inherit; text-decoration: none; }
.dog-card strong { font-size: 1.1rem; }
.muted { color: #657083; }
.badge { display: inline-block; border-radius: 999px; padding: .2rem .55rem; background: #e5eaf3; font-size: .85rem; }
.badge.done { background: #dff4e6; }
.badge.dq { background: #fde2e2; }
.public-header { text-align: center; padding: 1.5rem 1rem; background: #172033; color: white; }
.public-container { width: min(950px, calc(100% - 1rem)); margin: 1rem auto 3rem; }
.checkbox-row { display: flex; gap: .6rem; align-items: center; margin-top: 1rem; }
.checkbox-row input { width: auto; transform: scale(1.3); }
@media (max-width: 760px) {
  .nav-toggle { display: block; }
  .topbar nav { display: none; position: absolute; top: 100%; left: 0; right: 0; background: #172033; padding: 1rem; flex-direction: column; }
  .topbar nav.open { display: flex; }
  .container { width: min(100% - 1rem, 1100px); margin-top: .75rem; }
  h1 { font-size: 1.55rem; }
  button, .button { width: 100%; text-align: center; min-height: 48px; }
  .actions { flex-direction: column; }
  .mobile-stack thead { display: none; }
  .mobile-stack tr { display: block; background: white; border-radius: 10px; margin-bottom: .75rem; padding: .5rem; box-shadow: 0 1px 7px rgba(23,32,51,.08); }
  .mobile-stack td { display: flex; justify-content: space-between; gap: 1rem; border: 0; padding: .35rem .5rem; }
  .mobile-stack td::before { content: attr(data-label); font-weight: 700; }
}

/* V3.2 additions */
.compact-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
.dog-card-line { display:flex; justify-content:space-between; gap:.75rem; align-items:flex-start; }
.running-number { display:inline-block; margin-bottom:.55rem; padding:.3rem .6rem; border-radius:999px; background:#eef2f8; font-weight:700; }
.running-number.small { margin:0 .5rem 0 0; font-size:.8rem; }
.score-card { max-width:620px; margin-inline:auto; }
.public-page { background:#eef2f7; }
.public-header { background:linear-gradient(135deg,#172033,#27476f); padding:2.2rem 1rem 2.5rem; }
.public-header-inner { width:min(950px,100%); margin:auto; }
.public-header h1 { margin:.25rem 0 .5rem; font-size:clamp(2rem,5vw,3.2rem); }
.eyebrow { text-transform:uppercase; letter-spacing:.16em; font-size:.78rem; font-weight:800; opacity:.8; }
.event-meta { margin:.2rem 0; font-size:1.05rem; }
.live-indicator { display:inline-flex; align-items:center; gap:.45rem; margin-top:.8rem; font-size:.85rem; opacity:.9; }
.live-indicator span { width:.65rem; height:.65rem; border-radius:50%; background:#55d98a; box-shadow:0 0 0 4px rgba(85,217,138,.18); }
.class-grid { display:grid; gap:1rem; }
.result-class { background:white; border-radius:14px; overflow:hidden; box-shadow:0 3px 18px rgba(23,32,51,.09); }
.result-class summary { cursor:pointer; list-style:none; padding:1.05rem 1.15rem; display:flex; justify-content:space-between; align-items:center; background:white; }
.result-class summary::-webkit-details-marker { display:none; }
.result-class summary strong { font-size:1.2rem; }
.result-class summary small { display:block; color:#657083; margin-top:.15rem; }
.summary-arrow { font-size:1.5rem; transition:transform .2s; }
.result-class[open] .summary-arrow { transform:rotate(180deg); }
.results-list { border-top:1px solid #e5e9f0; }
.result-row { display:grid; grid-template-columns:72px minmax(0,1fr) 120px; gap:.75rem; align-items:center; padding:.9rem 1rem; border-bottom:1px solid #edf0f5; }
.result-row:last-child { border-bottom:0; }
.position-cell { text-align:center; font-weight:800; }
.medal { font-size:1.6rem; }
.competitor-cell strong,.competitor-cell span,.score-cell small { display:block; }
.competitor-cell span { color:#657083; font-size:.9rem; margin-top:.15rem; }
.score-cell { text-align:right; font-size:1.4rem; font-weight:800; }
.score-cell small { font-size:.78rem; font-weight:650; color:#657083; margin-top:.15rem; }
.result-dq { background:#fff8f8; }
.empty-state { text-align:center; padding:2rem; }
@media (max-width:760px) {
  .compact-grid { grid-template-columns:1fr; }
  .result-row { grid-template-columns:50px minmax(0,1fr) 92px; padding:.8rem .7rem; gap:.5rem; }
  .score-cell { font-size:1.2rem; }
  .competitor-cell span { font-size:.8rem; }
}
/* V3.3 management and QR */
.inline-form{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin:.25rem 0}.inline-form input,.inline-form select{width:auto;min-width:130px}.inline-form button{padding:.55rem .75rem}.qr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem}.qr-card{background:#fff;text-align:center;padding:1.25rem;border:1px dashed #9aa5b5;border-radius:12px;break-inside:avoid}.qr-card img{width:min(260px,100%);height:auto}.qr-card small{overflow-wrap:anywhere}.class-link{padding:1rem}.class-link .button{width:100%;text-align:center}@media print{.topbar,.no-print,.container>h1{display:none!important}.container{width:100%;margin:0}.qr-grid{grid-template-columns:repeat(2,1fr)}.qr-card{box-shadow:none;page-break-inside:avoid}}

/* V3.4 coloured rosettes and public award cards */
.result-row-button {
  width: 100%;
  min-height: 0;
  border: 0;
  border-radius: 0;
  background: #fff;
  color: inherit;
  font-weight: inherit;
  text-align: left;
  cursor: pointer;
}
.result-row-button:hover,
.result-row-button:focus-visible { background: #f8fafc; }
.result-row-button:focus-visible { outline: 3px solid #174ea6; outline-offset: -3px; }
.result-row { grid-template-columns: 132px minmax(0,1fr) 120px; }
.position-cell { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.2rem; }
.rosette-icon { width:48px; height:60px; display:block; }
.position-label { display:block; font-size:.75rem; line-height:1.15; text-align:center; }
.place-1 { background:linear-gradient(90deg,rgba(214,40,40,.07),#fff 22%); }
.place-2 { background:linear-gradient(90deg,rgba(37,99,235,.07),#fff 22%); }
.place-3 { background:linear-gradient(90deg,rgba(244,196,48,.13),#fff 22%); }
.place-4 { background:linear-gradient(90deg,rgba(46,157,80,.07),#fff 22%); }
.place-5 { background:linear-gradient(90deg,rgba(236,72,153,.07),#fff 22%); }
.place-6 { background:linear-gradient(90deg,rgba(124,58,237,.07),#fff 22%); }
.class-threshold { margin:.5rem 0 0; font-size:.9rem; opacity:.9; }
.public-tip { text-align:center; }
.result-modal[hidden] { display:none; }
.result-modal { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:1rem; }
.result-modal-backdrop { position:absolute; inset:0; background:rgba(8,15,28,.72); backdrop-filter:blur(3px); }
.award-card { position:relative; z-index:1; width:min(420px,100%); background:#fff; border-radius:20px; padding:1.5rem; text-align:center; box-shadow:0 24px 80px rgba(0,0,0,.35); }
.modal-close { position:absolute; top:.55rem; right:.65rem; width:42px; height:42px; min-height:0; padding:0; border-radius:50%; background:#eef2f7; color:#172033; font-size:1.8rem; line-height:1; }
.award-card-rosette img { width:92px; height:115px; }
.award-card-place { font-size:1.2rem; font-weight:850; margin:.25rem 0 .7rem; }
.award-card h2 { font-size:2rem; margin:.2rem 0; }
.award-card dl { margin:1.2rem 0 0; display:grid; gap:.65rem; text-align:left; }
.award-card dl div { display:flex; justify-content:space-between; gap:1rem; border-top:1px solid #e5e9f0; padding-top:.65rem; }
.award-card dt { color:#657083; font-weight:700; }
.award-card dd { margin:0; font-weight:850; text-align:right; }
body.modal-open { overflow:hidden; }
@media (max-width:760px) {
  .result-row { grid-template-columns:86px minmax(0,1fr) 88px; }
  .rosette-icon { width:40px; height:50px; }
  .position-label { font-size:.67rem; }
  .result-row-button { width:100%; text-align:left; min-height:0; }
}
/* UK Rally Results v1 */
.page-heading{display:flex;align-items:center;justify-content:space-between}.version{font-size:.8rem;color:#657083}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem}.stat-card{background:#fff;border-radius:14px;padding:1.2rem;box-shadow:0 3px 18px rgba(23,32,51,.09)}.stat-card span{display:block;color:#657083;font-weight:700}.stat-card strong{display:block;font-size:2.2rem;margin-top:.35rem}.day-heading{margin-top:2rem}.class-tile{text-decoration:none;color:inherit;display:block}.class-tile:hover{transform:translateY(-2px)}textarea{width:100%;min-height:100px}hr{border:0;border-top:1px solid #e5e9f0;margin:1.2rem 0}

/* Sprint 1 polish */
.brand{display:flex;align-items:center;gap:.65rem}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#fff;color:#172033;font-size:.76rem;font-weight:900;letter-spacing:.04em}.page-kicker{margin:0 0 .2rem;text-transform:uppercase;letter-spacing:.13em;font-size:.72rem;font-weight:850;color:#657083}.page-heading h1{margin:.1rem 0}.topbar nav{align-items:center}.nav-group{position:relative}.nav-group>summary{cursor:pointer;list-style:none;color:#fff;font-weight:700;padding:.45rem .3rem}.nav-group>summary::-webkit-details-marker{display:none}.nav-group>summary::after{content:' ▾';font-size:.75rem;opacity:.75}.nav-group>div{position:absolute;top:calc(100% + .55rem);left:0;z-index:30;min-width:210px;padding:.45rem;background:#fff;border-radius:12px;box-shadow:0 14px 40px rgba(8,15,28,.25)}.nav-group>div a{display:block;color:#172033;padding:.65rem .75rem;border-radius:8px;white-space:nowrap}.nav-group>div a:hover{background:#eef2f8}.event-hero{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.35rem 1.5rem;background:linear-gradient(135deg,#fff,#f4f7fb)}.event-hero h2{margin:.15rem 0;font-size:clamp(1.55rem,3vw,2.25rem)}.event-subtitle{margin:.3rem 0;color:#657083}.hero-status{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.badge.live{background:#dff4e6;color:#145c2d}.badge.locked{background:#e4e7ed;color:#3f4652}.badge.in-progress{background:#fff0c9;color:#765500}.badge.waiting,.badge.pending{background:#e8edf5;color:#4c586b}.badge.scored{background:#dff4e6;color:#145c2d}.badge.absent{background:#eee9f8;color:#5f477e}.dashboard-main-grid{grid-template-columns:minmax(0,2fr) minmax(250px,1fr);margin-top:1rem}.section-heading,.public-section-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.section-heading h2,.public-section-heading h2{margin:.1rem 0}.class-progress-list{display:grid;gap:.7rem}.class-progress-row{display:grid;grid-template-columns:minmax(170px,1fr) auto;gap:.4rem 1rem;align-items:center;padding:.8rem;border:1px solid #e5e9f0;border-radius:11px;text-decoration:none;color:inherit}.class-progress-row:hover{border-color:#9db2d0;background:#f9fbfd}.class-progress-row strong,.class-progress-row span,.class-progress-row small{display:block}.class-progress-row>div:first-child span,.progress-copy small{color:#657083;font-size:.82rem;margin-top:.15rem}.progress-copy{text-align:right}.progress-track{grid-column:1/-1;height:6px;border-radius:999px;background:#e8edf5;overflow:hidden}.progress-track span{display:block;height:100%;background:#174ea6;border-radius:inherit}.quick-actions{display:grid;gap:.65rem}.summary-number{font-size:3rem;font-weight:900;line-height:1}.entry-layout{grid-template-columns:minmax(0,2fr) minmax(230px,1fr)}.entry-card{padding:1.25rem}.field-note,.form-help{font-size:.84rem}.field-note{margin:.35rem 0 0;color:#174ea6}.compact-button{padding:.45rem .65rem;min-height:0}.public-section-heading{padding:1rem 1.1rem;border-bottom:1px solid #e5e9f0}.still-to-run{padding:0;overflow:hidden}.still-list{display:grid}.still-row{display:flex;align-items:center;gap:.8rem;padding:.8rem 1rem;border-bottom:1px solid #edf0f5}.still-row:last-child{border-bottom:0}.still-row .running-number{margin:0;min-width:42px;text-align:center}.still-row strong,.still-row small{display:block}.still-row small{color:#657083;margin-top:.12rem}.result-absent{background:#fbfaff}.position-label.non-place{font-weight:850;font-size:.8rem}.award-event{margin:1rem 0 0;font-weight:800;color:#273750}.award-card .eyebrow{color:#657083}.award-card-rosette:empty{display:none}
@media(max-width:900px){.dashboard-main-grid,.entry-layout{grid-template-columns:1fr}}
@media(max-width:760px){.topbar nav{align-items:stretch}.nav-group>summary{padding:.65rem 0}.nav-group>div{position:static;box-shadow:none;background:rgba(255,255,255,.08);margin:.3rem 0;padding:.3rem}.nav-group>div a{color:#fff}.nav-group>div a:hover{background:rgba(255,255,255,.08)}.event-hero{align-items:flex-start;flex-direction:column}.hero-status{width:100%}.hero-status .button{width:auto}.section-heading,.public-section-heading{align-items:flex-start}.section-heading .button{width:auto;min-height:0}.class-progress-row{grid-template-columns:1fr}.progress-copy{text-align:left;display:flex;align-items:center;gap:.5rem}.progress-copy small{margin:0}.award-card{max-height:calc(100vh - 1rem);overflow:auto;border-radius:20px 20px 0 0;align-self:end}.result-modal{align-items:end;padding:0}.still-row{padding:.75rem}.page-heading{align-items:flex-start}}

/* Sprint 2: competition-day scoring */
.score-selector-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.score-selector-form label{margin-top:0}.score-class-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem}.score-class-tile{display:flex;min-height:155px;flex-direction:column;padding:1rem 1.1rem;border:2px solid #dce2ec;border-radius:14px;background:#fff;color:inherit;text-decoration:none;box-shadow:0 2px 12px rgba(23,32,51,.06)}.score-class-tile:hover{transform:translateY(-2px);border-color:#174ea6}.score-class-tile>span,.score-class-tile>small{color:#657083}.score-class-tile>strong{font-size:1.3rem;margin:.25rem 0}.score-class-tile>div{margin-top:auto;font-size:.9rem}.score-class-tile.active{border-color:#d8a600;background:#fffdf4}.score-class-tile.complete{border-color:#43a267;background:#f7fcf8}.competition-scoring{max-width:980px;margin:0 auto}.competition-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 1.2rem;background:#fff;border-radius:14px 14px 0 0}.competition-header h2{margin:.1rem 0;font-size:clamp(1.5rem,3vw,2.2rem)}.competition-meta{margin:.25rem 0 0;color:#657083}.competition-count{text-align:right}.competition-count strong{display:block;font-size:2rem;line-height:1}.competition-count span{display:block;color:#657083;margin-top:.2rem}.competition-progress{height:8px;background:#dfe5ef;overflow:hidden}.competition-progress span{display:block;height:100%;background:#174ea6;transition:width .25s}.competition-toolbar{display:flex;align-items:center;gap:.6rem;padding:.75rem 1rem;background:#f0f3f8;border-radius:0 0 14px 14px;margin-bottom:1rem;position:sticky;top:64px;z-index:4}.switch-row{display:flex;align-items:center;gap:.5rem;margin:0 auto 0 0}.switch-row input{width:auto}.competition-toolbar button:disabled{opacity:.45;cursor:not-allowed}.score-feedback{position:sticky;top:125px;z-index:8;padding:.65rem 1rem;border-radius:10px;margin:-.35rem 0 .75rem;font-weight:800;text-align:center}.score-feedback.success{background:#dff4e6;color:#145c2d}.score-feedback.error{background:#fde2e2;color:#8a1b1b}.score-section{background:#fff;border-radius:14px;box-shadow:0 2px 12px rgba(23,32,51,.07);margin-bottom:1rem;overflow:hidden}.score-section-heading,.completed-section>summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1rem;border-bottom:1px solid #e7ebf1}.score-section-heading h3{margin:0}.completed-section>summary{cursor:pointer;list-style:none;font-size:1.08rem;font-weight:850}.completed-section>summary::-webkit-details-marker{display:none}.compact-score-list{display:grid}.compact-score-row{display:grid;grid-template-columns:minmax(260px,1fr) minmax(390px,auto);gap:.75rem;align-items:center;padding:.65rem .85rem;border-bottom:1px solid #edf0f5;transition:opacity .2s,background .2s,transform .2s}.compact-score-row:last-child{border-bottom:0}.compact-score-row.saving{opacity:.55}.compact-score-row.just-saved{background:#eaf8ee;transform:scale(.995)}.score-identity{display:flex;align-items:center;gap:.7rem;min-width:0}.score-identity>div{min-width:0}.score-identity strong,.score-identity small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-identity small{color:#657083;margin-top:.1rem}.score-running-number{min-width:48px;text-align:center;padding:.35rem .45rem;border-radius:999px;background:#eef2f8;font-weight:850}.quick-score-form{display:grid;grid-template-columns:100px 70px 50px 50px;gap:.4rem;align-items:center}.quick-score-input{min-height:44px;padding:.5rem .6rem;text-align:center;font-size:1.15rem;font-weight:800}.quick-score-form button{min-height:44px;padding:.5rem .55rem}.quick-status{font-size:.9rem}.completed-result{display:grid;grid-template-columns:70px minmax(130px,1fr) 60px;align-items:center;gap:.55rem;text-align:right}.completed-result>strong{font-size:1.25rem}.completed-result>span{color:#657083;font-size:.86rem}.score-cancel{background:transparent;color:#5b6474;padding:.4rem}.edit-score-form{grid-template-columns:100px 70px 50px 50px 64px}.score-empty{padding:1.5rem;text-align:center;color:#657083}.competition-mode .topbar,.competition-mode .page-heading,.competition-mode .no-competition-hide{display:none!important}.competition-mode .container{width:min(1100px,calc(100% - 1rem));margin-top:.5rem}.competition-mode .competition-toolbar{top:0}.competition-mode .score-feedback{top:61px}
@media(max-width:820px){.score-selector-form{grid-template-columns:1fr}.competition-header{align-items:center}.competition-toolbar{top:61px;overflow-x:auto}.compact-score-row{grid-template-columns:1fr;gap:.45rem;padding:.7rem}.quick-score-form{grid-template-columns:minmax(90px,1fr) 70px 50px 50px}.completed-result{grid-template-columns:55px minmax(0,1fr) 60px;text-align:left}.completed-result>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-score-form{grid-template-columns:minmax(90px,1fr) 70px 50px 50px;}.edit-score-form .score-cancel{grid-column:1/-1}.competition-toolbar .compact-button{width:auto;white-space:nowrap;min-height:44px}.switch-row{white-space:nowrap}.score-feedback{top:122px}}
@media(max-width:520px){.competition-header{padding:.8rem}.competition-count strong{font-size:1.6rem}.competition-count span{font-size:.78rem}.score-identity small{font-size:.8rem}.quick-score-form{grid-template-columns:minmax(72px,1fr) 58px 48px 48px;gap:.3rem}.quick-score-form button{padding:.45rem .3rem}.competition-toolbar{padding:.55rem}.switch-row span{font-size:.82rem}.score-running-number{min-width:42px}}

/* v1.2.0 RC1 */
.score-quick-add{margin:-.25rem 0 1rem;padding:0;overflow:hidden}.score-quick-add>summary{cursor:pointer;padding:.8rem 1rem;font-weight:850;background:#fff}.score-quick-add[open]>summary{border-bottom:1px solid #e7ebf1}.quick-add-entry-form{padding:1rem}.quick-add-entry-form label{margin-top:0}.quick-add-secondary{grid-template-columns:2fr 1fr 1fr}.runoff-group-start td{border-top:3px solid #c9d2df}.event-picker{background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 2px 12px rgba(23,32,51,.07)}.event-picker-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;padding:1rem}.event-picker-card{display:block;text-decoration:none;color:inherit;transition:transform .15s,border-color .15s}.event-picker-card:hover{transform:translateY(-2px);border-color:#174ea6}.event-picker-card h3{font-size:1.3rem;margin:.65rem 0 .35rem}.event-picker-card p{margin:.25rem 0;color:#657083}.event-picker-card strong{display:block;margin-top:.8rem;color:#174ea6}
@media(max-width:700px){.quick-add-secondary{grid-template-columns:1fr}.score-quick-add{margin-bottom:.75rem}}
