:root{
  --red:#8d1f24;--red2:#b6383d;--ink:#242424;--muted:#686868;--cream:#f5f0e7;
  --white:#fff;--line:#e7e1d7;--shadow:0 8px 24px rgba(0,0,0,.08);
  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
*{box-sizing:border-box} body{margin:0;background:#faf9f6;color:var(--ink)}
button,input{font:inherit} button{cursor:pointer}
.hidden{display:none!important}.screen{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-card{width:min(440px,100%);background:#fff;border:1px solid var(--line);border-radius:24px;padding:32px;box-shadow:var(--shadow);text-align:center}
.logo{width:220px;height:220px;object-fit:contain;margin:auto auto 10px}
h1,h2,h3,p{margin-top:0}.muted{color:var(--muted)}
form{text-align:left;margin-top:25px}label{display:block;font-weight:650;margin:16px 0}
input{width:100%;padding:14px 15px;border:1px solid #cfc9bf;border-radius:12px;background:#fff;margin-top:7px}
input:focus{outline:3px solid rgba(141,31,36,.16);border-color:var(--red)}
.primary{border:0;background:var(--red);color:#fff;border-radius:12px;padding:14px 18px;font-weight:750}.big{width:100%;font-size:1.05rem;margin-top:8px}
.link-btn{border:0;background:none;color:var(--red);font-weight:650;width:100%;padding:15px}.message{min-height:24px;color:var(--red)}
.topbar{min-height:106px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:10px max(18px,calc((100vw - 1100px)/2));position:sticky;top:0;z-index:4}
.brand{display:flex;align-items:center;gap:10px;font-weight:800}.brand img{width:100px;height:100px;object-fit:contain}.icon-btn{border:0;background:#f3eee6;border-radius:50%;width:42px;height:42px;font-size:20px}
.content{max-width:1100px;margin:auto;padding:28px 18px 90px}.welcome{display:flex;justify-content:space-between;align-items:center;gap:20px}.eyebrow{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--red);font-weight:800}
.member-badge{background:var(--cream);padding:9px 13px;border-radius:20px;font-size:.9rem;font-weight:700}
.search-wrap{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:15px;padding:3px 13px;margin:22px 0}.search-wrap input{border:0;margin:0;outline:0}
.card-grid,.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:15px}
.app-card{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;text-align:left;min-height:145px;box-shadow:0 4px 14px rgba(0,0,0,.04)}
.app-card::after{content:"✠";position:absolute;right:-5px;bottom:-25px;font-size:110px;opacity:.035;color:var(--red);pointer-events:none}
.app-card h3{margin:7px 0}.app-card p{color:var(--muted);font-size:.94rem;line-height:1.45}.card-icon{font-size:28px}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:72px;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:center;z-index:5}
.bottom-nav button{border:0;background:#fff;color:#666;min-width:78px;padding:8px 10px;font-weight:650}.bottom-nav button span{display:block;font-size:.72rem;margin-top:3px}.bottom-nav button.active{color:var(--red)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:10px 0 22px}.stat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.stat strong{display:block;font-size:1.7rem}.stat span{color:var(--muted);font-size:.88rem}
.admin-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px}.admin-card h3{margin:0 0 8px}.admin-card p{color:var(--muted);font-size:.9rem}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.42);display:grid;place-items:center;padding:18px;z-index:20}.modal-card{position:relative;width:min(650px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:22px;padding:26px}.close{position:absolute;right:12px;top:8px;border:0;background:none;font-size:28px}
.notice{padding:14px;border-radius:12px;background:var(--cream);margin:12px 0}.permission{display:flex;justify-content:space-between;align-items:center;padding:13px 0;border-bottom:1px solid var(--line)}
@media(max-width:650px){.brand span{font-size:.9rem}.welcome{align-items:flex-start;flex-direction:column}.content{padding-top:20px}.login-card{padding:25px}.bottom-nav button{min-width:20%;padding-left:3px;padding-right:3px}}

.admin-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.small-btn{background:#fff;border:1px solid #d8d0c6;border-radius:10px;padding:10px 12px;color:#802025;font-weight:650}.small-btn.selected{background:#8d1f24;color:#fff}.admin-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.admin-card{margin-bottom:12px}.admin-card form{margin:0}.admin-card label{margin:9px 0}#adminPanel{padding-bottom:30px}#adminPanel h3{margin:24px 0 10px}

.event-card{width:100%;text-align:left;cursor:pointer;font:inherit;color:inherit}.event-card:hover,.event-card:focus-visible{outline:2px solid #8d1f24}.event-open{display:block;margin-top:12px;color:#8d1f24;font-weight:700}.event-actions{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}.event-actions button{min-width:130px}.event-actions button:disabled{opacity:.5;cursor:not-allowed}

.event-choice{background:#fff;color:#802025;border:2px solid #d8d0c6}.event-choice.selected{background:#8d1f24;color:#fff;border-color:#8d1f24}.event-choice:focus-visible{outline:3px solid #333;outline-offset:3px}

/* Identidade visual — Cruz de Malta original em marca de água discreta */
body{background:#f8f5ef}
#memberView .content,#loginView .login-card{position:relative;isolation:isolate}
#memberView .content::before{content:"";position:fixed;z-index:-1;left:50%;top:50%;transform:translate(-50%,-50%);width:min(74vw,580px);height:min(74vw,580px);background:url("assets/cruz-malta.png") center/contain no-repeat;opacity:.055;pointer-events:none}
.login-card::before{content:"";position:absolute;inset:0;background:url("assets/cruz-malta.png") center/80% no-repeat;opacity:.035;pointer-events:none;z-index:-1}
.app-card,.admin-card,.stat{background:rgba(255,255,255,.95)}
.app-card:focus-visible,.small-btn:focus-visible,.primary:focus-visible{outline:3px solid #a5222a;outline-offset:3px}
.mission-card{border-left:4px solid #a5222a}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

@media(max-width:650px){.logo{width:208px;height:208px}.brand img{width:90px;height:90px}.topbar{min-height:100px}.brand span{max-width:165px;line-height:1.2}}

/* V9 — logótipo legível e sem deformação */
.login-card{width:min(510px,100%)}
.login-card .logo{display:block;width:auto;height:clamp(275px,45vh,355px);max-width:100%;object-fit:contain;margin:0 auto 12px}
.topbar{min-height:174px;padding-top:12px;padding-bottom:12px}
.brand{min-width:0;gap:16px}
.brand img{width:auto;height:150px;max-width:110px;flex-shrink:0;object-fit:contain}
.brand span{font-size:clamp(1.15rem,2.1vw,1.55rem);line-height:1.3;max-width:440px}
@media(max-width:650px){
 .login-card .logo{width:auto;height:clamp(260px,39vh,325px);max-width:100%}
 .topbar{min-height:156px;padding:8px 12px}
 .brand{gap:10px}
 .brand img{width:auto;height:136px;max-width:95px}
 .brand span{font-size:1.02rem;max-width:none;line-height:1.28}
 .icon-btn{flex-shrink:0;width:40px;height:40px}
}
@media(max-width:370px){.brand img{height:118px;max-width:82px}.brand span{font-size:.92rem}.topbar{min-height:138px}}

/* V10 — cabeçalho responsivo, sem ocupar demasiado ecrã no telemóvel */
@media(max-width:650px){
  .topbar{min-height:84px;padding:8px 12px;gap:8px}
  .brand{gap:9px;flex:1;min-width:0}
  .brand img{height:76px;width:76px;max-width:76px;object-fit:contain}
  .brand span{font-size:clamp(.93rem,3.9vw,1.08rem);line-height:1.2;max-width:none;overflow-wrap:normal}
  .icon-btn{width:38px;height:38px;flex-shrink:0}
}
@media(max-width:370px){
  .topbar{min-height:76px;padding:6px 9px}
  .brand img{height:68px;width:68px;max-width:68px}
  .brand span{font-size:.91rem}
}

/* Gestão de quotas */
.admin-card select{width:100%;max-width:100%;padding:12px;border:1px solid #c9c0b9;border-radius:10px;background:#fff;color:#211b1b;margin-top:5px}.admin-card input[type="number"]{width:100%;box-sizing:border-box}

/* V15 — estados de gravação e confirmação visível em computador e telemóvel */
#adminMessage.feedback-success{color:#166534;background:#ecfdf3;border:1px solid #bbf7d0;padding:12px;border-radius:10px;margin:12px 0;font-weight:650}
#adminMessage.feedback-error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;padding:12px;border-radius:10px;margin:12px 0;font-weight:650}
.admin-card button.primary.saving{background:#d7d3ce!important;color:#4b5563!important;cursor:wait;opacity:1}
.admin-card button.primary.saved{background:#dff5e5!important;color:#166534!important;border:1px solid #86c99a!important}
.save-toast{position:fixed;bottom:calc(78px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);z-index:1000;width:max-content;max-width:min(92vw,490px);box-sizing:border-box;padding:13px 18px;border-radius:12px;box-shadow:0 6px 24px #0002;font-weight:650;text-align:center;overflow-wrap:anywhere}
.save-toast-success{background:#eaf9ef;color:#14532d;border:1px solid #86c99a}
.save-toast-error{background:#fff0f0;color:#991b1b;border:1px solid #fecaca}
.save-toast[hidden]{display:none}

/* V16: gestão de quotas simplificada */
.quota-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:15px 0}.quota-totals>div{background:#f7f4ef;border-radius:10px;padding:12px 8px;display:flex;flex-direction:column;gap:6px}.quota-totals span{font-size:.83rem;color:#635b55}.quota-totals strong{font-size:1.08rem}.quota-entry{border-top:1px solid #e5ded8;padding:12px 0}.quota-entry p{margin:5px 0}.quota-state{display:inline-block;margin-left:8px;font-size:.83rem;color:#695047}.quota-actions{display:flex;flex-wrap:wrap;gap:9px}.quota-actions button{flex:1 1 145px;min-height:42px}.quota-inline{margin-top:18px;padding-top:14px;border-top:1px solid #e5ded8}.quota-inline h4{margin-top:0}#quotaMemberSearch{width:100%;margin:10px 0;padding:12px;border:1px solid #c9c0b9;border-radius:10px}@media(max-width:400px){.quota-totals{grid-template-columns:1fr}.quota-totals>div{flex-direction:row;justify-content:space-between}}

/* V17: destacar sempre a opção selecionada, inclusive em telemóvel */
.admin-tabs .small-btn.selected,.quota-actions .small-btn.selected{background:#8d1f24!important;color:#fff!important;border-color:#8d1f24!important;box-shadow:0 2px 6px rgba(80,10,15,.18)}
.admin-tabs .small-btn.selected:hover,.quota-actions .small-btn.selected:hover{background:#75171e!important}
.small-btn:disabled{opacity:.45;cursor:not-allowed}

/* V18: destaque inequívoco do separador ativo */
#adminPanel .admin-tabs button.small-btn.selected,#adminPanel .quota-actions button.small-btn.selected,#adminPanel button.small-btn[aria-pressed="true"]{background-color:#8d1f24!important;color:#fff!important;border:2px solid #8d1f24!important;opacity:1!important;box-shadow:0 2px 6px rgba(80,10,15,.22)!important}
#adminPanel .quota-actions button.small-btn:not(.selected){background:#fff;color:#802025}
.quota-info{padding:12px 14px;border-left:4px solid #8d1f24;background:#faf2ee;border-radius:7px;line-height:1.5}

/* V19: destaque da opção ativa */
#adminPanel .admin-tabs button[aria-pressed="true"],#adminPanel .quota-actions button[aria-pressed="true"]{background:#8d1f24!important;color:#fff!important;border:2px solid #8d1f24!important;opacity:1!important}
#adminPanel .admin-tabs button[aria-pressed="false"],#adminPanel .quota-actions button[aria-pressed="false"]{background:#fff!important;color:#802025!important}
#adminPanel button:focus-visible{outline:3px solid #8d1f24;outline-offset:3px}

/* V20: realce inequívoco da opção ativa na Gestão de Quotas */
#adminPanel .quota-actions button[aria-pressed="true"]{background:#8d1f24!important;background-color:#8d1f24!important;color:#fff!important;border:2px solid #8d1f24!important;box-shadow:0 0 0 2px rgba(141,31,36,.15)!important}
#adminPanel .quota-actions button[aria-pressed="false"]{background:#fff!important;color:#802025!important;border:1px solid #d8d0c6!important}
#adminPanel select.quota-member-active{border:2px solid #8d1f24!important;background-color:#fff8f7!important;color:#8d1f24!important;font-weight:700!important}
#adminPanel select.quota-member-active:focus{outline:2px solid #8d1f24;outline-offset:2px}

.protocol-tools{display:flex;flex-wrap:wrap;gap:9px;margin:15px 0 22px}
.protocol-tools .small-btn.selected{background:#8d1f24!important;color:#fff!important;border-color:#8d1f24!important}
.protocol-tags{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}
.protocol-tag{border:1px solid #d8d0c6;border-radius:20px;padding:7px 12px;background:#faf8f5;color:#802025}
.protocol-entry{border-left:4px solid #8d1f24}
@media(max-width:650px){.protocol-tools{display:grid;grid-template-columns:1fr 1fr}.protocol-tools button:last-child{grid-column:1/-1}}

#accessForm{margin-top:1rem}#accessForm label{display:block;margin:.7rem 0}#accessForm input{width:100%}
