:root{--portal-blue:#008ba3;--portal-green:#55a546;--portal-ink:#173f43;--portal-muted:#607577;--portal-line:#d6e5e3;--portal-bg:#f3f7f7}
.portal-body{min-height:100vh;color:var(--portal-ink);background:var(--portal-bg);font-family:Muli,Arial,sans-serif}
.portal-header{display:flex;min-height:76px;align-items:center;justify-content:space-between;padding:10px max(20px,calc((100vw - 1240px)/2));color:#fff;background:var(--portal-blue);border-bottom:4px solid var(--portal-green)}
.portal-brand{display:flex;align-items:center;gap:12px;font-family:Poppins,Arial,sans-serif;font-size:1.02rem;font-weight:600}.portal-brand-mark{display:grid;overflow:hidden;width:46px;height:46px;place-items:center;background:#fff;border-radius:6px}.portal-brand-mark img{width:100%;height:100%;object-fit:cover;transform:scale(1.36)}.portal-brand small{display:block;margin-top:2px;color:rgba(255,255,255,.7);font-family:Muli,Arial,sans-serif;font-size:.58rem;letter-spacing:.1em;text-transform:uppercase}
.portal-header>div{display:flex;align-items:center;gap:16px;font-size:.76rem}.button-link{padding:0;color:#fff;background:none;border:0;text-decoration:underline;cursor:pointer}.portal-main{width:min(calc(100% - 36px),1240px);margin:38px auto 70px}
.panel{margin-bottom:24px;padding:30px;background:#fff;border:1px solid var(--portal-line);border-radius:4px;box-shadow:0 8px 26px rgba(32,57,72,.05)}.login-panel{max-width:460px;margin:7vh auto}.panel h1,.dashboard-heading h1{color:var(--portal-blue);font-family:Poppins,Arial,sans-serif;font-size:2rem;line-height:1.15}.panel h2{color:var(--portal-blue);font-family:Poppins,Arial,sans-serif;font-size:1.45rem}.panel>p,.panel-title p,.login-panel>p{margin:6px 0 20px;color:var(--portal-muted);font-size:.8rem}.eyebrow{margin:0 0 7px!important;color:var(--portal-green)!important;font-size:.64rem!important;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.login-panel form{display:grid;gap:16px;margin-top:24px}.panel label{display:grid;gap:6px;color:#3c515f;font-size:.7rem;font-weight:800}.panel input,.panel select,#statusFilter{min-height:44px;padding:8px 11px;color:var(--portal-ink);background:#fff;border:1px solid #bdcbd2;border-radius:3px}.panel input:focus,.panel select:focus{outline:0;border-color:var(--portal-green);box-shadow:0 0 0 3px rgba(27,166,83,.1)}.form-error{min-height:1em;color:#a13f3f;font-size:.75rem}.security-note{margin:20px 0 0!important;padding-top:16px;border-top:1px solid var(--portal-line);font-size:.68rem!important}
.password-control{position:relative;display:block}.password-control input{width:100%;padding-right:66px}.password-control button{position:absolute;top:50%;right:7px;padding:6px 8px;color:var(--portal-blue);background:#f1f6f9;border:0;border-radius:2px;cursor:pointer;font-size:.65rem;font-weight:800;transform:translateY(-50%)}.password-control button:hover{background:#e2eef4}.password-control button:focus-visible{outline:2px solid var(--portal-green);outline-offset:1px}
.dashboard-heading,.panel-title{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:22px}.dashboard-subtitle{margin-top:7px;color:var(--portal-muted);font-size:.8rem}.dashboard-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:0 0 24px}.dashboard-metrics article{padding:21px 22px;background:#fff;border:1px solid var(--portal-line);border-top:4px solid var(--portal-blue);border-radius:3px}.dashboard-metrics article:nth-child(2){border-top-color:#e8a52d}.dashboard-metrics article:nth-child(3){border-top-color:var(--portal-green)}.dashboard-metrics span{display:block;color:var(--portal-muted);font-size:.68rem;font-weight:700}.dashboard-metrics strong{display:block;margin-top:5px;color:var(--portal-blue);font-family:Poppins,Arial,sans-serif;font-size:1.8rem}
.appointments-panel{padding:0;overflow:hidden}.appointments-heading{margin:0;padding:28px 30px 20px}.appointments-heading .eyebrow{margin-bottom:5px!important}.appointments-heading p{max-width:720px;margin-bottom:0}.result-count{flex:none;padding:6px 10px;color:var(--portal-blue);background:#eaf4fa;border-radius:99px;font-size:.68rem;font-weight:800}.appointment-filters{display:grid;grid-template-columns:220px 200px auto;gap:14px;align-items:end;padding:18px 30px;background:#f7f9fa;border-block:1px solid var(--portal-line)}.appointment-filters .btn{min-height:44px;justify-self:start}.appointments{display:grid}.appointment-card{display:grid;grid-template-columns:180px minmax(0,1fr) 190px;gap:24px;padding:24px 30px;border-bottom:1px solid var(--portal-line)}.appointment-card:last-child{border-bottom:0}.appointment-card:hover{background:#fbfcfd}.appointment-time strong{display:block;color:var(--portal-blue);font-family:Poppins,Arial,sans-serif;font-size:.88rem}.appointment-time>span:not(.status-pill){display:block;margin-top:4px;color:var(--portal-muted);font-size:.69rem}.status-pill{display:inline-block;margin-top:10px;padding:4px 8px;border-radius:99px;background:#eaf4fa;font-size:.6rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.status-pending{color:#865e12;background:#fff3d7}.status-confirmed{color:#0c7040;background:#e4f6ec}.status-completed{color:#315d78;background:#e7f1f7}.status-cancelled,.status-declined{color:#904242;background:#fae9e9}
.appointment-detail{min-width:0}.patient-name{color:var(--portal-ink);font-family:Poppins,Arial,sans-serif;font-size:1rem}.appointment-reference{margin-left:8px;color:var(--portal-muted);font-size:.64rem;font-weight:700}.patient-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;margin-top:15px}.patient-field{min-width:0}.patient-field small{display:block;color:#7b8991;font-size:.6rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.patient-field span,.patient-field a{display:block;margin-top:2px;overflow-wrap:anywhere;color:#3f515d;font-size:.76rem}.patient-field a{color:var(--portal-blue);text-decoration:underline}.patient-question{margin-top:16px;padding:13px 15px;background:#f2f7fa;border-left:3px solid var(--portal-blue)}.patient-question small{display:block;color:var(--portal-blue);font-size:.61rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.patient-question p{margin-top:5px;white-space:pre-wrap;color:#40525e;font-size:.76rem;line-height:1.55}.patient-question.empty-question{background:#f7f8f9;border-left-color:#bdc8cd}.patient-question.empty-question p{color:#7c898f;font-style:italic}
.appointment-actions{display:flex;flex-direction:column;align-items:stretch;gap:10px}.appointment-actions label{font-size:.61rem;text-transform:uppercase}.appointment-actions select{width:100%;min-height:40px}.delete-link{align-self:flex-start;color:#a14343;font-size:.67rem}.empty{padding:45px 30px;color:var(--portal-muted);text-align:center}
.doctor-details{display:grid;grid-template-columns:1fr 1fr;gap:16px}.doctor-list{display:grid;gap:8px;margin-top:20px}.doctor-row{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:#f7f9fa;border:1px solid var(--portal-line);border-radius:3px;font-size:.78rem}.week-schedule{display:grid;gap:8px;margin-bottom:18px}.day-row{display:grid;grid-template-columns:120px repeat(3,1fr);gap:12px;align-items:center;padding:10px 12px;background:#f7f9fa;border-radius:3px}.day-toggle{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:8px!important}.day-toggle input{min-height:0}.blocked-label{margin-bottom:18px}.blocked-label small{color:var(--portal-muted);font-weight:400}.portal-notice{position:fixed;z-index:10;right:20px;bottom:20px;max-width:360px;padding:13px 16px;color:#fff;background:var(--portal-blue);border-left:4px solid var(--portal-green);border-radius:3px;box-shadow:0 12px 35px rgba(0,0,0,.2);opacity:0;transform:translateY(15px);transition:.2s}.portal-notice.show{opacity:1;transform:none}
.profile-form-actions{display:flex;align-items:center;gap:12px}.profile-form-actions .btn{min-height:40px;padding:8px 13px}.template-note{margin:-5px 0 18px;padding:10px 12px;color:#6c5b2d;background:#fff8e7;border-left:3px solid #e8a52d;font-size:.7rem}.profile-wide-field{margin-top:16px}.panel textarea{width:100%;padding:11px;color:var(--portal-ink);background:#fff;border:1px solid #bdcbd2;border-radius:3px;resize:vertical}.panel textarea:focus{outline:0;border-color:var(--portal-green);box-shadow:0 0 0 3px rgba(27,166,83,.1)}.photo-profile-row{display:grid;grid-template-columns:1fr 130px;gap:18px;align-items:end;margin-top:16px}.doctor-photo-preview{position:relative;overflow:hidden;width:120px;height:140px;background:#eef2f4;border:1px solid var(--portal-line);border-radius:3px}.doctor-photo-preview img{width:100%;height:100%;object-fit:cover}.doctor-photo-preview span{position:absolute;right:0;bottom:0;left:0;padding:5px;color:#fff;background:rgba(7,52,77,.78);font-size:.55rem;text-align:center}.profile-checkbox{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:9px!important;margin:16px 0 4px}.profile-checkbox input{width:17px;min-height:17px}
.portal-loading{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;padding:20px;background:rgba(9,32,47,.58);backdrop-filter:blur(7px)}.portal-loading[hidden]{display:none}.portal-loading-card{display:flex;width:min(100%,360px);align-items:center;flex-direction:column;padding:32px 30px 29px;color:var(--portal-ink);background:#fff;border:1px solid rgba(255,255,255,.65);border-radius:5px;box-shadow:0 25px 70px rgba(0,0,0,.24);text-align:center}.secure-loader-mark{display:grid;width:52px;height:52px;place-items:center;color:#fff;background:var(--portal-blue);border-radius:4px;box-shadow:inset 0 -4px 0 var(--portal-green);font-family:Poppins,Arial,sans-serif;font-size:.76rem;font-weight:700;letter-spacing:.05em;animation:secure-mark-pulse 1.5s ease-in-out infinite}.portal-loading-card strong{margin-top:17px;color:var(--portal-blue);font-family:Poppins,Arial,sans-serif;font-size:.92rem}.portal-loading-card small{margin-top:5px;color:var(--portal-muted);font-size:.66rem}.secure-loader-bar{position:relative;width:180px;height:3px;margin-top:21px;overflow:hidden;background:#dfe8ed;border-radius:4px}.secure-loader-bar i{position:absolute;top:0;bottom:0;left:0;width:42%;background:linear-gradient(90deg,var(--portal-blue),var(--portal-green));border-radius:4px;animation:secure-progress 1.25s ease-in-out infinite}.login-panel button[disabled]{cursor:wait;opacity:.72}@keyframes secure-mark-pulse{0%,100%{transform:scale(1);box-shadow:inset 0 -4px 0 var(--portal-green),0 0 0 0 rgba(27,166,83,0)}50%{transform:scale(1.035);box-shadow:inset 0 -4px 0 var(--portal-green),0 0 0 7px rgba(27,166,83,.09)}}@keyframes secure-progress{0%{transform:translateX(-110%)}55%{transform:translateX(115%)}100%{transform:translateX(240%)}}@media(prefers-reduced-motion:reduce){.secure-loader-mark,.secure-loader-bar i{animation:none}.secure-loader-bar i{width:100%;opacity:.65}}
@media(max-width:980px){.dashboard-metrics{grid-template-columns:1fr 1fr}.appointment-card{grid-template-columns:150px 1fr}.appointment-actions{grid-column:2}.day-row{grid-template-columns:100px repeat(3,1fr)}}
@media(max-width:700px){.portal-main{width:min(calc(100% - 24px),1240px);margin-top:24px}.panel{padding:20px}.dashboard-heading,.panel-title{align-items:flex-start;flex-direction:column}.appointments-heading{padding:22px 20px}.appointment-filters{grid-template-columns:1fr;padding:16px 20px}.appointment-filters .btn{width:100%}.appointment-card{grid-template-columns:1fr;padding:22px 20px}.appointment-actions{grid-column:auto}.patient-grid,.doctor-details,.day-row,.photo-profile-row{grid-template-columns:1fr}.portal-header #identity{display:none}.profile-form-actions{align-items:flex-start;flex-direction:column}}
@media(max-width:430px){.dashboard-metrics{grid-template-columns:1fr 1fr;gap:8px}.dashboard-metrics article{padding:16px}.dashboard-metrics strong{font-size:1.45rem}.portal-brand{font-size:.86rem}}
@media(hover:hover) and (pointer:fine){.portal-body .btn,.portal-body button,.portal-body select{transition:transform 210ms cubic-bezier(.22,.8,.28,1),box-shadow 210ms,background-color 210ms,border-color 210ms}.portal-body .btn:hover,.portal-body button:hover:not(:disabled){transform:translateY(-2px) scale(1.025);box-shadow:0 9px 20px rgba(7,95,152,.15)}.portal-body select:hover{border-color:var(--portal-blue);box-shadow:0 5px 13px rgba(7,95,152,.09)}}.portal-body .btn:active,.portal-body button:active:not(:disabled){transform:translateY(1px) scale(.97)}@media(prefers-reduced-motion:reduce){.portal-body .btn,.portal-body button,.portal-body select{transition:none!important;transform:none!important}}
