/* SafetyMeds portal: app shell + components (uses theme tokens) */
.pt{display:grid;grid-template-columns:270px minmax(0,1fr);min-height:calc(100vh - 80px);background:var(--bg-soft,#f4f7fc)}
.pt-side{background:#fff;border-right:1px solid var(--line,#e4eaf3);padding:22px 16px;position:sticky;top:0;align-self:start;height:100vh;overflow:auto;display:flex;flex-direction:column;gap:14px;z-index:40}
.pt-user{display:flex;gap:12px;align-items:center;padding:6px 8px 16px;border-bottom:1px solid var(--line,#e4eaf3)}
.pt-user b{display:block;font-size:15px;line-height:1.2}.pt-user small{color:var(--muted,#5b6b82);font-size:12px}
.av{--s:40px;width:var(--s);height:var(--s);border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--blue-dark,#0a58ca));color:#fff;display:inline-grid;place-items:center;font-weight:700;font-size:calc(var(--s)*.42);flex:none;vertical-align:middle}
.pt-side nav{display:flex;flex-direction:column;gap:2px}
.pt-side nav a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:12px;color:var(--ink,#0b1b33);font-weight:600;font-size:14.5px;text-decoration:none;transition:.15s}
.pt-side nav a .ic{width:19px;height:19px;color:var(--muted,#5b6b82);flex:none}
.pt-side nav a:hover{background:var(--blue-50,#eaf2ff)}
.pt-side nav a.on{background:var(--blue);color:#fff;box-shadow:0 8px 20px -8px var(--blue)}
.pt-side nav a.on .ic{color:#fff}
.pt-side nav a.lock{opacity:.55}
.pt-side nav a em{margin-left:auto;background:var(--red);color:#fff;font-style:normal;font-size:11px;font-weight:700;border-radius:99px;padding:1px 8px}
.pt-logout{display:flex;gap:10px;align-items:center;background:none;border:0;color:var(--muted,#5b6b82);font:inherit;font-weight:600;cursor:pointer;padding:10px 14px;border-radius:12px;width:100%}
.pt-logout:hover{background:#fdeaea;color:var(--red)}.pt-out{margin-top:auto}
.pt-body{min-width:0}
.pt-topbar{display:flex;align-items:center;gap:12px;padding:20px 32px 0}
.pt-topbar h1{font-size:26px;margin:0;letter-spacing:-.02em}
.pt-burger{display:none;background:#fff;border:1px solid var(--line,#e4eaf3);border-radius:10px;width:42px;height:42px;place-items:center;cursor:pointer}
.pt-main{padding:20px 32px 60px;max-width:1240px}
.pt-card{background:#fff;border:1px solid var(--line,#e4eaf3);border-radius:18px;padding:24px;margin:0 0 18px;box-shadow:0 1px 2px rgba(11,27,51,.03)}
.pt-card h2{font-size:20px;margin:0 0 6px}.pt-card h3{font-size:16px;margin:18px 0 8px}.pt-card>h3:first-child{margin-top:0}
a.pt-card{display:block;text-decoration:none;color:inherit;transition:.2s}a.pt-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px -14px rgba(13,110,253,.35);border-color:var(--blue)}
.pt-hero{background:linear-gradient(120deg,var(--blue-deep,#062a63),var(--blue) 70%,#4d9bff);color:#fff;border-radius:22px;padding:34px;margin-bottom:18px;position:relative;overflow:hidden}
.pt-hero:after{content:"";position:absolute;right:-60px;top:-60px;width:260px;height:260px;border-radius:50%;background:rgba(255,255,255,.08)}
.pt-hero h2{font-size:26px;margin:6px 0 10px;color:#fff;max-width:640px;position:relative}.pt-hero p{opacity:.9;margin:0 0 16px;max-width:560px;position:relative}.pt-hero small{opacity:.8;font-weight:600;letter-spacing:.04em;position:relative}
.pt-grid{display:grid;gap:16px;margin-bottom:18px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.pt-grid>.pt-card{margin:0}
.pt-kpi{background:#fff;border:1px solid var(--line,#e4eaf3);border-radius:16px;padding:18px 20px;display:flex;flex-direction:column;gap:2px;position:relative;text-decoration:none;color:inherit}
.pt-kpi .ic{width:20px;height:20px;color:var(--blue);margin-bottom:6px}.pt-kpi b{font-size:24px;letter-spacing:-.02em}.pt-kpi span{color:var(--muted,#5b6b82);font-size:13px}
.pt-kpi.red b{color:var(--red)}
a.pt-kpi:hover{border-color:var(--blue)}
.pt-headrow{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.pt-pct{font-size:28px;color:var(--blue)}
.pt-bar{height:9px;background:#e8eefa;border-radius:99px;overflow:hidden}.pt-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),#4d9bff);border-radius:99px;transition:width .6s}
.pt-bar.onblue{background:rgba(255,255,255,.25);max-width:520px;position:relative}.pt-bar.onblue i{background:#fff}.pt-bar.sm{height:6px;width:90px}
.pt-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:700;background:#eef2f9;color:#33465f}
.pt-tag.ok{background:#e4f7ec;color:#0a7a3f}.pt-tag.warn{background:#fff3d9;color:#946200}.pt-tag.bad{background:#fde8e8;color:#b4232a}
.pt-tag .ic{width:13px;height:13px}
.pt-note{display:flex;gap:12px;align-items:center;padding:14px 18px;border-radius:14px;margin-bottom:16px;font-weight:600;font-size:14.5px}
.pt-note .ic{width:20px;height:20px;flex:none}.pt-note.ok{background:#e4f7ec;color:#0a6a37}.pt-note.err{background:#fde8e8;color:#a3212a}.pt-note.warn{background:#fff3d9;color:#8a5b00}
.pt-note .btn{margin-left:auto}
.pt-empty{text-align:center;padding:44px 20px;color:var(--muted,#5b6b82)}.pt-empty .ic{width:44px;height:44px;color:var(--blue);opacity:.6}.pt-empty h3{color:var(--ink,#0b1b33);margin:12px 0 4px}.pt-empty p{margin:0 auto 16px;max-width:420px}
.pt-lock{text-align:center;padding:50px 24px}.pt-lock .ic{width:50px;height:50px;color:var(--blue);padding:12px;background:var(--blue-50,#eaf2ff);border-radius:50%;box-sizing:content-box}.pt-lock h2{margin:14px 0 6px}.pt-lock p{max-width:460px;margin:0 auto 20px;color:var(--muted,#5b6b82)}
.pt-row{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;text-decoration:none;color:inherit;transition:.15s}
a.pt-row:hover,.pt-row.on{background:var(--blue-50,#eaf2ff)}
.pt-row .ic{width:20px;height:20px;color:var(--blue);flex:none}.pt-row span{flex:1;min-width:0}.pt-row b{display:block;font-size:14.5px}.pt-row small{color:var(--muted,#5b6b82);font-size:12.5px}
.pt-row .bd,.bd{background:var(--red);color:#fff;font-style:normal;font-size:11px;font-weight:700;border-radius:99px;padding:1px 8px}
.pt-tablewrap{overflow:auto;border:1px solid var(--line,#e4eaf3);border-radius:14px;margin:8px 0 6px}
.pt-table{width:100%;border-collapse:collapse;font-size:14px;background:#fff}
.pt-table th{background:#f6f9fe;text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted,#5b6b82);padding:11px 14px;white-space:nowrap}
.pt-table td{padding:12px 14px;border-top:1px solid var(--line,#e4eaf3);vertical-align:middle}
.pt-table .nw{white-space:nowrap}.block{display:block}.mono{font-family:ui-monospace,Consolas,monospace;font-size:13px}.muted{color:var(--muted,#5b6b82)}.small{font-size:13px}
.pt-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.pt-tabs a{padding:9px 16px;border-radius:99px;background:#fff;border:1px solid var(--line,#e4eaf3);color:var(--ink,#0b1b33);font-weight:600;font-size:14px;text-decoration:none}
.pt-tabs a.on,.pt-tabs a:hover{background:var(--blue);border-color:var(--blue);color:#fff}
.pt-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:8px 0 12px}.pt-cols.c2{grid-template-columns:repeat(2,minmax(0,1fr))}.pt-cols.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.pt-opt{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border:1.5px solid var(--line,#e4eaf3);border-radius:14px;cursor:pointer;background:#fff;transition:.15s}
.pt-opt:hover{border-color:var(--blue)}.pt-opt:has(input:checked){border-color:var(--blue);background:var(--blue-50,#eaf2ff);box-shadow:0 0 0 3px rgba(13,110,253,.12)}
.pt-opt input{margin-top:4px;accent-color:var(--blue)}.pt-opt b{display:block}.pt-opt small{color:var(--muted,#5b6b82)}
.pt-opt[hidden]{display:none}
.pt-req{background:#f6f9fe;border-radius:14px;padding:14px 18px;margin:12px 0;font-size:14px}.pt-req ul{margin:8px 0 6px 18px;padding:0}.pt-req p{margin:6px 0 0}
.pt-bank{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;background:var(--blue-50,#eaf2ff);border-radius:16px;padding:18px;margin:14px 0}.pt-bank small{color:var(--muted,#5b6b82);display:block}.pt-bank b{font-size:17px}
.pt-filter{display:flex;gap:10px;flex-wrap:wrap}.pt-filter input,.pt-filter select,.pt-sel{flex:1;min-width:160px;padding:10px 14px;border:1.5px solid var(--line,#e4eaf3);border-radius:12px;font:inherit;background:#fff}
.pt-inline{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.pt-inline .grow{flex:1;min-width:200px}.pt-inline .sm{width:120px}
.pt-acc{background:#fff;border:1px solid var(--line,#e4eaf3);border-radius:16px;margin-bottom:12px;overflow:hidden}
.pt-acc summary{display:flex;align-items:center;gap:14px;padding:16px 20px;cursor:pointer;list-style:none}.pt-acc summary::-webkit-details-marker{display:none}
.pt-acc summary>.ic{margin-left:auto;width:20px;height:20px;color:var(--muted,#5b6b82);transition:.2s;flex:none}.pt-acc[open] summary>.ic{transform:rotate(180deg)}
.pt-acc .pad{padding:4px 20px 20px}
.pt-code{background:var(--blue-50,#eaf2ff);color:var(--blue-dark,#0a58ca);font-weight:800;font-size:12px;padding:6px 10px;border-radius:9px;white-space:nowrap}
.pt-ct{flex:1;min-width:0}.pt-ct b{display:block}.pt-ct small{color:var(--muted,#5b6b82)}
.pt-lessons{list-style:none;margin:0;padding:0 10px 12px}.pt-lessons a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;color:inherit;text-decoration:none}.pt-lessons a:hover{background:var(--blue-50,#eaf2ff)}
.pt-lessons a small{margin-left:auto;color:var(--muted,#5b6b82)}.pt-lessons .ty{width:17px;height:17px;color:var(--muted,#5b6b82)}
.ck{width:22px;height:22px;border-radius:50%;border:2px solid #cfd9ea;display:inline-grid;place-items:center;flex:none;color:transparent}.ck .ic{width:13px;height:13px}.ck.on{background:#12b76a;border-color:#12b76a;color:#fff}
.pt-lessongrid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
.pt-outline{position:sticky;top:20px}.pt-outline ol{list-style:none;margin:0;padding:0}.pt-outline li a{display:flex;gap:10px;align-items:center;padding:9px 8px;border-radius:10px;color:inherit;text-decoration:none;font-size:14px}.pt-outline li.on a{background:var(--blue-50,#eaf2ff);font-weight:700}
.pt-lesson header h2{font-size:26px;margin:4px 0 14px}.pt-lessonnav{display:flex;gap:10px;align-items:center;margin-top:26px;padding-top:18px;border-top:1px solid var(--line,#e4eaf3);flex-wrap:wrap}.sp{flex:1}
.pt-files{list-style:none;padding:0;display:grid;gap:8px}.pt-files a{display:flex;gap:10px;align-items:center;padding:12px 14px;border:1px solid var(--line,#e4eaf3);border-radius:12px;text-decoration:none;color:var(--blue-dark,#0a58ca);font-weight:600}
.prose{line-height:1.75;color:#26364f}.prose h3{margin:22px 0 8px;color:var(--ink,#0b1b33)}.prose ul,.prose ol{padding-left:22px}.prose table{width:100%;border-collapse:collapse;margin:14px 0;font-size:14px}.prose th,.prose td{border:1px solid var(--line,#e4eaf3);padding:9px 12px;text-align:left}.prose th{background:#f6f9fe}
.vid{position:relative;padding-top:56.25%;border-radius:16px;overflow:hidden;background:#0b1b33;margin:12px 0}.vid iframe,.vid video{position:absolute;inset:0;width:100%;height:100%;border:0}.vid.live{padding-top:62%}
.pt-quiz fieldset{border:1px solid var(--line,#e4eaf3);border-radius:14px;padding:16px 18px;margin:0 0 14px}.pt-quiz legend{font-weight:700;padding:0 6px}
.pt-choice{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:10px;cursor:pointer;margin:4px 0;border:1.5px solid transparent}.pt-choice:hover{background:#f4f8ff}.pt-choice input{accent-color:var(--blue)}
.pt-choice.good{background:#e4f7ec;border-color:#12b76a}.pt-choice.bad{background:#fde8e8;border-color:#f04438}
.pt-crumb{display:flex;align-items:center;gap:6px;font-size:13.5px;color:var(--muted,#5b6b82);margin-bottom:14px}.pt-crumb a{color:var(--blue-dark,#0a58ca);text-decoration:none;font-weight:600}.pt-crumb .ic{width:14px;height:14px}
.pt-date{display:inline-flex;flex-direction:column;align-items:center;background:var(--blue-50,#eaf2ff);color:var(--blue-dark,#0a58ca);border-radius:12px;padding:8px 14px;font-size:12px;font-weight:700;text-transform:uppercase}.pt-date b{font-size:22px;line-height:1}
.pt-live h3{margin:12px 0 6px}.pt-live p .ic{width:15px;height:15px;vertical-align:-2px;color:var(--blue)}
.pt-count{display:flex;align-items:baseline;gap:6px;margin:18px 0}.pt-count span{font-size:38px;font-weight:800;color:var(--blue);min-width:56px;text-align:center;background:var(--blue-50,#eaf2ff);border-radius:14px;padding:6px}.pt-count em{font-style:normal;color:var(--muted,#5b6b82);font-size:13px;margin-right:8px}
.pt-q{display:flex;gap:18px;align-items:center}.pt-q h3{margin:0 0 4px}.pt-q p{margin:0 0 6px}.pt-qa{text-align:center;min-width:64px;background:var(--blue-50,#eaf2ff);border-radius:14px;padding:10px 6px}.pt-qa b{display:block;font-size:22px;color:var(--blue-dark,#0a58ca)}.pt-qa small{color:var(--muted,#5b6b82)}
.pt-a.best{border-color:#12b76a;box-shadow:0 0 0 3px rgba(18,183,106,.12)}.inl{display:inline-block;margin:6px 6px 0 0}
.pt-msg{display:grid;grid-template-columns:300px minmax(0,1fr);gap:18px;align-items:start}.pt-threads .pt-row{padding:10px}
.pt-chat{background:#fff;border:1px solid var(--line,#e4eaf3);border-radius:18px;display:flex;flex-direction:column;height:min(70vh,640px);overflow:hidden}
.pt-chat header{padding:16px 20px;border-bottom:1px solid var(--line,#e4eaf3);display:flex;flex-direction:column}.pt-chat header small{color:var(--muted,#5b6b82)}
.chat-log{flex:1;overflow:auto;padding:18px 20px;display:flex;flex-direction:column;gap:10px;background:#f8fafd}
.msg{max-width:78%;align-self:flex-start;background:#fff;border:1px solid var(--line,#e4eaf3);border-radius:16px 16px 16px 4px;padding:10px 14px;font-size:14.5px;line-height:1.5}
.msg.me{align-self:flex-end;background:var(--blue);color:#fff;border-color:var(--blue);border-radius:16px 16px 4px 16px}
.msg small{display:block;opacity:.7;font-size:11.5px;margin-top:3px}.msg b{font-size:12.5px;display:block;margin-bottom:2px}.msg .st{color:var(--red);font-size:11px;margin-left:4px}
.chat-form{display:flex;gap:10px;padding:12px;border-top:1px solid var(--line,#e4eaf3);background:#fff}.chat-form textarea{flex:1;resize:none;border:1.5px solid var(--line,#e4eaf3);border-radius:14px;padding:11px 14px;font:inherit;max-height:120px}.chat-form textarea:focus{outline:0;border-color:var(--blue)}
.pt-room{text-align:left}.pt-room .ic{width:26px;height:26px;color:var(--blue);margin-bottom:8px}.pt-room h3{margin:0 0 4px}.pt-room form{margin-top:12px}
.pt-checks{list-style:none;padding:0;display:grid;gap:8px;margin:8px 0}.pt-checks li{display:flex;gap:10px;align-items:flex-start;font-size:14.5px}
.pt-cert>.ic{width:34px;height:34px;color:#c9a24a}
.hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}
.chk{display:flex;gap:10px;align-items:flex-start;font-size:14px;margin:10px 0;cursor:pointer}.chk input{margin-top:3px;accent-color:var(--blue);width:17px;height:17px}
.pt-check{width:20px;height:20px;accent-color:var(--blue)}
.pt-card.sub{background:#f8fafd}
@media(max-width:1100px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.pt-lessongrid{grid-template-columns:1fr}.pt-outline{position:static}}
@media(max-width:860px){
 .pt{grid-template-columns:1fr}
 .pt-side{position:fixed;left:0;top:0;bottom:0;width:280px;transform:translateX(-102%);transition:transform .25s;box-shadow:0 0 40px rgba(0,0,0,.2);height:100%}
 .pt-side.open{transform:none}.pt-burger{display:grid}
 .pt-topbar{padding:16px 16px 0}.pt-topbar h1{font-size:21px}.pt-main{padding:16px 16px 50px}
 .g2,.g3,.pt-cols.c2,.pt-cols.c3{grid-template-columns:1fr}.pt-msg{grid-template-columns:1fr}.pt-hero{padding:24px}.pt-hero h2{font-size:21px}
 .pt-q{flex-wrap:wrap}.pt-inline .sm{width:100%}
}
@media(max-width:520px){.g4{grid-template-columns:1fr 1fr}.pt-kpi b{font-size:20px}.pt-card{padding:18px}}
