/* ==========================================================================
   CLIENT PORTAL  -  login + dashboard (loads after yes.css)
   ========================================================================== */
body.portal-authed .site-nav-wrap, body.portal-authed #loginView, body.portal-authed .site-footer { display: none !important; }
.portal-body { --pt-line: rgba(255,255,255,.1); --pt-glass: rgba(255,255,255,.045); --pt-ok: #34d399; --pt-warn: #fbbf24; --pt-bad: #f87171; --pt-info: #38bdf8; }

/* ---------- Login ---------- */
.portal-login { position: relative; overflow: hidden; background: radial-gradient(circle at 15% 20%, rgba(56,189,248,.14), transparent 45%), radial-gradient(circle at 85% 80%, rgba(245,158,11,.14), transparent 45%), #0f172a; }
.pt-orb { position: absolute; border-radius: 50%; filter: blur(60px); opacity: .45; pointer-events: none; animation: ptFloat 12s ease-in-out infinite alternate; }
.pt-orb.o1 { width: 280px; height: 280px; background: #0ea5e9; top: -60px; left: -80px; }
.pt-orb.o2 { width: 320px; height: 320px; background: #f59e0b; bottom: -100px; right: -90px; animation-delay: -5s; opacity: .3; }
@keyframes ptFloat { from { transform: translate(0,0) scale(1); } to { transform: translate(30px,-26px) scale(1.12); } }
.pt-glass { background: var(--pt-glass); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); border: 1px solid var(--pt-line); border-radius: 24px; box-shadow: 0 24px 60px rgba(0,0,0,.4); }
.pt-login-card { position: relative; animation: ptUp .8s var(--transition-smooth) both; }
.pt-login-card.shake { animation: ptShake .5s; }
@keyframes ptShake { 20%,60% { transform: translateX(-9px); } 40%,80% { transform: translateX(9px); } }
.pt-lock { width: 64px; height: 64px; border-radius: 18px; display: inline-flex; align-items: center; justify-content: center; font-size: 1.9rem; color: #0f172a; background: linear-gradient(135deg, var(--gold-light), var(--gold-accent)); box-shadow: 0 10px 26px rgba(245,158,11,.4); animation: ptPulse 3s ease-in-out infinite; }
@keyframes ptPulse { 50% { box-shadow: 0 10px 38px rgba(245,158,11,.7); } }
.pt-feature { display: flex; gap: .9rem; align-items: flex-start; text-align: left; padding: .9rem 1rem; border-radius: 16px; background: var(--pt-glass); border: 1px solid var(--pt-line); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); transition: transform .35s var(--transition-smooth), border-color .35s; animation: ptUp .7s var(--transition-smooth) both; animation-delay: calc(var(--i, 0) * 90ms + 200ms); }
.pt-feature:hover { transform: translateX(6px); border-color: rgba(245,158,11,.45); }
.pt-feature i { font-size: 1.4rem; color: var(--gold-light); }
.pt-eye { position: absolute; top: 50%; right: .5rem; transform: translateY(-50%); z-index: 5; width: 44px; height: 44px; background: transparent; border: 0; color: #cbd5e1; border-radius: 10px; }
.pt-eye:hover { color: #fff; background: rgba(255,255,255,.08); }
#loginForm .is-invalid { border-color: var(--pt-bad) !important; }
#loginForm .invalid-feedback { color: #fca5a5; }
.pt-alert { border-radius: 12px; border: 1px solid; font-size: .9rem; }
.pt-alert.err { background: rgba(248,113,113,.12); color: #fecaca; border-color: rgba(248,113,113,.4); }
.pt-alert.info { background: rgba(56,189,248,.12); color: #bae6fd; border-color: rgba(56,189,248,.4); }
.pt-demo { border: 1px dashed rgba(251,191,36,.5); background: rgba(251,191,36,.07); border-radius: 14px; padding: .8rem 1rem; font-size: .85rem; }
.pt-welcome { position: fixed; inset: 0; z-index: 3000; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; background: radial-gradient(circle at 50% 40%, #1e293b, #0f172a 70%); animation: ptFade .4s both; text-align: center; padding: 1rem; }
.pt-welcome.out { animation: ptFadeOut .5s forwards; }
.pt-welcome .ck { width: 96px; height: 96px; }
.pt-welcome .ck circle { stroke-dasharray: 290; stroke-dashoffset: 290; animation: ptDraw .8s .1s forwards; }
.pt-welcome .ck path { stroke-dasharray: 60; stroke-dashoffset: 60; animation: ptDraw .5s .75s forwards; }
@keyframes ptDraw { to { stroke-dashoffset: 0; } }
@keyframes ptFade { from { opacity: 0; } } @keyframes ptFadeOut { to { opacity: 0; visibility: hidden; } }
@keyframes ptUp { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }

/* ---------- App shell ---------- */
.portal-app { display: flex; min-height: 100vh; min-height: 100dvh; background: radial-gradient(circle at 80% -10%, rgba(56,189,248,.1), transparent 40%), radial-gradient(circle at 0% 100%, rgba(245,158,11,.08), transparent 40%), #0f172a; }
.portal-app[hidden] { display: none; }
.pt-side-col { --bs-offcanvas-width: 292px; --bs-offcanvas-bg: #0b1220; --bs-offcanvas-color: #e2e8f0; }
.pt-side-col .offcanvas-body { display: block; padding: 0; overflow-y: auto; }
.pt-side-inner { display: flex; flex-direction: column; min-height: 100%; padding: 1.25rem 1rem; }
.pt-brand { display: flex; align-items: center; gap: .75rem; text-decoration: none; padding: .25rem .5rem 1.25rem; }
.pt-navlink { display: flex; align-items: center; gap: .85rem; padding: .8rem 1rem; margin-bottom: .25rem; border-radius: 12px; color: #cbd5e1; text-decoration: none; font-weight: 600; position: relative; transition: all .25s var(--transition-smooth); }
.pt-navlink i { font-size: 1.15rem; width: 1.4rem; text-align: center; }
.pt-navlink:hover { background: rgba(255,255,255,.07); color: #fff; transform: translateX(4px); }
.pt-navlink.active { background: linear-gradient(135deg, rgba(245,158,11,.22), rgba(245,158,11,.06)); color: #fde68a; box-shadow: inset 3px 0 0 var(--gold-accent); }
.pt-count { margin-left: auto; min-width: 24px; height: 24px; padding: 0 7px; border-radius: 12px; font-size: .75rem; display: inline-flex; align-items: center; justify-content: center; background: var(--gold-accent); color: #0f172a; font-weight: 800; }
.pt-count:empty, .pt-count[data-n="0"] { display: none; }
.pt-side-foot { margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--pt-line); }
@media (min-width: 992px) {
  .pt-side-col { flex: 0 0 280px; width: 280px; position: sticky; top: 0; height: 100vh; height: 100dvh; background: #0b1220; border-right: 1px solid var(--pt-line); display: flex; flex-direction: column; }
  .pt-side-col .offcanvas-lg { height: 100% !important; }
  .pt-side-col .offcanvas-body { height: 100%; }
}
.pt-main { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; }
.pt-topbar { position: sticky; top: 0; z-index: 1020; display: flex; align-items: center; gap: .75rem; padding: .7rem clamp(1rem, 3vw, 2rem); background: rgba(15,23,42,.78); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-bottom: 1px solid var(--pt-line); }
.pt-iconbtn { position: relative; width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; border-radius: 12px; color: #e2e8f0; background: var(--pt-glass); border: 1px solid var(--pt-line); transition: all .25s; }
.pt-iconbtn:hover { background: rgba(255,255,255,.14); color: #fff; }
.pt-dot { position: absolute; top: 6px; right: 6px; min-width: 18px; height: 18px; padding: 0 4px; border-radius: 9px; background: var(--pt-bad); color: #fff; font-size: .65rem; font-weight: 800; display: flex; align-items: center; justify-content: center; }
.pt-dot[data-n="0"] { display: none; }
.pt-avatar { width: 40px; height: 40px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: 800; color: #0f172a; background: linear-gradient(135deg, var(--gold-light), #38bdf8); flex-shrink: 0; }
.pt-menu { background: rgba(15,23,42,.97); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); border: 1px solid var(--pt-line); border-radius: 16px; box-shadow: 0 20px 40px rgba(0,0,0,.5); padding: .5rem; min-width: min(340px, calc(100vw - 1.5rem)); }
.pt-menu .dropdown-item { color: #e2e8f0; border-radius: 10px; padding: .6rem .8rem; white-space: normal; }
.pt-menu .dropdown-item:hover { background: rgba(255,255,255,.08); color: #fff; }
.pt-content { width: 100%; max-width: 1400px; margin-inline: auto; padding: clamp(1rem, 3vw, 2rem); }
.portal-view.view-in { animation: ptFade .4s both; }
.pt-card { background: var(--pt-glass); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border: 1px solid var(--pt-line); border-radius: 20px; padding: clamp(1rem, 2.5vw, 1.5rem); transition: transform .35s var(--transition-smooth), border-color .35s, box-shadow .35s; }
.view-in .pt-card, .view-in .pt-stat { animation: ptUp .6s var(--transition-smooth) both; animation-delay: calc(var(--i, 0) * 70ms); }
.pt-card:hover { border-color: rgba(245,158,11,.35); box-shadow: 0 16px 34px rgba(0,0,0,.3); }
.pt-card-title { font-size: 1.05rem; font-weight: 700; color: #fff; display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: 1rem; }
.pt-hero { background: linear-gradient(135deg, rgba(245,158,11,.14), rgba(56,189,248,.1)); }
.pt-stat { background: var(--pt-glass); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border: 1px solid var(--pt-line); border-radius: 20px; padding: 1.15rem; display: flex; gap: 1rem; align-items: center; height: 100%; transition: transform .35s var(--transition-smooth), border-color .35s; }
.pt-stat:hover { transform: translateY(-5px); border-color: rgba(56,189,248,.5); }
.pt-stat-icon { width: 52px; height: 52px; flex-shrink: 0; border-radius: 14px; display: inline-flex; align-items: center; justify-content: center; font-size: 1.4rem; color: #0f172a; }
.pt-stat-num { font-size: clamp(1.3rem, 2.6vw, 1.75rem); font-weight: 800; color: #fff; line-height: 1.1; }
.g-gold { background: linear-gradient(135deg, #fde68a, #f59e0b); } .g-blue { background: linear-gradient(135deg, #bae6fd, #38bdf8); } .g-green { background: linear-gradient(135deg, #a7f3d0, #34d399); } .g-red { background: linear-gradient(135deg, #fecaca, #f87171); } .g-violet { background: linear-gradient(135deg, #ddd6fe, #a78bfa); }
.pt-badge { display: inline-flex; align-items: center; gap: 5px; padding: 4px 12px; border-radius: 50px; font-size: .75rem; font-weight: 700; border: 1px solid; white-space: nowrap; }
.b-ok { color: #6ee7b7; background: rgba(52,211,153,.12); border-color: rgba(52,211,153,.4); } .b-warn { color: #fcd34d; background: rgba(251,191,36,.12); border-color: rgba(251,191,36,.4); } .b-bad { color: #fca5a5; background: rgba(248,113,113,.12); border-color: rgba(248,113,113,.4); } .b-info { color: #7dd3fc; background: rgba(56,189,248,.12); border-color: rgba(56,189,248,.4); } .b-vio { color: #c4b5fd; background: rgba(167,139,250,.12); border-color: rgba(167,139,250,.4); }

/* Ring, bars, steps, timeline */
.pt-ring { position: relative; width: 150px; height: 150px; flex-shrink: 0; }
.pt-ring svg { transform: rotate(-90deg); width: 100%; height: 100%; }
.pt-ring-bg { stroke: rgba(255,255,255,.1); } .pt-ring-fg { stroke: url(#ptGrad); stroke-linecap: round; transition: stroke-dashoffset 1.5s var(--transition-smooth); }
.pt-ring-num { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 2rem; font-weight: 800; color: #fff; }
.pt-ring-num small { font-size: .7rem; color: #94a3b8; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.pt-bar { height: 10px; border-radius: 10px; background: rgba(255,255,255,.1); overflow: hidden; }
.pt-fill { height: 100%; width: 0; border-radius: 10px; background: linear-gradient(90deg, #f59e0b, #fbbf24, #38bdf8); background-size: 200% 100%; animation: ptShine 3s linear infinite; transition: width 1.4s var(--transition-smooth); }
@keyframes ptShine { to { background-position: -200% 0; } }
.pt-steps { display: flex; list-style: none; padding: 0; margin: 0; }
.pt-step { flex: 1; text-align: center; position: relative; padding: 0 .25rem; }
.pt-step::before { content: ''; position: absolute; top: 20px; left: -50%; width: 100%; height: 3px; background: rgba(255,255,255,.12); z-index: 0; }
.pt-step:first-child::before { display: none; }
.pt-step.done::before, .pt-step.current::before { background: linear-gradient(90deg, var(--gold-accent), var(--gold-light)); }
.pt-step-dot { position: relative; z-index: 1; width: 42px; height: 42px; margin: 0 auto .6rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: #1e293b; border: 2px solid rgba(255,255,255,.18); color: #94a3b8; font-weight: 700; }
.pt-step.done .pt-step-dot { background: linear-gradient(135deg, var(--gold-light), var(--gold-accent)); border-color: transparent; color: #0f172a; }
.pt-step.current .pt-step-dot { border-color: var(--gold-light); color: #fde68a; animation: ptRing 2s infinite; }
@keyframes ptRing { 0% { box-shadow: 0 0 0 0 rgba(251,191,36,.6); } 100% { box-shadow: 0 0 0 14px rgba(251,191,36,0); } }
.pt-step-label { font-size: .8rem; color: #94a3b8; font-weight: 600; } .pt-step.done .pt-step-label, .pt-step.current .pt-step-label { color: #f1f5f9; }
.pt-timeline { list-style: none; margin: 0; padding: 0 0 0 1.4rem; position: relative; }
.pt-timeline::before { content: ''; position: absolute; left: 6px; top: 6px; bottom: 6px; width: 2px; background: linear-gradient(180deg, var(--gold-accent), rgba(255,255,255,.1)); }
.pt-timeline li { position: relative; padding-bottom: 1.1rem; }
.pt-timeline li::before { content: ''; position: absolute; left: -1.4rem; top: 5px; width: 14px; height: 14px; border-radius: 50%; background: #0f172a; border: 3px solid var(--gold-accent); }
.pt-pill { background: rgba(255,255,255,.06); color: #e2e8f0; border: 1px solid rgba(255,255,255,.2); border-radius: 50px; padding: .5rem 1.1rem; font-weight: 600; font-size: .9rem; transition: all .25s; }
.pt-pill:hover { background: rgba(255,255,255,.14); } .pt-pill.active { background: linear-gradient(135deg, var(--gold-accent), var(--gold-dark)); color: #0f172a; border-color: transparent; }

/* Rows (appointments, invoices, tasks, docs) */
.pt-row { display: flex; align-items: center; gap: 1rem; padding: .9rem 1rem; border-radius: 16px; background: rgba(255,255,255,.03); border: 1px solid var(--pt-line); margin-bottom: .75rem; transition: transform .3s var(--transition-smooth), border-color .3s, background .3s; }
.pt-row:hover { transform: translateX(5px); border-color: rgba(56,189,248,.45); background: rgba(255,255,255,.06); }
.pt-datebox { width: 62px; flex-shrink: 0; text-align: center; border-radius: 14px; padding: .45rem 0; background: linear-gradient(135deg, rgba(245,158,11,.25), rgba(245,158,11,.08)); border: 1px solid rgba(245,158,11,.4); line-height: 1.1; }
.pt-datebox b { display: block; font-size: 1.5rem; color: #fff; } .pt-datebox span { font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; color: #fde68a; font-weight: 700; }
.pt-row.is-flex-wrap { flex-wrap: wrap; }
.pt-cal { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; text-align: center; }
.pt-cal .h { font-size: .7rem; color: #94a3b8; font-weight: 700; text-transform: uppercase; padding: 4px 0; }
.pt-cal .d { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; border-radius: 10px; font-size: .85rem; color: #cbd5e1; position: relative; }
.pt-cal .d.t { box-shadow: inset 0 0 0 2px var(--pt-info); color: #fff; } .pt-cal .d.e { background: rgba(245,158,11,.22); color: #fde68a; font-weight: 800; }
.pt-cal .d.e::after { content: ''; position: absolute; bottom: 4px; width: 5px; height: 5px; border-radius: 50%; background: var(--gold-light); }
.pt-check { width: 26px; height: 26px; flex-shrink: 0; border-radius: 8px; border: 2px solid rgba(255,255,255,.35); background: transparent; display: inline-flex; align-items: center; justify-content: center; color: transparent; transition: all .25s; padding: 0; }
.pt-check:hover { border-color: var(--gold-light); }
.pt-task.done .pt-check { background: linear-gradient(135deg, var(--gold-light), var(--gold-accent)); border-color: transparent; color: #0f172a; }
.pt-task.done .pt-task-title { text-decoration: line-through; color: #94a3b8; }
.pt-task.removing { opacity: 0; transform: translateX(40px); transition: all .35s; }
.pt-donut { --p: 0%; width: 150px; aspect-ratio: 1; border-radius: 50%; flex-shrink: 0; position: relative; background: conic-gradient(#34d399 0 var(--p), #fbbf24 var(--p) 100%); transition: --p 1s; }
.pt-donut::after { content: ''; position: absolute; inset: 18px; border-radius: 50%; background: #131c2f; }
.pt-donut span { position: absolute; inset: 0; z-index: 1; display: flex; align-items: center; justify-content: center; flex-direction: column; font-weight: 800; color: #fff; font-size: 1.4rem; }
.pt-donut small { font-size: .65rem; color: #94a3b8; text-transform: uppercase; letter-spacing: .08em; }
.pt-drop { border: 2px dashed rgba(255,255,255,.25); border-radius: 18px; padding: 1.5rem; text-align: center; transition: all .25s; cursor: pointer; }
.pt-drop:hover, .pt-drop.over { border-color: var(--gold-light); background: rgba(245,158,11,.08); }
.pt-ficon { width: 46px; height: 46px; flex-shrink: 0; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; font-size: 1.4rem; color: #0f172a; }

/* Messages */
.pt-chat { display: grid; grid-template-columns: 330px 1fr; height: calc(100dvh - 190px); min-height: 500px; padding: 0; overflow: hidden; }
.pt-threads { border-right: 1px solid var(--pt-line); overflow-y: auto; padding: .75rem; }
.pt-thread { width: 100%; display: flex; gap: .8rem; align-items: center; text-align: left; padding: .8rem; border-radius: 14px; background: transparent; border: 1px solid transparent; color: #e2e8f0; transition: all .25s; }
.pt-thread:hover { background: rgba(255,255,255,.06); } .pt-thread.active { background: rgba(245,158,11,.12); border-color: rgba(245,158,11,.4); }
.pt-chat-pane { display: flex; flex-direction: column; min-width: 0; }
.pt-chat-head { display: flex; align-items: center; gap: .8rem; padding: .9rem 1.1rem; border-bottom: 1px solid var(--pt-line); }
.pt-msgs { flex: 1; overflow-y: auto; padding: 1.1rem; display: flex; flex-direction: column; gap: .6rem; scroll-behavior: smooth; }
.pt-msg { max-width: min(78%, 520px); padding: .65rem .95rem; border-radius: 18px; font-size: .95rem; line-height: 1.45; overflow-wrap: anywhere; white-space: pre-wrap; animation: ptPop .35s var(--transition-smooth) both; }
.pt-msg small { display: block; font-size: .68rem; opacity: .7; margin-top: 4px; }
.pt-msg.me { align-self: flex-end; background: linear-gradient(135deg, #fbbf24, #f59e0b); color: #0f172a; border-bottom-right-radius: 5px; }
.pt-msg.them { align-self: flex-start; background: rgba(255,255,255,.1); border: 1px solid var(--pt-line); color: #f1f5f9; border-bottom-left-radius: 5px; }
@keyframes ptPop { from { opacity: 0; transform: translateY(10px) scale(.96); } }
.pt-typing span { display: inline-block; width: 7px; height: 7px; margin: 0 2px; border-radius: 50%; background: #94a3b8; animation: ptBounce 1s infinite; } .pt-typing span:nth-child(2) { animation-delay: .15s; } .pt-typing span:nth-child(3) { animation-delay: .3s; }
@keyframes ptBounce { 40% { transform: translateY(-6px); background: #fff; } }
.pt-compose { display: flex; gap: .6rem; padding: .8rem 1rem; border-top: 1px solid var(--pt-line); align-items: flex-end; }
.pt-compose textarea { resize: none; max-height: 120px; }
.pt-unread { width: 10px; height: 10px; border-radius: 50%; background: var(--gold-accent); box-shadow: 0 0 10px var(--gold-accent); flex-shrink: 0; }

/* Forms / switches / toasts */
.pt-field { background: rgba(255,255,255,.06) !important; border: 1px solid rgba(255,255,255,.18) !important; color: #fff !important; border-radius: 12px !important; }
.pt-field:focus { border-color: var(--gold-accent) !important; box-shadow: 0 0 0 .2rem rgba(245,158,11,.25) !important; }
.pt-field option { color: #0f172a; background: #fff; }
.form-switch .form-check-input { width: 2.8em; height: 1.5em; background-color: rgba(255,255,255,.2); border-color: rgba(255,255,255,.35); cursor: pointer; }
.form-switch .form-check-input:checked { background-color: var(--gold-accent); border-color: var(--gold-accent); }
.pt-toasts { z-index: 4000; }
.pt-toast { min-width: 260px; background: rgba(15,23,42,.96) !important; color: #f1f5f9 !important; border: 1px solid var(--pt-line) !important; border-left: 4px solid var(--gold-accent) !important; border-radius: 14px !important; backdrop-filter: blur(14px); box-shadow: 0 14px 34px rgba(0,0,0,.5); }
.pt-toast.ok { border-left-color: var(--pt-ok) !important; } .pt-toast.err { border-left-color: var(--pt-bad) !important; }
.modal-content.pt-modal { background: rgba(15,23,42,.97); color: #e2e8f0; border: 1px solid var(--pt-line); border-radius: 22px; backdrop-filter: blur(20px); }
.pt-modal .modal-header, .pt-modal .modal-footer { border-color: var(--pt-line); }
.pt-modal .btn-close { filter: invert(1) grayscale(1) brightness(2); }

/* ---------- Responsive ---------- */
@media (max-width: 991.98px) { .pt-chat { height: calc(100dvh - 170px); } }
@media (max-width: 767.98px) {
  .pt-chat { grid-template-columns: 1fr; height: calc(100dvh - 160px); }
  .pt-chat .pt-chat-pane { display: none; } .pt-chat.chat-open .pt-chat-pane { display: flex; } .pt-chat.chat-open .pt-threads { display: none; }
  .pt-threads { border-right: 0; }
  .pt-steps { flex-direction: column; gap: .2rem; }
  .pt-step { display: flex; align-items: center; gap: .9rem; text-align: left; padding: 0 0 1rem; }
  .pt-step::before { top: -50%; left: 20px; width: 3px; height: 100%; }
  .pt-step-dot { margin: 0; flex-shrink: 0; }
  .pt-row { flex-wrap: wrap; } .pt-row:hover, .pt-stat:hover { transform: none; }
  .pt-msg { max-width: 88%; }
}
@media (max-width: 575.98px) { .pt-ring { width: 120px; height: 120px; } .pt-donut { width: 120px; } .pt-stat { padding: .9rem; } .pt-stat-icon { width: 44px; height: 44px; font-size: 1.2rem; } .pt-login-card { border-radius: 20px; } }
@media (hover: none) { .pt-card:hover, .pt-row:hover, .pt-stat:hover, .pt-feature:hover, .pt-navlink:hover { transform: none; } }
@media print { .pt-side-col, .pt-topbar { display: none !important; } }
