/* === Extracted from app.html lines 9-1265 === */
body, button, input, select, textarea, .modal, .topnav, .section,
.ptc-banner, .ptc-tabs, .ptc-tab, #pt-main, .ptc-panel,
.tn-drawer, .tn-menu, h1, h2, h3, h4, h5, h6, p, span, label, div,
th, td, li, a, .btn, .slabel, .field, .fg, table,
.ptc-banner-title, .ptc-banner-meta-item { font-family: var(--font) !important; }
html,body{height:100%;margin:0;padding:0;background:var(--bg);font-family:var(--font);font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-0.01em;color:var(--text);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,h5,h6,p{margin:0;padding:0}
#root{position:fixed;inset:0;display:flex;flex-direction:column;overflow:hidden}
:root{
--bg:#f5f4ed;--bg2:#faf9f5;--bg3:#e8e6dc;--surface:#faf9f5;
--border:#f0eee6;--border2:#e8e6dc;
--text:#141413;--text2:#4d4c48;--text3:#87867f;
--brand:#c96442;--brand-d:#b55330;--brand-bg:rgba(201,100,66,0.08);--brand-bdr:rgba(201,100,66,0.2);
--blue:#c96442;--blue-bg:rgba(201,100,66,0.08);--blue-bdr:rgba(201,100,66,0.15);
--green:#4d4c48;--green-bg:#f0eee6;--green-bdr:#e8e6dc;
--red:#b53333;--red-bg:#fcefee;--red-bdr:#f5c6c0;
--amber:#b8860b;--amber-bg:#fef9e7;--amber-bdr:#f9e4a8;
--purple:#6c3483;--purple-bg:#f4ecf7;--purple-bdr:#d7bde2;
--teal:#4d4c48;--teal-bg:#f0eee6;
--shadow:0 1px 3px rgba(0,0,0,.06);
--shadow-md:0 4px 16px rgba(0,0,0,.07);
--shadow-lg:0 8px 32px rgba(0,0,0,.08);
--r:8px;--r-md:10px;--r-lg:12px;--r-xl:16px;
--font:'DM Sans',system-ui,sans-serif;--mono:'JetBrains Mono','SF Mono',monospace;
--sidebar:242px;--topbar:36px;
}
[data-theme="dark"] {
--bg:#141413;--bg2:#1a1a18;--bg3:#2a2a26;--surface:#1e1e1c;
--border:#2a2a26;--border2:#3a3a36;
--text:#f0eee6;--text2:#b0aea6;--text3:#6a6964;
--brand:#c96442;--brand-d:#b55330;--brand-bg:rgba(201,100,66,0.15);--brand-bdr:rgba(201,100,66,0.3);
--blue:#c96442;--blue-bg:rgba(201,100,66,0.15);--blue-bdr:rgba(201,100,66,0.3);
--green:#6a8a5a;--green-bg:#2a3a1a;--green-bdr:#3a4a2a;
--red:#d46060;--red-bg:#3a1a1a;--red-bdr:#5a2a2a;
--amber:#c9a030;--amber-bg:#3a2a0a;--amber-bdr:#5a3a1a;
--purple:#8a5ab0;--purple-bg:#2a1a3a;--purple-bdr:#3a2a5a;
--shadow:0 1px 3px rgba(0,0,0,.2);
--shadow-md:0 4px 16px rgba(0,0,0,.25);
--shadow-lg:0 8px 32px rgba(0,0,0,.3);
}
*,*::before,*::after{box-sizing:border-box}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--text3)}
::selection{background:var(--brand);color:#fff}
body{overflow:hidden;display:flex;flex-direction:column}
a{color:var(--brand);text-decoration:none}
a:hover{text-decoration:underline}
input,select,textarea,.btn,.fg{cursor:default}
textarea{resize:vertical;min-height:60px}
button{border:0;background:none;cursor:pointer;font:inherit;color:inherit;padding:0;margin:0;letter-spacing:inherit}
button:disabled{opacity:.4;pointer-events:none}
svg.lci,i.lci{width:14px;height:14px;flex-shrink:0;display:inline-block;vertical-align:middle}
.mono{font-family:var(--mono);font-size:.93em;letter-spacing:0}
.nav-cnt{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;border-radius:9px;font-size:10px;font-weight:700;padding:0 5px;background:var(--bg3);color:var(--text2)}
.card-title{font-weight:600;font-size:13px;color:var(--text2)}
.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.b-green{background:var(--green-bg);color:var(--green)}
.b-red{background:var(--red-bg);color:var(--red)}
.b-amber{background:var(--amber-bg);color:var(--amber)}
.b-blue{background:var(--brand-bg);color:var(--brand)}
.empty{padding:40px 20px;text-align:center;color:var(--text3)}
.empty-ico{margin-bottom:12px;opacity:.3}
.empty h3{font-size:16px;font-weight:600;color:var(--text3);margin-bottom:8px}
code, pre { font-family: var(--mono); font-size: .93em; }
pre { white-space: pre-wrap; word-break: break-word; }

/* Layout */
.app-layout{display:flex;height:100%;overflow:hidden}
.sidebar{width:var(--sidebar);background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;overflow:hidden}
.main-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.topbar{height:var(--topbar);background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 14px;flex-shrink:0;gap:12px}
.content{flex:1;overflow-y:auto;padding:18px 20px;background:var(--bg)}
.sidebar-logo{padding:14px 16px 8px;font-weight:800;font-size:16px;display:flex;align-items:center;gap:8px;letter-spacing:-.03em;color:var(--text)}
.sidebar-logo span{color:var(--brand)}
.sidebar-nav{flex:1;overflow-y:auto;padding:4px 8px}
.nav-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--r);color:var(--text2);font-size:13px;cursor:pointer;transition:all .12s;white-space:nowrap}
.nav-item:hover{background:var(--brand-bg);color:var(--brand)}
.nav-item.active{background:var(--brand-bg);color:var(--brand);font-weight:600}
.nav-item .lci{width:16px;height:16px}

/* Topbar */
.tn-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.tn-right{display:flex;align-items:center;gap:6px;flex-shrink:0}
.tn-greeting{font-size:13px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.tn-chip{display:flex;align-items:center;gap:6px;padding:2px 10px 2px 2px;border-radius:20px;background:var(--bg3);font-size:12px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .12s}
.tn-chip:hover{border-color:var(--brand-bdr)}
.tn-avatar{width:24px;height:24px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700}
.tn-user-menu{position:absolute;top:100%;right:0;margin-top:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-lg);min-width:160px;z-index:999;display:none}
.tn-user-menu .menu-item{display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:12px;color:var(--text2);cursor:pointer}
.tn-user-menu .menu-item:hover{background:var(--brand-bg);color:var(--brand)}

/* Cards */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}
.card-flat{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:14px}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}
.stat-val{font-size:22px;font-weight:700;color:var(--text)}
.stat-lbl{font-size:11px;color:var(--text3);margin-top:2px;text-transform:uppercase;letter-spacing:.03em;font-weight:600}

/* Tables */
.tbl-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;padding:6px 10px;font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--border);white-space:nowrap}
td{padding:6px 10px;border-bottom:1px solid var(--border);color:var(--text2);white-space:nowrap}
tr:hover td{background:var(--bg2)}
tr.selected td{background:var(--brand-bg)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:var(--r);font-size:12px;font-weight:500;transition:all .1s;white-space:nowrap;border:1px solid var(--border);background:var(--surface);color:var(--text)}
.btn:hover{border-color:var(--brand-bdr);background:var(--brand-bg);color:var(--brand)}
.btn-primary{background:var(--brand);color:#fff;border-color:var(--brand)}
.btn-primary:hover{background:var(--brand-d);border-color:var(--brand-d)}
.btn-sm{padding:3px 8px;font-size:11px}
.btn-xs{padding:2px 6px;font-size:10px;border-radius:4px}
.btn-ghost{border-color:transparent;background:transparent;color:var(--text2)}
.btn-ghost:hover{background:var(--bg3);color:var(--text)}
.btn-group{display:flex;align-items:center;gap:6px}
.btn-icon{width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;position:relative;cursor:pointer;}
.btn-icon[title]:hover::after{content:attr(title);position:absolute;bottom:calc(100% + 5px);left:50%;transform:translateX(-50%);background:#141413;color:#fff;font-size:10px;font-weight:600;white-space:nowrap;padding:3px 8px;border-radius:4px;pointer-events:none;z-index:9999;}

/* Forms */
.field{display:flex;flex-direction:column;gap:3px}
.field label{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.03em}
.field input,.field select,.field textarea{padding:6px 10px;border:1px solid var(--border);border-radius:var(--r);font-size:13px;background:var(--surface);color:var(--text);outline:none;transition:border-color .1s}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand)}
.fg{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fg3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.fg4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:8px}
.search-row{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.search-row input[type=text]{padding:6px 10px;border:1px solid var(--border);border-radius:var(--r);font-size:13px;background:var(--surface);color:var(--text);outline:none;min-width:200px;flex:1}
.search-row input:focus{border-color:var(--brand)}
.search-row select{padding:5px 8px;border:1px solid var(--border);border-radius:var(--r);font-size:12px;background:var(--surface);color:var(--text2);outline:none}

/* Tabs */
.stabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:10px}
.stab{padding:6px 14px;font-size:12px;font-weight:500;color:var(--text3);cursor:pointer;border-bottom:2px solid transparent;transition:all .12s;white-space:nowrap;display:flex;align-items:center;gap:4px}
.stab:hover{color:var(--text)}
.stab.active{color:var(--brand);border-bottom-color:var(--brand)}

/* Section */
.section{display:none;flex-direction:column;height:100%}
.section.active{display:flex}
.page-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-shrink:0}
.page-hdr h1{font-size:18px;font-weight:700;color:var(--text)}
.page-body{flex:1;overflow-y:auto}

/* Toast */
#toasts{position:fixed;bottom:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{padding:10px 18px;border-radius:var(--r);font-size:13px;font-weight:500;color:#fff;box-shadow:var(--shadow-lg);animation:toastIn .25s ease;pointer-events:auto;max-width:360px}
.toast.ok{background:var(--green)}
.toast.err{background:var(--red)}
.toast.info{background:var(--brand)}
@keyframes toastIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* Modal */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1000;align-items:center;justify-content:center;padding:20px}
.modal-overlay.open{display:flex}
.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);max-height:90vh;display:flex;flex-direction:column;width:90vw;max-width:680px;overflow:hidden}
.modal-xl{max-width:900px}
.modal-full{max-width:98vw;width:98vw;height:95vh}
.modal-hdr{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.modal-hdr h2{font-size:15px;font-weight:700;color:var(--text)}
.modal-body{flex:1;overflow-y:auto;padding:16px}
.modal-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--r);color:var(--text3);cursor:pointer}
.modal-close:hover{background:var(--bg3);color:var(--text)}

/* Page header */
.page-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-shrink:0}
.page-hdr h1{font-size:18px;font-weight:700;color:var(--text)}

/* Labels */
.slabel{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}
.slabel-green{background:var(--green-bg);color:var(--green)}
.slabel-red{background:var(--red-bg);color:var(--red)}
.slabel-amber{background:var(--amber-bg);color:var(--amber)}
.slabel-blue{background:var(--brand-bg);color:var(--brand)}

/* Misc */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.grid4{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:10px}
.grid-auto{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.flex{display:flex;gap:8px;align-items:center}
.flex-col{display:flex;flex-direction:column;gap:8px}
.flex-1{flex:1}
.gap-4{gap:4px}
.mb-8{margin-bottom:8px}
.mb-12{margin-bottom:12px}
.mt-8{margin-top:8px}
.mt-12{margin-top:12px}
.w-full{width:100%}
.text-muted{color:var(--text3)}
.text-sm{font-size:12px}
.text-xs{font-size:11px}
.text-center{text-align:center}
.text-right{text-align:right}
.font-bold{font-weight:700}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.no-upper{text-transform:none!important}

/* Loading overlay */
.loading-overlay{position:absolute;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:999}
.loading-spinner{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--brand);border-radius:50%;animation:spin .6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* Checkbox */
input[type=checkbox]{accent-color:var(--brand);width:14px;height:14px;margin:0;cursor:pointer}

/* Scrollable */
.scroll-y{overflow-y:auto;flex:1;min-height:0}
.split-pane{display:grid;grid-template-columns:220px 1fr;gap:0;height:100%}
.split-nav{border-right:1px solid var(--border);overflow-y:auto;padding:8px}
.split-content{overflow-y:auto;padding:14px}
.split-item{padding:6px 10px;border-radius:var(--r);font-size:12px;color:var(--text2);cursor:pointer}
.split-item:hover{background:var(--brand-bg);color:var(--brand)}
.split-item.active{background:var(--brand-bg);color:var(--brand);font-weight:600}

/* Responsive table for service groups */
.sg-table{width:100%;border-collapse:collapse;font-size:12px}
.sg-table th{padding:4px 6px;font-size:10px;background:var(--bg2)}
.sg-table td{padding:4px 6px;border-bottom:1px solid var(--border);font-size:12px}
.sg-table input,.sg-table select{padding:2px 4px;font-size:12px;border:1px solid var(--border);border-radius:4px;background:var(--surface);color:var(--text);width:100%}

/* CM / Intake specific */
.cm-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:12px}
.cm-tab{padding:6px 14px;font-size:12px;font-weight:500;color:var(--text3);cursor:pointer;border-bottom:2px solid transparent;transition:all .12s}
.cm-tab:hover{color:var(--text)}
.cm-tab.active{color:var(--brand);border-bottom-color:var(--brand)}
.cm-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:12px}
.cm-card-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:6px}

/* Invoice editor */
.inv-sidebar-title{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;padding:0 8px}
.inv-sidebar-item{padding:8px;border-radius:var(--r);cursor:pointer;font-size:12px;color:var(--text2)}
.inv-sidebar-item:hover{background:var(--brand-bg);color:var(--brand)}
.inv-sidebar-item.active{background:var(--brand-bg);color:var(--brand);font-weight:600}

/* Intake forms */
.intake-client-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px;cursor:pointer;transition:all .12s}
.intake-client-card:hover{border-color:var(--brand-bdr);box-shadow:var(--shadow-md)}
.intake-client-card .name{font-weight:600;font-size:14px;color:var(--text)}
.intake-client-card .meta{font-size:12px;color:var(--text3);margin-top:4px}

/* Drop zone */
.drop-zone{border:2px dashed var(--border);border-radius:var(--r);padding:30px;text-align:center;color:var(--text3);cursor:pointer;transition:all .12s}
.drop-zone:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-bg)}

/* Print */
@media print{body{background:#fff}.section{display:block!important;position:static!important}.sidebar,.topbar,#toasts{display:none!important}}

/* Animations */
.fade-in{animation:fadeIn .15s ease}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* =============================================
   Top Navigation Layout (getAppShellHTML)
   ============================================= */
.app-shell{display:flex;flex-direction:column;height:100%;overflow:hidden}
.topnav{height:44px;max-height:44px;background:#141413;display:flex;align-items:center;gap:4px;padding:0 8px 0 14px;flex-shrink:0;color:#fff;z-index:100;overflow:visible}
.tn-hamburger{display:none;width:32px;height:32px;align-items:center;justify-content:center;color:rgba(255,255,255,.7);border-radius:8px;flex-shrink:0}
.tn-hamburger:hover{background:rgba(255,255,255,.1);color:#fff}
.tn-brand{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-right:4px}
.tn-brand-name{font-size:15px;font-weight:800;letter-spacing:-.03em;color:#fff;white-space:nowrap}
.tn-divider{width:1px;height:22px;background:rgba(255,255,255,.15);margin:0 6px;flex-shrink:0}
.tn-nav{display:flex;align-items:center;gap:2px;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.tn-nav::-webkit-scrollbar{display:none}
.tn-item{display:flex;align-items:center;gap:5px;padding:6px 10px;border-radius:8px;font-size:12px;font-weight:500;color:rgba(255,255,255,.75);white-space:nowrap;transition:all .12s;flex-shrink:0;cursor:pointer;border:0;background:none;font-family:inherit}
.tn-item:hover{background:rgba(255,255,255,.1);color:#fff}
.tn-item.active{background:rgba(255,255,255,.13);color:#fff;font-weight:600}
.tn-item .lci{width:15px;height:15px}
.tn-group{position:relative;display:inline-flex}
.tn-has-dd{gap:4px}
.tn-has-dd svg:last-child{transition:transform .2s;opacity:.6}
.tn-group.open .tn-has-dd svg:last-child{transform:rotate(180deg)}
.tn-dropdown{display:none;position:absolute;top:100%;left:0;margin-top:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);min-width:180px;z-index:900;padding:4px;white-space:nowrap}
.tn-group.open .tn-dropdown{display:block}
.tn-dd-item{display:flex;align-items:center;gap:8px;padding:7px 12px;border-radius:var(--r);font-size:12px;color:var(--text2);cursor:pointer;transition:all .1s}
.tn-dd-item:hover{background:var(--brand-bg);color:var(--brand)}
.tn-dd-item .lci{width:14px;height:14px;color:var(--text3)}
.tn-dd-item:hover .lci{color:var(--brand)}
.tn-dd-sep{height:1px;background:var(--border);margin:4px 8px}
.tn-prov-sel{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.15);border-radius:6px;padding:3px 8px;font-size:11px;font-weight:500;cursor:pointer;outline:none;max-width:160px;font-family:inherit}
.tn-prov-sel option{background:#141413;color:#fff}
.tn-cnt{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;border-radius:8px;padding:0 4px;font-size:9px;font-weight:700;background:var(--brand);color:#fff;margin-left:2px}
.tn-right{display:flex;align-items:center;gap:6px;flex-shrink:0;margin-left:auto}

/* Main content area */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;max-height:calc(100% - 44px)}

/* Mobile drawer */
.tn-drawer{display:none;position:fixed;inset:0;z-index:5000}
.tn-drawer.open{display:block}
.tn-drawer-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5)}
.tn-drawer-panel{position:absolute;left:0;top:0;bottom:0;width:300px;max-width:85vw;background:var(--surface);display:flex;flex-direction:column;overflow:hidden;box-shadow:4px 0 24px rgba(0,0,0,.15)}
.tn-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0}
.tn-drawer-item{display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:13px;color:var(--text2);cursor:pointer;transition:all .1s}
.tn-drawer-item:hover{background:var(--brand-bg);color:var(--brand)}
.tn-drawer-item .lci{width:16px;height:16px;color:var(--text3)}
.tn-drawer-item:hover .lci{color:var(--brand)}
.tn-drawer-group{border-bottom:1px solid var(--border)}
.tn-drawer-group-hdr{display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:13px;color:var(--text2);cursor:pointer;transition:all .1s}
.tn-drawer-group-hdr:hover{background:var(--brand-bg);color:var(--brand)}
.tn-drawer-group-hdr .lci{width:16px;height:16px;color:var(--text3)}
.tn-drawer-group-hdr svg:last-child{margin-left:auto;transition:transform .2s;opacity:.6}
.tn-drawer-group.open .tn-drawer-group-hdr svg:last-child{transform:rotate(180deg)}
.tn-drawer-sub{display:none;flex-direction:column}
.tn-drawer-group.open .tn-drawer-sub{display:flex}
.tn-drawer-sub-item{padding:8px 16px 8px 42px;font-size:12px;color:var(--text3);cursor:pointer;transition:all .1s}
.tn-drawer-sub-item:hover{background:var(--brand-bg);color:var(--brand)}
.tn-drawer-sub-sep{height:1px;background:var(--border);margin:4px 16px}

/* Mobile responsive */
@media(max-width:768px){
  .tn-hamburger{display:flex}
  .tn-nav{display:none}
  .tn-divider{display:none}
  .tn-brand-name{display:none}
  .topnav{padding:0 8px}
  .main .content{padding:12px}
  #prov-sel-wrap{display:none}
}



/* ── Patient Chart Overlay ─────────────────────────────────────────────────── */
.pt-chart-overlay {
  position: fixed;
  top: 48px; left: 0; right: 0; bottom: 0;
  z-index: 9000;
  background: var(--bg2);
  overflow: hidden;
}
.pt-chart-overlay > div {
  display: flex; flex-direction: column;
  height: 100%; overflow: hidden;
}
/* Banner — terracotta bar with patient info + tabs inline */
.ptc-banner {
  background: #c96442;
  color: #fff;
  display: flex; align-items: center;
  padding: 0 10px 0 14px;
  height: 40px;
  flex-shrink: 0;
  gap: 6px;
  overflow: hidden;
}
.ptc-banner-title {
  font-size: 10px; font-weight: 700; letter-spacing: .1em;
  text-transform: uppercase; color: rgba(255,255,255,.75);
  white-space: nowrap; flex-shrink: 0;
}
.ptc-banner-sep {
  color: rgba(255,255,255,.35); font-size: 12px;
  flex-shrink: 0; padding: 0 2px;
}
.ptc-banner-meta-item {
  display: flex; align-items: center; gap: 3px;
  font-size: 11px; font-weight: 600; color: #fff;
  white-space: nowrap; flex-shrink: 0;
}
.ptc-banner-close {
  width: 26px; height: 26px; border-radius: 5px; margin-left: 4px;
  background: rgba(0,0,0,.15); border: none; cursor: pointer;
  color: rgba(255,255,255,.85); font-size: 16px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  transition: background .12s; flex-shrink: 0;
}
.ptc-banner-close:hover { background: rgba(0,0,0,.3); color: #fff; }
/* Tabs inline inside banner */
.ptc-tabs-inline {
  display: flex; align-items: stretch;
  flex: 1; overflow-x: auto; height: 100%;
  scrollbar-width: none; gap: 0;
}
.ptc-tabs-inline::-webkit-scrollbar { display: none; }
.ptc-tab {
  display: flex; align-items: center; gap: 4px;
  padding: 0 10px;
  font-size: 11px; font-weight: 600;
  color: rgba(255,255,255,.65);
  cursor: pointer; white-space: nowrap; flex-shrink: 0;
  border-bottom: 2px solid transparent;
  transition: color .12s, border-color .12s, background .12s;
  user-select: none; height: 100%;
}
.ptc-tab:hover { color: #fff; background: rgba(0,0,0,.1); }
.ptc-tab.active { color: #fff; border-bottom-color: rgba(255,255,255,.9); background: rgba(0,0,0,.12); }
/* Body */
#pt-main {
  flex: 1; overflow-y: auto; padding: 14px 16px;
}
/* Sidebar panels */
.ptc-panel {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  overflow: hidden; margin-bottom: 12px;
}
.ptc-panel-hdr {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 12px;
  background: var(--bg3);
  border-bottom: 1px solid var(--border);
  font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .05em;
  color: var(--text3);
}
.ptc-panel-body { padding: 10px 12px; }
.ptc-row {
  display: flex; align-items: baseline; gap: 6px;
  padding: 3px 0; font-size: 12px;
  border-bottom: 1px solid var(--border);
}
.ptc-row:last-child { border-bottom: none; }
.ptc-label { color: var(--text3); font-weight: 600; white-space: nowrap; }
.ptc-value { color: var(--text); }
.ptc-link { color: var(--brand); font-size: 11px; cursor: pointer; }
.ptc-link:hover { text-decoration: underline; }
.ptc-photo-box {
  width: 60px; height: 60px;
  border-radius: var(--r);
  overflow: hidden; flex-shrink: 0;
  background: var(--bg3);
}
/* Quick actions */
.ptc-qa {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: 6px;
  cursor: pointer; color: rgba(255,255,255,.7);
  transition: background .12s, color .12s; position: relative;
}
.ptc-qa:hover { background: rgba(255,255,255,.12); color: #fff; }
.ptc-qa::after {
  content: attr(data-tip);
  position: absolute; bottom: calc(100% + 5px); left: 50%;
  transform: translateX(-50%);
  background: #141413; color: #fff;
  font-size: 10px; font-weight: 600; white-space: nowrap;
  padding: 3px 7px; border-radius: 4px;
  pointer-events: none; opacity: 0; transition: opacity .15s; z-index: 9999;
}
.ptc-qa:hover::after { opacity: 1; }
/* Card inside overlay */
.pt-card-body {
  overflow-y: auto;
}

/* ── Dashboard Cards ──────────────────────────────────────────────────────── */
.dash-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px 18px;
  display: flex; flex-direction: column; gap: 6px;
  transition: box-shadow .15s, transform .15s;
}
.dash-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.08); transform: translateY(-1px); }
.dash-card-hdr { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.dash-card-icon {
  width: 40px; height: 40px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.dash-card-label {
  font-size: 10px; font-weight: 700; letter-spacing: .08em;
  color: var(--text3); text-transform: uppercase;
}
.dash-card-metric { font-size: 32px; font-weight: 800; line-height: 1; }
.dash-card-sub { display: flex; gap: 12px; font-size: 11px; font-weight: 600; flex-wrap: wrap; }
.dash-card-bar { height: 4px; background: var(--border); border-radius: 2px; margin-top: 4px; overflow: hidden; }
.dash-card-pct { font-size: 10px; color: var(--text3); font-weight: 600; }

/* ── Patient Summary ──────────────────────────────────────────────────────── */
.ptc-summary-wrap { padding: 0; }
.ptc-metrics-row {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px;
  margin-bottom: 14px;
}
@media (max-width: 900px) { .ptc-metrics-row { grid-template-columns: repeat(3, 1fr); } }
.ptc-metric-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 14px;
  display: flex; flex-direction: column; gap: 4px;
  transition: box-shadow .15s;
}
.ptc-metric-card:hover { box-shadow: 0 3px 12px rgba(0,0,0,.07); }
.ptc-metric-icon {
  width: 36px; height: 36px; border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  margin-bottom: 6px;
}
.ptc-metric-value { font-size: 22px; font-weight: 800; line-height: 1; }
.ptc-metric-label { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text3); }
.ptc-metric-sub { font-size: 11px; color: var(--text3); }

.ptc-summary-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  align-items: start;
}
@media (max-width: 800px) { .ptc-summary-cols { grid-template-columns: 1fr; } }

.ptc-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
}

/* ── Patient Chart — card/floating look for all tabs ─────────────────────── */
/* Parchment background for the entire tab body */
#pt-main {
  background: #f4f2ec;
  padding: 14px 16px;
}

/* Every ptc-panel becomes a floating card */
.ptc-panel {
  background: #ffffff;
  border: 1px solid #e4e1d8;
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(0,0,0,.06), 0 4px 12px rgba(0,0,0,.04);
  overflow: hidden;
  margin-bottom: 12px;
}
.ptc-panel-hdr {
  background: #ffffff;
  border-bottom: 1px solid #ede9df;
  padding: 9px 14px;
  font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .06em;
  color: #6b6960;
  display: flex; align-items: center; justify-content: space-between;
}
.ptc-panel-body { padding: 12px 14px; }

/* Metric cards use same floating style */
.ptc-metric-card {
  background: #ffffff;
  border: 1px solid #e4e1d8;
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(0,0,0,.06), 0 4px 12px rgba(0,0,0,.04);
}
.ptc-metric-card:hover {
  box-shadow: 0 4px 16px rgba(0,0,0,.1);
  transform: translateY(-2px);
}

/* Demo form card */
.pt-card {
  background: #ffffff;
  border: 1px solid #e4e1d8;
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(0,0,0,.06), 0 4px 12px rgba(0,0,0,.04);
  overflow: hidden;
}
.pt-card-header {
  background: #ffffff;
  border-bottom: 1px solid #ede9df;
  padding: 10px 16px;
  display: flex; align-items: center; justify-content: space-between;
}
.pt-card-body { padding: 16px; }

/* Tables inside panels */
.ptc-aging-table { border-collapse: collapse; }
.ptc-aging-table th {
  background: #f8f6f0;
  font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .05em; color: #87867f;
  padding: 7px 10px; text-align: right;
  border-bottom: 1px solid #ede9df;
}
.ptc-aging-table td { padding: 5px 10px; font-size: 12px; }
.ptc-aging-table tbody tr:nth-child(even) { background: #fafaf7; }
.ptc-aging-table tfoot td { font-weight: 700; border-top: 2px solid #ede9df; background: #f8f6f0; }

/* tbl-wrap inside pt-main */
#pt-main .tbl-wrap {
  background: #ffffff;
  border-radius: 10px;
  border: 1px solid #e4e1d8;
  box-shadow: 0 1px 4px rgba(0,0,0,.05);
  overflow: hidden;
}
#pt-main table th {
  background: #f8f6f0;
  font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .05em; color: #87867f;
  padding: 8px 12px; border-bottom: 1px solid #ede9df;
}
#pt-main table td {
  padding: 7px 12px;
  border-bottom: 1px solid #f0ede5;
  font-size: 12px;
}
#pt-main table tbody tr:hover { background: #fdfcf8; }

/* Dashboard cards same floating look */
.dash-card {
  background: #ffffff;
  border: 1px solid #e4e1d8;
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(0,0,0,.06), 0 4px 12px rgba(0,0,0,.04);
}
.dash-card:hover {
  box-shadow: 0 6px 20px rgba(0,0,0,.1);
  transform: translateY(-2px);
}

/* ── Quick Batch — Date Chips ─────────────────────────────────────────────── */
.date-chips { display: flex; flex-wrap: wrap; gap: 5px; }

.dchip {
  display: inline-flex; align-items: center;
  padding: 4px 10px; border-radius: 20px;
  font-size: 11px; font-weight: 600;
  cursor: pointer; user-select: none;
  border: 1.5px solid #e4e1d8;
  background: #f8f6f0; color: #87867f;
  transition: all .12s;
}
.dchip:hover { border-color: #c96442; color: #c96442; background: #fdf3ee; }
.dchip.on {
  background: #c96442; color: #fff;
  border-color: #c96442;
}
.dchip.on:hover { background: #a84f32; border-color: #a84f32; }

/* ── Quick Batch — Patient rows in SG tab ─────────────────────────────────── */
#mb-sg-pat-rows { background: #ffffff; border-radius: 10px; overflow: hidden; border: 1px solid #e4e1d8; }
#mb-sg-pat-rows > div { border-bottom: 1px solid #f0ede5; }
#mb-sg-pat-rows > div:last-child { border-bottom: none; }

/* Patient row header */
#mb-sg-pat-rows .pat-row-hdr {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 12px; cursor: pointer;
  background: #f8f6f0; transition: background .12s;
}
#mb-sg-pat-rows .pat-row-hdr:hover { background: #f4f2ec; }

/* ── icoBtn — icon-only button with tooltip ─────────────────────────────── */
.icoBtn {
  position: relative;
  width: 32px; height: 32px;
  border-radius: 8px;
  border: 1px solid #e4e1d8;
  background: #fff;
  color: #4d4c48;
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  transition: background .12s, border-color .12s, color .12s;
}
.icoBtn svg { width: 14px; height: 14px; }
.icoBtn:hover { background: #f4f2ec; border-color: #c96442; color: #c96442; }

.icoBtn--brand { background: #c96442; border-color: #c96442; color: #fff; }
.icoBtn--brand:hover { background: #a84f32; border-color: #a84f32; color: #fff; }

.icoBtn--danger { border-color: #fca5a5; color: #dc2626; }
.icoBtn--danger:hover { background: #fef2f2; border-color: #dc2626; }

.icoBtn--sm { width: 22px; height: 22px; border-radius: 50%; }
.icoBtn--sm svg { width: 10px; height: 10px; }

/* Tooltip */
.icoBtn::after {
  content: attr(title);
  position: absolute;
  bottom: calc(100% + 5px);
  left: 50%; transform: translateX(-50%);
  background: #141413; color: #fff;
  font-size: 10px; font-weight: 600;
  white-space: nowrap; padding: 3px 8px;
  border-radius: 5px; pointer-events: none;
  opacity: 0; transition: opacity .15s; z-index: 9999;
}
.icoBtn:hover::after { opacity: 1; }

/* ── Patients table ───────────────────────────────────────────────────────── */
#patients-tbl .tbl-wrap {
  background: #ffffff;
  border: 1px solid #e4e1d8;
  border-radius: 12px;
  box-shadow: 0 1px 4px rgba(0,0,0,.05), 0 4px 12px rgba(0,0,0,.04);
  overflow: hidden;
}
#patients-tbl table { width: 100%; border-collapse: collapse; }
#patients-tbl thead th {
  background: #f8f6f0;
  font-size: 10px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .07em;
  color: #87867f; padding: 9px 12px;
  border-bottom: 1px solid #ede9df;
  white-space: nowrap;
}
#patients-tbl tbody tr {
  border-bottom: 1px solid #f4f2ec;
  transition: background .1s;
}
#patients-tbl tbody tr:last-child { border-bottom: none; }
#patients-tbl tbody tr:hover { background: #fdfcf8; }
#patients-tbl tbody td {
  padding: 8px 12px;
  font-size: 12px; color: #4d4c48;
  vertical-align: middle;
}
#patients-tbl tbody td:first-child { font-family: var(--mono,'monospace'); font-size: 11px; color: #87867f; }
#patients-tbl tbody td:nth-child(2) { font-weight: 700; color: #141413; }

/* ── Pagination ───────────────────────────────────────────────────────────── */
.pg-bar {
  display: flex; align-items: center; gap: 3px;
}
.pg-btn {
  min-width: 30px; height: 30px;
  padding: 0 8px;
  border: 1px solid #e4e1d8;
  border-radius: 7px;
  background: #ffffff;
  color: #4d4c48;
  font-size: 12px; font-weight: 600;
  cursor: pointer;
  transition: all .12s;
  display: inline-flex; align-items: center; justify-content: center;
}
.pg-btn:hover { background: #f4f2ec; border-color: #c96442; color: #c96442; }
.pg-btn.pg-active {
  background: #c96442; border-color: #c96442;
  color: #ffffff; cursor: default;
}
.pg-ellipsis {
  color: #87867f; font-size: 12px;
  padding: 0 4px; display: inline-flex; align-items: center;
}

/* ══ PDF Preview Viewer ══ */
.pdf-viewer-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.65);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.pdf-viewer-modal {
  background: #fff;
  border-radius: 12px;
  box-shadow: 0 24px 80px rgba(0,0,0,.4);
  display: flex;
  flex-direction: column;
  width: 90vw;
  max-width: 960px;
  height: 88vh;
  overflow: hidden;
}
.pdf-viewer-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  background: #1a1a18;
  border-radius: 12px 12px 0 0;
  flex-shrink: 0;
}
.pdf-viewer-title {
  flex: 1;
  font-size: 13px;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pdf-viewer-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 12px;
  border-radius: 6px;
  border: 1px solid rgba(255,255,255,.25);
  background: rgba(255,255,255,.1);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: background .12s;
  white-space: nowrap;
}
.pdf-viewer-btn:hover { background: rgba(255,255,255,.2); }
.pdf-viewer-btn-primary {
  background: #2d6a4f;
  border-color: #2d6a4f;
}
.pdf-viewer-btn-primary:hover { background: #1b4332; }
.pdf-viewer-btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border-radius: 6px;
  border: none;
  background: rgba(255,255,255,.1);
  color: #fff;
  cursor: pointer;
  margin-left: 4px;
  transition: background .12s;
}
.pdf-viewer-btn-icon:hover { background: rgba(255,0,0,.5); }
.pdf-viewer-body {
  flex: 1;
  overflow: hidden;
  background: #525659;
}
.pdf-viewer-body iframe {
  width: 100%;
  height: 100%;
  border: none;
  display: block;
}
.pdf-viewer-body img {
  max-width: 100%;
  max-height: 100%;
  display: block;
  margin: auto;
  object-fit: contain;
}
