:root{--navy:#062b3d;--navy-2:#0d4054;--teal:#18a99f;--teal-dark:#087a75;--mint:#e6f7f4;--ink:#102a3a;--muted:#6b7e89;--line:#dbe6e9;--bg:#f2f6f7;--white:#ffffff;--shadow:0 18px 46px rgba(7,45,62,.08);--shadow-hover:0 22px 54px rgba(7,45,62,.14)}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink);background:radial-gradient(circle at 82% 5%,rgba(24,169,159,.08),transparent 25rem),var(--bg);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}button{color:inherit}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(500px,1.05fr) minmax(460px,.95fr)}.brand-panel{position:relative;overflow:hidden;background:radial-gradient(circle at 18% 16%,rgba(69,207,194,.18),transparent 22rem),radial-gradient(circle at 84% 80%,rgba(75,160,173,.16),transparent 26rem),linear-gradient(145deg,#073b4d,#042939 72%);color:white;padding:clamp(28px,min(5vw,6vh),72px);display:flex;flex-direction:column;justify-content:space-between}.brand-panel:after{content:"";position:absolute;right:-150px;bottom:-190px;width:470px;height:470px;border:1px solid rgba(255,255,255,.08);border-radius:50%;box-shadow:0 0 0 70px rgba(255,255,255,.025),0 0 0 140px rgba(255,255,255,.018);pointer-events:none}.brand-mark{position:relative;z-index:1;display:flex;align-items:center;gap:15px;font-size:27px;font-weight:850;letter-spacing:.015em}.brand-mark img{width:52px;height:52px;object-fit:cover;border-radius:14px;box-shadow:0 10px 28px rgba(0,0,0,.18)}.brand-mark>span{display:block;line-height:1}.brand-mark small{display:block;margin-top:8px;font-size:11px;letter-spacing:.34em;font-weight:650;color:#9be2dc}.brand-copy{position:relative;z-index:1;max-width:560px}.brand-kicker{display:inline-flex;align-items:center;gap:8px;margin-bottom:22px;color:#9be2dc;font-size:12px;font-weight:800;letter-spacing:.15em;text-transform:uppercase}.brand-kicker:before{content:"";width:28px;height:1px;background:#65d3ca}.brand-copy h1{max-width:500px;font-size:clamp(48px,5.3vw,72px);letter-spacing:-.045em;line-height:.98;margin:0 0 25px}.brand-copy p{max-width:550px;font-size:clamp(17px,1.4vw,21px);line-height:1.65;opacity:.9}.trust-row{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:30px;color:#c5ece8;font-size:13px;font-weight:650}.trust-row span{display:flex;align-items:center;gap:8px}.trust-row span:before{content:"✓";display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:rgba(101,211,202,.16);color:#7ce0d8;font-size:11px}.brand-footer{position:relative;z-index:1;gap:clamp(8px,1.6vh,16px)}.brand-footer,.units-strip{display:flex;flex-direction:column}.units-strip{gap:clamp(6px,1.2vh,12px)}.units-label{display:inline-flex;align-items:center;gap:8px;color:#9be2dc;font-size:11px;font-weight:800;letter-spacing:.18em;text-transform:uppercase}.units-label:before{content:"";width:20px;height:1px;background:#65d3ca}.units-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:clamp(6px,1vw,10px);gap:clamp(6px,1vw,10px)}.unit-photo{position:relative;margin:0;height:clamp(52px,11vh,132px);padding:4px;border-radius:14px;background:linear-gradient(160deg,rgba(255,255,255,.22),rgba(255,255,255,.04));box-shadow:0 16px 30px rgba(2,20,28,.45),0 2px 6px rgba(2,20,28,.35),inset 0 0 0 1px rgba(255,255,255,.28);transition:transform .2s ease,box-shadow .2s ease}.unit-photo:hover{transform:translateY(-2px);box-shadow:0 20px 36px rgba(2,20,28,.5),0 3px 8px rgba(2,20,28,.4),inset 0 0 0 1px rgba(255,255,255,.35)}.unit-photo-frame{position:relative;width:100%;height:100%;overflow:hidden;border-radius:10px;box-shadow:inset 0 0 0 1px rgba(101,211,202,.35)}.unit-photo-frame img{width:100%;height:100%;object-fit:cover;display:block}.unit-photo-frame:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,29,41,0) 38%,rgba(4,29,41,.55) 68%,rgba(3,23,32,.92))}.unit-photo-frame figcaption{position:absolute;left:6px;right:6px;bottom:6px;z-index:1;text-align:center;color:#fff;font-size:11px;font-weight:800;letter-spacing:.02em;text-shadow:0 2px 6px rgba(0,0,0,.45)}.units-collage{display:none;position:absolute;inset:0;z-index:0;grid-template-columns:repeat(5,minmax(0,1fr))}.units-collage span{background-size:cover;background-position:50%}.units-collage:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 16%,rgba(69,207,194,.3),transparent 22rem),radial-gradient(circle at 84% 80%,rgba(75,160,173,.26),transparent 26rem),linear-gradient(160deg,rgba(6,43,61,.9),rgba(3,23,32,.95))}.institutional-footer{position:relative;z-index:1;max-width:520px;color:rgba(255,255,255,.68);font-size:12px;letter-spacing:.02em}.login-panel{position:relative;display:flex;align-items:center;justify-content:center;padding:clamp(28px,5vw,72px);background:linear-gradient(145deg,rgba(255,255,255,.65),rgba(239,246,247,.9))}.card{background:white;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.login-card{width:min(470px,100%);padding:clamp(28px,4vw,42px);border-color:rgba(207,222,226,.9)}.login-card:before{content:"Área segura";display:inline-flex;margin-bottom:20px;padding:6px 10px;border-radius:999px;background:var(--mint);color:var(--teal-dark);font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.login-card h2{margin:0 0 10px;font-size:32px;letter-spacing:-.03em}.login-card p{margin:0 0 28px;color:var(--muted);line-height:1.5}.field{display:grid;grid-gap:8px;gap:8px;margin-bottom:16px}.field label{font-size:14px;font-weight:700}.field input{border:1px solid var(--line);border-radius:12px;padding:15px 16px;outline:none;background:#fbfdfd;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}.field input::placeholder{color:#a7b4ba}.field input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(32,182,174,.12)}.primary{width:100%;border:0;border-radius:12px;padding:15px;background:linear-gradient(100deg,var(--navy),#0a4558);color:white;cursor:pointer;font-weight:800;box-shadow:0 12px 25px rgba(6,43,61,.18);transition:transform .18s ease,box-shadow .18s ease}.primary:hover{transform:translateY(-1px);box-shadow:0 15px 30px rgba(6,43,61,.24)}.primary:disabled{cursor:wait;opacity:.7;transform:none}.error{color:#a52b2b;background:#fff1f1;padding:10px 12px;border-radius:10px;margin-bottom:14px;font-size:14px}.dashboard{min-height:100vh;display:grid;grid-template-columns:278px minmax(0,1fr)}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh;background:radial-gradient(circle at 20% 5%,rgba(49,203,191,.18),transparent 16rem),linear-gradient(165deg,#073448,#041f2d 72%);color:white;padding:34px 22px 24px;box-shadow:12px 0 38px rgba(4,31,45,.08)}.sidebar .brand-mark{font-size:21px;margin:0 12px 42px;line-height:1.15}.sidebar .brand-mark small{margin-top:7px;color:#8edbd5}.portal-brand img{width:44px;height:44px;border-radius:12px}.portal-brand>span{font-size:19px}.sidebar-footer{position:absolute;left:34px;bottom:26px;color:rgba(255,255,255,.48);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.nav{display:grid;grid-gap:7px;gap:7px}.nav button{width:100%;border:0;background:transparent;color:white;text-align:left;cursor:pointer;padding:13px 15px;border-radius:12px;opacity:.82;display:flex;align-items:center;gap:9px;font-weight:650;transition:background .18s ease,opacity .18s ease,transform .18s ease}.nav button>span{width:22px;text-align:center;color:#a7e5df;font-size:17px}.nav button:hover{background:rgba(255,255,255,.08);opacity:1;transform:translateX(2px)}.nav .active{background:linear-gradient(90deg,rgba(24,169,159,.32),rgba(24,169,159,.14));color:#fff;opacity:1;box-shadow:inset 3px 0 #48d1c7}.main{width:100%;max-width:1680px;padding:42px clamp(24px,3vw,52px) 64px;margin:0 auto}.topline{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px}.topline h1{margin:0;font-size:clamp(28px,3vw,38px);letter-spacing:-.035em;line-height:1.12}.topline p{margin:8px 0 0;color:var(--muted);font-size:14px}.page-kicker{display:block;margin-bottom:7px;color:var(--teal-dark);font-size:11px;font-weight:850;letter-spacing:.14em;text-transform:uppercase}.logout{border:1px solid var(--line);background:rgba(255,255,255,.86);padding:10px 16px;border-radius:12px;cursor:pointer;font-weight:700;box-shadow:0 6px 18px rgba(7,45,62,.05)}.logout:hover{border-color:#b8d1d5;background:#fff}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:18px;gap:18px}.panel{padding:25px;min-height:220px;display:flex;flex-direction:column;align-items:flex-start}.panel-button{width:100%;text-align:left;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease}.panel-button:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover)}.panel h3{margin:0 0 16px;font-size:15px;color:var(--muted)}.big{font-size:24px;line-height:1.18;letter-spacing:-.025em;margin:4px 0 10px}.badge,.big{font-weight:800}.badge{display:inline-block;background:var(--mint);color:var(--teal-dark);border:1px solid #ccece8;border-radius:999px;padding:6px 11px;font-size:12px}.muted{color:var(--muted)}.panel .muted{margin-top:auto;line-height:1.5}.progress{width:100%;height:7px;background:#e8eef1;border-radius:99px;overflow:hidden;margin:20px 0 15px}.progress span{display:block;height:100%;width:55%;background:linear-gradient(90deg,var(--teal),#58d1c8);border-radius:99px}.list-card{margin-top:20px;padding:26px}.list-item{padding:15px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:150px 1fr;grid-gap:18px;gap:18px}.list-item:last-child{border-bottom:0}.codeish{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:#60717b}.mini-info{margin-top:14px;color:var(--navy-2);font-size:13px;font-weight:700}.loading-page{min-height:100vh;display:grid;place-content:center;justify-items:center;grid-gap:14px;gap:14px;color:var(--muted)}.loader{width:38px;height:38px;border:4px solid var(--line);border-top-color:var(--teal);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.eyebrow{display:block;color:#07827b;font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;margin-bottom:5px}.page-card{padding:30px}.appointments-page,.treatment-page{display:grid;grid-gap:18px;gap:18px}.treatment-summary{padding:28px 30px;display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(115deg,#fff 55%,#eaf8f6)}.section-title h2,.treatment-summary h2{margin:0;font-size:25px}.badge.large{padding:8px 13px;font-size:13px}.stage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px}.stage-card{padding:26px;position:relative;overflow:hidden}.stage-card:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:linear-gradient(var(--teal),#8cddd7)}.full-stage{grid-column:1/-1}.stage-heading{display:flex;align-items:center;gap:12px;padding-bottom:17px;margin-bottom:18px;border-bottom:1px solid var(--line)}.stage-heading>span{width:38px;height:38px;border-radius:13px;background:var(--mint);color:var(--teal-dark);display:grid;place-items:center;font-weight:900;box-shadow:inset 0 0 0 1px #ccece8}.stage-heading small{color:var(--muted);font-size:10px;letter-spacing:.12em}.stage-heading h3{margin:2px 0 0;font-size:19px}.detail-grid,.profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.detail-field{padding:14px 15px;border:1px solid #e3ebed;border-radius:13px;background:#f9fbfb;min-width:0;transition:border-color .18s ease,background .18s ease}.detail-field:hover{border-color:#bddbdc;background:#fff}.detail-field.wide{grid-column:1/-1}.detail-field span{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}.detail-field strong{display:block;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.45}.section-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.count-badge{min-width:34px;height:34px;padding:0 10px;border-radius:17px;display:grid;place-items:center;background:var(--navy);color:white;font-weight:800}.appointment-list{display:grid;grid-gap:10px;gap:10px}.appointment-card{display:grid;grid-template-columns:58px 1fr auto;align-items:center;grid-gap:17px;gap:17px;border:1px solid var(--line);border-radius:16px;padding:17px;background:#fff;transition:transform .18s ease,border-color .18s ease}.appointment-card:hover{transform:translateX(3px);border-color:#b9d8d8}.appointment-card.past{background:#fafbfb}.date-tile{width:54px;height:58px;border-radius:14px;background:linear-gradient(145deg,var(--mint),#d7f2ee);color:var(--teal-dark);display:flex;flex-direction:column;align-items:center;justify-content:center;text-transform:uppercase}.date-tile strong{font-size:20px;line-height:1}.date-tile span{font-size:11px;font-weight:800;margin-top:4px}.appointment-copy h3{margin:0 0 5px;font-size:16px}.appointment-copy p{margin:2px 0;color:var(--muted);font-size:13px}.status-pill{padding:6px 10px;border-radius:999px;background:var(--mint);color:#087c76;font-size:11px;font-weight:800}.status-pill.past{background:#eef1f2;color:#66747c}.empty-state{color:var(--muted);padding:18px 0}.error-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.primary.compact{width:auto;padding:10px 16px}.module-warning{margin:-10px 0 22px;padding:13px 15px;border:1px solid #f1d28f;border-radius:13px;background:#fff9e9;color:#765817;font-size:13px;line-height:1.5}.placeholder-page{min-height:360px;padding:36px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.placeholder-page h2{margin:12px 0 5px}.placeholder-page p{color:var(--muted);max-width:460px}.placeholder-icon{width:58px;height:58px;border-radius:18px;background:var(--mint);color:#087c76;display:grid;place-items:center;font-size:30px}.privacy-note{margin:22px 0 0;padding-top:18px;color:var(--muted);font-size:13px}.portal-footer,.privacy-note{border-top:1px solid var(--line)}.portal-footer{margin-top:34px;padding-top:20px;color:#86969e;font-size:11px;letter-spacing:.02em;text-align:right}.menu-overlay,.mobile-menu-button,.mobile-menu-close{display:none}.evolution-list{display:grid;grid-gap:12px;gap:12px}.evolution-card{display:grid;grid-template-columns:170px 1fr;grid-gap:24px;gap:24px;padding:18px;border:1px solid var(--line);border-radius:15px;background:#fbfcfc}.evolution-card>div{display:grid;align-content:start;grid-gap:5px;gap:5px}.evolution-card span{color:var(--muted);font-size:11px}.evolution-card p{margin:0;color:#314957;line-height:1.6;white-space:pre-wrap}.odontogram-page{display:grid;grid-gap:18px;gap:18px}.odontogram-intro p{margin:0;color:var(--muted);line-height:1.6}.odontogram-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding-bottom:18px;margin-bottom:8px;border-bottom:1px solid var(--line)}.odontogram-heading h3{margin:0;font-size:22px}.odontogram-meta{display:grid;justify-items:end;grid-gap:5px;gap:5px;color:var(--muted);font-size:12px;text-align:right}.odontogram-meta strong{color:var(--navy-2);font-size:13px}.odontogram-table{overflow:hidden;border:1px solid var(--line);border-radius:15px}.odontogram-row{display:grid;grid-template-columns:1.05fr 1fr 1.35fr .9fr;align-items:center;min-height:58px;border-bottom:1px solid var(--line);background:#fff}.odontogram-row:last-child{border-bottom:0}.odontogram-row>div,.odontogram-row>span{min-width:0;padding:14px 16px;overflow-wrap:anywhere}.odontogram-header{min-height:44px;background:#f4f8f8;color:var(--muted);font-size:11px;font-weight:850;letter-spacing:.05em;text-transform:uppercase}.clinical-status{display:inline-flex;padding:6px 10px;border-radius:999px;font-size:11px;font-weight:850;background:#eef2f3;color:#64747c}.clinical-status.done{background:var(--mint);color:var(--teal-dark)}.clinical-status.pending{background:#fff5de;color:#8a6417}.document-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.document-card{overflow:hidden;border:1px solid var(--line);border-radius:16px;background:#fff}.document-preview{display:grid;width:100%;aspect-ratio:16/9;place-items:center;overflow:hidden;background:#edf3f3}.document-preview img{width:100%;height:100%;object-fit:contain;transition:transform .2s ease}.document-preview:hover img{transform:scale(1.02)}.empty-preview{color:var(--muted);font-size:36px}.document-copy{padding:18px}.document-copy h3{margin:13px 0 7px;font-size:18px}.document-copy p{margin:0;color:#314957;line-height:1.55}.document-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted);font-size:11px}.document-open{display:inline-flex;margin-top:15px;color:var(--teal-dark);font-size:13px;font-weight:800;text-decoration:none}.document-open:hover{text-decoration:underline}@media (max-width:900px){.login-shell{grid-template-columns:1fr}.brand-panel{min-height:430px;padding:34px;gap:42px}.brand-mark{font-size:22px}.brand-mark img{width:46px;height:46px}.brand-copy h1{font-size:46px}.institutional-footer{margin-top:10px}.login-panel{padding:34px 20px 46px}.units-strip{display:none}.units-collage{display:grid}.dashboard{display:block}.mobile-menu-button{display:flex;position:fixed;z-index:25;top:14px;left:14px;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.16);border-radius:12px;padding:10px 13px;background:#073448;color:white;box-shadow:0 10px 28px rgba(4,31,45,.2);font-weight:800;cursor:pointer}.mobile-menu-button span{font-size:18px;line-height:1}.menu-overlay{z-index:28;inset:0;width:100%;height:100%;border:0;background:rgba(2,22,31,.5);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);cursor:pointer}.menu-overlay,.sidebar{display:block;position:fixed}.sidebar{z-index:30;inset:0 auto 0 0;width:min(350px,88vw);height:100vh;padding:30px 20px;border-radius:0 22px 22px 0;transform:translateX(-105%);transition:transform .24s ease;overflow-y:auto}.sidebar.menu-open{transform:translateX(0)}.sidebar .brand-mark{display:flex;margin-right:42px}.mobile-menu-close{display:grid;position:absolute;top:24px;right:18px;width:36px;height:36px;place-items:center;border:1px solid rgba(255,255,255,.12);border-radius:11px;background:rgba(255,255,255,.08);color:white;font-size:25px;cursor:pointer}.sidebar-footer{display:block;position:static;margin:32px 14px 0}.nav{display:grid;grid-gap:7px;gap:7px;overflow:visible}.nav button{width:100%;min-width:0;padding:13px 15px;border-radius:12px;flex-direction:row;justify-content:flex-start;gap:10px;font-size:13px;text-align:left;white-space:normal}.nav button>span{width:22px;font-size:17px}.nav button:hover{transform:translateX(2px)}.nav .active{box-shadow:inset 3px 0 #48d1c7;background:linear-gradient(90deg,rgba(24,169,159,.32),rgba(24,169,159,.14))}.main{padding:82px 18px 30px}.grid3{grid-template-columns:1fr}.panel{min-height:0}.topline{align-items:flex-start}.document-grid,.stage-grid{grid-template-columns:1fr}.full-stage{grid-column:auto}}@media (max-width:580px){.brand-panel{min-height:390px;padding:26px 22px;gap:30px}.brand-mark{font-size:19px;gap:11px}.brand-mark img{width:42px;height:42px;border-radius:11px}.brand-copy h1{font-size:40px;margin-bottom:18px}.brand-copy p{font-size:16px}.brand-kicker{margin-bottom:16px}.trust-row{margin-top:22px;gap:10px 18px}.institutional-footer{font-size:10px}.login-panel{padding:24px 14px 36px}.login-card{padding:26px 22px;border-radius:17px}.main{padding:20px 14px 24px}.topline{margin-bottom:22px}.topline h1{font-size:27px}.logout{padding:9px 12px}.card{border-radius:17px}.page-card,.panel,.stage-card{padding:20px}.treatment-summary{padding:22px}.portal-footer{text-align:center;font-size:10px}.detail-grid,.profile-grid{grid-template-columns:1fr}.detail-field.wide{grid-column:auto}.appointment-card{grid-template-columns:52px 1fr}.evolution-card{grid-template-columns:1fr;gap:10px}.status-pill{grid-column:2;justify-self:start}.treatment-summary{align-items:flex-start;flex-direction:column}.odontogram-heading{flex-direction:column;gap:10px}.odontogram-meta{justify-items:start;text-align:left}.odontogram-table{border:0;border-radius:0;overflow:visible;display:grid;grid-gap:12px;gap:12px}.odontogram-header{display:none}.odontogram-row{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px;padding:17px;border:1px solid var(--line);border-radius:15px;box-shadow:0 8px 24px rgba(7,45,62,.05)}.odontogram-row>div{display:grid;grid-template-columns:120px minmax(0,1fr);grid-gap:10px;gap:10px;align-items:start;padding:0}.odontogram-row>div:before{content:attr(data-label);color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}}