:root{--navy:#0d3856;--blue:#155f8d;--red:#bd1e32;--bg:#f3f7fa;--surface:#fff;--soft:#eaf2f7;--line:#d8e3ea;--muted:#6f8493;--text:#092b3d;--shadow:0 12px 34px rgba(16,58,82,.07)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:"Segoe UI",Arial,sans-serif;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{border:0;cursor:pointer}.container{width:min(1180px,calc(100% - 34px));margin:auto}.public-header{height:78px;display:flex;align-items:center;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:11px}.brand img{width:45px;height:45px;border-radius:12px;object-fit:contain;background:#fff}.brand b,.brand small{display:block}.brand b{font-size:17px}.brand small{font-size:11px;color:var(--muted)}.public-header nav{margin-left:auto;display:flex;align-items:center;gap:22px;font-weight:600}.btn{display:inline-flex;min-height:40px;align-items:center;justify-content:center;border:1px solid #cfdae2;border-radius:10px;background:#f7fafc;padding:0 16px;font-weight:650}.btn.primary{border-color:var(--blue);background:var(--blue);color:#fff}.full-btn{width:100%}.home{padding:52px 0}.hero{display:grid;grid-template-columns:1.3fr .7fr;gap:70px;align-items:center;min-height:330px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.13em;color:var(--blue)}h1,h2,p{margin-top:0}.hero h1{margin:13px 0;font-size:54px;line-height:1.04;font-weight:400;letter-spacing:-.04em}.hero p{max-width:560px;color:var(--muted);font-size:16px}.hero-art{display:grid;place-items:center;min-height:270px;border-radius:38px;background:linear-gradient(145deg,#dceaf3,#fff);box-shadow:var(--shadow)}.hero-art span{display:grid;width:88px;height:88px;place-items:center;border-radius:28px;background:var(--red);color:#fff;font-size:48px}.hero-art b,.hero-art small{display:block}.hero-art b{font-size:20px}.hero-art small{color:var(--muted)}.access-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:35px}.access-card,.card{border:1px solid transparent;border-radius:17px;background:var(--surface);box-shadow:var(--shadow);transition:.18s}.access-card{min-height:220px;padding:24px}.access-card:hover,.card:hover{border-color:#b9d0dd;transform:translateY(-2px)}.access-card>span{font-size:30px}.access-card h2{margin:18px 0 8px;font-size:16px}.access-card p{font-size:12px;color:var(--muted)}.access-card>b{color:var(--blue)}.center-heading{text-align:center;padding:38px 0 28px}.center-heading h1{margin:10px 0 4px;font-size:38px;font-weight:400;letter-spacing:-.035em}.center-heading p{color:var(--muted)}.steps{display:flex;max-width:540px;margin:22px auto 0;align-items:center;gap:10px;font-size:11px}.steps span{height:1px;flex:1;background:#cbd9e2}.booking-grid{display:grid;grid-template-columns:1fr 300px;gap:15px;align-items:start}.form-stack{display:grid;gap:13px}.step-card{display:grid;grid-template-columns:34px 1fr;gap:2px 10px;padding:20px}.step-card h2{margin:0;font-size:15px}.step-card p{margin:2px 0 15px;font-size:11px;color:var(--muted)}.step-number{grid-row:span 1;display:grid;width:28px;height:28px;place-items:center;border-radius:9px;background:var(--soft);color:var(--blue);font-weight:800}.full{grid-column:1/-1}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:11px}label{display:block;font-size:11px;font-weight:700}label input,label select,label textarea{display:block;width:100%;min-height:39px;margin-top:5px;border:1px solid var(--line);border-radius:9px;background:#f6f9fb;padding:8px 11px;outline:0}label input:focus,label select:focus{border-color:#4b92bb;box-shadow:0 0 0 3px #dceef8}.field-title{display:block;margin-bottom:7px;font-size:11px}.hours{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.hours button{min-height:38px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:11px}.hours button:hover,.hours button.selected{border-color:var(--blue);background:var(--blue);color:#fff}.hours button.busy{background:#f1f3f5;color:#98a4ad}.hours button.blocked{background:#fff1d5;color:#8c6200}.empty{grid-column:1/-1;border:1px dashed #c9d9e2;border-radius:10px;background:#f9fbfc;padding:16px;text-align:center;color:var(--muted);font-size:11px}.summary{position:sticky;top:15px;padding:20px}.summary h2{font-size:15px}.summary>div{border-radius:11px;background:var(--soft);padding:13px}.summary small,.summary b{display:block}.summary small{color:var(--muted);font-size:10px}.summary>p{margin:15px 0}.summary .full-btn{margin:17px 0 10px}.summary button:disabled{background:#91afc2;border-color:#91afc2;cursor:not-allowed}.success-page,.login-page{min-height:100vh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 10% 10%,#fff1f3,transparent 34%),var(--bg)}.success-card,.login-card{width:min(560px,100%);border-radius:26px;background:#fff;padding:38px;box-shadow:var(--shadow);text-align:center}.check{display:grid;width:74px;height:74px;margin:auto;place-items:center;border-radius:50%;background:var(--soft);color:var(--blue);font-size:34px}.pill{display:inline-block;margin:18px 0;border-radius:99px;background:var(--blue);padding:4px 12px;color:#fff;font-size:10px}.success-card h1{font-size:31px;font-weight:400}.success-card>p{color:var(--muted)}.code-box{margin:26px 0 20px;border:1px dashed #86b1ca;border-radius:15px;padding:20px}.code-box small,.code-box b{display:block}.code-box small{letter-spacing:.15em;color:var(--muted)}.code-box b{font-size:31px;letter-spacing:.12em;color:var(--blue)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.detail-grid div{border-radius:12px;background:#f2f6f7;padding:13px;text-align:left}.detail-grid small,.detail-grid b{display:block}.actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:20px}.login-page{align-content:start}.login-brand{margin:10px auto 20px}.login-card{max-width:465px}.lock{display:grid;width:54px;height:54px;place-items:center;border-radius:15px;background:var(--red);color:#fff;font-size:24px}.login-card h1{margin-top:15px;font-size:16px}.login-card>p{color:var(--muted)}.login-card label{text-align:left;margin-top:18px}.password-box{position:relative}.password-box input{padding-right:45px}.password-box button{position:absolute;right:8px;top:8px;background:transparent}.login-card>a,.login-card>small{display:block;margin-top:15px;color:var(--muted)}.form-error{border-radius:10px;background:#fff0f2;padding:10px;color:#aa2435}.toast{position:fixed;z-index:999;right:20px;top:20px;border-radius:12px;background:#176b58;padding:12px 18px;color:#fff;box-shadow:var(--shadow)}.toast.error{background:#b72b3d}.self-page{padding-bottom:50px}.dni-form{max-width:560px;margin:auto;padding:25px}.dni-form .btn{width:100%;margin-top:12px}.empty-state{text-align:center;padding:35px}.patient-card{display:flex;align-items:center;gap:13px;padding:18px}.patient-card>span{display:grid;width:43px;height:43px;place-items:center;border-radius:12px;background:var(--soft)}.patient-card>div{flex:1}.patient-card small,.patient-card b{display:block}.patient-card p{margin:2px 0;color:var(--muted);font-size:11px}.tabs{margin:14px 0}.appointment-card{margin-bottom:13px;padding:22px}.appointment-card header{display:flex;justify-content:space-between}.appointment-card h2{font-size:16px;margin:0}.appointment-card header p{font-size:11px;color:var(--muted)}.status{height:max-content;border-radius:99px;background:var(--soft);padding:6px 10px;font-size:10px}.appointment-info{display:grid;grid-template-columns:1fr 1fr}.appointment-info p{font-size:12px}.reason,.notice{border-radius:10px;padding:12px}.reason{background:#f2f6f7}.notice{margin-bottom:12px;background:#fff3d8;color:#7d5900}.danger-link{margin-top:12px;background:transparent;color:#bd3344}.sidebar{position:fixed;inset:0 auto 0 0;width:212px;background:#103a5b;color:#fff;padding:15px 11px}.sidebar .brand small{color:#c7deec}.sidebar nav{display:grid;gap:5px;margin-top:30px}.sidebar nav a{border-radius:9px;padding:11px 12px;font-size:12px}.sidebar nav a:hover,.sidebar nav a.active{background:#205f89}.sidebar-user{position:absolute;bottom:18px;left:13px;right:13px;border-top:1px solid #ffffff24;padding-top:13px}.sidebar-user b,.sidebar-user small{display:block}.sidebar-user small{color:#c7deec}.sidebar-user a{position:absolute;right:0;top:13px}.panel-top{height:70px;margin-left:212px;display:flex;align-items:center;gap:15px;border-bottom:1px solid var(--line);background:#fff;padding:0 38px}.panel-top>a:first-of-type{margin-left:auto}.panel-content{max-width:1200px;margin-left:212px;padding:32px 38px}.dash-heading span{font-size:10px;font-weight:800;letter-spacing:.15em;color:var(--blue)}.dash-heading h1{margin:4px 0;font-size:30px;font-weight:400}.dash-heading p{color:var(--muted)}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.kpis section{display:flex;align-items:center;gap:12px;min-height:115px;border-radius:16px;background:#fff;padding:18px;box-shadow:var(--shadow)}.kpis section>span{display:grid;width:48px;height:48px;place-items:center;border-radius:13px;background:var(--soft);font-size:21px}.kpis small,.kpis b,.kpis p{display:block}.kpis b{font-size:23px}.kpis p{margin:0;color:var(--muted);font-size:10px}.dashboard-cols{display:grid;grid-template-columns:2.2fr .9fr;gap:14px;margin-top:14px}.dashboard-cols>.card,.team-card,.table-wrap,.chart-card{padding:20px}.section-title{display:flex;justify-content:space-between}.section-title h2,.card>h2{font-size:15px}.section-title p{color:var(--muted);font-size:11px}.today-row{display:flex;align-items:center;gap:12px;border-left:2px solid var(--blue);margin-top:18px;padding-left:10px}.today-row>b small,.today-row>div small{display:block;color:var(--muted);font-size:10px}.today-row>span{display:grid;width:38px;height:38px;place-items:center;border-radius:11px;background:var(--soft)}.today-row>div{flex:1}.today-row em{border-radius:99px;background:var(--soft);padding:5px 9px;font-size:10px}.next-box{border-radius:16px;background:#113f61;color:#fff;padding:22px}.next-box h2{font-size:38px;margin:22px 0}.team-card{margin-top:14px}.team-card>div:last-child,.record-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.team-card article,.record-grid article{position:relative;display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:10px}.team-card article>span,.record-grid article>span{display:grid;width:38px;height:38px;place-items:center;border-radius:10px;background:var(--soft);font-size:10px}.team-card small,.record-grid small{display:block;color:var(--muted);font-size:10px}.team-card i{position:absolute;right:9px;top:9px;width:7px;height:7px;border-radius:50%;background:#21b39b}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid #e4ebef;padding:12px;text-align:left;font-size:11px}th{color:var(--muted)}td select{border:1px solid var(--line);border-radius:8px;padding:6px}.patient-list>article{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:13px}.patient-list>article>div{flex:1}.patient-list small{display:block;color:var(--muted)}.chart-card{margin-top:14px}.bar{display:grid;grid-template-columns:170px 1fr 25px;align-items:center;gap:9px;margin:13px 0}.bar i{height:26px;border-radius:0 8px 8px 0;background:var(--blue)}.profile-card{display:flex;align-items:center;gap:15px;padding:20px}.profile-card>span{display:grid;width:60px;height:60px;place-items:center;border-radius:13px;background:var(--soft);font-weight:800}.profile-card>div{flex:1}.profile-card h1{margin:3px 0;font-size:23px;font-weight:400}.profile-card small{font-weight:800;color:var(--blue)}.profile-card aside{display:grid;width:110px;height:80px;place-items:center;border-radius:13px;background:var(--soft)}.profile-card aside b,.profile-card aside small{display:block;text-align:center}.professional-page>.card:nth-child(2){margin-top:14px;padding:20px}.pro-appointment{display:flex;align-items:center;gap:25px;padding:18px 5px;border-bottom:1px solid var(--line)}.pro-appointment>b small,.pro-appointment>div small{display:block;color:var(--muted);font-size:10px}.pro-appointment>div{flex:1}.professional-tools{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:14px;margin-top:14px}.professional-tools>.card{padding:20px}.professional-tools>.card p{font-size:11px;color:var(--muted)}.professional-tools .btn{margin-top:12px}
@media(max-width:950px){.access-grid{grid-template-columns:1fr 1fr}.booking-grid{grid-template-columns:1fr}.summary{position:static}.sidebar{position:static;width:auto}.sidebar nav{display:flex;flex-wrap:wrap}.sidebar-user{position:static;margin-top:15px}.panel-top,.panel-content{margin-left:0}.kpis{grid-template-columns:1fr 1fr}.dashboard-cols{grid-template-columns:1fr}.team-card>div:last-child,.record-grid{grid-template-columns:1fr 1fr}.professional-tools{grid-template-columns:1fr}}
@media(max-width:620px){body{font-size:13px}.public-header nav{gap:9px}.public-header nav>a:not(.btn){display:none}.hero{grid-template-columns:1fr}.hero h1{font-size:39px}.hero-art{display:none}.access-grid,.two-cols,.detail-grid,.appointment-info,.kpis,.team-card>div:last-child,.record-grid{grid-template-columns:1fr}.center-heading h1{font-size:29px}.hours{grid-template-columns:repeat(3,1fr)}.panel-top{padding:0 15px}.panel-top>span{display:none}.panel-content{padding:22px 15px}.panel-top .btn{padding:0 9px}.bar{grid-template-columns:100px 1fr 20px}}
.agenda-heading,.config-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:26px}.agenda-heading span,.config-heading span{font-size:11px;font-weight:800;letter-spacing:.16em;color:var(--blue)}.agenda-heading h1,.config-heading h1{margin:5px 0;font-size:34px;font-weight:400}.agenda-heading p,.config-heading p{color:var(--muted)}.config-heading em{border-radius:99px;background:#edf6fb;padding:9px 16px;color:var(--blue)}.agenda-filters{display:grid;grid-template-columns:1fr 240px auto;align-items:end;gap:16px;margin-bottom:18px}.agenda-filters>label,.patient-search{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:11px;background:#fff;padding:0 15px}.agenda-filters input,.patient-search input{width:100%;height:48px;border:0;outline:0}.agenda-filters>div small{display:block}.agenda-filters>div input{width:100%;height:48px;border:1px solid var(--line);border-radius:11px;padding:0 13px;background:#fff}.agenda-filters em{margin-bottom:8px;border-radius:99px;background:#eaf2f7;padding:8px 13px}.specialty-card{margin-bottom:14px;overflow:hidden;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow)}.specialty-card summary{display:flex;align-items:center;gap:14px;background:#f6f9fb;padding:16px 21px;cursor:pointer;list-style:none}.specialty-card summary>span,.professional-name>span{display:grid;width:54px;height:54px;place-items:center;border-radius:14px;background:#e5f1fa;color:var(--blue);font-weight:800}.specialty-card summary>div{flex:1}.specialty-card summary small,.professional-name small{display:block;color:var(--muted);font-size:10px}.specialty-card summary em{border-radius:99px;background:#eaf2f7;padding:7px 11px}.professional-schedule{padding:18px 20px}.professional-name{display:flex;align-items:center;gap:12px;margin-bottom:12px}.professional-name>span{width:46px;height:46px}.schedule-scroll{display:flex;gap:8px;overflow-x:auto;padding-bottom:12px}.schedule-scroll button{min-width:110px;border:1px dashed #cfdee7;border-radius:12px;background:#f7fafc;padding:12px;text-align:left}.schedule-scroll b,.schedule-scroll span,.schedule-scroll small{display:block}.schedule-scroll span{margin-top:8px;color:var(--blue);font-weight:700}.schedule-scroll small{color:var(--muted)}.schedule-scroll button.busy{background:#fff0f2;color:#b92d3f}.schedule-scroll button.blocked{background:#fff4d9;color:#866100}.patient-search{max-width:650px;margin-bottom:17px}.patient-directory{padding:18px 28px}.patient-directory details{border-bottom:1px solid var(--line)}.patient-directory summary{display:flex;align-items:center;gap:17px;padding:17px 2px;cursor:pointer;list-style:none}.patient-directory summary>span{display:grid;width:52px;height:52px;place-items:center;border-radius:13px;background:var(--soft)}.patient-directory summary>div{flex:1}.patient-directory summary small{display:block;color:var(--muted)}.patient-directory summary em{border-radius:99px;background:var(--soft);padding:8px 13px}.report-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.report-kpis section{display:flex;align-items:center;gap:13px;border:1px solid var(--line);border-radius:16px;background:#fff;padding:18px}.report-kpis section>span{display:grid;width:48px;height:48px;place-items:center;border-radius:13px;background:var(--soft)}.report-kpis small,.report-kpis b,.report-kpis p{display:block}.report-kpis b{font-size:17px}.report-kpis p{margin:3px 0;color:var(--muted);font-size:10px}.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.report-grid>.card{min-height:320px;padding:24px}.horizontal-bar{display:grid;grid-template-columns:115px 1fr 20px;align-items:center;gap:8px;margin:15px 0}.horizontal-bar i{width:var(--w);height:34px;background:#21668f}.vertical-bars{display:flex;height:220px;align-items:flex-end;gap:10px;border-bottom:1px solid var(--line)}.vertical-bars>div{display:flex;height:100%;flex:1;flex-direction:column;justify-content:flex-end;text-align:center}.vertical-bars i{height:var(--h);min-height:2px;border-radius:8px 8px 0 0;background:#d11f36}.vertical-bars.blue i{background:#21668f}.status-bar p{display:flex;justify-content:space-between;margin:15px 0 5px}.status-bar>i{display:block;width:100%;height:9px;border-radius:99px;background:linear-gradient(to right,#1971a6 var(--w),#e7edf1 var(--w))}.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.config-card,.access-card-admin{padding:26px}.config-card header,.access-card-admin>header,.appointment-dialog>header{display:flex;align-items:center;gap:15px;margin-bottom:18px}.config-card header>span,.access-card-admin>header>span,.appointment-dialog>header>span{display:grid;width:54px;height:54px;place-items:center;border-radius:14px;background:#e5f1fa;font-size:23px}.config-card header h2,.access-card-admin header h2,.appointment-dialog header h2{margin:0}.config-card header p,.access-card-admin header p,.appointment-dialog header p{margin:3px 0;color:var(--muted)}.config-card>.btn{margin-top:14px}.access-card-admin{margin-top:18px}.access-form{display:grid;grid-template-columns:1.2fr .9fr .9fr auto;align-items:end;gap:14px}.access-list{margin-top:20px;border-top:1px solid var(--line)}.access-list article{display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding:14px}.access-list article>span{display:grid;width:44px;height:44px;place-items:center;border-radius:12px;background:var(--soft)}.access-list article>div{flex:1}.access-list small{display:block;color:var(--muted)}.state{border-radius:10px;background:var(--soft);padding:8px 12px;color:var(--blue)}.admin-modal{position:fixed;inset:0;z-index:1000;display:none;place-items:center;background:rgba(7,31,45,.58);padding:18px}.admin-modal.open{display:grid}.appointment-dialog{position:relative;width:min(680px,100%);max-height:94vh;overflow:auto;border-radius:17px;background:#fff;padding:24px;box-shadow:0 28px 80px #0005}.modal-x{position:absolute;right:17px;top:12px;background:transparent;font-size:25px}.appointment-dialog textarea{min-height:65px}.appointment-dialog footer{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.appointment-dialog button:disabled{opacity:.55;cursor:not-allowed}@media(max-width:900px){.report-kpis{grid-template-columns:1fr 1fr}.config-grid,.report-grid{grid-template-columns:1fr}.access-form{grid-template-columns:1fr 1fr}.agenda-filters{grid-template-columns:1fr}}@media(max-width:620px){.report-kpis,.access-form{grid-template-columns:1fr}.agenda-heading,.config-heading{align-items:flex-start;gap:15px}.agenda-heading h1,.config-heading h1{font-size:27px}}
