:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#192e40;background:#f1f4f8;font-size:16px;line-height:1.5;--navy:#122e4a;--blue:#1457c6;--line:#dce3eb;--muted:#596879}*{box-sizing:border-box}body{margin:0}a{color:var(--blue);text-underline-offset:3px}header{background:var(--navy);color:white}.header-inner{max-width:1040px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:22px 24px;gap:16px}.brand{display:flex;align-items:center;gap:14px;color:inherit;text-decoration:none;font-weight:750}.brand small{display:block;font-size:.875rem;font-weight:450;color:#ccd8e7}.crest{border:2px solid #96b8ee;border-radius:6px;padding:4px 10px;line-height:1.1;font-size:1rem;text-align:center}.crest span{display:block;font-size:1.55rem}.identity{text-align:right;font-weight:650}.identity small{display:block;font-weight:450;color:#ccd8e7}nav{display:flex;gap:6px;max-width:1040px;margin:auto;padding:12px 24px;flex-wrap:wrap}nav a{color:var(--navy);padding:9px 12px;text-decoration:none;font-weight:650;border-radius:6px}nav a:hover{background:#e0e8f4}main{max-width:1040px;margin:20px auto 48px;padding:0 24px;min-height:60vh}h1{font-size:clamp(1.8rem,4vw,2.8rem);letter-spacing:-.045em;line-height:1.15;margin:5px 0 12px}h2{font-size:1.2rem;margin:0 0 12px}p{margin:0 0 18px}.eyebrow{font-size:.875rem;text-transform:uppercase;letter-spacing:.09em;font-weight:700;color:var(--blue);margin-bottom:10px}.muted,.hint{color:var(--muted)}.hint{font-size:.875rem}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:26px 0}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:26px;margin:22px 0;box-shadow:0 2px 5px #122e4a05}.narrow{max-width:600px;margin:28px auto}.login{max-width:470px;margin:55px auto}.login h1{font-size:2.2rem}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.stat{background:var(--navy);color:white;border-radius:10px;padding:22px;border-top:4px solid #5f98ef}.stat strong{display:block;font-size:2.5rem;line-height:1.3;font-variant-numeric:tabular-nums}.stat small{font-size:.875rem;color:#d4dfeb}.muted-stat{background:#e5eaf1;color:#34465a;border-color:#a7b3c2}.muted-stat small{color:#526172}.section-heading{display:flex;justify-content:space-between;gap:16px;align-items:center}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:14px 10px;border-bottom:1px solid var(--line)}thead th{font-size:.875rem;color:var(--muted);font-weight:650;text-align:left}tbody th{font-weight:550;text-align:left}.number{text-align:center;font-variant-numeric:tabular-nums}.score{font-weight:750;font-size:1.125rem}.player-link{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}.player-link:hover{text-decoration:underline}.player-link small{display:block;color:var(--blue);font-size:.875rem}.jersey{display:inline-grid;place-items:center;min-width:36px;height:36px;background:#edf2f8;border-radius:6px;color:#526172;font-size:.875rem;font-weight:700}.me{background:#f0f6ff}.pending-count{display:inline-block;padding:3px 8px;border-radius:5px;background:#edf0f4;color:#526172;font-size:.875rem}.activity,.approval-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:17px 0;border-bottom:1px solid var(--line)}.activity:last-child,.approval-row:last-child{border-bottom:0}.activity small,.approval-row small{display:block;color:var(--muted);font-size:.875rem}.activity a{text-decoration:none}.badge{display:inline-block;border-radius:5px;padding:5px 9px;font-size:.875rem;background:#edf0f4;color:#526172;white-space:normal}.badge.approved{background:#ddf4e8;color:#145538}.badge.rejected,.badge.cancelled{background:#ffe9e6;color:#873325}.opening{border-left:4px solid #8aa4c3;padding:16px 20px;background:#e7edf5;border-radius:0 8px 8px 0}.opening span{display:block;font-size:.875rem;color:#526172}.duty-card h2{margin-bottom:4px}.duty-card .section-heading{align-items:flex-start}label{display:block;font-weight:600;margin:16px 0 7px}input,select,textarea{width:100%;font:inherit;border:1px solid #9daec0;border-radius:6px;padding:11px 12px;background:white;color:inherit}input:focus,select:focus,textarea:focus{outline:3px solid #b5d1ff;outline-offset:1px}button,.button{display:inline-block;cursor:pointer;font:inherit;font-weight:650;text-decoration:none;border:1px solid transparent;border-radius:7px;padding:11px 17px;min-height:46px}.primary{background:var(--blue);color:white}.primary:hover{background:#1047a4}.secondary{background:#edf2f8;color:var(--navy);border-color:#ccd7e4}.wide{width:100%;margin:22px 0 14px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.actions form{margin:0}.field{margin-bottom:20px}form p{margin-bottom:20px}.helptext{display:block;font-size:.875rem;color:var(--muted);margin-top:7px}.helptext ul{padding-left:20px}.error,.errorlist{color:#9a251e}.errorlist{padding-left:22px}.message{border-left:4px solid var(--blue);background:#e2edff;padding:14px 18px;border-radius:5px;margin-bottom:18px}.message.error{background:#ffece8;border-color:#b54132}details{margin-top:16px}summary{cursor:pointer;color:var(--blue);font-size:.875rem;font-weight:600;padding:8px 0}.history{border-top:1px solid var(--line);margin-top:20px;padding-top:8px}.history ol{padding-left:20px;font-size:.875rem;color:var(--muted)}.history li{margin-bottom:12px}.reason-form button,details form button{margin-top:12px}.approval-row label{display:flex;align-items:center;gap:16px;margin:0}.approval-row input[type=checkbox]{width:23px;height:23px;flex-shrink:0}.approval-row+button{margin-top:20px}.empty{padding:20px 0}.empty p{color:var(--muted);margin-top:6px}footer{max-width:1040px;margin:auto;padding:24px;display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);font-size:.875rem;color:var(--muted)}footer div{display:flex;gap:18px;align-items:center}.text-button{padding:0;min-height:30px;background:none;color:var(--blue);font-size:.875rem}.skip{position:absolute;left:-9999px}.skip:focus{left:10px;top:10px;background:white;padding:12px;z-index:5}[hidden]{display:none!important}@media(max-width:600px){.header-inner{padding:16px}.brand{font-size:.95rem;gap:9px}.brand small{font-size:.8rem}.identity{font-size:.875rem}nav{padding:8px;gap:0}nav a{font-size:.875rem;padding:10px}main{padding:0 14px;margin-top:12px}.page-heading{display:block;margin:24px 0}.page-heading .button{margin-top:4px}.stats{gap:8px}.stat{padding:13px 10px}.stat span,.stat small{font-size:.875rem}.stat strong{font-size:2rem}.panel{padding:18px 14px}.roster{padding:16px 8px}.roster .section-heading,.roster .hint{padding:0 6px}th,td{padding:13px 5px}.player-link{gap:7px;font-size:.9rem}.jersey{min-width:26px;height:30px}.activity{align-items:flex-start}.badge{font-size:.8rem;max-width:135px}.login{margin:30px auto}.section-heading{gap:8px}.approval-row{gap:10px}footer{padding:20px 14px;flex-direction:column}footer div{flex-wrap:wrap}}@media(prefers-reduced-motion:no-preference){button,a{transition:background-color .15s}}

.team-logo{display:block;width:64px;height:64px;object-fit:contain;border-radius:8px;flex-shrink:0;background:white}@media(max-width:600px){.team-logo{width:48px;height:48px}}

nav a[aria-current=page]{background:#dce8fb;color:#1047a4}
.account-name{font-size:1.15rem;font-weight:700;text-decoration:none;color:var(--navy)}
.account-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:12px 0}
.account-facts dt{font-size:.8rem;color:var(--muted);margin-bottom:6px}.account-facts dd{margin:0;font-size:.925rem}
.account-card .actions{margin-bottom:0}.account-card .section-heading p{margin-bottom:8px}
input[type=checkbox],input[type=radio]{width:22px;height:22px;vertical-align:middle;margin-right:8px;accent-color:var(--blue)}
#id_status{display:flex;gap:20px;flex-wrap:wrap}#id_status label{margin:8px 0;display:flex;align-items:center}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.tabs a{padding:10px 18px;text-decoration:none;font-weight:650;border-radius:7px;background:#e4eaf3;color:var(--navy)}.tabs .selected{background:var(--navy);color:white}
.song-card h2{font-size:1.3rem;margin-bottom:4px}.song-artist{margin-bottom:8px}.song-score{text-align:center;padding:8px 14px;background:#edf4ff;border-radius:8px;color:#154c95;flex-shrink:0}.song-score strong{display:block;font-size:1.7rem;line-height:1.2}.song-score small{font-size:.8rem}
.vote-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.vote-actions .voted{background:#dce8fb;border-color:var(--blue);color:#1047a4}.vote-actions button span{margin-left:8px}
.event-card{display:flex;gap:24px}.event-date{width:76px;flex-shrink:0;text-align:center;color:var(--navy);padding-top:4px}.event-date strong{display:block;font-size:2.2rem;line-height:1.2}.event-date span,.event-date small{display:block}.event-date small{color:var(--muted)}.event-content{flex:1;min-width:0}.event-content h2 a{color:var(--navy);text-decoration:none}.event-content .eyebrow{margin-bottom:6px}.event-content p{margin-bottom:10px}
.capacity-warning{padding:12px 14px;border-left:4px solid #c8810a;border-radius:5px;background:#fff4d8;color:#704c0a;font-size:.9rem}.roster-note{margin-top:18px}.response-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.response-grid .panel{margin-bottom:0}.response-row{padding:14px 0;border-top:1px solid var(--line)}.response-row p{margin:6px 0;overflow-wrap:anywhere}.response-row small{display:block;color:var(--muted);font-size:.8rem}.name-list{display:flex;gap:10px 24px;flex-wrap:wrap}.name-list span{font-size:.95rem}.after-form{margin:16px 0 0}
h1,h2,.account-name,.song-artist{overflow-wrap:anywhere}
@media(max-width:650px){.account-facts{grid-template-columns:1fr;gap:12px}.account-card .section-heading{align-items:flex-start}.account-card .actions{gap:8px}.account-card .actions .button,.account-card .actions button{font-size:.875rem;padding:10px 12px}.response-grid{grid-template-columns:1fr;gap:0}.event-card{gap:14px}.event-date{width:53px}.event-date span{font-size:.8rem}.event-date strong{font-size:1.9rem}.event-content .section-heading{align-items:flex-start;flex-wrap:wrap}.vote-actions{gap:8px}.vote-actions button{font-size:.9rem;padding:10px 12px}nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}nav a{white-space:nowrap;flex-shrink:0}}
@media(max-width:650px){nav{flex-wrap:wrap;overflow-x:visible;gap:2px}nav a{padding:9px 10px}}

/* Beer list: shared dates and overdue crates remain visible above the filters. */
.beer-warden{margin-bottom:0}.beer-next{border-top:4px solid var(--blue)}.beer-next-heading{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:16px}.beer-next-heading .eyebrow{margin-bottom:4px}.beer-next-heading h2{font-size:1.55rem;margin:0}.beer-next-date{text-align:right;color:var(--navy)}.beer-next-date strong,.beer-next-date span{display:block}.beer-next-date span{font-size:1.35rem;font-weight:750;font-variant-numeric:tabular-nums}.beer-next-row{display:flex;align-items:center;gap:12px;padding:16px 0;border-top:1px solid var(--line);color:var(--navy);text-decoration:none}.beer-next-row>span:nth-child(2){flex:1;min-width:0}.beer-next-row small,.beer-overdue-row small{display:block;color:var(--muted);font-size:.875rem;overflow-wrap:anywhere}.beer-next-row strong{overflow-wrap:anywhere}.beer-crate{white-space:nowrap;font-size:.875rem;font-weight:700;background:#e4edfb;border-radius:6px;padding:6px 10px}.beer-overdue{background:#fff6e5;border-color:#efcf94}.beer-overdue h2{color:#7b4c09}.beer-overdue-row{display:flex;justify-content:space-between;gap:16px;padding:10px 0;color:#704c0a;text-decoration:none}.beer-overdue-row>span:last-child{white-space:nowrap;font-size:.875rem}.beer-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.beer-filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:24px}.beer-filters>div{flex:1;min-width:150px}.beer-filters label{margin-top:0}.beer-filters button{margin-bottom:1px}.beer-card h2{margin:0}.beer-card .section-heading{align-items:flex-start}.beer-card .player-link{min-width:0}.beer-card .badge{flex-shrink:0}.beer-card p{margin-bottom:10px}.beer-reason{margin-top:12px;font-weight:650}.beer-occasion{display:block;font-size:.875rem;color:var(--muted);margin-top:4px}.beer-note{border-left:3px solid #c9d7e7;padding:8px 12px;background:#f5f7fa;overflow-wrap:anywhere;white-space:pre-wrap}.beer-late{background:#ffebbf;color:#774905}.beer-today{background:#e0eaff;color:#204f99}.beer-card .actions{margin-bottom:0}
@media(max-width:600px){.beer-next-heading h2{font-size:1.2rem}.beer-next-date span{font-size:1.15rem}.beer-next-date strong{font-size:.8rem}.beer-crate{padding:5px 7px}.beer-next-row{gap:9px}.beer-filters{gap:10px}.beer-filters>div{min-width:135px}.beer-filters button{width:100%}.beer-overdue-row{gap:8px}.beer-card h2{font-size:1.05rem}}

/* Complete beer roster: frozen names, explicit statuses as well as colour. */
.beer-overview-summary{display:flex;gap:14px 26px;flex-wrap:wrap;margin:24px 0}.beer-overview-summary span{color:var(--muted);font-size:.95rem}.beer-overview-summary strong{color:var(--navy);font-size:1.45rem;margin-right:5px}.beer-legend{display:flex;gap:10px 20px;flex-wrap:wrap;font-size:.8rem;color:var(--muted)}.beer-legend i{display:inline-block;width:12px;height:12px;border:1px solid #0002;border-radius:3px;vertical-align:middle;margin-right:5px}.birthday-owed{background:#fff2cf}.birthday-settled{background:#e7f5eb}.birthday-soon{background:#e8f1ff}.beer-overview-panel{padding:10px 0;overflow:hidden}.beer-overview-table{min-width:960px;font-size:.875rem}.beer-overview-table th,.beer-overview-table td{padding:15px 12px;vertical-align:middle}.beer-overview-table thead{background:#f4f7fb}.beer-overview-table th:first-child{position:sticky;left:0;min-width:190px;max-width:210px;background:white;box-shadow:1px 0 0 var(--line);z-index:1}.beer-overview-table thead th:first-child{background:#f4f7fb;z-index:2}.beer-overview-table .birthday-owed th:first-child{background:#fff2cf}.beer-overview-table .birthday-settled th:first-child{background:#e7f5eb}.beer-overview-table .birthday-soon th:first-child{background:#e8f1ff}.beer-overview-table td:nth-child(3){min-width:165px}.beer-overview-table small{display:block;color:var(--muted);font-size:.75rem;margin-top:5px;max-width:160px;overflow-wrap:anywhere}.beer-overview-table .beer-date{white-space:nowrap;font-variant-numeric:tabular-nums}.beer-overview-table .player-link{font-weight:650}.beer-overview-table .number{font-variant-numeric:tabular-nums}.beer-total{font-size:1.1rem;font-weight:750;padding:3px 9px;display:inline-block;border-radius:5px;color:var(--muted)}.beer-total.has-crates{background:#cdebd7;color:#145538}.birthday-status.birthday-owed,.birthday-status.birthday-overdue{background:#fce0a0;color:#6e4300}.birthday-status.birthday-settled{background:#cdebd7;color:#145538}.birthday-status.birthday-soon,.birthday-status.birthday-planned{background:#dce9ff;color:#244e86}.birthday-panel>small{display:block;color:var(--muted);margin:9px 0}.birthday-panel p{margin:12px 0 0}.birthday-panel .actions{margin-bottom:0}.beer-scroll-hint{padding:6px 14px;margin-bottom:4px}.beer-overview-scroll:focus{outline:3px solid #a7c7f8;outline-offset:-3px}
@media(max-width:600px){.beer-overview-table{min-width:940px}.beer-overview-table th:first-child{min-width:158px;width:158px;max-width:158px}.beer-overview-table .player-link{font-size:.85rem;gap:7px}.beer-overview-table th,.beer-overview-table td{padding:13px 9px}.beer-overview-summary{gap:8px 20px}.beer-overview-summary strong{font-size:1.2rem}.beer-legend{gap:8px}.birthday-status{max-width:none!important}}

.admin-response{border-top:3px solid var(--blue)}.admin-response button{margin-top:18px}
.countdown-card{overflow-wrap:anywhere}.countdown-next{border-top:4px solid var(--blue);background:linear-gradient(135deg,#fff,#eef4ff)}.countdown-card h2{font-size:1.45rem;margin:0 0 8px}.countdown-next h2{font-size:clamp(1.7rem,4vw,2.4rem)}.countdown-date{color:var(--muted);margin-bottom:24px}.countdown-state{font-weight:650;color:var(--blue);margin-bottom:10px}.countdown-digits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;max-width:540px;margin:0 0 24px}.countdown-digits>div{padding:16px;background:var(--navy);border-radius:9px;color:white;text-align:center}.countdown-digits strong{display:block;font-size:clamp(1.8rem,5vw,3rem);line-height:1.25;font-variant-numeric:tabular-nums}.countdown-digits span{font-size:.875rem;color:#d4dfeb}.countdown-location,.countdown-note{margin-bottom:18px}.countdown-card .button{margin-top:6px}
@media(max-width:600px){.countdown-digits{gap:8px}.countdown-digits>div{padding:13px 6px}.countdown-date{font-size:.9rem}}

#push-settings label:has(input[type=checkbox]){display:flex;align-items:flex-start;gap:8px}#push-settings input[type=checkbox]{flex:0 0 22px;margin-top:2px}#push-settings button:disabled{opacity:.55;cursor:default}.push-device{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 0;border-top:1px solid var(--line)}.push-device p{margin:5px 0}.push-device strong{overflow-wrap:anywhere}@media(max-width:600px){.push-device{align-items:flex-start;flex-wrap:wrap}}

/* Drink alternatives may contain several words, including on small phones. */
.beer-crate{white-space:normal;overflow-wrap:anywhere;max-width:42%;flex-shrink:1}
.beer-reason,.beer-note{overflow-wrap:anywhere}

/* Public league statistics: scoped styles keep existing team screens unchanged. */
.league-panel{padding:20px}.league-table{min-width:780px}.league-table th[scope="row"]{min-width:215px}.league-table td{white-space:nowrap}.league-own{background:#e4efff}.league-own th,.league-own .league-points{font-weight:800;color:#124597}.league-form{display:flex;gap:4px;min-width:105px}.league-form span{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;font-size:.75rem;font-weight:750}.form-S{background:#ddf4e8;color:#145538}.form-U{background:#e5eaf1;color:#34465a}.form-N{background:#ffe9e6;color:#873325}.league-legend{margin:16px 0 0}.league-scroll-hint{margin:0 0 10px}.league-player{display:flex;align-items:center;gap:10px}.league-scorers th[scope="row"]{min-width:150px}.league-scorers td,.league-scorers th{padding:13px 8px}.league-summary strong{font-size:2rem}
@media(max-width:600px){.league-panel{padding:12px}.league-summary{gap:8px}.league-summary .stat{padding:12px 10px}.league-summary strong{font-size:1.5rem}.league-scorers{font-size:.875rem}.league-player{gap:6px}.league-player .jersey{min-width:25px;width:25px;height:28px;font-size:.75rem}.league-scorers th[scope="row"]{min-width:130px}.league-scorers td,.league-scorers th{padding:12px 5px}.league-scorers thead th{font-size:.75rem}.league-form{gap:3px}}

.league-panel .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
