﻿@media (max-width: 575.98px) {
    .a-icon {
        margin-right: 0px !important;
    }
    /*.d-flex.flex-column.flex-md-row {
        flex-direction: column !important;*/ /* 父容器垂直排列 */
        /*gap: 8px !important;*/ /* 元素間距 */
    /*}*/

    /* 日期容器調整成獨立邊框 */
    /*.date-range {
        flex-direction: column;*/ /* 垂直排列 */
        /*gap: 8px !important;
        border: none !important;
        background-color: transparent !important;
    }

    .date-wrapper {
        border: 1px solid #68442b;
        border-radius: 6px;
        background-color: #FFF;
        padding: 0 10px;
        height: 39.5px;
        position: relative;
    }

    .date-separator {
        display: none;*/ /* 手機版不用 ~ */
    /*}
    .date-wrapper .date-display {
        justify-content: start !important;
        padding-left: 12px !important;
    }*/
}

@media (min-width: 576px) and (max-width: 767.98px) {
    /*.d-flex.flex-column.flex-md-row {
        flex-direction: column !important;*/ /* 父容器垂直排列 */
        /*gap: 8px !important;*/ /* 元素間距 */
    /*}*/

    /* 日期容器調整成獨立邊框 */
    /*.date-range {
        flex-direction: column;*/ /* 垂直排列 */
        /*gap: 8px !important;
        border: none !important;
        background-color: transparent !important;
    }

    .date-wrapper {
        border: 1px solid #68442b;
        border-radius: 6px;
        background-color: #FFF;
        padding: 0 10px;
        height: 39.5px;
        position: relative;
    }

    .date-separator {
        display: none;*/ /* 手機版不用 ~ */
    /*}
    .date-wrapper .date-display {
        justify-content: start !important;
        padding-left: 12px !important;
    }*/
}
/* 大平板 */
@media (min-width: 768px) and (max-width: 991.98px) {
    /*.d-flex.flex-column.flex-md-row {
        flex-direction: column !important;*/ /* 父容器垂直排列 */
        /*gap: 8px !important;*/ /* 元素間距 */
    /*}*/

    /* 日期容器調整成獨立邊框 */
    /*.date-range {
        flex-direction: column;*/ /* 垂直排列 */
        /*gap: 8px !important;
        border: none !important;
        background-color: transparent !important;
    }

    .date-wrapper {
        border: 1px solid #68442b;
        border-radius: 6px;
        background-color: #FFF;
        padding: 0 10px;
        height: 39.5px;
        position: relative;
    }

    .date-separator {
        display: none;*/ /* 手機版不用 ~ */
    /*}
    .date-wrapper .date-display {
        justify-content: start !important;
        padding-left: 12px !important;
    }*/
}
/* 小桌機*/
@media (min-width: 992px) and (max-width: 1199.98px) {
}
/* 特大桌機尺寸 */
@media (min-width: 1200px) {
}

.a-icon {
    width: 150px;
    height: auto;
    margin-right: 20px;
    border-radius: 50%;
}

.intro-img {
    max-width: 648px;
    max-height: 49px;
}

.file-img {
    max-width: 18px;
    max-height: 18px;
}

.intro-title {
    display: inline-block;
    border-bottom: 3px solid #8fcac3;
    padding-bottom: 0.25rem;
}

.intro-card {
    background-color: transparent;
    border: none;
}

.asset-card {
    position: relative;
    overflow: visible; /* 讓超出內容可見 */
    z-index: 0;
}

.card-tag {
    position: absolute;
    right: -1%;
    bottom: 0;
    transform: translate(5%, 5%); /* 右下角 */
    background-color: #c7702d;
    color: #fff !important;
    padding: 0.25rem 0.75rem;
    border-radius: 8px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.2);
    white-space: nowrap;
    z-index: 2;
}

.asset-card img {
    position: relative;
    z-index: 1;
    width: 100%;
    height: 200px; /* 或你想要的高度 */
    object-fit: cover; /* 改為 cover：會裁切圖片以填滿容器 */
    display: block;
    border-radius: 20px;
    padding: 8px;
}

.card-underlay {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: white;
    z-index: 0;
    border: 1px solid;
    border-radius: 20px;
    pointer-events: none;
}

.chart-title {
    position: static; /* no absolute overlay */
    display: block;
    width: 100%;
    text-align: center;
    font-size: 1rem;
    font-weight: 500;
    pointer-events: none;
    margin-top: 0.75rem; /* space between chart and title */
}

/* Container holds chart and title stacked vertically */
.chart-container {
    position: relative;
    width: 48%;
    display: flex;
    flex-direction: column; /* stack chart then title */
    align-items: center;
    justify-content: flex-start;
}

.chart-container .chart {
    width: 100%;
}

/* Remove conflicting absolute positioning styles if present */
.chart-container .chart-title,
.chart-title.left,
.chart-title.right {
    position: static !important;
    left: auto !important;
    right: auto !important;
    transform: none !important;
    bottom: auto !important;
}

/* Responsive: stack charts on small screens and increase spacing */
@media (max-width: 1199.98px) {
    .chart-container { width: 100%; }
    .chart { height: 360px; }
    .chart-title { margin-top: 1rem; font-size: 1rem; }
}

@media (max-width: 575.98px) {
    .chart { height: 260px; }
    .chart-title { font-size: 0.95rem; margin-top: 0.75rem; }
}

.text-statorange {
    font-size: 1.375rem;
    color: #DC9D6D !important;
}

.text-statbluegreen {
    font-size: 1.375rem;
    color: #8FCAC3 !important;
}

.chart-outer-wrapper {
    background-color: #fff;
    padding: 10px;
    border: 1px solid #000;
    border-radius: 15px;
    margin-top: 30px;
    width: auto;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}

.chart-wrapper {
    position: relative;
    background-color: #fff;
    padding: 10px 10px 80px 10px;
    border: 1px solid #000;
    border-radius: 10px;
}

.chart-row {
    display: flex;
    justify-content: center;
}

.chart {
    width: 48%; /* 各占一半（預留間距） */
    height: 350px; /* ApexCharts 需要明確高度 */
    position: relative;
}

.title-wrapper {
    display: flex;
    justify-content: end;
    align-items: center;
}

.title-text {
    flex: 1;
    line-height: 1.5;
}

table.brown {
    table-layout: fixed; /* 固定欄寬，平均分配 */
    width: 100%; /* 滿版寬度 */
}

    /* 表頭 */
    table.brown thead tr th {
        background-color: #68442B; /* 深橘色表頭 */
        color: #fff;
        text-align: center; /* 表頭置中 */
        white-space: normal; /* 允許換行 */
        word-break: break-word; /* 需要斷字換行時 */
        width: calc(100% / 14); /* 平均分配14欄 */
    }

    /* 表身欄位 */
    table.brown tbody tr td {
        text-align: center; /* 置中 */
        white-space: normal;
        word-break: break-word;
        width: calc(100% / 14); /* 平均分配14欄 */
        padding: 20px 0px;
        color: #68442b;
    }

    table.brown.my-striped td,
    table.brown.my-striped th {
        border: none !important;
        padding: 13px 7px;
        vertical-align: middle; /* 垂直置中 */
    }
    /* 條紋列背景 */
    table.brown.my-striped {
        --bs-table-striped-bg: #EEE8D999; /* 淡橘條紋 */
        --bs-table-bg: #FFF; /* 整體背景淡米橘 */
    }

    table.brown thead th:first-child,
    table.brown tbody td:first-child {
        background-color: transparent !important;
        --bs-table-striped-bg: transparent !important;
    }

    /* 表頭左上角有文字欄位圓角（第一列第一個有文字的th） */
    table.brown thead tr th:nth-child(2) {
        border-top-left-radius: 12px;
    }
    /* 最後一筆資料行左欄左下角圓角 */
    /* 左下角：tbody 最後一列第二欄 */
    table.brown tbody tr:last-child td:nth-child(2) {
        border-bottom-left-radius: 10px;
    }

.table-orange {
    --bs-table-striped-bg: #DC9D6D !important;
}

table .orange {
    table-layout: fixed; /* 固定欄寬，平均分配 */
    width: 100%; /* 滿版寬度 */
}

    /* 表頭 */
    table.orange thead tr th {
        background-color: #D58E41; /* 深橘色表頭 */
        color: #fff;
        text-align: center; /* 表頭置中 */
        white-space: normal; /* 允許換行 */
        word-break: break-word; /* 需要斷字換行時 */
        width: calc(100% / 5); /* 平均分配14欄 */
        padding: 13px 10px;
    }

    /* 表身欄位 */
    table.orange tbody tr td {
        text-align: center; /* 置中 */
        white-space: normal;
        word-break: break-word;
        width: calc(100% / 5); /* 平均分配14欄 */
        padding: 10px 5px;
    }


    /* 條紋列背景 */
    table.orange.my-striped {
        --bs-table-striped-bg: #FFF; /* 淡橘條紋 */
        --bs-table-bg: #F2F2F2; /* 整體背景淡米橘 */
    }


.input-wrapper {
    position: relative;
}

/* 隱藏原生日期 icon */
input[type="date"]::-webkit-calendar-picker-indicator {
    opacity: 0;
    position: absolute;
    right: 0;
    cursor: pointer;
}

/* 容器 */
.date-wrapper {
    position: relative;
    width: 100%;
    height: 39.5px;
}

    /* 隱藏原生 input 文字 */
    .date-wrapper input[type="date"] {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        opacity: 0;
        border: none;
/*        cursor: pointer;*/
        color: transparent;
        background-color: transparent;
    }

    /* 自訂顯示文字 */
    .date-wrapper .date-display {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
        color: #C3AD9C !important;
        letter-spacing: 3px;
        padding-right: 20px;
    }

    /* calendar icon */
    .date-wrapper i {
        position: absolute;
        right: 10px;
        top: 50%;
        transform: translateY(-50%);
        pointer-events: none;
        color: #C3AD9C !important;
    }

/* 日期範圍整體 */
.date-range {
    display: flex;
    align-items: center;
    border: 1px solid #68442b;
    border-radius: 6px;
    background-color: #FFF;
    overflow: hidden;
}

/* 分隔符 */
.date-separator {
    padding: 0 8px;
    color: #C3AD9C !important;
    font-weight: bold;
    user-select: none;
}

.hidden-inputs {
    position: absolute;
    opacity: 0;
    pointer-events: none;
    height: 0;
    overflow: hidden;
}

.dropdown.all {
    border: 0.5px solid #68442b !important;
    border-radius: 6px;
    background-color: #FFF;
}

.custom-dropdown-btn {
    color: #C3AD9C !important;
}

.custom-dropdown-item {
    color: #C3AD9C !important;
}

.dropdown-menu.all .custom-dropdown-item:hover {
    background-color: #F5F1E8 !important;
    color: #68442b;
}

.dropdown-menu.all .custom-dropdown-item:focus {
    background-color: transparent !important;
    color: #68442b;
}

.dropdown-menu.all .custom-dropdown-item:focus {
    box-shadow: none;
}
/*文資地圖*/
/*.map-wrapper {
    position: relative;*/
/*    width: 1088px;
    height: 838px;*/
/*overflow: hidden;*/ /* 可選，看你需求 */
/*}*/

.main-map {
    width: 1088px;
    height: 748px;
    transform-origin: center center;  置中縮放 
}

/*.map-wrapper {
    position: relative;
    width: 100%;
    padding-top: 68.76%;*/ /* 1120 / 1628 */
/*}

.main-map {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.map-overlay {
    position: absolute;
}

.hovered {
    stroke: #FF0000;
    stroke-width: 2;
    cursor: pointer;
}

.district-info {
    position: absolute;
    pointer-events: none;
    transform: translate(-50%, -100%);
    z-index: 999;
}

    .district-info .box {
        background: rgba(0,0,0,0.65);
        color: #fff;
        padding: 8px 12px;
        border-radius: 6px;
        font-size: 14px;
        white-space: nowrap;
    }*/




/*.map-area.hovered {
    filter: brightness(1.3) saturate(1.2);
    cursor: pointer;
}*/

.hovered {
    fill: #FF0000;
    cursor: pointer;
}

.district-popup {
    position: absolute;
    bottom: -10px;
    right: -135px;
    background-color: #FFF;
    border: 1px solid #ccc;
    padding: 1rem;
    border-radius: 8px;
    z-index: 10;
    width: 590px;
}

svg {
    pointer-events: none;
}

    svg path {
        pointer-events: auto;
    }

.nav-tabs {
    border-bottom: none;
    background-color: transparent;
}

    .nav-tabs .nav-link {
        border: none;
        /*        border-bottom: 1px solid #000;*/
        background-color: transparent;
        color: #C3AD9C; /* 巧克力棕（可依實際色調調整） */
        font-weight: bold;
    }

        .nav-tabs .nav-link.active {
            color: #FFF; /* 橘色 */
            border: none;
            border-bottom: 1px solid #000;
            background-color: #DC9D6D;
        }

.tab-content {
    /*    border: none;*/
    position: relative;
    background-color: #FFFFFF;
    border: 1px solid #000;
    border-radius: 8px;
    padding-top: 1rem;
    z-index: 2;
}

.class-box {
    max-width: 200px;
    min-width: 150px;
}

    .class-box p {
        min-height: 35px;
    }

.upper-layer {
    color: #FFF;
    background-color: #DC9D6D;
    border-radius: 8px 8px 0px 0px;
    border: 1px solid #000;
    padding: 5px;
}

.lower-layer {
    color: #68442b;
    background-color: #FFF;
    border-radius: 0px 0px 8px 8px;
    border: 1px solid;
    border-top: none;
    padding: 5px;
}

.assetimg-content {
    width: 100%;
    /*max-width: 500px;*/ /* 容器最大寬度，可調整 */
    position: relative;
    overflow: hidden;
    border-radius: 20px;
    /* 16:9 高度比例 */
    height: 0;
    padding-top: 56.25%; /* 9/16 = 0.5625 */
}

    .assetimg-content img {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        object-fit: cover; /* 填滿容器，可能裁切 */
        border-radius: 20px;
    }

body #statistics {
    /* allow responsive layout instead of fixed minimum width */
    min-width: 0;
    width: 100%;
}

/* Responsive overrides for AssetsStatistics (Option A - minimal changes) */
@media (max-width: 1199.98px) {
    body #statistics { padding: 0 12px; }
    #export-target { min-width: 0; width: 100%; }
    .chart { width: 100%; height: 360px; }
    .chart-wrapper { padding-bottom: 20px; }
    .chart-row { flex-direction: column; gap: 20px; align-items: stretch; }
    .main-map, .assetimg-content { width: 100%; height: auto; }
    table.brown thead tr th, table.orange thead tr th { font-size: 0.95rem; padding: 8px; }
    table.brown tbody tr td, table.orange tbody tr td { padding: 8px; font-size: 0.9rem; }
    .mobile-list-item { width: 48%; }
}

@media (max-width: 575.98px) {
    .mobile-list-item { width: 100%; display: block; margin-bottom: 8px; }
    .a-icon { width: 100px; }
    .chart { height: 260px; }
    .asset-card img { height: 160px; }
    .date-wrapper { height: 44px; }
}

html, body {
    overflow-x: auto !important;
}

.mobile-list {
    padding: 20px 5px;
    border: 1px solid #68442b;
    border-radius: .5rem;
    background-color: #FFF;
}

.mobile-list-item {
    display: inline-block;
    width: 32%;
    text-align: center;
    cursor: pointer;
    position: relative;
}

    .mobile-list-item::before {
        content: "•"; /* 點點符號 */
        color: #68442b; /* 點的顏色，可自訂 */
        display: inline-block;
        margin-right: 4px; /* 點與文字間距 */
    }

#export-target {
    min-width: 1000px; /* 固定內容寬度 */
    min-height: 570px; /* 固定內容寬度 */
    /*overflow-x: auto;*/ /* 允許水平滾動 */
    position: relative;
}

.district-modal-body {
    overflow-x: auto; /* Modal 本身也能滾動 */
    position: relative;
}
.custom-close {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 999 !important;
}
/*#districtModal .btn-close {
    display: none;
}*/

/* Ensure form inputs use a readable system sans-serif to avoid decorative font glyph issues */
input.form-control,
input.form-control[type="email"],
textarea.form-control,
select.form-control {
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans TC", "Microsoft JhengHei", sans-serif !important;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    letter-spacing: normal !important;
    text-transform: none !important; /* ensure no uppercase transform */
}

/* keep previous height/padding rules */
input.form-control,
input.form-control[type="email"] {
    min-height: 44px; /* ensure enough vertical space */
    height: auto !important;
    padding: 10px 12px; /* vertical padding to center text */
    line-height: 1.25; /* ensure text is vertically centered */
    box-sizing: border-box; /* include padding in height calculations */
    display: block;
}

@media (max-width: 575.98px) {
    input.form-control,
    input.form-control[type="email"] {
        min-height: 48px;
        padding: 12px 14px;
    }
}

.input-wrapper input.form-control {
    height: auto !important;
    min-height: 44px;
}

/* --- Fix clipped descenders for inputs (stronger overrides) --- */
.form-control {
    /* ensure enough vertical room and readable font */
    min-height: 48px !important;
    height: auto !important;
    padding: 10px 14px !important;
    line-height: 1.4 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans TC", "Microsoft JhengHei", sans-serif !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    text-rendering: optimizeLegibility !important;
    vertical-align: middle !important;
}

/* Ensure placeholder fully visible */
.form-control::placeholder {
    opacity: 1 !important;
    color: inherit !important;
}

/* Allow common wrappers to not clip children descenders */
.input-wrapper,
.form-group,
.card,
.card-body,
.container,
.row {
    overflow: visible !important;
}

/* Mobile tweak */
@media (max-width: 575.98px) {
    .form-control {
        min-height: 52px !important;
        padding: 12px 14px !important;
        line-height: 1.4 !important;
    }
}

/* If some component forces a transform causing clipping, ensure inputs are not artificially clipped */
.form-control, .input-wrapper {
    transform: none !important;
}

/* Strong override for specific input if descenders are clipped */
input#Input_Email.form-control,
input[name="Input.Email"].form-control {
    min-height: 56px !important;
    height: auto !important;
    padding: 12px 16px !important;
    line-height: 1.5 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans TC", "Microsoft JhengHei", sans-serif !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    text-rendering: optimizeLegibility !important;
    letter-spacing: normal !important;
    text-transform: none !important;
    transform: none !important;
}

/* also ensure parent wrapper doesn't clip */
#Input_Email, input[name="Input.Email"] {
    overflow: visible !important;
}

/* quick debug border to visualize input area (remove or comment out after testing) */
/* input#Input_Email.form-control { outline: 2px dashed rgba(255,0,0,0.25) !important; } */

/* Strong, targeted fix for Input_Email clipping */
.password-input-container,
.form-group {
    overflow: visible !important;
    transform: none !important;
}

.password-input-container input.form-control#Input_Email,
.form-group input.form-control#Input_Email,
input[name="Input.Email"].form-control {
    /* sizing */
    min-height: 56px !important;
    height: auto !important;
    padding: 12px 16px !important;
    line-height: 1.45 !important;
    box-sizing: border-box !important;

    /* font and rendering */
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans TC", "Microsoft JhengHei", sans-serif !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    text-rendering: optimizeLegibility !important;
    letter-spacing: normal !important;
    text-transform: none !important;
    vertical-align: middle !important;
    overflow: visible !important;
}

.password-input-container input.form-control#Input_Email::placeholder {
    opacity: 1 !important;
    color: inherit !important;
}

/* ensure no ancestor clipping */
.password-input-container, .form-group, .card, .card-body, .container, .row {
    overflow: visible !important;
}

/* If there is an unexpected transform on an ancestor, neutralize it for input area */
.password-input-container * {
    transform: none !important;
}

/* Small screens tweak */
@media (max-width: 575.98px) {
    .password-input-container input.form-control#Input_Email,
    input[name="Input.Email"].form-control {
        min-height: 60px !important;
        padding: 14px 16px !important;
        line-height: 1.4 !important;
    }
}

/* Login page fixes: ensure input descenders not clipped and button text doesn't wrap */
.login-background .login-card,
.login-background .login-card .password-input-container,
.login-background .login-card .form-group {
    overflow: visible !important;
    transform: none !important;
}

.login-background .login-card input.form-control#Input_Email,
.login-background .login-card input.form-control[name="Input.Email"],
.login-background .login-card .password-input-container input.form-control {
    min-height: 56px !important;
    height: auto !important;
    padding: 12px 16px !important;
    line-height: 1.45 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans TC", "Microsoft JhengHei", sans-serif !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: grayscale !important;
    text-rendering: optimizeLegibility !important;
}

/* Ensure placeholder visible */
.login-background .login-card input.form-control::placeholder {
    opacity: 1 !important;
    color: inherit !important;
}

/* Login button: allow it to grow but keep text on one line */
.login-background .login-card .btn-login {
    display: inline-block;
    white-space: nowrap !important; /* prevent wrapping */
    padding: 10px 28px !important; /* allow wider clickable area */
    min-width: 220px; /* allow comfortable width */
    max-width: 100%;
    box-sizing: border-box;
}

/* Responsive: on very small screens reduce min-width to avoid overflow */
@media (max-width: 420px) {
    .login-background .login-card .btn-login {
        min-width: 160px;
        padding: 10px 18px !important;
        font-size: 0.95rem;
    }
}

/* Final targeted fixes for clipped descenders across the site */
/* Ensure modal/dialog and common wrappers do not clip input descenders */
.modal,
.modal-dialog,
.modal-content,
.modal-body,
.popover,
.tooltip,
.card,
.card-body,
.form-group,
.input-wrapper {
    overflow: visible !important;
    transform: none !important;
}

/* Force a reliable, legible font for form controls and give extra vertical room */
input.form-control,
textarea.form-control,
select.form-control {
    /* Prefer neutral UI fonts to avoid decorative glyphs */
    font-family: Arial, "Segoe UI", system-ui, -apple-system, "Noto Sans TC", "Microsoft JhengHei", sans-serif !important;

    /* ensure enough room for descenders */
    min-height: 48px !important;
    height: auto !important;
    padding-top: 0.6rem !important;
    padding-bottom: 0.6rem !important;
    line-height: 1.25 !important;
    box-sizing: border-box !important;

    /* rendering hints to avoid strange glyph thinning */
    -webkit-font-smoothing: subpixel-antialiased !important;
    -moz-osx-font-smoothing: auto !important;
    text-rendering: geometricPrecision !important;
    letter-spacing: normal !important;
    overflow: visible !important;
}

/* In case some inputs use smaller utility classes, apply to form-input too */
input.form-input, textarea.form-input {
    min-height: 48px !important;
    padding-top: 0.6rem !important;
    padding-bottom: 0.6rem !important;
    line-height: 1.25 !important;
    overflow: visible !important;
}

/* If inputs are inside elements with border-radius + overflow hidden, allow input box to be visible */
.input-wrapper, .form-group, .card-body {
    overflow: visible !important;
}

/* Accessibility: ensure placeholders remain visible and not clipped */
input.form-control::placeholder, textarea.form-control::placeholder {
    opacity: 1 !important;
}

/* Small screens: keep the increased padding but slightly reduce min-height to fit */
@media (max-width: 575.98px) {
    input.form-control, textarea.form-control, select.form-control {
        min-height: 44px !important;
        padding-top: 0.5rem !important;
        padding-bottom: 0.5rem !important;
        line-height: 1.2 !important;
    }
}

/* Force reliable Latin glyph rendering in admin modals/forms */
.modal, .modal-content, .modal-body, .card, .card-body {
    transform: none !important;
    overflow: visible !important;
}

/* Very targeted override for admin/manage dialogs and forms */
.area-manage .form-control,
.modal .form-control,
.card .form-control,
.form-control.form-input {
    font-family: "Segoe UI", Arial, system-ui, -apple-system, "Noto Sans TC", "Microsoft JhengHei", sans-serif !important;
    -webkit-font-smoothing: subpixel-antialiased !important; /* prefer subpixel to keep descenders clear */
    -moz-osx-font-smoothing: auto !important;
    text-rendering: optimizeLegibility !important;
    font-variant-ligatures: none !important;
    letter-spacing: normal !important;
    line-height: 1.3 !important;
    min-height: 48px !important;
    padding-top: 0.55rem !important;
    padding-bottom: 0.55rem !important;
}

/* If site loads a decorative Google font, prevent it from applying to inputs */
body *:not(input):not(textarea):not(select) {
    /* no-op selector to document intent; do not change visual style */
}

/* Extra safety: disable transforms on any ancestor of inputs which may trigger subpixel antialias issues */
.form-control, .form-group, .input-wrapper {
    transform: none !important;
}

/* GLOBAL: apply the same descender/font rendering fixes used for the forgot-password email input to all form controls */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
textarea,
select,
.form-control,
.form-select,
input.form-input,
textarea.form-input {
    font-family: Arial, "Segoe UI", system-ui, -apple-system, "Noto Sans TC", "Microsoft JhengHei", sans-serif !important;
    -webkit-font-smoothing: antialiased !important;
    -moz-osx-font-smoothing: antialiased !important;
    text-rendering: optimizeLegibility !important;
    font-variant-ligatures: none !important;
    letter-spacing: normal !important;

    /* make inputs taller and increase line height so descenders are visible */
    line-height: 1.6 !important;
    min-height: 60px !important;
    height: auto !important;
    padding-top: 0.65rem !important;
    padding-bottom: 0.65rem !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
    box-sizing: border-box !important;

    overflow: visible !important;
    transform: none !important;
}

/* Specific smaller override for modal inputs to ensure visibility */
.modal .form-control,
.modal-dialog .form-control {
    min-height: 64px !important;
    line-height: 1.6 !important;
    padding-top: 0.7rem !important;
    padding-bottom: 0.7rem !important;
}

/* Ensure ancestors do not clip */
.form-group, .input-wrapper, .modal, .modal-dialog, .modal-content, .card, .card-body, .container, .row {
    overflow: visible !important;
    transform: none !important;
}

/* Small screens: keep larger spacing but allow fit */
@media (max-width: 575.98px) {
    input[type="text"], input[type="email"], input[type="password"], textarea, select, .form-control {
        min-height: 56px !important;
        line-height: 1.45 !important;
        padding-top: 0.6rem !important;
        padding-bottom: 0.6rem !important;
    }
}

/* Manage area: global RWD & layout improvements */
/* Scope: affect pages under /Manage - applied globally in Manage layout */

/* Limit main content width and center on large screens for readability */
@media (min-width: 1200px) {
    .container-fluid {
        max-width: 1200px;
        margin: 0 auto;
        padding-left: 16px;
        padding-right: 16px;
    }
}

/* Sidebar adjustments: allow overlay behavior on smaller viewports */
@media (max-width: 991.98px) {
    .sidebar {
        position: fixed !important;
        left: 0;
        top: 0;
        height: 100vh;
        transform: translateX(-100%);
        transition: transform 0.25s ease;
        z-index: 1040;
        width: 240px !important;
    }
    .sidebar.show {
        transform: translateX(0) !important;
    }
    /* push content under topbar; content wrapper should take full width */
    #content-wrapper {
        margin-left: 0 !important;
    }
    /* dim backdrop when sidebar open (if site JS adds .show) */
    .sidebar-backdrop {
        position: fixed;
        inset: 0;
        background: rgba(0,0,0,0.35);
        z-index: 1035;
    }
}

/* Ensure topbar and page header don't reserve excessive space on mobile */
@media (max-width: 575.98px) {
    .topbar, .header-container {
        padding-left: 8px;
        padding-right: 8px;
    }
    .back-headers { font-size: 1.1rem; }
}

/* Responsive tables: allow them to fit and reduce row padding on small screens */
.table-container {
    overflow-x: auto;
}
.table-container table {
    width: 100%;
    border-collapse: collapse;
}
.table-container .data-table td,
.table-container .data-table th {
    padding: 8px; /* reduce padding for mobile */
}
@media (max-width: 575.98px) {
    .table-container .data-table th,
    .table-container .data-table td {
        display: block;
        width: 100%;
        box-sizing: border-box;
        text-align: left;
        padding-left: 12px;
        padding-right: 12px;
    }
    .table-container .data-table thead {
        display: none; /* stack rows for better mobile readability */
    }
    .table-container .data-table tbody tr {
        margin-bottom: 12px;
        display: block;
        border-radius: 6px;
        background: #fff;
        box-shadow: 0 1px 2px rgba(0,0,0,0.04);
        overflow: hidden;
    }
}

/* Modals: use internal scroll for tall content and cap width on small screens */
.modal-dialog {
    max-width: 100%;
}
.modal-content {
    max-height: 80vh;
    overflow: hidden;
}
.modal-body {
    overflow-y: auto;
    padding-right: 12px;
}

/* Compact utilities for Manage pages */
.manage-compact .form-group { margin-bottom: 8px; }
.manage-compact .btn { padding: 6px 12px; }

/* Ensure images and media scale */
img, .img-fluid { max-width: 100%; height: auto; }

/* Reduce large empty gutters introduced by some page-specific CSS */
.promotion-container, .unified-edit-container {
    padding-top: 8px !important;
    padding-bottom: 12px !important;
}

/* Accessible hit area for small buttons */
.btn { min-height: 36px; }

/* Make sure search/filter rows remain compact on narrow screens */
@media (max-width: 767.98px) {
    .filter-section { gap: 8px; }
    .search-button-container { margin-top: 4px; }
}

/* small refinement: ensure no excessive page bottom whitespace */
body { margin-bottom: 24px; }
/* Compact input utility: short outer box but safe descenders */
.compact-input {
    display: flex;
    align-items: center; /* vertically center label + input */
    gap: 8px;
    width: 100%;
}

.compact-input label {
    margin-bottom: 0;
    white-space: nowrap;
    flex: 0 0 auto;
    color: #68442B;
    width: 110px; /* reasonable label width, override per page if needed */
}

/* compact input-with-icon: keeps icon and text separate, small outer height */
.input-with-icon.compact {
    position: relative;
    width: 100%;
    max-width: 420px;
}

.input-with-icon.compact .search-icon {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #C3AD9C;
    font-size: 14px;
    z-index: 2;
    pointer-events: none;
}

.input-with-icon.compact .form-input {
    width: 100%;
    padding: 6px 10px 6px 38px; /* left padding leaves room for icon */
    min-height: 36px; /* compact outer height */
    height: auto !important;
    line-height: 1.25; /* enough for descenders */
    border-radius: 8px;
    box-sizing: border-box;
    overflow: visible !important; /* ensure descenders not clipped */
    font-family: Arial, "Segoe UI", system-ui, -apple-system, "Noto Sans TC", "Microsoft JhengHei", sans-serif !important;
    -webkit-font-smoothing: subpixel-antialiased !important;
}

/* Make sure parent containers don't clip descenders */
.compact-input, .input-with-icon.compact, .form-group, .modal-body, .card-body {
    overflow: visible !important;
    transform: none !important;
}

/* Slightly reduce spacing on very small screens */
@media (max-width: 575.98px) {
    .compact-input label { width: 100%; }
    .compact-input { flex-direction: column; align-items: stretch; gap: 6px; }
    .input-with-icon.compact .form-input { min-height: 40px; padding-left: 42px; }
}