:root {
    --ptk-primary: #0F4C81;
    --ptk-secondary: #168AAD;
    --ptk-bg: #F5F7FA;
    --ptk-surface: #FFFFFF;
    --ptk-text: #1F2937;
    --ptk-muted: #6B7280;
    --ptk-border: #DDE4EC;
    --ptk-success: #16A34A;
    --ptk-warning: #F59E0B;
    --ptk-danger: #DC2626;
    --ptk-radius: 10px;
    --ptk-shadow: 0 8px 26px rgba(15, 76, 129, .08);
}

body { background: var(--ptk-bg); color: var(--ptk-text); }
.ptk-app-shell { min-height: 100vh; background: var(--ptk-bg); }
.ptk-app-header {
    min-height: 68px; padding: 10px 24px; background: var(--ptk-surface);
    border-bottom: 1px solid var(--ptk-border); display: flex; align-items: center;
    justify-content: space-between; position: sticky; top: 0; z-index: 1000;
    box-shadow: 0 2px 12px rgba(15,76,129,.04);
}
.ptk-brand-link { display:flex; align-items:center; gap:12px; color:var(--ptk-text); text-decoration:none!important; }
.ptk-app-logo { width:44px; height:44px; object-fit:contain; }
.ptk-brand-link strong { display:block; font-size:20px; line-height:1.1; color:var(--ptk-primary); letter-spacing:.2px; }
.ptk-brand-link small { display:block; margin-top:3px; font-size:12px; color:var(--ptk-muted); max-width:560px; }
.ptk-app-account { display:flex; align-items:center; gap:8px; }
.ptk-account-link, .ptk-logout-link { display:inline-flex; align-items:center; gap:7px; padding:8px 12px; border-radius:8px; color:var(--ptk-primary); background:#EEF5FB; text-decoration:none!important; }
.ptk-logout-link { padding:8px 10px; }
.ptk-app-main { max-width: 1500px; margin:0 auto; padding:22px 24px 36px; }
.ptk-app-footer { padding:18px 24px; text-align:center; color:var(--ptk-muted); font-size:12px; border-top:1px solid var(--ptk-border); background:#fff; }

.ptk-app-nav { display:flex; flex-wrap:wrap; gap:6px; padding:7px; margin-bottom:18px; background:#fff; border:1px solid var(--ptk-border); border-radius:var(--ptk-radius); box-shadow:var(--ptk-shadow); }
.ptk-app-nav a { display:inline-flex; align-items:center; min-height:38px; padding:8px 14px; border-radius:7px; color:#334155; font-weight:600; text-decoration:none!important; }
.ptk-app-nav a:hover { color:#fff; background:var(--ptk-primary); }
.ptk-app-nav .ptk-nav-login { margin-left:auto; color:var(--ptk-primary); background:#EEF5FB; }

.ptktxh-page, .ptk-dashboard { background:#fff; border:1px solid var(--ptk-border); border-radius:var(--ptk-radius); box-shadow:var(--ptk-shadow); padding:20px; margin-bottom:20px; }
.ptktxh-page-head, .ptk-dashboard-head { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:18px; }
.ptktxh-page-head h2, .ptktxh-page-head h3, .ptk-dashboard-head h2 { margin:0 0 5px; color:var(--ptk-primary); font-weight:700; }
.ptktxh-page-head p, .ptk-dashboard-head p { margin:0; color:var(--ptk-muted); }
.ptk-dashboard { padding:0; background:transparent; border:0; box-shadow:none; }
.ptk-dashboard-head { background:#fff; padding:18px 20px; border:1px solid var(--ptk-border); border-radius:var(--ptk-radius); box-shadow:var(--ptk-shadow); }

.ptk-kpi-grid { margin-bottom:14px; }
.ptk-kpi { display:block; min-height:122px; margin-bottom:14px; padding:18px; background:#fff; border:1px solid var(--ptk-border); border-radius:var(--ptk-radius); box-shadow:var(--ptk-shadow); color:var(--ptk-text); text-decoration:none!important; transition:.15s ease; }
.ptk-kpi:hover { transform:translateY(-2px); border-color:#B9CFE2; }
.ptk-kpi i { float:right; font-size:25px; color:#9FB9D1; }
.ptk-kpi strong { display:block; font-size:30px; line-height:1; color:var(--ptk-primary); }
.ptk-kpi span { display:block; margin-top:10px; color:var(--ptk-muted); font-weight:600; }
.ptk-report-stat { min-height:105px; margin-bottom:14px; padding:16px; background:#F8FAFC; border:1px solid var(--ptk-border); border-radius:9px; }
.ptk-report-stat strong { display:block; font-size:27px; color:var(--ptk-primary); }
.ptk-report-stat span { color:var(--ptk-muted); }

.ptk-public-hero { margin-bottom:18px; padding:34px; border-radius:14px; color:#fff; background:linear-gradient(135deg,#0F4C81 0%,#168AAD 100%); box-shadow:0 16px 40px rgba(15,76,129,.18); }
.ptk-public-hero h1 { margin:8px 0 10px; color:#fff; font-size:29px; line-height:1.25; font-weight:700; }
.ptk-public-hero p { max-width:850px; margin:0; color:rgba(255,255,255,.9); font-size:15px; }
.ptk-eyebrow { display:inline-block; font-size:11px; font-weight:700; letter-spacing:1.2px; opacity:.9; }
.ptk-public-stats { margin-top:26px; }
.ptk-public-stats > div { padding-top:10px; padding-bottom:10px; border-right:1px solid rgba(255,255,255,.18); }
.ptk-public-stats > div:last-child { border-right:0; }
.ptk-public-stats strong { display:block; font-size:29px; line-height:1; }
.ptk-public-stats span { display:block; margin-top:7px; font-size:12px; opacity:.9; }
.ptk-public-filter { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:18px; padding:12px; background:#fff; border:1px solid var(--ptk-border); border-radius:10px; }
.ptk-public-filter input { min-height:38px; padding:7px 10px; border:1px solid #CBD5E1; border-radius:6px; }
.ptk-public-filter input[type=text] { flex:1; min-width:240px; }

.ptk-check-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; max-height:420px; overflow:auto; padding:8px; border:1px solid var(--ptk-border); border-radius:8px; background:#F8FAFC; }
.ptk-check { display:block; margin:0; padding:9px 10px; background:#fff; border:1px solid #E5EAF0; border-radius:7px; font-weight:400; cursor:pointer; }
.ptk-check small { display:block; margin-left:20px; margin-top:3px; color:var(--ptk-muted); }
.ptk-actions { margin:16px 0 4px; padding-top:14px; border-top:1px solid var(--ptk-border); }

.ct-code { display:inline-block; padding:3px 7px; border-radius:5px; background:#EEF5FB; color:var(--ptk-primary); font-size:11px; font-weight:700; white-space:nowrap; }
.table { margin-bottom:0; }
.table > thead > tr > th { background:#F0F5F9; color:#334155; border-color:#D9E2EA; vertical-align:middle; }
.table > tbody > tr > td { border-color:#E4EAF0; vertical-align:middle; }
.table-striped > tbody > tr:nth-of-type(odd) { background-color:#FBFCFD; }
.form-control { border-color:#CBD5E1; box-shadow:none; border-radius:6px; }
.form-control:focus { border-color:#5A9BCB; box-shadow:0 0 0 2px rgba(22,138,173,.12); }
.btn { border-radius:6px; }
.btn-primary { background:var(--ptk-primary); border-color:var(--ptk-primary); }
.btn-success { background:var(--ptk-success); border-color:var(--ptk-success); }
.progress { height:20px; background:#E9EEF3; box-shadow:none; }
.progress-bar { background:var(--ptk-secondary); line-height:20px; }

@media (max-width: 767px) {
    .ptk-app-header { padding:9px 12px; }
    .ptk-app-logo { width:36px; height:36px; }
    .ptk-brand-link small { display:none; }
    .ptk-account-link { font-size:0; padding:8px 10px; }
    .ptk-account-link i { font-size:14px; }
    .ptk-app-main { padding:12px; }
    .ptk-app-nav { overflow-x:auto; flex-wrap:nowrap; }
    .ptk-app-nav a { white-space:nowrap; }
    .ptk-app-nav .ptk-nav-login { margin-left:0; }
    .ptk-public-hero { padding:22px 18px; }
    .ptk-public-hero h1 { font-size:22px; }
    .ptk-public-stats > div { border-right:0; border-bottom:1px solid rgba(255,255,255,.15); }
    .ptk-check-grid { grid-template-columns:1fr; }
    .ptktxh-page, .ptk-dashboard-head { padding:14px; }
    .ptktxh-page-head, .ptk-dashboard-head { display:block; }
    .ptk-dashboard-head .btn { margin-top:10px; }
}

/* PTKTXH 4.6.15 - application navigation */
.ptk-app-nav a i { width:17px; text-align:center; margin-right:7px; color:#6F91AD; }
.ptk-app-nav a:hover i, .ptk-app-nav a.active i { color:#fff; }
.ptk-app-nav a.active { color:#fff; background:var(--ptk-primary); }

@media (min-width: 992px) {
    .ptk-app-main:has(> .ptk-app-nav-internal) {
        display:grid;
        grid-template-columns:230px minmax(0,1fr);
        column-gap:20px;
        align-items:start;
    }
    .ptk-app-main > .ptk-app-nav-internal {
        grid-column:1;
        grid-row:1 / span 50;
        position:sticky;
        top:90px;
        display:flex;
        flex-direction:column;
        flex-wrap:nowrap;
        gap:4px;
        padding:9px;
        margin-bottom:0;
    }
    .ptk-app-main > .ptk-app-nav-internal a {
        width:100%;
        justify-content:flex-start;
    }
    .ptk-app-main:has(> .ptk-app-nav-internal) > :not(.ptk-app-nav-internal) {
        grid-column:2;
        min-width:0;
    }
}


/* PTKTXH 4.6.19 - clean application shell, independent of legacy Default layout mappings */
html, body { min-height:100%; }
body { margin:0; background:var(--ptk-bg)!important; background-image:none!important; }
.ptk-app-brand { min-width:0; }
.ptk-brand-mark { width:42px; height:42px; flex:0 0 42px; display:inline-flex; align-items:center; justify-content:center; border-radius:11px; color:#fff; background:linear-gradient(135deg,var(--ptk-primary),var(--ptk-secondary)); box-shadow:0 8px 18px rgba(15,76,129,.18); }
.ptk-brand-mark i { font-size:19px; }
.ptk-brand-copy { min-width:0; }
.ptk-app-footer { display:flex; flex-direction:column; gap:3px; }
.ptk-app-footer strong { color:#475569; font-size:12px; font-weight:600; }
.ptk-app-footer span { color:#94A3B8; font-size:11px; }
.site-banner,.section-header-bar,.section-header,.section-nav,.section-footer-top,.section-footer-bottom,.fix_banner_left,.fix_banner_right { display:none!important; }
@media (max-width:767px) { .ptk-brand-mark { width:36px; height:36px; flex-basis:36px; } .ptk-brand-copy small { display:none; } }


/* PTKTXH 4.6.20 - explicit test-data visualization */
.ptk-demo-badge { display:inline-block; margin-left:6px; padding:2px 6px; border-radius:999px; background:#FFF4D6; border:1px solid #F4C76A; color:#8A5A00; font-size:10px; line-height:1.4; font-weight:700; vertical-align:middle; letter-spacing:.3px; }
.table > tbody > tr.ptk-test-row > td { background:#FFFCF2; }
.ptk-test-row:hover > td { background:#FFF8E6!important; }

/* PTKTXH 4.6.21 - RBAC-aware navigation and task filters */
.ptk-app-nav .ptk-nav-note { display:inline-flex; align-items:center; gap:7px; min-height:38px; padding:8px 12px; margin-left:auto; border-radius:7px; color:#7C5B00; background:#FFF7DB; border:1px solid #F2D98D; font-size:12px; font-weight:600; }
.ptk-task-filter { padding:12px; border:1px solid var(--ptk-border); border-radius:8px; background:#F8FAFC; }
.ptk-task-filter .form-control { margin-bottom:4px; }
.ptk-task-filter .checkbox-inline { margin:0 8px 4px 2px; }
@media (max-width:767px) {
    .ptk-app-nav .ptk-nav-note { margin-left:0; white-space:nowrap; }
    .ptk-task-filter .form-control { width:100%; margin:0 0 8px; }
    .ptk-task-filter .checkbox-inline { display:inline-block; margin-bottom:8px; }
}

/* PTKTXH 4.6.26 - unified frontend operations workspace */
.ct-admin-wrap{margin-bottom:18px}.ct-topbar{padding:12px 14px;background:#f5f7fa;border:1px solid var(--ptk-border);border-radius:10px 10px 0 0}.ct-module-title{font-size:17px;font-weight:700;color:var(--ptk-primary)}.ct-module-subtitle{color:var(--ptk-muted);margin-top:3px}.ct-tabs{display:flex;flex-wrap:wrap;gap:6px;padding:10px;background:#fff;border:1px solid var(--ptk-border);border-top:0;border-radius:0 0 10px 10px}.ct-tab{display:inline-block;padding:7px 10px;border-radius:6px;background:#eef4f8;color:#27445d;text-decoration:none!important;font-weight:600}.ct-tab:hover,.ct-tab.active{background:var(--ptk-primary);color:#fff}.ct-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 15px}.ct-page-head h2{margin:0 0 4px;color:var(--ptk-primary);font-size:22px}.ct-page-head p{margin:0;color:var(--ptk-muted)}.ct-filter{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;padding:12px;margin-bottom:14px;background:#fff;border:1px solid var(--ptk-border);border-radius:9px}.ct-filter label{font-size:12px;color:#475569;margin:0}.ct-filter .form-control{min-width:105px;margin-top:4px}.ct-card{margin-bottom:16px;padding:16px;background:#fff;border:1px solid var(--ptk-border);border-radius:10px;box-shadow:var(--ptk-shadow)}.ct-card-title{margin-bottom:12px;color:var(--ptk-primary);font-size:16px;font-weight:700}.ct-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.ct-kpi{padding:14px;background:#fff;border:1px solid var(--ptk-border);border-radius:9px}.ct-kpi-label{font-size:12px;color:var(--ptk-muted)}.ct-kpi-value{font-size:27px;font-weight:700;color:var(--ptk-primary)}.ct-kpi-note{font-size:11px;color:#94a3b8}.ct-dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ct-badge{display:inline-block;padding:3px 7px;border-radius:999px;font-size:11px;font-weight:700}.ct-badge-success{background:#dcfce7;color:#166534}.ct-badge-warning{background:#fef3c7;color:#92400e}.ct-badge-danger{background:#fee2e2;color:#991b1b}.ct-badge-info{background:#dbeafe;color:#1e40af}.ct-badge-muted{background:#e2e8f0;color:#475569}.ct-progress{height:7px;background:#e5e7eb;border-radius:9px;overflow:hidden}.ct-progress-fill{display:block;height:100%;background:#64748b}.ct-progress-fill.is-success{background:var(--ptk-success)}.ct-progress-fill.is-warning{background:var(--ptk-warning)}.ct-progress-fill.is-danger{background:var(--ptk-danger)}.ct-doc-group,.ct-doc-code{font-size:12px;color:#475569}.ct-form .form-group{margin-bottom:14px}
@media(max-width:1100px){.ct-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ct-dashboard-grid{grid-template-columns:1fr}}@media(max-width:767px){.ct-tabs{overflow-x:auto;flex-wrap:nowrap}.ct-tab{white-space:nowrap}.ct-page-head{display:block}.ct-page-head>div+div{margin-top:10px}.ct-filter{display:block}.ct-filter label,.ct-filter .form-control,.ct-filter .btn{width:100%;margin-bottom:8px}.ct-kpi-grid{grid-template-columns:1fr}}
.ptk-mini-stats{display:grid;gap:10px}.ptk-mini-stat{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid #edf2f7}.ptk-mini-stat:last-child{border-bottom:0}.ptk-mini-stat span{color:#475569}.ptk-mini-stat strong{font-size:18px;color:var(--ptk-primary)}.ptk-mini-stat .ct-progress{grid-column:1/3}.ptk-mini-stat small{grid-column:1/3;color:#94a3b8;text-align:right}
.ptk-work-group{margin-top:18px}.ptk-work-group>h3{margin:0 0 10px;color:#334155;font-size:16px}.ptk-work-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.ptk-work-card{display:grid;grid-template-columns:42px minmax(0,1fr);column-gap:12px;align-items:center;min-height:112px;padding:16px;border:1px solid var(--ptk-border);border-radius:10px;background:#fff;color:var(--ptk-text);text-decoration:none!important;transition:.15s ease}.ptk-work-card:hover{border-color:#9fbad0;box-shadow:var(--ptk-shadow);transform:translateY(-1px)}.ptk-work-card>i{grid-row:1/3;display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:9px;background:#eef5fb;color:var(--ptk-primary);font-size:18px}.ptk-work-card>strong{font-size:14px;color:var(--ptk-primary)}.ptk-work-card>span{font-size:12px;color:var(--ptk-muted);line-height:1.45}@media(max-width:1100px){.ptk-work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:767px){.ptk-work-grid{grid-template-columns:1fr}}
