/* WSMarket user-facing UI primitives.
 * Page migrations should reuse these primitives instead of adding local one-off CSS.
 */
:root{
    --ws-brand-primary:#2563eb;
    --ws-brand-primary-hover:#1d4ed8;
    --ws-brand-primary-soft:#dbeafe;
    --ws-brand-accent:#06b6d4;
    --ws-brand-heading:#102a4a;
    --ws-brand-focus:#7dd3fc;
    --ws-nav-bg:#f8fbff;
    --ws-nav-bg-soft:#f1f6fd;
    --ws-nav-border:#dce7f4;
    --ws-nav-text:#53657d;
    --ws-nav-text-strong:#183153;
    --ws-nav-icon:#2f7cf6;
    --ws-nav-hover:#edf5ff;
    --ws-nav-group:#eaf3ff;
    --ws-nav-group-hover:#e2efff;
    --ws-nav-active-start:#3b82f6;
    --ws-nav-active-end:#2563eb;
    --ws-nav-active-text:#ffffff;
    --ws-user-border:#e2e8f0;
    --ws-user-border-soft:#edf2f7;
    --ws-user-surface:#ffffff;
    --ws-user-surface-soft:#f8fafc;
    --ws-user-text:#334155;
    --ws-user-muted:#64748b;
    --ws-user-primary:var(--ws-brand-primary);
    --ws-user-radius:12px;
    --ws-user-shadow:0 6px 22px rgba(15,23,42,.06);
}


/* Shared user page primitives */
.ws-user-panel{border:1px solid var(--ws-user-border);border-radius:var(--ws-user-radius);box-shadow:var(--ws-user-shadow);overflow:hidden;background:var(--ws-user-surface)}
.ws-user-panel-body{padding:22px}
.ws-user-panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px;border-bottom:1px solid var(--ws-user-border-soft);background:var(--ws-user-surface)}
.ws-user-panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.ws-user-panel-title{color:var(--ws-brand-heading);font-size:17px;font-weight:650;line-height:1.3}
.ws-user-panel-subtitle,.ws-section-subtitle{color:var(--ws-user-muted);font-size:12px;line-height:1.55}
.ws-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}
.ws-section-head-compact{margin-top:24px;margin-bottom:10px}
.ws-section-kicker{color:var(--ws-user-primary);font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}
.ws-section-title{color:var(--ws-brand-heading);font-size:14px;font-weight:650}
.ws-info-list{border-top:1px solid var(--ws-user-border-soft)}
.ws-info-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--ws-user-border-soft)}
.ws-info-row:last-child{border-bottom:0;padding-bottom:0}
.ws-info-label{color:var(--ws-user-muted);font-size:12px;flex:0 0 auto}
.ws-info-value{color:var(--ws-user-text);font-size:13px;text-align:right;overflow-wrap:anywhere;min-width:0}
.ws-help-note{display:flex;align-items:flex-start;gap:8px;color:var(--ws-user-muted);background:var(--ws-user-surface-soft);border:1px solid var(--ws-user-border-soft);border-radius:8px;padding:10px 12px;font-size:12px;line-height:1.45}
.ws-help-note i{font-size:16px;color:var(--ws-user-primary);flex:0 0 auto;margin-top:1px}
.ws-form-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:20px}
.ws-inline-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}


/* Shared topbar finance summary */
.ws-header-actions{align-self:stretch;align-items:stretch}
.ws-finance-strip{align-self:stretch;align-items:stretch;height:auto;margin-right:4px}
.ws-finance-item{position:relative;display:flex;flex-direction:column;justify-content:center;min-width:92px;padding:0 14px;line-height:1.05}
.ws-finance-item + .ws-finance-item:before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:1px;background:rgba(15,23,42,.08)}
.ws-finance-item small{display:block;color:#8090a7;font-size:9px;font-weight:600;letter-spacing:.045em;text-transform:uppercase;margin-bottom:4px}
.ws-finance-item strong{display:block;color:#102a4a;font-size:11px;font-weight:700;white-space:nowrap}
.ws-finance-item.ws-promo strong{color:#d97706}
.ws-finance-item.ws-point strong{color:#0284c7}
.ws-wallet-summary{min-width:292px}
.ws-wallet-summary .label{display:block;color:var(--ws-user-muted);font-size:10px;margin-bottom:2px}
.ws-wallet-summary [data-ws-balance],.ws-wallet-summary [data-ws-total-balance]{color:var(--ws-user-text)}

/* Header AccountChip */
.ws-account-chip{display:flex;align-items:center;gap:9px;min-width:0;padding-left:10px;padding-right:10px}
.ws-account-chip .header-profile-user{flex:0 0 auto}
.ws-account-chip-copy{display:flex;flex-direction:column;min-width:0;text-align:left;line-height:1.05}
.ws-account-chip-name{display:block;color:#102a4a;font-size:12px;font-weight:650;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-account-chip-id{display:block;color:#7a8aa2;font-size:10px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-account-chip-chevron{color:#7a8aa2;font-size:14px;flex:0 0 auto}

/* B8.7 Product catalog / package selection */
.ws-catalog-count{font-size:10px;font-weight:600;padding:7px 10px;white-space:nowrap}
.ws-product-grid{margin-top:0}
.ws-product-card{display:flex;flex-direction:column;height:100%;min-height:300px;padding:20px;border:1px solid var(--ws-user-border);border-radius:var(--ws-user-radius);background:var(--ws-user-surface);box-shadow:0 4px 14px rgba(18,38,63,.04);transition:border-color .15s ease,box-shadow .15s ease}
.ws-product-card:hover{border-color:#d5deea;box-shadow:0 8px 22px rgba(18,38,63,.07)}
.ws-product-card-head{display:flex;align-items:center;gap:13px;min-width:0}
.ws-product-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;flex:0 0 auto;background:rgba(85,110,230,.10);color:var(--ws-user-primary);font-size:23px}
.ws-product-name{font-size:18px;font-weight:650;line-height:1.3;color:var(--ws-user-text);overflow-wrap:anywhere}
.ws-product-description-wrap{position:relative;flex:1}
.ws-product-description{color:#5f6673;font-size:13px;line-height:1.65;overflow-wrap:anywhere}
.ws-product-description.is-collapsed{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;overflow:hidden}
.ws-product-description-toggle{border:0;background:transparent;color:var(--ws-user-primary);font-size:12px;font-weight:600;padding:5px 0 0}
.ws-product-description-toggle:hover{text-decoration:underline}
.ws-product-card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;padding-top:15px;border-top:1px solid var(--ws-user-border-soft)}
.ws-product-meta{display:flex;align-items:center;gap:6px;color:#8c98a5;font-size:11px;min-width:0}
.ws-product-buy{flex:0 0 auto}
.ws-product-skeleton{height:300px;border-radius:var(--ws-user-radius);background:linear-gradient(90deg,#f4f6f9 25%,#eceff4 37%,#f4f6f9 63%);background-size:400% 100%;animation:ws-product-shimmer 1.2s ease infinite}
@keyframes ws-product-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
.ws-package-modal .modal-header{padding:20px 22px}
.ws-package-modal .modal-body{padding:20px 22px;background:#fbfcfe}
.ws-package-modal .modal-footer{padding:12px 22px}

.ws-package-query{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;padding:12px 14px;border:1px solid var(--ws-user-border-soft);border-radius:10px;background:#fff}
.ws-package-query .ws-filter-field{width:min(260px,100%)}
.ws-package-query-result{display:flex;align-items:baseline;gap:6px;color:var(--ws-user-muted);font-size:11px;text-align:right}
.ws-package-query-result strong{color:var(--ws-user-text);font-size:12px;font-weight:650}
.ws-package-loading{display:flex;align-items:center;justify-content:center;gap:8px;min-height:150px;color:var(--ws-user-muted);font-size:12px}
.ws-package-card{display:flex;flex-direction:column;height:100%;padding:18px;border:1px solid var(--ws-user-border);border-radius:var(--ws-user-radius);background:#fff;box-shadow:0 4px 14px rgba(18,38,63,.035)}
.ws-package-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.ws-package-type{font-size:10px;font-weight:650;padding:7px 9px}
.ws-package-price{color:var(--ws-user-text);font-size:17px;font-weight:700;text-align:right;white-space:nowrap}
.ws-package-label{display:block;color:var(--ws-user-muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.ws-package-policy{color:#5f6673;font-size:12px;line-height:1.55}
.ws-package-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.ws-package-facts>div{padding:10px 12px;border-radius:9px;background:var(--ws-user-surface-soft)}
.ws-package-facts span{display:block;color:var(--ws-user-muted);font-size:10px;margin-bottom:2px}
.ws-package-facts strong{display:block;color:var(--ws-user-text);font-size:12px;font-weight:650}
.ws-package-description{color:#5f6673;font-size:12px;line-height:1.6;padding-top:12px;border-top:1px solid var(--ws-user-border-soft)}
.ws-package-point{color:#8a6d21;font-size:11px;background:#fff8e7;border:1px solid #f7e7b8;border-radius:8px;padding:8px 10px}
.ws-package-card-footer{display:flex;justify-content:flex-end;margin-top:auto;padding-top:16px}
.ws-package-card-footer .btn{min-width:128px}


/* B8.12 Wallet / deposit payment methods */
.ws-payment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.ws-payment-card{display:grid;grid-template-columns:180px minmax(0,1fr);min-width:0;border:1px solid var(--ws-user-border);border-radius:var(--ws-user-radius);background:var(--ws-user-surface);box-shadow:0 4px 14px rgba(18,38,63,.035);overflow:hidden}
.ws-payment-media{display:flex;align-items:center;justify-content:center;min-height:190px;padding:14px;background:var(--ws-user-surface-soft);border-right:1px solid var(--ws-user-border-soft)}
.ws-payment-media a{display:block;max-width:100%}
.ws-payment-qr{display:block;width:100%;max-width:160px;max-height:180px;object-fit:contain;border-radius:8px}
.ws-payment-media-placeholder{display:flex;align-items:center;justify-content:center;min-height:120px;color:var(--ws-user-muted);font-size:12px;text-align:center}
.ws-payment-body{display:flex;flex-direction:column;min-width:0;padding:18px}
.ws-payment-title{margin:2px 0 14px;color:var(--ws-user-text);font-size:18px;font-weight:650;overflow-wrap:anywhere}
.ws-payment-details{border-top:1px solid var(--ws-user-border-soft)}
.ws-payment-detail{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--ws-user-border-soft)}
.ws-payment-detail-label{flex:0 0 auto;color:var(--ws-user-muted);font-size:11px}
.ws-payment-detail-value{min-width:0;color:var(--ws-user-text);font-size:12px;font-weight:600;text-align:right;overflow-wrap:anywhere}
.ws-payment-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:15px}

/* B8.5 Account reference page */
.ws-account-profile-panel{position:relative}
.ws-account-profile-head{display:flex;align-items:center;gap:14px}
.ws-account-avatar-lg{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;background:rgba(85,110,230,.1);color:var(--ws-user-primary);font-size:27px}
.ws-account-handle{color:var(--ws-user-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-account-security-section{padding:22px 24px}
.ws-account-security-section + .ws-account-security-section{border-top:1px solid var(--ws-user-border-soft)}
.ws-secret-field .form-control{background:#fbfcfe;color:#495057}
.ws-secret-state{font-size:10px;font-weight:600;letter-spacing:.02em;padding:6px 9px}
.ws-account-api-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}


/* Shared user data-page primitives */
.ws-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.ws-stat-card{display:flex;align-items:center;gap:14px;min-width:0;padding:17px 18px;border:1px solid var(--ws-user-border);border-radius:var(--ws-user-radius);background:var(--ws-user-surface);box-shadow:var(--ws-user-shadow)}
.ws-stat-icon{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:11px;background:var(--ws-user-surface-soft);font-size:22px;flex:0 0 auto}
.ws-stat-label{color:var(--ws-user-muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.ws-stat-value{color:var(--ws-user-text);font-size:22px;font-weight:700;line-height:1.15;margin-top:2px}
.ws-stat-meta{color:#98a1ad;font-size:10px;margin-top:2px}
.ws-data-filter{padding:18px 24px;border-bottom:1px solid var(--ws-user-border-soft);background:#fbfcfe}
.ws-filter-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end}
.ws-filter-grid{display:grid;grid-template-columns:minmax(240px,1.7fr) repeat(3,minmax(150px,1fr));gap:12px;align-items:end}
.ws-filter-grid.ws-filter-grid-three{grid-template-columns:minmax(220px,1.7fr) repeat(2,minmax(130px,1fr))}
.ws-filter-field{min-width:0}
.ws-filter-field .form-label{color:#5f6673;font-size:11px;font-weight:600;margin-bottom:6px}
.ws-filter-field .form-control,.ws-filter-field .form-select,.ws-filter-field .input-group-text{min-height:38px}
.ws-filter-field .input-group-text{background:#fff;border-right:0;color:#8b95a5}
.ws-filter-field .input-group .form-control{border-left:0}
.ws-filter-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:12px}
.ws-filter-actions .btn{min-height:38px;white-space:nowrap}
.ws-filter-bar .ws-filter-actions{align-self:end;margin-top:0}
.ws-data-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 24px;border-bottom:1px solid var(--ws-user-border-soft)}
.ws-data-count{display:flex;align-items:baseline;gap:6px;min-width:0;font-size:12px}
.ws-data-count strong{color:var(--ws-user-text)}
.ws-page-size-control{display:flex;align-items:center;gap:8px;color:var(--ws-user-muted);font-size:11px;flex:0 0 auto}
.ws-page-size-control .form-select{width:78px}
.ws-data-loading{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 18px;color:var(--ws-user-muted);font-size:12px;border-bottom:1px solid var(--ws-user-border-soft)}
.ws-data-table-wrap{min-height:150px}
.ws-data-table-wrap .table{font-size:12px}
.ws-data-table-wrap .table thead th{padding:12px 14px;border-bottom:1px solid var(--ws-user-border);background:#fbfcfe;color:#747f8e;font-size:10px;font-weight:700;letter-spacing:.035em;text-transform:uppercase;white-space:nowrap}
.ws-data-table-wrap .table tbody td{padding:13px 14px;vertical-align:middle;border-color:var(--ws-user-border-soft);white-space:nowrap}
.ws-data-empty{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;padding:42px 20px;color:var(--ws-user-muted);text-align:center}
.ws-data-empty i{font-size:32px;color:#a5aeba}
.ws-data-empty strong{color:var(--ws-user-text);font-size:13px}
.ws-data-empty span{font-size:11px}
/* B11.2 User Dashboard catalog state convergence */
.ws-data-error{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px;padding:36px 20px;color:#d9534f;text-align:center}
.ws-data-error i{font-size:32px;color:#d9534f}
.ws-data-error strong{color:#b52b27;font-size:13px}
.ws-data-error span{max-width:560px;color:var(--ws-user-muted);font-size:11px}
.ws-data-error .btn{margin-top:4px}
.ws-data-pagination{padding:16px 20px;border-top:1px solid var(--ws-user-border-soft)}
.ws-key-copy{font-size:12px;text-decoration:none}
.ws-key-copy:hover{text-decoration:underline}

@media(max-width:575.98px){
    #page-topbar .navbar-header{padding:0 8px}
    .ws-account-chip{gap:7px;padding-left:7px;padding-right:5px}
    .ws-account-chip-name{max-width:84px;font-size:11px}
    .ws-account-chip-id{display:none}
    .ws-account-chip-chevron{display:none}

    .ws-user-panel-body{padding:16px}
    .ws-user-panel-heading{padding:17px 16px}
    .ws-user-panel-actions{justify-content:flex-start}
    .ws-account-security-section{padding:18px 16px}
    .ws-info-row{display:block}
    .ws-info-value{display:block;text-align:left;margin-top:4px}
    .ws-section-head{gap:10px;margin-bottom:15px}
    .ws-form-actions{align-items:stretch;flex-direction:column}
    .ws-form-actions .btn{width:100%}
    .ws-account-api-actions{align-items:stretch;flex-direction:column}
    .ws-account-api-actions>.btn{width:100%}
    .ws-account-api-actions .ws-inline-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
    .ws-account-api-actions .ws-inline-actions .btn{width:100%}

    .ws-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
    .ws-stat-card{padding:14px 12px;gap:10px}
    .ws-stat-icon{width:36px;height:36px;font-size:19px}
    .ws-stat-value{font-size:19px}
    .ws-data-filter{padding:15px 16px}
    .ws-filter-bar{grid-template-columns:1fr}
    .ws-filter-grid,.ws-filter-grid.ws-filter-grid-three{grid-template-columns:1fr}
    .ws-filter-actions{justify-content:stretch}
    .ws-filter-actions .btn{width:100%}
    .ws-data-toolbar{align-items:flex-start;padding:12px 16px}
    .ws-data-count{display:block}
    .ws-data-count .text-muted{display:block;margin-top:2px}
    .ws-data-table-wrap .table thead th,.ws-data-table-wrap .table tbody td{padding-left:11px;padding-right:11px}
    .ws-data-pagination{padding:14px 12px}

    .ws-payment-grid{grid-template-columns:1fr}
    .ws-payment-card{grid-template-columns:1fr}
    .ws-payment-media{min-height:150px;border-right:0;border-bottom:1px solid var(--ws-user-border-soft)}
    .ws-payment-qr{max-width:180px;max-height:160px}
    .ws-payment-detail{display:block}
    .ws-payment-detail-value{display:block;text-align:left;margin-top:3px}
    .ws-payment-actions{display:grid;grid-template-columns:1fr;width:100%}
    .ws-payment-actions .btn{width:100%}

    .ws-product-card{min-height:0;padding:16px}
    .ws-product-name{font-size:16px}
    .ws-product-card-footer{align-items:stretch;flex-direction:column}
    .ws-product-buy{width:100%}
    .ws-package-modal .modal-header,.ws-package-modal .modal-body{padding-left:16px;padding-right:16px}

    .ws-package-query{align-items:stretch;flex-direction:column}
    .ws-package-query .ws-filter-field{width:100%}
    .ws-package-query-result{text-align:left}
    .ws-package-card-head{display:block}
    .ws-package-price{text-align:left;margin-top:10px}
    .ws-package-card-footer .btn{width:100%}
}

@media(min-width:576px) and (max-width:991.98px){
    .ws-payment-grid{grid-template-columns:1fr}
    .ws-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .ws-filter-bar{grid-template-columns:1fr}
    .ws-filter-grid,.ws-filter-grid.ws-filter-grid-three{grid-template-columns:repeat(2,minmax(0,1fr))}
    .ws-filter-field-search{grid-column:1/-1}
}

@media(min-width:992px) and (max-width:1199.98px){
    .ws-filter-bar{grid-template-columns:1fr}
}

@media(min-width:992px) and (max-width:1399.98px){
    .ws-filter-grid{grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(130px,1fr))}
}

@media(min-width:576px) and (max-width:1199.98px){
    .ws-account-chip-name,.ws-account-chip-id{max-width:110px}
}

/* User authentication shell */
.ws-auth-page{min-height:100vh;background:radial-gradient(circle at top left,rgba(37,99,235,.10),transparent 34%),#f5f7fb;color:var(--ws-user-text)}
.ws-auth-page .account-pages{min-height:calc(100vh - 3rem);display:flex;align-items:center;padding:1.5rem 0}
.ws-auth-page .card{border:1px solid #dce5ef;border-radius:var(--ws-user-radius);box-shadow:0 18px 45px rgba(15,23,42,.10)}
.ws-auth-page .card-body{background:var(--ws-user-surface)}
.ws-auth-page .form-label{font-size:12px;font-weight:600;color:#5f6673}
.ws-auth-page .form-control{min-height:42px}
.ws-auth-page .btn[type="submit"]{min-height:42px;font-weight:600}
.ws-auth-page .invalid-feedback{font-size:11px}
.ws-auth-brand-panel{padding:26px 28px 24px;background:linear-gradient(135deg,#214f86,#2d63a4 58%,#3f7cc4);color:#eaf3ff}
.ws-auth-brand-panel p{margin-top:8px;color:#d6e6f8;font-size:12px;line-height:1.55}
.ws-auth-brand-logo{display:inline-flex;align-items:center;line-height:0}
.ws-auth-brand-logo img{display:block;width:190px;height:auto;max-width:100%}

@media(max-width:575.98px){
    .ws-auth-page .account-pages{padding:12px 0}
    .ws-auth-page .card{border-radius:12px}
}

/* Wolfsoft shared brand shell */
body{background:#f6f8fc;color:var(--ws-user-text)}
.ws-user-shell{min-height:100vh;display:flex;flex-direction:column}
.ws-user-shell>.main-content{flex:1 0 auto}
.ws-user-shell>.ws-user-footer-shell{flex:0 0 auto}
a{color:var(--ws-brand-primary)}
a:hover{color:var(--ws-brand-primary-hover)}
.btn-primary{background-color:var(--ws-brand-primary);border-color:var(--ws-brand-primary)}
.btn-primary:hover,.btn-primary:focus,.btn-primary:active{background-color:var(--ws-brand-primary-hover);border-color:var(--ws-brand-primary-hover)}
.btn-outline-primary{color:var(--ws-brand-primary);border-color:var(--ws-brand-primary)}
.btn-outline-primary:hover,.btn-outline-primary:focus{color:#fff;background-color:var(--ws-brand-primary);border-color:var(--ws-brand-primary)}
.text-primary{color:var(--ws-brand-primary)!important}
.bg-primary{background-color:var(--ws-brand-primary)!important}
.bg-primary.bg-soft{background-color:var(--ws-brand-primary-soft)!important}

#page-topbar{background:#fff;border-bottom:1px solid #e9eff7;box-shadow:0 5px 18px rgba(15,42,74,.055)}
.ws-user-shell .navbar-brand-box{background:var(--ws-nav-bg);border-right:1px solid var(--ws-nav-border)}
.navbar-header .header-item{color:#52637a}
.navbar-header .header-item:hover,.navbar-header .header-item:focus,.navbar-header .header-item.active{color:#102a4a;background:#f3f6fb}
.navbar-header .header-item:focus-visible{outline:2px solid var(--ws-brand-focus);outline-offset:-3px}
.ws-user-shell .ws-brand-logo{display:flex;align-items:center;justify-content:center;height:70px}
.ws-brand-logo .logo-sm,.ws-brand-logo .logo-lg{line-height:0}
.ws-brand-logo-mark{display:block;width:35px;height:35px}
.ws-brand-logo-wordmark{display:block;width:178px;height:auto;max-height:46px}

.ws-user-shell .vertical-menu{position:fixed;background:var(--ws-nav-bg);border-right:1px solid var(--ws-nav-border);box-shadow:8px 0 24px rgba(37,99,235,.045)}
.ws-user-shell #sidebar-menu{padding-top:20px;padding-bottom:26px}

/*
 * Navigation ownership contract:
 * - Wolfsoft User shell owns the viewport anchor: primary navigation stays fixed while page content scrolls.
 * - app.min.css + MetisMenu own width, collapsed rail/flyout and icon/label placement geometry.
 * - Wolfsoft also owns product palette, typography and semantic current/group surfaces.
 * Keep duplicate width/alignment/flyout positioning rules out of this skin.
 */
.ws-user-shell #sidebar-menu ul li a{border-radius:10px;color:var(--ws-nav-text);font-weight:600;opacity:1}
.ws-user-shell #sidebar-menu ul li a .ws-nav-label{color:inherit;opacity:1}
.ws-user-shell #sidebar-menu .ws-nav-icon{color:var(--ws-nav-icon);opacity:1}

/*
 * Interaction-state contract:
 * - app.min.css + MetisMenu own geometry and structural open/collapse state.
 * - aria-current="page" is the single leaf-selection source of truth.
 * - Wolfsoft owns palette for normal hover/focus/current states in both expanded and collapsed modes.
 * The selectors below deliberately match the native theme context without redefining width/display/position.
 */
.ws-user-shell .vertical-menu #side-menu>li>a:hover,.ws-user-shell .vertical-menu #side-menu>li>a:focus{color:var(--ws-nav-text-strong);background:var(--ws-nav-hover)}
.ws-user-shell .vertical-menu #side-menu>li>a:hover .ws-nav-icon,.ws-user-shell .vertical-menu #side-menu>li>a:focus .ws-nav-icon{color:var(--ws-brand-primary)}
.ws-user-shell #sidebar-menu ul li a:focus-visible{outline:2px solid var(--ws-brand-focus);outline-offset:1px}

.ws-user-shell .vertical-menu #side-menu>li>a[aria-current="page"]{color:var(--ws-nav-active-text);background:linear-gradient(135deg,var(--ws-nav-active-start),var(--ws-nav-active-end));box-shadow:0 8px 18px rgba(37,99,235,.18)}
.ws-user-shell .vertical-menu #side-menu>li>a[aria-current="page"] .ws-nav-label,.ws-user-shell .vertical-menu #side-menu>li>a[aria-current="page"] .ws-nav-icon{color:var(--ws-nav-active-text);opacity:1}
.ws-user-shell .vertical-menu #side-menu>li>a[aria-current="page"]:hover,.ws-user-shell .vertical-menu #side-menu>li>a[aria-current="page"]:focus{color:var(--ws-nav-active-text);background:linear-gradient(135deg,#3f86f7,var(--ws-brand-primary-hover))}
.ws-user-shell .vertical-menu #side-menu>li>a[aria-current="page"]:hover .ws-nav-icon,.ws-user-shell .vertical-menu #side-menu>li>a[aria-current="page"]:focus .ws-nav-icon{color:var(--ws-nav-active-text)}

.ws-user-shell #side-menu>li.ws-nav-group-active>a.has-arrow{background:var(--ws-nav-group)}
.ws-user-shell #side-menu>li.ws-nav-group-active>a.has-arrow:after{color:inherit;opacity:1}
.ws-user-shell #side-menu>li.ws-nav-group-active>a.has-arrow[aria-expanded="true"]:after{transform:rotate(-180deg)}
.ws-user-shell .vertical-menu #side-menu>li.ws-nav-group-active>a.has-arrow:hover,.ws-user-shell .vertical-menu #side-menu>li.ws-nav-group-active>a.has-arrow:focus{background:var(--ws-nav-group-hover)}
.ws-user-shell #sidebar-menu .sub-menu{padding:1px 0 2px}
.ws-user-shell #sidebar-menu .sub-menu li a{color:#64748b;font-size:12px;background:transparent;opacity:1}
.ws-user-shell #sidebar-menu .sub-menu .ws-nav-sub-icon{color:#3b82f6}
.ws-user-shell .vertical-menu #sidebar-menu .sub-menu li>a:hover,.ws-user-shell .vertical-menu #sidebar-menu .sub-menu li>a:focus{color:var(--ws-nav-text-strong);background:#f7fbff}
.ws-user-shell .vertical-menu #sidebar-menu .sub-menu li>a[aria-current="page"]{color:var(--ws-nav-active-text);background:linear-gradient(135deg,var(--ws-nav-active-start),var(--ws-nav-active-end));box-shadow:0 7px 16px rgba(37,99,235,.16)}
.ws-user-shell .vertical-menu #sidebar-menu .sub-menu li>a[aria-current="page"] .ws-nav-label,.ws-user-shell .vertical-menu #sidebar-menu .sub-menu li>a[aria-current="page"] .ws-nav-sub-icon{color:var(--ws-nav-active-text);opacity:1}
.ws-user-shell .vertical-menu #sidebar-menu .sub-menu li>a[aria-current="page"]:hover,.ws-user-shell .vertical-menu #sidebar-menu .sub-menu li>a[aria-current="page"]:focus{color:var(--ws-nav-active-text);background:linear-gradient(135deg,#3f86f7,var(--ws-brand-primary-hover))}
.ws-user-shell #sidebar-menu .has-arrow:after{color:#7a8da7}


.ws-user-footer{position:relative;z-index:1;border-top:1px solid var(--ws-user-border);background:#fff}
.ws-user-footer-shell{margin-left:250px}
.vertical-collpsed .ws-user-footer-shell{margin-left:70px}
.ws-user-footer-inner{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;align-items:center;gap:24px;min-height:92px;padding:18px 28px}
.ws-user-footer-brand{display:flex;align-items:center;gap:11px;min-width:0}
.ws-user-footer-mark{display:block;width:32px;height:32px;flex:0 0 auto}
.ws-user-footer-name{color:var(--ws-user-text);font-size:14px;font-weight:750;letter-spacing:-.01em}
.ws-user-footer-tagline{margin-top:2px;color:var(--ws-user-muted);font-size:10px;line-height:1.45}
.ws-user-footer-nav{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap}
.ws-user-footer-nav a{color:#64748b;font-size:11px;font-weight:600;text-decoration:none}
.ws-user-footer-nav a:hover,.ws-user-footer-nav a:focus{color:var(--ws-brand-primary)}
.ws-user-footer-nav a:focus-visible{outline:2px solid var(--ws-brand-focus);outline-offset:3px;border-radius:3px}
.ws-user-footer-meta{color:#94a3b8;font-size:10px;text-align:right;white-space:nowrap}
.ws-user-footer-auth{border-top:0;background:transparent}
.ws-user-footer-auth .ws-user-footer-inner{grid-template-columns:1fr auto;min-height:auto;max-width:720px;margin:0 auto;padding:0 20px 24px}
.ws-user-footer-auth .ws-user-footer-brand{display:none}

.ws-table-col-index{width:50px}
.ws-table-col-type{width:48px}

@media(max-width:991.98px){
    .ws-user-footer-shell{margin-left:0}
    .ws-user-footer-inner{grid-template-columns:1fr auto;gap:14px 22px}
    .ws-user-footer-nav{grid-column:1/-1;grid-row:2;justify-content:flex-start}
}

@media(max-width:575.98px){
    .ws-brand-logo-wordmark{width:144px}
    .ws-user-footer-inner,.ws-user-footer-auth .ws-user-footer-inner{grid-template-columns:1fr;gap:12px;padding:18px 16px}
    .ws-user-footer-nav{grid-column:auto;grid-row:auto;justify-content:flex-start;gap:12px}
    .ws-user-footer-meta{text-align:left;white-space:normal}
    .ws-user-footer-auth .ws-user-footer-meta{text-align:center}
}
