:root{--green:#258a64;--green-dark:#176348;--ink:#21352e;--muted:#73817c;--line:#e7eeeb;--soft:#f5f8f6;--sidebar:#102c23;--sidebar-muted:#9ab0a7;--shadow:0 14px 34px rgba(29,58,47,.08)}*{box-sizing:border-box}body{font-family:'Kanit',sans-serif;color:var(--ink);background:#f7faf8;font-weight:300}a{color:var(--green);text-decoration:none}.login-page{background:#fff}.login-layout{min-height:100vh;display:grid;grid-template-columns:45% 55%}.login-visual{background:linear-gradient(145deg,#143f32,#0c2921);padding:46px 9%;color:#fff;position:relative;overflow:hidden;display:flex;flex-direction:column}.login-visual:after{content:'';position:absolute;width:560px;height:560px;border:1px solid rgba(144,220,183,.18);border-radius:50%;right:-270px;bottom:-210px;box-shadow:0 0 0 60px rgba(144,220,183,.03),0 0 0 120px rgba(144,220,183,.02)}.login-brand,.mobile-login-brand{display:flex;align-items:center;gap:12px;font-size:22px}.login-brand span{font-weight:300;color:#afcec0;font-size:15px;margin-left:5px}.brand-mark{width:38px;height:38px;background:#72d1a7;color:#103b2d;border-radius:12px;display:grid;place-items:center;font-size:23px;font-weight:700}.visual-copy{margin:auto 0;max-width:480px;z-index:1}.eyebrow{font-size:11px;letter-spacing:1.8px;color:#79bd9f;font-weight:500}.visual-copy h1{font-size:clamp(40px,5vw,68px);line-height:1.15;font-weight:500;margin:20px 0}.visual-copy h1 span{color:#75d4aa}.visual-copy p:not(.eyebrow){font-size:17px;line-height:1.8;color:#b9d0c7;max-width:410px}.visual-stats{display:flex;gap:52px;z-index:1}.visual-stats div{display:flex;flex-direction:column}.visual-stats strong{font-size:26px;font-weight:500}.visual-stats span{font-size:12px;color:#99b8ac}.login-panel{display:grid;place-items:center;padding:30px}.login-card{width:min(420px,100%)}.login-card h2{font-size:32px;font-weight:500;margin:8px 0}.mobile-login-brand{display:none;margin-bottom:45px}.form-label{font-weight:400;font-size:14px}.form-control,.form-select{border-color:#dce7e2;border-radius:10px;padding:.7rem 1rem}.form-control:focus{border-color:#6bbb9c;box-shadow:0 0 0 .2rem rgba(37,138,100,.12)}.btn{border-radius:9px;font-weight:400}.btn-primary{background:var(--green);border-color:var(--green)}.btn-primary:hover{background:var(--green-dark);border-color:var(--green-dark)}.btn-primary span{margin-left:10px}.login-hint{background:#f2f8f4;color:#668077;padding:11px 14px;border-radius:8px;font-size:12px}.login-hint span{color:var(--green);margin-right:7px}.login-footer{position:absolute;bottom:25px;color:#99a8a2}.app-shell{display:flex;min-height:100vh}.sidebar{width:255px;background:var(--sidebar);color:#fff;flex:none;padding:27px 16px 18px;display:flex;flex-direction:column;transition:transform .25s}.brand-block{display:flex;align-items:center;gap:11px;padding:0 12px 28px}.brand-block strong{font-size:21px;font-weight:500;display:block;line-height:1}.brand-block span{font-size:11px;color:#8faea1}.sidebar-close{margin-left:auto;color:#fff}.workspace-switcher{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);border-radius:10px;padding:10px;margin-bottom:25px;display:flex;align-items:center;gap:9px;color:#d8e8e1}.workspace-icon{font-size:21px;color:#73d0a5}.workspace-switcher div{display:flex;flex-direction:column}.workspace-switcher small{font-size:10px;color:var(--sidebar-muted)}.workspace-switcher strong{font-size:12px;font-weight:400}.sidebar-nav{flex:1}.nav-label{font-size:10px;color:#68887c;letter-spacing:1.5px;padding:0 12px;margin:13px 0 8px}.nav-link{color:var(--sidebar-muted);padding:11px 12px;border-radius:8px;display:flex;align-items:center;gap:13px;font-size:14px;margin:3px 0}.nav-link span{width:17px;text-align:center;font-size:16px}.nav-link:hover,.nav-link.active{color:#fff;background:#1c5b45}.nav-link.active{box-shadow:inset 3px 0 #72d1a7}.nav-badge{margin-left:auto;background:#236b51;color:#a3e0c3;border-radius:20px;font-size:11px;padding:2px 8px;font-weight:400}.storage-card{background:#163c31;border-radius:10px;padding:15px;margin:16px 5px;font-size:12px;color:#cae0d7}.storage-card strong{color:#79d1a8}.progress{height:5px;background:#285746}.progress-bar{background:#72d1a7}.storage-card small{color:#8daea2;display:block;margin-top:7px;font-size:10px}.sidebar-footer{font-size:10px;color:#78968b;padding:3px 8px}.status-dot{width:7px;height:7px;display:inline-block;background:#5ad095;border-radius:50%;margin-right:7px}.app-main{min-width:0;flex:1}.topbar{height:91px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 4.5%}.btn-icon{background:transparent;border:0;font-size:19px;padding:5px;color:#5c7169}.page-title{font-size:24px;font-weight:500}.topbar-actions{display:flex;align-items:center;gap:17px}.notification-dot{width:6px;height:6px;background:#ed795f;border-radius:50%;position:absolute;margin-left:-6px;margin-top:-2px}.user-chip{display:flex;align-items:center;gap:9px}.user-chip strong{display:block;font-size:13px;font-weight:500}.user-chip small{display:block;color:var(--muted);font-size:10px}.avatar{background:#d8eee4;color:#267052;border-radius:50%;display:grid;place-items:center;font-weight:500}.avatar-sm{width:34px;height:34px;font-size:11px}.content-wrap{padding:29px 4.5% 50px;max-width:1530px;margin:auto}.content-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:26px}.breadcrumb-line{display:flex;gap:9px;align-items:center;font-size:12px;color:#96a39e;margin-bottom:7px}.breadcrumb-line b{font-weight:300;color:#c0cbc6}.breadcrumb-line strong{font-weight:400;color:var(--ink)}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:27px}.metric-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;display:flex;gap:13px;align-items:center;box-shadow:0 3px 10px rgba(30,55,44,.025)}.metric-card small,.metric-card strong,.metric-card em{display:block}.metric-card small{font-size:11px;color:var(--muted)}.metric-card strong{font-size:23px;font-weight:500;line-height:1.2}.metric-card em{font-size:10px;font-style:normal;color:var(--green)}.metric-icon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;font-size:19px}.metric-icon.green,.folder-icon.green,.admin-card-icon.green,.folder-mini.green{background:#e2f5eb;color:#258a64}.metric-icon.blue,.folder-icon.blue,.admin-card-icon.blue,.folder-mini.blue{background:#e5f0fa;color:#4f8fbf}.metric-icon.purple,.folder-icon.purple,.admin-card-icon.purple,.folder-mini.purple{background:#f0eafa;color:#8063b4}.metric-icon.orange,.folder-icon.orange,.admin-card-icon.orange{background:#fff0de;color:#c78742}.toolbar-card{background:#fff;border:1px solid var(--line);border-radius:11px;padding:12px;display:flex;justify-content:space-between;gap:15px;margin-bottom:30px}.search-box{display:flex;align-items:center;background:#f7faf8;border:1px solid #e7efeb;border-radius:8px;padding:0 12px;min-width:280px}.search-box span{font-size:22px;color:#9aa9a3}.search-box input{border:0;outline:0;background:transparent;padding:9px 9px;font-family:inherit;width:100%;font-size:13px}.toolbar-actions{display:flex;gap:8px}.view-toggle{border:1px solid #dde7e2;border-radius:8px;padding:2px}.view-toggle .btn{border:0;color:#9ca9a4}.view-toggle .btn.active{background:#e9f6ef;color:var(--green)}.section-block{margin-bottom:31px}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.section-title h2{font-size:17px;font-weight:500;margin:0}.section-title p{font-size:11px}.btn-link{padding:0;color:var(--green);font-size:13px}.folder-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.folder-card{border:1px solid var(--line);background:#fff;border-radius:11px;padding:16px;display:flex;align-items:center;text-align:left;gap:12px;box-shadow:0 3px 10px rgba(30,55,44,.025);transition:.2s}.folder-card:hover{border-color:#9dd2b9;transform:translateY(-2px)}.folder-card strong,.folder-card small{display:block}.folder-card strong{font-size:13px;font-weight:500}.folder-card small{font-size:10px;color:var(--muted);margin-top:2px}.folder-card>span{margin-left:auto;color:#a5b1ac}.folder-icon{width:35px;height:30px;border-radius:8px;display:grid;place-items:center}.table-card{background:#fff;border:1px solid var(--line);border-radius:11px;overflow:hidden}.table{font-size:12px;color:#556760}.table th{font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:#91a09a;font-weight:400;background:#fbfdfb;border-bottom:1px solid var(--line);padding:13px 17px;white-space:nowrap}.table td{padding:13px 17px;border-color:#edf2ef;white-space:nowrap}.file-name{display:flex;align-items:center;gap:10px;color:var(--ink)}.file-name strong{font-weight:400}.file-type{font-size:8px;font-weight:600;border-radius:5px;padding:6px 4px;color:#fff;min-width:29px;text-align:center}.file-type.green{background:#55ab7b}.file-type.red{background:#e8776b}.file-type.blue{background:#5996c2}.permission{border-radius:20px;padding:4px 9px;font-size:10px}.permission.full{background:#e6f5ed;color:#2f8a62}.permission.view{background:#eef3f1;color:#6c7c75}.permission.none{background:#f7eeee;color:#b47474}.action-button{background:none;border:0;color:#84938d;font-size:18px}.empty-state{text-align:center;padding:35px!important;color:#879890}.drop-zone{border:1.5px dashed #9bcbb5;border-radius:12px;background:#f5fbf7;display:flex;flex-direction:column;align-items:center;padding:34px 15px;color:#637b70;cursor:pointer}.drop-zone.dragging{background:#e1f4e9}.upload-icon{width:40px;height:40px;border-radius:50%;background:#dff3e7;color:var(--green);display:grid;place-items:center;font-size:23px;margin-bottom:10px}.drop-zone strong{font-weight:400}.drop-zone span,.drop-zone small{font-size:11px;color:#8b9a93;margin-top:4px}.selected-file{display:flex;gap:8px;align-items:center;background:#f6f9f7;border-radius:7px;padding:8px 10px;font-size:12px;margin-top:6px}.selected-file small{margin-left:auto;color:#8b9a93}.admin-tabs{display:flex;border-bottom:1px solid var(--line);gap:28px;margin-bottom:21px}.admin-tabs button{background:transparent;border:0;border-bottom:2px solid transparent;padding:0 3px 13px;color:#899790;font-family:inherit;font-size:14px}.admin-tabs button.active{color:var(--green);border-color:var(--green)}.admin-tabs span{background:#eef6f1;border-radius:12px;color:var(--green);padding:2px 7px;font-size:10px;margin-left:5px}.panel-toolbar{display:flex;justify-content:space-between;margin-bottom:13px}.user-cell{display:flex;align-items:center;gap:10px}.user-cell strong,.user-cell small{display:block}.user-cell strong{font-weight:400;color:var(--ink)}.user-cell small{font-size:10px;color:#95a19c;margin-top:2px}.role-badge{font-size:11px;color:#62736b}.status-badge{font-size:10px;padding:4px 8px;border-radius:15px}.status-badge i{width:6px;height:6px;border-radius:50%;display:inline-block;margin-right:5px}.status-badge.active{background:#e8f7ee;color:#388964}.status-badge.active i{background:#4cbb7c}.status-badge.pending{background:#fff4df;color:#b58138}.status-badge.pending i{background:#df9f3f}.admin-card-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.admin-info-card{background:#fff;border:1px solid var(--line);border-radius:11px;padding:19px;display:flex;flex-direction:column;align-items:flex-start}.admin-card-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;margin-bottom:15px}.admin-info-card h3{font-size:16px;font-weight:500;margin:0}.admin-info-card p{font-size:11px;color:var(--muted);min-height:35px;margin:5px 0 12px}.admin-info-card strong{font-size:11px;font-weight:400;color:#65766e;margin-bottom:15px}.admin-info-card .btn{margin-top:auto;font-size:11px}.folder-mini{width:27px;height:24px;display:inline-grid;place-items:center;border-radius:6px;margin-right:7px}.toast{background:#fff;color:var(--ink)}.toast-body{padding:12px 15px;font-size:13px}.toast-check{color:var(--green);font-size:18px;margin-right:8px}
@media(max-width:1050px){.metric-grid{grid-template-columns:repeat(2,1fr)}.folder-grid,.admin-card-grid{grid-template-columns:repeat(2,1fr)}.toolbar-card{flex-direction:column}.toolbar-actions{justify-content:flex-end}.login-layout{grid-template-columns:40% 60%}.login-visual{padding:35px}.visual-stats{gap:20px}}
@media(max-width:767px){.sidebar{position:fixed;z-index:1050;left:0;top:0;bottom:0;transform:translateX(-100%);box-shadow:10px 0 30px rgba(0,0,0,.2)}.sidebar.show{transform:translateX(0)}.topbar{height:75px;padding:0 5%}.content-wrap{padding:23px 5% 40px}.content-heading{align-items:flex-start;gap:15px}.content-heading .btn{white-space:nowrap}.page-title{font-size:20px}.metric-grid{gap:9px}.metric-card{padding:13px 10px}.metric-icon{width:32px;height:32px;font-size:15px}.metric-card strong{font-size:18px}.folder-grid,.admin-card-grid{grid-template-columns:1fr 1fr;gap:8px}.folder-card{padding:12px 9px;gap:7px}.folder-icon{width:29px;height:25px}.folder-card strong{font-size:11px}.folder-card small{font-size:9px}.toolbar-actions{justify-content:space-between}.toolbar-actions .btn-outline-secondary{font-size:11px;padding:7px}.search-box{min-width:0}.section-title h2{font-size:16px}.panel-toolbar{gap:8px}.panel-toolbar .btn{display:none}.admin-tabs{gap:17px;overflow:auto}.admin-tabs button{font-size:12px;white-space:nowrap}.login-layout{display:block}.login-visual{display:none}.login-panel{min-height:100vh;padding:27px}.mobile-login-brand{display:flex}.login-footer{position:static;display:block;margin-top:40px;text-align:center}.login-card h2{font-size:29px}.login-card{padding-bottom:20px}.user-chip .dropdown-toggle{padding:2px}.table{min-width:760px}}
@media (min-width: 768px) and (max-width: 991px) {
    .sidebar { position: fixed; z-index: 1040; left: 0; top: 0; bottom: 0; transform: translateX(-100%); overflow-y: auto; }
    .sidebar.show { transform: translateX(0); }
}

.sidebar-backdrop {
    display: none;
    position: fixed;
    z-index: 1035;
    inset: 0;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    background: rgba(5, 20, 15, .45);
}
.sidebar-backdrop.show {
    display: block;
}
body.sidebar-open {
    overflow: hidden;
}
.nav-link:focus-visible,
.btn:focus-visible,
.sidebar-backdrop:focus-visible {
    outline: 3px solid rgba(114, 209, 167, .65);
    outline-offset: 2px;
}

@media (min-width: 992px) {
    .sidebar-backdrop.show {
        display: none;
    }
    body.sidebar-open {
        overflow: auto;
    }
}

@media (max-width: 767px) {
    .topbar {
        gap: 10px;
    }
    .topbar .eyebrow {
        display: none;
    }
    .topbar .user-chip .btn {
        padding: 6px 8px;
        font-size: 11px;
    }
}


/* Novolife Information Center login identity */
.login-page {
    background: #fff;
}

.login-page .login-layout {
    grid-template-columns: 51% 49%;
}

.login-page .login-visual {
    padding: 0;
    background: #fff;
    color: #1b3562;
}

.login-page .login-visual::after {
    content: none;
}

.login-identity {
    flex: none;
    padding: clamp(30px, 4vw, 64px) clamp(30px, 5vw, 82px) 36px;
}

.login-logo {
    display: block;
    width: clamp(190px, 21vw, 290px);
    max-width: 100%;
    height: auto;
}

.login-identity-rule {
    width: 54px;
    height: 5px;
    margin: 34px 0 22px;
    background: #5adbc1;
}

.login-identity h1 {
    max-width: 650px;
    margin: 0;
    font-size: clamp(28px, 2.5vw, 38px);
    font-weight: 500;
    line-height: 1.13;
    letter-spacing: -.025em;
}

.login-identity p {
    margin: 16px 0 0;
    color: #51627a;
    font-size: 15px;
    line-height: 1.6;
}

.login-photo {
    position: relative;
    flex: 1 1 auto;
    min-height: 210px;
    overflow: hidden;
    background: #e9faf6;
}

.login-photo img {
    display: block;
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 40% center;
}

.login-page .login-panel {
    border-left: 1px solid #dcefe9;
    background: #fff;
}

.login-form-label {
    margin: 0;
    color: #1b3562;
    font-size: 13px;
    font-weight: 500;
}

.mobile-login-logo {
    display: none;
}

.login-account-guidance {
    margin: 8px 0 20px;
    color: #6d7989;
    font-size: 12px;
    font-weight: 300;
    line-height: 1.5;
}

.login-page .login-card h2 {
    color: #1b3562;
}

.login-page .form-control:focus,
.login-page .form-select:focus {
    border-color: #5adbc1;
    box-shadow: 0 0 0 .2rem rgba(90, 219, 193, .2);
}

.login-page .btn-primary {
    background: #1b3562;
    border-color: #1b3562;
}

.login-page .btn-primary:hover,
.login-page .btn-primary:focus-visible {
    background: #254b86;
    border-color: #254b86;
}

.login-page .login-hint {
    background: #e9faf6;
    color: #365b59;
}

@media (max-width: 767px) {
    .login-page .login-layout {
        display: block;
        min-height: 100svh;
    }

    .login-page .login-visual {
        display: none;
    }

    .login-page .login-panel {
        min-height: 100svh;
        padding: 24px 26px 32px;
        border-left: 0;
    }

    .mobile-login-logo {
        display: block;
        width: min(260px, 80vw);
        max-width: 100%;
        height: auto;
        margin: 0 auto 24px;
    }

    .login-form-label {
        text-align: center;
    }

    .login-page .login-card h2,
    .login-page .login-account-guidance {
        text-align: center;
    }

    .login-page .login-card {
        padding-bottom: 0;
    }
}

/* Shared Novolife palette. Legacy --green names remain for existing modules. */
:root {
    --brand-mint: #5adbc1;
    --brand-navy: #1b3562;
    --green: #1b3562;
    --green-dark: #122746;
    --ink: #1b3562;
    --muted: #65778d;
    --line: #dce8ee;
    --soft: #f4fbfa;
    --sidebar: #1b3562;
    --sidebar-muted: #c6d4e5;
    --shadow: 0 14px 34px rgba(27, 53, 98, .08);
}

body.app-page {
    background: var(--soft);
}

.app-page .sidebar {
    background: var(--brand-navy);
}

.app-page .nav-label {
    color: #aebfda;
}

.app-page .nav-link {
    color: var(--sidebar-muted);
}

.app-page .nav-link:hover,
.app-page .nav-link.active {
    background: #294a7a;
    color: #fff;
}

.app-page .nav-link.active {
    box-shadow: inset 3px 0 var(--brand-mint);
}

.app-page .topbar,
.app-page .metric-card,
.app-page .toolbar-card,
.app-page .folder-card,
.app-page .table-card,
.app-page .admin-info-card {
    border-color: var(--line);
}

.app-page .metric-card,
.app-page .folder-card,
.app-page .admin-info-card {
    box-shadow: 0 3px 12px rgba(27, 53, 98, .04);
}

.app-page .eyebrow,
.app-page .breadcrumb-line strong,
.app-page .section-title h2 {
    color: var(--brand-navy);
}

.app-page .breadcrumb-line,
.app-page .table th {
    color: var(--muted);
}

.app-page .table {
    color: #405574;
}

.app-page .table th {
    background: #f6fbfa;
    border-color: var(--line);
}

.app-page .table td {
    border-color: var(--line);
}


.app-page .btn-primary,
.app-page .form-check-input:checked {
    background: var(--brand-navy);
    border-color: var(--brand-navy);
    color: #fff;
}

.app-page .btn-primary:hover,
.app-page .btn-primary:focus-visible {
    background: #294a7a;
    border-color: #294a7a;
}

.app-page .btn-outline-secondary {
    border-color: #aabbd1;
    color: var(--brand-navy);
}

.app-page .btn-outline-secondary:hover,
.app-page .btn-outline-secondary:focus-visible {
    background: var(--brand-navy);
    border-color: var(--brand-navy);
    color: #fff;
}

.app-page .form-control:focus,
.app-page .form-select:focus,
.app-page .form-check-input:focus {
    border-color: var(--brand-mint);
    box-shadow: 0 0 0 .2rem rgba(90, 219, 193, .22);
}

.app-page .avatar,
.app-page .metric-icon.green,
.app-page .metric-icon.blue,
.app-page .metric-icon.purple,
.app-page .metric-icon.orange,
.app-page .folder-icon.green,
.app-page .folder-icon.blue,
.app-page .folder-icon.purple,
.app-page .folder-icon.orange,
.app-page .admin-card-icon.green,
.app-page .admin-card-icon.blue,
.app-page .admin-card-icon.purple,
.app-page .admin-card-icon.orange,
.app-page .folder-mini.green,
.app-page .folder-mini.blue,
.app-page .folder-mini.purple {
    background: #e3f8f3;
    color: var(--brand-navy);
}

.app-page .permission.full,
.app-page .status-badge.active {
    background: #e3f8f3;
    color: var(--brand-navy);
}

.app-page .status-badge.active i,
.app-page .status-dot,
.app-page .progress-bar {
    background: var(--brand-mint);
}

.app-page .sidebar-backdrop {
    background: rgba(17, 39, 71, .48);
}

.app-page .folder-card:hover,
.app-page .drop-zone {
    border-color: var(--brand-mint);
}

.app-page .search-box,
.app-page .drop-zone,
.app-page .login-hint {
    background: #f2fbf8;
}

.app-page .nav-link:focus-visible,
.app-page .btn:focus-visible,
.app-page .sidebar-backdrop:focus-visible {
    outline-color: var(--brand-mint);
}

/* The brand header shares the topbar's height and the sidebar's navy field. */
.app-page .sidebar {
    width: 270px;
    position: sticky;
    top: 0;
    align-self: flex-start;
    height: 100vh;
    padding: 0 16px 16px;
    overflow-y: auto;
}

.app-page .brand-block {
    min-height: 91px;
    align-items: center;
    margin: 0 -16px;
    padding: 9px 20px;
    border-bottom: 1px solid rgba(255, 255, 255, .14);
}

.app-page .sidebar-brand {
    flex: 1;
    min-width: 0;
}

.app-page .sidebar-logo {
    display: block;
    width: 100%;
    height: auto;
    max-width: 210px;
    filter: brightness(0) invert(1);
}

.app-page .sidebar-brand strong {
    margin-top: 3px;
    font-size: 14px;
    line-height: 1.35;
    font-weight: 400;
}

.app-page .brand-block .sidebar-close {
    flex: none;
    align-self: flex-start;
    color: #fff;
    font-size: 24px;
}

.app-page .sidebar-nav {
    padding-top: 15px;
}

.app-page .nav-label {
    font-size: 14px;
    letter-spacing: .04em;
}

.app-page .nav-link {
    padding: 14px 12px;
    font-size: 18px;
}

.app-page .sidebar-bottom {
    padding: 14px 4px 0;
    border-top: 1px solid rgba(255, 255, 255, .16);
}

.app-page .sidebar-signout,
.app-page .sidebar-password {
    display: block;
    width: 100%;
    padding: 10px 14px;
    border: 1px solid rgba(255, 255, 255, .42);
    border-radius: 8px;
    background: transparent;
    color: #fff;
    font: 400 18px 'Kanit', sans-serif;
    text-align: left;
    text-decoration: none;
}

.app-page .sidebar-signout:hover,
.app-page .sidebar-signout:focus-visible,
.app-page .sidebar-password:hover,
.app-page .sidebar-password:focus-visible {
    border-color: var(--brand-mint);
    background: rgba(90, 219, 193, .12);
    outline-color: var(--brand-mint);
}

.app-page .sidebar-password { margin-bottom: 9px; }

.app-page .sidebar-meta {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 11px 3px 0;
    color: #c6d4e5;
    font-size: 14px;
    line-height: 1.5;
}

.app-page .sidebar-meta span {
    color: var(--brand-mint);
}

.app-page .content-wrap {
    max-width: none;
    padding: 28px 2.75% 48px;
}

.app-page .topbar {
    padding-inline: 2.75%;
}

.app-page .page-title {
    font-size: 30px;
}

.app-page .user-chip strong,
.app-page .breadcrumb-line,
.app-page .search-box input,
.app-page .admin-info-card p {
    font-size: 16px;
}

.app-page .user-chip small,
.app-page .metric-card small,
.app-page .folder-card small,
.app-page .user-cell small,
.app-page .status-badge,
.app-page .admin-info-card strong {
    font-size: 14px;
}

.app-page .section-title h2,
.app-page .content-heading h2 {
    font-size: 24px;
}

.app-page .folder-card strong,
.app-page .admin-info-card h3 {
    font-size: 18px;
}

.app-page .table {
    font-size: 16px;
}

.app-page .table th,
.app-page .permission,
.app-page .admin-tabs span {
    font-size: 14px;
    letter-spacing: 0;
}

.app-page .admin-tabs button,
.app-page .admin-info-card .btn {
    font-size: 17px;
}


.app-page .btn,
.app-page .form-control,
.app-page .form-select {
    font-size: 16px;
}

@media (max-width: 991px) {
    .app-page .sidebar {
        position: fixed;
        top: 0;
        bottom: 0;
        height: 100dvh;
    }
}

@media (max-width: 767px) {
    .app-page .content-wrap {
        padding: 22px 5% 40px;
    }

    .app-page .topbar {
        padding-inline: 5%;
    }

    .app-page .page-title {
        font-size: 24px;
    }

    .app-page .folder-card strong {
        font-size: 17px;
    }

    .app-page .folder-card small {
        font-size: 14px;
    }
}

/* Compact page headings and the shared news shortcut. */
.app-page .page-title { font-size: 25px; }
.app-page .section-title h2, .app-page .content-heading h2 { font-size: 21px; }
.news-bell { position: relative; width: 40px; height: 40px; display: grid; place-items: center; border: 0; border-radius: 50%; color: #1b3562; background: #eaf8f5; flex: none; cursor: pointer; }
.news-bell-count { position: absolute; top: -5px; right: -7px; min-width: 18px; height: 18px; padding: 0 4px; border-radius: 10px; background: #d94b52; color: #fff; font-size: 11px; font-weight: 600; line-height: 18px; }
.news-bell:hover, .news-bell:focus-visible { color: #1b3562; background: #d3f4ec; outline: 2px solid #5adbc1; }
.notification-anchor { position: relative; flex: none; }
.notification-dropdown { position: absolute; z-index: 1100; top: calc(100% + 14px); right: -45px; width: min(390px, calc(100vw - 24px)); overflow: hidden; border: 1px solid #dcebe8; border-radius: 14px; background: #fff; box-shadow: 0 16px 40px rgba(27, 53, 98, .16); }
.notification-dropdown-head { display: flex; justify-content: space-between; align-items: center; padding: 14px 17px; border-bottom: 1px solid #e5eeec; color: #1b3562; font-size: 18px; }
.notification-close { border: 0; background: none; color: #61728b; font-size: 25px; line-height: 1; }
.notification-dropdown-list { max-height: 390px; overflow-y: auto; }
.notification-item { display: flex; align-items: flex-start; gap: 12px; width: 100%; padding: 13px 16px; border: 0; border-bottom: 1px solid #edf2f1; background: #fff; color: #1b3562; text-align: left; }
.notification-item:hover, .notification-item:focus-visible { background: #effaf7; }
.notification-item.is-unread { background: #f4fbf9; }
.notification-item-icon { display: grid; place-items: center; flex: none; width: 34px; height: 34px; border-radius: 50%; background: #dff7f1; color: #1b3562; font-size: 18px; }
.notification-item-copy { min-width: 0; flex: 1; }
.notification-item-copy small, .notification-item-copy strong, .notification-item-copy time { display: block; }
.notification-item-copy small { color: #3b897b; font-size: 12px; }
.notification-item-copy strong { font-size: 15px; font-weight: 500; line-height: 1.35; overflow-wrap: anywhere; }
.notification-item-copy time { margin-top: 4px; color: #75849a; font-size: 12px; }
.notification-unread-dot { width: 8px; height: 8px; flex: none; margin-top: 12px; border-radius: 50%; background: #1b81bb; }
.notification-empty { margin: 0; padding: 25px 14px; color: #61728b; text-align: center; }
.notification-browser-permission, .notification-history-link { display: block; width: 100%; padding: 11px 16px; border: 0; background: #fff; color: #1b3562; text-align: center; font-size: 14px; }
.notification-browser-permission { border-top: 1px solid #edf2f1; }
.notification-history-link { border-top: 1px solid #e5eeec; background: #eef9f6; font-weight: 500; }
.notification-browser-permission:hover, .notification-history-link:hover { background: #dff5ee; color: #1b3562; }
.notification-device-hint { margin: 0; padding: 10px 15px; border-top: 1px solid #edf2f1; color: #61728b; font-size: 12px; text-align: center; }
@media (max-width: 767px) { .app-page .page-title { font-size: 20px; } .news-bell { width: 36px; height: 36px; } }
@media (max-width: 767px) { .notification-dropdown { position: fixed; top: 70px; right: 12px; } }
.approver-results {
    max-height: 210px;
    overflow-y: auto;
    color: var(--muted);
    font-size: 14px;
}

.approver-choice {
    display: block;
    width: 100%;
    padding: 9px 12px;
    border: 0;
    border-bottom: 1px solid var(--line);
    background: #fff;
    color: var(--brand-navy);
    text-align: left;
}

.approver-choice:hover,
.approver-choice:focus-visible {
    background: var(--soft);
}

.nic-loading {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: grid;
    place-items: center;
    background: rgba(255, 255, 255, .94);
    opacity: 1;
    visibility: visible;
    transition: opacity .2s ease, visibility .2s ease;
}

.nic-loading.is-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.nic-loading-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    width: min(280px, 76vw);
}

.nic-loading-logo {
    display: block;
    width: 100%;
    height: auto;
    object-fit: contain;
    animation: nic-loading-breathe 1.8s ease-in-out infinite;
}

.nic-loading-track {
    display: block;
    width: 96px;
    height: 3px;
    overflow: hidden;
    border-radius: 3px;
    background: #d9efea;
}

.nic-loading-track span {
    display: block;
    width: 42%;
    height: 100%;
    border-radius: inherit;
    background: #5adbc1;
    animation: nic-loading-slide 1.15s ease-in-out infinite alternate;
}

.nic-loading-label { color: #1b3562; font-size: 14px; }

@keyframes nic-loading-breathe {
    0%, 100% { opacity: .78; transform: scale(.96); }
    50% { opacity: 1; transform: scale(1); }
}

@keyframes nic-loading-slide {
    from { transform: translateX(-105%); }
    to { transform: translateX(235%); }
}

@media (prefers-reduced-motion: reduce) {
    .nic-loading-logo, .nic-loading-track span { animation: none; }
}
