*{box-sizing:border-box}body{margin:0;font:16px/1.5 system-ui,sans-serif;background:#f2f5fb;color:#142747}button,input,textarea,select{font:inherit}button{cursor:pointer}button,a,input,select,textarea{outline-offset:4px}button{border:1px solid #ccd6e7;background:white;color:#183b77;padding:10px 16px;border-radius:8px;font-weight:600}button:hover{background:#edf3ff}.primary{background:#124cdb;color:white;border-color:#124cdb}.primary:hover{background:#0a37a6}.shell{display:grid;grid-template-columns:235px 1fr;min-height:100vh}aside{background:#082758;color:white;padding:30px 22px;display:flex;flex-direction:column}.brand{font-size:20px;font-weight:800;line-height:1.2;letter-spacing:.03em}.brand small{display:block;font-size:13px;letter-spacing:.17em;margin-top:9px;color:#bbd0f8}.crest{border:2px solid #8db6ff;padding:8px;display:inline-block;margin-bottom:20px;font-size:25px;font-weight:800}nav{display:grid;gap:8px;margin:40px 0}nav button{text-align:left;background:transparent;color:#d7e5ff;border:0}nav button.active{background:#2353a1;color:white}.asidefoot{margin-top:auto;font-size:14px;color:#b8cbed}main{padding:24px 40px;max-width:1450px;width:100%}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid #dce3ef;padding-bottom:22px;font-size:14px}.demo{background:#e9effb;border:1px solid #cfdbf4;padding:10px 16px;border-radius:6px;margin:20px 0;font-size:14px}.heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:28px 0 22px}h1{font-size:32px;line-height:1.15;margin:6px 0 10px;letter-spacing:-.04em}h2{font-size:21px;margin:0 0 16px}h3{font-size:17px;margin:0 0 7px}p{margin:6px 0 14px}.muted{color:#586983}.eyebrow{text-transform:uppercase;font-size:12px;font-weight:800;letter-spacing:.12em;color:#2255af}.grid{display:grid;grid-template-columns:1.3fr 1fr;gap:22px}.card{background:white;border:1px solid #dde4ef;border-radius:12px;padding:24px;margin-bottom:20px}.blue{background:#1245bb;color:white;border:0;position:relative;overflow:hidden}.blue .muted{color:#dae6ff}.blue .eyebrow{color:#c7dcff}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stat{background:white;border:1px solid #dde4ef;border-radius:10px;padding:18px}.stat strong{display:block;font-size:32px}.row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 0;border-bottom:1px solid #e6ebf3}.row:last-child{border:0}.person{display:flex;align-items:center;gap:12px}.avatar{width:44px;height:44px;flex-shrink:0;border-radius:50%;display:grid;place-items:center;background:#e9f0ff;color:#1647a7;font-weight:750}.tag{display:inline-block;background:#eaf0fc;color:#2452a0;font-size:13px;padding:4px 9px;border-radius:5px}.amber{background:#fff0d4;color:#784d00}.green{background:#e4f4ee;color:#1d654d}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.players{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.players .card{margin:0}.field{display:grid;gap:6px;margin:15px 0}.field label{font-size:14px;font-weight:650}input,select,textarea{border:1px solid #bdcbe0;border-radius:6px;padding:10px;width:100%;background:white;color:#142747}textarea{min-height:85px}select.compact{width:auto;max-width:230px}.pitch{background:#eaf2fc;border:1px solid #9fb8df;display:flex;align-items:center;justify-content:space-around;height:130px;margin:16px 0;border-radius:6px}.pod{display:flex;gap:5px;border:1px dashed #819aca;padding:10px;border-radius:20px}.dot{background:#174cc2;color:white;width:25px;height:25px;display:grid;place-items:center;border-radius:50%;font-size:12px}dialog{border:0;border-radius:14px;width:min(560px,94vw);padding:26px;max-height:90vh;box-shadow:0 20px 90px #001a5555}dialog::backdrop{background:#081c3b88}.dialoghead{display:flex;justify-content:space-between;align-items:center}#notice{position:fixed;bottom:24px;right:24px;background:#082758;color:white;border-radius:8px;padding:12px 20px;display:none;max-width:90vw}a{color:#1648b6}.list{padding-left:22px}.small{font-size:14px}.trainingrow{display:grid;grid-template-columns:65px 1fr auto;gap:15px;align-items:start;padding:18px 0;border-bottom:1px solid #e3eaf4}.time{font-weight:750;color:#1245bb}.empty{padding:25px;text-align:center;color:#586983}@media(max-width:1050px){.players{grid-template-columns:repeat(2,1fr)}main{padding:20px}.shell{grid-template-columns:200px 1fr}.grid{grid-template-columns:1fr}}@media(max-width:700px){.shell{display:block}aside{padding:16px}.brand{font-size:17px}.crest,.asidefoot{display:none}.brand small{display:inline;margin-left:12px}nav{display:flex;overflow:auto;gap:5px;margin:18px 0 0}nav button{white-space:nowrap;padding:9px 12px}main{padding:16px}.topbar{align-items:start}.stats{gap:8px}.stat{padding:12px;font-size:14px}.stat strong{font-size:26px}.players{grid-template-columns:1fr}.heading{align-items:start}h1{font-size:28px}.row{flex-wrap:wrap}.card{padding:18px}.trainingrow{grid-template-columns:55px 1fr}.trainingrow>button{grid-column:2}.compact{max-width:175px!important}}
/* Norths visual identity and supplied photographs. */
.club-logo{display:block;width:100%;height:155px;object-fit:cover;object-position:50% 58%;border-radius:8px;margin-bottom:20px;background:white}.brand small{line-height:1.6}.stat-unit{font-size:18px;color:#627895}.player-card{padding:0;overflow:hidden}.player-portrait{display:block;width:100%;height:300px;object-fit:cover;object-position:50% 38%;background:#07182b}.portrait-placeholder{height:300px;background:linear-gradient(145deg,#092454,#1657bf);color:#dae7ff;display:grid;place-items:center;font-size:62px;font-weight:800;border-bottom:6px solid white;letter-spacing:.08em}.player-copy{padding:20px}.player-copy h2{margin:7px 0;font-size:22px}.player-avatar{width:50px;height:50px;object-fit:cover;border-radius:50%}.team-card,.coaches-card{overflow:hidden;padding:0}.team-card>img{display:block;width:100%;height:235px;object-fit:cover;object-position:center 75%}.photo-copy{padding:22px}.coaches-photo{width:100%;height:250px;object-fit:cover;object-position:center 45%;display:block}.player-home-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:22px;margin-bottom:22px}.captain-card{position:relative;margin:0;min-height:420px;overflow:hidden;border-radius:12px;background:#02060c}.captain-card>img{position:absolute;width:100%;height:100%;object-fit:cover;object-position:50% 55%}.captain-card:after{content:'';position:absolute;inset:40% 0 0;background:linear-gradient(transparent,#020815)}.captain-card figcaption{position:absolute;bottom:24px;left:24px;z-index:1;color:white}.captain-card .eyebrow{color:#accfff}.captain-card h2{font-size:28px;margin:8px 0}.profile-photo{margin:15px 0}.profile-photo .player-portrait{height:250px;border-radius:8px;object-position:50% 35%}.profile-photo .portrait-placeholder{height:100px;font-size:35px}.blue{background:#1048c7}.eyebrow{font-size:13px}.demo{max-width:100%;line-height:1.6}.player-home-grid>.captain-card{margin-bottom:20px}aside{background:#081f49}nav button.active{background:#2055b6;box-shadow:inset 3px 0 #fff}.players .card{transition:box-shadow .15s}.players .card:hover{box-shadow:0 8px 25px #08275814}@media(max-width:700px){.club-logo{width:65px;height:65px;object-fit:cover;margin:0 12px 0 0;float:left}.brand{min-height:65px;display:flex;flex-direction:column;justify-content:center}.brand small{margin:4px 0 0;display:block}.player-home-grid{grid-template-columns:1fr}.captain-card{min-height:380px}.player-portrait,.portrait-placeholder{height:340px}.team-card>img{height:190px}.coaches-photo{height:240px}.stat-unit{font-size:14px}.topbar{flex-wrap:wrap}}
.attendance-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr);gap:20px;align-items:center;padding:14px 0;border-bottom:1px solid #e5eaf2}.attendance-row .player-avatar{width:44px;height:44px;object-fit:cover;border-radius:50%}.attendance-note{margin:8px 0}.date-control{display:flex;align-items:center;gap:16px;margin:18px 0}.date-control input{width:180px}.note{padding:16px;background:#f4f7fc;border-radius:8px;margin:12px 0}.points{font-weight:800;color:#174cc0}main>.actions{margin-bottom:22px}dialog h2{margin-top:24px}dialog .dialoghead h2{margin-top:0}select{max-width:100%}.card form{margin-top:16px}.card h2{margin-top:12px}.card p{overflow-wrap:anywhere}nav{gap:4px}.grid>section{align-self:start}@media(max-width:560px){.attendance-row{grid-template-columns:1fr;gap:8px}.attendance-row .person{gap:10px}.row{flex-wrap:wrap}.actions{flex-wrap:wrap}dialog{width:calc(100% - 24px);padding:20px}.topbar{gap:12px}.date-control{flex-wrap:wrap}}
.one-point-options{border:1px solid #dce3ef;border-radius:8px;padding:14px;margin:20px 0}.one-point-options legend{font-weight:700;padding:0 6px}.one-point-options label{display:flex;align-items:center;gap:10px;padding:9px 0}.one-point-options input{width:18px;height:18px;margin:0}
.photo-field{border:1px solid #dce3ef;border-radius:10px;margin:18px 0;padding:16px}.photo-field legend{font-weight:700}.photo-field img{width:160px;height:190px;object-fit:cover;border-radius:8px;margin-bottom:12px}.photo-field input[type=file]{padding:10px 0}.photo-field [hidden]{display:none}.photo-field #photo-error{color:#934000}

.resource-photo{display:block;width:100%;height:auto;max-height:420px;object-fit:contain;background:#f2f5fa;border-radius:12px;margin:16px 0}
