*{box-sizing:border-box}:root{--navy: #0b2447;--navy-light: #19376d;--accent: #4fc3f7;--green: #2eb872;--red: #e53e3e;--bg: #f4f6fa;--border: #dde3ec;--text: #1c2536;--muted: #6b7688}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--navy)}.auth-card{background:#fff;border-radius:12px;padding:40px;width:380px;box-shadow:0 20px 60px #0000004d}.auth-logo{font-size:30px;font-weight:800;text-align:center;margin:0 0 4px;color:var(--navy)}.auth-logo span{color:var(--accent)}.auth-sub{text-align:center;color:var(--muted);font-size:13px;margin:0 0 24px}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:5px}.field input,.field select{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:7px;font-size:14px;background:#fff}.field input:focus,.field select:focus{outline:2px solid var(--accent);border-color:transparent}.field input[type=radio],.field input[type=checkbox],input[type=radio],input[type=checkbox]{width:auto;accent-color:var(--navy-light)}.btn{display:inline-block;border:none;border-radius:7px;padding:10px 18px;font-size:14px;font-weight:600;cursor:pointer;background:#e8ecf3;color:var(--text)}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:var(--green);color:#fff}.btn-navy{background:var(--navy-light);color:#fff}.btn-block{width:100%}.btn-sm{padding:6px 10px;font-size:12.5px}.error-box{background:#fdecec;color:var(--red);border:1px solid #f5c2c2;border-radius:7px;padding:10px 12px;font-size:13px;margin-bottom:14px}.success-box{background:#e8f8ef;color:#1d7a4b;border:1px solid #b7e4cc;border-radius:7px;padding:10px 12px;font-size:13px;margin-bottom:14px}.app{display:flex;min-height:100vh}.sidebar{width:210px;background:var(--navy);color:#fff;flex-shrink:0;display:flex;flex-direction:column}.sidebar-logo{font-size:20px;font-weight:800;padding:18px 16px;letter-spacing:.5px}.sidebar-logo span{color:var(--accent)}.sidebar nav{flex:1}.nav-item{display:block;padding:11px 16px;color:#cdd8ea;text-decoration:none;font-size:13.5px;border-left:3px solid transparent}.nav-item.active{background:var(--navy-light);color:#fff;border-left-color:var(--accent)}.nav-item.disabled{opacity:.45;cursor:default}.nav-item.disabled small{font-size:10px;opacity:.8}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{background:#fff;border-bottom:1px solid var(--border);padding:10px 24px;display:flex;justify-content:flex-end;align-items:center;gap:14px}.topbar .who{font-size:13.5px}.topbar .who b{display:block}.topbar .who small{color:var(--muted)}.content{padding:24px}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.page-head h1{margin:0;font-size:22px}.card{background:#fff;border:1px solid var(--border);border-radius:10px;overflow:hidden}table.grid{width:100%;border-collapse:collapse;font-size:13.5px}table.grid th{text-align:left;background:#f0f3f8;padding:10px 14px;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}table.grid td{padding:10px 14px;border-top:1px solid var(--border);vertical-align:middle}.badge{display:inline-block;border-radius:20px;padding:3px 10px;font-size:12px;font-weight:600}.badge-green{background:#e8f8ef;color:#1d7a4b}.badge-gray{background:#eef1f6;color:var(--muted)}.badge-orange{background:#fff3e0;color:#b26a00}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a14288c;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:#fff;border-radius:12px;width:440px;max-width:calc(100vw - 32px);padding:24px;max-height:90vh;overflow:auto}.modal h2{margin:0 0 16px;font-size:18px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.link-box{background:#f0f6ff;border:1px solid #c9defb;border-radius:7px;padding:10px;font-size:12px;word-break:break-all;margin-top:6px}.mini-month{background:#fff;border:1px solid var(--border);border-radius:10px;padding:12px 12px 8px}.mini-month-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-weight:700;color:var(--navy);font-size:13.5px;text-transform:capitalize}.mini-month-head button{border:none;background:none;color:#2f80c3;font-size:17px;cursor:pointer;padding:0 8px;line-height:1}.mini-month-head button:hover{color:var(--navy)}.mini-month-grid{display:grid;grid-template-columns:repeat(7,1fr);row-gap:2px}.mini-month-dow{text-align:center;font-size:11px;font-weight:700;color:#2f80c3;padding:3px 0 5px}.mini-month-day{border:none;background:none;font-size:12px;color:var(--text);padding:0;height:26px;border-radius:6px;cursor:pointer;font-family:inherit}.mini-month-day:hover{background:#eaf3fb}.mini-month-day.other{color:#c2cad6}.mini-month-day.today{font-weight:800;color:#2f80c3}.mini-month-day.sel{background:#2f80c3;color:#fff;font-weight:700}.modal-subtitle{margin:-8px 0 14px;color:var(--muted);font-size:13.5px;text-transform:capitalize}.option-cards{display:flex;flex-direction:column;gap:8px}.option-card{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:9px;padding:10px 12px;cursor:pointer;transition:border-color .12s,background .12s}.option-card:hover{border-color:#9fc5e8}.option-card.selected{border-color:#2f80c3;background:#f0f7ff}.option-card input{margin:0}.option-icon{font-size:20px}.option-text{display:flex;flex-direction:column;flex:1;min-width:0}.option-link{border:none;background:none;color:#2f80c3;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;padding:4px 6px;border-radius:6px}.option-link:hover{background:#e3effa}.vac-add{margin-bottom:14px}.vac-list{display:flex;flex-direction:column;gap:8px;max-height:300px;overflow-y:auto}.vac-row{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:9px;padding:9px 12px}.vac-icon{font-size:18px}.vac-dates{flex:1;display:flex;flex-direction:column;font-size:13.5px}.vac-dates small{color:var(--muted);font-size:12px}.vac-empty{color:var(--muted);font-size:13px}.modal-wide{width:620px}.form-section{font-size:12px;text-transform:uppercase;letter-spacing:.5px;font-weight:700;color:var(--muted);margin:16px 0 10px;padding-bottom:4px;border-bottom:1px solid var(--border)}.form-section:first-of-type{margin-top:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:12px}.patients-search{display:flex;align-items:center;gap:12px;margin-bottom:14px}.patients-search input{flex:1;max-width:440px;padding:10px 14px;border:1px solid var(--border);border-radius:8px;font-size:14px}.patients-search input:focus{outline:2px solid var(--accent);border-color:transparent}.patients-count{color:var(--muted);font-size:13px}.row-click{cursor:pointer}.row-click:hover td{background:#f4f8fd}.chip-tag{display:inline-block;background:#e9f2fc;color:#2361a0;border-radius:20px;padding:2px 9px;font-size:11.5px;font-weight:600;margin-right:4px}.chip-colored{color:#fff}.tag-palette{display:flex;gap:6px;flex-wrap:wrap}.tag-swatch{width:22px;height:22px;border-radius:6px;border:2px solid transparent;cursor:pointer;padding:0}.tag-swatch.selected{outline:2px solid var(--navy);outline-offset:1px}.tag-add-form{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.tag-add-form input{padding:8px 12px;border:1px solid var(--border);border-radius:7px;font-size:13.5px;width:260px}.tag-edit-input{padding:7px 10px;border:1px solid var(--border);border-radius:7px;font-size:13.5px}.tagpicker{position:relative}.tagpicker-box{min-height:40px;border:1px solid var(--border);border-radius:7px;padding:5px 8px;display:flex;flex-wrap:wrap;align-items:center;gap:5px;cursor:pointer;background:#fff}.tagpicker-box:hover{border-color:#9fc5e8}.tagpicker-placeholder{color:#a7b0bf;font-size:13px;padding:2px 4px}.tp-chip{display:inline-flex;align-items:center;gap:6px;color:#fff;border-radius:16px;padding:3px 6px 3px 11px;font-size:12px;font-weight:600}.tp-chip button{border:none;background:#ffffff4d;color:#fff;border-radius:50%;width:16px;height:16px;line-height:1;cursor:pointer;font-size:11px;padding:0}.tp-chip button:hover{background:#00000040}.tagpicker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60}.tagpicker-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 10px 30px #00000026;z-index:61;max-height:220px;overflow-y:auto}.tagpicker-dropdown button{display:flex;width:100%;align-items:center;gap:9px;border:none;background:none;padding:9px 12px;cursor:pointer;font-size:13px;text-align:left}.tagpicker-dropdown button:hover{background:#f0f6ff}.tp-dot{width:12px;height:12px;border-radius:4px;flex-shrink:0}.tagpicker-empty{padding:10px 12px;font-size:12.5px;color:var(--muted)}.tag-hint{font-size:12.5px;color:var(--muted);margin:4px 0 0}.tag-hint a{color:#2f80c3}.perm-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px}.perm-group{margin-bottom:4px}.perm-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:7px;font-size:13.5px;cursor:pointer}.perm-row:hover{background:#f4f8fd}.perm-row.changed{background:#fff7e8}.perm-changed-badge{margin-left:auto;font-size:11px;font-weight:700;color:#b26a00;background:#ffe9c7;border-radius:12px;padding:2px 8px}.tab-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#f0a03c;margin-left:6px;vertical-align:middle}.pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px;font-size:13.5px;color:var(--muted)}.back-link{font-size:12.5px;color:#2f80c3;text-decoration:none;font-weight:600}.page-head h1 .pat-age{font-weight:400;color:var(--muted);font-size:17px;margin-left:6px}.pat-tags{margin-top:4px}.pat-columns{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start}@media(max-width:1000px){.pat-columns{grid-template-columns:1fr}}.pat-card{padding:18px}.pat-card h3{margin:0 0 12px;font-size:15px}.pat-visits{padding:18px 0 0}.pat-visits h3{padding:0 18px}.pat-row{display:flex;padding:6px 0;border-bottom:1px solid #f0f3f8;font-size:13.5px}.pat-row:last-child{border-bottom:none}.pat-label{width:130px;flex-shrink:0;color:var(--muted)}.pat-value{font-weight:500;word-break:break-word}.option-text b{font-size:13.5px}.option-text small{color:var(--muted);font-size:12px}.option-extra{margin-top:12px;padding:12px;background:#f6f9fd;border:1px solid var(--border);border-radius:9px}.option-extra>label{display:block;font-size:12.5px;font-weight:600;margin-bottom:6px}.time-range{display:flex;align-items:center;gap:8px}.time-range input{padding:7px 10px;border:1px solid var(--border);border-radius:7px;font-size:13.5px}.cal-wrap{display:flex;gap:16px;height:calc(100vh - 108px)}.cal-side{width:230px;flex-shrink:0;overflow-y:auto}.cal-side-section{background:#fff;border:1px solid var(--border);border-radius:10px;padding:12px;margin-top:12px}.cal-side-title{font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700;margin-bottom:8px}.cal-side-section select{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:7px;font-size:13.5px}.cal-spec-quick{display:flex;gap:16px;padding-bottom:8px;margin-bottom:6px;border-bottom:1px solid var(--border);font-size:13.5px;font-weight:600}.cal-spec-quick label{cursor:pointer}.cal-spec-row{position:relative;padding:5px 0;font-size:13.5px}.cal-spec-row label{cursor:pointer}.cal-spec-sub{font-size:11.5px;color:var(--muted);margin-left:22px}.cal-spec-grafik{position:absolute;right:0;top:6px;border:none;background:none;color:var(--accent);font-size:11.5px;cursor:pointer;padding:0}.cal-empty-note{font-size:12.5px;color:var(--muted)}.cal-main{flex:1;min-width:0;display:flex;flex-direction:column}.cal-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:10px;flex-wrap:wrap}.cal-toolbar-left,.cal-toolbar-right{display:flex;align-items:center;gap:8px}.cal-date-label{font-weight:700;margin-left:8px;text-transform:capitalize}.view-switch{display:flex;border:1px solid var(--border);border-radius:7px;overflow:hidden}.view-switch button{border:none;background:#fff;padding:7px 14px;font-size:13px;cursor:pointer}.view-switch button.active{background:var(--navy-light);color:#fff}.cal-headers{display:flex;background:#eaf3fb;border:1px solid var(--border);border-bottom:none;border-radius:10px 10px 0 0;overflow:hidden}.cal-gutter-head{width:52px;flex-shrink:0;background:#fff}.cal-col-head{flex:1;min-width:0;text-align:center;padding:9px 4px;border-left:1px solid #d8e6f3;position:relative;font-size:13px;background:#eaf3fb}.cal-col-head:first-of-type{border-left:none}.cal-col-head b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--navy)}.cal-col-head small{display:block;color:var(--muted);font-size:11.5px}.cal-col-head .cal-hours{color:var(--navy-light);font-weight:600}.cal-day-cfg{position:absolute;top:6px;right:6px;border:none;background:none;cursor:pointer;font-size:13px;color:var(--muted)}.cal-day-cfg:hover{color:var(--navy)}.cal-grid{flex:1;overflow-y:auto;background:#fff;border:1px solid var(--border);border-radius:0 0 10px 10px}.cal-grid-inner{display:flex;position:relative;min-height:100%}.cal-gutter{width:52px;flex-shrink:0;position:relative}.cal-gutter-label{position:absolute;right:6px;transform:translateY(-50%);font-size:11px;color:var(--muted)}.cal-gutter-label.first{transform:none;padding-top:2px}.cal-col{flex:1;min-width:0;position:relative;border-left:1px solid var(--border);background:#f0f2f6;cursor:pointer}.cal-line{position:absolute;left:0;right:0;border-top:1px solid #e4e9f1;pointer-events:none}.cal-line-hour{border-top-color:#cfd8e5}.cal-hover-band{position:absolute;left:0;right:0;background:#2f80c317;border-top:1px solid rgba(47,128,195,.45);pointer-events:none;z-index:2}.cal-hover-time{position:absolute;top:0;transform:translateY(-100%);background:#2f80c3;color:#fff;font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:4px 4px 4px 0;pointer-events:none;white-space:nowrap}.cal-workhours{position:absolute;left:0;right:0;background:#fff;pointer-events:none}.cal-dayoff{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#a7b0bf;font-size:12.5px;pointer-events:none}.cal-visit{position:absolute;left:3px;right:3px;border-radius:5px;padding:1px 6px;font-size:11.5px;color:#fff;overflow:hidden;cursor:pointer;line-height:1.25;box-shadow:0 1px 2px #00000026}.cal-visit-time{font-weight:700}.cal-visit-svc{opacity:.85}.status-unconfirmed{background:#e69b2d}.status-confirmed{background:#2eb872}.status-completed{background:#8a94a6}.status-cancelled{background:var(--red)}.badge.status-unconfirmed,.badge.status-confirmed,.badge.status-completed,.badge.status-cancelled{color:#fff}.visit-patient-box{background:#f4f7fc;border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:13.5px;margin-bottom:14px}.visit-status-row{margin-top:8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.btn-danger{background:#fdecec;color:var(--red)}.tabs{display:flex;gap:6px;margin-bottom:8px}.tab{border:1px solid var(--border);background:#fff;border-radius:7px;padding:5px 12px;font-size:12.5px;cursor:pointer}.tab.active{background:var(--navy-light);color:#fff;border-color:var(--navy-light)}.search-results{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:7px;box-shadow:0 8px 24px #0000001f;z-index:10;max-height:220px;overflow-y:auto}.search-results button{display:block;width:100%;text-align:left;border:none;background:none;padding:8px 12px;font-size:13px;cursor:pointer}.search-results button:hover{background:#f0f6ff}.patient-chip{background:#e8f8ef;border:1px solid #b7e4cc;border-radius:7px;padding:8px 12px;font-size:13.5px;position:relative}.chip-x{position:absolute;right:8px;top:6px;border:none;background:none;font-size:16px;cursor:pointer;color:var(--muted)}.new-patient-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.new-patient-grid input{padding:8px 10px;border:1px solid var(--border);border-radius:7px;font-size:13.5px}.time-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px}.grafik-table{width:100%;border-collapse:collapse}.grafik-table td{padding:5px 4px}.grafik-day{display:flex;gap:8px;align-items:center;font-size:13.5px}.grafik-table input[type=time]{padding:6px 8px;border:1px solid var(--border);border-radius:6px}
