.pp-root{--pp-bg:var(--color-page-bg,#faf7f1);--pp-panel:var(--color-container-bg,#fff);--pp-panel-2:#f5efe3;--pp-ink:var(--color-text,#1f1b15);--pp-ink-2:#3e362a;--pp-muted:#8a8070;--pp-line:#1f1b151a;--pp-line-2:#1f1b150f;--pp-accent:var(--color-primary,#9a6b3a);--pp-accent-soft:color-mix(in srgb, var(--pp-accent) 12%, transparent);--pp-success:#5e8c5e;--pp-warn:#c97a3b;--pp-danger:#b84a3a;--pp-radius:12px;--pp-radius-lg:18px;--pp-font-ui:var(--font-body,"Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);--pp-font-display:var(--font-heading,"Newsreader", Georgia, serif);--pp-sans-weight:500;--pp-display-weight:400;--pp-chip-radius:999px;background:var(--pp-bg);min-height:100vh;color:var(--pp-ink);font-family:var(--pp-font-ui);-webkit-font-smoothing:antialiased;line-height:1.5}.pp-root a{color:inherit;text-decoration:none}.pp-root button{cursor:pointer;font-family:inherit}.pp-root input,.pp-root select,.pp-root textarea{font-family:inherit;font-size:inherit}.pp-top{background:var(--pp-panel);border-bottom:1px solid var(--pp-line);z-index:10;justify-content:space-between;align-items:center;padding:18px 32px;display:flex;position:sticky;top:0}.pp-brand{font-family:var(--pp-font-display);font-size:22px;font-weight:var(--pp-display-weight);letter-spacing:-.01em;color:var(--pp-ink)}.pp-top-right{align-items:center;gap:14px;display:flex}.pp-top-back{color:var(--pp-muted);border:1px solid var(--pp-line);white-space:nowrap;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;line-height:1;transition:all .15s;display:inline-flex}.pp-top-back svg{flex-shrink:0;width:12px;height:12px}.pp-top-back:hover{color:var(--pp-ink);border-color:var(--pp-ink)}.pp-top-avatar{background:var(--pp-accent-soft);width:36px;height:36px;color:var(--pp-accent);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:inline-flex}.pp-shell{grid-template-columns:260px 1fr;align-items:start;gap:24px;max-width:1360px;margin:0 auto;padding:24px 32px 80px;display:grid}.pp-side{background:var(--pp-panel);border-radius:var(--pp-radius-lg);border:1px solid var(--pp-line);padding:20px;position:sticky;top:92px}.pp-side-user{border-bottom:1px solid var(--pp-line);align-items:center;gap:12px;margin-bottom:16px;padding-bottom:18px;display:flex}.pp-side-avatar{background:var(--pp-accent-soft);width:44px;height:44px;color:var(--pp-accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;font-weight:600;display:inline-flex}.pp-side-user-k{color:var(--pp-muted);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.pp-side-user-v{color:var(--pp-ink);margin-top:2px;font-size:14.5px;font-weight:500}.pp-nav{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.pp-nav a,.pp-nav button{width:100%;color:var(--pp-ink-2);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:12px;padding:11px 14px;font-size:14px;transition:background .12s;display:flex}.pp-nav a:hover,.pp-nav button:hover{background:var(--pp-line-2);color:var(--pp-ink)}.pp-nav a.active,.pp-nav button.active{background:var(--pp-panel-2);color:var(--pp-ink);font-weight:500}.pp-nav svg{color:currentColor;opacity:.8;flex-shrink:0;width:18px;height:18px}.pp-main{flex-direction:column;gap:20px;min-width:0;display:flex}.pp-ph{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.pp-ph-t{font-family:var(--pp-font-display);font-size:32px;font-weight:var(--pp-display-weight);letter-spacing:-.01em;color:var(--pp-ink);margin:0 0 6px;line-height:1.1}.pp-ph-s{color:var(--pp-muted);margin:0;font-size:14px}.pp-btn{height:42px;font-size:14px;font-weight:var(--pp-sans-weight);cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:0 18px;text-decoration:none;transition:all .15s;display:inline-flex}.pp-btn-primary{background:var(--pp-accent);color:#fff}.pp-btn-primary:hover{opacity:.88}.pp-btn-ghost{background:var(--pp-panel);color:var(--pp-ink);border-color:var(--pp-line)}.pp-btn-ghost:hover{border-color:var(--pp-ink)}.pp-btn-sm{height:34px;padding:0 14px;font-size:13px}.pp-btn svg{flex-shrink:0;width:14px;height:14px}.pp-card{background:var(--pp-panel);border:1px solid var(--pp-line);border-radius:var(--pp-radius-lg);padding:22px 24px}.pp-card-pad-lg{padding:28px}.pp-tabs{background:var(--pp-panel);border:1px solid var(--pp-line);border-radius:999px;gap:2px;padding:4px;display:inline-flex}.pp-tabs button{color:var(--pp-muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:8px 18px;font-size:13.5px}.pp-tabs button.active{background:var(--pp-accent);color:#fff}.pp-empty{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:48px 32px;display:flex}.pp-empty-icon{background:var(--pp-panel-2);width:56px;height:56px;color:var(--pp-muted);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.pp-empty h3{font-family:var(--pp-font-display);font-size:22px;font-weight:var(--pp-display-weight);margin:0}.pp-empty p{color:var(--pp-muted);max-width:38ch;margin:0;font-size:14px}.pp-appts{flex-direction:column;gap:12px;display:flex}.pp-appt{background:var(--pp-panel);border:1px solid var(--pp-line);border-radius:var(--pp-radius-lg);grid-template-columns:80px 1fr auto;align-items:center;gap:22px;padding:20px 22px;display:grid}.pp-appt-date{border-right:1px solid var(--pp-line);flex-direction:column;align-items:flex-start;padding-right:20px;display:flex}.pp-appt-mon{letter-spacing:.1em;text-transform:uppercase;color:var(--pp-muted);font-size:11px;font-weight:600}.pp-appt-day{font-family:var(--pp-font-display);font-size:32px;font-weight:var(--pp-display-weight);margin:4px 0;line-height:1}.pp-appt-time{color:var(--pp-ink-2);font-variant-numeric:tabular-nums;font-size:13px}.pp-appt-body{min-width:0}.pp-appt-title{font-family:var(--pp-font-display);font-size:20px;font-weight:var(--pp-display-weight);color:var(--pp-ink);margin:0 0 4px;line-height:1.2}.pp-appt-sub{color:var(--pp-muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.pp-appt-sub-dot{opacity:.5}.pp-appt-note{color:var(--pp-ink-2);background:var(--pp-panel-2);border-radius:var(--pp-radius);margin-top:10px;padding:10px 14px;font-size:13px;line-height:1.45}.pp-appt-right{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.pp-chip{border-radius:var(--pp-chip-radius);background:var(--pp-panel-2);color:var(--pp-ink-2);border:1px solid var(--pp-line);white-space:nowrap;align-items:center;gap:6px;padding:4px 10px;font-size:11.5px;font-weight:500;display:inline-flex}.pp-chip-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.pp-chip-ok{color:var(--pp-success);background:color-mix(in srgb, var(--pp-success) 10%, transparent);border-color:color-mix(in srgb, var(--pp-success) 20%, transparent)}.pp-chip-warn{color:var(--pp-warn);background:color-mix(in srgb, var(--pp-warn) 10%, transparent);border-color:color-mix(in srgb, var(--pp-warn) 20%, transparent)}.pp-chip-bad{color:var(--pp-danger);background:color-mix(in srgb, var(--pp-danger) 10%, transparent);border-color:color-mix(in srgb, var(--pp-danger) 20%, transparent)}.pp-patients{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.pp-patient{background:var(--pp-panel);border:1px solid var(--pp-line);border-radius:var(--pp-radius-lg);flex-direction:column;gap:14px;padding:22px 24px;display:flex}.pp-patient-head{align-items:center;gap:14px;display:flex}.pp-patient-avatar{background:var(--pp-panel-2);width:52px;height:52px;color:var(--pp-ink);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;font-weight:600;display:inline-flex}.pp-patient-name{color:var(--pp-ink);margin:0;font-size:18px;font-weight:500;line-height:1.2}.pp-patient-rel{color:var(--pp-muted);font-size:13px}.pp-patient-meta{border-top:1px solid var(--pp-line-2);border-bottom:1px solid var(--pp-line-2);grid-template-columns:1fr 1fr;gap:10px 18px;padding:12px 0;font-size:13px;display:grid}.pp-patient-meta .k{color:var(--pp-muted);text-transform:uppercase;letter-spacing:.05em;font-size:11.5px}.pp-patient-meta .v{color:var(--pp-ink);font-variant-numeric:tabular-nums}.pp-summary{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.pp-stat{background:var(--pp-panel);border:1px solid var(--pp-line);border-radius:var(--pp-radius-lg);padding:18px 20px}.pp-stat-k{color:var(--pp-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;font-size:12px}.pp-stat-v{font-family:var(--pp-font-display);font-size:28px;font-weight:var(--pp-display-weight);color:var(--pp-ink);font-variant-numeric:tabular-nums;line-height:1}.pp-profile{grid-template-columns:1fr 1fr;gap:20px;display:grid}.pp-field{border-bottom:1px solid var(--pp-line-2);flex-direction:column;gap:4px;padding:10px 0;display:flex}.pp-field .k{color:var(--pp-muted);text-transform:uppercase;letter-spacing:.05em;font-size:11.5px}.pp-field .v{color:var(--pp-ink);font-size:14.5px}.pp-auth-shell{background:var(--pp-bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.pp-auth-card{background:var(--pp-panel);border:1px solid var(--pp-line);border-radius:var(--pp-radius-lg);width:100%;max-width:420px;padding:40px 36px}.pp-auth-title{font-family:var(--pp-font-display);font-size:28px;font-weight:var(--pp-display-weight);color:var(--pp-ink);margin:0 0 6px}.pp-auth-sub{color:var(--pp-muted);margin:0 0 24px;font-size:14px}.pp-auth-field{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.pp-auth-field label{color:var(--pp-muted);text-transform:uppercase;letter-spacing:.06em;font-size:12px}.pp-auth-field input{border-radius:var(--pp-radius);border:1px solid var(--pp-line);background:var(--pp-bg);color:var(--pp-ink);padding:12px 14px;font-size:15px}.pp-auth-field input:focus{border-color:var(--pp-accent);outline:none}.pp-auth-error{color:var(--pp-danger);margin:4px 0 14px;font-size:13px}@media (max-width:960px){.pp-shell{grid-template-columns:1fr}.pp-side{position:static}.pp-patients,.pp-profile{grid-template-columns:1fr}.pp-summary{grid-template-columns:repeat(2,1fr)}.pp-appt{grid-template-columns:1fr}.pp-appt-date{border-right:0;border-bottom:1px solid var(--pp-line);flex-direction:row;align-items:center;gap:10px;padding:0 0 12px}}.vx-toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.vx-select{border-radius:var(--pp-radius-md);border:1px solid var(--pp-line);background:var(--pp-panel);height:34px;color:var(--pp-ink);padding:0 10px;font-size:13px}.vx-groups{flex-direction:column;gap:18px;display:flex}.vx-group{background:var(--pp-panel);border:1px solid var(--pp-line);border-radius:var(--pp-radius-lg);overflow:hidden}.vx-group-head{border-bottom:1px solid var(--pp-line);background:var(--pp-panel-2);align-items:baseline;gap:12px;padding:16px 22px;display:flex}.vx-group-name{font-family:var(--pp-font-display);font-weight:var(--pp-display-weight);margin:0;font-size:18px}.vx-group-dob{color:var(--pp-muted);font-size:13px}.vx-group-count{color:var(--pp-muted);text-transform:uppercase;letter-spacing:.05em;margin-left:auto;font-size:12.5px}.vx-list{margin:0;padding:0;list-style:none}.vx-row{border-bottom:1px solid var(--pp-line);grid-template-columns:130px 1fr auto;align-items:start;gap:18px;padding:16px 22px;display:grid}.vx-row:last-child{border-bottom:0}.vx-row-day{color:var(--pp-ink);font-size:14px;font-weight:500}.vx-row-next{color:var(--pp-muted);margin-top:2px;font-size:12px}.vx-row-headline{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.vx-row-vaccine{color:var(--pp-ink);font-size:15px;font-weight:600}.vx-row-dose{color:var(--pp-ink);background:var(--pp-panel-2);border:1px solid var(--pp-line);text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:500}.vx-row-tag{color:var(--pp-muted);border:1px dashed var(--pp-line);text-transform:uppercase;letter-spacing:.05em;background:0 0;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500}.vx-row-detail{color:var(--pp-muted);margin-top:4px;font-size:13px}.vx-row-notes{color:var(--pp-ink);white-space:pre-wrap;margin-top:8px;font-size:13.5px}.vx-row-del{color:var(--pp-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.vx-row-del:hover{color:var(--pp-danger);border-color:var(--pp-line)}.vx-row-del svg{width:14px;height:14px}.vx-modal-backdrop{z-index:60;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.vx-modal{background:var(--pp-panel);border:1px solid var(--pp-line);border-radius:var(--pp-radius-lg);width:min(540px,100vw - 32px);max-height:calc(100vh - 64px);overflow:auto;box-shadow:0 20px 60px #00000040}.vx-modal-head{border-bottom:1px solid var(--pp-line);justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.vx-modal-head h2{font-family:var(--pp-font-display);font-weight:var(--pp-display-weight);margin:0;font-size:20px}.vx-modal-close{color:var(--pp-muted);cursor:pointer;background:0 0;border:0;font-size:26px;line-height:1}.vx-modal-close:hover{color:var(--pp-ink)}.vx-form{flex-direction:column;gap:14px;padding:20px 24px;display:flex}.vx-field{flex-direction:column;gap:6px;display:flex}.vx-field span{color:var(--pp-muted);font-size:12.5px;font-weight:500}.vx-field input,.vx-field select,.vx-field textarea{background:var(--pp-panel-2);border:1px solid var(--pp-line);border-radius:var(--pp-radius-md);width:100%;color:var(--pp-ink);padding:9px 12px;font-family:inherit;font-size:14px}.vx-field textarea{resize:vertical}.vx-field input:focus,.vx-field select:focus,.vx-field textarea:focus{outline:2px solid var(--pp-accent);outline-offset:-1px}.vx-row-2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.vx-error{color:var(--pp-danger);border-radius:var(--pp-radius-md);background:#ff00000d;padding:8px 12px;font-size:13px}.vx-form-foot{border-top:1px solid var(--pp-line);justify-content:flex-end;gap:10px;margin-top:6px;padding:12px 0 0;display:flex}.print-only{display:none}.vx-print-meta{justify-content:space-between;align-items:baseline;margin-bottom:14px;display:none}.vx-print-meta strong{font-size:16px}.vx-print-sub{color:var(--pp-muted);margin-top:2px;font-size:12px}.vx-print-date{color:var(--pp-muted);font-size:12px}.vx-disclaimer{color:var(--pp-muted);margin-top:24px;font-size:11px;font-style:italic}@media (max-width:720px){.vx-row{grid-template-columns:1fr;gap:8px}}@media print{.pp-top,.pp-side,.pp-no-print{display:none!important}.pp-shell{grid-template-columns:1fr!important}.pp-main{gap:16px!important;padding:0!important}body,.pp-shell,.pp-main{color:#000!important;background:#fff!important}.vx-print-meta,.print-only{display:flex}.vx-disclaimer{display:block}.vx-group{page-break-inside:avoid;box-shadow:none!important;border:1px solid #999!important}.vx-group-head{background:#f3f3f3!important}.vx-row{page-break-inside:avoid;border-color:#ccc!important}.vx-row-vaccine,.vx-group-name{color:#000!important}.vx-row-detail,.vx-group-dob,.vx-print-sub,.vx-print-date{color:#444!important}.pp-ph-t{font-size:22px!important}.pp-ph-s{display:none!important}}.vx-attachments{flex-direction:column;gap:6px;margin-top:8px;display:flex}.vx-attachment-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.vx-attachment{background:var(--pp-panel-2);border-radius:var(--pp-radius-md);justify-content:space-between;align-items:center;gap:6px;padding:4px 10px;font-size:12.5px;display:flex}.vx-attachment-name{cursor:pointer;color:var(--pp-accent);text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:6px;min-width:0;padding:0;text-decoration:none;display:inline-flex}.vx-attachment-name:hover{text-decoration:underline}.vx-attachment-name svg{flex-shrink:0;width:12px;height:12px}.vx-attachment-del{cursor:pointer;color:var(--pp-muted);background:0 0;border:0;padding:2px}.vx-attachment-del:hover{color:var(--pp-danger)}.vx-attachment-del svg{width:12px;height:12px}.vx-attach-add{color:var(--pp-muted);cursor:pointer;background:0 0;border:0;align-self:flex-start;align-items:center;gap:4px;padding:0;font-size:12.5px;display:inline-flex}.vx-attach-add:hover{color:var(--pp-accent)}.vx-attach-add svg{width:12px;height:12px}.vx-attach-error{color:var(--pp-danger);font-size:12px}.vx-share-btn{background:var(--pp-panel-2);border:1px solid var(--pp-line);color:var(--pp-ink);cursor:pointer;border-radius:999px;align-items:center;gap:6px;margin-left:8px;padding:4px 12px;font-size:12.5px;font-weight:500;display:inline-flex}.vx-share-btn:hover{border-color:var(--pp-accent);color:var(--pp-accent)}.vx-share-btn svg{width:12px;height:12px}.vx-share-modal{width:min(440px,100vw - 32px)}.vx-share-body{flex-direction:column;align-items:center;gap:14px;padding:24px;display:flex}.vx-share-loading{color:var(--pp-muted);font-size:13px}.vx-qr-frame{border-radius:var(--pp-radius-md);border:1px solid var(--pp-line);background:#fff;padding:16px}.vx-share-help{text-align:center;color:var(--pp-muted);max-width:36ch;margin:0;font-size:13px}.vx-share-url{gap:8px;width:100%;display:flex}.vx-share-url input{background:var(--pp-panel-2);border:1px solid var(--pp-line);border-radius:var(--pp-radius-md);color:var(--pp-ink);flex:1;min-width:0;padding:8px 10px;font-family:SF Mono,ui-monospace,monospace;font-size:12px}.vx-share-expiry{color:var(--pp-muted);margin:0;font-size:12px}
