:root{--ciruela:#421A3D;--frambuesa:#C52D62;--coral:#F06449;--petroleo:#126B68;--oro:#E9A63A;--marfil:#FFF8F0;--blanco:#fff;--grafito:#27232A;--sec:#6B5F69;--borde:#E8D5D8;--rosa:#F5E2E9;--petroleo-suave:#E6F3F1}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--marfil);color:var(--grafito);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:16px;line-height:1.55}button,input{font:inherit}a{color:inherit}.portal-header{min-height:78px;padding:14px clamp(20px,5vw,72px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--borde);background:rgba(255,248,240,.96)}.portal-header img{display:block;width:min(220px,48vw);height:auto}.portal-header a:last-child{text-decoration:none;color:var(--ciruela);font-weight:700}.portal-shell{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:clamp(34px,6vw,80px) 0 72px}.portal-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.75fr);gap:clamp(28px,6vw,80px);align-items:start}.eyebrow{margin:0 0 18px;color:var(--frambuesa);font-size:.78rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}.portal-copy h1,.panel-head h1{font-family:Georgia,"Times New Roman",serif;color:var(--ciruela);font-size:clamp(2.5rem,6vw,5.2rem);font-weight:400;line-height:.98;letter-spacing:-.04em;margin:0 0 22px}.portal-copy h1 em{color:var(--frambuesa);font-weight:400}.portal-copy>p:not(.eyebrow){max-width:650px;color:var(--sec);font-size:1.08rem}.benefits{display:grid;gap:14px;margin:34px 0 0;padding:0;list-style:none}.benefits li{display:flex;gap:12px;align-items:flex-start}.benefits b{color:var(--petroleo)}.benefits span:first-child{width:26px;height:26px;flex:0 0 26px;border-radius:50%;display:grid;place-items:center;background:var(--petroleo-suave);color:var(--petroleo);font-weight:900}.auth-card,.panel-card{background:var(--blanco);border:1px solid var(--borde);border-radius:24px;padding:clamp(24px,4vw,40px);box-shadow:0 18px 55px rgba(66,26,61,.08)}.auth-card h2,.panel-card h2{font-family:Georgia,"Times New Roman",serif;color:var(--ciruela);font-size:2rem;font-weight:400;margin:0 0 8px}.muted{color:var(--sec)}.field{display:grid;gap:7px;margin-top:18px}.field label{font-weight:750;color:var(--ciruela)}.field input{width:100%;min-height:50px;border:1px solid var(--borde);border-radius:12px;background:#fff;padding:12px 14px;color:var(--grafito);outline:none}.field input:focus{border-color:var(--frambuesa);box-shadow:0 0 0 3px var(--rosa)}.primary,.secondary{border:0;border-radius:999px;min-height:50px;padding:12px 22px;font-weight:800;cursor:pointer}.primary{width:100%;margin-top:22px;background:var(--frambuesa);color:#fff}.primary:hover{background:#aa2453}.primary:disabled{opacity:.5;cursor:not-allowed}.secondary{background:#fff;color:var(--ciruela);border:1px solid var(--ciruela)}.link-button{border:0;background:transparent;color:var(--frambuesa);font-weight:750;cursor:pointer;padding:14px 0}.message{display:none;margin-top:16px;border-radius:12px;padding:12px 14px;font-size:.94rem}.message.show{display:block}.message.error{background:#fff0ed;color:#8d2c1d;border:1px solid #f7c9c0}.message.ok{background:var(--petroleo-suave);color:#0b5653;border:1px solid #bce1dc}.privacy-note{margin-top:22px;padding-top:18px;border-top:1px solid var(--borde);color:var(--sec);font-size:.88rem}.panel-head{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:30px}.panel-head h1{font-size:clamp(2.3rem,5vw,4.4rem);margin-bottom:8px}.panel-actions{display:flex;gap:10px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:24px}.stat{background:#fff;border:1px solid var(--borde);border-radius:18px;padding:20px}.stat strong{display:block;color:var(--ciruela);font-family:Georgia,"Times New Roman",serif;font-size:2.2rem;font-weight:400}.stat span{color:var(--sec)}.patient-layout{display:grid;grid-template-columns:minmax(260px,.38fr) minmax(0,1fr);gap:20px}.patient-list{display:grid;gap:10px;margin-top:18px}.patient-item{width:100%;text-align:left;border:1px solid var(--borde);background:#fff;border-radius:14px;padding:14px;cursor:pointer}.patient-item.active{background:var(--ciruela);color:#fff;border-color:var(--ciruela)}.patient-item small{display:block;opacity:.76}.empty{border:1px dashed var(--borde);border-radius:16px;padding:32px;text-align:center;color:var(--sec)}.data-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.data-group{border:1px solid var(--borde);border-radius:14px;padding:15px;background:#fff}.data-group h3{margin:0;color:var(--ciruela);font-size:1rem}.data-group p{margin:7px 0 0;color:var(--sec);font-size:.9rem}.sync-box{margin-top:22px;background:var(--petroleo-suave);border:1px solid #bce1dc;border-radius:16px;padding:18px}.sync-box h3{color:var(--petroleo);margin:0 0 6px}.hidden{display:none!important}@media(max-width:820px){.portal-grid,.patient-layout{grid-template-columns:1fr}.portal-header{min-height:68px}.portal-shell{width:min(100% - 24px,680px);padding-top:34px}.portal-copy h1{font-size:clamp(2.55rem,13vw,4.3rem)}.stats{grid-template-columns:1fr}.panel-head{align-items:flex-start;flex-direction:column}.data-grid{grid-template-columns:1fr}.auth-card{border-radius:20px;padding:24px}.portal-header a:last-child{font-size:.9rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.period-panel{display:grid;grid-template-columns:1.15fr 1fr 1fr 1fr;gap:10px;margin:0 0 10px;padding:14px;border:1px solid var(--borde);border-radius:16px;background:var(--marfil)}.period-panel>div,.period-panel label{display:grid;align-content:center;gap:4px;color:var(--sec);font-size:.76rem;font-weight:750}.period-panel strong{color:var(--ciruela);font-size:1rem}.period-panel select,.period-panel input{width:100%;min-height:42px;border:1px solid var(--borde);border-radius:10px;background:#fff;padding:8px 10px;color:var(--grafito)}.period-caption{margin:0 2px 12px;color:var(--sec);font-size:.82rem}@media(max-width:900px){.period-panel{grid-template-columns:1fr 1fr}}@media(max-width:560px){.period-panel{grid-template-columns:1fr}}
.portal-copy h1{line-height:1.04}.portal-copy h1 em{display:block;margin-top:.12em;font-size:.92em;line-height:1.02}
.patient-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.patient-card-head .secondary{flex:0 0 auto}.patient-card-head h2{margin-bottom:0}@media(max-width:560px){.patient-card-head{display:grid}.patient-card-head .secondary{width:100%}}
.patient-card-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.danger{border:1px solid #b9362b;border-radius:999px;min-height:50px;padding:12px 22px;background:#fff;color:#9b2b22;font-weight:800;cursor:pointer}.archive-note{grid-column:1/-1;padding:14px 16px;border-radius:14px;background:#fff2df;color:#714711;border:1px solid #efd19e}.data-grid:has(.patient-overview){display:block}.patient-overview{margin-top:18px}.patient-status{display:grid;grid-template-columns:112px 1fr;gap:22px;align-items:center;padding:22px;border-radius:20px;background:#f8f4f6;border:1px solid var(--borde)}.patient-status.good{background:var(--petroleo-suave);border-color:#bce1dc}.patient-status.progress{background:#fff7e7;border-color:#efd39c}.patient-status.start{background:#fff2ef;border-color:#f4cbc3}.patient-status h3{margin:3px 0 5px;color:var(--ciruela);font:400 1.55rem Georgia,serif}.patient-status p{margin:0;color:var(--sec)}.status-label{color:var(--frambuesa);font-size:.72rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.score-ring{--score:0;width:92px;height:92px;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle at center,#fff 58%,transparent 60%),conic-gradient(var(--petroleo) calc(var(--score)*1%),#eadfe3 0)}.score-ring b{font:700 1.55rem Georgia,serif;color:var(--ciruela)}.score-ring span{font-size:.68rem;color:var(--sec);text-transform:uppercase}.patient-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.patient-metric{border:1px solid var(--borde);border-radius:16px;padding:16px;background:#fff;min-width:0}.metric-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.metric-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--petroleo-suave);color:var(--petroleo);font-weight:900}.metric-value{color:var(--ciruela);font:700 1.12rem Georgia,serif;text-align:right}.patient-metric h3{margin:12px 0 2px;color:var(--grafito);font-size:.9rem}.patient-metric p{margin:0;min-height:38px;color:var(--sec);font-size:.78rem}.metric-track{height:7px;margin-top:11px;overflow:hidden;border-radius:99px;background:#eee4e7}.metric-track i{display:block;height:100%;border-radius:inherit;background:var(--petroleo)}.patient-metric.coral .metric-icon{background:#fff0ed;color:var(--coral)}.patient-metric.coral .metric-track i{background:var(--coral)}.patient-metric.gold .metric-icon{background:#fff6df;color:#9b6913}.patient-metric.gold .metric-track i{background:var(--oro)}.patient-metric.plum .metric-icon{background:var(--rosa);color:var(--ciruela)}.patient-metric.plum .metric-track i{background:var(--ciruela)}.patient-metric.blue .metric-icon{background:#e8f4fa;color:#24769a}.patient-metric.blue .metric-track i{background:#2c8db8}.patient-section{margin-top:12px;border:1px solid var(--borde);border-radius:16px;background:#fff;overflow:hidden}.patient-section summary{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;color:var(--ciruela);font-weight:800;cursor:pointer}.patient-section summary span{min-width:26px;text-align:center;border-radius:99px;background:var(--rosa);color:var(--frambuesa)}.body-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--borde);border-top:1px solid var(--borde)}.body-summary>div{display:grid;gap:3px;padding:16px;background:#fff}.body-summary span,.body-summary small{color:var(--sec);font-size:.75rem}.body-summary b{color:var(--petroleo);font-size:1.15rem}.friendly-empty{padding:20px;border-top:1px solid var(--borde);color:var(--sec)}.clinical-alerts{margin:0;padding:4px 38px 18px;color:var(--sec)}.clinical-alerts li{margin:7px 0}.dashboard-updated{margin:14px 2px 0;color:var(--sec);font-size:.78rem}
.tests-panel{margin-top:24px}.tests-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.tests-head .eyebrow{margin-bottom:8px}.tests-head h2{margin-bottom:4px}.test-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:24px 0}.test-stats article{padding:16px;border:1px solid var(--borde);border-radius:14px;background:var(--marfil)}.test-stats strong{display:block;color:var(--petroleo);font:2rem Georgia,serif}.test-stats span{color:var(--sec);font-size:.9rem}.test-filters{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.test-filters label{display:grid;gap:5px;color:var(--ciruela);font-size:.85rem;font-weight:750}.test-filters select,.test-filters input{min-height:42px;border:1px solid var(--borde);border-radius:10px;background:#fff;padding:8px 12px;color:var(--grafito)}.table-scroll{overflow-x:auto}.tests-table{width:100%;border-collapse:collapse;min-width:720px}.tests-table th,.tests-table td{padding:12px 10px;border-bottom:1px solid var(--borde);text-align:left;vertical-align:top;font-size:.86rem}.tests-table th{color:var(--ciruela)}.tests-table details summary{color:var(--frambuesa);font-weight:750;cursor:pointer}.tests-table pre{max-width:430px;white-space:pre-wrap;word-break:break-word}.test-badge{display:inline-block;border-radius:99px;padding:5px 9px;background:var(--rosa);color:var(--ciruela);font-weight:750}.test-badge.male{background:var(--petroleo-suave);color:var(--petroleo)}@media(max-width:700px){.tests-head{display:grid}.tests-head .secondary{width:100%}.test-stats{grid-template-columns:1fr}.test-filters{display:grid}.test-filters label{width:100%}}
.tests-actions{display:grid;gap:8px;justify-items:stretch}.tests-actions a{color:var(--frambuesa);font-size:.84rem;font-weight:750;text-align:center}
.test-stats.simple{grid-template-columns:repeat(2,minmax(0,1fr))}.test-stats.simple article{display:grid;gap:5px;padding:22px}.test-stats.simple span{color:var(--ciruela);font-weight:800}.test-stats.simple strong{font-size:3rem;line-height:1}.test-stats.simple small{color:var(--sec)}.tests-status{margin:4px 0 0;color:var(--sec);font-size:.9rem}@media(max-width:700px){.test-stats.simple{grid-template-columns:1fr}}
.test-result{color:var(--ciruela);font-weight:800}.test-detail{min-width:190px}.test-detail>summary{list-style:none;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--borde);border-radius:999px;padding:7px 11px;background:#fff}.test-detail>summary::-webkit-details-marker{display:none}.test-detail>summary:before{content:"+";font-size:1.05rem}.test-detail[open]>summary:before{content:"−"}.test-detail-card{width:min(620px,70vw);margin-top:12px;border:1px solid var(--borde);border-radius:16px;background:var(--marfil);padding:16px}.test-summary{margin-bottom:18px;padding:15px;border-radius:13px;background:var(--petroleo-suave);border:1px solid #bce1dc}.test-summary h4,.test-detail-section h4{margin:0 0 10px;color:var(--ciruela);font-size:.95rem}.test-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.test-summary-item{display:grid;gap:2px;padding:9px;border-radius:9px;background:#fff}.test-summary-item span{color:var(--sec);font-size:.75rem}.test-summary-item strong{color:var(--petroleo);font-size:.9rem}.test-detail-section{margin-top:15px}.test-detail-section dl{margin:0;border:1px solid var(--borde);border-radius:12px;overflow:hidden;background:#fff}.test-answer{display:grid;grid-template-columns:minmax(220px,1.35fr) minmax(130px,.65fr);gap:14px;padding:10px 12px;border-bottom:1px solid var(--borde)}.test-answer:last-child{border-bottom:0}.test-answer dt{color:var(--sec)}.test-answer dd{margin:0;color:var(--ciruela);font-weight:750}.test-answer dd::first-letter{text-transform:uppercase}@media(max-width:700px){.test-detail-card{width:78vw}.test-summary-grid{grid-template-columns:1fr}.test-answer{grid-template-columns:1fr;gap:4px}.test-answer dd{padding-left:0}}
.danger{border:1px solid var(--coral);border-radius:999px;min-height:50px;padding:12px 22px;background:#fff;color:#a73524;font-weight:800;cursor:pointer}.danger:hover{background:#fff0ed}.danger:disabled{opacity:.5;cursor:not-allowed}.patient-card-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.archived-block{margin-top:28px;padding-top:24px;border-top:1px solid var(--borde)}.archived-block h3{margin:0;color:var(--ciruela)}.patient-item.archived{opacity:.72;background:#faf7f5}.archive-note{margin-top:16px;padding:13px 15px;border:1px solid var(--borde);border-radius:12px;background:#faf7f5;color:var(--sec)}
@media(max-width:560px){.patient-card-actions{display:grid;width:100%}.patient-card-actions button{width:100%}}
.invite-form{display:grid;grid-template-columns:1fr 1fr minmax(155px,.55fr) auto;gap:10px;margin:18px 0 24px;align-items:end}.invite-form input,.invite-role select{min-height:46px;border:1px solid var(--borde);border-radius:12px;padding:10px 13px;background:#fff;color:var(--grafito)}.invite-role{display:grid;gap:4px}.invite-role span{color:var(--ciruela);font-size:.78rem;font-weight:800}.invite-form .primary{width:auto;min-width:130px;margin:0}.record-details{margin-top:10px;border-top:1px solid var(--borde);padding-top:10px}.record-details summary{cursor:pointer;color:var(--frambuesa);font-weight:750}.record-details pre{white-space:pre-wrap;word-break:break-word;max-height:300px;overflow:auto;background:var(--marfil);border-radius:10px;padding:12px;font-size:.78rem}@media(max-width:980px){.invite-form{grid-template-columns:1fr 1fr}.invite-form .primary{width:100%}}@media(max-width:820px){.invite-form{grid-template-columns:1fr}.invite-form .primary{width:100%}}@media(max-width:720px){.patient-status{grid-template-columns:82px 1fr;padding:17px;gap:14px}.score-ring{width:74px;height:74px}.score-ring b{font-size:1.2rem}.patient-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.body-summary{grid-template-columns:1fr}.patient-metric p{min-height:0}.tests-actions{width:100%}}@media(max-width:430px){.patient-metrics{grid-template-columns:1fr}.patient-status{grid-template-columns:1fr}.score-ring{width:82px;height:82px}}
.patient-search{display:grid;gap:7px;margin:18px 0 4px}.patient-search>label{color:var(--ciruela);font-weight:800;font-size:.88rem}.patient-search>div{display:flex;align-items:center;border:1px solid var(--borde);border-radius:12px;background:#fff;overflow:hidden}.patient-search input{width:100%;min-width:0;min-height:46px;border:0;outline:0;padding:10px 12px;color:var(--grafito)}.patient-search>div:focus-within{border-color:var(--frambuesa);box-shadow:0 0 0 3px var(--rosa)}.patient-search button{border:0;background:transparent;color:var(--frambuesa);font-weight:800;padding:10px 12px;cursor:pointer}.patient-search small{min-height:20px;color:var(--petroleo);font-weight:700}
.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.attention-stat{background:var(--ciruela);border-color:var(--ciruela)}.attention-stat strong,.attention-stat span{color:#fff}.attention-panel{margin-bottom:24px}.attention-head{display:flex;justify-content:space-between;align-items:flex-end;gap:22px}.attention-head h2{margin:0}.attention-head>p{max-width:420px;margin:0;color:var(--sec);font-size:.9rem}.attention-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.attention-item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:11px;align-items:center;width:100%;border:1px solid #efd39c;border-radius:14px;background:#fffaf0;padding:13px;text-align:left;cursor:pointer}.attention-item:hover,.attention-item:focus-visible{border-color:var(--oro);box-shadow:0 0 0 3px #fff0c8;outline:0}.attention-dot{width:10px;height:10px;border-radius:50%;background:var(--coral)}.attention-item strong,.attention-item small{display:block}.attention-item strong{color:var(--ciruela)}.attention-item small{margin-top:3px;color:var(--sec)}.attention-item em{color:var(--frambuesa);font-style:normal;font-weight:800;font-size:.82rem}.attention-empty{display:grid;gap:4px;grid-column:1/-1;padding:17px;border:1px dashed #bce1dc;border-radius:14px;background:var(--petroleo-suave)}.attention-empty strong{color:var(--petroleo)}.attention-empty span{color:var(--sec)}
.trend-section{margin:16px 0;padding:18px;border:1px solid var(--borde);border-radius:18px;background:var(--marfil)}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:14px}.section-heading h3{margin:3px 0 0;color:var(--ciruela);font:400 1.5rem Georgia,serif}.section-heading p{margin:0;color:var(--sec);font-size:.78rem}.trend-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.trend-card{min-width:0;padding:14px;border:1px solid var(--borde);border-radius:14px;background:#fff}.trend-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.trend-head h4{margin:0;color:var(--grafito);font-size:.9rem}.trend-head span{color:var(--ciruela);font:700 1.05rem Georgia,serif}.trend-card svg{display:block;width:100%;height:86px;margin:10px 0 7px;overflow:visible}.trend-card polyline{fill:none;stroke:var(--petroleo);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.trend-card.gold polyline{stroke:var(--oro)}.trend-card.coral polyline{stroke:var(--coral)}.trend-card.plum polyline{stroke:var(--ciruela)}.trend-foot{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;color:var(--sec);font-size:.68rem}.trend-foot strong{text-align:center;color:var(--grafito);font-size:.72rem}.trend-empty{display:grid;place-items:center;min-height:103px;color:var(--sec);font-size:.8rem;text-align:center}
@media(max-width:900px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.attention-list{grid-template-columns:1fr}}@media(max-width:620px){.stats{grid-template-columns:1fr}.attention-head,.section-heading{display:grid;align-items:start}.attention-item{grid-template-columns:auto minmax(0,1fr)}.attention-item em{grid-column:2}.trend-grid{grid-template-columns:1fr}.trend-card svg{height:76px}}
