:root {
  --york-red:#e31837; --york-red-dark:#bd1029;
  --ink:#333; --navy:#004b87; --link:#005a9c; --muted:#595959;
  --line:#ddd; --soft:#f5f5f5; --page:#fff;
  --success:#3c763d; --success-bg:#dff0d8;
  --warn:#765b2b; --warn-bg:#fcf8e3;
  --danger:#a94442; --danger-bg:#f2dede; --focus:#004b87;
}
*{box-sizing:border-box}
html{font-size:16px}
body{margin:0;background:#fff;font-family:"Open Sans","Segoe UI",Arial,sans-serif;color:var(--ink);line-height:1.6}
a{color:var(--link);text-decoration:underline;text-underline-offset:3px}
a:hover{color:#003b69;text-decoration-thickness:2px}
button,input{font:inherit}
button,a,input{outline-offset:3px}
:focus-visible{outline:3px solid var(--focus)}
.skip-link{position:absolute;top:8px;left:16px;z-index:100;background:#fff;padding:8px 16px;transform:translateY(-150%)}
.skip-link:focus{transform:translateY(0)}
.header-inner{width:min(1140px,calc(100% - 48px));margin:auto;display:flex;align-items:center;justify-content:space-between}
.university-header .header-inner{height:90px}
.university-header img{display:block;width:126px;height:auto}
.passport-wordmark{font-family:"Arial Narrow",Arial,sans-serif;font-stretch:condensed;font-size:12px;line-height:1;display:block;color:#222;font-weight:700}
.passport-wordmark strong{display:block;color:var(--york-red);font-size:22px;letter-spacing:-1px}
.service-banner{background:var(--york-red);color:#fff}
.service-banner .header-inner{min-height:64px;font-size:25px;font-weight:600;letter-spacing:1px}
.site-shell{width:min(1140px,calc(100% - 48px));margin:0 auto;padding:64px 0 72px;display:grid;grid-template-columns:minmax(0,750px) minmax(0,360px);gap:30px;align-items:start}
.auth-wrap{min-width:0}
.brand{margin:0 0 24px;border-bottom:1px solid #eee;padding-bottom:18px}
.brand h1{margin:0;color:var(--navy);font-size:30px;line-height:1.35;font-weight:400;letter-spacing:0;text-transform:none}
.card,.card.compact{padding:0;max-width:100%;border:0;box-shadow:none;background:#fff}
.lead{margin:0 0 28px;color:var(--ink);text-align:left;font-size:18px;max-width:690px}
form{max-width:560px}
.field{margin:0 0 22px}
label,.label{display:block;margin:0 0 7px;font-weight:700;font-size:16px;color:var(--ink)}
.label-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:7px}
.label-row label{margin:0}
input[type=text],input[type=password],input[type=email]{width:100%;min-height:40px;border:1px solid #aaa;border-radius:0;background:#fff;padding:7px 10px;color:#222;font-size:16px;box-shadow:inset 0 1px 1px #00000012}
input[aria-invalid=true]{border:2px solid var(--danger)}
.otp-input{max-width:320px;letter-spacing:.2em;font-size:20px}
.otp-input::placeholder{letter-spacing:normal;font-size:16px}
.hint{display:block;margin-top:6px;color:var(--muted);font-size:14px}
.show-btn,.text-btn{border:0;background:none;padding:4px 0;color:var(--link);font-size:14px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px;align-items:center}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 16px;border-radius:0;border:1px solid transparent;text-decoration:none;font-weight:400;letter-spacing:0;text-transform:none;cursor:pointer;text-align:center}
.btn-primary,.btn-dark{background:var(--navy);border-color:#003c6c;color:#fff}
.btn-primary:hover,.btn-dark:hover{background:#003b69;color:#fff}
.actions .btn-dark{background:#fff;border-color:#aaa;color:var(--link)}
.actions .btn-dark:hover{background:#f5f5f5;color:#003b69}
/* Update email is the primary action even where the old prototype used btn-dark. */
.actions button[type=submit]{background:var(--navy);border-color:#003c6c;color:#fff}
.btn-outline{background:#fff;border-color:#aaa;color:var(--link)}
.btn-link{background:none;color:var(--link);text-decoration:underline}
.split-links{display:flex;flex-wrap:wrap;gap:10px 24px;margin-top:22px;font-size:16px}
.recovery-block{margin-top:36px}
.recovery-block h2,.help-block h2{font-size:18px;font-weight:700;margin:0 0 12px;color:var(--ink)}
.recovery-block .links,.help-links{display:flex;flex-wrap:wrap;gap:8px 24px}
.help-block{margin-top:30px;padding-top:22px;border-top:1px solid #eee}
.help-icon{display:inline-grid;place-items:center;flex-shrink:0;width:26px;height:26px;border:1px solid var(--navy);border-radius:50%;background:#fff;color:var(--navy);font-weight:700;cursor:pointer}
.number-field{position:relative}
.popover{position:absolute;z-index:20;right:0;top:70px;width:min(390px,100%);padding:18px;border:1px solid #aaa;background:#fff;box-shadow:0 4px 14px #0002}
.popover h3{margin:0 0 12px;font-size:18px;color:var(--navy)}
.popover ul{list-style:none;margin:0;padding:0}
.popover li+li{margin-top:8px}
.popover a,.popover button{border:0;background:none;padding:0;color:var(--link);font:inherit;text-decoration:underline;text-align:left;cursor:pointer}
.tip{margin-top:16px;padding:12px;background:var(--soft);font-size:14px}
.tip strong{display:block;margin-bottom:6px}
.tip ul{padding-left:18px;list-style:disc}
.alert{margin:0 0 24px;padding:16px;border-radius:0;border:1px solid;font-size:16px}
.alert strong{display:block;margin-bottom:5px;color:inherit}
.alert-error{border-color:#ebccd1;background:var(--danger-bg);color:var(--danger)}
.alert-warn{border-color:#faebcc;background:var(--warn-bg);color:var(--warn)}
.alert-success{border-color:#d6e9c6;background:var(--success-bg);color:var(--success)}
.alert-grey,.alert-info{border-color:#bce8f1;background:#d9edf7;color:#246580}
.alert ol,.alert ul{margin:10px 0;padding-left:24px;text-align:left}
.alert strong:not(:first-child){margin-top:16px}
.center{text-align:left}
.support-note{font-size:15px;color:var(--muted);margin:28px 0 0;text-align:left}
.email-preview{font-weight:700}
.rule-list{margin:10px 0 0;padding-left:22px;color:var(--muted);font-size:14px}
.rule-ok{color:var(--success)}
.service-aside h2{margin:0 0 24px;padding-bottom:18px;border-bottom:1px solid #eee;font-size:30px;line-height:1.35;color:var(--navy);font-weight:400}
.service-aside h3{font-size:18px;margin:28px 0 10px}
.service-aside p{margin:0 0 22px}
.service-aside ul{padding-left:24px;margin:0 0 28px}
.service-aside li{margin-bottom:10px}
.service-aside .alert{font-size:15px;margin-top:28px}
.site-footer{width:min(1140px,calc(100% - 48px));margin:0 auto;border-top:1px solid #ccc;padding:26px 0 30px;text-align:center;color:var(--muted);font-size:14px}
.site-footer p{margin:12px 0 20px}
.prototype-tools{display:flex;justify-content:center;gap:18px;font-size:12px}
.prototype-tools span{color:#666}
.overview{width:min(1400px,calc(100% - 40px));margin:0 auto;padding:38px 0 56px}
.overview-header{max-width:790px;margin:0 0 28px}
.overview-header img{width:170px;height:auto;margin-bottom:18px}
.overview-header h1{margin:0 0 10px;color:var(--navy);font-size:clamp(1.8rem,4vw,2.55rem);line-height:1.1}
.overview-header p{margin:0;color:#4d5965;max-width:720px}
.flow-map{background:#fff;border:1px solid #d7dde4;border-radius:12px;padding:24px;box-shadow:0 5px 22px rgba(20,34,52,.06)}
.flow-map h2{margin:0 0 14px;font-size:1.1rem;color:#132440}
.flow-legend{display:flex;flex-wrap:wrap;gap:8px 20px;margin:0 0 18px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.legend-item{display:inline-flex;align-items:center;gap:7px;font-size:.79rem;color:#48545f;font-weight:700}
.legend-swatch{width:13px;height:13px;border-radius:4px;display:inline-block;flex:none}
.legend-swatch.legend-core{background:#fff;border:2px solid #34414d}
.legend-swatch.legend-no-recovery{background:#fdf6f2;border:2px solid #d98a5f}
.legend-swatch.legend-happy{background:#f2f7fd;border:2px solid #5f8fd9}
.legend-swatch.legend-decision{background:#fff7e8;border:2px solid #e8c58e;border-radius:50%}
.legend-swatch.legend-terminal{background:#edf8f2;border:2px solid #a8d7c0;border-radius:50%}
.legend-swatch.legend-external{background:#f5f7f9;border:2px dashed #8b98a3;border-radius:50%}
.legend-line{width:22px;height:0;border-top:2px solid #8a94a0;display:inline-block;flex:none}
.legend-line.legend-line-dashed{border-top-style:dashed}
.flow-scroll-hint{margin:0 0 8px;color:#7a8592;font-size:.78rem;font-style:italic}
.mermaid-wrap{position:relative;overflow:hidden;border-radius:8px;aspect-ratio:2.97/1;min-height:420px;max-height:720px;border:1px solid var(--line);background:#fdfdfd;touch-action:none;cursor:grab}
.mermaid-wrap:active{cursor:grabbing}
.mermaid-wrap:focus-visible{outline:3px solid rgba(0,102,204,.28)}
.mermaid-wrap pre.mermaid{position:absolute;inset:0;margin:0;display:block}
.mermaid-wrap svg{display:block;width:100%;height:100%}
.mermaid a{cursor:pointer}
.flow-zoom-controls{position:absolute;right:12px;bottom:12px;z-index:5;display:flex;flex-direction:column;gap:6px}
.flow-zoom-btn{width:34px;height:34px;border-radius:6px;border:1px solid #394450;background:#fff;color:#132440;font-size:1.15rem;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(20,34,52,.15);padding:0}
.flow-zoom-btn:hover{background:#f5f7f9}
.flow-zoom-btn:active{background:#eceff2}
.flow-fallback-note{margin:4px 0 0;color:#7a8592;font-size:.78rem}
.screen-index{margin-top:22px;background:#fff;border:1px solid #d7dde4;border-radius:12px;padding:24px}
.screen-index h2{margin:0 0 14px;font-size:1.1rem;color:#132440}
.screen-links{display:flex;flex-wrap:wrap;gap:9px}
.screen-links a{display:inline-flex;padding:7px 10px;border:1px solid #d7dde4;border-radius:999px;color:#29455f;text-decoration:none;font-size:.76rem;font-weight:700;background:#fafbfc}
.screen-links a:hover{border-color:#7f8d99;background:#fff}
.prototype-note{margin-top:22px;color:#64707b;font-size:.78rem}

.overview{width:min(1140px,calc(100% - 48px));padding-top:50px}
.overview-header h1{font-size:30px;font-weight:400;color:var(--navy)}
.flow-map,.screen-index{border-radius:0;box-shadow:none}
.flow-map h2,.screen-index h2{color:var(--navy);font-weight:400;font-size:24px}
.screen-links a{border-radius:0;font-size:14px;font-weight:400}
[hidden]{display:none!important}
@media(max-width:800px){
 .site-shell{grid-template-columns:1fr;padding:36px 0 48px;gap:44px}
 .service-aside{border-top:1px solid #ddd;padding-top:26px}
 .service-aside h2{font-size:25px}
 .brand h1{font-size:27px}
 .header-inner,.site-shell,.site-footer,.overview{width:calc(100% - 32px)}
 .service-banner .header-inner{font-size:21px;min-height:60px}
 .university-header .header-inner{height:80px}
 .overview{padding-top:32px}
 .mermaid-wrap{aspect-ratio:auto;height:380px;min-height:320px;max-height:420px}
 .flow-map,.screen-index{padding:16px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Passport York masthead: keep the institutional and account marks together. */
.university-header .header-inner{padding:0 15px}
.york-lockup{position:relative;display:block;width:126px;height:44px}
.york-lockup img{width:126px;height:auto}
.york-lockup>span{position:absolute;left:5px;top:29px;width:79px;text-align:center;font-family:Arial,sans-serif;font-size:5px;line-height:1.35;letter-spacing:3px;color:#222}
.header-account{display:flex;align-items:center;gap:8px}
.header-account .passport-wordmark{font-size:10px;font-weight:400;letter-spacing:-.5px}
.header-account .passport-wordmark strong{font-size:19px;letter-spacing:-1px}
.logout-link{display:inline-flex;align-items:center;gap:6px;padding:3px 7px;background:var(--navy);color:#fff;font-size:14px;line-height:1.6;text-decoration:none}
.logout-link:hover{background:#003b69;color:#fff}
.account-status{width:min(1140px,calc(100% - 48px));margin:0 auto;display:flex;justify-content:flex-end;min-height:26px;font-size:14px}
.account-status+.site-shell{padding-top:50px}
.brand h1,.service-aside h2{font-family:"Open Sans","Segoe UI",Arial,sans-serif;font-size:30px;font-weight:400;line-height:1.35;color:var(--navy);letter-spacing:0;text-transform:none}
@media(max-width:800px){
 .account-status{width:calc(100% - 32px);font-size:13px}
 .account-status+.site-shell{padding-top:32px}
 .brand h1,.service-aside h2{font-size:27px}
 .university-header .header-inner{padding:0}
}
