:root{--plum:#542747;--deep:#341e30;--rose:#f5e9ee;--paper:#fbfaf8;--line:#e7dfe3;--ink:#252128;--muted:#6f6570;--good:#216550;--shadow:0 12px 34px rgba(63,35,55,.07)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}a{color:inherit}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Georgia,serif;line-height:1.18}h1{font-size:clamp(2rem,4vw,3.2rem);color:var(--deep);margin:.1em 0 .25em}h2{font-size:1.5rem;color:var(--plum);margin-bottom:1rem}h3{font-size:1rem;color:var(--plum);margin-bottom:.4rem}.skip{position:absolute;left:-9999px;top:8px;background:#fff;padding:10px;z-index:5}.skip:focus{left:8px}.top{height:72px;background:var(--plum);color:#fff;padding:0 max(4vw,20px);display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none}.brand-mark{width:39px;height:39px;border:1px solid #e8c9da;border-radius:12px;display:grid;place-items:center;font:italic 29px Georgia,serif}.brand strong,.brand small{display:block;line-height:1.1}.brand strong{letter-spacing:.15em;font-size:16px}.brand small{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#e4cbd9}.top-right{display:flex;align-items:center;gap:18px;font-size:13px}.top-right form{margin:0}.plain{color:#fff;border:0;background:transparent;text-decoration:underline;cursor:pointer}.demo{background:#fff3dc;color:#6b4a15;font-size:12px;text-align:center;padding:8px 16px;border-bottom:1px solid #ecd9aa}.nav{display:flex;gap:4px;padding:10px max(4vw,20px);background:#fff;border-bottom:1px solid var(--line);overflow-x:auto}.nav a{text-decoration:none;color:var(--plum);font-weight:700;font-size:14px;padding:8px 14px;border-radius:9px;white-space:nowrap}.nav a:hover,.nav a:focus-visible{background:var(--rose)}.container{max-width:1320px;margin:auto;padding:34px 24px 70px}.pagehead{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:28px}.pagehead p{color:var(--muted);margin:0}.eyebrow{text-transform:uppercase;letter-spacing:.13em;color:#986e83!important;font-weight:800;font-size:11px}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:10px;padding:11px 17px;min-height:44px;text-decoration:none;cursor:pointer;font-weight:700;font-size:14px;white-space:nowrap}.button.primary{background:var(--plum);color:#fff}.button.primary:hover{background:#6b345c}.button.secondary{background:#fff;color:var(--plum);border-color:#d8c5cf}.button.secondary:hover{background:var(--rose)}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px;box-shadow:var(--shadow);margin-bottom:20px}.auth{max-width:470px;margin:7vh auto;padding:32px}.auth h1{font-size:2.2rem}.form{margin-top:14px}.field{display:block;margin-bottom:16px}.field>span{display:block;font-weight:700;font-size:13px;margin-bottom:6px}.field input,.field select,.field textarea,.search input,.inline input{width:100%;border:1px solid #cfc3ca;border-radius:9px;background:#fff;color:var(--ink);padding:10px 12px;min-height:44px}.field textarea{resize:vertical}.field input:focus,.field select:focus,.field textarea:focus,.search input:focus{outline:3px solid #dec1d1;outline-offset:1px;border-color:var(--plum)}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.columns{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);gap:20px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.section-head h2{margin:0}.inline{display:flex;align-items:end;gap:8px}.inline label{font-size:12px;font-weight:700}.inline input{display:block}.visit,.patient-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 0;border-bottom:1px solid var(--line);text-decoration:none}.visit:last-child,.patient-row:last-child{border-bottom:0}.visit:hover,.patient-row[href]:hover{background:#fcf8fa}.visit>span:nth-child(2),.patient-row>span:first-child{flex:1;min-width:0}.visit strong,.patient-row strong{display:block}.visit small,.patient-row small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.time{font:700 22px Georgia,serif;color:var(--plum);min-width:57px}.badge{display:inline-block;border-radius:99px;background:var(--rose);color:var(--plum);padding:4px 9px;font-size:11px;font-weight:800;white-space:nowrap}.empty{color:var(--muted);padding:25px;text-align:center;background:#fdfbfc;border:1px dashed #ddd0d8;border-radius:11px}.search{display:flex;gap:8px;margin-bottom:18px}.search input{flex:1}.list{padding-top:6px;padding-bottom:6px}.muted{color:var(--muted);font-size:13px}.preserve{white-space:pre-wrap}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.stats .card{margin:0}.stats small{display:block;color:var(--muted)}.stats strong{display:block;font:700 25px Georgia,serif;color:var(--plum);margin-top:8px}.flash,.error{border-radius:10px;padding:12px 16px;margin-bottom:18px}.flash{color:#184f3f;background:#e6f4ec;border:1px solid #b9ddc8}.error{color:#8a2828;background:#fff0ef;border:1px solid #efc7c4}details{padding:14px 0;border-top:1px solid var(--line)}summary{cursor:pointer;color:var(--plum);font-weight:700}details form{margin-top:16px}.footer{text-align:center;color:var(--muted);font-size:12px;padding:25px;border-top:1px solid var(--line)}
@media(max-width:850px){.columns{grid-template-columns:1fr}.pagehead{align-items:start}.stats{gap:10px}.stats strong{font-size:20px}}
.graph{width:100%;height:auto;max-height:230px;overflow:visible;margin:10px 0 22px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:10px 8px;vertical-align:top}th{color:var(--plum)}
.actions{display:flex;flex-wrap:wrap;gap:8px}.mode-tabs{display:flex;gap:6px;overflow:auto;margin:0 0 16px}.mode-tabs a{text-decoration:none;color:var(--plum);background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 16px;font-weight:700;white-space:nowrap}.mode-tabs a.selected{background:var(--plum);color:#fff}.period{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.period strong{text-align:center;color:var(--deep)}.filters{padding-top:12px;padding-bottom:12px}.calendar-scroll{overflow-x:auto}.calendar{display:grid;grid-template-columns:repeat(7,minmax(112px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);min-width:784px;border-radius:12px;overflow:hidden}.weekday{text-align:center;background:var(--rose);color:var(--plum);font-weight:800;padding:8px}.calendar-day,.calendar-empty{background:#fff;min-height:110px;padding:8px}.day-number{display:inline-grid;place-items:center;width:27px;height:27px;border-radius:8px;color:var(--plum);font-weight:800;text-decoration:none}.day-number:hover{background:var(--rose)}.calendar-item{display:block;border-left:3px solid var(--plum);background:#fbf4f8;padding:4px 6px;margin-top:4px;text-decoration:none;font-size:11px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-item:hover{text-decoration:underline}.weekdays{border:1px solid var(--line);border-radius:10px;padding:12px 15px;margin-bottom:15px}.weekdays legend{font-weight:800;color:var(--plum)}.weekdays label,.checklist label{display:inline-flex;align-items:center;gap:6px;margin:4px 15px 4px 0}.checklist{margin:0 0 15px}
@media(max-width:600px){.container{padding:24px 14px 55px}.card{padding:18px}.pagehead{flex-direction:column;gap:14px}.pagehead .button{width:100%}.grid{grid-template-columns:1fr}.section-head{align-items:start;flex-direction:column}.inline{width:100%}.inline label{flex:1}.top-right span{display:none}.stats{grid-template-columns:1fr}.stats .card{margin:0}.visit{gap:10px}.visit .time{font-size:18px;min-width:48px}.badge{font-size:10px}.search .button{padding-left:10px;padding-right:10px}}
canvas#signature{display:block;width:100%;max-width:600px;height:200px;border:2px solid #b9a9b2;border-radius:10px;touch-action:none;background:#fff;margin:1rem 0}
.editor-row{display:grid;grid-template-columns:2fr 1fr 1fr 2fr;gap:.6rem;border-bottom:1px solid #eee;padding:.8rem 0}
.exercise-pick{padding:1rem 0;border-bottom:1px solid #eee}
.trend-chart{width:100%;max-height:190px}
.chip{display:inline-block;padding:.4rem .6rem;margin:.2rem;border:1px solid #d3c8cf;border-radius:1rem;color:#542747;text-decoration:none}
@media(max-width:700px){.editor-row{grid-template-columns:1fr 1fr}.editor-row .field:first-of-type{grid-column:1/-1}}
.exercise-thumb{display:block;width:min(100%,180px);height:130px;object-fit:contain;border:1px solid var(--line);border-radius:10px;background:#fff;margin:.5rem 0}
.patient-row,.visit,.card{min-width:0;overflow-wrap:anywhere}
.search{flex-wrap:wrap}.search select{border:1px solid #cfc3ca;border-radius:9px;background:#fff;padding:10px 12px;min-height:44px}
@media(max-width:600px){.patient-row{align-items:flex-start;flex-wrap:wrap}.patient-row>.actions{width:100%}.button{white-space:normal;text-align:center}.search input{min-width:170px}.search select{flex:1}}
.mobile-nav{display:none}
@media(max-width:600px){.desktop-nav{display:none}.mobile-nav{display:block;background:#fff;border-bottom:1px solid var(--line);padding:0 14px}.mobile-nav summary{list-style:none;border:0;padding:12px 14px;min-height:48px;display:flex;align-items:center;justify-content:space-between}.mobile-nav summary::-webkit-details-marker{display:none}.mobile-nav summary::after{content:'☰';font-size:20px}.mobile-nav[open] summary::after{content:'×'}.mobile-nav nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:0 0 12px}.mobile-nav a{display:flex;align-items:center;min-height:46px;padding:10px 14px;border-radius:8px;background:var(--rose);text-decoration:none;font-weight:700;font-size:14px;color:var(--plum)}.mobile-nav a:focus-visible{outline:3px solid var(--plum)}}
.top{min-height:82px;height:auto}.brand-symbol{display:block;width:58px;height:46px;overflow:hidden;flex:none;background:#fff;border-radius:9px}.brand-logo{display:block;width:67px;height:67px;max-width:none;object-fit:contain;transform:translate(-4px,-5px)}.field textarea{min-height:150px}.text-expand{margin:-8px 0 16px}.text-dialog{width:min(94vw,900px);height:min(88vh,760px);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow)}.text-dialog::backdrop{background:rgba(25,16,24,.65)}.text-dialog form{height:100%;display:flex;flex-direction:column;gap:12px}.text-dialog textarea{width:100%;flex:1;min-height:150px;resize:none;padding:14px;border:1px solid #cfc3ca;border-radius:9px}.text-dialog .actions{justify-content:flex-end}
@media(max-width:600px){.top{min-height:70px}.brand-symbol{width:46px;height:37px}.brand-logo{width:55px;height:55px;transform:translate(-4px,-4px)}.text-dialog{width:100vw;height:100vh;max-width:none;max-height:none;border-radius:0;margin:0}}
.exercise-pick .field{position:relative}.autocomplete-results{position:absolute;left:0;right:0;top:100%;z-index:20;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);max-height:260px;overflow:auto}.autocomplete-results[hidden]{display:none}.autocomplete-option{display:block;width:100%;text-align:left;background:#fff;border:0;border-bottom:1px solid var(--line);padding:12px 14px;cursor:pointer}.autocomplete-option:hover,.autocomplete-option:focus-visible{background:var(--rose)}.autocomplete-results p{padding:10px 14px;margin:0;color:var(--muted);font-size:13px}.test-pick{border-top:1px solid var(--line)}.test-pick input[type=checkbox]{width:auto;min-height:auto;margin-right:8px}.session-tests{margin-top:24px}
#homework-add-new[hidden]{display:none}
.patient-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:18px;margin-bottom:18px}.patient-filters .field{margin:0;grid-column:auto}.patient-filter-actions{display:flex;align-items:end;gap:8px;grid-column:1/-1}.patient-filter-actions .button{min-height:44px}@media(max-width:800px){.patient-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.patient-filters{grid-template-columns:1fr}.patient-filter-actions .button{flex:1;text-align:center}}
.patient-section>summary{cursor:pointer;color:var(--deep);font-family:Georgia,serif;font-size:1.5rem;font-weight:700;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}.patient-section>summary::-webkit-details-marker{display:none}.patient-section>summary::after{content:'+';font-family:Arial,sans-serif;font-size:1.5rem;color:var(--plum)}.patient-section[open]>summary::after{content:'−'}.patient-section>summary small{margin-left:auto;border-radius:999px;background:var(--rose);color:var(--plum);font-family:Arial,sans-serif;font-size:.85rem;padding:3px 10px}.patient-section[open]>summary{margin-bottom:16px}.patient-section>.actions{margin-bottom:12px}.exercise-view-links{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.exercise-filter-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:10px;margin-bottom:16px}.exercise-filter-form .field{margin:0}.exercise-view-manager{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}.exercise-view-manager>summary,.saved-exercise-view>summary{cursor:pointer;color:var(--plum);font-weight:700;padding:8px 0}.saved-exercise-view{border-top:1px solid var(--line);padding:8px 0}.saved-exercise-view form{margin:8px 0}.patient-row[hidden]{display:none}@media(max-width:600px){.exercise-filter-form{grid-template-columns:1fr}.exercise-filter-form .button{width:100%}.patient-section>summary{font-size:1.2rem}}
.document-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 20px}.document-steps span{display:flex;align-items:center;gap:9px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--plum);font-weight:700;font-size:13px}.document-steps b{display:grid;place-items:center;flex:none;width:27px;height:27px;border-radius:50%;background:var(--plum);color:#fff}.document-compose details{margin:12px 0 20px}.document-body{max-width:82ch;line-height:1.7}.document-compose .field textarea{min-height:230px}@media(max-width:600px){.document-steps{gap:5px}.document-steps span{display:block;padding:8px;font-size:11px;text-align:center}.document-steps b{margin:0 auto 5px}.document-compose .button,.document-compose .field{width:100%}}
.document-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fffafc}.document-fields h3,.document-fields>p{grid-column:1/-1;margin:0}.document-fields .field{margin:0}.document-fields textarea{min-height:92px;resize:vertical}.card>details>summary,.form>details>summary{cursor:pointer;color:var(--plum);font-weight:700;padding:12px 0}.card>details>.form{margin-top:14px}#firmar canvas#signature{max-width:100%;border-color:var(--plum)}@media(max-width:650px){.document-fields{grid-template-columns:1fr;padding:14px}#firmar .actions>*{flex:1}}
.document-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0}.document-choice{border:1px solid var(--line);border-radius:14px;padding:20px;background:#fffafc;display:flex;flex-direction:column;align-items:flex-start}.document-choice strong{font-size:1.1rem;color:var(--plum)}.document-choice p{margin:8px 0 18px}.document-choice form{margin-top:auto}.patient-section .actions form{margin:0}@media(max-width:650px){.document-choices{grid-template-columns:1fr}.document-choice{padding:16px}}
.brand-symbol{width:72px;height:58px}.brand-logo{width:87px;height:87px;transform:translate(-8px,-7px)}@media(max-width:600px){.brand-symbol{width:54px;height:44px}.brand-logo{width:67px;height:67px;transform:translate(-6px,-5px)}}
.mfa-secret{padding:12px;border:1px solid var(--line);border-radius:9px;overflow-wrap:anywhere;letter-spacing:.1em;background:#fff7fb}.mfa-secret code{font-size:1.1rem}
.app-shell{display:grid;grid-template-columns:238px minmax(0,1fr);min-height:calc(100vh - 126px)}.app-shell.sidebar-collapsed{grid-template-columns:68px minmax(0,1fr)}.app-content{display:flex;min-width:0;flex-direction:column}.app-content>.container{width:100%;flex:1}.app-sidebar{position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;background:#fff;border-right:1px solid var(--line);padding:14px 10px;z-index:30}.sidebar-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:42px;padding:0 8px 10px;color:var(--muted);font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.sidebar-toggle{display:grid;place-items:center;width:36px;height:36px;flex:none;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--plum);font-size:27px;line-height:1;cursor:pointer}.sidebar-toggle:hover,.sidebar-toggle:focus-visible,.mobile-menu-toggle:hover,.mobile-menu-toggle:focus-visible{background:var(--rose);outline-color:var(--plum)}.side-group{padding:10px 0;border-top:1px solid var(--line)}.side-group-title{padding:5px 12px 8px;color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.side-nav a{display:flex;align-items:center;gap:12px;min-height:46px;margin:2px 0;padding:9px 12px;border-radius:10px;color:var(--plum);font-size:14px;font-weight:700;text-decoration:none}.side-nav a svg{width:21px;height:21px;flex:none}.side-nav a:hover,.side-nav a:focus-visible{background:var(--rose)}.side-nav a.active{background:var(--rose);box-shadow:inset 3px 0 0 var(--plum)}.side-nav a:focus-visible{outline:2px solid var(--plum);outline-offset:1px}.sidebar-collapsed .sidebar-heading{justify-content:center;padding-left:0;padding-right:0}.sidebar-collapsed .sidebar-heading>span,.sidebar-collapsed .side-group-title,.sidebar-collapsed .side-label{display:none}.sidebar-collapsed .side-nav a{justify-content:center;padding:10px}.sidebar-scrim,.mobile-menu-toggle{display:none}
@media(max-width:800px){.app-shell,.app-shell.sidebar-collapsed{display:block}.app-sidebar{position:fixed;top:0;left:0;width:min(290px,calc(100vw - 44px));height:100dvh;max-height:none;transform:translateX(-105%);transition:transform .2s ease;box-shadow:12px 0 32px rgba(35,20,31,.14);padding:16px 12px}.sidebar-mobile-open .app-sidebar{transform:translateX(0)}.sidebar-collapsed .sidebar-heading{justify-content:space-between;padding:0 8px 10px}.sidebar-collapsed .sidebar-heading>span,.sidebar-collapsed .side-group-title,.sidebar-collapsed .side-label{display:block}.sidebar-collapsed .side-nav a{justify-content:flex-start;padding:9px 12px}.sidebar-mobile-open .sidebar-scrim{display:block;position:fixed;inset:0;background:rgba(25,16,24,.5);z-index:25}.mobile-menu-toggle{display:grid;place-items:center;width:42px;height:42px;flex:none;border:1px solid rgba(255,255,255,.45);border-radius:9px;background:transparent;color:#fff;font-size:24px;line-height:1;cursor:pointer}.top-right{gap:12px}.app-content>.container{max-width:100%}}
@media(prefers-reduced-motion:reduce){.app-sidebar{transition:none}}
.patient-tabs{display:flex;gap:6px;overflow-x:auto;white-space:nowrap;margin:0 0 22px;padding:4px 2px 10px;border-bottom:1px solid var(--line);scrollbar-width:thin}.patient-tabs a{display:inline-flex;align-items:center;min-height:44px;padding:9px 14px;border-radius:10px;text-decoration:none;color:var(--plum);font-weight:700}.patient-tabs a:hover,.patient-tabs a:focus-visible{background:var(--rose)}.patient-tabs a.selected{background:var(--plum);color:#fff}.patient-panels .columns{display:block}.patient-panels .columns>div{display:contents}.patient-panels [hidden]{display:none!important}.patient-panels .patient-section[open]>summary::after{display:none}.patient-panels .patient-section[open]>summary{pointer-events:none}.patient-panels .patient-row>.actions{flex-shrink:0}@media(max-width:650px){.patient-panels .patient-row{align-items:flex-start;flex-direction:column}.patient-panels .patient-row>.actions{width:100%}.patient-panels .patient-row>.actions .button{flex:1}.patient-tabs{margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px}}
.exercise-filter-form{grid-template-columns:minmax(0,1fr);align-items:start}.exercise-tag-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:12px 0 18px}.tag-group{min-width:0;border:1px solid var(--line);border-radius:10px;padding:10px 12px}.tag-group legend{padding:0 5px;color:var(--plum);font-weight:700}.tag-options{display:flex;flex-wrap:wrap;gap:7px}.tag-option{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:99px;background:#fffafc;padding:5px 10px;font-size:13px;cursor:pointer}.tag-option input{accent-color:var(--plum)}.exercise-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:16px}.exercise-card>span{min-width:0}.exercise-card .exercise-thumb{max-width:170px;max-height:120px;object-fit:contain;margin:8px 0}.library-assign{margin:12px 0 18px;padding-top:12px;border-top:1px solid var(--line)}.library-assign>.grid{max-width:520px}.selected-exercises .exercise-pick{border:1px solid var(--line);border-radius:12px;padding:15px;margin:12px 0;background:#fffafc}#homework-copy-text{min-height:160px}@media(max-width:650px){.exercise-card{grid-template-columns:1fr}.exercise-card>.button{justify-self:start}.exercise-tag-groups{grid-template-columns:1fr}}
