:root{--blue:#0f4beb;--red:#ff2305;--ink:#111;--pale:#edf2ff;--line:#cdd5e8;font-family:Arial,Helvetica,sans-serif;color:var(--ink);font-size:16px}*{box-sizing:border-box}body{margin:0;background:#fff}a{color:inherit}button,input,select,textarea{font:inherit}button,.button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #111;outline-offset:2px;box-shadow:0 0 0 6px #ffb800}.skip{position:absolute;left:-9999px}.skip:focus{left:1rem;top:1rem;background:#fff;z-index:3;padding:.7rem}.site-header{background:var(--blue);color:#fff}.header-inner,.container{width:min(1120px,calc(100% - 40px));margin:auto}.header-inner{min-height:98px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand img{width:180px;max-width:100%;height:auto;display:block}.site-header nav{display:flex;gap:25px;flex-wrap:wrap}.site-header nav a{font-weight:700;text-decoration:none}.site-header nav a:hover{text-decoration:underline}.hero{background:var(--blue);color:#fff;padding:56px 0 62px}.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:14px;font-weight:800}.hero h1,h1{font-size:clamp(2.3rem,5vw,4.5rem);line-height:1.02;letter-spacing:-.045em;margin:.35em 0}.hero p,.lead{font-size:clamp(20px,2vw,24px);line-height:1.42;max-width:760px}.hero p{margin-bottom:0}.section{padding:48px 0}.section+.section{border-top:1px solid var(--line)}h2{font-size:clamp(27px,3vw,38px);line-height:1.12;letter-spacing:-.025em;margin:0 0 16px}h3{font-size:22px;line-height:1.2;margin:0 0 12px}p,li{line-height:1.5}p{margin:0 0 14px}.small,.meta{font-size:16px}.muted{color:#434d62}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.card{border:1px solid var(--line);padding:24px;min-width:0}.card.pale,.panel{background:var(--pale);border:0}.panel{padding:24px}.card.blue{background:var(--blue);color:#fff;border:0}.card.red{border-top:5px solid var(--red)}.status{display:inline-block;font-weight:700;font-size:14px;padding:6px 10px;background:#e6edff;color:#1539a1;margin-bottom:12px}.status.good{background:#dff4e9;color:#145b35}.status.warn{background:#fff1d5;color:#6f4900}.big-number{font-size:38px;font-weight:800;letter-spacing:-.04em}.button,button{display:inline-block;border:2px solid var(--blue);background:var(--blue);color:#fff;padding:13px 19px;font-weight:700;text-decoration:none;min-height:48px}.button:hover,button:hover{background:#082faa}.button.secondary{background:#fff;color:var(--blue)}.button.secondary:hover{background:var(--pale)}.button.dark{background:#111;border-color:#111;color:#fff}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:18px}.stack>*+*{margin-top:16px}.split{display:flex;justify-content:space-between;gap:24px;align-items:start}.notice{padding:18px 20px;border-left:5px solid var(--blue);background:var(--pale);margin:20px 0}.error{border-color:var(--red);background:#fff1ee}.loading{padding:70px 0}.form{max-width:680px}.field{margin:20px 0}.field label{font-weight:700;display:block;margin-bottom:8px}.field input,.field select,.field textarea{width:100%;padding:12px;border:1px solid #606a7f;background:#fff;min-height:48px}.check{display:flex;gap:12px;align-items:start}.check input{width:22px;height:22px;flex:none}.check label{line-height:1.45}.list{padding-left:20px}.event-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.event-meta span{background:var(--pale);padding:5px 8px;font-size:14px;font-weight:700}.events{display:grid;gap:16px}.event{display:grid;grid-template-columns:1fr auto;gap:20px;border:1px solid var(--line);padding:24px}.event h3{margin-bottom:8px}.event .actions{justify-content:end;align-content:start;margin-top:0}details{border-top:1px solid var(--line);padding:18px 0}details:last-child{border-bottom:1px solid var(--line)}summary{font-size:20px;font-weight:700;cursor:pointer}details p{margin:16px 0 0}.wordmark{max-width:260px;width:100%;height:auto;margin-bottom:12px}footer{background:#111;color:#fff;padding:40px 0}footer p{margin:10px 0}footer a{font-weight:700}@media(max-width:700px){.header-inner{align-items:flex-start;flex-direction:column;padding:20px 0;gap:16px}.brand img{width:150px}.site-header nav{gap:12px 20px}.grid,.grid.two{grid-template-columns:1fr}.event{grid-template-columns:1fr}.event .actions{justify-content:start}.split{display:block}.section{padding:36px 0}.hero{padding:38px 0 42px}.container,.header-inner{width:calc(100% - 32px)}}
main p,main li{font-size:18px}.small,.meta,main .event-meta span,main .status{font-size:16px}.field label,.check label{font-size:18px}
#activity-mount form{max-width:700px}#activity-mount label{display:block;margin:18px 0;font-size:18px;font-weight:700}#activity-mount input:not([type=checkbox]),#activity-mount select,#activity-mount textarea{display:block;width:100%;padding:12px;min-height:48px;border:1px solid #606a7f;margin-top:8px}#activity-mount input[type=checkbox]{width:22px;height:22px;margin:0 10px 0 0;vertical-align:middle}#activity-mount textarea{min-height:130px}#activity-mount button{margin:8px 10px 0 0}button:disabled{opacity:.6;cursor:wait}
.programme-brand{padding:8px 0}.programme-brand img{display:block;width:min(370px,100%);height:auto}

/* Shared College portal components. Keep programme rules in the controller. */
:root{--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-5:48px}
.portal-shell .header-inner{min-height:80px;gap:var(--space-3)}
.portal-shell .site-header nav{align-items:center;gap:var(--space-2)}
.portal-shell .site-header nav a,.nav-current{display:inline-flex;align-items:center;min-height:44px;padding:6px 0}
.portal-shell .site-header nav [aria-current="page"]{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px;font-weight:700}
.portal-shell .programme-brand{padding:12px 0}
.portal-shell .programme-brand img{width:min(300px,100%)}
.portal-shell .hero{padding:32px 0 36px}
.portal-shell .hero h1{font-size:clamp(2.1rem,4.4vw,3.5rem);overflow-wrap:anywhere}
.portal-shell .hero p{max-width:760px}
.portal-shell .section>.container>p{max-width:75ch}
.next-step-card{border:2px solid var(--blue);border-left:6px solid var(--red);background:var(--pale);padding:var(--space-3);min-width:0}
.next-step-card h2{margin-bottom:var(--space-2)}
.next-step-card .actions{margin-top:var(--space-2)}
.next-step-card p:last-child{margin-bottom:0}
.orientation-strip{display:flex;flex-wrap:wrap;list-style:none;gap:var(--space-2);padding:0;margin:var(--space-3) 0}
.orientation-strip>li,.orientation-step{display:flex;align-items:center;gap:var(--space-1);font-size:16px;font-weight:700;min-width:0}
.orientation-strip>li:not(:last-child):after{content:'→';color:var(--blue);font-size:24px;line-height:1;margin-left:var(--space-1);flex:none}
.field-error{margin:6px 0 0;color:#9b1c1c;font-weight:700}
.works-now{background:var(--pale);padding:var(--space-2);margin:var(--space-2) 0}
.orientation-strip [aria-current="step"]{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
.orientation-strip a{min-height:44px;display:inline-flex;align-items:center}
button.secondary,button.button-secondary{background:#fff;color:var(--blue)}
button.secondary:hover,button.button-secondary:hover{background:var(--pale)}
button:disabled,button:disabled:hover{background:#e6e9ef;border-color:#a7afbf;color:#495269;opacity:1;cursor:not-allowed}
.activity-actions,.recorder-actions,.recorder-capture>div{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:var(--space-2)}
#activity-mount .activity-actions button,#activity-mount .recorder-actions button,#activity-mount .recorder-capture>div button{margin:0}
.activity-help{font-size:16px!important;color:#434d62;max-width:65ch}
.activity-consent{padding:var(--space-2);background:var(--pale);border-left:4px solid var(--blue)}
.activity-attachments{margin:var(--space-3) 0}
.activity-attachments:empty{display:none}
.activity-attachment{padding:var(--space-2);border:1px solid var(--line);margin:var(--space-1) 0;overflow-wrap:anywhere}
.activity-attachment button{display:block}
.activity-error:not(:empty),.error-summary:not(:empty){padding:var(--space-2);border-left:5px solid var(--red);background:#fff1ee;color:#681d12;margin:var(--space-2) 0}
.activity-error:empty,.error-summary:empty{display:none}
.college-recorder{padding:var(--space-3);border:1px solid var(--line);background:#f5f7ff;margin:var(--space-3) 0;min-width:0}
.college-recorder>*{min-width:0}
.college-recorder [hidden]{display:none}
.college-recorder video,.college-recorder img{display:block;width:100%;max-width:100%;max-height:60vh;object-fit:contain;background:#111}
.college-recorder video[hidden],.college-recorder img[hidden]{display:none}
.recorder-preview:not(:empty){margin-top:var(--space-2)}
.recorder-upload{padding-top:var(--space-2);border-top:1px solid var(--line);margin-top:var(--space-2)}
.recorder-upload [role="status"]:empty{display:none}
#activity-mount input[type="file"]{font-size:16px;min-width:0;max-width:100%;overflow:hidden}
#activity-mount .activity-field input,#activity-mount .activity-field select,#activity-mount .activity-field textarea{font-weight:400}
.status{max-width:100%;overflow-wrap:anywhere}
@media(prefers-reduced-motion:no-preference){
 [data-feedback="success"]{animation:college-success 180ms ease-out 1}
 [data-progress-changed="true"]{animation:college-progress 200ms ease-out 1}
 @keyframes college-success{0%{box-shadow:0 0 0 3px #9cc7ad}100%{box-shadow:0 0 0 0 transparent}}
 @keyframes college-progress{0%{outline:3px solid var(--blue);outline-offset:2px}100%{outline:3px solid transparent;outline-offset:2px}}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}[data-feedback],[data-progress-changed]{animation:none!important;transition:none!important}}
@media(max-width:700px){
 .portal-shell .header-inner{min-height:0;padding:8px 0;gap:4px}
 .portal-shell .brand img{width:120px}
 .portal-shell .site-header nav{gap:0 12px;width:100%}.portal-shell .site-header nav a{font-size:15px}
 .portal-shell .programme-brand{padding:var(--space-1) 0}
 .portal-shell .programme-brand img{width:min(180px,100%)}
 .portal-shell .hero{padding:var(--space-2) 0 20px}
 .portal-shell .hero h1{font-size:clamp(30px,8.5vw,36px);line-height:1.06}
 .portal-shell .hero p{font-size:18px;line-height:1.35}
 .portal-shell .section{padding:var(--space-4) 0}
 .next-step-card,.college-recorder{padding:var(--space-2)}
 .orientation-strip{gap:var(--space-1)}
 .orientation-strip>li:not(:last-child):after{margin-left:0}
 .activity-actions>button{flex:1 1 140px}
 .recorder-capture>div>button{flex:1 1 130px}
}

/* Enlarge the interactive link itself, keeping the surrounding label clickable. */
.field.check label a,footer .container>a[href^="/college/?about"],[data-progress="core"] a[href="#college-activities"]{display:inline-flex;align-items:center;min-height:44px}

/* WP3 (Fable design review): hierarchy, status panel, how-it-works, event layout. Red is never used for text (3.82:1 on white). */
:root{--card-pad:24px}
.section h2{font-size:clamp(26px,3vw,34px);margin-bottom:var(--space-2)}
.card h3,.event h3{font-size:20px}
.card,.event,.panel,.next-step-card{padding:var(--card-pad)}
.notice,.works-now{background:var(--pale);border-left:5px solid var(--blue);padding:var(--space-2) 20px;margin:var(--space-2) 0;font-size:17px}
.works-now{border-radius:0}
.field-error{color:#9b1c1c}
.status-panel{background:#fff;border:2px solid var(--ink);border-top:6px solid var(--blue);box-shadow:6px 6px 0 var(--ink);padding:0;margin:var(--space-3) 0;min-width:0}
.status-panel>h2,.status-panel>.eyebrow{margin:0;padding:var(--space-2) var(--space-3) 0}
.status-panel>h2{font-size:22px;padding-bottom:var(--space-1)}
.status-panel>ul{list-style:none;margin:0;padding:0}
.status-row{list-style:none;border-top:1px solid var(--line);min-width:0}
.status-row:first-child,.status-panel>h2+.status-row{border-top:0}
.status-row>a,a.status-row{display:flex;align-items:center;gap:var(--space-2);min-height:56px;padding:10px var(--space-3);color:var(--ink);text-decoration:none;min-width:0}
.status-row>a>*,a.status-row>*{min-width:0}
.status-row>a:hover,a.status-row:hover{background:var(--pale)}
.status-row>a:hover strong,.status-row>a:hover .label{text-decoration:underline}
.status-row>a>strong,.status-row .label{flex:1 1 40%;font-weight:700;font-size:17px}
.status-row>a>span:not(.tick):not(.num):not(.label),.status-row .value{flex:1 1 60%;font-size:17px;line-height:1.4;overflow-wrap:anywhere}
a.status-row>.value{flex:0 1 auto;font-size:18px;font-weight:700;text-align:right}
.status-row .tick,.status-row .num{flex:none;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--blue);color:#fff;font-weight:800;font-size:16px}
.status-panel>.next-step-card,.status-panel .next-step{border:0;border-top:2px solid var(--ink);background:var(--pale);padding:var(--space-3)}
.status-panel .next-step-card h3{font-size:22px;margin:4px 0 var(--space-1)}
.status-panel .next-step-card p{font-size:17px}
.status-panel .next-step-card .button,.status-panel .next-step-card button{font-size:18px;min-height:56px;padding:14px 28px}
.status-panel .next-step{padding:var(--space-3);border-top:2px solid var(--ink);background:var(--pale)}
.status-panel .next-step h2,.status-panel .next-step h3{font-size:22px;margin:0 0 var(--space-1)}
.status-panel .next-step p{font-size:17px;margin-bottom:0}
.status-panel .next-step .actions{margin-top:var(--space-2)}
.status-panel .next-step .button,.status-panel .next-step button{font-size:18px;min-height:56px;padding:14px 28px}
.how-it-works{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2);counter-reset:step;list-style:none;padding:0}
.how-it-works>li{display:block;position:relative;counter-increment:step;border:1px solid var(--line);border-top:5px solid var(--red);padding:var(--space-3) var(--space-2) var(--space-3) 72px;font-size:20px;font-weight:700;line-height:1.3}.how-it-works>li p{font-size:17px;font-weight:400;line-height:1.5;margin:6px 0 0}
.how-it-works>li:not(:last-child):after{content:none}
.how-it-works>li:before{content:counter(step);position:absolute;left:var(--space-2);top:var(--space-3);width:40px;height:40px;border-radius:50%;background:var(--blue);color:#fff;font-weight:800;font-size:20px;display:flex;align-items:center;justify-content:center}
.how-it-works strong,.how-it-works b,.how-it-works .step-name{display:block;font-weight:700;font-size:20px;margin-bottom:4px}
.how-it-works a,.how-it-works a.button{display:inline;background:none;border:0;min-height:0;padding:0;color:var(--blue);text-decoration:underline;font-weight:700;font-size:inherit}
.how-it-works a:hover,.how-it-works a.button:hover{background:none;color:#082faa}
.how-it-works a:not(.x){padding:12px 0}
@media(min-width:701px){.event{grid-template-columns:minmax(0,1fr) minmax(0,320px)}.event .actions{flex-direction:column;align-items:stretch;justify-content:start}.event .actions>*{text-align:center;width:100%}}
@media(max-width:700px){
 :root{--card-pad:16px}
 .how-it-works{grid-template-columns:1fr}
 .how-it-works>li{padding:var(--space-2) var(--space-2) var(--space-2) 64px}
 .how-it-works>li:before{top:var(--space-2);width:36px;height:36px;font-size:18px}
 .status-row{padding:10px var(--space-2)}
 .status-panel{box-shadow:4px 4px 0 var(--ink);margin:var(--space-2) 0}
 .status-panel>h2,.status-panel>.eyebrow{padding:var(--space-2) var(--space-2) 0}
 .status-panel .next-step-card,.status-panel .next-step{padding:var(--space-2)}
 .status-row>a,a.status-row{padding:10px var(--space-2);flex-wrap:wrap;gap:2px var(--space-2)}
 .status-row>a>strong{flex:1 1 100%}
 .status-panel .next-step-card .button,.status-panel .next-step .button,.status-panel .next-step button{width:100%;text-align:center}
}
.notice.error{border-left-color:var(--red);background:#fff1ee}

/* Round 2 (student dashboard): illustrations, two-step "you then staff" block, two-column layout, responsive pass. */
.dash-pic{display:block;max-width:100%;height:auto;mix-blend-mode:multiply;filter:brightness(1.03);flex:none}
.status-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3) var(--space-1)}
.status-head h2{margin:0;padding:0;font-size:22px}
.status-head .dash-pic{width:88px;height:88px;margin:-8px 0}
.status-note{margin:0;padding:12px var(--space-3);border-top:1px solid var(--line);font-size:17px;border-left:5px solid var(--red)}
.status-panel>.status-note{padding-left:calc(var(--space-3) - 5px)}
/* How this works: image first, step number badge on its corner. */
.how-it-works>li{display:flex;flex-direction:column;align-items:flex-start;padding:var(--space-2) var(--space-2) var(--space-3)}
.how-it-works>li .dash-pic{order:-1;width:96px;height:96px;margin:0 0 var(--space-1) 0}
.how-it-works>li:before{left:var(--space-1);top:var(--space-1);width:32px;height:32px;font-size:17px;z-index:1}
/* Two steps block */
.two-steps{margin:0;padding:var(--space-3);border-top:2px solid var(--ink)}
.two-steps h3{font-size:20px;margin:0 0 var(--space-2)}
.two-steps ol{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
.two-steps li{display:flex;align-items:center;gap:var(--space-2);padding:12px var(--space-2) 12px 12px;border:1px solid var(--line);background:#fff;min-width:0}
.two-steps li.you{border-top:5px solid var(--blue)}
.two-steps li.staff{border-top:5px solid var(--ink)}
.two-steps li .dash-pic{width:72px;height:72px}
.two-steps li>div{min-width:0}
.two-steps strong{display:block;font-size:18px;margin-bottom:2px}
.two-steps p{margin:0;font-size:17px;line-height:1.4}
.two-steps.compact{border-top:0;padding:0;margin:var(--space-2) 0 var(--space-3)}
.two-steps.compact li .dash-pic{width:64px;height:64px}
/* Per-activity two-part state */
.step-state{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px}
.step-state>span{display:inline-block;font-size:16px;font-weight:700;line-height:1.25;padding:6px 10px;border:1px solid var(--line);background:#fff;color:#434d62}
.step-state .arrow{border:0;background:none;padding:0;color:var(--blue);font-size:20px}
.step-state .you.is-done{background:#e6edff;border-color:#9db4f5;color:#1539a1}
.step-state .staff.is-ok{background:#dff4e9;border-color:#8fceac;color:#145b35}
.step-state .staff.is-warn{background:#fff1d5;border-color:#e3c37d;color:#6f4900}
.dash-main .grid:not(.two){grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.dash-layout{width:min(1120px,calc(100% - 40px));margin:0 auto}
.dash-layout .container{width:auto;max-width:none}
.dash-layout .dash-main,.dash-layout .dash-side{min-width:0}
@media(min-width:701px) and (max-width:1023px){
 .how-it-works>li .dash-pic{width:80px;height:80px}
 .two-steps ol{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1024px){
 .dash-layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;column-gap:var(--space-5);width:min(1200px,calc(100% - 64px));align-items:start}
 .dash-side{grid-column:2;grid-row:1}
 .dash-main{grid-column:1;grid-row:1}
 .dash-side .status-panel{margin:0}
 .dash-side .status-row>a{flex-wrap:wrap;gap:2px var(--space-2)}
 .dash-side .status-row>a>strong{flex:1 1 100%}
 .dash-side .status-row>a>span:not(.tick):not(.num):not(.label){flex:1 1 100%}
 .dash-side .two-steps .dash-pic{width:64px;height:64px}
}
@media(min-width:1024px) and (min-height:900px){.dash-side{position:sticky;top:16px}}
@media(max-width:700px){
 .dash-layout{width:calc(100% - 32px)}
 .status-head{padding:var(--space-2) var(--space-2) var(--space-1)}
 .status-head .dash-pic{width:64px;height:64px;margin:-4px 0}
 .status-note{padding:12px var(--space-2)}
 .status-panel>.status-note{padding-left:calc(var(--space-2) - 5px)}
 .two-steps{padding:var(--space-2)}
 .two-steps.compact{padding:0}
 .two-steps li .dash-pic,.two-steps.compact li .dash-pic{width:56px;height:56px}
 .how-it-works>li{display:grid;grid-template-columns:72px minmax(0,1fr);column-gap:var(--space-2);align-items:start;padding:var(--space-2)}
 .how-it-works>li .dash-pic{grid-column:1;grid-row:1 / span 2;width:72px;height:72px;margin:0}
 .how-it-works>li:before{left:var(--space-1);top:var(--space-1);width:28px;height:28px;font-size:15px}
 .how-it-works>li p{margin-top:4px}
 .portal-shell .hero{padding:12px 0 16px}
 .portal-shell .hero h1{margin:.2em 0}
 .portal-shell .hero p{font-size:17px}
 .portal-shell .section{padding:var(--space-3) 0}
 .step-state>span{font-size:15px}
}
@media(max-width:360px){
 .status-head .dash-pic{width:52px;height:52px}
 .step-state .arrow{display:none}
}
@media(min-width:1024px){.two-steps.compact{display:none}}
@media(max-width:1023px){.dash-side .section{padding-bottom:0}.dash-main>.section:first-child{padding-top:var(--space-3)}}
@media(min-width:1024px) and (max-width:1199px){.dash-layout{grid-template-columns:minmax(0,1fr) 340px;column-gap:var(--space-4)}}
/* Own events, "I went" and the plan list */
.plan-list{margin:var(--space-2) 0}
.plan-item .actions{align-items:flex-start}
.plan-item h3{margin:4px 0 8px;overflow-wrap:anywhere}
.plan-item a{overflow-wrap:anywhere}
.own-notes{white-space:pre-wrap;overflow-wrap:anywhere}
.went-state{display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:100%}
.went-state .went-note{margin:0}
.went-own{align-items:flex-end}
.went-own .field{margin:0}
.went-own input[type=date]{min-height:44px;max-width:100%}
.own-event{margin-top:var(--space-3);padding:var(--space-3);border:1px solid var(--line);background:#fff;max-width:640px}
.own-event h3{margin-top:0}
.own-event textarea{width:100%;min-height:88px}
.own-help{margin:var(--space-2) 0 0}
.three-steps ol{grid-template-columns:minmax(0,1fr)}
@media(min-width:701px) and (max-width:1023px){.three-steps ol{grid-template-columns:repeat(3,minmax(0,1fr))}.three-steps li{flex-direction:column;align-items:flex-start}}

/* Status panel redesign: achievement first. Hero tiles, neutral waiting tile, quiet rows. */
.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2);padding:var(--space-1) var(--space-3) var(--space-2)}
.stat-tile{display:flex;flex-direction:column;gap:4px;min-width:0;min-height:44px;padding:var(--space-2);border:1px solid var(--line);border-top:5px solid var(--blue);background:#fff;text-decoration:none;color:var(--ink)}
.stat-tile:hover{background:var(--pale)}
.stat-num{font-size:44px;line-height:1;font-weight:800;letter-spacing:-.04em;color:var(--blue);white-space:nowrap}
.stat-label{font-size:17px;font-weight:700;line-height:1.25}
.stat-sub{font-size:15px;line-height:1.35;color:#434d62}
.stat-wait{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin:0 var(--space-3) var(--space-2);padding:12px var(--space-2);background:#f1f2f4;color:#2b3345;font-size:17px;min-height:44px}
.stat-wait strong{font-size:22px}
/* Visual credit tally: solid blue = approved (counted); dashed grey = waiting to confirm (not counted, not a warning). */
.credit-tally{display:flex;gap:6px;margin:0 var(--space-3) var(--space-2)}
.tally-seg{flex:1;height:14px;border:2px solid var(--line);background:#fff;box-sizing:border-box}
.tally-seg.is-done{background:var(--blue);border-color:var(--blue)}
.tally-seg.is-wait{border:2px dashed #6b7488;background:#f1f2f4}
@media(max-width:700px){.credit-tally{margin:0 var(--space-2) var(--space-2)}}
.status-quiet{margin-top:var(--space-1)!important;border-top:1px solid var(--line)}
.status-quiet .status-row>a{min-height:48px}
.status-quiet .status-row>a>strong,.status-quiet .status-row>a>span:not(.tick){font-size:16px;font-weight:400}
.status-quiet .status-row>a>strong{font-weight:700}
@media(max-width:700px){
 .stat-grid{padding:var(--space-1) var(--space-2) var(--space-2);gap:var(--space-1)}
 .stat-tile{padding:12px}
 .stat-num{font-size:40px}
 .stat-label{font-size:16px}
 .stat-wait{margin:0 var(--space-2) var(--space-2)}
}
@media(max-width:359px){.stat-num{font-size:34px}.stat-tile{padding:10px}}
/* I attended: busy spinner, no words (the button is disabled while the request runs). */
button[aria-busy="true"]::after{content:"";display:inline-block;width:1em;height:1em;margin-left:8px;vertical-align:-0.15em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:college-spin .8s linear 40}
@keyframes college-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){button[aria-busy="true"]::after{animation-duration:2.4s}}
.event-image{display:block;align-self:start;height:auto;width:100%;max-width:320px;aspect-ratio:1/1;object-fit:cover;background:var(--pale);border-radius:8px}.event-about{margin-top:8px}.event-about summary{cursor:pointer;font-weight:700}.event-about p{white-space:normal;overflow-wrap:anywhere}
@media(min-width:701px){.event.has-image{grid-template-columns:160px minmax(0,1fr) minmax(0,320px)}.event.has-image .event-image{width:160px}.event.has-image .event-cover{width:160px}}

.tier-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}
.tier-grid .tier{min-width:0;margin:0}
.tier-grid .tier h3{margin-top:0}
@media(max-width:700px){.tier-grid{grid-template-columns:minmax(0,1fr)}}

.event-cover{min-width:0;align-self:start}.event-cover .image-note{margin:6px 0 0;color:#434d62;line-height:1.35}

/* Outage access (13 Nov 26): a marked session is read-only on the server; the page also hides every write control. */
.is-outage main form:not(#outage-form), .is-outage main button:not(#sign-out):not([type=button][data-outage-ok]) { display: none !important; }
