/*
=============================================================================
CMMS CORE - CUSTOMER PORTAL CUSTOM CSS
=============================================================================

This file contains custom CSS for the CUSTOMER PORTAL ONLY:
- Customer Portal Pages
- Public Web Pages
- Issue Submission Forms
- Work Request Tracking Pages
- Portal Navigation

NOT applied to:
- Desk Interface (staff)
- Admin Forms
- Backend Reports

Location: /home/frappe/frappe-bench/apps/cmms_core/cmms_core/public/css/custom_portal.css

How to Use:
1. Add your portal-specific CSS rules below
2. Run: bench build --app cmms_core
3. Run: bench clear-cache
4. Refresh browser (Ctrl+Shift+R)

=============================================================================
*/

/* 
=============================================================================
PORTAL INTERFACE RECOMMENDATIONS
=============================================================================

Focus on:
- Brand consistency and visual appeal
- Clear call-to-action buttons
- Simple, intuitive navigation
- Mobile responsiveness
- Customer-friendly language
- Trust indicators
- Easy-to-read content

Avoid:
- Technical jargon visibility
- Complex admin features
- Too many options/overwhelming UI
- Internal status codes

=============================================================================
*/

@import url("https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Noto+Sans+Ethiopic:wght@400;500;600;700&display=swap");

:root {
	--tp-green: #1f5c3c;
	--tp-green-dark: #164a30;
	--tp-wash: #eaf3ec;
	--tp-icon: #eef2ef;
	--tp-icon-on: #dcecdf;
	--tp-bg: #f4f6f4;
	--tp-card: #ffffff;
	--tp-line: #e6ebe6;
	--tp-ink: #16241c;
	--tp-muted: #6d786f;
	--tp-soft: #8a978f;
	--icon-grid: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='7' height='7' rx='1'/><rect x='14' y='3' width='7' height='7' rx='1'/><rect x='3' y='14' width='7' height='7' rx='1'/><rect x='14' y='14' width='7' height='7' rx='1'/></svg>");
	--icon-wrench: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z'/></svg>");
	--icon-file: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/><polyline points='14 2 14 8 20 8'/><line x1='16' y1='13' x2='8' y2='13'/><line x1='16' y1='17' x2='8' y2='17'/></svg>");
	--icon-invoice: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M4 2h16v20H4z'/><path d='M8 6h8M8 10h8M8 14h5'/></svg>");
	--icon-chart: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><line x1='18' y1='20' x2='18' y2='10'/><line x1='12' y1='20' x2='12' y2='4'/><line x1='6' y1='20' x2='6' y2='14'/></svg>");
	--icon-star: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>");
	--icon-pin: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/><circle cx='12' cy='10' r='3'/></svg>");
	--icon-user: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/><circle cx='12' cy='7' r='4'/></svg>");
}

html,
html body,
body.web-page,
.web-page,
.page-content,
.page-content-wrapper,
.page-container,
.website-container,
.page_content,
main.container {
	background: var(--tp-bg) !important;
	color: var(--tp-ink);
	font-family: "Instrument Sans", "Noto Sans Ethiopic", "Helvetica Neue", Helvetica, Arial, sans-serif;
	-webkit-font-smoothing: antialiased;
}
body.web-page {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	max-width: 100%;
}
body.web-page:has(.sidebar-column) {
	overflow-x: clip;
}
body.web-page > .container,
body.web-page > .page-container {
	flex: 1 1 auto;
	width: 100%;
	max-width: 100%;
	min-width: 0;
}

/* 
=============================================================================
EXAMPLE PORTAL CUSTOMIZATIONS
=============================================================================
*/

/* Example: Branded portal header */
/*
.web-header {
    background: linear-gradient(135deg, #2c5aa0 0%, #1a3a6b 100%);
    color: white;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.web-header .navbar-brand {
    font-size: 1.5rem;
    font-weight: 600;
}
*/

/* Example: Friendly navigation menu */
/*
.web-sidebar {
    background-color: #f8f9fa;
    border-right: 1px solid #dee2e6;
}

.web-sidebar .sidebar-menu li a {
    padding: 12px 15px;
    border-radius: 6px;
    transition: all 0.3s ease;
}

.web-sidebar .sidebar-menu li a:hover {
    background-color: #e9ecef;
    padding-left: 20px;
}
*/

/* Example: Prominent call-to-action buttons */
/*
.web-page .btn-primary {
    background-color: #2c5aa0;
    border: none;
    padding: 12px 30px;
    border-radius: 25px;
    font-size: 1rem;
    font-weight: 500;
    box-shadow: 0 4px 6px rgba(44, 90, 160, 0.2);
    transition: all 0.3s ease;
}

.web-page .btn-primary:hover {
    background-color: #1a3a6b;
    transform: translateY(-2px);
    box-shadow: 0 6px 12px rgba(44, 90, 160, 0.3);
}
*/

/* Example: Welcoming portal home page */
/*
.web-page .hero-section {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: white;
    padding: 60px 0;
    text-align: center;
    border-radius: 10px;
    margin-bottom: 30px;
}
*/

/* Example: Friendly card styling */
/*
.web-page .card {
    border: none;
    border-radius: 12px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
    transition: all 0.3s ease;
}

.web-page .card:hover {
    box-shadow: 0 8px 16px rgba(0,0,0,0.1);
    transform: translateY(-4px);
}
*/

/* Example: Clear status indicators for customers */
/*
.portal-list-item .badge {
    padding: 6px 12px;
    border-radius: 20px;
    font-weight: 500;
}

.portal-list-item .badge.status-open {
    background-color: #ffc107;
    color: #000;
}

.portal-list-item .badge.status-completed {
    background-color: #28a745;
    color: white;
}
*/

/* Example: Mobile-friendly portal menu */
/*
@media (max-width: 768px) {
    .web-header .navbar-brand {
        font-size: 1.2rem;
    }
    
    .web-page .btn-primary {
        width: 100%;
        margin-bottom: 10px;
    }
}
*/

/* Example: Improve form accessibility */
/*
.web-page .form-control {
    border: 2px solid #e0e0e0;
    border-radius: 8px;
    padding: 12px;
    font-size: 1rem;
}

.web-page .form-control:focus {
    border-color: #2c5aa0;
    box-shadow: 0 0 0 0.2rem rgba(44, 90, 160, 0.15);
}

.web-page .form-label {
    font-weight: 600;
    margin-bottom: 8px;
    color: #495057;
}
*/

/* Example: Friendly footer */
/*
.web-footer {
    background-color: #2c3e50;
    color: #ecf0f1;
    padding: 40px 0;
    margin-top: 60px;
}

.web-footer a {
    color: #3498db;
}
*/

/* Example: Helpful tooltips and hints */
/*
.help-text {
    font-size: 0.9rem;
    color: #6c757d;
    font-style: italic;
}
*/


/* 
=============================================================================
YOUR CUSTOM PORTAL CSS - ADD BELOW THIS LINE
=============================================================================
*/

/* Add your portal-specific CSS here */


/* Login Page Dark Theme */
.page-card-head .login-tagline {
    display: block;
    width: fit-content;
    max-width: min(22em, 100%);
    margin: 8px auto 0;
    text-align: center;
    font-size: 14px;
    font-weight: 500;
    color: #3f5a4c;
    line-height: 1.35;
}
.for-login .page-card, 
.for-forgot .page-card, 
.for-login-with-email-link .page-card, 
.for-signup .page-card, 
.for-email-login .page-card {
    background-color: lightgray !important;
    border: none !important;
}
.navbar{
    background: var(--tp-green) !important;
    min-height: 64px;
    height: 64px;
    padding: 0;
    box-shadow: none;
}
.navbar > .container {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 16px;
    height: 64px;
    max-width: none;
    padding-left: 32px;
    padding-right: 32px;
}
.navbar-brand {
    display: flex !important;
    align-items: center;
    gap: 10px;
    padding: 0 !important;
    margin-right: 8px;
    overflow: visible;
    max-width: none;
}
.navbar-brand,
.navbar-brand:hover,
.navbar-brand:focus {
    color: #ffffff !important;
}
.navbar-brand b{
    color: white !important;
}
.navbar-brand img,
.navbar-brand .portal-brand-logo {
    display: block !important;
    width: 44px !important;
    height: 44px !important;
    max-width: none !important;
    max-height: none !important;
    object-fit: contain !important;
    object-position: center;
    border-radius: 10px;
    background: #ffffff;
    padding: 3px;
    box-sizing: border-box;
    flex-shrink: 0;
}
.portal-brand {
    display: flex;
    align-items: center;
    gap: 10px;
}
.portal-brand-logo {
    height: 44px;
    width: 44px;
    flex-shrink: 0;
}
.portal-brand-copy {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}
.portal-brand-name {
    color: #ffffff !important;
    font-weight: 700;
    font-size: 15px;
    letter-spacing: 0.01em;
}
.portal-brand-sub {
    color: #b9d6c5;
    font-size: 11.5px;
    font-weight: 500;
    max-width: 18em;
    line-height: 1.25;
}
.portal-header-actions {
    display: flex;
    align-items: center;
    gap: 18px;
    margin-left: auto;
    flex-shrink: 0;
}
.navbar-cta,
.portal-header-actions .navbar-cta,
.portal-header-actions .portal-submit-request {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    height: auto;
    padding: 9px 16px !important;
    border: 1px solid #ffffff26 !important;
    border-radius: 8px !important;
    background: #ffffff17 !important;
    color: #eef6f0 !important;
    font-size: 13.5px;
    font-weight: 600;
    line-height: 1;
    box-shadow: none !important;
    white-space: nowrap;
    text-decoration: none !important;
}
.navbar-cta:hover,
.portal-header-actions .navbar-cta:hover,
.portal-header-actions .portal-submit-request:hover {
    background: #ffffff26 !important;
    color: #ffffff !important;
    text-decoration: none !important;
}
.portal-header-actions .nav-item {
    list-style: none;
    margin: 0;
}
.portal-header-actions .nav-link,
.portal-header-actions .btn-login-area {
    color: #fff !important;
    padding: 8px 10px;
}
.portal-header-actions .nav-avatar {
    display: flex;
    align-items: center;
}
.navbar-toggler {
    border-color: rgba(255, 255, 255, 0.35) !important;
    color: #fff !important;
    order: 3;
}
.navbar > .container > .navbar-brand { order: 1; }
.navbar > .container > .navbar-collapse { order: 2; flex: 1 1 auto; }
.navbar > .container > .portal-header-actions { order: 4; }
.navbar-toggler .icon,
.navbar-toggler svg {
    fill: #fff;
    color: #fff;
}
@media (max-width: 576px) {
    .portal-brand-sub { display: none; }
    .navbar .portal-brand-copy { display: none; }
    .navbar-brand img,
    .navbar-brand .portal-brand-logo,
    .portal-brand-logo { width: 34px !important; height: 34px !important; }
}
.nav-link{
    color: white !important;
}
.navbar .dropdown-menu {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    left: auto;
    z-index: 1080;
    display: none;
    flex-direction: column;
    min-width: 12.5rem;
    margin: 0;
    padding: 6px 0;
    background: #fff !important;
    border: 1px solid #d9e2dc;
    border-radius: 10px;
    box-shadow: 0 12px 32px rgba(22, 36, 28, 0.18);
}
.navbar .dropdown-menu.show,
.navbar .dropdown.show > .dropdown-menu,
.navbar .dropdown.show .dropdown-menu {
    display: flex;
}
.navbar .dropdown-item,
.navbar .dropdown-menu a {
    display: block;
    width: 100%;
    box-sizing: border-box;
    padding: 10px 16px;
    color: #1f272e !important;
    text-decoration: none !important;
    white-space: nowrap;
    background: transparent;
}
.navbar .dropdown-item:hover,
.navbar .dropdown-menu a:hover {
    background: #f3f3f3 !important;
    color: #1f272e !important;
}

/* ===========================================================================
   Portal left sidebar — tenant nav with flat line icons
   =========================================================================== */

.page-content-wrapper > .container,
.page-container {
    max-width: none;
    padding-left: 32px;
    padding-right: 32px;
    padding-top: 28px;
}

/* Design shell: sidebar + main, 24px gap, no Bootstrap column squeeze */
body.web-page > .container:has(.sidebar-column),
.page-content-wrapper > .container:has(.sidebar-column) {
    max-width: none;
    padding: 28px 32px 40px;
}
body.web-page > .container > .row:has(.sidebar-column),
.container > .row:has(> .sidebar-column) {
    display: flex;
    flex-wrap: nowrap;
    align-items: flex-start;
    gap: 24px;
    margin-left: 0;
    margin-right: 0;
}
.sidebar-column {
    position: sticky;
    top: 28px;
    align-self: flex-start;
    margin-bottom: 24px;
    width: 264px !important;
    max-width: 264px !important;
    flex: 0 0 264px !important;
    padding-left: 0;
    padding-right: 0;
}
.main-column {
    flex: 1 1 auto !important;
    min-width: 0;
    max-width: none !important;
    width: auto !important;
    padding-left: 0;
    padding-right: 0;
}
.main-column .page-content-wrapper {
    max-width: none;
    padding: 0;
    margin: 0;
}
.main-column main.container,
.main-column .page-content-wrapper > main.container,
.page-content-wrapper > main.container {
    max-width: none;
    width: 100%;
    margin: 0;
    padding: 20px 16px 28px;
    box-sizing: border-box;
    background: transparent !important;
}
.page-header .my-account-header { display: none; }
.page-header:empty,
.page-header-actions-block:empty { display: none; }
.page-breadcrumbs,
.main-column .page-header-wrapper:empty,
.main-column .page-header:empty {
    display: none;
}

.web-sidebar.portal-nav,
.web-sidebar {
    background: #ffffff;
    border: 1px solid var(--tp-line);
    border-radius: 14px;
    padding: 20px 14px;
    box-shadow: 0 1px 2px #16281e0a;
}

.portal-nav-brand {
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 10px;
    margin: 0 0 8px;
    border-radius: 10px;
    text-decoration: none !important;
    color: inherit;
}
.portal-nav-brand:hover,
.portal-nav-brand.is-active {
    background: var(--tp-wash);
}

.portal-nav-mark {
    width: 34px;
    height: 34px;
    border-radius: 9px;
    background: var(--tp-wash);
    flex-shrink: 0;
    position: relative;
}

.portal-nav-mark::after {
    content: "";
    position: absolute;
    inset: 9px;
    background: #2f7a4e;
    -webkit-mask: var(--icon-grid) center / contain no-repeat;
    mask: var(--icon-grid) center / contain no-repeat;
}

.portal-nav-kicker {
    margin: 0;
    font-family: "JetBrains Mono", monospace;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #8a978f;
}

.portal-nav-brand > div {
    min-width: 0;
}

.portal-nav-title {
    margin: 0;
    font-size: 14.5px;
    font-weight: 700;
    color: #16241c;
    line-height: 1.25;
    overflow-wrap: anywhere;
}

.web-sidebar .title {
    font-weight: 600;
    font-size: 0.95rem;
    color: #2f3a2c;
    margin-bottom: 10px;
    list-style: none;
}

.web-sidebar .sidebar-items ul.list-unstyled,
.portal-nav-list {
    margin: 0;
    padding: 0;
}

.web-sidebar .sidebar-item {
    margin: 0 0 4px;
    list-style: none;
}

.web-sidebar .sidebar-item a,
.portal-nav-link {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 9px;
    color: #3b4740;
    font-size: 13.5px;
    font-weight: 500;
    text-decoration: none;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.web-sidebar .sidebar-item a:hover,
.portal-nav-link:hover {
    background-color: var(--tp-wash);
    color: var(--tp-ink);
    text-decoration: none;
}

.web-sidebar .sidebar-item a.active,
.portal-nav-link.active {
    background-color: var(--tp-wash);
    color: var(--tp-ink);
    font-weight: 700;
}

.portal-nav-icon {
    width: 30px;
    height: 30px;
    border-radius: 8px;
    flex-shrink: 0;
    background: var(--tp-icon);
    position: relative;
}

.portal-nav-icon::after {
    content: "";
    position: absolute;
    inset: 6px;
    background: #5a655e;
    -webkit-mask: var(--nav-icon, var(--icon-grid)) center / contain no-repeat;
    mask: var(--nav-icon, var(--icon-grid)) center / contain no-repeat;
}

.portal-nav-link.active .portal-nav-icon {
    background: var(--tp-icon-on);
}

.portal-nav-link.active .portal-nav-icon::after {
    background: var(--tp-green);
}

.web-sidebar .portal-nav-account .sidebar-item a.active,
.web-sidebar .portal-nav-account .portal-nav-link.active {
    background-color: var(--tp-green);
    color: #ffffff;
    font-weight: 700;
}
.web-sidebar .portal-nav-account .sidebar-item a.active:hover,
.web-sidebar .portal-nav-account .portal-nav-link.active:hover {
    background-color: var(--tp-green);
    color: #ffffff;
}
.web-sidebar .portal-nav-account .sidebar-item a.active .portal-nav-icon,
.web-sidebar .portal-nav-account .portal-nav-link.active .portal-nav-icon {
    background: #ffffff26;
}
.web-sidebar .portal-nav-account .sidebar-item a.active .portal-nav-icon::after,
.web-sidebar .portal-nav-account .portal-nav-link.active .portal-nav-icon::after {
    background: #ffffff;
}

.portal-nav-label {
    line-height: 1.25;
}

.web-sidebar .sidebar-group h6 {
    margin: 12px 10px 6px;
    font-size: 0.72rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #8a938a;
}

.portal-nav-account {
    margin-top: 8px !important;
    padding-top: 8px !important;
    border-top: 1px solid #eef0eb;
}

/* Flat line icons (Heroicons/Feather style), tinted via mask + current paint */
.web-sidebar {
    --icon-grid: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><rect x='3' y='3' width='7' height='7' rx='1'/><rect x='14' y='3' width='7' height='7' rx='1'/><rect x='3' y='14' width='7' height='7' rx='1'/><rect x='14' y='14' width='7' height='7' rx='1'/></svg>");
    --icon-wrench: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z'/></svg>");
    --icon-file: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/><polyline points='14 2 14 8 20 8'/><line x1='16' y1='13' x2='8' y2='13'/><line x1='16' y1='17' x2='8' y2='17'/></svg>");
    --icon-invoice: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M4 2h16v20H4z'/><path d='M8 6h8M8 10h8M8 14h5'/></svg>");
    --icon-chart: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><line x1='18' y1='20' x2='18' y2='10'/><line x1='12' y1='20' x2='12' y2='4'/><line x1='6' y1='20' x2='6' y2='14'/></svg>");
    --icon-star: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>");
    --icon-pin: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/><circle cx='12' cy='10' r='3'/></svg>");
    --icon-user: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'><path d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/><circle cx='12' cy='7' r='4'/></svg>");
}

.portal-nav-icon-wrench { --nav-icon: var(--icon-wrench); }
.portal-nav-icon-file { --nav-icon: var(--icon-file); }
.portal-nav-icon-invoice { --nav-icon: var(--icon-invoice); }
.portal-nav-icon-chart { --nav-icon: var(--icon-chart); }
.portal-nav-icon-star { --nav-icon: var(--icon-star); }
.portal-nav-icon-pin { --nav-icon: var(--icon-pin); }
.portal-nav-icon-user { --nav-icon: var(--icon-user); }
.portal-nav-icon-grid { --nav-icon: var(--icon-grid); }

.portal-drawer-backdrop {
    display: none;
}

/* ===========================================================================
   My Consumption (/my-consumption) — tenant usage dashboard
   =========================================================================== */

.mc-page { max-width: 100%; min-width: 0; overflow-x: clip; }

.mc-hero {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 16px;
    margin: 0 0 18px;
    padding: 12px 0 0;
    border-bottom: none;
    min-width: 0;
}
.mc-hero > div:first-child {
    flex: 1 1 220px;
    min-width: 0;
}

.mc-kicker {
    margin: 0 0 8px;
    padding-top: 4px;
    font-family: "JetBrains Mono", monospace;
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #6d9b7e;
    font-weight: 600;
}

.mc-title {
    margin: 0 0 6px;
    font-size: 30px;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--tp-ink);
    overflow-wrap: anywhere;
}

.mc-sub {
    margin: 0;
    color: var(--tp-muted);
    font-size: 13px;
    max-width: 640px;
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.mc-invoice-link,
.tp-new-btn,
.web-list-page .btn-new-doc {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    flex: 0 0 auto;
    max-width: 100%;
    padding: 12px 20px;
    min-height: 48px;
    border-radius: 12px;
    border: none;
    background: var(--tp-green);
    color: #fff !important;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: 0.01em;
    text-decoration: none !important;
    box-shadow: 0 1px 2px #16281e14, 0 8px 18px #1f5c3c1f;
    white-space: nowrap;
}
.mc-invoice-link:hover,
.tp-new-btn:hover,
.web-list-page .btn-new-doc:hover {
    background: var(--tp-green-dark);
    color: #fff !important;
}
.tp-new-icon,
.web-list-page .btn-new-doc::before {
    content: "";
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 7px;
    background: #ffffff24;
    box-shadow: inset 0 0 0 1px #ffffff30;
    display: grid;
    place-items: center;
}
.tp-new-icon::after {
    content: "";
    width: 12px;
    height: 12px;
    background: #fff;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'><path d='M12 5v14M5 12h14'/></svg>") center / contain no-repeat;
    mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'><path d='M12 5v14M5 12h14'/></svg>") center / contain no-repeat;
}
.tp-new-icon-list::after {
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'><path d='M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01'/></svg>") center / contain no-repeat;
    mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'><path d='M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01'/></svg>") center / contain no-repeat;
}
.web-list-page .btn-new-doc::before {
    background: #ffffff24 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.6' stroke-linecap='round'><path d='M12 5v14M5 12h14'/></svg>") center / 12px 12px no-repeat;
}
.web-list-page .btn-new-doc.hidden-xs {
    display: inline-flex !important;
}
.web-list-actions {
    display: flex;
    flex: 0 1 auto;
    min-width: 0;
    max-width: 100%;
}

.mc-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(140px, 100%), 1fr));
    gap: 12px;
    min-width: 0;
    margin-bottom: 18px;
}

.mc-stat {
    background: #fff;
    border: 1px solid var(--tp-line);
    border-radius: 12px;
    padding: 14px 16px;
    box-shadow: 0 1px 2px #16281e0a;
}

.mc-stat-alert {
    background: #fff6e8;
    border-color: #f0d3a0;
}

.mc-stat-label {
    display: block;
    font-family: "JetBrains Mono", monospace;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #8a978f;
    margin-bottom: 6px;
}

.mc-stat-value {
    font-size: 21px;
    font-weight: 700;
    color: var(--tp-ink);
    font-variant-numeric: tabular-nums;
}

.mc-stat-date { font-size: 1.05rem; }

.mc-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
}

.mc-search { flex: 1 1 160px; min-width: 0; }
.mc-filter { flex: 1 1 140px; min-width: 0; }

.rj-page .mc-toolbar {
    align-items: flex-end;
}
.rj-page .mc-search .form-control,
.rj-page .mc-filter select {
    height: 44px;
    border: 1px solid #dde5df;
    border-radius: 10px;
    background: #fff;
    color: #16241c;
    font-size: 14px;
    box-shadow: 0 1px 2px #16281e0a;
}
.rj-page .mc-search .form-control {
    padding: 0 14px;
}
.rj-page .mc-filter {
    flex: 0 1 260px;
    min-width: 220px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.rj-page .mc-filter-label {
    font-family: "JetBrains Mono", ui-monospace, monospace;
    font-size: 10px;
    font-weight: 500;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #8a978f;
}
.rj-page .mc-filter select {
    appearance: none;
    -webkit-appearance: none;
    width: 100%;
    padding: 0 40px 0 14px;
    font-weight: 600;
    line-height: 44px;
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6.5 8 10.5 12 6.5' stroke='%232f7a4e' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 12px center;
    background-size: 16px;
}
.rj-page .mc-filter select:hover {
    border-color: #b7c9bc;
}
.rj-page .mc-filter select:focus,
.rj-page .mc-search .form-control:focus {
    outline: none;
    border-color: #2f7a4e;
    box-shadow: 0 0 0 3px #2f7a4e22;
}

.mc-search .form-control,
.mc-filter .form-control {
    border: 1px solid #d5d9d2;
    border-radius: 8px;
    padding: 10px 12px;
    height: auto;
}

.mc-toggle {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.9rem;
    color: #3b4a38;
    margin: 0;
    cursor: pointer;
}

.mc-count {
    margin: 0 0 0 auto;
    font-size: 0.85rem;
    color: #8a938a;
}

.mc-table-wrap {
    background: #fff;
    border: 1px solid var(--tp-line);
    border-radius: 14px;
    overflow: auto;
    box-shadow: 0 1px 2px #16281e0a;
    padding: 8px 14px 10px;
    box-sizing: border-box;
}

.mc-table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
}

.mc-table th {
    text-align: left;
    font-family: "JetBrains Mono", monospace;
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: #7a877f;
    padding: 11px 12px;
    background: #f7f9f7;
    border-bottom: 1px solid #edf1ee;
    white-space: nowrap;
}

.mc-table th:first-child { border-top-left-radius: 8px; }
.mc-table th:last-child { border-top-right-radius: 8px; }

.mc-table td {
    padding: 10px 12px;
    border-bottom: 1px solid #f0f3f1;
    vertical-align: middle;
    color: var(--tp-ink);
    font-size: 13px;
    line-height: 1.4;
}

.mc-table tbody tr:last-child td { border-bottom: none; }
.mc-table tbody tr:hover { background: #f7f9f7; }

.mc-meter { font-size: 13px; font-weight: 650; color: var(--tp-ink); }
.mc-meter-meta { font-size: 11px; color: #8a938a; font-weight: 400; }
.mc-usage { font-size: 13px; font-weight: 650; }

.mc-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
}

.mc-badge-muted { background: #eef1ee; color: #4b5a51; }
.mc-badge-ok { background: #e6f1ea; color: #1d5c3b; }
.mc-badge-warn { background: #fff1cc; color: #7a5400; }
.mc-badge-crit { background: #fde8e8; color: #8a1f1f; }

.mc-more-wrap,
.website-list .more-block {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 20px 16px 24px;
    padding: 0;
}
.mc-more-wrap[hidden],
.website-list .more-block.d-none,
.website-list .more-block.hide {
    display: none !important;
}
.mc-more-btn,
.website-list .btn-more {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: auto;
    min-width: 168px;
    min-height: 44px;
    margin: 0;
    padding: 10px 22px;
    border-radius: 999px;
    border: 1px solid #d5d9d2;
    background: #fff;
    color: var(--tp-ink) !important;
    font-size: 13.5px;
    font-weight: 650;
    line-height: 1;
    box-shadow: 0 1px 2px #16281e0a;
    cursor: pointer;
}
.mc-more-btn:hover,
.website-list .btn-more:hover {
    background: var(--tp-wash);
    border-color: #c9d4cc;
    color: var(--tp-ink) !important;
}
.mc-more-icon,
.website-list .btn-more .mc-more-icon {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>") center / contain no-repeat;
    mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>") center / contain no-repeat;
}

.mc-empty, .mc-empty-filter {
    text-align: center;
    padding: 64px 24px 68px;
    color: var(--tp-soft);
}

.mc-empty h2 { color: var(--tp-ink); margin-bottom: 8px; font-size: 24px; font-weight: 700; }

.mc-page .sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}

@media (max-width: 768px) {
    .mc-hero { flex-direction: column; align-items: flex-start; gap: 12px; }
    .mc-title { font-size: 22px; }
    .mc-sub { font-size: 13px; }
    .mc-kicker { font-size: 10px; letter-spacing: 0.12em; }
    .mc-stat-value { font-size: 18px; }
    .mc-invoice-link { width: 100%; text-align: center; }
    .mc-more-wrap,
    .website-list .more-block {
        margin: 16px 8px 20px;
    }
    .mc-more-btn,
    .website-list .btn-more {
        min-width: 0;
        padding: 10px 20px;
    }
    .mc-count { margin-left: 0; width: 100%; }
    .mc-table-wrap { padding: 6px 8px 8px; }
    .mc-table thead { display: none; }
    .mc-table, .mc-table tbody, .mc-table tr, .mc-table td { display: block; width: 100%; }
    .mc-table tr {
        padding: 8px 4px;
        border-bottom: 1px solid #e2e5df;
    }
    .mc-table td {
        display: flex;
        justify-content: space-between;
        gap: 12px;
        border: none;
        padding: 5px 8px;
        font-size: 12.5px;
        text-align: right !important;
    }
    .mc-table td::before {
        content: attr(data-label);
        font-size: 11px;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        color: #8a938a;
        text-align: left;
    }
    .mc-meter { font-size: 12.5px; }
    .mc-meter-meta { font-size: 10.5px; }
    .mc-badge { font-size: 10.5px; }
}

/* ===========================================================================
   Rate a job (/rate-job)
   =========================================================================== */

.rj-page { max-width: 100%; min-width: 0; overflow-x: clip; }
.rj-card,
.rj-card-head,
.rj-form,
.rj-done { min-width: 0; }
.rj-stars { flex-wrap: wrap; max-width: 100%; }
.rj-card-meta { overflow-wrap: anywhere; }

.rj-banner {
    background: #fff6e8;
    border: 1px solid #f0d3a0;
    border-radius: 10px;
    padding: 12px 16px;
    margin-bottom: 16px;
    color: #7a5400;
}

.rj-list { display: flex; flex-direction: column; gap: 14px; }

.rj-card {
    background: #fff;
    border: 1px solid var(--tp-line);
    border-radius: 14px;
    padding: 18px 20px;
    box-shadow: 0 1px 2px #16281e0a;
}

.rj-card.is-featured {
    border-color: var(--tp-green);
    box-shadow: 0 0 0 3px rgba(31, 92, 60, 0.15);
}

.rj-card-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 12px;
}

.rj-card-title {
    margin: 0 0 4px;
    font-size: 15px;
    font-weight: 650;
    color: var(--tp-ink);
}

.rj-card-meta {
    margin: 0;
    color: #8a938a;
    font-size: 0.88rem;
}

.rj-prompt {
    margin: 0 0 6px;
    font-weight: 600;
    color: var(--tp-ink);
}

.rj-stars {
    display: flex;
    gap: 4px;
    margin: 4px 0;
}

.rj-star {
    background: none;
    border: none;
    padding: 0 2px;
    font-size: 2rem;
    line-height: 1;
    color: #d5d9d2;
    cursor: pointer;
}

.rj-stars.is-readonly .rj-star { cursor: default; }
.rj-star.is-on,
.rj-star.is-hover { color: #e4b200; }

.rj-star-caption {
    margin: 0 0 12px;
    font-size: 0.88rem;
    color: #5d675a;
    min-height: 1.2em;
}

.rj-comment-label {
    display: block;
    margin-bottom: 12px;
    font-size: 0.9rem;
    color: #3b4a38;
}

.rj-comment-label .form-control {
    margin-top: 6px;
    border: 1px solid #d5d9d2;
    border-radius: 8px;
}

.rj-submit { border-radius: 8px; background: var(--tp-green); border-color: var(--tp-green); }
.rj-submit:disabled { opacity: 0.5; }

.rj-error { color: #a94442; margin: 8px 0 0; font-size: 0.9rem; }

.rj-done-label { margin: 6px 0 0; color: var(--tp-ink); }
.rj-comment {
    margin: 8px 0 0;
    padding: 10px 12px;
    background: var(--tp-bg);
    border-radius: 8px;
    color: #3b4740;
}

@media (max-width: 768px) {
    .rj-page .mc-hero { margin-bottom: 14px; }
    .rj-card { padding: 16px 16px 18px; border-radius: 12px; }
    .rj-card-head { flex-direction: column; gap: 8px; }
    .rj-card-title { font-size: 14px; font-weight: 650; }
    .rj-card-meta { font-size: 11.5px; line-height: 1.45; }
    .rj-prompt { font-size: 13px; font-weight: 600; }
    .rj-star-caption { font-size: 11.5px; }
    .rj-comment-label { font-size: 12.5px; }
    .rj-done-label { font-size: 13px; }
    .rj-comment { font-size: 13px; padding: 8px 10px; }
    .rj-stars { gap: 2px; }
    .rj-star {
        font-size: 26px;
        min-width: 36px;
        min-height: 36px;
        padding: 0;
    }
    .rj-submit { width: 100%; font-size: 14px; }
    .mc-empty h2 { font-size: 18px; }
    .mc-empty p { font-size: 13px; }
    .rj-page .mc-empty .btn-primary { width: 100%; }
}

/* ===========================================================================
   Footer — IPDC copyright + Powered by Resolution Studio
   =========================================================================== */

footer.web-footer,
.web-footer {
    flex: none;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    background: #eef1ee !important;
    border-top: 1px solid #e2e7e2;
    color: var(--tp-muted);
    font-size: 12.5px;
    line-height: 1.35;
    padding: 22px 32px !important;
    min-height: 0 !important;
    height: auto;
    margin-top: auto;
    display: flex;
    align-items: center;
    position: relative;
    z-index: 5;
    overflow: visible;
}
.tp-footer {
    display: flex;
    align-items: center;
    gap: 20px;
    width: 100%;
    max-width: 100%;
    min-height: 0;
}
.tp-footer-left {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 16px;
    min-width: 0;
}
.tp-footer-copy,
.tp-footer-powered {
    margin: 0;
    min-width: 0;
    color: var(--tp-muted);
    overflow-wrap: anywhere;
}
.tp-footer-powered {
    text-align: right;
    flex: none;
    white-space: nowrap;
}
.tp-footer-powered a {
    color: var(--tp-green);
    font-weight: 700;
    text-decoration: none;
}
.tp-footer-powered a:hover,
.tp-footer-powered a:focus {
    color: var(--tp-green);
    text-decoration: underline;
}
.tp-footer-social {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}
.tp-social {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    border: 1px solid #d5d9d2;
    background: #fff;
    display: grid;
    place-items: center;
    text-decoration: none !important;
    flex: 0 0 32px;
}
.tp-social:hover { background: var(--tp-wash); border-color: #c9d4cc; }
.tp-social::after {
    content: "";
    width: 15px;
    height: 15px;
    background: var(--tp-green);
}
.tp-social-facebook::after {
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M14 9h3V6h-3c-2.2 0-4 1.8-4 4v2H8v3h2v7h3v-7h2.6L16 12h-3V10c0-.6.4-1 1-1z'/></svg>") center / contain no-repeat;
    mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M14 9h3V6h-3c-2.2 0-4 1.8-4 4v2H8v3h2v7h3v-7h2.6L16 12h-3V10c0-.6.4-1 1-1z'/></svg>") center / contain no-repeat;
}
.tp-social-x::after {
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M14.7 3h3.1l-6.8 7.8L19 21h-5.3l-4.2-5.5L4.8 21H1.7l7.3-8.3L2 3h5.4l3.8 5L14.7 3zm-1.1 16.2h1.7L7.5 4.7H5.7l7.9 14.5z'/></svg>") center / contain no-repeat;
    mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M14.7 3h3.1l-6.8 7.8L19 21h-5.3l-4.2-5.5L4.8 21H1.7l7.3-8.3L2 3h5.4l3.8 5L14.7 3zm-1.1 16.2h1.7L7.5 4.7H5.7l7.9 14.5z'/></svg>") center / contain no-repeat;
}
.tp-social-linkedin::after {
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M6.5 9H4V20h2.5V9zM5.2 4C4.3 4 3.6 4.7 3.6 5.6S4.3 7.2 5.2 7.2 6.8 6.5 6.8 5.6 6.1 4 5.2 4zM20 20h-2.5v-5.6c0-1.6-.6-2.6-2-2.6-1.1 0-1.7.7-2 1.4V20H11V9h2.4v1.5c.5-.8 1.5-1.8 3.5-1.8 2.5 0 4.1 1.6 4.1 5.1V20z'/></svg>") center / contain no-repeat;
    mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M6.5 9H4V20h2.5V9zM5.2 4C4.3 4 3.6 4.7 3.6 5.6S4.3 7.2 5.2 7.2 6.8 6.5 6.8 5.6 6.1 4 5.2 4zM20 20h-2.5v-5.6c0-1.6-.6-2.6-2-2.6-1.1 0-1.7.7-2 1.4V20H11V9h2.4v1.5c.5-.8 1.5-1.8 3.5-1.8 2.5 0 4.1 1.6 4.1 5.1V20z'/></svg>") center / contain no-repeat;
}
.tp-social-telegram::after {
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M21.5 4.5 2.8 11.6c-1.3.5-1.2 1.2-.2 1.5l4.8 1.5 11.1-7c.5-.3 1-.1.6.2l-9 8.2-.3 4.6c.5 0 .7-.2 1-.5l2.3-2.2 4.8 3.5c.9.5 1.5.2 1.7-.8l3.1-14.6c.3-1.3-.5-1.9-1.4-1.5z'/></svg>") center / contain no-repeat;
    mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'><path d='M21.5 4.5 2.8 11.6c-1.3.5-1.2 1.2-.2 1.5l4.8 1.5 11.1-7c.5-.3 1-.1.6.2l-9 8.2-.3 4.6c.5 0 .7-.2 1-.5l2.3-2.2 4.8 3.5c.9.5 1.5.2 1.7-.8l3.1-14.6c.3-1.3-.5-1.9-1.4-1.5z'/></svg>") center / contain no-repeat;
}
.tp-footer-subscribe {
    margin-left: auto;
    justify-self: auto;
    min-width: 0;
    max-width: 100%;
}
.tp-footer-subscribe .input-group {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    width: auto;
    max-width: 100%;
    margin: 0;
}
.tp-footer-subscribe #footer-subscribe-email.form-control,
.tp-footer-subscribe #footer-subscribe-email {
    width: 200px;
    max-width: 42vw;
    height: 36px !important;
    min-height: 36px;
    padding: 0 12px;
    border: 1px solid #d7ded9;
    border-radius: 8px;
    background: #fff;
    font-size: 12.5px;
    box-shadow: none;
}
.tp-footer-subscribe #footer-subscribe-button {
    height: 36px;
    margin-left: 8px !important;
    padding: 0 14px !important;
    border: 0;
    border-radius: 8px;
    background: var(--tp-green) !important;
    color: #fff !important;
    font-size: 12.5px;
    font-weight: 600;
    white-space: nowrap;
    line-height: 36px;
}
.tp-footer-subscribe .input-group-append { margin: 0; }
.rj-page,
.mc-page,
.web-form-container,
[data-doctype="Web Form"] .page_content {
    max-width: 100%;
    min-width: 0;
}
@media (max-width: 1100px) {
    .tp-footer {
        flex-wrap: wrap;
    }
    .tp-footer-subscribe { margin-left: 0; }
    .tp-footer-powered { text-align: left; }
}
@media (max-width: 767px) {
    footer.web-footer,
    .web-footer {
        padding: 18px 16px !important;
        min-height: 0 !important;
    }
    .tp-footer-subscribe .input-group { width: 100%; }
    .tp-footer-subscribe #footer-subscribe-email {
        flex: 1 1 auto;
        width: auto !important;
        max-width: none;
    }
}

/* ===========================================================================
   Official Request Letters list + web forms
   =========================================================================== */

[data-doctype="Web Form"] .page-content-wrapper .container .page_content {
    max-width: 100%;
    margin: 0;
}

.web-list-page .web-list-container {
    min-height: 0;
    border: none;
    border-radius: 0;
    padding: 0;
}

.web-list-page .web-list-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 14px;
}

.web-list-page .web-list-filters.hide {
    display: none;
}

.web-list-page .web-list-filters .form-group.frappe-control {
    flex: 1 1 160px;
    max-width: 240px;
    min-width: 145px;
    padding: 0;
    margin: 0;
}

.web-list-page .web-list-filters .form-control,
.web-list-page .web-list-filters .input-xs {
    height: auto !important;
    padding: 10px 12px;
    border: 1px solid #d5d9d2;
    border-radius: 8px;
    line-height: 1.3;
}

.web-list-page .web-list-table {
    background: #fff;
    border: 1px solid var(--tp-line);
    border-radius: 14px;
    overflow: auto;
    box-shadow: 0 1px 2px #16281e0a;
    padding: 8px 14px 10px;
    box-sizing: border-box;
}

.web-list-page .web-list-table .table {
    margin: 0;
    border: none;
}

.web-list-page .web-list-table .table thead th {
    text-align: left;
    font-family: "JetBrains Mono", monospace;
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: #7a877f;
    padding: 11px 12px;
    background: #f7f9f7;
    border-bottom: 1px solid #edf1ee;
    font-weight: 500;
    white-space: nowrap;
}

.web-list-page .web-list-table .table tbody td {
    padding: 12px;
    border-top: none;
    border-bottom: 1px solid #f0f3f1;
    max-width: none;
    font-size: 13.5px;
    color: var(--tp-ink);
    vertical-align: middle;
}

.web-list-page .web-list-table .table tbody tr:last-child td {
    border-bottom: none;
}

.web-list-page .web-list-table .table tbody tr:hover {
    background: #f7f9f7;
}

.web-list-page .web-list-table .table td p,
.web-list-page .web-list-table .table td .ellipsis {
    width: auto;
    max-width: none;
    margin: 0;
}

.web-list-page .web-list-table thead th:nth-child(1),
.web-list-page .web-list-table thead th:nth-child(2),
.web-list-page .web-list-table .list-col-checkbox,
.web-list-page .web-list-table .list-col-serial {
    display: none;
}

.web-list-page .web-list-footer {
    display: flex;
    justify-content: center;
    margin: 20px 16px 24px;
}

.web-list-page .web-list-footer .more {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-width: 168px;
    min-height: 44px;
    padding: 10px 22px;
    border-radius: 999px;
    border: 1px solid #d5d9d2;
    background: #fff;
    color: var(--tp-ink);
    font-size: 13.5px;
    font-weight: 650;
    box-shadow: 0 1px 2px #16281e0a;
}

.web-list-page .no-result {
    min-height: 0;
    border: none;
    padding: 64px 24px 68px;
    color: var(--tp-soft);
}

.web-list-page .no-result .btn-new-doc {
    background: var(--tp-green);
    border-color: var(--tp-green);
    border-radius: 9px;
    color: #fff;
    font-weight: 600;
}

.web-form-container.tp-form,
.web-form-container {
    background: #fff;
    border: 1px solid var(--tp-line);
    border-radius: 14px;
    box-shadow: 0 1px 2px #16281e0a;
    overflow: hidden;
}

.web-form-container > [style*="height: 3rem"],
.web-form-container > .breadcrumb-container {
    display: none !important;
}

.web-form-container .web-form-header {
    border: 0;
    border-radius: 0;
    background: linear-gradient(180deg, #f7fbf8 0%, #ffffff 72%);
    padding: 32px 32px 0;
}

.web-form-container .web-form-head {
    border-bottom: 1px solid #edf1ee;
    padding-bottom: 20px;
}

.web-form-container .web-form-head .title {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.tp-back {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 36px;
	margin: 0 0 8px;
	color: var(--tp-green);
	font-size: 14px;
	font-weight: 650;
	line-height: 1;
	text-decoration: none !important;
}
.tp-back::before {
	content: "";
	width: 16px;
	height: 16px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M15 18 9 12l6-6'/></svg>") center / contain no-repeat;
	mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M15 18 9 12l6-6'/></svg>") center / contain no-repeat;
}
.web-form-container .web-form-title h1 {
    margin: 0;
    font-size: 30px;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--tp-ink);
}

.web-form-container .web-form-title .tp-form-sub,
.web-form-container .web-form-title p:not(.mc-kicker) {
    margin: 6px 0 0;
    color: var(--tp-muted);
    font-size: 13px;
}

.web-form-container .tp-form-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: none;
    padding-top: 2px;
}

.web-form-container .indicator-pill,
.web-form-container .indicator-pill.orange {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    margin: 0;
    padding: 5px 12px;
    border: 0;
    border-radius: 999px;
    background: #fdf1dc !important;
    color: #8a5c07 !important;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
}
.web-form-container .indicator-pill.hide { display: none !important; }
.web-form-container .indicator-pill::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #e8a93f;
    box-shadow: 0 0 0 3px #f8e4b8;
}

.web-form-container .web-form-introduction {
    margin-top: 16px;
    padding: 12px 14px;
    border: 1px solid var(--tp-line);
    border-radius: 9px;
    background: #f4f7f5;
    color: #3b4740;
    font-size: 12.5px;
    line-height: 1.55;
}
.web-form-container .web-form-introduction p { margin: 0 0 8px; color: inherit; }
.web-form-container .web-form-introduction p:last-child { margin-bottom: 0; }

.web-form-container .web-form {
    border: 0;
    border-radius: 0;
    background: #fff;
    padding: 22px 32px 28px;
}

.web-form-container .form-section .section-head {
    font-family: "JetBrains Mono", monospace;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #6d9b7e;
    padding: 4px 0 12px;
    border: 0;
}

.web-form-container .form-column .form-group,
.web-form-container .frappe-control {
    margin-bottom: 16px;
}

.web-form-container .control-label,
.web-form-container label {
    font-size: 13px;
    font-weight: 600;
    color: var(--tp-ink);
    margin-bottom: 6px;
}
.web-form-container .reqd,
.web-form-container .control-label .reqd {
    color: #c0503a !important;
}

.web-form-container .help-box,
.web-form-container .help {
    font-size: 12px;
    color: #9aa8a0;
    margin-top: 6px;
}

.web-form-container .form-control,
.web-form-container select.input-with-feedback,
.web-form-container textarea.input-with-feedback,
.web-form-container input.input-with-feedback,
.web-form-page .form-control {
    border: 1px solid #e6ebe6 !important;
    border-radius: 10px !important;
    background: #f4f6f5 !important;
    padding: 11px 14px !important;
    min-height: 44px;
    color: var(--tp-ink) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}
.web-form-container .form-control:focus,
.web-form-container input.input-with-feedback:focus,
.web-form-container textarea.input-with-feedback:focus,
.web-form-container select.input-with-feedback:focus {
    background: #fff !important;
    border-color: #cfe0d5 !important;
    box-shadow: 0 0 0 3px #eaf3ec;
}

.web-form-container .like-disabled-input,
.web-form-container .control-value {
    border: 1px solid #e6ebe6;
    border-radius: 10px;
    background: #f7f9f7;
    padding: 11px 14px;
    min-height: 44px;
    color: #3b4740;
}

.web-form-container .ql-toolbar.ql-snow,
.web-form-container .comment-input-header {
    border: 1px solid #e6ebe6;
    border-bottom: 0;
    border-radius: 8px 8px 0 0;
    background: #f7f9f7;
}
.web-form-container .ql-container.ql-snow,
.web-form-container .ql-editor {
    border-color: #e6ebe6;
    border-radius: 0 0 8px 8px;
    background: #fff;
    min-height: 140px;
}

.web-form-container .btn-file-upload,
.web-form-container .btn-attach,
.web-form-container .attached-file,
.web-form-container .web-form-wrapper .btn-default {
    border: 1px dashed #c3cec7;
    background: #fbfcfb;
    color: #33403a;
    border-radius: 10px;
    padding: 10px 16px;
    font-weight: 600;
    min-height: 42px;
}
.web-form-container .btn-file-upload:hover,
.web-form-container .btn-attach:hover {
    border-color: var(--tp-green);
    background: var(--tp-wash);
    color: var(--tp-green);
}

.web-form-container .checkbox,
.web-form-container .form-check {
    padding: 10px 12px;
    border: 1px solid #e6ebe6;
    border-radius: 10px;
    background: #fbfcfb;
}
.web-form-container input[type="checkbox"] {
    width: 16px;
    height: 16px;
    border-radius: 4px;
    accent-color: var(--tp-green);
}

.web-form-container .web-form-footer {
    padding-top: 8px;
    border-top: 1px solid #edf1ee;
    margin-top: 8px;
}
.web-form-container .web-form-footer .right-area {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
}
.web-form-container .discard-btn,
.web-form-container .delete-btn {
    border: 1px solid #dde5df;
    background: #fff;
    color: #33403a;
    border-radius: 8px;
    padding: 9px 18px;
    font-weight: 600;
    min-height: 40px;
}
.web-form-container .submit-btn.btn-primary,
.web-form-page .btn-primary[type="submit"],
.web-form .btn-primary[type="submit"] {
    background: var(--tp-green);
    border: 0;
    border-radius: 8px;
    min-height: 40px;
    padding: 9px 18px;
    font-weight: 600;
    box-shadow: none;
}
.web-form-container .submit-btn.btn-primary:hover,
.web-form-page .btn-primary[type="submit"]:hover {
    background: var(--tp-green-dark);
}

.web-list-page .web-list-filters .form-control,
.web-list-page .web-list-filters .input-xs {
    border: 1px solid #dde5df !important;
    border-radius: 8px !important;
    background: #fbfcfb !important;
    color: #33403a;
}
.web-list-page .web-list-filters .form-control::placeholder {
    color: #9aa8a0;
}

.success-page {
    background: #fff;
    border: 1px solid var(--tp-line);
    border-radius: 14px;
    box-shadow: 0 1px 2px #16281e0a;
    padding: 48px 24px;
    text-align: center;
}
.success-page .success-title { color: var(--tp-ink); font-weight: 700; }
.success-page .success-icon { color: var(--tp-green); }

/* Comments / attachments / status track sit beside .web-form, not inside it,
   so they missed the 32px form padding. Timeline indent then left the right
   edge flush (or clipped by overflow:hidden on the card). */
.web-form-container .comments,
.web-form-container .attachments {
    padding: 8px 32px 28px;
    box-sizing: border-box;
    min-width: 0;
    max-width: 100%;
}
.web-form-container .tp-track {
    margin: 0 32px 16px;
    box-sizing: border-box;
}
.web-form-container .comments h3,
.web-form-container .attachments h5 {
    margin: 8px 0 16px;
    font-size: 18px;
    font-weight: 700;
    color: var(--tp-ink);
}
.web-form-container .tp-comment-lead {
    margin: -8px 0 16px;
    color: #4b5a51;
    font-size: 14px;
}
body.tp-request-locked .web-form-footer,
body.tp-request-locked .edit-button {
    display: none !important;
}
body.tp-request-locked form.web-form input,
body.tp-request-locked form.web-form select,
body.tp-request-locked form.web-form textarea {
    pointer-events: none;
    background: #f7f9f7;
    color: #24332c;
}
.web-form-container .comment-view,
.web-form-container .comment-form-wrapper,
.web-form-container .new-comment,
.web-form-container .new-comment-fields,
.web-form-container #comment-list,
.web-form-container .comment-list,
.web-form-container .comment-row {
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
}
.web-form-container .new-comment {
    width: 100%;
    display: block;
}
.web-form-container .new-comment-fields {
    width: 100%;
    min-width: 0;
}
.web-form-container .comment-text-area textarea,
.web-form-container .new-comment .form-control {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}
.web-form-container #comment-list {
    padding-left: 28px;
    padding-right: 0;
}
.web-form-container .comment-row.media {
    display: block;
}
.web-form-container .comment-content {
    margin-left: 28px;
    margin-right: 0;
    min-width: 0;
    width: auto;
    max-width: none;
    box-sizing: border-box;
    overflow-wrap: anywhere;
}
.web-form-container .add-comment-button {
    margin-left: 28px;
}
.web-form-container .timeline-dot {
    left: 12px;
}
.web-form-container .attachments .attachment-link {
    display: flex;
    align-items: center;
    gap: 8px;
    max-width: 100%;
    min-width: 0;
}
.web-form-container .attachments .file-name {
    min-width: 0;
    overflow-wrap: anywhere;
}
.lf-msg,
.lf-ask,
.lf-reply textarea,
.lf-reply input[type="file"] {
    box-sizing: border-box;
    overflow-wrap: anywhere;
}

@media (max-width: 768px) {
    .web-form-container .web-form-header,
    .web-form-container .web-form,
    .lf-box {
        padding-left: 18px;
        padding-right: 18px;
    }
    .web-form-container .web-form-title h1 { font-size: 24px; }
    .web-form-container .comments,
    .web-form-container .attachments {
        padding: 8px 18px 22px;
    }
    .web-form-container .tp-track {
        margin: 0 18px 16px;
    }
    .web-form-container #comment-list {
        padding-left: 20px;
    }
    .web-form-container .comment-content,
    .web-form-container .add-comment-button {
        margin-left: 20px;
    }
    .tp-steps {
        flex-wrap: wrap;
    }
    .tp-steps li {
        flex: 1 1 calc(50% - 8px);
        min-width: 0;
        overflow-wrap: anywhere;
    }
}

body.lf-list .web-list-table {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
	overflow: visible;
}
body.lf-list .web-list-table thead,
body.lf-list .list-col-checkbox,
body.lf-list .list-col-serial,
body.lf-list .web-list-table td[data-label="Priority"] {
	display: none !important;
}
body.lf-list .web-list-table .table,
body.lf-list .web-list-table .table tbody,
body.lf-list .web-list-table .table tr,
body.lf-list .web-list-table .table td {
	display: block !important;
	width: auto !important;
}
body.lf-list .web-list-table .table tbody {
	display: grid !important;
	gap: 12px;
}
body.lf-list .web-list-table .table tr {
	display: grid !important;
	grid-template-columns: 1fr auto;
	gap: 6px 12px;
	margin: 0;
	padding: 16px 18px !important;
	background: #fff;
	border: 1px solid #e6eee8 !important;
	border-radius: 16px;
	cursor: pointer;
}
body.lf-list .web-list-table .table td {
	display: block !important;
	padding: 0 !important;
	border: 0 !important;
	text-align: left !important;
}
body.lf-list .web-list-table .table td.list-col-checkbox,
body.lf-list .web-list-table .table td.list-col-serial,
body.lf-list .web-list-table .table td[data-label="Priority"] {
	display: none !important;
}
body.lf-list .web-list-table .table td::before {
	content: none !important;
}
body.lf-list .web-list-table td[data-label="Title"] {
	grid-column: 1;
	grid-row: 1;
	font-size: 16px;
	font-weight: 750;
	color: #14241c;
}
body.lf-list .web-list-table td[data-label="Status"] {
	grid-column: 2;
	grid-row: 1;
	justify-self: end;
}
body.lf-list .web-list-table td[data-label="Category"],
body.lf-list .web-list-table td[data-label="Date"] {
	grid-column: 1 / -1;
	font-size: 13px;
	color: #5d7466;
}
body.lf-list .web-list-table td[data-label="Priority"] {
	display: none;
}
body.lf-list .web-list-filters {
	margin-bottom: 16px;
}
body.lf-list .web-list-filters .form-group.frappe-control {
	flex: 1 1 140px;
	max-width: none;
}

@media (max-width: 768px) {
    .web-list-page .web-list-table { padding: 6px 8px 8px; }
    .web-list-page .web-list-table thead { display: none; }
    .web-list-page .web-list-table .table,
    .web-list-page .web-list-table .table tbody,
    .web-list-page .web-list-table .table tr,
    .web-list-page .web-list-table .table td {
        display: block;
        width: 100%;
    }
    .web-list-page .web-list-table .table tr {
        padding: 10px 0;
        border-bottom: 1px solid #e2e5df;
    }
    .web-list-page .web-list-table .table td {
        display: flex;
        justify-content: space-between;
        gap: 12px;
        border: none;
        padding: 6px 8px;
        text-align: right;
    }
    .web-list-page .web-list-table .table td::before {
        content: attr(data-label);
        font-size: 0.75rem;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        color: #8a938a;
        text-align: left;
    }
    .web-list-page .web-list-table thead th:nth-child(1),
    .web-list-page .web-list-table thead th:nth-child(2),
    .web-list-page .web-list-table .list-col-checkbox,
    .web-list-page .web-list-table .list-col-serial {
        display: none;
    }
}

/* Public blog (/blog and article) */
.wb-page { max-width: 1100px; margin: 0 auto; padding: 1.5rem 1rem 3rem; }
.wb-nav { font-size: 0.9rem; color: #6b7368; margin-bottom: 1.25rem; }
.wb-nav a { color: var(--tp-green); text-decoration: none; font-weight: 600; }
.wb-nav a:hover { text-decoration: underline; }
.wb-hero { text-align: center; margin-bottom: 2rem; }
.wb-hero h1 { font-size: 2rem; font-weight: 650; margin: 0 0 0.5rem; color: #1f2a1c; }
.wb-hero p { color: #5d675a; margin: 0; }
.wb-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1.25rem;
}
.wb-card {
    display: block;
    background: #fff;
    border-radius: 16px;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}
.wb-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,0.12); }
.wb-thumb {
    aspect-ratio: 4 / 3;
    background: #dfe6e2;
    overflow: hidden;
}
.wb-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}
.wb-card-body { padding: 24px; }
.wb-card-body h2 { font-size: 1.15rem; margin: 0 0 0.4rem; color: #1f2a1c; }
.wb-date { font-size: 0.8rem; color: #817e7e; margin: 0 0 0.4rem; }
.wb-summary { color: #555; font-size: 0.95rem; margin: 0; }
.wb-empty { text-align: center; color: #6b7368; }
.wb-article { max-width: 760px; }
.wb-hero-img { border-radius: 16px; overflow: hidden; margin-bottom: 1.25rem; background: #e8ebe9; }
.wb-hero-img img { width: 100%; display: block; }
.wb-body { line-height: 1.65; color: #2c3329; }
.wb-body p { margin: 0 0 1rem; }
.wb-back { margin-top: 2rem; }
.wb-back a { color: var(--tp-green); font-weight: 600; }

/* ===========================================================================
   Portal assistant (floating button + panel)
   =========================================================================== */

.pai-root {
	--pai-green: var(--tp-green);
	--pai-green-dark: var(--tp-green-dark);
	--pai-ink: var(--tp-ink);
	--pai-muted: var(--tp-muted);
	--pai-line: var(--tp-line);
	--pai-wash: var(--tp-bg);
	--pai-keyboard: 0px;
	--pai-footer-lift: 0px;
	position: fixed;
	right: 24px;
	bottom: calc(24px + env(safe-area-inset-bottom, 0px));
	transition: bottom 0.18s ease;
	z-index: 1040;
	font-family: inherit;
}
.pai-root .sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	border: 0;
}

.pai-fab {
	width: 56px;
	height: 56px;
	border: 0;
	border-radius: 50%;
	background: var(--pai-green);
	color: #fff;
	display: grid;
	place-items: center;
	cursor: pointer;
	box-shadow: 0 10px 24px rgba(47, 58, 44, 0.22);
	position: relative;
	transition: background 0.18s ease, transform 0.18s ease;
}
.pai-fab:hover { background: var(--pai-green-dark); transform: translateY(-2px); }
.pai-fab:active { transform: translateY(1px); }
.pai-fab:focus-visible { outline: 3px solid #c5dfc4; outline-offset: 3px; }
.pai-fab svg {
	width: 36px;
	height: 36px;
	display: block;
}
.pai-unread {
	display: none;
	position: absolute;
	top: 8px;
	right: 8px;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: #f3c15b;
	box-shadow: 0 0 0 2px #fff;
}
.pai-fab.pai-has-unread .pai-unread { display: block; }
.pai-pulse .pai-fab { animation: pai-pulse 0.9s ease 2; }
@keyframes pai-pulse {
	0%, 100% { transform: scale(1); }
	50% { transform: scale(1.06); }
}
@media (prefers-reduced-motion: reduce) {
	.pai-root, .pai-fab, .pai-panel { transition: none !important; animation: none !important; }
}

.pai-panel {
	position: absolute;
	right: 0;
	bottom: 72px;
	width: 380px;
	height: min(640px, calc(100dvh - 96px - var(--pai-footer-lift, 0px)));
	max-height: min(640px, calc(100dvh - 96px - var(--pai-footer-lift, 0px)));
	display: flex;
	flex-direction: column;
	min-height: 0;
	background: #fff;
	border: 1px solid var(--pai-line);
	border-radius: 16px;
	box-shadow: 0 8px 24px rgba(47, 58, 44, 0.12);
	overflow: hidden;
	opacity: 0;
	transform: translateY(8px);
	pointer-events: none;
	transition: opacity 0.18s ease, transform 0.18s ease;
}
.pai-open .pai-panel {
	opacity: 1;
	transform: translateY(0);
	pointer-events: auto;
}
.pai-panel[hidden] { display: none !important; }
.pai-open .pai-panel[hidden] { display: flex !important; }

.pai-head {
	background: var(--pai-green);
	color: #fff;
	padding: 14px 14px 14px 16px;
	display: flex;
	align-items: flex-start;
	gap: 10px;
	flex: 0 0 auto;
}
.pai-kicker {
	margin: 0;
	font-size: 0.7rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	opacity: 0.88;
	font-weight: 600;
}
.pai-head h2 {
	margin: 2px 0 4px;
	font-size: 1.05rem;
	font-weight: 650;
	color: #fff;
}
.pai-sub { margin: 0; font-size: 0.78rem; color: rgba(255,255,255,0.88); }
.pai-close {
	margin-left: auto;
	border: 0;
	background: transparent;
	color: #fff;
	font-size: 22px;
	line-height: 1;
	width: 44px;
	height: 44px;
	border-radius: 8px;
	cursor: pointer;
}
.pai-close:hover { background: rgba(255,255,255,0.12); }

.pai-thread {
	flex: 1 1 auto;
	min-height: 0;
	overflow-x: hidden;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior: contain;
	padding: 14px 14px 12px;
	background: #fff;
	scrollbar-gutter: stable;
}
.pai-row { display: flex; margin-bottom: 10px; }
.pai-row:last-child { margin-bottom: 0; }
.pai-row-user { justify-content: flex-end; }
.pai-bubble {
	max-width: 85%;
	border-radius: 12px;
	padding: 10px 12px;
	font-size: 14px;
	line-height: 1.5;
	color: var(--pai-ink);
	background: var(--pai-wash);
	overflow-wrap: anywhere;
	word-break: break-word;
	white-space: normal;
}
.pai-row-user .pai-bubble {
	background: var(--pai-green);
	color: #fff;
}
.pai-bubble a { color: inherit; font-weight: 600; text-decoration: underline; }
.pai-success {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
}
.pai-success-link {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: 0 10px;
	border-radius: 8px;
	background: var(--pai-green);
	color: #fff !important;
	text-decoration: none !important;
	font-size: 0.85rem;
}

.pai-dots { display: inline-flex; gap: 4px; height: 12px; align-items: center; }
.pai-dots i {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: #8a938a;
	animation: pai-dot 1s ease infinite;
}
.pai-dots i:nth-child(2) { animation-delay: 0.15s; }
.pai-dots i:nth-child(3) { animation-delay: 0.3s; }
@keyframes pai-dot {
	0%, 80%, 100% { opacity: 0.35; transform: translateY(0); }
	40% { opacity: 1; transform: translateY(-2px); }
}

.pai-chips {
	display: flex;
	flex-wrap: nowrap;
	gap: 8px;
	padding: 0 14px 10px;
	overflow-x: auto;
	overflow-y: hidden;
	flex: 0 0 auto;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: thin;
}
.pai-chip {
	border: 1px solid var(--pai-line);
	background: var(--pai-wash);
	color: var(--pai-ink);
	border-radius: 999px;
	padding: 7px 12px;
	min-height: 36px;
	font-size: 0.82rem;
	cursor: pointer;
	flex: 0 0 auto;
	white-space: nowrap;
}
.pai-chip:hover { border-color: var(--pai-green); color: var(--pai-green); }

.pai-composer {
	display: flex;
	gap: 8px;
	padding: 10px 12px calc(12px + var(--pai-keyboard));
	border-top: 1px solid var(--pai-line);
	background: #fff;
	flex: 0 0 auto;
}
.pai-composer textarea {
	flex: 1;
	resize: none;
	min-height: 44px;
	max-height: 96px;
	border: 1px solid #d5d9d2;
	border-radius: 8px;
	padding: 10px 12px;
	font: inherit;
	color: var(--pai-ink);
}
.pai-send {
	min-width: 72px;
	min-height: 44px;
	border: 0;
	border-radius: 8px;
	background: var(--pai-green);
	color: #fff;
	font-weight: 600;
	cursor: pointer;
}
.pai-send:hover { background: var(--pai-green-dark); }
.pai-send:disabled { opacity: 0.55; cursor: wait; }

.tn-root {
	position: relative;
	z-index: 1040;
}
.tn-root:not(.tn-in-nav) {
	position: fixed;
	top: 14px;
	right: 16px;
}
.tn-bell {
	position: relative;
	width: 34px;
	height: 34px;
	border: 0;
	border-radius: 9px;
	background: #ffffff17;
	color: #eef6f0;
	display: grid;
	place-items: center;
	cursor: pointer;
}
.tn-bell:hover { background: #ffffff26; }
.tn-bell.tn-has-unread { background: #ffffff17; }
.tn-badge {
	position: absolute;
	top: 6px;
	right: 6px;
	min-width: 8px;
	width: 8px;
	height: 8px;
	padding: 0;
	border-radius: 50%;
	background: #e8b445;
	border: 1.5px solid var(--tp-green);
	color: transparent;
	font-size: 0;
	line-height: 0;
	overflow: hidden;
}
.tn-panel {
	position: absolute;
	top: 48px;
	right: 0;
	width: min(360px, calc(100vw - 24px));
	max-height: min(70vh, 440px);
	overflow: auto;
	background: #fff;
	color: #1f272e;
	border: 1px solid #d5ddd4;
	border-radius: 12px;
	box-shadow: 0 12px 32px rgba(20, 40, 20, 0.16);
}
.tn-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 12px 14px 8px;
	border-bottom: 1px solid #e6ebe4;
}
.tn-mark {
	border: 0;
	background: none;
	color: var(--tp-green);
	font-size: 12px;
	cursor: pointer;
}
.tn-empty { margin: 0; padding: 12px 14px 16px; color: #4a5348; font-size: 13px; }
.tn-list { list-style: none; margin: 0; padding: 0; }
.tn-list a {
	display: block;
	padding: 10px 14px;
	color: #1f272e !important;
	text-decoration: none;
	border-bottom: 1px solid #f0f3ee;
}
.tn-list a b { display: block; font-size: 13px; }
.tn-list a span { display: block; margin-top: 2px; font-size: 12px; color: #5a6358; }
.tn-unread a { background: #f4f8f4; }
.tn-read a { opacity: 0.75; }

body.lf-reading .web-form-container {
	height: auto !important;
	overflow: visible !important;
}
body.lf-reading .web-form,
body.lf-reading .web-form-footer,
body.lf-reading .page-breadcrumbs,
body.lf-reading .web-form-actions,
body.lf-reading .web-form-head .btn,
body.lf-reading .comment-box {
	display: none !important;
}
body.lf-reading .web-form-header,
body.lf-reading .web-form-head,
body.lf-reading form.web-form,
body.lf-reading .comments,
body.lf-reading .attachments {
	display: none !important;
}
body.lf-reading .web-form-container {
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
}
.lf-box {
	margin: 0 auto 28px;
	padding: 0;
	max-width: 760px;
	border: 0;
	background: transparent;
}
.lf-official {
	padding: 28px 32px 24px;
	border: 1px solid #d7e4db;
	border-radius: 6px;
	background: #fff;
	box-shadow: 0 10px 28px rgba(16, 40, 28, 0.06);
}
.lf-head {
	display: flex;
	align-items: center;
	gap: 16px;
}
.lf-logo {
	width: 72px;
	height: 72px;
	flex: 0 0 auto;
}
.lf-mark {
	width: 72px;
	height: 72px;
	flex: 0 0 auto;
	border-radius: 16px;
	background: #fff7e6;
	border: 1px solid #f0d3a0;
	color: #8a5a12;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 28px;
	font-weight: 800;
}
.lf-org {
	margin: 0;
	font-size: 16px;
	font-weight: 800;
	letter-spacing: 0.01em;
	color: #14241c;
}
.lf-park {
	margin: 2px 0 0;
	font-size: 14px;
	font-weight: 650;
	color: #1f7a4a;
}
.lf-rule {
	height: 3px;
	margin: 16px 0 14px;
	background: linear-gradient(90deg, #1f7a4a 0%, #8fd0aa 70%, #e7f6ee 100%);
}
.lf-ref {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 16px;
	margin: 0 0 16px;
	font-size: 13px;
	color: #5d7466;
}
.lf-status-pill {
	padding: 2px 8px;
	border-radius: 999px;
	background: #fff3e2;
	color: #8a5a12;
	font-weight: 700;
}
.lf-to,
.lf-from {
	margin: 0 0 8px;
	font-size: 15px;
	color: #24332c;
}
.lf-from-tenant .lf-rule {
	background: linear-gradient(90deg, #c47b17 0%, #f0d3a0 70%, #fff7e6 100%);
}
.lf-from-tenant .lf-park {
	color: #8a5a12;
}
.lf-kicker {
	margin: 0 0 8px;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #6d7b74;
}
.lf-letter h1 {
	margin: 0;
	font-size: 32px;
	line-height: 1.15;
	font-weight: 800;
	color: #14241c;
}
.lf-meta {
	margin: 8px 0 0;
	font-size: 13px;
	color: #6d7b74;
}
.lf-subject {
	margin: 18px 0 0;
	font-size: 18px;
	font-weight: 700;
	color: #1f3d2e;
}
.lf-body {
	margin-top: 14px;
	font-size: 16px;
	line-height: 1.55;
	color: #24332c;
}
.lf-body p { margin: 0 0 10px; }
.lf-optional {
	margin-left: 6px;
	font-size: 12px;
	font-weight: 600;
	color: #6d7b74;
}
.lf-box .lf-status { margin: 0 0 8px; }
.lf-box .lf-active-list {
	margin: 8px 0 0;
	padding-left: 18px;
}
.lf-box .lf-active-list li { margin: 4px 0; }
.lf-box .btn { margin-right: 8px; }
.lf-ask {
	margin: 10px 0 12px;
	padding: 10px 12px;
	border-radius: 8px;
	background: #fff7e6;
	border: 1px solid #e8d3a2;
}
.lf-thread { margin: 12px 0; display: grid; gap: 8px; }
.lf-msg {
	padding: 10px 12px;
	border-radius: 8px;
	background: #fff;
	border: 1px solid #d5dfd6;
}
.lf-msg-park { border-left: 3px solid #2f6f4e; }
.lf-msg-tenant { border-left: 3px solid #c47b17; }
.lf-msg-who { font-size: 12px; color: #5a6358; margin-bottom: 4px; }
.lf-help {
	margin: 18px 0 0;
	font-size: 14px;
	line-height: 1.45;
	color: #3d4f46;
}
.lf-reply {
	margin-top: 22px;
	padding-top: 18px;
	border-top: 1px solid #e6eee8;
	display: grid;
	gap: 12px;
}
.lf-reply textarea {
	width: 100%;
	max-width: 100%;
	box-sizing: border-box;
	min-height: 112px;
	padding: 14px 16px;
	border: 1px solid #d7e3db;
	border-radius: 12px;
	background: #fff;
	font-size: 15px;
	line-height: 1.45;
	color: #14241c;
}
.lf-attach,
.lf-file {
	display: flex;
	align-items: center;
	gap: 12px;
	min-height: 64px;
	padding: 12px 14px;
	border: 1px dashed #9dceb0;
	border-radius: 14px;
	background: #f4faf6;
	color: #14241c;
	text-decoration: none;
	cursor: pointer;
}
.lf-attach-icon {
	width: 40px;
	height: 40px;
	border-radius: 10px;
	background: #fff;
	border: 1px solid #d5e6db;
	color: #1f7a4a;
	display: grid;
	place-items: center;
	flex: 0 0 auto;
}
.lf-attach-icon svg {
	width: 20px;
	height: 20px;
}
.lf-attach b,
.lf-file b {
	display: block;
	font-size: 15px;
	font-weight: 700;
}
.lf-attach-name {
	display: block;
	margin-top: 2px;
	font-size: 13px;
	font-weight: 500;
	color: #5d7466;
}
.lf-attach-input {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
}
.lf-files {
	display: grid;
	gap: 10px;
	margin-top: 16px;
}
.lf-reply .btn {
	justify-self: start;
	margin: 4px 0 0;
	padding: 10px 18px;
	border-radius: 10px;
}
@media (max-width: 576px) {
	.web-form-container .web-form-header,
	.lf-box {
		padding-left: 16px;
		padding-right: 16px;
	}
}

@media (max-width: 768px) {
	.pai-root {
		right: 16px;
		bottom: calc(16px + env(safe-area-inset-bottom, 0px));
		left: 12px;
	}
	.pai-fab { margin-left: auto; display: grid; }
	.pai-panel {
		left: 0;
		right: 0;
		width: auto;
		bottom: 72px;
		height: min(85dvh, calc(100dvh - 96px - var(--pai-footer-lift, 0px)));
		max-height: min(85dvh, calc(100dvh - 96px - var(--pai-footer-lift, 0px)));
		border-radius: 16px 16px 12px 12px;
	}
}

/* Header avatar initials — keep photos, restyle letter avatars */
.navbar .nav-avatar {
	padding: 0 !important;
}
.navbar .nav-avatar .avatar,
.navbar .user-image-wrapper .avatar {
	width: 34px;
	height: 34px;
	margin: 0;
}
.navbar .nav-avatar .avatar-frame,
.navbar .user-image-wrapper .avatar-frame,
.navbar .portal-avatar-initials {
	width: 34px !important;
	height: 34px !important;
	border-radius: 50% !important;
	background: #eaf3ec !important;
	color: var(--tp-green) !important;
	font-size: 12.5px !important;
	font-weight: 700 !important;
	display: grid !important;
	place-items: center;
	line-height: 1;
}
.navbar .btn-login-area {
	border: 1px solid #ffffff26;
	border-radius: 8px;
	background: #ffffff17;
	padding: 9px 14px !important;
	font-size: 13px;
	font-weight: 600;
}

/* Primary actions + links */
.web-page .btn-primary,
.page-content .btn-primary,
.page-content-wrapper .btn-primary {
	background: var(--tp-green);
	border-color: var(--tp-green);
	border-radius: 9px;
	font-weight: 600;
	box-shadow: none;
}
.web-page .btn-primary:hover,
.page-content .btn-primary:hover,
.page-content-wrapper .btn-primary:hover {
	background: var(--tp-green-dark);
	border-color: var(--tp-green-dark);
}
.web-page .btn-default,
.web-page .btn-light,
.page-content .btn-default {
	border: 1px solid #dde5df;
	background: #fff;
	color: #33403a;
	border-radius: 8px;
	font-weight: 600;
}
.web-page a:not(.btn):not(.navbar-brand):not(.nav-link):not(.portal-nav-link):not(.mc-invoice-link):not(.dropdown-item) {
	color: var(--tp-green);
}
.web-page a:not(.btn):not(.navbar-brand):not(.nav-link):not(.portal-nav-link):not(.mc-invoice-link):not(.dropdown-item):hover {
	color: var(--tp-green-dark);
}

/* My Account */
.my-account-header {
	margin: 0 0 18px;
	font-size: 30px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--tp-ink);
}
.my-account-container {
	max-width: none;
	margin: 0;
}
.account-info {
	background: #fff;
	border: 1px solid var(--tp-line);
	border-radius: 14px;
	box-shadow: 0 1px 2px #16281e0a;
	overflow: hidden;
	padding: 0 24px;
}
.account-info .col {
	padding: 18px 0;
	border-bottom: 1px solid #edf1ee;
}
.account-info .col:last-child { border-bottom: 0; }
.my-account-name,
.my-account-item {
	font-size: 14.5px;
	font-weight: 700;
	color: var(--tp-ink);
}
.my-account-item-desc {
	color: var(--tp-soft);
	font-size: 12.5px;
}
.my-account-item-link a {
	color: var(--tp-green) !important;
	font-weight: 600;
	font-size: 13.5px;
}
.my-account-item-link .edit-profile-icon,
.my-account-item-link .right-icon {
	stroke: var(--tp-green);
}
.my-account-avatar .avatar {
	width: 48px !important;
	height: 48px !important;
}
.my-account-avatar .avatar-frame {
	background: #eaf3ec !important;
	color: var(--tp-green) !important;
	font-weight: 700;
}

/* Default portal / website cards */
.page-content .card,
.website-list,
.page-card:not(.login-content) {
	background: #fff;
	border: 1px solid var(--tp-line);
	border-radius: 14px;
	box-shadow: 0 1px 2px #16281e0a;
}
.website-list {
	overflow: hidden;
	padding: 0;
}
.website-list-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	padding: 16px 20px;
	margin: 0 0 14px;
	border: 1px solid var(--tp-line);
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 1px 2px #16281e0a;
}
.website-list-filters .mc-search { flex: 1 1 220px; min-width: 0; }
.website-list-filters .mc-filter { flex: 0 1 180px; min-width: 140px; }
.website-list-filters .form-control {
	border: 1px solid #dde5df;
	border-radius: 8px;
	background: #fbfcfb;
	padding: 10px 13px;
	height: auto;
	font-size: 13px;
}
.website-list .result {
	padding: 0;
	text-align: left;
}
.website-list .no-result,
.website-list .empty-apps-state {
	padding: 64px 24px 68px;
	text-align: center;
	color: var(--tp-soft);
}
.website-list .web-list-item,
.website-list .transaction-list-item {
	position: relative;
	padding: 14px 20px;
	border-bottom: 1px solid #f0f3f1;
	margin: 0;
}
.website-list .web-list-item:last-child,
.website-list .transaction-list-item:last-child {
	border-bottom: none;
}
.website-list .transaction-item-link {
	position: absolute;
	inset: 0;
	opacity: 0;
}
.website-list .list-item-name { color: var(--tp-ink); font-size: 14px; }
.website-list .transaction-time,
.website-list .items-preview { font-size: 12px; }
.website-list .item-total { font-size: 14px; color: var(--tp-ink); }
.page-content h1:not(.mc-title) {
	font-size: 30px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--tp-ink);
}

/* Tenant portal home — 7 cards from the design */
.tp-home-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
}
.tp-home-card {
	background: #fff;
	border: 1px solid var(--tp-line);
	border-radius: 14px;
	padding: 20px 18px;
	display: flex;
	flex-direction: column;
	gap: 12px;
	box-shadow: 0 1px 2px #16281e0a;
	text-decoration: none !important;
	color: inherit;
	min-height: 148px;
	transition: box-shadow 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}
.tp-home-card:hover {
	box-shadow: 0 6px 16px #16281e14;
	border-color: #cfe0d5;
	transform: translateY(-1px);
	color: inherit;
	text-decoration: none !important;
}
.tp-home-icon {
	width: 44px;
	height: 44px;
	border-radius: 11px;
	background: var(--tp-wash);
	position: relative;
	flex-shrink: 0;
}
.tp-home-icon::after {
	content: "";
	position: absolute;
	inset: 11px;
	background: var(--tp-green);
	-webkit-mask: var(--nav-icon, var(--icon-grid)) center / contain no-repeat;
	mask: var(--nav-icon, var(--icon-grid)) center / contain no-repeat;
}
.tp-home-copy {
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.tp-home-label {
	font-size: 14.5px;
	font-weight: 700;
	color: var(--tp-ink);
}
.tp-home-desc {
	font-size: 12.5px;
	color: var(--tp-muted);
	line-height: 1.45;
}
.rj-page .mc-empty .btn-primary {
	background: #16241c;
	border-color: #16241c;
	border-radius: 9px;
	padding: 10px 20px;
	font-size: 13.5px;
}
.web-list-page .no-result,
.mc-empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 12px;
}
.web-list-page .no-result::before,
.mc-empty::before {
	content: "";
	width: 46px;
	height: 46px;
	border-radius: 12px;
	background: #eef2ef;
}
@media (min-width: 992px) {
	body:has(.portal-header-actions) .navbar-collapse {
		display: none !important;
	}
	body:has(.portal-header-actions) .navbar-toggler {
		display: none !important;
	}
}

@media (max-width: 991px) {
	html, body.web-page {
		overflow-x: clip;
		max-width: 100%;
	}
	.navbar {
		position: sticky;
		top: 0;
		z-index: 1110;
		overflow: visible;
	}
	.navbar > .container {
		padding-left: 12px;
		padding-right: 12px;
		gap: 8px;
		max-width: 100%;
		min-width: 0;
		overflow: visible;
	}
	.navbar-toggler {
		display: inline-flex !important;
		align-items: center;
		justify-content: center;
		order: 0;
		width: 40px;
		height: 40px;
		padding: 0;
		margin-left: 0;
		margin-right: 0;
		border-radius: 9px;
		border: 1px solid #ffffff26 !important;
		background: #ffffff17;
		flex-shrink: 0;
	}
	.navbar > .container > .navbar-brand {
		order: 1;
		flex: 1 1 auto;
		min-width: 0;
		margin-right: 0;
		overflow: hidden;
	}
	.navbar-brand .portal-brand,
	.navbar-brand .portal-brand-copy {
		min-width: 0;
		max-width: 100%;
	}
	.navbar-brand .portal-brand-name,
	.navbar-brand .portal-brand-sub {
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
	.navbar > .container > .navbar-collapse { display: none !important; }
	.navbar > .container > .portal-header-actions {
		order: 4;
		gap: 8px;
		margin-left: auto;
		min-width: 0;
		align-items: center;
		flex-shrink: 0;
		overflow: visible;
		position: relative;
		z-index: 1070;
	}
	.navbar #website-post-login,
	.portal-header-actions .dropdown {
		position: relative;
		overflow: visible;
		z-index: 1070;
	}
	.navbar .dropdown-menu,
	.portal-header-actions .dropdown-menu {
		z-index: 1080;
		right: 0;
		left: auto;
		min-width: 12.5rem;
		max-width: min(18rem, calc(100vw - 16px));
	}
	.navbar .cmms-lang-switch {
		margin: 0;
		flex-shrink: 0;
		align-items: center;
	}
	.portal-drawer-backdrop {
		display: block;
		position: fixed;
		inset: 0;
		background: #16241c66;
		z-index: 1090;
		opacity: 0;
		pointer-events: none;
		transition: opacity 0.2s ease;
	}
	body.portal-drawer-open .portal-drawer-backdrop {
		opacity: 1;
		pointer-events: auto;
	}
	.sidebar-column {
		display: block !important;
		position: fixed !important;
		top: 0;
		left: 0;
		bottom: 0;
		width: min(300px, 86vw) !important;
		max-width: min(300px, 86vw) !important;
		flex: none !important;
		z-index: 1100;
		margin: 0;
		padding: 12px;
		transform: translate3d(-110%, 0, 0);
		transition: transform 0.24s ease, visibility 0.24s ease;
		overflow: auto;
		background: transparent;
		visibility: hidden;
		pointer-events: none;
	}
	body.portal-drawer-open .sidebar-column {
		transform: translate3d(0, 0, 0);
		visibility: visible;
		pointer-events: auto;
	}
	body.portal-drawer-open {
		overflow: hidden;
	}
	.web-sidebar.portal-nav,
	.web-sidebar {
		min-height: calc(100dvh - 24px);
		padding: 16px 12px;
	}
	.portal-nav-brand { display: flex; }
	.mc-hero {
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
		margin-bottom: 12px;
	}
	.mc-hero > div,
	.mc-hero > div:first-child {
		min-width: 0;
		max-width: 100%;
		flex: 0 1 auto;
	}
	.web-list-actions,
	.mc-invoice-link,
	.tp-new-btn,
	.web-list-page .btn-new-doc {
		width: 100%;
		max-width: 100%;
		align-self: stretch;
		box-sizing: border-box;
		white-space: nowrap;
	}
	.mc-title { font-size: 22px; }
	.mc-sub { font-size: 13px; }
	.mc-kicker { font-size: 10px; }
	.mc-stat-value { font-size: 18px; }
	.mc-stats { grid-template-columns: 1fr 1fr; }
	.mc-search, .mc-filter { flex: 1 1 100%; min-width: 0; width: 100%; }
	.rj-page .mc-filter { min-width: 0; flex: 1 1 100%; }
	.portal-header-actions .portal-submit-request,
	.portal-header-actions .navbar-cta {
		padding: 8px 12px !important;
		font-size: 12.5px;
	}
	body.web-page > .container:has(.sidebar-column),
	.page-content-wrapper > .container:has(.sidebar-column) {
		padding: 16px 20px 28px;
		max-width: 100%;
	}
	.rj-card,
	.mc-table-wrap,
	.web-list-page .web-list-table,
	.website-list,
	.mc-stat,
	.web-form-container {
		box-sizing: border-box;
	}
	.website-list-filters,
	.website-list .web-list-item,
	.website-list .transaction-list-item {
		padding-left: 16px;
		padding-right: 16px;
	}
	.mc-table-wrap,
	.web-list-page .web-list-table {
		padding: 6px 8px 8px;
	}
	body.web-page > .container > .row:has(.sidebar-column),
	.container > .row:has(> .sidebar-column) {
		display: block;
		gap: 0;
		margin: 0;
		max-width: 100%;
		padding: 0;
	}
	.main-column {
		display: block;
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		flex: none !important;
	}
	.main-column main.container,
	.main-column .page-content-wrapper > main.container,
	.page-content-wrapper > main.container {
		padding: 16px 8px 24px;
	}
	.page-content-wrapper > .container,
	.page-container,
	.page_content,
	.mc-page,
	.rj-page {
		padding-left: 0;
		padding-right: 0;
		max-width: 100%;
		min-width: 0;
		overflow-x: clip;
	}
	.web-form-container .web-form-title h1,
	.page-content h1:not(.mc-title) {
		font-size: 22px;
	}
	.rj-card-title,
	.rj-card-meta,
	.mc-meter {
		overflow-wrap: anywhere;
		word-break: break-word;
	}
}

@media (max-width: 1100px) {
	.tp-home-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
	.tp-home-grid { grid-template-columns: 1fr; }
	.tp-home-label { font-size: 14px; }
	.tp-home-desc { font-size: 12px; }
	.portal-brand-sub { display: none; }
	.portal-header-actions .portal-submit-request,
	.portal-header-actions .navbar-cta {
		padding: 8px 10px !important;
		font-size: 12px;
	}
}

/* Logged-in phone bar: keep the logo, and drop the extra Submit button so the row stays on one line. */
@media (max-width: 576px) {
	.navbar > .container > .navbar-brand {
		flex: 0 0 auto;
		overflow: visible;
		min-width: 34px;
	}
	.navbar:has(.portal-avatar-initials) .portal-header-actions .portal-submit-request {
		display: none !important;
	}

	/* Phone forms use the screen width, with a 12px gap at each edge. */
	body > .container:has([data-doctype="Web Form"]) {
		padding-left: 12px;
		padding-right: 12px;
	}
	[data-doctype="Web Form"] main.container,
	[data-doctype="Web Form"] .page-content-wrapper > main.container {
		padding-left: 0;
		padding-right: 0;
	}
	[data-doctype="Web Form"] .page-content-wrapper .container .page_content,
	[data-doctype="Web Form"] .page_content {
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		padding-left: 0 !important;
		padding-right: 0 !important;
	}
	[data-doctype="Web Form"] .web-form-container {
		width: 100%;
	}
}

.tp-track {
	margin: 0 0 16px;
	padding: 16px 18px;
	border: 1px solid #d7e0d8;
	border-radius: 14px;
	background: #f7faf7;
}
.tp-track h2 {
	margin: 2px 0 6px;
	font-size: 1.35rem;
	line-height: 1.25;
}
.tp-track-detail {
	margin: 0;
	color: #3d4a42;
}
.tp-steps {
	display: flex;
	gap: 8px;
	list-style: none;
	padding: 14px 0 0;
	margin: 0;
}
.tp-steps li {
	flex: 1;
	text-align: center;
	font-size: 12px;
	color: #6b756e;
	padding-top: 8px;
	border-top: 3px solid #d5ddd6;
}
.tp-steps li.done {
	border-top-color: #1d5c3b;
	color: #1d5c3b;
	font-weight: 650;
}
.tp-steps li.now {
	border-top-color: #c47b00;
	color: #7a5400;
	font-weight: 700;
}

.tp-request-list {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 4px 0 28px;
}
.tp-request-row {
	display: grid;
	grid-template-columns: auto 1fr;
	grid-template-areas:
		"badge title"
		"badge detail";
	column-gap: 12px;
	row-gap: 2px;
	align-items: center;
	padding: 14px 16px;
	border: 1px solid #d7e0d8;
	border-radius: 14px;
	background: #fff;
	color: inherit;
	text-decoration: none;
}
.tp-request-row:hover {
	border-color: #1d5c3b;
	background: #f7faf7;
}
.tp-request-row .mc-badge {
	grid-area: badge;
}
.tp-request-title {
	grid-area: title;
	font-weight: 700;
}
.tp-request-detail {
	grid-area: detail;
	color: #3d4a42;
	font-size: 13px;
}
.tp-request-empty {
	margin: 12px 0 24px;
	color: #4b5a51;
}

.lf-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0 0 14px;
}
.lf-tab {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	border: 1px solid #d7e0d8;
	background: #fff;
	color: #3d4a42;
	border-radius: 999px;
	padding: 7px 12px;
	font-size: 13px;
	font-weight: 650;
	line-height: 1.2;
	cursor: pointer;
}
.lf-tab.is-on {
	background: #1d5c3b;
	border-color: #1d5c3b;
	color: #fff;
}
.lf-tab-n {
	min-width: 1.4em;
	padding: 1px 6px;
	border-radius: 999px;
	background: #eef3ef;
	color: #3d4a42;
	font-size: 11px;
	font-weight: 700;
	text-align: center;
}
.lf-tab.is-on .lf-tab-n {
	background: rgba(255, 255, 255, 0.18);
	color: #fff;
}
.lf-letter-filters {
	margin-bottom: 12px;
}
body.lf-list .lf-box {
	display: none;
}
.tp-request-row.lf-card {
	grid-template-columns: auto 1fr auto;
	grid-template-areas:
		"badge title date"
		"badge meta flag"
		"badge detail detail";
	align-items: start;
	border-left-width: 4px;
}
.tp-request-row.lf-card-you {
	border-left-color: #c47b17;
}
.tp-request-row.lf-card-park {
	border-left-color: #1d5c3b;
}
.tp-request-meta {
	grid-area: meta;
	color: #6d7b74;
	font-size: 12px;
}
.tp-request-date {
	grid-area: date;
	color: #5d6b64;
	font-size: 12px;
	font-weight: 700;
	white-space: nowrap;
	text-align: right;
}
.lf-flag {
	grid-area: flag;
	justify-self: end;
	padding: 2px 8px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 800;
	line-height: 1.3;
	white-space: nowrap;
}
.lf-flag-new {
	background: #e7f6ee;
	color: #1d5c3b;
}
.lf-flag-need {
	background: #fff3e2;
	color: #8a5a12;
}
@media (max-width: 640px) {
	.tp-request-row.lf-card {
		grid-template-columns: auto 1fr;
		grid-template-areas:
			"badge title"
			"badge date"
			"badge meta"
			"badge flag"
			"badge detail";
	}
	.tp-request-date,
	.lf-flag {
		justify-self: start;
		text-align: left;
	}
}

.bill-list { display: flex; flex-direction: column; gap: 10px; }
.bill-row {
	display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
	padding: 14px 16px; border: 1px solid #d7e3dc; border-radius: 12px;
	background: #fff; color: inherit; text-decoration: none;
}
.bill-row-overdue { border-color: #e3b4b4; }
.bill-row-main, .bill-row-meta { display: flex; flex-direction: column; gap: 2px; }
.bill-row-meta { text-align: right; font-size: 13px; color: #3d4f46; }
.bill-status { font-weight: 700; }
.bill-sheet, .bill-pay {
	margin-top: 16px; padding: 16px; border: 1px solid #d7e3dc; border-radius: 12px; background: #fff;
}
.bill-figures, .bill-meters { width: 100%; border-collapse: collapse; margin-top: 12px; }
.bill-figures th, .bill-meters th { text-align: left; font-weight: 600; }
.bill-figures td, .bill-meters td, .bill-figures th, .bill-meters th {
	padding: 6px 8px; border-bottom: 1px solid #e6eee9;
}
.bill-figures td { text-align: right; }
.bill-form { display: flex; flex-direction: column; gap: 10px; max-width: 420px; }
.bill-banner { padding: 10px 12px; border-radius: 8px; background: #eef6f1; }
.bill-banner-ok { background: #e5f6ea; }
.bill-banner-warn { background: #fff4e5; }
.bill-error { color: #8d2b2b; }
.bill-print-title { display: none; font-weight: 700; }
.bill-hero-actions { display: flex; gap: 8px; align-items: center; }
@media print {
	.bill-no-print, .navbar, .web-footer, footer, .page-breadcrumbs { display: none !important; }
	.bill-print-title { display: block; }
	.bill-sheet { border: none; }
}
/* ===========================================================================
   Tenant request page: one status card, a read-only report, then messages
   =========================================================================== */

body.tp-request-locked form.web-form,
body.tp-request-locked .web-form-container .indicator-pill {
	display: none !important;
}
.web-form-container .tp-track.tp-track-card {
	margin: 0 32px 18px;
	padding: 20px 22px 22px;
	background: #fff;
	border: 1px solid #d7e0d8;
	border-radius: 16px;
	box-shadow: 0 1px 2px #16281e0d, 0 10px 24px #1f5c3c0f;
}
.tp-sum-top {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 8px 12px;
}
.tp-chip {
	display: inline-flex;
	align-items: center;
	padding: 7px 16px;
	border-radius: 999px;
	font-size: 17px;
	font-weight: 750;
	line-height: 1.2;
	background: #eef1ee;
	color: #3d4a42;
}
.tp-chip-ok { background: #e3f1e8; color: #1d5c3b; }
.tp-chip-warn { background: #fff1cc; color: #7a5400; }
.tp-chip-crit { background: #fde8e8; color: #8a1f1f; }
.tp-sum-ref {
	font-family: "JetBrains Mono", monospace;
	font-size: 12px;
	letter-spacing: 0.06em;
	color: #6d786f;
}
.tp-sum-line {
	margin: 12px 0 0;
	font-size: 15px;
	line-height: 1.5;
	color: #24332c;
}
.tp-track-card .tp-steps {
	gap: 10px;
	padding: 20px 0 0;
}
.tp-track-card .tp-steps li {
	font-size: 13px;
	padding-top: 10px;
	border-top-width: 5px;
	border-radius: 3px;
}
.tp-sum-actions {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px 18px;
	margin-top: 18px;
}
.tp-rate-btn {
	padding: 9px 20px;
	font-weight: 700;
	border-radius: 10px;
}
.tp-withdraw-link {
	background: none;
	border: 0;
	padding: 4px 2px;
	color: #6d786f;
	font-size: 13px;
	text-decoration: underline;
	cursor: pointer;
}
.tp-withdraw-link:hover { color: #8a1f1f; }
.tp-withdraw-box {
	margin-top: 14px;
	padding: 14px;
	border: 1px solid #ecd9a8;
	border-radius: 12px;
	background: #fffaf0;
}
.tp-withdraw-ask { margin: 0 0 8px; font-size: 14px; font-weight: 650; color: #24332c; }
.tp-withdraw-row { display: flex; align-items: center; gap: 16px; margin-top: 10px; }
.tp-withdraw-go { border-color: #c9a24a; color: #7a5400; font-weight: 650; }

.web-form-container .tp-report {
	margin: 0 32px 18px;
	padding: 18px 22px 20px;
	border: 1px solid #e3eae5;
	border-radius: 16px;
	background: #fff;
	box-sizing: border-box;
}
.tp-report-title {
	margin: 0 0 12px;
	font-size: 16px;
	font-weight: 700;
	color: var(--tp-ink);
}
.tp-facts {
	display: grid;
	grid-template-columns: minmax(110px, 160px) 1fr;
	gap: 10px 18px;
	margin: 0;
}
.tp-facts dt {
	margin: 0;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #6d786f;
	padding-top: 2px;
}
.tp-facts dd {
	margin: 0;
	font-size: 14.5px;
	line-height: 1.5;
	color: #16241c;
	white-space: pre-line;
	overflow-wrap: anywhere;
}
.tp-report-photo {
	display: block;
	max-width: 100%;
	max-height: 260px;
	margin-top: 14px;
	border-radius: 12px;
	border: 1px solid #e3eae5;
}
.web-form-container .comments {
	margin: 0 32px 24px;
	padding: 18px 22px 22px;
	border: 1px solid #e3eae5;
	border-radius: 16px;
	background: #fff;
}
.web-form-container .comments .no-comment p { margin: 0 0 14px; }
.web-form-container .comments .add-comment-hr { display: none; }

@media (max-width: 768px) {
	.web-form-container .tp-track.tp-track-card,
	.web-form-container .tp-report,
	.web-form-container .comments { margin-left: 14px; margin-right: 14px; padding-left: 16px; padding-right: 16px; }
	.tp-facts { grid-template-columns: 1fr; gap: 2px; }
	.tp-facts dd { margin-bottom: 10px; }
	.tp-chip { font-size: 15px; }
}

/* ===========================================================================
   My Consumption: one card per meter, a few recent readings, the rest on request
   =========================================================================== */

.mc-text-link {
	flex: 0 0 auto;
	align-self: flex-end;
	font-size: 14px;
	font-weight: 650;
	color: var(--tp-green) !important;
	text-decoration: none !important;
	padding: 6px 2px;
}
.mc-text-link:hover { text-decoration: underline !important; }
.mc-alert {
	margin: 0 0 16px;
	padding: 12px 16px;
	border-radius: 12px;
	background: #fff6dc;
	border: 1px solid #ecd9a8;
	color: #6b4a00;
	font-size: 14px;
}
.mc-cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 16px;
	margin: 0 0 26px;
}
.mc-card {
	padding: 18px 20px 16px;
	background: #fff;
	border: 1px solid #e3eae5;
	border-radius: 16px;
	box-shadow: 0 1px 2px #16281e0d;
	min-width: 0;
}
.mc-card-name { margin: 0; font-size: 15px; font-weight: 700; color: var(--tp-ink); overflow-wrap: anywhere; }
.mc-card-kind { margin: 2px 0 0; font-size: 12px; color: #6d786f; }
.mc-card-big {
	margin: 14px 0 2px;
	font-size: 34px;
	font-weight: 750;
	letter-spacing: -0.02em;
	color: var(--tp-ink);
	line-height: 1.1;
}
.mc-card-unit { font-size: 15px; font-weight: 600; color: #6d786f; margin-left: 4px; letter-spacing: 0; }
.mc-card-note { margin: 0; font-size: 13px; color: #4b5a51; display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: center; }
.mc-delta { font-weight: 700; padding: 2px 8px; border-radius: 999px; background: #eef1ee; color: #4b5a51; font-size: 12px; }
.mc-delta-up { background: #fff1cc; color: #7a5400; }
.mc-delta-down { background: #e3f1e8; color: #1d5c3b; }
.mc-bars {
	display: flex;
	align-items: flex-end;
	gap: 4px;
	height: 56px;
	margin-top: 16px;
}
.mc-bar {
	flex: 1;
	min-width: 4px;
	background: #b9d6c4;
	border-radius: 3px 3px 0 0;
}
.mc-bar:last-child { background: var(--tp-green); }
.mc-bars-note { margin: 6px 0 0; font-size: 11px; color: #8a938a; }
.mc-card-flag { margin: 10px 0 0; font-size: 12.5px; font-weight: 650; color: #7a5400; }

.mc-readings-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 0 10px;
}
.mc-section-title { margin: 0; font-size: 18px; font-weight: 700; color: var(--tp-ink); }
.mc-expand { min-width: 0; padding: 8px 18px; font-size: 13.5px; }
.mc-readings .mc-toolbar { margin: 0 0 10px; }
.mc-readings .mc-toolbar[hidden] { display: none; }
.mc-table-lite th, .mc-table-lite td { white-space: nowrap; }
.mc-table-lite td.mc-c-meter { white-space: normal; }

@media (max-width: 768px) {
	.mc-cards { grid-template-columns: 1fr; gap: 12px; margin-bottom: 20px; }
	.mc-card-big { font-size: 28px; }
	.mc-text-link { align-self: flex-start; }
	.mc-table.mc-table-lite tr {
		display: grid;
		grid-template-columns: 1fr auto;
		grid-template-areas: "meter usage" "date reading";
		gap: 2px 12px;
		padding: 10px 6px;
	}
	.mc-table.mc-table-lite tr[hidden] { display: none; }
	.mc-table.mc-table-lite td { display: block; width: auto; padding: 0 4px; text-align: left !important; }
	.mc-table.mc-table-lite td::before { content: none; }
	.mc-table-lite .mc-c-meter { grid-area: meter; }
	.mc-table-lite .mc-c-usage { grid-area: usage; font-size: 15px; text-align: right !important; }
	.mc-table-lite .mc-c-date { grid-area: date; font-size: 12px; color: #6d786f; }
	.mc-table-lite .mc-c-reading { grid-area: reading; font-size: 12px; color: #6d786f; text-align: right !important; }
	.mc-table-lite .mc-c-reading::before { content: "Reading "; content: none; }
	.mc-table-lite .mc-c-check { grid-column: 1 / -1; }
	.mc-table-lite .mc-c-check:empty { display: none; }
}


/* ===========================================================================
   Portal type scale. One family, one set of sizes, on every tenant page.
   =========================================================================== */

.page-content, .page_content, .web-form, .web-form input, .web-form select, .web-form textarea,
.web-form .btn, .mc-page, .mc-page input, .mc-page select, .mc-page .btn, .lf-box, .lf-box textarea {
	font-family: "Instrument Sans", "Noto Sans Ethiopic", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.mc-title,
.web-form-container .web-form-title h1,
.lf-letter h1 {
	font-size: 28px;
	line-height: 1.2;
	font-weight: 700;
	letter-spacing: -0.015em;
	color: var(--tp-ink);
}
.mc-section-title, .tp-report-title, .bill-pay-title, .bill-sub,
.web-form-container .comments h3 {
	font-size: 17px;
	font-weight: 700;
	letter-spacing: -0.005em;
	color: var(--tp-ink);
}
.mc-page, .web-form-container, .lf-box { font-size: 15px; line-height: 1.5; }
.mc-card-big, .mc-day-total, .bill-total-value, .bill-row-total, .bill-figures td, .bill-meters td,
.mc-part-use, .mc-part-dial { font-variant-numeric: tabular-nums; }
@media (max-width: 768px) {
	.mc-title, .web-form-container .web-form-title h1, .lf-letter h1 { font-size: 24px; }
}

/* ===========================================================================
   Info box with an icon: use for anything we ask a person to do or not do.
   =========================================================================== */

.tp-notice {
	--n-bg: #eef5fb; --n-line: #c9dcee; --n-ink: #1f4a73; --n-chip: #dcebf8;
	--n-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231f6aa8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9.5'/><path d='M12 11v5.5'/><path d='M12 7.6h.01'/></svg>");
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin: 0 0 16px;
	padding: 13px 16px 13px 14px;
	border: 1px solid var(--n-line);
	border-radius: 14px;
	background: var(--n-bg);
	color: var(--n-ink);
	font-size: 14px;
	line-height: 1.5;
	box-sizing: border-box;
	max-width: 100%;
}
.tp-notice[hidden] { display: none; }
.tp-notice::before {
	content: "";
	flex: 0 0 32px;
	width: 32px;
	height: 32px;
	border-radius: 10px;
	background: var(--n-chip) var(--n-icon) center / 19px 19px no-repeat;
}
.tp-notice > div { min-width: 0; }
.tp-notice strong { display: block; font-size: 14.5px; font-weight: 700; color: var(--n-ink); }
.tp-notice span { display: block; margin-top: 1px; color: #2f3e36; overflow-wrap: anywhere; }
.tp-notice-warn {
	--n-bg: #fff7e3; --n-line: #ecd9a8; --n-ink: #7a5400; --n-chip: #fde9b3;
	--n-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237a5400' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3.6 21.5 20h-19z'/><path d='M12 10v4.4'/><path d='M12 17.2h.01'/></svg>");
}
.tp-notice-ok {
	--n-bg: #eaf6ee; --n-line: #bfdfca; --n-ink: #1d5c3b; --n-chip: #d3ecdc;
	--n-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231d5c3b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9.5'/><path d='m8 12.3 2.7 2.7L16 9.5'/></svg>");
}
.tp-notice-crit {
	--n-bg: #fdeeee; --n-line: #efc2c2; --n-ink: #8a1f1f; --n-chip: #f9d5d5;
	--n-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a1f1f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='12' r='9.5'/><path d='m9 9 6 6M15 9l-6 6'/></svg>");
}
.web-form-container .web-form-header .tp-notice { margin-top: 14px; }
.web-form-container .tp-notice.tp-comment-lead { margin: 0 0 16px; color: var(--n-ink); font-size: 14px; }
.web-form-container .web-form-header { padding-bottom: 6px; }
.tp-withdraw-box { background: transparent; border: 0; padding: 0; margin-top: 14px; }
.tp-withdraw-box .tp-notice { margin-bottom: 12px; }
.tp-sum-actions + .tp-withdraw-box { margin-top: 16px; }

/* ===========================================================================
   Attach card, shared with the letter reply and the maintenance request form
   =========================================================================== */

.web-form .attach-input-wrapper .btn,
.web-form .control-input .btn-attach,
.web-form [data-fieldtype^="Attach"] .attached-file-link + .btn { /* fallback hooks */ }
.web-form [data-fieldtype^="Attach"] .control-input > .btn,
.web-form [data-fieldtype^="Attach"] .control-input .attach-input-wrapper > .btn {
	position: relative;
	display: flex;
	align-items: center;
	width: 100%;
	min-height: 64px;
	padding: 12px 14px 12px 66px;
	border: 1px dashed #9dceb0;
	border-radius: 14px;
	background: #f4faf6;
	color: #14241c;
	font-size: 15px;
	font-weight: 700;
	text-align: left;
	box-shadow: none;
}
.web-form [data-fieldtype^="Attach"] .control-input > .btn::before,
.web-form [data-fieldtype^="Attach"] .control-input .attach-input-wrapper > .btn::before {
	content: "";
	position: absolute;
	left: 14px;
	top: 50%;
	width: 40px;
	height: 40px;
	margin-top: -20px;
	border-radius: 10px;
	border: 1px solid #d5e6db;
	background: #fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231f7a4a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'><path d='m21.4 11.1-8.5 8.5a5 5 0 0 1-7.1-7.1l8.5-8.5a3.5 3.5 0 0 1 5 5L10.8 17a2 2 0 0 1-2.8-2.8l7.8-7.8'/></svg>") center / 20px 20px no-repeat;
}
.web-form [data-fieldtype^="Attach"] .control-input > .btn:hover { background: #ecf6ef; border-color: #6fb78c; }

/* ===========================================================================
   Bills: list, letter-headed sheet, payment form
   =========================================================================== */

.bill-ico {
	flex: 0 0 auto;
	width: 44px;
	height: 44px;
	border-radius: 13px;
	background: #e6f1ea url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231f5c3c' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'><path d='M6 3h9l4 4v14H6z'/><path d='M14 3v5h5M9 13h7M9 17h5'/></svg>") center / 22px 22px no-repeat;
}
.bill-ico-water { background-color: #e3f0fa; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231f6aa8' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3s6 6.2 6 10.5a6 6 0 0 1-12 0C6 9.2 12 3 12 3z'/></svg>"); }
.bill-ico-waste { background-color: #ece8f6; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23584a8f' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'><path d='M12 3s6 6.2 6 10.5a6 6 0 0 1-12 0C6 9.2 12 3 12 3z'/><path d='M9.5 14.5c.4 1.3 1.4 2 2.5 2'/></svg>"); }
.bill-ico-power { background-color: #fff2d6; background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237a5400' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'><path d='M13 2 4.5 13.5H11L10 22l9-12h-6.5z'/></svg>"); }
.bill-ico-sm { width: 24px; height: 24px; border-radius: 8px; background-size: 14px 14px; display: inline-block; vertical-align: -6px; margin-right: 8px; }

.bill-list { display: flex; flex-direction: column; gap: 12px; }
.bill-row {
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 16px 18px;
	border: 1px solid #e3eae5;
	border-radius: 16px;
	background: #fff;
	color: inherit;
	text-decoration: none;
	box-shadow: 0 1px 2px #16281e0d;
	transition: border-color .15s, box-shadow .15s;
}
.bill-row:hover { border-color: #b9d6c4; box-shadow: 0 6px 18px #1f5c3c14; }
.bill-row-overdue { border-color: #efc2c2; background: linear-gradient(90deg, #fff8f8, #fff 40%); }
.bill-row-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.bill-row-main strong { font-size: 16px; font-weight: 700; color: var(--tp-ink); }
.bill-row-ref { font-family: "JetBrains Mono", monospace; font-size: 11.5px; letter-spacing: .04em; color: #6d786f; overflow-wrap: anywhere; }
.bill-row-date { font-size: 12.5px; color: #6d786f; }
.bill-row-meta { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; text-align: right; }
.bill-row-total { font-size: 18px; font-weight: 750; color: var(--tp-ink); }
.bill-chip {
	display: inline-flex;
	align-items: center;
	padding: 3px 11px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 700;
	line-height: 1.4;
	background: #eef1ee;
	color: #3d4a42;
}
.bill-chip-ok { background: #e3f1e8; color: #1d5c3b; }
.bill-chip-warn { background: #fff1cc; color: #7a5400; }
.bill-chip-crit { background: #fde8e8; color: #8a1f1f; }

.bill-topbar { display: flex; align-items: center; justify-content: space-between; margin: 4px 0 14px; }
.bill-back { padding: 4px 0; }
.bill-sheet.lf-official {
	margin-top: 0;
	padding: 28px 32px 22px;
	border-radius: 10px;
	max-width: 760px;
}
.bill-letterhead { align-items: center; }
.bill-lh-main { flex: 1 1 auto; min-width: 0; }
.bill-lh-contact {
	display: flex;
	flex-direction: column;
	gap: 1px;
	text-align: right;
	font-size: 12px;
	color: #3d4a42;
}
.bill-sheet .lf-kicker { margin: 2px 0 0; }
.bill-sheet .lf-org { font-size: 15px; font-weight: 750; }
.bill-sheet .lf-park { font-size: 13.5px; }
.bill-to { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px; margin: 4px 0 18px; }
.bill-to .lf-kicker { margin: 0 0 3px; }
.bill-to-name { margin: 0; font-size: 16px; font-weight: 650; color: var(--tp-ink); overflow-wrap: anywhere; }
.bill-total-box {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 4px 16px;
	margin: 0 0 18px;
	padding: 16px 20px;
	border-radius: 14px;
	background: #f4f6f4;
	border: 1px solid #e3eae5;
}
.bill-total-label { flex: 1 1 100%; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #6d786f; }
.bill-total-value { font-size: 34px; font-weight: 750; letter-spacing: -.02em; line-height: 1.1; color: var(--tp-ink); }
.bill-total-due { font-size: 14px; font-weight: 600; color: #4b5a51; }
.bill-total-crit { background: #fdf0f0; border-color: #efc2c2; }
.bill-total-crit .bill-total-value, .bill-total-crit .bill-total-due { color: #8a1f1f; }
.bill-total-ok { background: #eaf6ee; border-color: #bfdfca; }
.bill-total-ok .bill-total-value { color: #1d5c3b; }
.bill-where {
	margin: 0 0 18px;
	padding: 14px 16px 8px;
	border: 1px solid #c5ddf5;
	border-radius: 12px;
	background: #eef6ff;
}
.bill-where-title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 6px;
	font-size: 15px;
	font-weight: 700;
	color: #16324a;
}
.bill-where-title::before {
	content: "";
	width: 18px;
	height: 18px;
	border-radius: 50%;
	flex: 0 0 18px;
	background: #2f6fdb url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M8 7.2V11M8 5.2h.01' stroke='white' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") center / 14px 14px no-repeat;
}
.bill-where-ref { margin: 0 0 10px; font-size: 14px; color: #16324a; }
.bill-where-list { display: grid; gap: 8px; }
.bill-where-card {
	padding: 10px 12px;
	border-radius: 10px;
	background: #fff;
	border: 1px solid #d5e4f5;
}
.bill-where-name { display: block; font-size: 14px; color: #16324a; }
.bill-where-when { margin: 2px 0 8px; font-size: 13px; color: #3d5270; }
.bill-where-dl { display: grid; gap: 4px; margin: 8px 0 0; }
.bill-where-dl div { display: grid; grid-template-columns: 140px 1fr; gap: 8px; }
.bill-where-dl dt { margin: 0; font-size: 12px; font-weight: 650; color: #5c6b7a; }
.bill-where-dl dd { margin: 0; font-size: 14px; font-weight: 650; color: #16324a; }
.bill-where-num { font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }
.bill-total-warn { background: #fff7e3; border-color: #ecd9a8; }
.bill-figures, .bill-meters { width: 100%; border-collapse: collapse; margin: 0; }
.bill-figures th, .bill-figures td { padding: 9px 2px; border-bottom: 1px solid #edf1ee; font-size: 14.5px; }
.bill-figures th { text-align: left; font-weight: 500; color: #4b5a51; }
.bill-figures td { text-align: right; font-weight: 600; }
.bill-fig-total th, .bill-fig-total td { font-weight: 750; color: var(--tp-ink); border-bottom: 2px solid #d7e0d8; }
.bill-breakdown { margin: 14px 0 0; font-size: 13.5px; color: #4b5a51; white-space: pre-line; }
.bill-sub { margin: 24px 0 8px; }
.bill-meters th { text-align: left; font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; color: #6d786f; font-weight: 600; padding: 8px 6px; border-bottom: 1px solid #d7e0d8; }
.bill-meters td { padding: 10px 6px; border-bottom: 1px solid #edf1ee; font-size: 14px; }
.bill-meter-name { display: block; font-weight: 650; overflow-wrap: anywhere; }
.bill-meter-date { display: block; font-size: 12px; color: #6d786f; }
.bill-foot {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin-top: 26px;
	padding-top: 12px;
	border-top: 2px solid #1f7a4a;
	font-size: 11.5px;
	color: #4b5a51;
}
.bill-foot-note { color: #6d786f; font-size: 11px; }

.bill-pay {
	max-width: 760px;
	margin-top: 18px;
	padding: 22px 28px 26px;
	border: 1px solid #e3eae5;
	border-radius: 16px;
	background: #fff;
}
.bill-pay-title { margin: 0 0 4px; }
.bill-pay-lead { margin: 0 0 18px; font-size: 14px; color: #4b5a51; }
.bill-form { display: flex; flex-direction: column; gap: 16px; max-width: none; }
.bill-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 16px; }
.bill-form label:not(.lf-attach) { display: flex; flex-direction: column; gap: 6px; font-size: 13px; font-weight: 650; color: #24332c; margin: 0; }
.bill-span { grid-column: 1 / -1; }
.bill-form .form-control { height: 44px; border-radius: 10px; font-size: 15px; }
.bill-attach { margin: 0; position: relative; }
.bill-send { align-self: flex-start; padding: 11px 26px; border-radius: 10px; font-weight: 700; }

@media (max-width: 768px) {
	.bill-row { flex-wrap: wrap; padding: 14px; gap: 12px; }
	.bill-row-meta { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 4px 10px; width: 100%; text-align: left; justify-content: space-between; }
	.bill-sheet.lf-official { padding: 20px 16px 18px; }
	.bill-letterhead { flex-wrap: wrap; }
	.lf-logo { width: 56px; height: 56px; }
	.bill-lh-contact { text-align: left; width: 100%; flex-direction: row; flex-wrap: wrap; gap: 2px 12px; }
	.bill-to, .bill-form-grid { grid-template-columns: 1fr; }
	.bill-total-value { font-size: 28px; }
	.bill-meters thead { display: none; }
	.bill-meters, .bill-meters tbody, .bill-meters tr, .bill-meters td { display: block; width: 100%; }
	.bill-meters tr { padding: 8px 0; border-bottom: 1px solid #edf1ee; }
	.bill-meters td { display: flex; justify-content: space-between; gap: 12px; border: 0; padding: 3px 2px; text-align: right; }
	.bill-meters td::before { content: attr(data-label); font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: #8a938a; text-align: left; }
	.bill-meters td:first-child { display: block; text-align: left; }
	.bill-meters td:first-child::before { content: none; }
	.bill-pay { padding: 18px 16px 22px; }
}
@media print {
	body { background: #fff !important; }
	.bill-sheet.lf-official { border: 0; box-shadow: none; padding: 0; max-width: none; }
	/* Public sign-in: same park page, not the staff desk. */
body[data-path="login"] {
  background: #0c3b2a url("/assets/Bole-Lemi-1-e1694778633615-DRCit9Pk.jpg") center / cover no-repeat !important;
}
body[data-path="login"]::before {
  content: "";
  position: fixed;
  inset: 0;
  background: linear-gradient(90deg, rgba(12, 59, 42, .78), rgba(12, 59, 42, .45));
  pointer-events: none;
}
body[data-path="login"] .page-content,
body[data-path="login"] .page-content-wrapper { background: transparent !important; position: relative; z-index: 1; }
body[data-path="login"] .navbar,
body[data-path="login"] .web-footer,
body[data-path="login"] footer { display: none !important; }
body[data-path="login"] .page-card,
body[data-path="login"] .login-content {
  border: 0 !important;
  border-radius: 18px !important;
  box-shadow: 0 16px 40px rgba(12, 40, 24, .2) !important;
}
body[data-path="login"] .app-logo { display: none !important; }
body[data-path="login"] .page-card-head::before {
  content: "";
  display: block;
  height: 72px;
  margin: 0 auto 8px;
  background: url("/assets/portal2026/ipdc-logo.png") center / contain no-repeat;
}
body[data-path="login"] .page-card-head h4 {
  font-size: 0 !important;
}
body[data-path="login"] .page-card-head h4::after {
  content: "Sign in";
  font-size: 28px;
  color: #17201a;
}
body[data-path="login"] .btn-login,
body[data-path="login"] .btn-primary {
  background: #1f9d55 !important;
  border-color: #1f9d55 !important;
  border-radius: 10px !important;
  min-height: 44px;
  font-weight: 700;
}
body[data-path="login"] .form-control {
  border-radius: 10px !important;
  min-height: 44px;
}
.bill-where { background: #fff !important; border-color: #999; }
	.bill-where-card { border-color: #999; }
	.bill-total-box { background: #fff !important; border: 1px solid #999; }
	.bill-total-box .bill-total-value { color: #000 !important; }
	.bill-chip { border: 1px solid #999; background: #fff !important; color: #000 !important; }
	.bill-foot { position: static; }
}

/* ===========================================================================
   My Consumption: short meter tags, readings grouped by date
   =========================================================================== */

.mc-t0 { --t: #1f7a4a; --t-bg: #dcefe3; }
.mc-t1 { --t: #2a6fb0; --t-bg: #dcebf8; }
.mc-t2 { --t: #c47b00; --t-bg: #fdeab8; }
.mc-t3 { --t: #7a52b3; --t-bg: #ebe2f7; }
.mc-t4 { --t: #c0467a; --t-bg: #f8dfeb; }
.mc-t5 { --t: #178a8a; --t-bg: #d8f0f0; }
.mc-tag {
	display: inline-grid;
	place-items: center;
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	border-radius: 11px;
	background: var(--t-bg, #eef1ee);
	color: var(--t, #3d4a42);
	font-weight: 750;
	font-size: 15px;
	letter-spacing: 0;
}
.mc-tag-sm { width: 24px; height: 24px; border-radius: 8px; font-size: 12px; }
.mc-card-head { display: flex; align-items: center; gap: 12px; }
.mc-card-name { font-size: 14px; line-height: 1.3; }
.mc-bar.mc-t0, .mc-bar.mc-t1, .mc-bar.mc-t2, .mc-bar.mc-t3, .mc-bar.mc-t4, .mc-bar.mc-t5 {
	background: var(--t-bg);
}
.mc-bar.mc-t0:last-child, .mc-bar.mc-t1:last-child, .mc-bar.mc-t2:last-child,
.mc-bar.mc-t3:last-child, .mc-bar.mc-t4:last-child, .mc-bar.mc-t5:last-child { background: var(--t); }
.mc-readings-head { align-items: flex-end; }
.mc-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 0; font-size: 12.5px; color: #4b5a51; }
.mc-legend-item { display: inline-flex; align-items: center; gap: 7px; overflow-wrap: anywhere; }
.mc-days { display: grid; gap: 12px; }
.mc-day {
	padding: 16px 20px 14px;
	background: #fff;
	border: 1px solid #e3eae5;
	border-radius: 16px;
	box-shadow: 0 1px 2px #16281e0d;
}
.mc-day[hidden] { display: none; }
.mc-day-flag { border-color: #ecd9a8; }
.mc-day-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; }
.mc-day-date { margin: 0; font-size: 16px; font-weight: 700; color: var(--tp-ink); }
.mc-day-month { margin: 0; font-size: 12px; color: #6d786f; }
.mc-day-total { margin: 0; font-size: 24px; font-weight: 750; letter-spacing: -.01em; color: var(--tp-ink); line-height: 1.1; }
.mc-day-total span { font-size: 13px; font-weight: 600; color: #6d786f; margin-left: 4px; letter-spacing: 0; }
.mc-split { display: flex; gap: 3px; height: 8px; margin: 12px 0 10px; border-radius: 99px; overflow: hidden; }
.mc-seg { background: var(--t); min-width: 4px; }
.mc-parts { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.mc-parts li { display: flex; align-items: center; gap: 10px; font-size: 14px; flex-wrap: wrap; }
.mc-part-use { font-weight: 700; color: var(--tp-ink); }
.mc-part-use small { font-weight: 500; color: #6d786f; }
.mc-part-dial { margin-left: auto; font-size: 12.5px; color: #6d786f; }
.mc-part-dial::before { content: "dial "; color: #9aa59d; }
.mc-more-wrap { margin-top: 14px; }

@media (max-width: 768px) {
	.mc-day { padding: 14px 14px 12px; }
	.mc-day-total { font-size: 21px; }
	.mc-legend { margin-top: 6px; }
}

.tp-report .lf-rule.lf-from-tenant { background: linear-gradient(90deg, #c47b17 0%, #f0d3a0 70%, #fff7e6 100%); margin: 14px 0 12px; }
.tp-report .lf-park { color: #8a5a12; }
.tp-report .lf-org { font-size: 16px; font-weight: 750; }
.tp-report .lf-ref { margin-bottom: 14px; }
.tp-report .lf-mark { width: 56px; height: 56px; font-size: 22px; border-radius: 14px; }

.bill-page .bill-topbar,
.bill-page .tp-notice,
.bill-page .bill-list { max-width: 760px; }
.bill-page .bill-list { max-width: none; }
.bill-print-btn { border-radius: 10px; font-weight: 650; padding: 6px 16px; background: #fff; border: 1px solid #d7e0d8; color: var(--tp-ink); }
.mc-readings-head { flex-direction: column; align-items: flex-start; gap: 8px; }
.mc-readings-head .mc-legend { margin: 0; }
.web-form-body > .tp-notice { margin: 16px 0 4px; }

/* ===========================================================================
   My Consumption v2: usage stage, mechanical odometer dials, calendar ledger
   =========================================================================== */

.mc-stage {
	display: grid;
	grid-template-columns: minmax(250px, 1.05fr) minmax(260px, 1.15fr);
	gap: 24px;
	margin: 0 0 22px;
	padding: 22px 24px;
	border-radius: 18px;
	background: linear-gradient(135deg, #163b27 0%, #1f5c3c 55%, #246a46 100%);
	color: #f4faf6;
	box-shadow: 0 10px 28px rgba(20, 48, 33, 0.16);
}
.mc-stage-eyebrow {
	margin: 0 0 6px;
	font-family: "JetBrains Mono", monospace;
	font-size: 11px;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: #a9d9bd;
}
.mc-stage-big-row { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px 14px; }
.mc-stage-big {
	margin: 0;
	font-size: 42px;
	font-weight: 800;
	letter-spacing: -.025em;
	line-height: 1.05;
	color: #fff;
	font-variant-numeric: tabular-nums;
}
.mc-stage-big span { font-size: 17px; font-weight: 600; color: #bfe3ce; margin-left: 6px; letter-spacing: 0; }
.mc-stage-pill {
	display: inline-flex;
	align-items: center;
	padding: 4px 11px;
	border-radius: 999px;
	font-size: 12.5px;
	font-weight: 700;
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
}
.mc-stage-up { background: rgba(255, 232, 179, 0.22); color: #ffe7a8; }
.mc-stage-down { background: rgba(189, 242, 211, 0.22); color: #d5f9e3; }
.mc-stage-sub { margin: 8px 0 14px; font-size: 13.5px; color: #d5ebe0; }
.mc-stage-split {
	display: flex;
	gap: 3px;
	height: 10px;
	padding: 2px;
	border-radius: 99px;
	background: rgba(255, 255, 255, 0.12);
	overflow: hidden;
}
.mc-stage-seg { border-radius: 99px; min-width: 6px; background: var(--t, #7ed3a5); }
.mc-stage-seg.mc-t0 { background: #6ee0a0; }
.mc-stage-seg.mc-t1 { background: #74b9ff; }
.mc-stage-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 16px;
	list-style: none;
	margin: 12px 0 0;
	padding: 0;
	font-size: 13px;
	color: #e3f3ea;
}
.mc-stage-chips li { display: inline-flex; align-items: center; gap: 7px; }
.mc-stage-chips strong { color: #fff; font-weight: 700; }
.mc-dot { width: 9px; height: 9px; border-radius: 99px; background: var(--t, #1f7a4a); display: inline-block; }
.mc-stage-chips .mc-dot.mc-t0 { background: #6ee0a0; }
.mc-stage-chips .mc-dot.mc-t1 { background: #74b9ff; }

.mc-stage-chart {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding: 14px 16px 12px;
	border-radius: 14px;
	background: rgba(10, 28, 18, 0.28);
	border: 1px solid rgba(255, 255, 255, 0.12);
}
.mc-chart-head {
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 12px;
	color: #c5e3d1;
	margin-bottom: 10px;
}
.mc-chart-avg-tag {
	padding: 2px 8px;
	border-radius: 99px;
	border: 1px dashed rgba(255, 255, 255, 0.35);
	font-size: 11px;
	color: #e8f6ee;
}
.mc-chart-plot {
	position: relative;
	display: flex;
	align-items: flex-end;
	gap: 10px;
	height: 112px;
	padding-top: 18px;
}
.mc-chart-avg {
	position: absolute;
	left: 0;
	right: 0;
	border-top: 1px dashed rgba(255, 255, 255, 0.38);
	pointer-events: none;
}
.mc-col-wrap {
	flex: 1;
	min-width: 0;
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
	z-index: 1;
}
.mc-col-val { font-size: 11px; font-weight: 600; color: #cfe8d9; font-variant-numeric: tabular-nums; }
.mc-col-latest .mc-col-val { color: #fff; font-weight: 800; }
.mc-col-track { flex: 1; width: 100%; max-width: 34px; display: flex; align-items: flex-end; }
.mc-col {
	width: 100%;
	display: flex;
	flex-direction: column-reverse;
	gap: 2px;
	border-radius: 6px 6px 3px 3px;
	overflow: hidden;
	opacity: .82;
}
.mc-col-latest .mc-col { opacity: 1; box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.45); }
.mc-col-seg { display: block; width: 100%; min-height: 3px; background: var(--t, #6ee0a0); }
.mc-col-seg.mc-t0 { background: #5bd792; }
.mc-col-seg.mc-t1 { background: #6cb4fc; }
.mc-col-lbl { font-size: 11px; color: #b9dcc7; white-space: nowrap; }
.mc-col-latest .mc-col-lbl { color: #fff; font-weight: 700; }

/* Meter cards with physical odometer dials */
.mc-card {
	position: relative;
	padding: 18px 20px 16px;
	border-top: 3px solid var(--t, #1f7a4a);
	transition: opacity .15s, transform .15s;
}
.mc-card-dim { opacity: .42; }
.mc-card-head { display: flex; align-items: center; gap: 12px; }
.mc-card-titles { flex: 1 1 auto; min-width: 0; }
.mc-card-name { margin: 0; font-size: 18px; font-weight: 750; color: var(--tp-ink); }
.mc-card-kind { margin: 2px 0 0; font-size: 12.5px; color: #6d786f; }
.mc-card-code {
	flex: 0 1 auto;
	max-width: 150px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	padding: 3px 8px;
	border-radius: 6px;
	background: #f2f5f3;
	font-family: "JetBrains Mono", monospace;
	font-size: 10.5px;
	color: #6d786f;
}
.mc-card-body {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 14px 16px;
	margin-top: 14px;
	padding: 12px 0;
	border-top: 1px solid #eef2ef;
	border-bottom: 1px solid #eef2ef;
}
.mc-card-eyebrow { margin: 0 0 2px; font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: #6d786f; }
.mc-card-stat .mc-card-big { margin: 0 0 6px; font-size: 32px; }
.mc-odo-box {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 4px;
}
.mc-odo-lbl { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: #6d786f; }
.mc-odo {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	padding: 4px 6px;
	border-radius: 8px;
	background: #19261f;
	box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.45);
}
.mc-digit {
	display: inline-grid;
	place-items: center;
	width: 20px;
	height: 26px;
	border-radius: 4px;
	background: linear-gradient(180deg, #101914 0%, #26382e 48%, #111a15 100%);
	border: 1px solid #354b3e;
	font-family: "JetBrains Mono", monospace;
	font-size: 14px;
	font-weight: 700;
	color: #f3faf5;
}
.mc-digit-tenths {
	background: linear-gradient(180deg, #7a2620 0%, #a53830 50%, #6d201a 100%);
	border-color: #b94a42;
	color: #fff;
}
.mc-odo-unit { font-size: 11px; font-weight: 600; color: #a7bdb0; padding: 0 4px; }
.mc-odo-from { font-family: "JetBrains Mono", monospace; font-size: 11px; color: #6d786f; }

.mc-mini { margin-top: 12px; }
.mc-mini .mc-bars { height: 64px; gap: 6px; margin-top: 0; align-items: stretch; }
.mc-bar-col { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 4px; }
.mc-bar-col .mc-bar { flex: 0 0 auto; width: 100%; border-radius: 4px 4px 2px 2px; }
.mc-bar-col:last-child .mc-bar { background: var(--t, var(--tp-green)); }
.mc-bar-col small { font-size: 10.5px; color: #6d786f; }
.mc-mini-foot {
	display: flex;
	justify-content: space-between;
	margin-top: 8px;
	font-size: 12px;
	color: #6d786f;
}
.mc-mini-foot strong { color: var(--tp-ink); }

/* Reading log header & interactive meter pills */
.mc-readings-head {
	flex-direction: row;
	align-items: flex-end;
	justify-content: space-between;
	gap: 12px;
	margin: 4px 0 12px;
}
.mc-section-sub { margin: 2px 0 0; font-size: 13px; color: #6d786f; }
.mc-pills { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.mc-pill {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 6px 13px;
	border-radius: 999px;
	border: 1px solid #d7e0d8;
	background: #fff;
	color: #3d4a42;
	font-size: 13px;
	font-weight: 650;
	cursor: pointer;
}
.mc-pill.is-on { background: var(--tp-ink); border-color: var(--tp-ink); color: #fff; }

/* Calendar-badge day cards */
.mc-day {
	display: grid;
	grid-template-columns: 62px 1fr;
	gap: 16px;
	align-items: start;
	padding: 16px 20px;
}
.mc-day-cal {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	height: 58px;
	border-radius: 14px;
	background: #f2f6f3;
	border: 1px solid #dce6df;
	line-height: 1.1;
}
.mc-cal-mon { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; color: var(--tp-green); }
.mc-cal-yr { font-family: "JetBrains Mono", monospace; font-size: 15px; font-weight: 700; color: var(--tp-ink); margin-top: 2px; }
.mc-day-main { min-width: 0; }
.mc-day-month { margin: 0; font-size: 16px; font-weight: 750; color: var(--tp-ink); }
.mc-day-date { margin: 1px 0 0; font-size: 12px; color: #6d786f; }
.mc-parts li[hidden] { display: none; }
.mc-part-name { font-weight: 650; color: var(--tp-ink); min-width: 82px; }
.mc-part-dial {
	margin-left: auto;
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-family: "JetBrains Mono", monospace;
	font-size: 12px;
}
.mc-part-dial::before { content: none; }
.mc-dial-chip {
	padding: 2px 7px;
	border-radius: 6px;
	background: #f2f5f3;
	border: 1px solid #e1e8e3;
	color: #4b5a51;
}
.mc-dial-now { background: #e8f2ec; border-color: #c7ddd0; color: #163b27; font-weight: 700; }
.mc-dial-arr { color: #8a938a; }

@media (max-width: 768px) {
	.mc-stage { grid-template-columns: 1fr; padding: 18px; gap: 18px; }
	.mc-stage-big { font-size: 34px; }
	.mc-odo-box { align-items: flex-start; }
	.mc-day { grid-template-columns: 1fr; gap: 10px; }
	.mc-day-cal { flex-direction: row; gap: 6px; height: auto; width: fit-content; padding: 4px 10px; border-radius: 99px; }
	.mc-cal-yr { margin-top: 0; font-size: 12px; }
}

/* ===========================================================================
   Utility Bill v2: refined document typography, metadata strip & meter card
   =========================================================================== */

.bill-page,
.bill-page .bill-sheet,
.bill-page .bill-pay,
.bill-page input,
.bill-page select,
.bill-page button {
	font-family: "Instrument Sans", "Noto Sans Ethiopic", "Helvetica Neue", Helvetica, Arial, sans-serif;
	-webkit-font-smoothing: antialiased;
}
.bill-print-btn {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 7px 14px;
	border-radius: 10px;
	border: 1px solid #d5e0d8;
	background: #fff;
	color: var(--tp-ink);
	font-size: 13.5px;
	font-weight: 650;
}
.bill-print-btn:hover { border-color: #9dc2ac; background: #f6faf7; }
.bill-print-ico {
	width: 15px;
	height: 15px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9V3h12v6'/><path d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/><path d='M6 14h12v7H6z'/></svg>") center / contain no-repeat;
	mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9V3h12v6'/><path d='M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'/><path d='M6 14h12v7H6z'/></svg>") center / contain no-repeat;
}

.bill-sheet.lf-official {
	padding: 28px 32px 24px;
	border: 1px solid #d8e3dc;
	border-radius: 16px;
	box-shadow: 0 1px 2px #16281e0a, 0 12px 30px rgba(18, 42, 29, 0.06);
}
.bill-sheet .lf-org { font-size: 16.5px; font-weight: 800; letter-spacing: -0.01em; color: #14241c; }
.bill-sheet .lf-park { font-size: 13.5px; font-weight: 650; color: #1f6b43; }
.bill-sheet .lf-kicker {
	margin-top: 3px;
	font-family: "JetBrains Mono", monospace;
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: 0.12em;
	color: #5c6e63;
}
.bill-lh-contact {
	font-family: "JetBrains Mono", monospace;
	font-size: 11.5px;
	line-height: 1.55;
	color: #4b5a51;
}

.bill-meta-strip {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 24px;
	margin: 0 0 18px;
	padding: 11px 14px;
	border-radius: 12px;
	background: #f6f9f7;
	border: 1px solid #e4ece6;
}
.bill-meta-cell { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.bill-meta-lbl {
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #6d786f;
}
.bill-meta-cell strong {
	font-size: 13.5px;
	font-weight: 700;
	color: #16241c;
	font-variant-numeric: tabular-nums;
}
.bill-meta-code {
	font-family: "JetBrains Mono", monospace;
	font-size: 12.5px !important;
	letter-spacing: 0.02em;
}
.bill-text-crit { color: #8a1f1f !important; }
.bill-meta-status { margin-left: auto; }

.bill-to {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
	margin: 0 0 18px;
}
.bill-party {
	padding: 13px 15px;
	border-radius: 12px;
	border: 1px solid #e6eee8;
	background: #fbfcfb;
}
.bill-kicker {
	margin: 0 0 4px;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #6d786f;
}
.bill-to-name {
	margin: 0;
	font-size: 16px;
	font-weight: 750;
	letter-spacing: -0.01em;
	color: #14241c;
}
.bill-to-sub {
	margin: 3px 0 0;
	font-size: 12.5px;
	color: #5c6e63;
}

.bill-total-box {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px 20px;
	margin: 0 0 22px;
	padding: 18px 22px;
	border-radius: 14px;
}
.bill-total-label {
	display: block;
	font-size: 11px;
	font-weight: 750;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}
.bill-total-value {
	margin-top: 2px;
	font-size: 36px;
	font-weight: 800;
	letter-spacing: -0.025em;
	line-height: 1.08;
	font-variant-numeric: tabular-nums;
}
.bill-total-math {
	display: inline-block;
	margin-top: 4px;
	font-family: "JetBrains Mono", monospace;
	font-size: 12px;
	color: #4b5a51;
}
.bill-total-crit .bill-total-math { color: #7a2929; }
.bill-total-right {
	text-align: right;
	padding: 8px 14px;
	border-radius: 10px;
	background: rgba(255, 255, 255, 0.65);
	border: 1px solid rgba(138, 31, 31, 0.16);
}
.bill-total-due-lbl {
	display: block;
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #6d786f;
}
.bill-total-due {
	font-size: 15px;
	font-weight: 750;
	font-variant-numeric: tabular-nums;
}

.bill-section { margin-top: 20px; }
.bill-sub {
	margin: 0 0 10px;
	font-size: 12px;
	font-weight: 750;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: #5c6e63;
}
.bill-meter-cards { display: grid; gap: 10px; }
.bill-meter-card {
	padding: 13px 16px;
	border-radius: 12px;
	border: 1px solid #e3ebe5;
	background: #f8fbf9;
}
.bill-meter-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 6px 12px;
	margin-bottom: 10px;
}
.bill-meter-short { font-size: 15px; font-weight: 750; color: #14241c; margin-right: 8px; }
.bill-meter-code {
	padding: 2px 7px;
	border-radius: 6px;
	background: #eaf0ec;
	font-family: "JetBrains Mono", monospace;
	font-size: 11px;
	color: #526358;
}
.bill-meter-date { font-size: 12px; color: #6d786f; }
.bill-meter-grid {
	display: grid;
	grid-template-columns: 1fr auto 1fr 1.1fr;
	align-items: center;
	gap: 10px 14px;
	padding-top: 10px;
	border-top: 1px dashed #d7e3db;
}
.bill-m-lbl {
	display: block;
	font-size: 11px;
	font-weight: 600;
	color: #6d786f;
}
.bill-m-val {
	font-family: "JetBrains Mono", monospace;
	font-size: 16px;
	font-weight: 700;
	color: #16241c;
	font-variant-numeric: tabular-nums;
}
.bill-m-val small { font-family: "Instrument Sans", sans-serif; font-size: 12px; font-weight: 600; color: #6d786f; }
.bill-m-arrow { font-size: 16px; color: #8a9990; }
.bill-m-use {
	text-align: right;
	padding: 6px 12px;
	border-radius: 10px;
	background: #e6f2eb;
}
.bill-m-val-hi { color: #164a30; font-size: 17px; }

.bill-figures th, .bill-figures td { padding: 10px 4px; font-size: 14.5px; }
.bill-figures td { font-family: "JetBrains Mono", monospace; font-size: 14px; font-weight: 650; }
.bill-fig-hint {
	margin-left: 6px;
	font-family: "JetBrains Mono", monospace;
	font-size: 12px;
	font-weight: 500;
	color: #6d786f;
}
.bill-fig-open th, .bill-fig-open td {
	font-weight: 750;
	color: #14241c;
}

.bill-pay-head {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	margin-bottom: 16px;
}
.bill-pay-step {
	flex: 0 0 30px;
	width: 30px;
	height: 30px;
	border-radius: 9px;
	background: #e3f1e8;
	color: #1d5c3b;
	display: grid;
	place-items: center;
	font-weight: 800;
	font-size: 14px;
}
.bill-pay-head .bill-pay-lead { margin: 2px 0 0; }

@media (max-width: 768px) {
	.bill-meta-status { margin-left: 0; width: 100%; }
	.bill-meter-grid { grid-template-columns: 1fr 1fr; }
	.bill-m-arrow { display: none; }
	.bill-m-use { grid-column: 1 / -1; text-align: left; display: flex; justify-content: space-between; align-items: baseline; }
	.bill-total-right { text-align: left; width: 100%; }
}

/* Keep one unified sans-serif font with tabular-nums on the bill page */
.bill-page .bill-lh-contact,
.bill-page .bill-total-math,
.bill-page .bill-m-val,
.bill-page .bill-figures td,
.bill-page .bill-fig-hint,
.bill-page .bill-meta-code {
	font-family: "Instrument Sans", "Noto Sans Ethiopic", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
	font-variant-numeric: tabular-nums;
}
