@charset "utf-8";
.moca-frame > div { display: flex; flex-direction: column; flex: 1; width: 100%; height: 100%; overflow: hidden; }
.moca_table_search { display: block; width: 100%; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius-md); padding: 15px; flex-shrink: 0; }
div[data-m-type="form"].moca_table_search { padding: 0; overflow: hidden; }
.moca_table_search [data-m-body="tbody"] { display: flex; flex-direction: column; gap: var(--m-search-gap-row); }
:root { --m-search-gap-label: 10px; --m-search-gap-set: 20px; --m-search-gap-row: 6px; }
.moca_table_search [data-m-row="tr"] { display: flex; align-items: center; flex-wrap: wrap; gap: var(--m-search-gap-row) var(--m-search-gap-set); }
.moca_table_search .moca_form_set { display: flex; align-items: center; gap: var(--m-search-gap-set); flex-wrap: nowrap; }
:root { --m-th-label-width: 60px; }
:root { --m-edge: 15px; }
.moca_table_search [data-m-cell="th"] { display: flex; align-items: center; justify-content: flex-start; width: auto; flex-shrink: 0; height: 28px; font-size: 12px; color: var(--c-text-sub); white-space: nowrap; margin-right: calc(var(--m-search-gap-label) - var(--m-search-gap-set)); font-weight: bold;}
.moca_table_search [data-m-cell="td"] { display: flex; align-items: center; gap: 8px; height: 28px; }
.moca_table_search [data-m-cell="td"] button.btn_search { height: var(--m-field-height); padding: 0 16px; background: var(--c-primary); color: var(--c-white); border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; letter-spacing: 0.3px; transition: background 0.15s; box-shadow: var(--shadow-sm); }
.moca_table_cont [data-m-cell="td"] button:hover { background: var(--c-primary-dark); }
.moca_table_search [data-m-cell="td"] button.btn_search, .btn_search {height: var(--m-field-height); padding: 0 16px; background: unset; border: 1px solid var(--c-primary); color: var(--c-primary); box-shadow: none;}
.moca_table_search [data-m-cell="td"] button.btn_search:hover, .btn_search:hover {background: var(--c-primary-light);}
.moca_grid { position: relative;  display: flex; flex-direction: column; width: 100%; background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--radius-md); box-shadow: var(--shadow-md); overflow: hidden; }
.moca_grid.fauto { flex: 1; min-height: 0; }
.moca_grid_toolbar { display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; height: 38px; background: var(--c-grid-toolbar); border-bottom: 1px solid var(--c-border); padding: 0 10px; }
.moca_grid_toolbar > .lta { display: flex; align-items: center; gap: 6px; flex: 1; min-width: 0; overflow: hidden; min-width: 0; overflow: hidden; }
.grid_title { font-size: 14px; font-weight: 700; color: var(--c-text); white-space: nowrap; }
.moca_table_title { font-size: 12px; color: var(--c-text-muted); white-space: nowrap; }
.grid_total { font-size: 12px; color: var(--c-text-muted); white-space: nowrap; }
.grid_total .txt_blue { color: var(--c-primary); font-weight: 700; }
.moca_grid_toolbar > .rta { display: flex; align-items: center; gap: 4px; flex-shrink: 0; flex-shrink: 0; }
.moca_grid_toolbar .button { width: 28px; height: 28px; border-radius: var(--radius-sm); background: var(--c-white) no-repeat center / 16px 16px; border: 1px solid var(--c-border); transition: all 0.15s; cursor: pointer; box-shadow: var(--shadow-sm); }
.moca_grid_toolbar .button:hover { background-color: var(--c-primary-light); border-color: var(--c-primary-mid); }
.moca_grid_toolbar .button:active { background-color: var(--c-primary-mid); }
.moca_grid_toolbar .button:disabled { opacity: .4; cursor: not-allowed; box-shadow: none; background-color: var(--c-bg); border-color: var(--c-border); }
.button.add_row { background-image: url('../images/icon_add_row.svg'); }
.button.del_row { background-image: url('../images/icon_del_row.svg'); }
.button.excel_dn { background-image: url('../images/icon_excel_dn.svg'); }
.button.excel_up { background-image: url('../images/icon_excel_up.svg'); }
.button.grid_full { background-image: url('../images/icon_grid_full.svg'); }
.button.grid_default { background-image: url('../images/icon_grid_reduce.svg'); }
.button.grid_detail { background-image: url('../images/icon_grid_detail.svg'); }
.button.read_next { background-image: url('../images/icon_read_next.svg'); }
.button.grid_dblclick { background-image: url('../images/icon_grid_dblclick.svg'); }
.button.grid_fold { background-image: url('../images/icon_grid_fold.svg'); }
.button.grid_unfold { background-image: url('../images/icon_grid_fold.svg'); transform: scaleY(-1); }
.button.col_showhide { background-image: url('../images/icon_col_showhide.svg'); }
.button.btn_close { background-image: url('../images/icon_close.svg'); }
.button.grid_detail_close { background-image: url('../images/icon_grid_detail_close.svg'); }
.button.colTh1 { background-image: url('../images/icon_col_th1.svg'); }
.button.colTh2 { background-image: url('../images/icon_col_th2.svg'); }
.button.colTh3 { background-image: url('../images/icon_col_th3.svg'); }
.tb_fold_auto { display: none; }
.tb_tools_auto { display: none; }
.moca_grid_toolbar .button.grid_tools { background-image: url('../images/icon_grid_tools.svg'); }
.moca_grid_tools_overlay { position: fixed; inset: 0; z-index: 8500; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(0,0,0,0.45); }
.moca_grid_tools { width: 100%; max-width: 420px; max-height: 80vh; display: flex; flex-direction: column; overflow: hidden; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius-md); box-shadow: var(--shadow-md); }
.moca_grid_tools .mgt_head { flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; background: var(--c-grid-toolbar); border-bottom: 1px solid var(--c-border); }
.moca_grid_tools .mgt_title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 700; color: var(--c-text); }
.moca_grid_tools .mgt_close { flex: 0 0 auto; width: 28px; height: 28px; border: 1px solid var(--c-border); border-radius: var(--radius-sm); background: var(--c-bg); color: var(--c-text-sub); font-size: 13px; cursor: pointer; }
.moca_grid_tools .mgt_body { flex: 1 1 auto; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 12px; padding: 12px; }
.moca_grid_tools .mgt_controls { display: flex; flex-direction: column; gap: 10px; }
.moca_grid_tools .mgt_controls > * { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; word-break: keep-all; }
.moca_grid_tools .mgt_btns { display: grid; grid-template-columns: repeat(auto-fill, minmax(88px, 1fr)); gap: 8px; border-top: 1px solid var(--c-border); padding: 12px 0 0; height: auto; min-height: 0; background: transparent; border-bottom: 0; }
.moca_grid_tools .mgt_item { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 8px 4px; border: 1px solid var(--c-border); border-radius: var(--radius-sm); background: var(--c-bg); }
.moca_grid_tools .mgt_item .button { display: inline-block; }
.moca_grid_tools .mgt_item_label { font-size: 11px; line-height: 1.3; color: var(--c-text-sub); text-align: center; word-break: keep-all; }
.moca_grid_toolbar .grid_btn { display: flex; align-items: center; }
.moca_grid_toolbar .grid_btn button { height: 28px; padding: 0 12px; color: var(--c-primary-dark); border: 1px solid var(--c-primary); border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; white-space: nowrap; cursor: pointer; transition: background 0.15s, border-color 0.15s, color 0.15s; box-shadow: var(--shadow-sm); }
.moca_grid_toolbar .grid_btn button:hover { background: var(--c-primary-light); }
.moca_grid_toolbar .btn_save { height: 28px; padding: 0 14px; background: var(--c-primary); color: var(--c-white); border: 1px solid var(--c-primary-dark); border-radius: var(--radius-sm); font-size: 12px; font-weight: 600; white-space: nowrap; cursor: pointer; transition: background 0.15s; box-shadow: var(--shadow-sm); }
.moca_grid_toolbar .btn_save:hover { background: var(--c-primary-dark); }
.moca_grid_toolbar .grid_btn button:disabled { background: var(--c-bg); color: var(--c-text-muted); border-color: var(--c-border); box-shadow: none; cursor: not-allowed; }
td[data-m-celltype="button"] .grid_btn { display: flex; align-items: center; justify-content: center; }
td[data-m-celltype="button"] .grid_btn button { display: inline-flex; align-items: center; justify-content: center; height: 24px; padding: 0 12px; border: 1px solid var(--c-primary); border-radius: var(--radius-sm, 4px); background: transparent; color: var(--c-primary); font-size: 12px; font-weight: 600; line-height: 1; white-space: nowrap; cursor: pointer; transition: background .15s, color .15s; }
td[data-m-celltype="button"] .grid_btn button:hover { background: var(--c-primary); color: var(--c-on-primary, #fff); }
td[data-m-celltype="button"] .grid_btn button:focus-visible { outline: 2px solid var(--c-primary); outline-offset: 2px; }
td[data-m-celltype="button"] .grid_btn button:disabled { background: transparent; color: var(--c-text-muted); border-color: var(--c-border); cursor: not-allowed; }
.moca_grid_toolbar .grid_label_span { display: flex; align-items: center; gap: 5px; font-size: 12px; color: var(--c-text-sub); white-space: nowrap; flex-shrink: 0; }
.moca_grid_toolbar .grid_label_span .label { font-weight: 600; color: var(--c-text-sub); }
.moca_grid_toolbar .grid_label_span .value { font-weight: 700; color: var(--c-text) !important; font-variant-numeric: tabular-nums; }
.moca_grid_toolbar .grid_label_span .txt_green { color: var(--c-success) !important; }
.moca_grid_toolbar .grid_label_span .txt_blue  { color: var(--c-primary) !important; }
.moca_grid_toolbar .grid_label_span .txt_red   { color: var(--c-danger)  !important; }
.moca_grid_toolbar .grid_toolbar_input { height: 28px; width: 100px; padding: 0 8px; }
.moca_grid_toolbar .grid_toolbar_selectbox { flex-shrink: 0; }
.moca_grid_toolbar .grid_toolbar_selectbox select { height: 28px; padding-top: 0; padding-bottom: 0; }
.moca_grid_toolbar .grid_toolbar_checkbox { display: flex; align-items: center; }
.moca_grid_toolbar .grid_toolbar_checkbox .moca_checkbox_label { font-size: 12px; color: var(--c-text-body); cursor: pointer; }
.moca_grid_list { position: relative;  flex: 1; min-height: 0; overflow: hidden; }
.moca_grid_body { position: absolute; top: 0; left: 0; right: 9px; bottom: 0; overflow-x: auto; overflow-y: hidden; }
.moca_grid_body table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.moca_scrollY_type1 { position: absolute; top: 0; right: 0; width: 9px; bottom: 0; overflow-y: scroll; overflow-x: hidden; }
.moca_scrollY_type1 { scrollbar-width: none; }
.moca_scrollY_type1::-webkit-scrollbar { display: none; }
.moca_grid_swipethumb { position: absolute; top: 0; right: 2px; width: 6px; border-radius: 3px;
background: rgba(120, 130, 145, 0.65); opacity: 0; transition: opacity 0.25s;
cursor: pointer; touch-action: none; z-index: 20; }
.moca_grid_swipethumb:hover { background: rgba(100, 112, 130, 0.85); }
*/
.moca_grid_body thead { position: sticky; top: 0; z-index: 10; }
.moca_grid_body thead tr { background: var(--c-grid-th); }
.moca_grid_body thead th { height: 32px; padding: 0 12px; font-size: 12px; font-weight: 700; color: var(--c-text-sub); border-right: 1px solid var(--c-border); border-bottom: 1px solid var(--c-border); text-align: center; overflow: hidden; user-select: none; white-space: nowrap; position: relative; }
.moca_grid_body thead th:last-child { border-right: none; }
.moca_grid_body thead th .moca_grid_sort_box { display: flex; align-items: center; justify-content: center; gap: 3px; height: 100%; overflow: hidden; }
.moca_grid_body thead th .moca_grid_sort_box > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.moca_grid_sort_btn { flex-shrink: 0; width: 14px; height: 14px; background: no-repeat center / 12px; background-image: url('../images/icon_sort.svg'); border: none; cursor: pointer; font-size: 0; color: transparent; padding: 0; transition: opacity 0.12s; }
.moca_grid_sort_btn:hover { background-image: url('../images/icon_sort_hover.svg'); }
.moca_grid_sort_btn.sort_asc { background-image: url('../images/icon_sort_asc.svg'); }
.moca_grid_sort_btn.sort_desc { background-image: url('../images/icon_sort_desc.svg'); }
.moca_grid_body thead th .moca_grid_filter_btn { flex-shrink: 0; width: 14px; height: 14px; background-color: var(--c-text-muted); -webkit-mask: url('../images/icon_filter.svg') no-repeat center / 12px; mask: url('../images/icon_filter.svg') no-repeat center / 12px; border: none; cursor: pointer; font-size: 0; color: transparent; padding: 0; }
.moca_grid_body thead th .moca_grid_filter_btn:hover { background-color: var(--c-primary); }
.moca_grid_body thead th[data-m-filterapplied="true"] .moca_grid_filter_btn,
.moca_grid_body thead th[data-m-filterapplied="true"] .moca_grid_filter_btn:hover { background-color: var(--c-primary); -webkit-mask-image: url('../images/icon_filter_on.svg'); mask-image: url('../images/icon_filter_on.svg'); }
.moca_grid_body thead th .moca_grid_sort_box > i { display: none; }
.groupbar { position: absolute; right: 0; top: 15%; width: 4px; height: 70%; cursor: col-resize; background: transparent; }
.groupbar:hover { background: var(--c-primary-mid); border-radius: 2px; }
.moca_grid_body thead th:last-child > .groupbar { display: none; }
.moca_grid_body thead th.req::after { content: ' *'; color: var(--c-danger); font-size: 11px; }
.moca_checkbox_input { -webkit-appearance: none; appearance: none; width: 14px; height: 14px; border: 1.5px solid var(--c-white); border-radius: 2px; background: var(--c-surface); cursor: pointer; flex-shrink: 0; }
.moca_checkbox_input:checked { background-color: var(--c-surface); background-image: url('../images/icon_check.svg'); background-repeat: no-repeat; background-position: center; background-size: 10px 10px; border-color: var(--c-white); }
.moca_checkbox_input:disabled { opacity: 0.5; cursor: default; }
.moca_checkbox_grid { display: flex; align-items: center; justify-content: center;}
.moca_checkbox_grid .moca_checkbox_input { width: 14px; height: 14px; cursor: pointer; accent-color: var(--c-primary); }
.moca_checkbox_grid .moca_checkbox_label { font-size: 0; line-height: 0; }
.moca_grid_body tbody tr { border-bottom: 1px solid var(--c-border); transition: background 0.08s; }
.moca_grid_body tbody tr:nth-child(even) { background: var(--c-grid-row-alt); }
.moca_grid_body tbody tr:hover { background: var(--c-grid-hover) !important; }
.moca_grid_body tbody tr.selected { background: var(--c-grid-selected) !important; }
.moca_grid_body tbody tr.selected td { color: #f1f5f9 !important; }
.moca_grid_body tbody td { height: 26px; padding: 0 2px; font-size: 12px; color: var(--c-text); border-right: 1px solid var(--c-border); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
.moca_grid_body tbody td:last-child { border-right: none; }
.moca_grid_body tbody td.tal[data-m-readonly="true"][data-m-celltype="input"]:not(.moca_cell_slim) { padding-left: 8px; }
.moca_grid_body tbody td { container-type: scroll-state; }
.moca_grid_body tbody td.moca_cell_slim { container-type: normal; }
.moca_grid_body tbody td > div:not(.moca_checkbox_grid):not(.moca_ibn) { white-space: nowrap; }
.moca_grid_body tbody td > div.moca_radio_grid {display: flex; gap: 5px;}
@container scroll-state(scrollable: right) {
.moca_grid_body tbody td > div:not(.moca_checkbox_grid):not(.moca_ibn) {
-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 14px), transparent);
mask-image: linear-gradient(to right, #000 calc(100% - 14px), transparent);
-webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
-webkit-mask-size: 100% 100%; mask-size: 100% 100%;
}
}
@supports not (container-type: scroll-state) {
.moca_grid_body tbody td:not(.moca_cell_slim) > div:not(.moca_checkbox_grid):not(.moca_ibn) {
overflow: hidden;
}
.moca_grid_body tbody td[data-m-fade] > div:not(.moca_checkbox_grid):not(.moca_ibn) {
-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 14px), transparent);
mask-image: linear-gradient(to right, #000 calc(100% - 14px), transparent);
}
}
.moca_cell_tooltip { position: fixed; max-width: 60vw; padding: 6px 10px; background: #2B6BE0; color: #fff; border: 1px solid #4D8DFF; border-radius: var(--radius-sm); font-size: 12px; font-weight: 500; line-height: 1.5; white-space: pre-wrap; word-break: break-all; box-shadow: 0 4px 14px rgba(0,0,0,0.55); z-index: 99980; opacity: 0; pointer-events: none; transition: opacity 0.12s; }
.moca_cell_tooltip.visible { opacity: 1; }
.moca_grid_body thead th.moca_cell_slim, .moca_grid_body tbody td.moca_cell_slim { padding-left: 4px; padding-right: 4px; }
.moca_grid_body tbody td.moca_cell_slim input { padding: 0; text-align: center; }
.moca_grid_body thead th.moca_cell_slim .moca_checkbox_grid, .moca_grid_body tbody td.moca_cell_slim .moca_checkbox_grid { gap: 0; }
.moca_grid_body thead th .moca_th_icon { width: 14px; height: 14px; display: block; }
.moca_grid_body tbody tr.moca_grid_agg,
.moca_grid_body tbody tr.moca_grid_agg:hover { background: var(--c-grid-agg-bg) !important; }
.moca_grid_body tbody tr.moca_grid_agg td { color: var(--c-grid-agg-text); font-weight: 600; }
.moca_grid_body tbody tr.moca_grid_agg_total,
.moca_grid_body tbody tr.moca_grid_agg_total:hover { background: var(--c-grid-agg-total-bg) !important; }
.moca_grid_body tbody tr.moca_grid_agg_total td { color: var(--c-grid-agg-total-text); font-weight: 700; border-top: 1px solid var(--c-border-dark); }
.moca_grid_body tbody tr.moca_grid_agg_total td { position: sticky; bottom: 0; z-index: 3; background: var(--c-grid-agg-total-bg); box-shadow: 0 -1px 0 var(--c-border-dark); }
.moca_grid_body tbody tr.moca_grid_agg td > div { font-weight: inherit; }
.moca_grid_body tbody td.moca_grid_cellmerged { background: var(--c-surface); }
.moca_grid_body tbody tr:not(:hover):not(.selected) td.moca_grid_cellmergecol { background: var(--c-surface); }
.moca_grid_ippcell, .moca_grid_calcell { position: relative; display: flex; align-items: center; width: 100%; }
.moca_grid_ippcell input { padding-right: 26px; }
.moca_grid_calcell input { flex: 1 1 auto; min-width: 0; }
.moca_grid_calcell .moca_ica_btn { margin-left: 2px; }
.moca_grid_body tbody td .moca_grid_calcell { height: 22px; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); background: var(--c-bg-input); box-sizing: border-box; transition: border-color 0.15s, box-shadow 0.15s; }
.moca_grid_body tbody td .moca_grid_calcell:focus-within { border-color: var(--c-primary); box-shadow: 0 0 0 2px var(--c-primary-pale); }
.moca_grid_body tbody td .moca_grid_calcell > input.moca_input,
.moca_grid_body tbody td .moca_grid_calcell > input.moca_input:focus { border: 0; background: none; box-shadow: none; }
.moca_grid_body tbody td.tac > div.moca_radio_grid { justify-content: center; }
.moca_grid_body tbody td.tar > div.moca_radio_grid { justify-content: flex-end; }
.moca_grid_body tbody td.tac > .moca_grid_calcell input { text-align: center; }
.moca_grid_body tbody td.tar > .moca_grid_calcell input { text-align: right; }
.moca_grid_body tbody td[data-status="C"] { color: var(--c-primary); font-weight: 600; }
.moca_grid_body tbody td[data-status="U"] { color: var(--c-warning); font-weight: 600; }
.moca_grid_body tbody td[data-status="D"] { color: var(--c-danger); text-decoration: line-through; }
.moca_grid_body tbody td:not(.moca_cell_slim):has(> input[type="text"]), .moca_grid_body tbody td:not(.moca_cell_slim):has(> .moca_selectbox) { padding: 0 2px; }
.moca_grid_body tbody td > .moca_selectbox { width: 100%; }
.moca_grid_body tbody td input[type="text"], .moca_grid_body tbody td input:not([type]) { width: 100%; min-width: 0; height: 22px; padding: 0 8px; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); background: var(--c-bg-input); color: var(--c-text); font-size: 12px; outline: none; text-overflow: ellipsis; box-sizing: border-box; transition: border-color 0.15s, box-shadow 0.15s; }
.moca_grid_body tbody td input:focus { background: var(--c-bg-input-focus); border-color: var(--c-primary); box-shadow: 0 0 0 2px var(--c-primary-pale); color: var(--c-text) !important; }
.moca_grid_body tbody td input[readonly] { cursor: default; }
.moca_grid_body tbody td input[type="checkbox"] { -webkit-appearance: none; appearance: none; width: 14px; height: 14px; border: 1.5px solid var(--c-white); border-radius: 2px; background: var(--c-surface); cursor: pointer; flex-shrink: 0; vertical-align: middle; }
.moca_grid_body tbody td input[type="checkbox"]:checked { background-color: var(--c-surface); background-image: url('../images/icon_check.svg'); background-repeat: no-repeat; background-position: center; background-size: 10px 10px; border-color: var(--c-white); }
.moca_grid_body tbody td input[type="radio"] { -webkit-appearance: none; appearance: none; width: 14px; height: 14px; border: 1.5px solid var(--c-white); border-radius: 50%; background: var(--c-surface); cursor: pointer; flex-shrink: 0; vertical-align: middle; }
.moca_grid_body tbody td input[type="radio"]:checked { border-color: var(--c-white); background: radial-gradient(circle at center, var(--c-white) 31%, var(--c-surface) 31%); }
.moca_grid_body tbody td .moca_checkbox_label { font-size: 0; }
.moca_grid_body tbody td .moca_checkbox_grid { display: flex; align-items: center; justify-content: center; }
.moca_grid_body th[id="H_DEL_CHK"] .moca_checkbox_input, .moca_grid_body td[id="DEL_CHK"] input[type="checkbox"] { -webkit-appearance: none; appearance: none; width: 14px; height: 14px; border: none; border-radius: 0; background-color: var(--c-text-body); -webkit-mask: url('../images/icon_del_x.svg') no-repeat center / 12px 12px; mask: url('../images/icon_del_x.svg') no-repeat center / 12px 12px; cursor: pointer; }
.moca_grid_body th[id="H_DEL_CHK"] .moca_checkbox_input:hover, .moca_grid_body td[id="DEL_CHK"] input[type="checkbox"]:hover { background-color: var(--c-text-sub); }
.moca_grid_body th[id="H_DEL_CHK"] .moca_checkbox_input:checked, .moca_grid_body td[id="DEL_CHK"] input[type="checkbox"]:checked { background-color: var(--c-primary); background-image: none; -webkit-mask: url('../images/icon_del_x_badge.svg') no-repeat center / 14px 14px; mask: url('../images/icon_del_x_badge.svg') no-repeat center / 14px 14px; animation: moca_delchk_pop 0.18s ease-out; }
@keyframes moca_delchk_pop { 0% { transform: scale(1); } 50% { transform: scale(1.35); } 100% { transform: scale(1); } }
.moca_grid_paging { flex-shrink: 0; display: flex; align-items: center; justify-content: center; gap: 3px; height: 36px; background: transparent; border-top: 1px solid var(--c-border); padding: 0 10px; }
.moca_grid_paging .num { display: inline-flex; align-items: center; gap: 3px; }
.moca_grid_paging button { min-width: 26px; height: 26px; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); background: transparent no-repeat center / 13px; cursor: pointer; font-size: 11px; font-weight: 600; color: var(--c-text-sub); padding: 0 6px; transition: all 0.12s; }
.moca_grid_paging button:hover { background-color: var(--c-primary-light); border-color: var(--c-primary); color: var(--c-primary); }
.moca_grid_paging button.on { border-color: var(--c-primary-dark); color: var(--c-primary);}
.moca_grid_paging button.first { background-image: url('../images/icon_page_first.svg'); font-size: 0; color: transparent; }
.moca_grid_paging button.prev { background-image: url('../images/icon_page_prev.svg'); font-size: 0; color: transparent; }
.moca_grid_paging button.next { background-image: url('../images/icon_page_next.svg'); font-size: 0; color: transparent; }
.moca_grid_paging button.last { background-image: url('../images/icon_page_last.svg'); font-size: 0; color: transparent; }
.moca_input { display: inline-flex; align-items: center; min-width: 100px; }
:root { --m-field-width: 140px; --m-field-height: 26px; }
div[data-m-type="input"].moca_input { width: var(--m-field-width); }
.moca_input input,
.gridDetail td div[contenteditable],
.moca_grid_toolbar .grid_toolbar_input,
[data-m-type="inputPop"] input,
[data-m-type="combobox"] .filterheader input.moca_input,
.moca_combobox .filterheader input.moca_input,
.itemTable .filterheader input[type="text"].moca_input,
.calendar_ipt .moca_input {
border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm);
background: var(--c-bg-input); color: var(--c-text);
font-size: 12px; font-family: inherit; outline: none; box-sizing: border-box;
transition: border-color 0.15s, box-shadow 0.15s;
}
.moca_input input:focus,
.gridDetail td div[contenteditable]:focus,
.moca_grid_toolbar .grid_toolbar_input:focus,
[data-m-type="inputPop"] input:focus,
[data-m-type="combobox"] .filterheader input.moca_input:focus,
.moca_combobox .filterheader input.moca_input:focus,
.itemTable .filterheader input[type="text"].moca_input:focus,
.calendar_ipt .moca_input:focus {
border-color: var(--c-primary); background: var(--c-bg-input-focus);
box-shadow: 0 0 0 2px var(--c-primary-pale);
}
.moca_input input[readonly],
.gridDetail td div[contenteditable="false"],
[data-m-type="inputPop"] input[readonly],
[data-m-type="combobox"] .filterheader input.moca_input[readonly] {
background: var(--c-bg-input-readonly); color: var(--c-text-muted);
}
.moca_input input, .gridDetail td div[contenteditable] { width: 100%; padding: 5px 8px; }
.moca_input input { height: var(--m-field-height); }
[data-m-type="inputPop"] { display: inline-flex; align-items: center; min-width: 100px; position: relative; }
[data-m-type="inputPop"] input { flex: 1 1 auto; min-width: 0; width: 100%; height: var(--m-field-height); padding: 5px 30px 5px 8px; }
div[data-m-type="inputPop"] { width: var(--m-field-width); }
.moca_ipp_btn { position: absolute; right: 1px; top: 50%; transform: translateY(-50%); width: 24px; height: 24px; border: none; background: transparent no-repeat center / 14px; background-image: url('../images/icon_search.svg'); cursor: pointer; padding: 0; z-index: 1; opacity: 0.75; transition: opacity 0.12s; }
.moca_ipp_btn::before { content: ''; position: absolute; left: 0; top: 20%; width: 1px; height: 60%; background: var(--c-border); }
.moca_ipp_btn:hover { opacity: 1; }
.moca_ipp_btn:disabled { opacity: 0.3; cursor: default; }
.moca_selectbox select { width: 100%; height: var(--m-field-height); padding: 4px 8px; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); font-size: 12px; font-family: inherit; color: var(--c-text); background: var(--c-white); outline: none; transition: border-color 0.15s, box-shadow 0.15s; box-sizing: border-box; }
.moca_selectbox select:focus, .moca_selectbox select:focus { border-color: var(--c-primary); box-shadow: 0 0 0 3px rgba(35,168,242,0.12); }
.moca_selectbox select:disabled { background: var(--c-bg); color: var(--c-text-muted); }
.checkboxGroup { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px; }
.checkboxGroup.vertical { display: grid; grid-template-columns: auto minmax(0, 1fr);
align-items: center; column-gap: 6px; row-gap: 7px; }
.checkboxGroup .moca_checkbox_input { -webkit-appearance: none; appearance: none; width: 14px; height: 14px; border: 1.5px solid var(--c-white); border-radius: 2px; background: var(--c-surface); cursor: pointer; flex-shrink: 0; }
.checkboxGroup .moca_checkbox_input:checked { background-color: var(--c-surface); background-image: url('../images/icon_check.svg'); background-repeat: no-repeat; background-position: center; background-size: 10px 10px; border-color: var(--c-white); }
.checkboxGroup .moca_checkbox_label { font-size: 12px; color: var(--c-text-body); cursor: pointer; }
.checkboxGroup .moca_checkbox_input:disabled + .moca_checkbox_label { opacity: 0.5; cursor: default; }
.checkboxGroup, [data-m-type="radio"] { min-width: 0; max-width: 100%; }
.moca_check_item { display: inline-flex; align-items: center; gap: 4px; min-width: 0; max-width: 100%; }
[data-m-type="radio"] .moca_check_item { gap: 2px; }
.moca_check_item > label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.checkboxGroup.vertical > .moca_check_item { display: contents; }
[data-m-type="radio"], .grid_toolbar_radio { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 2px; }
:is([data-m-type="radio"], .grid_toolbar_radio) input[type="radio"] { -webkit-appearance: none; appearance: none; width: 20px; height: 20px; border: 1.5px solid var(--c-border); border-radius: 50%; background: var(--c-bg-input); cursor: pointer; flex-shrink: 0; transition: border-color 0.15s, box-shadow 0.15s; }
:is([data-m-type="radio"], .grid_toolbar_radio) input[type="radio"]:hover { border-color: var(--c-primary); }
:is([data-m-type="radio"], .grid_toolbar_radio) input[type="radio"]:checked { border-color: var(--c-primary); background: radial-gradient(circle at center, var(--c-primary) 34%, var(--c-bg-input) 37%); box-shadow: 0 0 5px rgba(0,240,255,0.55); }
:is([data-m-type="radio"], .grid_toolbar_radio) label { font-size: 12px; color: var(--c-text-body); cursor: pointer; padding: 3px 10px; border-radius: 12px; border: 1px solid transparent; transition: background 0.15s, color 0.15s, border-color 0.15s; }
:is([data-m-type="radio"], .grid_toolbar_radio) label:hover { color: var(--c-primary); }
:is([data-m-type="radio"], .grid_toolbar_radio) input[type="radio"]:checked + label { background: var(--c-primary-light); border-color: var(--c-primary); color: var(--c-primary); font-weight: 600; }
[data-m-type="radio"].radio_sep { margin-left: 8px; padding-left: 18px; border-left: 1px solid var(--c-border); }
.mr15 { margin-right: 10px; }
.moca_toggle { display: inline-flex; align-items: center; gap: 6px; }
.moca_toggle .mtg_label { font-size: 12px; font-weight: 600; color: var(--c-text-sub); white-space: nowrap; user-select: none; }
.moca_toggle .mtg_switch { position: relative; width: 44px; height: 24px; padding: 0; border: 1px solid var(--c-primary); border-radius: 12px; background: var(--c-bg-input); cursor: pointer; flex-shrink: 0; transition: background 0.2s, border-color 0.2s; }
.moca_toggle .mtg_switch:disabled { opacity: 0.5; cursor: default; }
.moca_toggle .mtg_switch.mtg_on { background: var(--c-primary); border-color: var(--c-primary); }
.moca_toggle .mtg_knob { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: var(--c-surface); border: 1px solid var(--c-primary); box-sizing: border-box; transition: transform 0.2s, border-color 0.2s; }
.moca_toggle .mtg_switch.mtg_on .mtg_knob { transform: translateX(20px); }
.moca_toggle_theme .mtg_knob::before { content: ''; position: absolute; inset: 2px; background-color: var(--c-primary); -webkit-mask: url('../images/icon_theme_moon.svg') no-repeat center / contain; mask: url('../images/icon_theme_moon.svg') no-repeat center / contain; transition: background-color 0.2s; }
.moca_toggle_theme .mtg_switch.mtg_on .mtg_knob::before { -webkit-mask-image: url('../images/icon_theme_sun.svg'); mask-image: url('../images/icon_theme_sun.svg'); }
.moca_slider { display: flex; flex-direction: column; width: 100%; min-width: 0; gap: 5px; }
.moca_slider .msl_head { display: flex; align-items: center; justify-content: space-between; min-height: 22px; gap: 8px; }
.moca_slider .msl_label { color: var(--c-text-sub); font-size: 13px; font-weight: 600; }
.moca_slider .msl_value { margin-left: auto; color: var(--c-primary); font-size: 14px; font-weight: 700; }
.moca_slider .msl_input { width: 100%; height: 28px; margin: 0; padding: 0; border: 0; background: transparent; cursor: pointer; outline: none; -webkit-appearance: none; appearance: none; }
.moca_slider .msl_input::-webkit-slider-runnable-track { height: 6px; border: 1px solid var(--c-border-dark); border-radius: 999px; background: linear-gradient(to right, var(--c-primary) 0 var(--m-slider-percent), var(--c-bg-input) var(--m-slider-percent) 100%); }
.moca_slider .msl_input::-webkit-slider-thumb { width: 20px; height: 20px; margin-top: -7px; border: 2px solid var(--c-primary); border-radius: 50%; background: var(--c-surface); box-shadow: var(--shadow-sm); -webkit-appearance: none; appearance: none; }
.moca_slider .msl_input::-moz-range-track { height: 6px; border: 1px solid var(--c-border-dark); border-radius: 999px; background: var(--c-bg-input); box-sizing: border-box; }
.moca_slider .msl_input::-moz-range-progress { height: 6px; border-radius: 999px; background: var(--c-primary); }
.moca_slider .msl_input::-moz-range-thumb { width: 20px; height: 20px; border: 2px solid var(--c-primary); border-radius: 50%; background: var(--c-surface); box-shadow: var(--shadow-sm); }
.moca_slider .msl_input:focus-visible { outline: 2px solid var(--c-primary); outline-offset: 2px; border-radius: 999px; }
.moca_slider .msl_input:disabled { cursor: default; opacity: 0.55; }
.moca_slider .msl_scale { display: flex; justify-content: space-between; color: var(--c-text-muted); font-size: 12px; line-height: 1; }
[data-m-type="combobox"] { position: relative; display: inline-block; }
[data-m-type="combobox"] .filterheader,
.moca_combobox { width: var(--m-field-width); }
.moca_combobox .filterheader { position: relative; display: flex; align-items: center; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); background: var(--c-header-bg); padding: 2px 24px 2px 2px; box-sizing: border-box; transition: border-color 0.15s; }
[data-m-type="combobox"] .filterheader:focus-within,
.moca_combobox .filterheader:focus-within { border-color: var(--c-primary); }
[data-m-type="combobox"] .filterheader:not(:has(.btn_cmb)),
.moca_combobox .filterheader:not(:has(.btn_cmb)) { padding-right: 2px; }
[data-m-type="combobox"] .filterheader input.moca_input,
.moca_combobox .filterheader input.moca_input { display: block; width: 100%; height:100%; min-width: 0; padding: 2px 6px; }
[data-m-type="combobox"] .filterheader input.moca_input::placeholder,
.moca_combobox .filterheader input.moca_input::placeholder { color: var(--c-text-muted); font-size: 11px; }
div[data-m-type="combobox"] { width: 140px; }
.btn_cmb { position: absolute; right: 1px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; background: transparent no-repeat center / 12px; background-image: url('../images/icon_cmb_arrow.svg'); border: none; cursor: pointer; z-index: 1; padding: 0; }
.btn_cmb:hover { background-image: url('../images/icon_cmb_arrow_hover.svg'); }
[data-m-type="combobox"] .searchCmbTable,
.moca_combobox .searchCmbTable { position: absolute; top: calc(100% + 2px); left: 0; min-width: 100%; background: var(--c-header-bg); border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); box-shadow: var(--shadow-md); z-index: 6200; max-height: 200px; overflow-y: auto; }
div[data-m-type="combobox"] > .searchCmbTable { position: fixed; top: auto; left: auto; }
[data-m-type="combobox"] .searchCmbTable ul,
.moca_combobox .searchCmbTable ul { list-style: none; margin: 0; padding: 4px 0; }
[data-m-type="combobox"] .searchCmbTable li,
.moca_combobox .searchCmbTable li { padding: 6px 10px; font-size: 12px; color: var(--c-text-body); cursor: pointer; border-bottom: 1px solid var(--c-border); transition: background 0.1s; white-space: nowrap; }
[data-m-type="combobox"] .searchCmbTable li:last-child,
.moca_combobox .searchCmbTable li:last-child { border-bottom: none; }
[data-m-type="combobox"] .searchCmbTable li:hover,
.moca_combobox .searchCmbTable li:hover { background: var(--c-grid-hover); color: var(--c-primary); }
[data-m-type="combobox"] .searchCmbTable li.on,
.moca_combobox .searchCmbTable li.on { background: var(--c-primary); color: var(--c-on-primary); font-weight: 600; }
.moca_grid_body tbody td .moca_combobox, .moca_grid_body tbody td .moca_combobox .filterheader { height: 100%; }
.moca_grid_body tbody td .moca_combobox .searchCmbTable { position: fixed; top: auto; left: auto; }
.moca_grid_body tbody td .moca_selectbox > input.moca_select {
-webkit-appearance: none; appearance: none; cursor: pointer;
width: 100%; height: 100%;
border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); background: var(--c-bg-input); color: var(--c-text);
padding: 0 26px 0 8px;
background-image: url('../images/icon_cmb_arrow.svg'),
linear-gradient(var(--c-border), var(--c-border)),
linear-gradient(var(--c-surface), var(--c-surface));
background-repeat: no-repeat;
background-position: right 6px center, right 22px center, right center;
background-size: 12px 8px, 1px 60%, 22px calc(100% - 2px);
}
.moca_grid_body tbody td .moca_selectbox > input.moca_select:hover {
background-image: url('../images/icon_cmb_arrow_hover.svg'),
linear-gradient(var(--c-border), var(--c-border)),
linear-gradient(var(--c-surface), var(--c-surface));
}
.moca_grid_body tbody td .moca_selectbox > select.moca_select { height: 100%; box-sizing: border-box; }
.btn { display:inline-flex; align-items:center; justify-content:center; height:var(--m-field-height); padding:0 14px; border:1px solid transparent; border-radius:var(--radius-sm); font-size:12px; font-weight:600; cursor:pointer; white-space:nowrap; transition:background 0.15s, filter 0.15s, border-color 0.15s, color 0.15s; }
.moca_btn, button[data-m-type="button"] { display:inline-flex; align-items:center; justify-content:center; height:var(--m-field-height); padding:0 16px; border-radius:var(--radius-sm); font-size:12px; font-weight:600; line-height:1; cursor:pointer; white-space:nowrap; }
.moca_btn:disabled, button[data-m-type="button"]:disabled { opacity:.45; cursor:not-allowed; filter:none; box-shadow:none; pointer-events:none; }
.moca_grid_body tbody td .moca_btn, .moca_grid_body tbody td button[data-m-type="button"] { height:22px; padding:0 10px; font-size:12px; pointer-events:none; }
.moca_row { display: flex; align-items: stretch; gap: 8px; width: 100%; min-width: 0; }
.moca_row > .moca_textarea, .moca_row > [data-m-type="textarea"], .moca_row > .moca_input, .moca_row > .moca_selectbox { flex: 1; min-width: 0; }
.moca_row > .moca_btn, .moca_row > button[data-m-type="button"] { height: auto; align-self: stretch; }
.moca_btn_row { display: flex; gap: 6px; width: 100%; flex: 1 0 100%; min-width: 0; }
.moca_btn_row > .moca_btn, .moca_btn_row > button[data-m-type="button"] { flex: 1; }
div.moca_table_form [data-m-cell="td"]:has(> .moca_btn_row), .moca_row:has(> .moca_btn_row) { flex-wrap: wrap; }
div.moca_table_form [data-m-cell="td"]:has(> .moca_textarea, > [data-m-type="textarea"], > [data-m-type="ckeditor"]) { align-items: stretch; }
div.moca_table_form [data-m-cell="td"] > [data-m-type="ckeditor"], .moca_row > [data-m-type="ckeditor"] { flex: 1 1 auto; min-width: 0; width: 100%; }
.moca_layout_pane > [data-m-type="ckeditor"] { width: 100%; height: 100%; min-height: 0; }
.moca_cke_view .cke_top, .moca_cke_view .cke_bottom { display: none; }
div.moca_table_form [data-m-cell="td"]:has(> .moca_btn_row):has(> .moca_textarea, > [data-m-type="textarea"], > [data-m-type="ckeditor"]) { flex-direction: column; flex-wrap: nowrap; }
div.moca_table_form [data-m-cell="td"]:has(> .moca_btn_row):has(> .moca_textarea, > [data-m-type="textarea"], > [data-m-type="ckeditor"]) > .moca_btn_row { flex: 0 0 auto; }
div.moca_table_form [data-m-cell="td"]:has(> .moca_btn_row):has(> .moca_textarea, > [data-m-type="textarea"], > [data-m-type="ckeditor"]) > :is(.moca_textarea, [data-m-type="textarea"], [data-m-type="ckeditor"]) { flex: 1 1 auto; min-height: 0; }
div.moca_table_form [data-m-cell="td"]:has(> .moca_textarea, > [data-m-type="textarea"], > [data-m-type="ckeditor"]) > .moca_btn,
div.moca_table_form [data-m-cell="td"]:has(> .moca_textarea, > [data-m-type="textarea"], > [data-m-type="ckeditor"]) > button[data-m-type="button"] { height: auto; align-self: stretch; }
.btn_primary,  .bd_btn_edit                          { background:var(--c-primary); border:1px solid var(--c-primary); color:var(--c-bg); }
.btn_primary:hover,  .bd_btn_edit:hover               { filter:brightness(0.88); }
.btn_success, .bd_btn_save, .btn_save                { background:var(--c-success); border:1px solid var(--c-success); color:var(--c-bg); }
.btn_success:hover, .bd_btn_save:hover, .btn_save:hover { filter:brightness(0.88); }
.btn_danger,  .bd_btn_del                            { background:var(--c-danger);  border:1px solid var(--c-danger);  color:#fff; }
.btn_danger:hover,  .bd_btn_del:hover                 { filter:brightness(0.88); }
.btn_outline, .btn_search                            { background:transparent; border:1px solid var(--c-primary); color:var(--c-primary); }
.btn_outline:hover, .btn_search:hover                { background:var(--c-primary-light); }
.btn_neutral, .bd_btn_new, .bd_btn_close, .btn_close { background:transparent; border:1px solid var(--c-border-dark); color:var(--c-text-sub); }
.btn_muted                                            { background:var(--c-grid-hover); border:1px solid var(--c-border-dark); color:var(--c-text-sub); }
.btn_muted:hover                                      { background:var(--c-bg-hover); color:var(--c-text); }
.bd_btn_new   { background:transparent; border:1px solid var(--c-warning); color:var(--c-warning); }
.bd_btn_new:hover   { background:var(--c-grid-hover); filter:none; }
.bd_btn_edit  { background:transparent; border:1px solid var(--c-primary); color:var(--c-primary); }
.bd_btn_edit:hover  { background:var(--c-primary-light);  filter:none; }
.bd_btn_del   { background:transparent; border:1px solid var(--c-danger); color:var(--c-danger); }
.bd_btn_del:hover   { background:rgba(248,113,113,0.12); border-color:var(--c-danger); color:var(--c-danger); filter:none; }
.bd_btn_cancel       { background:transparent; border:1px solid var(--c-border-dark); color:var(--c-text-sub); }
.bd_btn_cancel:hover { background:var(--c-bg-hover); border-color:var(--c-text-sub); color:var(--c-text); filter:none; }
.moca_btn_confirm { background:var(--c-success); border:1px solid var(--c-success); color:var(--c-bg); }
.moca_btn_confirm:hover { filter:brightness(0.88); }
.moca_btn_cancel  { background:var(--c-grid-hover); border:1px solid var(--c-border-dark); color:var(--c-text-sub); }
.moca_btn_cancel:hover  { background:var(--c-bg-hover); color:var(--c-text); }
.btn_plus { width:24px; height:24px; background:var(--c-primary) no-repeat center/14px; background-image:url('../images/icon_plus_white.svg'); border-radius:var(--radius-sm); border:none; cursor:pointer; }
.moca_alert_overlay, .moca_confirm_overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.25); display: flex; align-items: center; justify-content: center; z-index: 9000; }
.moca_alert_box, .moca_confirm_box { background: var(--c-white); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); min-width: 320px; overflow: hidden; border: 1px solid var(--c-border); }
.moca_alert_title, .moca_confirm_title { background: var(--c-bg); color: var(--c-text); font-size: 13px; font-weight: 700; padding: 12px 16px; border-bottom: 1px solid var(--c-border); }
.moca_alert_msg, .moca_confirm_msg { padding: 20px 16px; font-size: 13px; color: var(--c-text); line-height: 1.6; }
.moca_alert_btn_area, .moca_confirm_btn_area { padding: 10px 16px; border-top: 1px solid var(--c-border); display: flex; justify-content: flex-end; gap: 6px; }
.moca_ica { display: inline-flex; align-items: center; gap: 3px; }
.moca_ica input { width: max(100px, calc(var(--m-ica-chars, 10) * 1ch + 14px)); height: calc(var(--m-field-height) - 2px);  padding: 0 7px; border: 0; text-align: center; border-radius: var(--radius-sm); font-size: 12px; outline: none; background: none; color: var(--c-text); box-sizing: border-box; transition: border-color 0.15s, box-shadow 0.15s; }
.moca_ica input:focus { border: 1px solid var(--c-primary); box-shadow: 0 0 0 2px var(--c-primary-pale); }
.ico_ica_btn, .ica_ica_btn, .moca_ica_btn { width: 22px; height: 22px; margin: 2px; padding: 0; font-size: 0; color: transparent; background: var(--c-primary) no-repeat center / 15px; mask: url('../images/icon_calendar.svg'); border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); cursor: pointer; flex-shrink: 0; transition: all 0.12s; }
.moca_ibn_btn { width: 20px; height: 20px; background: no-repeat center / 14px; background-image: url('../images/icon_search.svg'); border: none; cursor: pointer; }
.itemTable { position: fixed; min-width: 220px; background: var(--c-surface); border: 1px solid var(--c-primary); border-radius: var(--radius-md); box-shadow: 0 8px 24px rgba(0,0,0,0.55); z-index: 6200; overflow: hidden; }
.itemTable .filterheader { padding: 8px 10px 8px; background: var(--c-grid-toolbar); border-bottom: 1px solid var(--c-border); display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.itemTable .filterheader > span { display: flex; align-items: center; gap: 6px; flex: 1; }
.itemTable .filterheader .fr { display: flex; align-items: center; gap: 4px; }
.itemTable .filterheader .fr button.moca_ibn_btn { height: 24px; width: auto; padding: 0 8px; font-size: 11px; color: var(--c-text-sub); background: var(--c-bg-elevated); border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); cursor: pointer; transition: all 0.12s; white-space: nowrap; background-image: none; }
.itemTable .filterheader .fr button.moca_ibn_btn.arrow, .itemTable .filterheader .fr button.moca_ibn_btn.arrow:hover { background-image: url(../images/icon_cmb_arrow.svg); background-repeat: no-repeat; background-position: 50%; width: 24px; background-size: 16px; border: 0 }
.itemTable .filterheader .fr button.moca_ibn_btn.arrow:hover { background-image: url('../images/icon_cmb_arrow_hover.svg'); }
.itemTable .filterheader .fr button.moca_ibn_btn:hover { background: var(--c-bg-hover); color: var(--c-primary); border-color: var(--c-primary); }
.itemTable .filterheader input[type="text"].moca_input { width: 100%; height: 28px; padding: 0 8px; flex-basis: 100%; }
.itemTable .filterheader input[type="text"].moca_input::placeholder { color: var(--c-text-muted); }
.itemTable .filterheader input[type="checkbox"] { width: 14px; height: 14px; accent-color: var(--c-primary); cursor: pointer; }
.itemTable .filterheader label { font-size: 12px; color: var(--c-text-sub); cursor: pointer; }
.itemTable > ul { list-style: none; margin: 0; padding: 0; height: 140px; overflow-y: auto; }
.itemTable > ul::-webkit-scrollbar { width: 4px; }
.itemTable > ul::-webkit-scrollbar-track { background: var(--c-bg); }
.itemTable > ul::-webkit-scrollbar-thumb { background: var(--c-border-dark); border-radius: 2px; }
.itemTable > ul > li { display: flex; align-items: center; gap: 8px; padding: 5px 12px; border-bottom: 1px solid var(--c-border); cursor: pointer; transition: background 0.1s; }
.itemTable > ul > li:last-child { border-bottom: none; }
.itemTable > ul > li:hover { background: var(--c-grid-hover); }
.itemTable > ul > li.on { background: var(--c-grid-selected); }
.itemTable > ul > li input[type="checkbox"] { width: 14px; height: 14px; accent-color: var(--c-primary); cursor: pointer; flex-shrink: 0; }
.itemTable > ul > li label { font-size: 12px; color: var(--c-text-body); cursor: pointer; flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.itemTable table { width: 100%; border-collapse: collapse; }
.itemTable tr:hover td { background: var(--c-grid-hover); }
.itemTable td { padding: 5px 10px; font-size: 12px; color: var(--c-text-body); border-bottom: 1px solid var(--c-border); cursor: pointer; }
.moca_textarea { width:100% }
.moca_textarea > * { width: 100%; padding: 5px 8px; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); font-size: 12px; font-family: inherit; color: var(--c-text); background: var(--c-white); outline: none; transition: border-color 0.15s, box-shadow 0.15s; box-sizing: border-box; }
.moca_textarea > * { height: 100%; resize: none; line-height: 1.6; align-self: flex-start; vertical-align: top; }
.moca_textarea[data-m-resize="true"] > textarea, .moca_textarea[data-m-resize="vertical"] > textarea { resize: vertical; }
.moca_textarea[data-m-resize="both"] > textarea { resize: both; }
.moca_textarea > *:focus { border-color: var(--c-primary); box-shadow: 0 0 0 3px rgba(35,168,242,0.12); }
.moca_textarea > *[contenteditable="false"], .moca_textarea > textarea[readonly] { background: var(--c-bg-input-readonly); color: var(--c-text-muted); cursor: default; }
.moca_textarea > textarea[readonly]:focus { border-color: var(--c-border-dark); box-shadow: none; }
.moca_textarea.log_view > * { font-size: 14px; line-height: 1.5; }
.moca_textarea.log_view > *[contenteditable="false"], .moca_textarea.log_view > textarea[readonly] { color: var(--c-text-body); font-family: Consolas, 'D2Coding', 'Courier New', monospace; font-size: 13px; }
.moca_textarea > *[contenteditable="false"]:focus { border-color: var(--c-border-dark); box-shadow: none; }
.gridDetail_body { position: absolute; inset: 0; width: 100%; height: 100%; background: var(--c-surface); z-index: 20; overflow-y: auto; box-sizing: border-box; padding: 15px; }
.moca_grid_toolbar_detail { position: sticky; top: -15px; z-index: 1; margin: -15px -15px 15px; justify-content: flex-end; }
.moca_grid_toolbar_detail .button.on { border-color: var(--c-primary); background-color: var(--c-primary-light); }
.gridDetail { width: 100%; table-layout: fixed; border-collapse: collapse; border-top: 1px solid var(--c-border); border-left: 1px solid var(--c-border); margin-bottom: 15px; }
.gridDetail:last-child { margin-bottom: 0; }
.gridDetail th { width: 130px; background: var(--c-grid-toolbar); color: var(--c-text-muted); font-size: 12px; font-weight: 600; padding: 8px 12px; border-right: 1px solid var(--c-border); border-bottom: 1px solid var(--c-border); text-align: left; vertical-align: middle; word-break: keep-all; }
.gridDetail td { background: var(--c-bg-elevated); padding: 8px 10px; border-right: 1px solid var(--c-border); border-bottom: 1px solid var(--c-border); font-size: 12px; color: var(--c-text); vertical-align: middle; text-align: left; }
.gridDetail td > div { text-align: left; }
.gridDetail td .moca_checkbox_grid, .gridDetail td .moca_radio_grid { justify-content: flex-start; }
.gridDetail td > [data-m-type="input"], .gridDetail td > [data-m-type="selectbox"] { display: block; width: 100%; max-width: 420px; min-width: 0; }
.gridDetail td > [data-m-type="selectbox"] .moca_select, .gridDetail td > [data-m-type="selectbox"] select { width: 100%; }
.gridDetail td div[contenteditable] { min-height: 24px; }
.PopColgroup { position: absolute; top: 38px; right: 0; background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--radius-md); box-shadow: var(--shadow-lg); z-index: 200; min-width: 400px; }
.groupListHeader { padding: 8px 12px; background: var(--c-bg); border-bottom: 1px solid var(--c-border); border-radius: var(--radius-md) var(--radius-md) 0 0; }
.ly_column { display: flex; gap: 8px; padding: 10px; }
.ly_col_cont { background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius-sm); padding: 8px; }
.moca_ibn { display: flex; align-items: center; gap: 4px; }
.moca_input_color { width: 28px; height: 24px; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); cursor: pointer; padding: 1px 2px; }
.groupList, .groupListSet { width: 100%; border-collapse: collapse; }
.groupList td, .groupListSet td { padding: 5px 6px; font-size: 12px; border-bottom: 1px solid var(--c-border); }
.groupColList li { padding: 5px 8px; font-size: 12px; color: var(--c-text); border-bottom: 1px solid var(--c-border); cursor: pointer; border-radius: var(--radius-sm); }
.groupColList li:hover { background: var(--c-grid-hover); }
.groupColList li.on { background: var(--c-primary); color: var(--c-white); }
.moca_grid_tooltip { position: fixed; background: var(--c-header-bg); color: #f1f5f9; font-size: 11px; padding: 4px 9px; border-radius: var(--radius-sm); box-shadow: var(--shadow-sm); z-index: 9999; pointer-events: none; white-space: nowrap; }
.moca_rendering { opacity: 0; pointer-events: none; }
.moca_loading { position: fixed; inset: 0; background: rgba(255,255,255,0.7); display: flex; align-items: center; justify-content: center; z-index: 8000; }
.moca_loading::after { content: ''; width: 32px; height: 32px; border: 3px solid var(--c-border); border-top-color: var(--c-primary); border-radius: 50%; animation: moca-spin 0.7s linear infinite; }
@keyframes moca-spin {
to { transform: rotate(360deg); }
}
.moca_grid_full_wrap { position: fixed; inset: 0; background: var(--c-white); z-index: 7000; display: flex; flex-direction: column; padding: 10px; }
.overlayer { position: fixed !important; inset: 0 !important; height: auto !important; min-height: 0 !important; z-index: 7000; background: var(--c-bg); display: flex; flex-direction: column; padding: 10px; box-sizing: border-box; }
.overlayer .moca_grid_list { flex: 1; min-height: 0; }
.overlayer .moca_scrollY_type1 { width: 100% !important; left: 0 !important; }
.sc_row1 { overflow-x: auto; overflow-y: hidden; }
td[data-m-celltype="tree"] > span { display: inline-flex; vertical-align: top; align-items: center; height: 100%; white-space: nowrap; overflow: hidden; }
.moca_grid_line, .moca_grid_last, .moca_grid_midddle { display: inline-block; position: relative; width: 14px; height: 26px; flex-shrink: 0; }
.moca_grid_line::before { content: ''; position: absolute; left: 50%; top: 0; bottom: 0; width: 1px; background: var(--c-border-dark); }
.moca_grid_last::before { content: ''; position: absolute; left: 50%; top: 0; height: 50%; width: 1px; background: var(--c-border-dark); }
.moca_grid_last::after { content: ''; position: absolute; left: 50%; top: 50%; right: 0; height: 1px; background: var(--c-border-dark); }
.moca_grid_midddle::before { content: ''; position: absolute; left: 50%; top: 0; bottom: 0; width: 1px; background: var(--c-border-dark); }
.moca_grid_midddle::after { content: ''; position: absolute; left: 50%; top: 50%; right: 0; height: 1px; background: var(--c-border-dark); }
.moca_grid_plus, .moca_grid_minus, .moca_grid_leaf { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; flex-shrink: 0; border-radius: 3px; }
.moca_grid_plus, .moca_grid_minus { cursor: pointer; background: var(--c-primary-light); border: 1px solid var(--c-primary); transition: background 0.12s; }
.moca_grid_plus:hover, .moca_grid_minus:hover { background: var(--c-primary); }
.moca_grid_plus::before {
content: '';
display: block;
width: 8px;
height: 8px;
background-image:
linear-gradient(var(--c-primary), var(--c-primary)),
linear-gradient(var(--c-primary), var(--c-primary));
background-size: 8px 1px, 1px 8px;
background-repeat: no-repeat;
background-position: center;
transition: background-image 0.12s;
}
.moca_grid_plus:hover::before {
background-image:
linear-gradient(var(--c-bg), var(--c-bg)),
linear-gradient(var(--c-bg), var(--c-bg));
}
.moca_grid_minus::before {
content: '';
display: block;
width: 8px;
height: 8px;
background-image: linear-gradient(var(--c-primary), var(--c-primary));
background-size: 8px 1px;
background-repeat: no-repeat;
background-position: center;
transition: background-image 0.12s;
}
.moca_grid_minus:hover::before {
background-image: linear-gradient(var(--c-bg), var(--c-bg));
}
.moca_grid_leaf { cursor: default; }
.moca_grid_leaf::before { content: ''; display: block; width: 5px; height: 5px; border-radius: 50%; background: var(--c-text); }
td[data-m-celltype="tree"] label { margin-left: 5px; font-size: 12px; color: inherit; cursor: pointer; overflow: hidden; text-overflow: ellipsis; }
#lin_dashed { pointer-events: none; }
.bd_overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.35); z-index: 3000; align-items: center; justify-content: center; }
.bd_overlay.on { display: flex; }
.bd_overlay.bd_overlay_nomodal { background: transparent; backdrop-filter: none; pointer-events: none; }
.bd_overlay.bd_overlay_nomodal > .bd_modal { pointer-events: auto; }
.bd_modal { background: var(--c-white); font-size: 13px; width: 66em; max-width: 96vw; max-height: 92vh; border-radius: var(--radius-lg); box-shadow: 0 12px 40px rgba(0,0,0,0.2); display: flex; flex-direction: column; overflow: hidden; }
.bd_modal_header { flex-shrink: 0; display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: var(--c-bg); border-bottom: 2px solid var(--c-primary); }
.bd_modal_drag { cursor: move; user-select: none; touch-action: none; }
.bd_modal_dragging { cursor: grabbing; }
.bd_modal_title { font-size: 15px; font-weight: 700; color: var(--c-text); display: flex; align-items: center; gap: 8px; }
.bd_modal_title::before { content: ''; display: inline-block; flex: 0 0 auto; width: 0.93em; height: 0.93em; background-color: var(--c-primary); -webkit-mask: url('../images/icon_pop_title.svg') no-repeat center / contain; mask: url('../images/icon_pop_title.svg') no-repeat center / contain; }
.moca_pop_title_icon { flex: 0 0 auto; width: 20px; height: 20px; object-fit: contain; }
.bd_modal_title:has(.moca_pop_title_icon)::before { display: none; }
.bd_modal_close {
flex: 0 0 auto; width: 28px; height: 28px; padding: 0;
border: 0; border-radius: var(--radius-sm);
background: none; color: var(--c-text-sub);
font-size: 15px; line-height: 1; cursor: pointer;
}
.bd_modal_close:hover { background: var(--c-hover); color: var(--c-text); }
.bd_modal_tools { display: flex; align-items: center; gap: 2px; margin-left: auto; flex: 0 0 auto; }
.bd_modal_max { flex: 0 0 auto; width: 28px; height: 28px; padding: 0; border: 0; border-radius: var(--radius-sm); background: none; color: var(--c-text-sub); font-size: 15px; line-height: 1; cursor: pointer; }
.bd_modal_max:hover { background: var(--c-hover); color: var(--c-text); }
.bd_modal.bd_modal_maxed { width: calc(100vw - 24px) !important; height: calc(100vh - 24px) !important; max-width: none !important; max-height: none !important; transform: none !important; border-radius: var(--radius-sm); }
.bd_modal.bd_modal_maxed .bd_modal_header { cursor: default; }
.bd_modal.bd_modal_maxed > .bd_modal_body { display: flex; flex-direction: column; min-height: 0; }
.bd_modal.bd_modal_maxed > .bd_modal_body > .page_wrap { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
.bd_modal.bd_modal_maxed .page_wrap > .moca_layout.moca_layout_fixed { width: auto; height: auto; flex: 1 1 auto; min-height: 0; }
.bd_modal_btns { display: flex; gap: 6px; }
.pop_btn_area { justify-content: flex-end; margin-top: 10px; }
.bd_modal_btns button { height: var(--m-field-height); transition: filter 0.15s, background 0.15s; padding:0 16px; border-radius: var(--radius-sm); font-size: 12px; font-weight: 600;}
.moca_fab { display: flex; position: fixed; right: 18px; bottom: 22px; z-index: 6900; width: 48px; height: 48px; border-radius: 50%; align-items: center; justify-content: center; background: var(--c-primary); border: none; color: var(--c-bg); box-shadow: var(--shadow-md); cursor: pointer; touch-action: none; user-select: none; -webkit-user-select: none; }
.moca_fab:active { filter: brightness(0.88); }
.moca_fab.moca_fab_ext { width: auto; padding: 0 18px; gap: 7px; border-radius: 24px; font-size: 13px; font-weight: 700; }
.moca_fab .moca_fab_icon { display: flex; align-items: center; justify-content: center; }
.moca_fab .moca_fab_icon_img { width: 22px; height: 22px; }
.moca_fab .moca_fab_icon_txt { font-size: 20px; line-height: 1; }
.moca_fab .moca_fab_icon_mask { width: 22px; height: 22px; background: currentColor; -webkit-mask: var(--m-fab-icon) no-repeat center / contain; mask: var(--m-fab-icon) no-repeat center / contain; }
.moca_fab.moca_fab_dragging { opacity: 0.85; transform: scale(1.08); cursor: grabbing; filter: none; }
.moca_btg_fab { display: none; background: var(--c-warning); }
.bd_modal_body { flex: 1; overflow-y: auto; padding: 15px; }
.moca_table_form { width: 100%; border-collapse: collapse; margin-bottom: 15px; table-layout: fixed; }
.moca_table_form th { background: var(--c-bg); padding: 8px 12px; font-size: 12px; font-weight: 600; color: var(--c-text-sub); border: 1px solid var(--c-border); text-align: right; white-space: nowrap; width: 90px; }
.moca_table_form td { padding: 6px 10px; border: 1px solid var(--c-border); }
.req_mark { color: var(--c-danger); margin-left: 2px; }
[data-m-type][data-m-required="true"] input:not([type="checkbox"]):not([type="radio"]):not([type="button"]),
[data-m-type][data-m-required="true"] select,
[data-m-type][data-m-required="true"] textarea,
.moca_grid_body tbody td input.req,
.moca_grid_body tbody td .moca_selectbox > input.moca_select.req,
.moca_grid_body tbody td .filterheader.req input.moca_input {
border-color: var(--c-req-border);
}
div.moca_table_form [data-m-type="table"] { display: block; width: 100%; border-top: 1px solid var(--c-border); border-left: 1px solid var(--c-border); margin-bottom: 18px; }
div.moca_table_form [data-m-body="tbody"] { display: block; border-top: 1px solid var(--c-border);}
div.moca_table_form [data-m-row="tr"] { display: flex; align-items: stretch; min-height: 34px; }
div.moca_table_form.moca_th_measure [data-m-cell="th"] { width: max-content !important; min-width: 0 !important; flex-shrink: 0 !important; }
div.moca_table_form [data-m-cell="th"] { flex-shrink: 0; width: var(--m-form-th-w, calc(var(--m-th-label-width) + 60px)); background: var(--c-bg); padding: 8px 12px; font-size: 12px; font-weight: 600; color: var(--c-text-sub); border-right: 1px solid var(--c-border); border-bottom: 1px solid var(--c-border); white-space: nowrap; display: flex; align-items: center; justify-content: flex-end; }
div.moca_table_form [data-m-cell="th"] .th_sub, .moca_table_search [data-m-cell="th"] .th_sub { display: block; margin-top: 2px; font-size: 12px; font-weight: 400; color: var(--c-text-muted); }
div.moca_table_form [data-m-cell="th"]:has(> .th_sub), .moca_table_search [data-m-cell="th"]:has(> .th_sub) { flex-direction: column; justify-content: center; align-items: flex-end; text-align: right; }
div.moca_table_form [data-m-cell="td"] { flex: 1; min-width: 0; padding: 10px; background: var(--c-white); border-bottom: 1px solid var(--c-border); display: flex; align-items: center; gap: 8px; }
div.moca_table_view [data-m-body="tbody"] { display: grid; grid-template-columns: max-content minmax(0, 1fr) max-content minmax(0, 1fr); }
div.moca_table_view [data-m-row="tr"] { display: contents; }
div.moca_table_view [data-m-row="tr"] > [data-m-cell="td"]:nth-child(2):last-child { grid-column: 2 / -1; }
div.moca_table_view [data-m-cell="th"] { width: auto; min-width: 4em; }
div.moca_table_view [data-m-cell="td"] { color: var(--c-text); font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; }
.moca_output { color: var(--c-text); white-space: pre-wrap; overflow-wrap: anywhere; min-width: 0; }
div.moca_table_view [data-m-cell="td"] > [data-m-type="output"] { flex: 1; min-width: 0; white-space: pre-wrap; }
div.moca_table_view [data-m-cell="td"] > [data-m-type="output"]:empty::before { content: '—'; color: var(--c-text-muted); }
div.moca_table_form [data-m-cell="td"].td_w70 { flex: 7; }
div.moca_table_form [data-m-cell="td"].td_w30 { flex: 3; }
div.moca_table_form [data-m-cell="td"].td_cont { align-items: stretch; padding: 0; }
div[data-m-type="form"].moca_form_fill { display: flex; flex-direction: column; min-height: 0; }
div[data-m-type="form"].moca_form_fill > .moca_form_body { flex: 1; min-height: 0; display: flex; flex-direction: column; }
div[data-m-type="form"].moca_form_fill > .moca_form_body > [data-m-body="tbody"] { flex: 1; min-height: 0; display: flex; flex-direction: column; }
div[data-m-type="form"].moca_form_fill [data-m-row="tr"]:last-child { flex: 1; min-height: 0; }
div[data-m-type="form"].moca_form_fill [data-m-row="tr"]:last-child > [data-m-cell="td"] { align-items: stretch; }
div[data-m-type="form"].moca_form_fill [data-m-row="tr"]:last-child .moca_textarea { height: 100%; }
div[data-m-type="form"]:has(> .moca_grid_toolbar) { border: 1px solid var(--c-border); border-radius: var(--radius-md); box-shadow: var(--shadow-md); overflow: hidden; margin-bottom: 0px; }
.moca_form_body { padding: 15px;}
.moca_form_body > [data-m-body="tbody"] { margin-bottom: 0; }
.moca_grid_toolbar .mocaButton { display: inline-flex; align-items: center; }
.bd_file_section { border: 1px solid var(--c-border); border-radius: var(--radius-sm); overflow: hidden; }
.bd_file_header { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; background: var(--c-grid-th); border-bottom: 1px solid var(--c-border); }
.bd_file_header span { font-size: 12px; font-weight: 700; color: var(--c-text-sub); }
.bd_file_add_btn { height: 26px; padding: 0 12px; background: var(--c-primary); color: #fff; border: none; border-radius: var(--radius-sm); font-size: 11px; font-weight: 600; cursor: pointer; transition: background 0.15s; }
.bd_file_add_btn:hover { background: var(--c-primary-dark); }
.bd_file_list_table { width: 100%; border-collapse: collapse; }
.bd_file_list_table th { background: var(--c-bg); padding: 6px 10px; font-size: 11px; font-weight: 600; color: var(--c-text-sub); border-bottom: 1px solid var(--c-border); text-align: center; }
.bd_file_list_table td { padding: 6px 10px; font-size: 12px; color: var(--c-text); border-bottom: 1px solid var(--c-border); vertical-align: middle; }
.bd_file_list_table tr:last-child td { border-bottom: none; }
.bd_file_nm_cell { cursor: pointer; color: var(--c-primary); text-decoration: underline; text-underline-offset: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 340px; }
.bd_file_nm_cell:hover { color: var(--c-primary-dark); }
.bd_new_badge { display: inline-block; background: var(--c-primary-light); color: var(--c-primary-dark); font-size: 10px; font-weight: 700; padding: 1px 5px; border-radius: 10px; margin-left: 4px; vertical-align: middle; }
.pending_row td { background: var(--c-primary-light); }
.bd_dl_btn { height: 22px; padding: 0 10px; background: var(--c-white); color: var(--c-primary); border: 1px solid var(--c-primary); border-radius: var(--radius-sm); font-size: 11px; cursor: pointer; transition: all 0.12s; }
.bd_dl_btn:hover { background: var(--c-primary); color: #fff; }
.bd_file_del_btn { height: 22px; padding: 0 10px; background: var(--c-white); color: var(--c-danger); border: 1px solid var(--c-danger); border-radius: var(--radius-sm); font-size: 11px; cursor: pointer; transition: all 0.12s; }
.bd_file_del_btn:hover { background: var(--c-danger); color: #fff; }
.bd_empty_row td { text-align: center; padding: 20px; color: var(--c-text-muted); font-size: 12px; }
.moca_treeview { display: flex; flex-direction: column; width: 100%; overflow-y: auto; }
.moca_treeview.has_head { overflow: hidden; border: 1px solid var(--c-border); border-radius: var(--radius-md); background: var(--c-surface); }
.moca_treeview > .trv_head { flex: 0 0 auto; }
.moca_treeview > .trv_scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
.moca_treeview.fold > .trv_scroll { display: none; }
.moca_treeview .moca-tree, .moca_treeview .moca-tree ul { list-style: none; margin: 0; padding: 0; }
.moca_treeview .tree-node > ul { display: none; }
.moca_treeview .tree-node.open > ul { display: block; }
.moca_treeview .tree-row { display: flex; align-items: center; gap: 5px; height: 30px; padding-right: 10px; margin: 1px 6px; border-radius: var(--radius-sm); font-size: 13px; color: var(--c-text-body); transition: background 0.12s, color 0.12s; user-select: none; }
.moca_treeview .has-children > .tree-row { cursor: pointer; font-weight: 600; color: var(--c-text-sub); }
.moca_treeview .has-children > .tree-row:hover { background: var(--c-primary-pale); color: var(--c-primary); }
.moca_treeview .tree-leaf { cursor: pointer; }
.moca_treeview .tree-leaf:hover { background: var(--c-primary-pale); color: var(--c-primary); }
.moca_treeview .tree-leaf.active { background: var(--c-primary-light); color: var(--c-primary); font-weight: 600; }
.moca_treeview .tree-leaf.active::before { content: ''; position: absolute; left: 0; }
.moca_treeview .tree-toggle, .moca_treeview .tree-dot { width: 14px; text-align: center; font-size: 10px; color: var(--c-text-muted); flex-shrink: 0; line-height: 1; }
.moca_treeview .has-children > .tree-row .tree-toggle { color: var(--c-primary-mid); }
.moca_treeview .tree-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.left .moca_treeview { margin-top: 25px; }
.left .moca_treeview .tree-leaf { color: var(--c-sidebar-text); }
.left .moca_treeview .tree-leaf:hover,
.left .moca_treeview .has-children > .tree-row:hover { background: var(--c-sidebar-hover); }
.lay_bd_detail_body > .moca_treeview { flex: 1; min-height: 0; }
.moca_vtree { position: relative; width: 100%; }
.moca_vtree { display: flex; flex-direction: column; overflow: hidden; }
.moca_vtree > .mvt_scroll { position: relative; flex: 1 1 auto; min-height: 0; overflow: auto; }
.moca_vtree .mvt_toolbar { flex: 0 0 auto; display: flex; align-items: center; gap: 8px;
padding: 6px 0; background: var(--c-surface);
border-bottom: 1px solid var(--c-border); }
.moca_vtree .mvt_btn { position: relative; display: inline-flex; align-items: center; justify-content: center;
width: 26px; height: 26px; padding: 0; flex-shrink: 0; cursor: pointer;
border: 1px solid var(--c-border-dark); border-radius: 4px;
background: var(--c-border-dark); transition: background 0.12s; }
.moca_vtree .mvt_btn:hover { background: var(--c-text-sub); border-color: var(--c-text-sub); }
.moca_vtree .mvt_btn::before { content: ''; display: block; width: 12px; height: 12px;
background-image: linear-gradient(var(--c-bg), var(--c-bg)), linear-gradient(var(--c-bg), var(--c-bg));
background-size: 12px 1px, 1px 12px; background-repeat: no-repeat; background-position: center; }
.moca_vtree .mvt_btn_minus::before { background-size: 12px 1px, 0 0; }
.moca_vtree .mvt_stat { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
color: var(--c-text-sub); font-size: 12px; line-height: 26px; }
.lay_bd_detail_body > .moca_vtree { flex: 1; min-height: 0; }
.moca_vtree > .mvt_head { flex: 0 0 auto; }
.moca_vtree.has_head { border: 1px solid var(--c-border); border-radius: var(--radius-md); background: var(--c-surface); }
.moca_vtree.fold > .mvt_toolbar, .moca_vtree.fold > .mvt_scroll { display: none; }
.moca_vtree .mvt_spacer { width: 1px; }
.moca_vtree .mvt_window { position: absolute; top: 0; left: 0; min-width: 100%; will-change: transform; }
.moca_vtree .mvt_row { display: flex; align-items: center; height: var(--mvt-row-h, 30px); width: max-content; min-width: 100%; padding-right: 10px; box-sizing: border-box; cursor: pointer; user-select: none; }
.moca_vtree .mvt_no { position: sticky; left: 0; z-index: 1; flex: 0 0 auto;
width: var(--mvt-no-w, 34px); padding-right: 6px; margin-right: 6px;
box-sizing: border-box; overflow: hidden;
font-size: 11px; color: var(--c-text-muted);
background: var(--c-surface); border-right: 1px solid var(--c-border);
align-self: stretch; user-select: none;
display: flex; align-items: center; justify-content: flex-end; }
.moca_vtree .mvt_no i { display: block; flex: 0 0 auto; transform-origin: right center; font-style: normal; white-space: nowrap; }
.moca_vtree .mvt_row:hover  .mvt_no { background: var(--c-bg-hover); }
.moca_vtree .mvt_row.active .mvt_no { background: var(--c-primary-light); color: var(--c-primary); font-weight: 700; }
.moca_vtree .mvt_row:hover { background: var(--c-primary-pale); }
.moca_vtree .mvt_row.active { background: var(--c-primary-light); }
.moca_vtree .mvt_line, .moca_vtree .mvt_elbow, .moca_vtree .mvt_pad { position: relative; width: var(--mvt-indent, 16px); height: 100%; flex-shrink: 0; }
.moca_vtree .mvt_line_on::before { content: ''; position: absolute; left: 50%; top: 0; bottom: 0; width: 1px; background: var(--c-border-dark); }
.moca_vtree .mvt_elbow::before { content: ''; position: absolute; left: 50%; top: 0; bottom: 0; width: 1px; background: var(--c-border-dark); }
.moca_vtree .mvt_elbow_last::before { bottom: 50%; }
.moca_vtree .mvt_elbow::after { content: ''; position: absolute; left: 50%; top: 50%; right: 0; height: 1px; background: var(--c-border-dark); }
.moca_vtree .mvt_toggle, .moca_vtree .mvt_dot { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; flex-shrink: 0; border-radius: 3px; }
.moca_vtree .mvt_toggle { cursor: pointer; background: var(--c-primary-light); border: 1px solid var(--c-primary); transition: background 0.12s; }
.moca_vtree .mvt_toggle:hover { background: var(--c-primary); }
.moca_vtree .mvt_toggle::before { content: ''; display: block; width: 8px; height: 8px; background-image: linear-gradient(var(--c-primary), var(--c-primary)), linear-gradient(var(--c-primary), var(--c-primary)); background-size: 8px 1px, 1px 8px; background-repeat: no-repeat; background-position: center; transition: background-image 0.12s; }
.moca_vtree .mvt_minus::before { background-size: 8px 1px, 0 0; }
.moca_vtree .mvt_toggle:hover::before { background-image: linear-gradient(var(--c-bg), var(--c-bg)), linear-gradient(var(--c-bg), var(--c-bg)); }
.moca_vtree .mvt_dot::before { content: ''; display: block; width: 5px; height: 5px; border-radius: 50%; background: var(--c-text-muted); }
.moca_vtree .mvt_label { margin-left: 6px; font-size: 13px; color: var(--c-text-body); white-space: nowrap; }
.moca_vtree .mvt_group > .mvt_label { font-weight: 600; color: var(--c-text-sub); }
.moca_vtree .mvt_row.active > .mvt_label { color: var(--c-primary); font-weight: 600; }
div[data-m-type="inputCalendar"], div[data-m-type="inputMultiCalendar"] { position: relative; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); background: var(--c-bg-input); }
div[data-m-type="inputCalendar"] { width: max(var(--m-field-width), calc(var(--m-ica-chars, 10) * 1ch + 46px)); }
div[data-m-type="inputCalendar"] > input.moca_input { flex: 1 1 auto; min-width: 0; }
div[data-m-type="inputMultiCalendar"] > div { display: flex; align-items: center; }
div[data-m-type="inputCalendar"] > .moca_ica_btn,
div[data-m-type="inputMultiCalendar"] > div > .moca_ica_btn {
position: relative;
width: 24px; height: calc(var(--m-field-height) - 2px); margin: 0; padding: 0;
border: 0; border-radius: 0; background: transparent; mask: none;
}
div[data-m-type="inputCalendar"] > .moca_ica_btn::before,
div[data-m-type="inputMultiCalendar"] > div > .moca_ica_btn::before {
content: ''; position: absolute; left: 0; top: 20%; width: 1px; height: 60%; background: var(--c-border);
}
div[data-m-type="inputCalendar"] > .moca_ica_btn::after,
div[data-m-type="inputMultiCalendar"] > div > .moca_ica_btn::after {
content: ''; position: absolute; inset: 5px;
background: var(--c-primary);
-webkit-mask: url('../images/icon_calendar.svg') no-repeat center / contain;
mask: url('../images/icon_calendar.svg') no-repeat center / contain;
}
div[data-m-type="inputCalendar"] > .moca_ica_btn:disabled,
div[data-m-type="inputMultiCalendar"] > div > .moca_ica_btn:disabled { opacity: 0.3; cursor: default; }
.moca_calendar { position: absolute; top: calc(100% + 2px); left: 0; z-index: 1000; background: var(--c-white); border: 1px solid var(--c-border-dark); border-radius: var(--radius-md); box-shadow: var(--shadow-md); font-size: 12px; width: 21.67em; }
.moca_calendar_fromto { position: absolute; top: calc(100% + 2px); left: 0; z-index: 1000; background: var(--c-white); border: 1px solid var(--c-border-dark); border-radius: var(--radius-md); box-shadow: var(--shadow-md); display: flex; min-width: 45em; }
.moca_calendar_header { display: flex; align-items: center; justify-content: space-between; padding: 5px 6px; background: var(--c-surface); border-radius: var(--radius-md) var(--radius-md) 0 0; border-bottom: 1px solid var(--c-border-dark); gap: 2px; }
.moca_calendar_header button { background: none; border: 1px solid transparent; color: var(--c-primary); cursor: pointer; font-size: 11px; padding: 0.18em 0.55em; border-radius: var(--radius-sm); white-space: nowrap; transition: background 0.12s; }
.moca_calendar_header .moca_calendar_btn_prev, .moca_calendar_header .moca_calendar_btn_next { border: 1px solid var(--c-border-dark); color: var(--c-text-sub); }
.moca_calendar_header button:hover { background: var(--c-primary-light); }
.moca_calendar_dynamic { display: flex; gap: 3px; align-items: center; flex: 1; justify-content: center; }
.moca_calendar_year, .moca_calendar_month { font-size: 12px; font-weight: 700; color: var(--c-text); }
.moca_calendar_body { padding: 4px; }
.moca_calendar_body table { border-collapse: collapse; width: 100%; }
.moca_calendar_body th { height: 1.83em; text-align: center; font-size: 11px; font-weight: 600; color: var(--c-text-sub); padding: 0; }
.moca_calendar_body th.sun { color: var(--c-danger); }
.moca_calendar_body th.sat { color: #2563eb; }
.moca_calendar_body td { height: 2.17em; text-align: center; padding: 1px; }
.moca_calendar_body td button { width: 100%; height: 100%; background: none; border: none; cursor: pointer; font-size: 11px; color: var(--c-text); border-radius: var(--radius-sm); transition: background 0.1s, color 0.1s; display: inline-flex; align-items: center; justify-content: center; }
.moca_calendar_body td:not(.moca_calendar_date_disabled):hover button { background: var(--c-primary-light); color: var(--c-primary); }
.moca_calendar_holiday button { color: var(--c-danger) !important; }
.moca_calendar_date_disabled { opacity: 0.35; pointer-events: none; }
.moca_calendar_header button:disabled, .moca_calendar_btn_today:disabled { opacity: 0.35; cursor: default; pointer-events: none; }
.moca_calendar_today { border-radius: var(--radius-sm); background : var(--c-black) !important; }
.moca_calendar_today button { background: var(--c-bg); color: var(--c-primary); font-weight: 700; }
.moca_calendar_selected { outline: 1px solid var(--c-primary); outline-offset: -1px; border-radius: var(--radius-sm); }
.moca_calendar_selected button { color: var(--c-primary) !important; font-weight: 700; }
.moca_calendar_time { display: flex; align-items: center; justify-content: center; gap: 2px; padding: 5px 6px; border-top: 1px solid var(--c-border); background: var(--c-surface); }
.moca_calendar_time .cmb_hhmmss { height: 2em; padding: 0 0.33em; font-size: 12px; color: var(--c-text); background: var(--c-bg-input); border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); cursor: pointer; }
.moca_calendar_time .cmb_hhmmss:focus { border-color: var(--c-primary); outline: none; }
.moca_cal_timeunit { font-size: 12px; font-style: normal; color: var(--c-text-sub); margin-right: 6px; }
.hhmmss_box { display: flex; align-items: center; justify-content: center; gap: 2px; padding: 0 0 4px; }
.hhmmss_box .cmb_hhmmss { height: 22px; padding: 0 3px; font-size: 12px; color: var(--c-text); background: var(--c-bg-input); border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); cursor: pointer; }
.moca_calendar_footer { display: flex; justify-content: space-between; align-items: center; padding: 4px 6px 5px; border-top: 1px solid var(--c-border); gap: 4px; }
.moca_calendar_footer .lta, .moca_calendar_footer .rta { display: flex; gap: 4px; }
.moca_calendar_btn_today, .moca_calendar_btn_cancel, .moca_calendar_btn_ok { min-height: 1.83em; padding: 0.25em 0.75em; border-radius: var(--radius-sm); font-size: 11px; font-weight: 600; cursor: pointer; border: 1px solid; transition: all 0.12s; line-height: 1; }
.moca_calendar_btn_today { background: var(--c-primary-light); color: var(--c-primary); border-color: var(--c-primary); }
.moca_calendar_btn_today:hover { background: var(--c-primary); color: var(--c-bg); }
.moca_calendar_btn_cancel { background: transparent; border: 1px solid var(--c-border-dark); color: var(--c-text-sub); }
.moca_calendar_btn_cancel:hover { background: var(--c-bg); }
.moca_calendar_btn_ok { background: var(--c-success); color: var(--c-bg); border-color: var(--c-success); }
.moca_calendar_btn_ok:hover { background: var(--c-primary-dark); }
.page_wrap { padding: 15px; gap: 15px; display: flex; flex-direction: column; min-height: 100%; height:max-content; }
.moca_layout .page_wrap:not(.moca_tab_panel > .page_wrap){padding:0;}
.page_wrap:has(.bd_lr_wrap) { min-height: 0; height: 100%; overflow: hidden; }
.page_wrap:has(.bd_split_wrap) { min-height: 100%;overflow: hidden; }
.page_wrap:has(.moca_tab) { min-height: 0; height: 100%; overflow: hidden; }
.page_wrap:has([data-m-layout]) { min-height: 0; height: 100%; overflow: hidden; }
.moca_layout_pane[data-m-type="frame"]:has(> .page_wrap),
.moca_tab_panel:has(> .page_wrap) { display: flex; flex-direction: column; }
.moca_layout_pane[data-m-type="frame"] > .page_wrap,
.moca_tab_panel > .page_wrap { flex: 1 1 0; min-height: 0; }
.moca_layout { display: flex; flex: 1; min-width: 0; min-height: 0; --m-layout-gap: 15px; gap: var(--m-layout-gap); }
.moca_layout.moca_layout_row { flex-direction: row; }
.moca_layout.moca_layout_col { flex-direction: column; }
.moca_layout > .moca_layout_pane { flex: var(--m-grow, 1) 1 0; min-width: 0; min-height: 0; overflow: auto; }
.moca_layout > .moca_layout_pane.moca_layout_pane_fixed { flex: 0 0 var(--m-basis, auto); }
.moca_layout > .moca_layout_pane.moca_pane_empty { display: none; }
.moca_layout > .moca_layout_pane.moca_layout_pane_fit { flex: 0 0 auto; }
.moca_layout.moca_layout_col:not(:has(> .moca_layout_pane:not(.moca_layout_pane_fit):not(.moca_layout_pane_fixed):not(.moca_pane_empty))) > .moca_layout_pane.moca_layout_pane_fit.moca_layout_pane_last { flex: 1 0 auto; }
.moca_layout.moca_layout_col > .moca_layout_pane.moca_layout_pane_fit.moca_layout_pane_last.fold { flex: 0 0 auto; }
.moca_layout > .moca_layout_pane[data-m-type="form"].moca_table_view:not(.fold) { display: flex; flex-direction: column; min-height: 0; }
.moca_layout > .moca_layout_pane[data-m-type="form"].moca_table_view:not(.fold) > .moca_form_body { flex: 0 1 auto; min-height: 0; overflow: auto; }
.moca_layout > .moca_layout_pane.moca_layout_pane_stack > [data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) { flex: 1 1 auto; min-height: 0; }
.moca_layout > .moca_layout_pane[data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view),
.moca_layout > .moca_layout_pane.moca_layout_pane_stack > [data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) { display: flex; flex-direction: column; min-height: 0; }
.moca_layout > .moca_layout_pane[data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) > .moca_form_body,
.moca_layout > .moca_layout_pane.moca_layout_pane_stack > [data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) > .moca_form_body { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.moca_layout > .moca_layout_pane[data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) > [data-m-body="tbody"],
.moca_layout > .moca_layout_pane[data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) > .moca_form_body > [data-m-body="tbody"],
.moca_layout > .moca_layout_pane.moca_layout_pane_stack > [data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) > [data-m-body="tbody"],
.moca_layout > .moca_layout_pane.moca_layout_pane_stack > [data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) > .moca_form_body > [data-m-body="tbody"] { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.moca_layout > .moca_layout_pane[data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) [data-m-row="tr"]:has(.moca_textarea, [data-m-type="textarea"], [data-m-type="ckeditor"]),
.moca_layout > .moca_layout_pane.moca_layout_pane_stack > [data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) [data-m-row="tr"]:has(.moca_textarea, [data-m-type="textarea"], [data-m-type="ckeditor"]) { flex: 1; min-height: 0; }
.moca_layout > .moca_layout_pane[data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) [data-m-row="tr"]:has(.moca_textarea, [data-m-type="textarea"], [data-m-type="ckeditor"]) > [data-m-cell="td"],
.moca_layout > .moca_layout_pane.moca_layout_pane_stack > [data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) [data-m-row="tr"]:has(.moca_textarea, [data-m-type="textarea"], [data-m-type="ckeditor"]) > [data-m-cell="td"] { align-items: stretch; }
.moca_layout > .moca_layout_pane[data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) [data-m-row="tr"]:has(.moca_textarea, [data-m-type="textarea"], [data-m-type="ckeditor"]) .moca_textarea,
.moca_layout > .moca_layout_pane.moca_layout_pane_stack > [data-m-type="form"].moca_table_form:not(.fold):not(.moca_table_view) [data-m-row="tr"]:has(.moca_textarea, [data-m-type="textarea"], [data-m-type="ckeditor"]) .moca_textarea { height: 100%; }
.moca_layout > .moca_layout_pane[data-m-type="grid"].fold { flex: 0 0 auto; overflow: visible; }
.moca_layout.moca_layout_col > .moca_layout_pane[data-m-type="virtualTree"].fold,
.moca_layout.moca_layout_col > .moca_layout_pane[data-m-type="treeview"].fold { flex: 0 0 auto; overflow: visible; }
.moca_layout > .moca_layout_pane.moca_layout_pane_stack { display: flex; flex-direction: column; gap: var(--m-layout-gap); overflow: visible; }
.moca_layout > .moca_layout_pane.moca_layout_pane_stack > * { margin: 0; }
.moca_layout.moca_layout_fixed { flex: none; width: var(--m-fixed-w, auto); height: var(--m-fixed-h, auto); }
.page_wrap:has(> .moca_layout_fixed) { overflow: auto; }
@media (max-width: 768px) {
.moca_layout.moca_layout_row, .moca_layout.moca_layout_col { flex-direction: column; }
.moca_layout > .moca_layout_pane { flex: 0 0 auto; overflow: visible; }
.moca_layout > .moca_layout_pane.moca_layout_pane_fixed { flex: 0 0 auto; }
.page_wrap:has([data-m-layout]) { height: auto; min-height: 100%; overflow: visible; }
.page_wrap.moca_layout_pane { min-height: 0; }
.moca_layout .widget_chart_body { min-height: 200px; }
.moca_layout > .moca_layout_pane:has(.moca_grid) { flex: 1 1 0; }
.moca_layout > .moca_layout_pane.moca_grid { flex: 1 1 0; height: auto;  }
.moca_layout > .moca_layout_pane:has(.moca_vtree) { flex: 1 1 0; }
.moca_layout > .moca_layout_pane.moca_vtree { flex: 1 1 0; height: auto; }
.moca_layout > .moca_layout_pane:has(> .moca_tab) { flex: 1 1 0; min-height: 0; }
.moca_layout > .moca_layout_pane.moca_tab { flex: 1 1 0; height: auto; min-height: 0; }
.moca_layout > .moca_layout_pane:has(.moca_treeview) { flex: 1 1 0; }
.moca_layout > .moca_layout_pane.moca_treeview { flex: 1 1 0; height: auto; }
.moca_layout > .moca_layout_pane[data-m-type="virtualTree"].fold,
.moca_layout > .moca_layout_pane[data-m-type="treeview"].fold { flex: 0 0 auto; height: auto; }
.moca_layout > .moca_layout_pane.moca_layout_pane_last { flex: 1 0 auto; }
.moca_layout > .moca_layout_pane.moca_layout_pane_last.fold { flex: 0 0 auto; }
.moca_layout > .moca_layout_pane:has(.moca_schcal) { flex: 1 0 auto; }
.moca_layout > .moca_layout_pane.moca_schcal { flex: 1 0 auto; height: auto; }
.moca_layout > .moca_layout_pane.moca_layout_pane_fixed.moca_grid { flex: 0 0 var(--m-basis, auto); }
.moca_layout > .moca_layout_pane.moca_layout_pane[data-m-mobileheight] { flex: 0 0 auto; height: var(--m-mbh); min-height: 0; }
.moca_layout > .moca_layout_pane.moca_layout_pane[data-m-mobileheight].fold { height: auto; }
.moca_layout > .moca_layout_pane[data-m-mobilehide="true"] { display: none; }
}
:where(.mdi_ly.mdi_narrow) {
.moca_layout.moca_layout_row, .moca_layout.moca_layout_col { flex-direction: column; }
.moca_layout > .moca_layout_pane { flex: 0 0 auto; overflow: visible; }
.moca_layout > .moca_layout_pane.moca_layout_pane_fixed { flex: 0 0 auto; }
.page_wrap:has([data-m-layout]) { height: auto; min-height: 100%; overflow: visible; }
.page_wrap.moca_layout_pane { min-height: 0; }
.moca_layout .widget_chart_body { min-height: 200px; }
.moca_layout > .moca_layout_pane:has(.moca_grid) { flex: 1 1 0; }
.moca_layout > .moca_layout_pane.moca_grid { flex: 1 1 0; height: auto; }
.moca_layout > .moca_layout_pane:has(.moca_vtree) { flex: 1 1 0; }
.moca_layout > .moca_layout_pane.moca_vtree { flex: 1 1 0; height: auto; }
.moca_layout > .moca_layout_pane:has(> .moca_tab) { flex: 1 1 0; min-height: 0; }
.moca_layout > .moca_layout_pane.moca_tab { flex: 1 1 0; height: auto; min-height: 0; }
.moca_layout > .moca_layout_pane:has(.moca_treeview) { flex: 1 1 0; }
.moca_layout > .moca_layout_pane.moca_treeview { flex: 1 1 0; height: auto; }
.moca_layout > .moca_layout_pane[data-m-type="virtualTree"].fold,
.moca_layout > .moca_layout_pane[data-m-type="treeview"].fold { flex: 0 0 auto; height: auto; }
.moca_layout > .moca_layout_pane.moca_layout_pane_last { flex: 1 0 auto; }
.moca_layout > .moca_layout_pane.moca_layout_pane_last.fold { flex: 0 0 auto; }
.moca_layout > .moca_layout_pane:has(.moca_schcal) { flex: 1 0 auto; }
.moca_layout > .moca_layout_pane.moca_schcal { flex: 1 0 auto; height: auto; }
.moca_layout > .moca_layout_pane.moca_layout_pane_fixed.moca_grid { flex: 0 0 var(--m-basis, auto); }
.moca_layout > .moca_layout_pane.moca_layout_pane[data-m-mobileheight] { flex: 0 0 auto; height: var(--m-mbh); min-height: 0; }
.moca_layout > .moca_layout_pane.moca_layout_pane[data-m-mobileheight].fold { height: auto; }
.moca_layout > .moca_layout_pane[data-m-mobilehide="true"] { display: none; }
}
.moca_layout:has(> .moca_layout_debug_fab) { position: relative; }
.moca_layout_debug_fab {
position: absolute; left: -14px; right: auto; bottom: -14px; z-index: 10;
width: 40px; height: 40px; padding: 0;
display: inline-flex; align-items: center; justify-content: center;
border: 1px solid var(--c-border); border-radius: 50%;
background: var(--c-surface); color: var(--c-text-muted);
box-shadow: var(--shadow-sm); cursor: pointer; opacity: 0.55;
transition: opacity .15s, color .15s, background .15s, box-shadow .15s, border-color .15s;
}
.moca_layout_debug_fab:hover { opacity: 1; box-shadow: var(--shadow-md); color: var(--c-primary); border-color: var(--c-primary); }
.moca_layout_debug_fab:active { filter: none; }
.moca_layout_debug_fab .moca_fab_icon_mask { width: 20px; height: 20px; }
.moca_tab_panel .moca_layout_debug_fab { left: 0; bottom: 0; }
.moca_layout_debug_fab.on { opacity: 1; color: #06131a; background: var(--c-primary); border-color: var(--c-primary); box-shadow: 0 0 10px var(--c-primary); }
.moca_layout_tag, .moca_layout_guide { display: none; }
.moca_layout.moca_layout_debug,
.moca_layout_debug .moca_layout { position: relative; outline: 1px solid rgba(0,240,255,.5); outline-offset: -1px; }
.moca_layout_debug .moca_layout_pane { position: relative; outline: 1px dashed rgba(0,240,255,.75); outline-offset: -1px; background: rgba(0,240,255,.06); }
.moca_layout_debug .moca_layout_pane > *:not(.moca_layout):not(.moca_layout_pane):not(.moca_layout_tag):not(.moca_layout_guide) { visibility: hidden; }
.moca_layout_debug .moca_layout_tag {
display: inline-block; position: absolute; top: 0; left: 0; z-index: 5; visibility: visible;
padding: 4px 12px; font: 700 14px/1.4 ui-monospace, monospace;
color: #06131a; background: var(--c-primary); border-radius: 0 0 8px 0;
box-shadow: 0 0 10px rgba(0,240,255,.55); pointer-events: auto; user-select: none;
}
.moca_layout_debug .moca_layout_tag:hover { font:700 25px/1.4 ui-monospace, monospace }
.moca_layout_debug .moca_layout_tag:hover ~ .moca_layout_pane { outline-color: #602F32; }
.moca_layout_debug .moca_layout_tag:hover ~ .moca_layout_pane::after {
content: ''; position: absolute; inset: 0; z-index: 2; pointer-events: none; background: #602F32;
}
.moca_layout_debug .moca_layout_pane::before {
content: attr(data-m-token);
position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
z-index: 4; visibility: visible; opacity: 0; transition: opacity .12s;
padding: 3px 12px; font: 700 13px/1.5 ui-monospace, monospace;
color: var(--c-primary); background: rgba(6,19,26,.92);
border: 1px solid rgba(0,240,255,.5); border-radius: 6px; pointer-events: none; white-space: nowrap;
}
.moca_layout_debug .moca_layout_tag:hover ~ .moca_layout_pane::before { opacity: 1; }
:is(.moca_layout_debug.moca_layout_row, .moca_layout_debug .moca_layout_row) > .moca_layout_pane > .moca_layout_guide,
:is(.moca_layout_debug.moca_layout_col, .moca_layout_debug .moca_layout_col) > .moca_layout_pane > .moca_layout_guide {
display: block; position: absolute; z-index: 3; opacity: 0; transition: opacity .12s; pointer-events: none;
--m-arrow-w: 12px; --m-arrow-d: 20px; --m-arrow-c: var(--c-primary);
}
.moca_layout_debug .moca_layout_pane > .moca_layout_guide::before,
.moca_layout_debug .moca_layout_pane > .moca_layout_guide::after {
content: ''; position: absolute; width: 0; height: 0; border-style: solid; border-color: transparent;
}
:is(.moca_layout_debug.moca_layout_row, .moca_layout_debug .moca_layout_row) > .moca_layout_pane > .moca_layout_guide {
top: 50%; left: var(--m-arrow-d); right: var(--m-arrow-d); height: 0; transform: translateY(-50%);
border-top: 2px dashed var(--m-arrow-c);
}
:is(.moca_layout_debug.moca_layout_row, .moca_layout_debug .moca_layout_row) > .moca_layout_pane > .moca_layout_guide::before {
top: 50%; left: calc(-1 * var(--m-arrow-d)); transform: translateY(-50%);
border-width: var(--m-arrow-w) var(--m-arrow-d) var(--m-arrow-w) 0; border-right-color: var(--m-arrow-c);
}
:is(.moca_layout_debug.moca_layout_row, .moca_layout_debug .moca_layout_row) > .moca_layout_pane > .moca_layout_guide::after {
top: 50%; right: calc(-1 * var(--m-arrow-d)); transform: translateY(-50%);
border-width: var(--m-arrow-w) 0 var(--m-arrow-w) var(--m-arrow-d); border-left-color: var(--m-arrow-c);
}
:is(.moca_layout_debug.moca_layout_col, .moca_layout_debug .moca_layout_col) > .moca_layout_pane > .moca_layout_guide {
left: 50%; top: var(--m-arrow-d); bottom: var(--m-arrow-d); width: 0; transform: translateX(-50%);
border-left: 2px dashed var(--m-arrow-c);
}
:is(.moca_layout_debug.moca_layout_col, .moca_layout_debug .moca_layout_col) > .moca_layout_pane > .moca_layout_guide::before {
left: 50%; top: calc(-1 * var(--m-arrow-d)); transform: translateX(-50%);
border-width: 0 var(--m-arrow-w) var(--m-arrow-d) var(--m-arrow-w); border-bottom-color: var(--m-arrow-c);
}
:is(.moca_layout_debug.moca_layout_col, .moca_layout_debug .moca_layout_col) > .moca_layout_pane > .moca_layout_guide::after {
left: 50%; bottom: calc(-1 * var(--m-arrow-d)); transform: translateX(-50%);
border-width: var(--m-arrow-d) var(--m-arrow-w) 0 var(--m-arrow-w); border-top-color: var(--m-arrow-c);
}
.moca_layout_debug .moca_layout_tag:hover ~ .moca_layout_pane > .moca_layout_guide { opacity: 1; }
.moca_layout_debug :is(.moca_tab_panel, [data-m-type="frame"]) .moca_layout,
.moca_layout_debug :is(.moca_tab_panel, [data-m-type="frame"]) .moca_layout_pane { outline: none !important; background: none !important; }
.moca_layout_debug :is(.moca_tab_panel, [data-m-type="frame"]) .moca_layout_tag,
.moca_layout_debug :is(.moca_tab_panel, [data-m-type="frame"]) .moca_layout_guide { display: none !important; }
.moca_layout_debug :is(.moca_tab_panel, [data-m-type="frame"]) .moca_layout_pane::before,
.moca_layout_debug :is(.moca_tab_panel, [data-m-type="frame"]) .moca_layout_pane::after { content: none !important; }
.moca_echart { width: 100%; height: 100%; min-height: 0; }
.lay_bd_detail .chart_panel_body { flex: 1; min-height: 0; padding: 15px; overflow: hidden; }
.moca_layout > .moca_layout_pane.lay_bd_detail { display: flex; flex-direction: column; min-height: 0; overflow: hidden;
background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius-md); }
.lay_bd_detail_body { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; padding: 15px; }
.lay_bd_detail_body > .moca_table_form { flex: 1; min-height: 0; }
.lay_bd_detail_body > .moca_table_form:last-child { margin-bottom: 0; }
.panel_hd_info { flex-shrink: 0; margin-left: 10px; font-size: 12px; color: var(--c-text-muted); text-align: right; }
.panel_hint { flex-shrink: 0; margin-top: 12px; padding: 10px 12px; background: var(--c-primary-pale); border-left: 2px solid var(--c-primary); border-radius: var(--radius-sm); font-size: 12px; line-height: 1.7; color: var(--c-text-sub); }
.moca_layout > .moca_layout_pane.panel_hint { margin-top: 0; }
.panel_hint .hint_title { display: block; margin-bottom: 7px; padding-bottom: 6px; border-bottom: 1px solid var(--c-border); font-size: 12.5px; font-weight: 700; color: var(--c-text); }
.panel_hint ul { margin: 0; padding-left: 15px; list-style: disc; }
.panel_hint li { margin-bottom: 6px; }
.panel_hint li:last-child { margin-bottom: 0; }
.panel_hint li::marker { color: var(--c-primary); }
.panel_hint b { color: var(--c-primary); font-weight: 600; }
.demo_pane { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 6px 10px; box-sizing: border-box; text-align: center; border: 1px solid var(--c-border); border-radius: var(--radius-md); background: var(--c-surface); color: var(--c-text-sub); font-size: 14px; font-weight: 700; overflow: auto; min-height: 60px; }
.demo_pane .sub { font-size: 12px; font-weight: 500; color: var(--c-text-muted); }
.lay_stat_card { display: flex; align-items: center; justify-content: space-around; gap: 8px;
height: 100%; box-sizing: border-box; padding: 12px 16px;
border: 1px solid var(--c-border); border-radius: var(--radius-md); background: var(--c-surface); }
.lay_stat_item { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.lay_stat_label { font-size: 12px; font-weight: 500; color: var(--c-text-muted); }
.lay_stat_value { font-size: 26px; font-weight: 800; line-height: 1; color: var(--c-text-sub); }
.lay_stat_value.cyan { color: var(--c-primary); }
.lay_stat_divider { width: 1px; align-self: stretch; margin: 8px 0; background: var(--c-border); }
.moca_find_bar   { display: inline-flex; align-items: center; gap: 4px; flex-shrink: 0; }
.moca_find_btn   { display: inline-flex; align-items: center; justify-content: center;
min-width: 30px; height: 30px; padding: 0 6px;
border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm);
background: var(--c-bg-elevated, var(--c-bg)); color: var(--c-text);
font-size: 13px; line-height: 1; cursor: pointer; }
.moca_find_btn:hover:not(:disabled) { border-color: var(--c-primary); color: var(--c-primary); }
.moca_find_btn:disabled { opacity: .4; cursor: not-allowed; }
.moca_find_hits  { min-width: 54px; padding: 0 2px; color: var(--c-text-sub); font-size: 13px;
text-align: center; white-space: nowrap; }
.moca_find_hits.is_none { color: var(--c-danger, #d9534f); font-weight: 600; }
.moca_find_input { width: 52px; height: 30px; padding: 0 4px; box-sizing: border-box;
background: var(--c-bg-input, var(--c-bg)); color: var(--c-text);
border: 1px solid var(--c-border-dark); border-radius: 3px;
font-size: 14px; text-align: center; }
.moca_find_input:focus { outline: none; border-color: var(--c-primary); }
.moca_find_input:disabled { opacity: .4; cursor: not-allowed; }
.moca_find_total { color: var(--c-text-sub); font-size: 14px; white-space: nowrap; }
.moca_find_total.is_none { color: var(--c-danger, #d9534f); font-weight: 600; }
.page_title_bar { display: flex; align-items: center; gap: 8px; flex-shrink: 0; border-bottom: 2px solid var(--c-border-color); padding-bottom: 10px; }
.page_title_bar .page_title_icon { font-size: 18px; line-height: 1; flex-shrink: 0; }
.page_title_bar .page_title_icon:empty, .page_title_bar .page_title_path:empty, .page_title_bar .page_title_id:empty { display: none; }
.page_title_bar .page_title_path { margin-left: auto; padding-left: 8px; display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--c-text-muted); white-space: nowrap; flex: 0 0 auto; }
.page_title_bar .page_title_home { width: 14px; height: 14px; flex-shrink: 0; background: var(--c-text-muted); -webkit-mask: url('../images/icon_home.svg') no-repeat center / 14px 14px; mask: url('../images/icon_home.svg') no-repeat center / 14px 14px; }
.page_title_bar .page_refresh_btn { position: relative; width: 26px; height: 26px; padding: 0; border: 1px solid var(--c-primary); border-radius: var(--radius-sm); background: var(--c-bg-elevated); cursor: pointer; flex-shrink: 0; transition: box-shadow 0.15s; }
.page_title_bar .page_refresh_btn::before { content: ''; position: absolute; inset: 0; background: var(--c-primary); -webkit-mask: url('../images/icon_refresh.svg') no-repeat center / 15px 15px; mask: url('../images/icon_refresh.svg') no-repeat center / 15px 15px; transition: transform 0.25s; }
.page_title_bar .page_refresh_btn:hover { box-shadow: 0 0 6px rgba(0,240,255,0.35); }
.page_title_bar .page_refresh_btn:hover::before { transform: rotate(180deg); }
.page_title_bar .page_title_id   { font-size: 16px; font-weight: 700; color: var(--c-primary); flex-shrink: 0; }
.page_title_bar .page_title_text { color: var(--c-text); font-size: 16px; font-weight: 600;
flex: 0 999 auto; min-width: 0;
white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.page_title_bar .page_info_btn,
.page_title_bar .page_source_btn,
.page_title_bar .page_refresh_btn {
position: relative; display: inline-flex; align-items: center; justify-content: center;
width: 26px; height: 26px; padding: 0; flex-shrink: 0;
border: 1px solid var(--c-primary); border-radius: var(--radius-sm);
background: var(--c-bg-elevated); color: var(--c-primary);
cursor: pointer; transition: box-shadow 0.15s; }
.page_title_bar .page_info_btn:hover,
.page_title_bar .page_source_btn:hover,
.page_title_bar .page_refresh_btn:hover { box-shadow: 0 0 6px rgba(0,240,255,0.35); }
.page_title_bar .page_info_btn::before,
.page_title_bar .page_source_btn::before {
content: ''; position: absolute; inset: 0; background: currentColor; }
.page_title_bar .page_info_btn::before {
-webkit-mask: url('../images/icon_page_info.svg') no-repeat center / 15px 15px;
mask: url('../images/icon_page_info.svg') no-repeat center / 15px 15px; }
.page_title_bar .page_source_btn::before {
-webkit-mask: url('../images/icon_page_source.svg') no-repeat center / 15px 15px;
mask: url('../images/icon_page_source.svg') no-repeat center / 15px 15px; }
.page_title_bar .page_info_btn img, .page_title_bar .page_source_btn img { display: none; }
.page_info_tooltip { position: fixed; background: #2B6BE0; color: #fff; border: 1px solid #4D8DFF; font-size: 11px; font-weight: 500; padding: 5px 10px; border-radius: 4px; white-space: nowrap; user-select: text; cursor: text; z-index: 9999; opacity: 0; pointer-events: none; transition: opacity 0.15s; box-shadow: 0 4px 14px rgba(0,0,0,0.55); }
.page_info_tooltip.visible { opacity: 1; pointer-events: auto; }
.bd_modal_title .pgi_title_path { min-width: 0; font-family: Consolas, 'Courier New', monospace; font-size: 12.5px; font-weight: 500; color: var(--c-text-sub); user-select: text; cursor: text; overflow-wrap: anywhere; }
.pgi_body       { display: flex; flex-direction: column; gap: 12px; word-break: keep-all; }
.pgi_copied     { font-size: 11.5px; color: var(--c-text-sub); }
.pgi_copy_ta    { position: fixed; left: -9999px; top: 0; width: 1px; height: 1px; opacity: 0; }
.page_hint_in_help .panel_hint { display: none; }
.pgi_body > #div_hints:empty { display: none; }
.pgi_rows       { display: flex; flex-direction: column; border-top: 1px solid var(--c-border); }
.pgi_row        { display: flex; gap: 10px; padding: 7px 4px; border-bottom: 1px solid var(--c-border); font-size: 12.5px; line-height: 1.5; }
.pgi_key        { flex: 0 0 62px; color: var(--c-text-sub); font-weight: 600; }
.pgi_val        { flex: 1 1 auto; min-width: 0; color: var(--c-text); overflow-wrap: anywhere; }
.pgi_val b      { font-weight: 700; color: var(--c-text); }
.pgi_val small  { font-size: 11.5px; color: var(--c-text-sub); }
.pgi_hint       { margin-top: 0; }
.bd_split_wrap { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: 15px; }
.bd_split_wrap > .moca_grid { min-height: 180px; }
.bd_panel { background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--radius-md); flex-shrink: 0; overflow-y: auto; max-height: 34vh; }
.bd_lr_wrap .bd_panel { overflow-y: unset; max-height: unset; }
.bd_panel_header { display: flex; align-items: center; justify-content: space-between; padding: 15px; background: var(--c-bg); border-bottom: 1px solid var(--c-border); border-radius: var(--radius-md) var(--radius-md) 0 0; }
.bd_panel_body { padding: 15px; overflow-y: auto; }
.bd_cont_view { width: 100%; min-height: 120px; max-height: 400px; padding: 8px 10px; box-sizing: border-box; line-height: 1.6; word-break: break-word; overflow-y: auto; border: 1px solid var(--c-border); background: var(--c-white); border-radius: 3px; font-size: 13px; }
.moca_calendar_picgrp { list-style: none; margin: 0; padding: 6px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.moca_calendar_item { text-align: center; }
.moca_calendar_item button { width: 100%; padding: 6px 0; background: none; border: 1px solid transparent; border-radius: var(--radius-sm); font-size: 11px; color: var(--c-text); cursor: pointer; transition: all 0.1s; }
.moca_calendar_item button:hover { background: var(--c-primary-light); color: var(--c-primary); border-color: var(--c-primary); }
.moca_calendar_item.active button { background: var(--c-primary); color: var(--c-bg); font-weight: 700; border-color: var(--c-primary-dark); }
.moca_calendar_lta { width: 100px; flex-shrink: 0; contain: size; border-right: 1px solid var(--c-border); display: flex; flex-direction: column; border-radius: var(--radius-md) 0 0 var(--radius-md); overflow: hidden; background: var(--c-header-bg); }
.moca_calendar_list { list-style: none; margin: 0; padding: 8px 6px 4px; flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 4px; }
.moca_calendar_list li { margin-bottom: 0; }
.moca_calendar_list button { width: 100%; text-align: center; padding: 5px 6px; background: transparent; border: 1px solid var(--c-border-dark); font-size: 11px; color: var(--c-text-sub); cursor: pointer; border-radius: var(--radius-sm); transition: all 0.12s; font-weight: 500; line-height: 1.3; white-space: nowrap; }
.moca_calendar_list li.active button { background: var(--c-primary-light); border-color: var(--c-primary); color: var(--c-primary); font-weight: 600; }
.moca_calendar_list button:hover { background: var(--c-grid-hover); border-color: var(--c-primary); color: var(--c-text); }
.moca_calendar_lta .moca_calendar_footer { border-top: 1px solid var(--c-border); padding: 8px 6px; flex-direction: row; flex-wrap: nowrap; justify-content: center; gap: 6px; }
.moca_calendar_lta .moca_calendar_btn_cancel, .moca_calendar_lta .moca_calendar_btn_ok { flex: 1 1 0; width: auto; min-width: 0; height: 30px; padding: 0; display: flex; align-items: center; justify-content: center; }
.moca_calendar_lta .moca_calendar_btn_cancel::before, .moca_calendar_lta .moca_calendar_btn_ok::before { content: ""; width: 14px; height: 14px; background: currentColor; mask-position: center; mask-repeat: no-repeat; mask-size: contain; -webkit-mask-position: center; -webkit-mask-repeat: no-repeat; -webkit-mask-size: contain; }
.moca_calendar_lta .moca_calendar_btn_cancel::before { mask-image: url('../images/icon_close.svg'); -webkit-mask-image: url('../images/icon_close.svg'); }
.moca_calendar_lta .moca_calendar_btn_ok::before { mask-image: url('../images/icon_check.svg'); -webkit-mask-image: url('../images/icon_check.svg'); }
.moca_calendar_lta .moca_calendar_btn_cancel { background: transparent; border-color: var(--c-border-dark); color: var(--c-text-sub); }
.moca_calendar_lta .moca_calendar_btn_cancel:hover { background: var(--c-bg); color: var(--c-text); }
.moca_calendar_lta .moca_calendar_btn_ok { background: var(--c-primary); border-color: var(--c-primary); color: var(--c-bg); }
.moca_calendar_lta .moca_calendar_btn_ok:hover { background: var(--c-primary-dark); border-color: var(--c-primary-dark); color: var(--c-bg); }
.moca_calendar_rta { flex: 1; padding: 6px; overflow: auto; }
.moca_calendar_row { display: flex; gap: 8px; }
.moca_calendar_fl { flex: 1; min-width: 175px; }
.calendar_ipt { display: flex; justify-content: center; padding: 3px 0; }
.calendar_ipt .moca_input { text-align: center !important; font-size: 11px !important; width: 88px !important; height: 22px !important; padding: 0 6px; }
.moca_calendar_fromto .moca_calendar { position: static; border: none; box-shadow: none; border-radius: 0; width: auto; }
.moca_calendar_fromto .moca_calendar .moca_calendar_header { border-radius: 0; }
.moca_popup_body { min-height: 120px; }
.moca_popup_body .page_wrap { padding: 0; }
.moca_popup_body .pop_btn_area { margin-top: 0; }
.moca_popup_body .page_wrap:has(> .moca_layout_fixed) { overflow: visible; }
body.moca_win_body > [data-m-kind="winbox"] { height: 100%; display: flex; flex-direction: column; }
body.moca_win_body .moca_popup_body { flex: 1 1 0; min-height: 0; box-sizing: border-box; }
body.moca_win_body .moca_layout.moca_layout_fixed { width: auto; height: auto; flex: 1 1 auto; }
body.moca_win_body .page_wrap:has(> .moca_layout_fixed) { height: 100%; overflow: hidden; }
.moca_popup_loading { display: flex; align-items: center; justify-content: center; gap: 8px; height: 120px; color: var(--c-text-muted); font-size: 13px; }
.moca_popup_loading span { display: inline-block; width: 16px; height: 16px; border: 2px solid var(--c-border); border-top-color: var(--c-primary); border-radius: 50%; animation: moca_spin 0.7s linear infinite; }
.moca_load_error { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-height: 140px; padding: 20px 16px; text-align: center; color: var(--c-text); }
.moca_load_error p { margin: 0; }
.moca_load_error_tit { font-size: 14px; font-weight: 600; }
.moca_load_error_sub { font-size: 12px; color: var(--c-text-muted); }
.moca_load_error_retry { margin-top: 8px; padding: 8px 18px; border: 1px solid var(--c-primary); border-radius: 6px; background: transparent; color: var(--c-primary); font: inherit; font-size: 13px; cursor: pointer; }
.moca_load_error_retry:hover { background: var(--c-primary); color: #fff; }
@keyframes moca_spin {
to { transform: rotate(360deg); }
}
.moca_messagebox_modal { position: fixed; inset: 0; background: rgba(26,43,56,0.45); z-index: 99995; display: flex; align-items: center; justify-content: center; }
.moca_messagebox_modal.moca_mb_top { align-items: flex-start; padding-top: max(24px, 6vh); overflow-y: auto; }
.moca_messagebox { background: var(--c-bg); border: 1px solid var(--c-primary); border-radius: var(--radius-lg); box-shadow: 0 12px 40px rgba(0,0,0,0.6); font-size: 13px; width: min(34em, calc(100vw - 32px)); padding: 28px 26px 22px; display: flex; flex-direction: column; align-items: center; gap: 12px; animation: moca_mb_fadein 0.18s ease; }
@keyframes moca_mb_fadein {
from { transform: translateY(-10px) scale(0.96); opacity: 0; }
to { transform: translateY(0) scale(1); opacity: 1; }
}
.moca_messagebox .ico { width: 2.4em; height: 2.4em; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 22px; font-weight: 700; line-height: 1; margin-bottom: 4px; flex-shrink: 0; }
.moca_messagebox.alert .ico { color: var(--c-success); border: 4px solid var(--c-success); }
.moca_messagebox.confirm .ico { color: var(--c-danger); border: 4px solid var(--c-danger); }
.moca_messagebox.error { border-color: var(--c-danger); }
.moca_messagebox.error .ico { color: var(--c-danger); border: 4px solid var(--c-danger); }
.moca_messagebox .moca_message { text-align: center; color: var(--c-text); font-size: 13px; line-height: 1.65; margin: 0; word-break: keep-all; }
.moca_messagebox .moca_message p { margin: 0; }
.moca_messagebox .moca_btnbox { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; justify-content: center; }
.moca_messagebox .moca_btn_confirm, .moca_messagebox .moca_btn_cancel { flex: 0 0 auto; min-height: max(40px, 2.4em); height: auto; padding: 0.5em 1.6em; font-size: 13px; font-weight:600; white-space: nowrap; border-radius: var(--radius-sm);}
.moca_confirm_input { margin-top: 12px; width: 100%; }
.moca_confirm_ipt   { width: 100%; box-sizing: border-box; min-height: max(40px, 2.6em); padding: 0 0.8em; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); background: var(--c-bg-input); color: var(--c-text); font-family: inherit; font-size: 14px; }
.moca_confirm_ipt:focus { outline: 2px solid var(--c-primary); outline-offset: 1px; border-color: var(--c-primary); }
.moca_confirm_radio { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; width: 100%; text-align: left; }
.moca_confirm_radio label { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); cursor: pointer; transition: border-color 0.15s, background 0.15s; }
.moca_confirm_radio label:hover { border-color: var(--c-primary); background: var(--c-primary-pale); }
.moca_confirm_radio input[type="radio"] {
appearance: none; -webkit-appearance: none;
font: inherit; flex-shrink: 0;
width: 1.15em; height: 1.15em;
margin: calc((1.5em - 1.15em) / 2) 0 0;
border: max(1.5px, 0.11em) solid var(--c-border-dark);
border-radius: 50%;
background: var(--c-bg-input);
cursor: pointer;
display: grid; place-content: center;
transition: border-color 0.15s;
}
.moca_confirm_radio input[type="radio"]::before {
content: ''; width: 0.55em; height: 0.55em; border-radius: 50%;
background: var(--c-primary); transform: scale(0); transition: transform 0.12s ease;
}
.moca_confirm_radio input[type="radio"]:checked { border-color: var(--c-primary); }
.moca_confirm_radio input[type="radio"]:checked::before { transform: scale(1); }
.moca_confirm_radio input[type="radio"]:focus-visible { outline: 2px solid var(--c-primary); outline-offset: 2px; }
.moca_confirm_radio input[type="radio"]:checked + span b { color: var(--c-primary); }
.moca_confirm_radio label:has(input:checked) { border-color: var(--c-primary); background: var(--c-primary-light); }
.moca_confirm_radio span { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.moca_confirm_radio span b { font-size: 13px; font-weight: 600; line-height: 1.5; color: var(--c-text); }
.moca_confirm_radio span .radio_desc { font-size: 11px; color: var(--c-text-sub); line-height: 1.4; }
.bd_lr_wrap { display: flex; flex-direction: row; flex: 1; min-height: 0; }
.bd_lr_left { display: flex; flex-direction: column; width: 50%; flex-shrink: 0; min-height: 0; }
.bd_lr_wrap.bd_lr_37 .bd_lr_left { width: 30%; }
.bd_split_wrap.bd_split_37 > .moca_grid { flex: 3; min-height: 0; }
.bd_split_wrap.bd_split_37 > [data-m-mobileview] { flex: 7; min-height: 0; display: flex; flex-direction: column; }
.bd_split_wrap.bd_split_37 > [data-m-mobileview] .bd_panel { flex: 1; min-height: 0; max-height: none; }
.bd_lr_right { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; margin-left: 15px; }
.bd_lr_right .bd_panel { border-top: none; flex: 1; display: flex; flex-direction: column; min-height: 0; }
.bd_lr_right .bd_panel_body { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; }
.bd_lr_right .bd_panel_body .moca_table_form { flex: 1; min-height: 0; overflow: hidden; }
.bd_lr_right .bd_panel_body [data-m-type="fileupload"] { flex-shrink: 0; }
[data-m-type="fileupload"][data-m-autoheight="false"] { flex: 1 1 0; min-height: 0; }
[data-m-type="fileupload"] td[id="FILE_DOWN"] { padding: 0 2px; }
[data-m-type="fileupload"] td[id="FILE_DOWN"] .grid_btn { display: flex; }
[data-m-type="fileupload"] td[id="FILE_DOWN"] .grid_btn button {
position: relative; flex: 1; height: 24px; padding: 0;
font-size: 0; color: transparent; background: transparent;
border: 1px solid var(--c-primary); border-radius: var(--radius-sm); cursor: pointer;
}
[data-m-type="fileupload"] td[id="FILE_DOWN"] .grid_btn button::before {
content: ''; position: absolute; inset: 0; background-color: var(--c-primary);
-webkit-mask: url('../images/icon_download.svg') no-repeat center / 14px 14px;
mask: url('../images/icon_download.svg') no-repeat center / 14px 14px;
}
.fu_wrap { display: flex; flex-direction: column; gap: 14px; height: 100%; }
.fu_btn_add { width: 100%; height: 44px; color: var(--c-primary); border: 1px solid var(--c-primary); border-radius: var(--radius-sm); font-size: 14px; font-weight: 700; letter-spacing: 0.5px; cursor: pointer; transition: background 0.15s; flex-shrink: 0; box-shadow: var(--shadow-sm); }
.fu_btn_add:hover { background: var(--c-primary-light); }
.fu_drop_zone { flex: 1; min-height: 200px; border: 2px dashed var(--c-border-dark); border-radius: var(--radius-md); background: var(--c-bg); display: flex; flex-direction: column; position: relative; overflow-y: auto; transition: background 0.15s, border-color 0.15s; }
.fu_drop_zone.fu_drag_over { background: var(--c-primary-light); border-color: var(--c-primary); border-style: solid; }
.fu_drop_hint { flex: 1; display: flex; align-items: center; justify-content: center; color: var(--c-text-muted); font-size: 13px; pointer-events: none; }
.fu_file_list { list-style: none; margin: 0; padding: 10px; display: flex; flex-direction: column; gap: 6px; }
.fu_file_item { display: flex; align-items: center; gap: 8px; padding: 7px 12px; background: var(--c-white); border: 1px solid var(--c-border); border-radius: var(--radius-sm); font-size: 12px; box-shadow: var(--shadow-sm); }
.fu_file_name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--c-text); }
.fu_file_size { flex-shrink: 0; color: var(--c-text-muted); min-width: 60px; text-align: right; font-size: 11px; }
.fu_file_del { flex-shrink: 0; width: 20px; height: 20px; background: var(--c-text-muted); color: var(--c-white); border: none; border-radius: 50%; font-size: 13px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; transition: background 0.15s; }
.fu_file_del:hover { background: var(--c-danger); }
.fu_btn_area { display: flex; justify-content: flex-end; flex-shrink: 0; }
.fu_btn_upload { height: 36px; padding: 0 32px; background: var(--c-primary); color: var(--c-white); border: none; border-radius: var(--radius-sm); font-size: 13px; font-weight: 600; cursor: pointer; transition: background 0.15s; box-shadow: var(--shadow-sm); }
.fu_btn_upload:hover { background: var(--c-primary-dark); }
.fileProgress { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; }
.fileProgress_ring { position: relative; width: 130px; height: 130px; }
.file_progressbar { display: block; width: 130px; height: 130px; }
.white_dim_txt { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 12px; font-weight: 700; color: var(--c-text); text-align: center; pointer-events: none; white-space: nowrap; line-height: 1.4; }
.moca_grid { background: var(--c-surface); border-color: var(--c-border); box-shadow: none; }
.moca_grid_toolbar { background: var(--c-grid-toolbar); border-bottom-color: var(--c-border); }
.lta span { color: var(--c-text-sub) !important; }
.moca_grid_body thead tr { background: var(--c-grid-th); }
.moca_grid_body thead th { background: var(--c-grid-th); color: var(--c-text-muted); border-color: var(--c-border); }
.moca_grid_body tbody tr { border-bottom-color: var(--c-border); }
.moca_grid_body tbody tr:nth-child(even) { background: var(--c-grid-row-alt); }
.moca_grid_body tbody td { color: var(--c-text-body); border-right-color: var(--c-border); }
.moca_grid_body tbody tr.selected { background: var(--c-grid-selected) !important; box-shadow: inset 3px 0 0 var(--c-primary); }
.moca_grid_body tbody tr.selected td { color: var(--c-text-selected) !important; }
.moca_selectbox select { background: var(--c-bg-input); border-color: var(--c-border-dark); color: var(--c-text); }
.moca_selectbox select:focus { border-color: var(--c-primary); box-shadow: 0 0 0 2px var(--c-primary-pale); }
.moca_selectbox select:disabled { background: var(--c-bg-input-readonly); color: var(--c-text-muted); }
.moca_selectbox { width: var(--m-field-width); }
.moca_selectbox select {
-webkit-appearance: none; -moz-appearance: none; appearance: none;
padding-right: 30px;
background-image: url('../images/icon_cmb_arrow.svg'),
linear-gradient(var(--c-border), var(--c-border)),
linear-gradient(var(--c-surface), var(--c-surface));
background-repeat: no-repeat;
background-position: right 6px center, right 24px center, right center;
background-size: 12px 8px, 1px 60%, 24px calc(100% - 2px);
}
.moca_selectbox select:hover:not(:disabled) {
background-image: url('../images/icon_cmb_arrow_hover.svg'),
linear-gradient(var(--c-border), var(--c-border)),
linear-gradient(var(--c-surface), var(--c-surface));
}
.moca_selectbox select:disabled {
background-image: url('../images/icon_cmb_arrow.svg'),
linear-gradient(var(--c-border), var(--c-border)),
linear-gradient(var(--c-bg-input-readonly), var(--c-bg-input-readonly));
background-repeat: no-repeat;
background-position: right 6px center, right 24px center, right center;
background-size: 12px 8px, 1px 60%, 24px calc(100% - 2px);
}
.moca_textarea > * { background: var(--c-bg-input); border-color: var(--c-border); color: var(--c-text); }
.moca_textarea > *:focus { border-color: var(--c-primary); box-shadow: 0 0 0 2px var(--c-primary-pale); background: var(--c-bg-input-focus); }
.moca_textarea > *[contenteditable="false"] { background: var(--c-bg-input-readonly); color: var(--c-text-muted); }
.moca_table_form th, div.moca_table_form [data-m-cell="th"] { background: var(--c-grid-toolbar); color: var(--c-text-muted); border-color: var(--c-border); }
.moca_table_form td, div.moca_table_form [data-m-cell="td"] { background: var(--c-bg-elevated); border-color: var(--c-border); }
div.moca_table_form [data-m-type="table"] { border-color: var(--c-border); }
.bd_panel { background: var(--c-surface); border-color: var(--c-border); }
.bd_panel_header { background: var(--c-grid-toolbar); border-bottom-color: var(--c-border); }
.bd_modal_title { color: var(--c-text); }
.bd_modal_title::before { background-color: var(--c-primary); }
.bd_file_section { border-color: var(--c-border); }
.bd_file_header { background: var(--c-grid-toolbar); border-bottom-color: var(--c-border); }
.bd_file_header span { color: var(--c-text-sub); }
.bd_file_list_table th { background: var(--c-grid-toolbar); color: var(--c-text-muted); border-bottom-color: var(--c-border); }
.bd_file_list_table td { color: var(--c-text-body); border-bottom-color: var(--c-border); }
.bd_file_nm_cell { color: var(--c-primary); }
.bd_new_badge { background: var(--c-primary-light); color: var(--c-primary); }
.pending_row td { background: var(--c-primary-pale); }
.bd_dl_btn { background: transparent; color: var(--c-primary); border-color: var(--c-primary); }
.bd_dl_btn:hover { background: var(--c-primary); color: var(--c-bg); }
.bd_file_del_btn { background: transparent; color: var(--c-danger); border-color: var(--c-danger); }
.bd_file_del_btn:hover { background: var(--c-danger); color: #fff; }
.moca_alert_overlay, .moca_confirm_overlay { background: rgba(0,0,0,0.65); }
.moca_alert_box, .moca_confirm_box { background: var(--c-header-bg); border-color: var(--c-border); box-shadow: var(--shadow-lg); }
.moca_alert_title, .moca_confirm_title { background: var(--c-grid-toolbar); color: var(--c-text); border-bottom-color: var(--c-border); }
.moca_alert_msg, .moca_confirm_msg { color: var(--c-text-body); }
.moca_alert_btn_area, .moca_confirm_btn_area { border-top-color: var(--c-border); }
.moca_btn_cancel { background: var(--c-grid-hover) !important; color: var(--c-text-sub) !important; border-color: var(--c-border-dark) !important; }
.moca_btn_cancel:hover { background: var(--c-bg-hover) !important; color: var(--c-text) !important; }
.bd_overlay { background: rgba(0,0,0,0.65); }
.bd_modal { background: var(--c-header-bg); border: 1px solid var(--c-border); box-shadow: var(--shadow-lg); }
.bd_modal_header { background: var(--c-grid-toolbar); border-bottom-color: var(--c-primary); }
.bd_modal_body { background: var(--c-surface); }
.moca_loading { background: rgba(11,17,22,0.80); }
.moca_loading::after { border-color: var(--c-border); border-top-color: var(--c-primary); }
.moca_grid_full_wrap { background: var(--c-bg); }
.moca_calendar, .moca_calendar_fromto { background: var(--c-header-bg); border-color: var(--c-primary); }
.PopColgroup { background: var(--c-header-bg); border-color: var(--c-border); }
.groupListHeader { background: var(--c-grid-toolbar); border-bottom-color: var(--c-border); }
.ly_col_cont { background: var(--c-surface); border-color: var(--c-border); }
.groupColList li { color: var(--c-text-body); border-bottom-color: var(--c-border); }
.groupColList li:hover { background: var(--c-grid-hover); color: var(--c-primary); }
.groupColList li.on { background: var(--c-primary); color: var(--c-bg); }
.moca_grid_tooltip { background: var(--c-primary); color: var(--c-bg); }
.fu_drop_zone { background: var(--c-bg-elevated); border-color: var(--c-border-dark); }
.fu_drop_zone.fu_drag_over { background: var(--c-primary-pale); border-color: var(--c-primary); }
.fu_file_item { background: var(--c-surface); border-color: var(--c-border); }
.fu_file_name { color: var(--c-text-body); }
.moca_grid_toolbar .button { background-color: transparent; border-color: var(--c-border-dark); box-shadow: none; }
.moca_grid_toolbar .button:hover { background-color: var(--c-primary-light); border-color: var(--c-primary); }
.moca_grid_toolbar .button:active { background-color: var(--c-primary-light); }
.moca_grid_toolbar .btn_save { background: var(--c-success); border: 1px solid var(--c-success); color: var(--c-bg); box-shadow: none; }
.moca_grid_toolbar .btn_save:hover { filter: brightness(0.88); }
.page_root { display: flex; flex-direction: column; height: 100%; background: var(--c-bg); }
textarea { background: var(--c-bg-input); color: var(--c-text); border: 1px solid var(--c-border); border-radius: var(--radius-sm); }
.cke_inner { background: none !important; }
.cke_chrome { width: 100%; border: 0 !important; border-radius: var(--radius-sm) !important; background: var(--c-surface) !important; box-shadow: 0 0 0 1px var(--c-border) !important; }
.cke_top { background: var(--c-surface) !important; border-bottom: 1px solid var(--c-border) !important; padding: 4px 6px 2px !important; border-radius: 6px 6px 0 0 !important; }
.cke_toolbar_separator { background-color: var(--c-border) !important; }
.cke_toolgroup { border-right: 1px solid var(--c-border) !important; }
.cke_button { border-radius: 3px !important; }
.cke_button:hover { background: var(--c-bg-hover) !important; border-color: var(--c-border-dark) !important; }
.cke_button_on, .cke_button_on:hover { background: rgba(0,240,255,0.12) !important; border: 1px solid rgba(0,240,255,0.4) !important; }
.cke_button_icon { filter: brightness(0) invert(0.85); }
.cke_button_on .cke_button_icon { filter: brightness(0) invert(1) sepia(1) hue-rotate(152deg) saturate(5); }
.cke_combo_button { background: var(--c-bg-elevated) !important; border: 1px solid var(--c-border) !important; border-radius: 3px !important; }
.cke_combo_button:hover { background: var(--c-bg-hover) !important; border-color: var(--c-border-dark) !important; }
.cke_combo_text { color: var(--c-text-sub) !important; }
.cke_combo_arrow { border-top-color: var(--c-text-sub) !important; }
.cke_bottom { background: var(--c-bg) !important; border-top: 1px solid var(--c-border) !important; border-radius: 0 0 6px 6px !important; }
.cke_path_item, .cke_path_empty { color: var(--c-text-muted) !important; }
.cke_path_item:hover { background: var(--c-bg-hover) !important; color: var(--c-primary) !important; }
.cke_resizer { border-color: transparent var(--c-border) transparent transparent !important; }
.cke_contents { border: none !important; }
.cke_wysiwyg_frame, .cke_wysiwyg_div { background: var(--c-bg-input) !important; }
.cke_contents { opacity: 0; animation: mocaCkeReveal 0.15s ease 1.2s forwards; }
.cke.moca_cke_ready .cke_contents { opacity: 1; animation: none; }
@keyframes mocaCkeReveal { to { opacity: 1; } }
textarea.cke_source { background: var(--c-bg-input) !important; color: var(--c-text) !important; border: none !important; font-family: 'Consolas', 'Monaco', monospace !important; font-size: 12px !important; line-height: 1.6 !important; caret-color: var(--c-primary) !important; padding: 12px 16px !important; }
.cke_panel_block { background: var(--c-surface) !important; }
.cke_panel_grouptitle { background: var(--c-bg-elevated) !important; color: var(--c-text-sub) !important; border-bottom: 1px solid var(--c-border) !important; font-size: 10px !important; }
.cke_panel_list { background: var(--c-surface) !important; max-height: 260px !important; overflow-y: auto !important; }
.cke_panel_listItem a:link, .cke_panel_listItem a:visited { color: var(--c-text) !important; }
.cke_panel_listItem a:hover, .cke_panel_listItem:hover a { background: var(--c-bg-hover) !important; color: var(--c-primary) !important; }
.cke:not(.cke_panel) { width: 100% !important; height: 100% !important; display: flex !important; flex-direction: column !important; }
.cke_top { flex-shrink: 0; }
.cke_chrome:not(.cke_panel) { height: 100% !important; }
.cke:not(.cke_panel) > .cke_inner { height: 100% !important; display: flex !important; flex-direction: column; }
.cke_panel.cke, .cke_panel.cke_chrome { width: auto !important; height: auto !important; display: block !important; }
.cke_panel .cke_inner { height: auto !important; display: block !important; }
.cke_contents { flex: 1 !important; height: auto !important; }
.cke_chrome { box-sizing: border-box !important; }
.flex-grow1 { flex-grow:1 }
div[data-m-type="form"].flex { display:flex; flex-direction:column; min-height:0; }
div[data-m-type="form"].flex > .moca_form_body { flex:1; min-height:0; display:flex; flex-direction:column; }
.moca_table_form.flex [data-m-body="tbody"] { display:flex; flex-direction:column; height:100%; flex:1; min-height:0; }
div.moca_table_form [data-m-row="tr"].flex-grow1 { min-height:0; }
div.moca_table_form [data-m-row="tr"].flex-grow1 > [data-m-cell="td"] { align-items:stretch; min-height:0; }
div.moca_table_form [data-m-row="tr"].flex-grow1 > [data-m-cell="td"] > [data-m-type="ckeditor"],
div.moca_table_form [data-m-row="tr"].flex-grow1 > [data-m-cell="td"] > [data-m-type="textarea"],
div.moca_table_form [data-m-row="tr"].flex-grow1 > [data-m-cell="td"] > .moca_textarea { flex:1; min-width:0; height:100%; }
.dash_wrap { height: 100%; overflow: hidden; display: flex; flex-direction: column; background: var(--c-bg); box-sizing: border-box; }
.dash_inner { flex: 1; min-height: 0; display: flex; flex-direction: column; padding: 20px; min-width: 680px; }
.dash_header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 18px; flex-shrink: 0; }
.dash_title { font-size: 18px; font-weight: 700; color: var(--c-text); letter-spacing: -0.3px; display: flex; align-items: center; gap: 8px; }
.dash_subtitle { font-size: 12px; color: var(--c-text-muted); margin-top: 4px; }
.dash_btn_refresh { background: var(--c-primary); color: var(--c-bg); border: none; border-radius: var(--radius-md); padding: 7px 16px; font-size: 12px; font-weight: 700; cursor: pointer; transition: background .15s; white-space: nowrap; }
.dash_btn_refresh:hover { background: var(--c-primary-dark); }
.kpi_row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; flex-shrink: 0; }
.kpi_card { background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius-lg); padding: 16px 18px; box-shadow: var(--shadow-sm); display: flex; align-items: center; gap: 14px; }
.kpi_icon { width: 48px; height: 48px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 700; flex-shrink: 0; letter-spacing: -1px; }
.kpi_icon.sale { background: rgba(0,240,255,0.12); color: var(--c-primary); border: 1px solid rgba(0,240,255,0.25); }
.kpi_icon.member { background: rgba(34,211,160,0.12); color: var(--c-success); border: 1px solid rgba(34,211,160,0.25); }
.kpi_icon.project { background: rgba(255,160,64,0.12); color: var(--c-warning); border: 1px solid rgba(255,160,64,0.25); }
.kpi_icon.visit { background: rgba(255,104,104,0.12); color: var(--c-danger); border: 1px solid rgba(255,104,104,0.25); }
.kpi_info { flex: 1; min-width: 0; }
.kpi_label { font-size: 12px; color: var(--c-text-muted); margin-bottom: 5px; white-space: nowrap; }
.kpi_value { font-size: 22px; font-weight: 700; color: var(--c-text); line-height: 1.1; white-space: nowrap; }
.kpi_unit { font-size: 12px; font-weight: 400; color: var(--c-text-muted); margin-left: 2px; }
.chart_row { display: grid; gap: 14px; margin-bottom: 14px; flex: 1; min-height: 0; }
.chart_row:last-child { margin-bottom: 0; }
.chart_row.r6_4 { grid-template-columns: 6fr 4fr; }
.chart_row.r5_5 { grid-template-columns: 1fr 1fr; }
.chart_row.r3_7 { grid-template-columns: 3fr 7fr; }
.chart_box { background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius-lg); padding: 16px 18px 12px; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; min-height: 0; }
.chart_box_title { font-size: 12px; font-weight: 600; color: var(--c-text-sub); margin-bottom: 10px; letter-spacing: 0.2px; flex-shrink: 0; }
.chart_box .chart_el { min-height: 0; }
@media (max-width: 1024px) {
.kpi_row { grid-template-columns: repeat(2,1fr); }
.chart_row.r6_4, .chart_row.r5_5, .chart_row.r3_7 { grid-template-columns: 1fr; }
.dash_wrap { overflow-y: auto; }
.dash_inner { display: block; }
.chart_row { flex: none; }
.chart_box .chart_el { min-height: 220px; }
}
@media (max-width: 540px) {
.kpi_row { grid-template-columns: 1fr; }
.dash_inner { padding: 12px 14px; min-width:unset; }
.page_wrap { padding: 12px; }
}
.wdash_wrap  { height:100%; overflow-y:auto; background:var(--c-bg); }
.wdash_inner { min-width:680px; }
.wdash_hd                   { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:18px; gap:12px; }
.wdash_hd_left .wdash_title { font-size:18px; font-weight:700; color:var(--c-text); letter-spacing:-.3px; display:flex; align-items:center; gap:8px; }
.wdash_hd_left .wdash_ts    { font-size:12px; color:var(--c-text-muted); margin-top:4px; }
.wdash_hd_right             { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.wdash_edit_buttons         { display:flex; align-items:center; gap:8px; }
.wdash_edit_buttons[hidden] { display:none; }
.btn_dsh_refresh { padding:6px 14px; background:transparent; color:var(--c-text-muted); border:1px solid var(--c-border); border-radius:var(--radius-md); font-size:12px; font-weight:600; cursor:pointer; transition:all .15s; }
.btn_dsh_refresh:hover { color:var(--c-primary); border-color:var(--c-primary); }
.btn_dsh_edit    { padding:6px 16px; background:var(--c-surface); color:var(--c-text-sub); border:1px solid var(--c-border-dark); border-radius:var(--radius-md); font-size:12px; font-weight:600; cursor:pointer; transition:all .15s; }
.btn_dsh_edit:hover    { border-color:var(--c-primary); color:var(--c-primary); }
.btn_dsh_save    { padding:6px 16px; background:var(--c-primary); color:var(--c-bg); border:none; border-radius:var(--radius-md); font-size:12px; font-weight:700; cursor:pointer; transition:background .15s; }
.btn_dsh_save:hover    { background:var(--c-primary-dark); }
.btn_dsh_cancel  { padding:6px 16px; background:transparent; color:var(--c-text-muted); border:1px solid var(--c-border); border-radius:var(--radius-md); font-size:12px; font-weight:600; cursor:pointer; transition:all .15s; }
.btn_dsh_cancel:hover  { color:var(--c-text); border-color:var(--c-border-dark); }
.btn_dsh_add     { display:flex; align-items:center; gap:5px; padding:6px 14px; background:transparent; color:var(--c-primary); border:1px dashed var(--c-primary); border-radius:var(--radius-md); font-size:12px; font-weight:600; cursor:pointer; transition:all .15s; }
.btn_dsh_add:hover     { background:var(--c-primary-light); }
.edit_banner      { display:none; align-items:center; gap:8px; padding:8px 14px; background:rgba(0,240,255,.06); border:1px solid rgba(0,240,255,.2); border-radius:var(--radius-md); margin-bottom:16px; }
.edit_banner.show { display:flex; }
.edit_banner_txt  { font-size:12px; color:var(--c-text-sub); }
.widget_grid { display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:150px; gap:14px; }
.widget_loading { display:flex; align-items:center; justify-content:center; height:100%; min-height:80px; }
.widget_loading span {
width:22px; height:22px; border-radius:50%;
border:2px solid var(--c-border-dark); border-top-color:var(--c-primary);
animation: widget_spin .8s linear infinite;
}
@keyframes widget_spin { to { transform: rotate(360deg); } }
.widget_item       { display:flex; flex-direction:column; border-radius:var(--radius-lg); border:2px solid transparent; transition:border-color .15s, box-shadow .15s, opacity .2s; min-height:0; grid-row:span 2; }
.widget_item.ws_c2 { grid-column:span 2; }
.widget_item.ws_c3 { grid-column:span 3; }
.widget_item.ws_c4 { grid-column:span 4; }
.widget_item.ws_rh { grid-row:span 1; }
.widget_item.ws_r2 { grid-row:span 4; }
.widget_item.ws_r3 { grid-row:span 6; }
.widget_grid.edit_mode .widget_item          { cursor:grab; border-color:var(--c-border-dark); border-style:dashed; }
.widget_grid.edit_mode .widget_item:hover    { border-color:var(--c-primary); }
.widget_grid.edit_mode .widget_item.dragging { opacity:.3; cursor:grabbing; }
.widget_grid.edit_mode .widget_item.drag_over { border-color:var(--c-primary); border-style:solid; box-shadow:0 0 0 3px rgba(0,240,255,.2); }
.widget_edit_bar { display:none; flex-shrink:0; align-items:center; justify-content:space-between; padding:5px 8px; background:rgba(11,17,22,.92); border-radius:var(--radius-lg) var(--radius-lg) 0 0; overflow:visible; }
.widget_grid.edit_mode .widget_edit_bar { display:flex; }
.widget_drag_handle { color:var(--c-text-muted); font-size:15px; cursor:grab; user-select:none; padding:0 4px; line-height:1; letter-spacing:1px; }
.widget_drag_handle:hover { color:var(--c-primary); }
.widget_remove_btn  { width:20px; height:20px; display:flex; align-items:center; justify-content:center; background:transparent; border:1px solid var(--c-border); border-radius:50%; color:var(--c-text-muted); font-size:12px; cursor:pointer; transition:all .15s; }
.widget_remove_btn:hover { background:var(--c-danger); border-color:var(--c-danger); color:#fff; }
.wsp_wrap          { position:relative; }
.widget_resize_btn { background:rgba(0,240,255,.1); border:1px solid rgba(0,240,255,.3); color:var(--c-primary); border-radius:6px; font-size:12px; padding:2px 7px; cursor:pointer; white-space:nowrap; transition:background .15s; }
.widget_resize_btn:hover { background:rgba(0,240,255,.2); }
.ws_picker         { display:none; position:absolute; top:calc(100% + 4px); left:0; z-index:300; background:#0d1b2a; border:1px solid var(--c-border-dark); border-radius:10px; padding:10px 12px; min-width:190px; box-shadow:0 8px 24px rgba(0,0,0,.6); }
.ws_picker.open    { display:block; }
.wsp_row           { display:flex; align-items:center; gap:5px; margin-bottom:8px; }
.wsp_row:last-child { margin-bottom:0; }
.wsp_lbl           { font-size:12px; color:var(--c-text-muted); min-width:28px; flex-shrink:0; }
.wsp_btn           { background:rgba(255,255,255,.06); border:1px solid var(--c-border); color:var(--c-text-sub); border-radius:6px; font-size:12px; padding:3px 9px; cursor:pointer; transition:all .15s; }
.wsp_btn:hover     { background:rgba(0,240,255,.15); border-color:var(--c-primary); color:var(--c-primary); }
.wsp_btn.active    { background:rgba(0,240,255,.18); border-color:var(--c-primary); color:var(--c-primary); font-weight:700; }
.widget_card { background:var(--c-surface); border:1px solid var(--c-border); border-radius:var(--radius-lg); overflow:hidden; flex:1; min-height:0; display:flex; flex-direction:column; }
.widget_grid.edit_mode .widget_item .widget_card { border-color:transparent; border-top-left-radius:0; border-top-right-radius:0; }
.widget_card_hd    { display:flex; align-items:center; padding:12px 16px 10px; border-bottom:1px solid var(--c-border); flex-shrink:0; }
.widget_card_title { font-size:13px; font-weight:700; color:var(--c-text); flex:1; min-width:0; }
.widget_body, .moca_widget_frame { flex:1; min-height:0; display:flex; flex-direction:column; }
[data-m-widget-definition] { flex:1; min-height:0; }
[data-m-widget-definition]:not(.widget_kpi_inner) { display:flex; flex-direction:column; }
.widget_kpi_inner { flex:1; display:flex; align-items:center; gap:14px; padding:18px 16px; }
.widget_kpi_icon  { width:46px; height:46px; border-radius:var(--radius-md); display:flex; align-items:center; justify-content:center; font-size:18px; font-weight:700; flex-shrink:0; }
.widget_kpi_icon.cyan   { background:rgba(0,240,255,.12);  color:var(--c-primary); }
.widget_kpi_icon.green  { background:rgba(34,211,160,.12); color:var(--c-success); }
.widget_kpi_icon.purple { background:rgba(168,85,247,.12); color:var(--c-warning); }
.widget_kpi_icon.orange { background:rgba(255,160,64,.12); color:var(--c-danger); }
.widget_kpi_label { font-size:12px; color:var(--c-text-muted); margin-bottom:5px; }
.widget_kpi_value { font-size:22px; font-weight:800; color:var(--c-text); line-height:1.1; }
.widget_kpi_value .ku { font-size:13px; font-weight:500; color:var(--c-text-muted); margin-left:2px; }
.widget_chart_body { flex:1; min-height:0; padding:8px 12px 12px; display:flex; flex-direction:column; }
.chart_el { flex:1; width:100%; min-height:160px; }
.widget_list_body       { flex:1; overflow-y:auto; min-height:0; }
.widget_list_item       { display:flex; align-items:center; gap:10px; padding:9px 16px; border-bottom:1px solid var(--c-border); transition:background .1s; cursor:default; }
.widget_list_item:last-child { border-bottom:none; }
.widget_list_item:hover { background:var(--c-bg-hover); }
.widget_list_badge        { flex-shrink:0; width:6px; height:6px; border-radius:50%; }
.widget_list_badge.cyan   { background:var(--c-primary); }
.widget_list_badge.green  { background:var(--c-success); }
.widget_list_badge.orange { background:var(--c-warning); }
.widget_list_badge.red    { background:var(--c-danger); }
.widget_list_text { flex:1; min-width:0; }
.widget_list_main { font-size:12px; color:var(--c-text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.widget_list_sub  { font-size:12px; color:var(--c-text-muted); margin-top:1px; }
.widget_list_date { font-size:12px; color:var(--c-text-muted); flex-shrink:0; }
.add_widget_overlay     { display:none; position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:500; align-items:center; justify-content:center; }
.add_widget_overlay.open { display:flex; }
.add_widget_panel        { background:var(--c-surface); border:1px solid var(--c-border-dark); border-radius:var(--radius-lg); padding:22px; min-width:340px; max-width:460px; width:92%; box-shadow:var(--shadow-lg); }
.add_widget_panel_title  { font-size:15px; font-weight:700; color:var(--c-text); margin-bottom:4px; }
.add_widget_panel_sub    { font-size:12px; color:var(--c-text-muted); margin-bottom:16px; }
.add_widget_list         { display:flex; flex-direction:column; gap:6px; max-height:300px; overflow-y:auto; margin-bottom:14px; }
.add_widget_btn          { display:flex; align-items:center; gap:12px; padding:10px 14px; background:var(--c-bg); border:1px solid var(--c-border); border-radius:var(--radius-md); cursor:pointer; text-align:left; transition:all .15s; }
.add_widget_btn:hover    { border-color:var(--c-primary); background:var(--c-primary-pale); }
.add_widget_btn.is_added { opacity:.55; cursor:default; }
.add_widget_btn.is_added:hover { border-color:var(--c-border); background:var(--c-bg); }
.add_widget_btn_icon     { width:34px; height:34px; border-radius:var(--radius-sm); background:var(--c-surface); display:flex; align-items:center; justify-content:center; font-size:15px; flex-shrink:0; }
.add_widget_btn_name     { font-size:13px; color:var(--c-text); font-weight:600; }
.add_widget_btn_type     { font-size:12px; color:var(--c-text-muted); margin-top:1px; }
.add_widget_empty        { text-align:center; padding:28px; color:var(--c-text-muted); font-size:12px; }
.add_widget_close        { width:100%; padding:8px; background:transparent; border:1px solid var(--c-border); border-radius:var(--radius-md); color:var(--c-text-muted); font-size:12px; cursor:pointer; transition:all .15s; }
.add_widget_close:hover  { border-color:var(--c-border-dark); color:var(--c-text); }
.widget_move_btns { display:none; align-items:center; gap:4px; }
.widget_move_btn  { width:22px; height:22px; display:flex; align-items:center; justify-content:center; background:transparent; border:1px solid var(--c-border); border-radius:var(--radius-sm); color:var(--c-text-muted); font-size:13px; cursor:pointer; transition:all .15s; }
.widget_move_btn:hover { background:var(--c-primary-light); border-color:var(--c-primary); color:var(--c-primary); }
.widget_move_btn:disabled { opacity:.3; cursor:default; }
.ww_wrap     { display:flex; flex-direction:column; height:100%; padding:16px; gap:12px; }
.ww_loading  { flex:1; display:flex; align-items:center; justify-content:center; color:var(--c-text-muted); font-size:13px; }
.ww_top      { display:flex; align-items:center; gap:14px; }
.ww_icon     { font-size:46px; line-height:1; flex-shrink:0; }
.ww_main     { flex:1; }
.ww_temp     { font-size:34px; font-weight:700; color:var(--c-text); line-height:1; }
.ww_deg      { font-size:16px; font-weight:400; color:var(--c-text-sub); margin-left:2px; }
.ww_city     { font-size:12px; color:var(--c-text-sub); margin-top:3px; }
.ww_desc     { font-size:12px; color:var(--c-primary); margin-top:2px; }
.ww_details  { display:grid; grid-template-columns:repeat(4,1fr); gap:4px; padding:10px 0; border-top:1px solid var(--c-border); border-bottom:1px solid var(--c-border); }
.ww_det      { display:flex; flex-direction:column; align-items:center; gap:3px; }
.ww_lbl      { font-size:12px; color:var(--c-text-muted); }
.ww_val      { font-size:12px; font-weight:600; color:var(--c-text-body); }
.ww_forecast { display:flex; gap:4px; }
.ww_fc       { display:flex; flex-direction:column; align-items:center; gap:2px; flex:1; padding:6px 2px; background:rgba(255,255,255,0.03); border-radius:8px; }
.ww_fc_day   { font-size:12px; color:var(--c-text-muted); }
.ww_fc_ico   { font-size:15px; }
.ww_fc_hi    { font-size:12px; font-weight:600; color:var(--c-text-body); }
.ww_fc_lo    { font-size:12px; color:var(--c-text-muted); }
.ww_no_data { display:flex; align-items:center; justify-content:center; height:100%; text-align:center; font-size:13px; color:var(--c-text-muted); line-height:1.8; }
.ww_city_wrap { position:relative; flex-shrink:0; margin-right:6px; }
.ww_city_btn { padding:2px 8px; font-size:12px; background:#0e1e2d; border:1px solid var(--c-border-dark); color:var(--c-text-body); border-radius:4px; cursor:pointer; white-space:nowrap; max-width:72px; overflow:hidden; text-overflow:ellipsis; }
.ww_city_btn:hover { border-color:rgba(0,240,255,0.5); color:var(--c-primary); }
.ww_city_list { display:none; position:absolute; top:calc(100% + 4px); right:0; z-index:200; background:var(--c-surface); border:1px solid var(--c-border-dark); border-radius:6px; width:100px; padding:4px 0; box-shadow:0 8px 24px rgba(0,0,0,0.7); }
.ww_city_list.open { display:block; }
.ww_city_item { padding:5px 12px; font-size:12px; color:var(--c-text-sub); cursor:pointer; user-select:none; }
.ww_city_item:hover { color:var(--c-primary); background:var(--c-primary-pale); }
.ww_city_item.active { color:var(--c-primary); font-weight:700; }
.ww_region_img { flex-shrink:0; display:flex; align-items:center; }
.ww_rimg { width:64px; height:64px; opacity:0.75; filter:drop-shadow(0 0 8px rgba(0,240,255,0.45)); }
.wgt_cal_wrap { display:flex; flex-direction:column; gap:6px; height:100%; padding:12px; box-sizing:border-box; }
.wgt_cal_wrap .moca_cal { flex:1; min-height:0; padding:0; border:none; background:transparent; }
.wgt_cal_wrap .moca_cal .mcal_body { flex:1; }
.wgt_cal_wrap .moca_cal .mcal_grid_day { flex:1; min-height:0; grid-auto-rows:1fr; }
.wgt_cal_wrap .moca_cal .mcal_day { height:auto; min-height:22px; }
.wgt_cal_wrap .moca_cal .mcal_legend { margin-top:6px; padding-top:6px; gap:2px 10px; }
.wgt_cal_pick { flex:none; text-align:right; font-size:12px; color:var(--c-text-sub); }
.wc_wrap    { display:flex; flex-direction:column; height:100%; padding:16px; }
.wc         { display:flex; flex-direction:column; height:100%; gap:12px; }
.wc_hd      { display:flex; align-items:center; justify-content:space-between; }
.wc_title   { font-size:14px; font-weight:700; color:var(--c-text); letter-spacing:-.3px; }
.wc_nav     { background:rgba(255,255,255,0.05); border:none; color:var(--c-text-sub); width:28px; height:28px; border-radius:8px; cursor:pointer; font-size:18px; display:flex; align-items:center; justify-content:center; padding:0; transition:all .15s; }
.wc_nav:hover { background:var(--c-primary-light); color:var(--c-primary); }
.wc_grid    { display:grid; grid-template-columns:repeat(7,1fr); }
.wc_dow     { font-size:12px; font-weight:600; text-align:center; padding:2px 0 8px; color:var(--c-text-muted); }
.wc_dow_sun { color:#FF6868; }
.wc_dow_sat { color:#60A5FA; }
.wc_sep     { grid-column:1 / -1; height:1px; background:var(--c-border); margin-bottom:4px; }
.wc_day     { display:flex; align-items:center; justify-content:center; padding:3px 0; }
.wc_di      { width:28px; height:28px; display:flex; align-items:center; justify-content:center; border-radius:50%; font-size:12px; color:var(--c-text-sub); transition:background .12s,color .12s; cursor:pointer; }
.wc_di:hover  { background:rgba(255,255,255,0.08); color:var(--c-text); }
.wc_sun .wc_di { color:#FF6868; }
.wc_sat .wc_di { color:#60A5FA; }
.wc_today .wc_di { background:var(--c-primary) !important; color:#0a1628 !important; font-weight:700; box-shadow:0 0 8px rgba(0,240,255,.4); }
.wl_source { color:var(--c-primary) !important; }
.edit_banner_icon { color:var(--c-primary); font-size:13px; }
.rank_c4 { color:var(--c-text-muted); }
.player_c_jungho  { color:var(--c-primary); }
.player_c_ara     { color:var(--c-success); }
.player_c_lope    { color:#FFA040; }
.player_c_ohtani  { color:#A78BFA; }
.player_c_other   { color:var(--c-text-muted); }
.moca_mdi { display:flex; flex-direction:column; height:100%; overflow:hidden; }
.mdi_box { display:flex; flex-direction:column; height:100%; overflow:hidden; }
.mdi_ly { display:flex; flex-direction:column; flex:1; overflow:hidden; }
.mdi_ly_sub { display:none;}
.resizingbar { display:none; width:4px; flex-shrink:0; border-left:1px solid var(--c-footer-text); border-right:1px solid var(--c-footer-text); cursor:col-resize; transition:background 0.15s; }
.resizingbar:hover { background:var(--c-primary); border-color:var(--c-primary); }
.mdi_box.mdi_split { flex-direction:row; }
.mdi_box.mdi_split .resizingbar { display:block; }
.mdi_box.mdi_split .mdi_ly { min-width:280px; box-sizing:border-box; }
.mdi_box.mdi_split .mdi_ly:not(.mdi_ly_sub) { flex:none; width:50%; }
.mdi_box.mdi_split .mdi_ly_sub { flex:1; display:flex; }
.mdi_drop_hint { display:none; flex-direction:column; align-items:center; justify-content:center; gap:14px; height:100%; color:var(--c-text-muted); font-size:13px; pointer-events:none; }
.mdi_drop_hint::before { content:''; display:block; width:52px; height:52px; background:var(--c-text-muted); -webkit-mask:url('../images/icon_mdi_drop_right.svg') no-repeat center / 52px 52px; mask:url('../images/icon_mdi_drop_right.svg') no-repeat center / 52px 52px; }
.mdi_ly:not(.mdi_ly_sub) .mdi_drop_hint::before { -webkit-mask-image:url('../images/icon_mdi_drop_left.svg'); mask-image:url('../images/icon_mdi_drop_left.svg'); }
.mdi_drop_hint span { opacity:0.6; }
.mdi_ly:not(:has(.mdi_tab)) .mdi_drop_hint { display:flex; }
.mdi_ly:not(:has(.mdi_tab)) .mdi_body { border:2px dashed var(--c-border-dark); border-radius:var(--radius-md); margin:8px; box-sizing:border-box; }
.mdi_drag_over:not(:has(.mdi_tab)) .mdi_body { border-color:var(--c-primary); }
.mdi_drag_over:not(:has(.mdi_tab)) .mdi_drop_hint { color:var(--c-primary); }
.mdi_tab.mdi_tab_drop_before { box-shadow: inset 2px 0 0 var(--c-primary); }
.mdi_tab.mdi_tab_drop_end { box-shadow: inset -2px 0 0 var(--c-primary); }
.mdi_tabbar { display:flex; align-items:flex-end; background:transparent; flex-shrink:0; position:relative; z-index:1; margin-bottom:-1px; padding:15px; padding-bottom: 0;}
.mdi_tab_scroll { display:flex; align-items:flex-end; flex:1; gap:6px; overflow-x:auto; overflow-y:hidden; scrollbar-width:none; }
.mdi_tab_scroll::-webkit-scrollbar { display:none; }
.mdi_tab { position:relative; z-index:0; display:flex; align-items:center; gap:6px; padding:7px 10px 7px 16px; width:170px; box-sizing:border-box; flex-shrink:0; background:var(--c-grid-toolbar); border:1px solid var(--c-border); border-bottom:none; margin-bottom:1px; border-radius:6px 6px 0 0; cursor:pointer; color:var(--c-text); font-size:13px; outline:none; transition:background 0.15s, }
.mdi_tab_pinned { padding:7px 22px; }
.mdi_tab:hover { background:var(--c-bg-elevated); }
.mdi_tab.active { position:relative; background:var(--c-bg); color:var(--c-primary); border-top:1px solid var(--c-primary); border-left:1px solid var(--c-primary); border-right:1px solid var(--c-primary); border-bottom:none; padding-bottom:8px; margin-bottom:0; }
.mdi_tab_label { user-select:none; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mdi_tab_close_btn { position:relative; width:16px; height:16px; border:none; background:transparent; cursor:pointer; border-radius:3px; flex-shrink:0; transition:background 0.12s; }
.mdi_tab_close_btn::before { content:''; position:absolute; inset:0; background:var(--c-text-muted); -webkit-mask:url('../images/icon_close.svg') no-repeat center / 10px 10px; mask:url('../images/icon_close.svg') no-repeat center / 10px 10px; transition:background 0.12s; }
.mdi_tab_close_btn:hover { background:rgba(255,80,80,0.2); }
.mdi_tab_close_btn:hover::before { background:#ff6b6b; }
.mdi_split_btn { position:relative; align-self:stretch; margin-left:5px; height:auto; min-height:25px; margin-bottom:5px; width:22px; padding:0; border:1px solid var(--c-primary); border-radius:var(--radius-sm); background:var(--c-bg-elevated); cursor:pointer; flex-shrink:0; transition:box-shadow 0.15s; }
.mdi_split_btn::before { content:''; position:absolute; inset:0; background:var(--c-primary); -webkit-mask:url('../images/icon_mdi_split.svg') no-repeat center / 14px 14px; mask:url('../images/icon_mdi_split.svg') no-repeat center / 14px 14px; }
.mdi_split_btn:hover { box-shadow:0 0 6px rgba(0,240,255,0.35); }
.mdi_split_btn.active::before { -webkit-mask:url('../images/icon_mdi_merge.svg') no-repeat center / 14px 14px; mask:url('../images/icon_mdi_merge.svg') no-repeat center / 14px 14px; }
.mdi_titlehide_btn { position:relative; align-self:stretch; margin-left:5px; height:auto; min-height:25px; margin-bottom:5px; width:22px; padding:0; border:1px solid var(--c-primary); border-radius:var(--radius-sm); background:var(--c-bg-elevated); cursor:pointer; flex-shrink:0; transition:box-shadow 0.15s; }
.mdi_titlehide_btn::before { content:''; position:absolute; inset:0; background:var(--c-primary); -webkit-mask:url('../images/icon_mdi_title_hide.svg') no-repeat center / 14px 14px; mask:url('../images/icon_mdi_title_hide.svg') no-repeat center / 14px 14px; }
.mdi_titlehide_btn:hover { box-shadow:0 0 6px rgba(0,240,255,0.35); }
.mdi_titlehide_btn.active::before { -webkit-mask:url('../images/icon_mdi_title_show.svg') no-repeat center / 14px 14px; mask:url('../images/icon_mdi_title_show.svg') no-repeat center / 14px 14px; }
.moca_mdi.mdi_hide_title [data-m-type="frame"][data-m-src$="/COM_TITLE.html"] { display:none; }
.moca_mdi.mdi_hide_title .moca_layout_pane:has(> [data-m-type="frame"][data-m-src$="/COM_TITLE.html"]:only-child) { display:none; }
.mdi_closeall_btn { position:relative; align-self:stretch; margin-left:5px; height:auto; min-height:25px; margin-bottom:5px; width:22px; padding:0; border:1px solid var(--c-border); border-radius:var(--radius-sm); background:var(--c-primary-light); cursor:pointer; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.mdi_closeall_btn::before { content:''; position:absolute; inset:0; background:var(--c-text-muted); -webkit-mask:url('../images/icon_trash.svg') no-repeat center / 14px 14px; mask:url('../images/icon_trash.svg') no-repeat center / 14px 14px; }
.mdi_closeall_btn:hover { background:rgba(255,80,80,0.15); border:1px solid var(--c-danger); }
.mdi_closeall_btn:hover::before { background:var(--c-danger) }
.mdi_tabnav_btn { position:relative; align-self:stretch; height:auto; margin-bottom:5px; width:22px; padding:0; border:1px solid var(--c-primary); border-radius:var(--radius-sm); background:var(--c-bg-elevated); cursor:pointer; flex-shrink:0; transition:box-shadow 0.15s; }
.mdi_tabnav_prev { margin-right:5px; }
.mdi_tabnav_next { margin-left:5px; }
.mdi_tabnav_btn::before { content:''; position:absolute; top:50%; left:50%; width:7px; height:7px; border-left:2px solid var(--c-primary); border-bottom:2px solid var(--c-primary); }
.mdi_tabnav_prev::before { transform:translate(-30%,-50%) rotate(45deg); }
.mdi_tabnav_next::before { transform:translate(-70%,-50%) rotate(-135deg); }
.mdi_tabnav_btn:hover { box-shadow:0 0 6px rgba(0,240,255,0.35); }
.mdi_tabnav_btn:disabled { opacity:0.35; cursor:default; border-color:var(--c-border); background:var(--c-primary-light); box-shadow:none; }
.mdi_tabnav_btn:disabled::before { border-color:var(--c-text-muted); }
.mdi_body { flex:1; overflow:hidden; position:relative; background:var(--c-bg); border:1px solid var(--c-primary);}
.mdi_panel { position:absolute; inset:0; overflow-y:auto; overflow-x:hidden; padding:var(--m-edge); }
.mdi_panel > .page_wrap { padding:0; overflow: unset;}
.moca_tab { display:flex; flex-direction:column; width:100%; flex-grow:1; min-height:0; }
.moca_tab_header { display:flex; align-items:flex-end; padding:4px 0 0; gap:4px; }
.moca_tab_btn { position:relative; z-index:0; background:var(--c-grid-toolbar); border:1px solid var(--c-border); border-bottom:1px solid transparent; border-radius:var(--radius-sm) var(--radius-sm) 0 0; margin-bottom:-1px; padding:7px 22px; font-size:13px; color:var(--c-text-muted); cursor:pointer; white-space:nowrap; transition:color 0.15s, background 0.15s; }
.moca_tab_btn:hover { color:var(--c-text); background:var(--c-bg-elevated); }
.moca_tab_btn.active { position:relative; z-index:2; color:var(--c-primary); font-weight:600; background:var(--c-bg); border: 1px solid var(--c-text-muted); border-bottom: 0;}
.moca_tab_btn[data-m-disabled="true"] { opacity:0.45; cursor:not-allowed; }
.moca_tab_btn[data-m-disabled="true"]:hover { color:var(--c-text-muted); background:var(--c-grid-toolbar); }
.moca_tab_btn:has(.moca_tab_close) { display:inline-flex; align-items:center; gap:6px; padding-right:12px; }
.moca_tab_close { position:relative; width:14px; height:14px; flex-shrink:0; border-radius:3px; cursor:pointer; transition:background 0.12s; }
.moca_tab_close::before { content:''; position:absolute; inset:0; background:var(--c-text-muted); -webkit-mask:url('../images/icon_close.svg') no-repeat center / 9px 9px; mask:url('../images/icon_close.svg') no-repeat center / 9px 9px; transition:background 0.12s; }
.moca_tab_close:hover { background:var(--c-bg-elevated); }
.moca_tab_close:hover::before { background:var(--c-danger); }
.moca_tab_panel { position:relative; z-index:1; flex:1; min-height:0; padding:0; background:var(--c-bg); border:1px solid var(--c-text-muted); border-radius:0 var(--radius-md) var(--radius-md) var(--radius-md); overflow:auto; }
.moca_tab_panel_inner { padding:14px; }
.left { position:relative; transition:width 0.25s ease; }
.left.folded { width:0px; overflow:hidden; cursor:pointer; }
.menufold {z-index:2; position: absolute; right: 0; top: 5px; width: 15px; height: 40px; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: 3px 0 0 3px; cursor: pointer; transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;}
.menufold::before { content:''; position:absolute; inset:0; background:var(--c-text-muted); -webkit-mask:url('../images/icon_chevron.svg') no-repeat center / 8px 8px; mask:url('../images/icon_chevron.svg') no-repeat center / 8px 8px; transition:background 0.15s; }
.menufold:hover { background:var(--c-primary-light); border-color:var(--c-primary); box-shadow:0 0 6px rgba(0,240,255,0.2); }
.menufold:hover::before { background:var(--c-primary); }
.left.folded .menufold {position: fixed; top: 59px; left: 0; border-radius: 0 3px 3px 0;}
.left.folded .menufold::before {rotate:180deg}
.left.folded:hover { background:var(--c-primary-light) !important; }
.moca_progress_dim { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(5,10,14,0.6); z-index: 99990; }
.moca_progress_box { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 26px 36px; background: var(--c-bg-elevated); border: 1px solid var(--c-primary); border-radius: 10px; box-shadow: 0 0 18px rgba(0,240,255,0.35), 0 8px 30px rgba(0,0,0,0.55); }
.moca_progress_spinner { width: 50px; height: 50px; background: url('../images/progress_spinner.svg') no-repeat center / contain; filter: drop-shadow(0 0 6px rgba(0,240,255,0.55)); animation: moca-progress-spin 0.9s linear infinite; }
.moca_progress_text { font-size: 13px; font-weight: 600; letter-spacing: 1px; color: var(--c-primary); }
.moca_progress_time { font-size: 12px; font-weight: 600; letter-spacing: 0.5px; color: var(--c-text-muted); font-variant-numeric: tabular-nums; }
.moca_progress_limit { font-weight: 500; opacity: 0.62; }
@keyframes moca-progress-spin {
to { transform: rotate(360deg); }
}
.moca_table_search [data-m-cell="td"] button.btn_search.ain_collect_btn { border-color: var(--c-success); color: var(--c-success); }
.moca_table_search [data-m-cell="td"] button.btn_search.ain_collect_btn:hover { background: var(--c-primary-light); }
.moca_table_search [data-m-cell="td"] button.btn_search.ain_collect_btn:disabled { border-color: var(--c-border); color: var(--c-text-muted); background: var(--c-bg-elevated); cursor: wait; }
.moca_table_search .ain_collect_status_row { flex-basis: 100%; width: 100%; gap: 0; margin-top: calc(-4px - var(--m-search-gap-row)); padding-top: 12px; border-top: 1px solid var(--c-border); }
.moca_table_search .ain_collect_status_row[hidden] { display: none; }
.moca_table_search .ain_collect_status_row > [data-m-cell="td"] { width: 100%; height: auto; }
.ain_collect_status { display: flex; align-items: center; gap: 13px; width: 100%; min-width: 0; padding: 12px 14px; background: var(--c-bg-elevated); border: 1px solid var(--c-border); border-radius: var(--radius-md); box-shadow: var(--shadow-sm); }
.ain_collect_signal { position: relative; width: 38px; height: 38px; flex: 0 0 38px; border: 1px solid var(--c-primary); border-radius: 50%; background: var(--c-primary-light); }
.ain_collect_signal::before { content: ''; position: absolute; inset: 8px; border: 2px solid var(--c-primary); border-top-color: transparent; border-radius: 50%; animation: moca-progress-spin 1.1s linear infinite; }
.ain_collect_signal::after { content: ''; position: absolute; left: 50%; top: 50%; width: 5px; height: 5px; border-radius: 50%; background: var(--c-primary); transform: translate(-50%, -50%); }
.ain_collect_content { flex: 1; min-width: 0; }
.ain_collect_heading { display: flex; align-items: center; gap: 10px; min-width: 0; margin-bottom: 8px; }
.ain_collect_label { flex: 0 0 auto; padding: 3px 7px; border-radius: 100px; background: var(--c-primary-light); color: var(--c-primary); font-size: 12px; font-weight: 700; letter-spacing: 0.7px; }
.ain_collect_step { min-width: 0; overflow: hidden; color: var(--c-text); font-size: 13px; font-weight: 600; white-space: nowrap; text-overflow: ellipsis; }
.ain_collect_percent { margin-left: auto; color: var(--c-primary); font-size: 14px; font-variant-numeric: tabular-nums; }
.ain_collect_track { width: 100%; height: 7px; overflow: hidden; border-radius: 100px; background: var(--c-primary-light); }
.ain_collect_fill { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--c-primary), var(--c-success)); transition: width 0.35s ease; }
.ain_collect_meta { display: flex; justify-content: space-between; gap: 12px; margin-top: 7px; color: var(--c-text-muted); font-size: 12px; line-height: 1.3; }
.ain_collect_meta span:last-child { flex: 0 0 auto; color: var(--c-text); font-variant-numeric: tabular-nums; }
.swiper         { position: relative; overflow: hidden; list-style: none; padding: 0; margin: 0; z-index: 1; }
.swiper-wrapper { position: relative; width: 100%; height: 100%; z-index: 1; display: flex;
box-sizing: content-box; transition-property: transform; }
.swiper-slide   { flex-shrink: 0; width: 100%; height: 100%; position: relative; transition-property: transform; }
.moca_schcal    { display: flex; flex-direction: column; height: auto; min-height: 0; overflow: visible;
background: var(--c-surface); border: 1px solid var(--c-border); border-radius: 10px; }
.msc_header     { display: flex; flex-wrap: wrap; align-items: center;
gap: 6px; padding: clamp(3px, 0.45em, 6px) 4px;
font-size: 13px; border-bottom: 1px solid var(--c-border); }
.msc_title      { margin: 0 auto; min-width: 0; flex: 0 1 auto; text-align: center;
font-size: 20px; font-weight: 700; letter-spacing: 0; color: var(--c-text); }
input.msc_title { width: 8ch; min-height: 32px; padding: 2px 4px; font-family: inherit; cursor: text;
background: transparent; border: 1px solid transparent; border-radius: 8px; }
input.msc_title:hover  { border-color: var(--c-border-dark); }
input.msc_title:focus  { outline: none; border-color: var(--c-primary); background: var(--c-surface); }
input.msc_title::placeholder { font-weight: 400; letter-spacing: 0; color: var(--c-text-sub); }
.msc_nav        { flex: 0 0 auto; width: clamp(30px, 2.3em, 36px); height: clamp(30px, 2.3em, 36px); border-radius: 0.6em; cursor: pointer;
background: var(--c-surface); border: 1px solid var(--c-border-dark);
color: var(--c-text-sub); font-size: 13px; line-height: 1; }
.msc_nav:hover  { background: var(--c-bg-hover); color: var(--c-primary); border-color: var(--c-primary); }
.msc_prev, .msc_next { display: inline-flex; align-items: center; justify-content: center; }
.msc_prev::before, .msc_next::before { content: ''; width: clamp(18px, 1.38em, 22px); height: clamp(18px, 1.38em, 22px); background-color: currentColor; }
.msc_prev::before { -webkit-mask: url('../images/icon_page_prev.svg') no-repeat center / contain;
mask: url('../images/icon_page_prev.svg') no-repeat center / contain; }
.msc_next::before { -webkit-mask: url('../images/icon_page_next.svg') no-repeat center / contain;
mask: url('../images/icon_page_next.svg') no-repeat center / contain; }
.msc_menubtn    { display: inline-flex; align-items: center; justify-content: center; }
.msc_menubtn::before { content: ''; width: clamp(17px, 1.3em, 21px); height: clamp(17px, 1.3em, 21px); background-color: currentColor;
-webkit-mask: url('../images/icon_menu.svg') no-repeat center / contain;
mask: url('../images/icon_menu.svg') no-repeat center / contain; }
.msc_todaybtn   { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; margin-left: 0;
width: auto; height: auto; padding: 0; border-radius: 0.6em; cursor: pointer;
background: transparent; border: 1px solid var(--c-primary); color: var(--c-primary);
font-size: 0; }
.msc_todaybtn::before { content: ''; font-size: 13px; width: clamp(20px, 2.1em, 30px); height: clamp(20px, 2.1em, 30px); margin: 0 2px;
background-color: currentColor;
-webkit-mask: url('../images/icon_today.svg') no-repeat center / contain;
mask: url('../images/icon_today.svg') no-repeat center / contain; }
.msc_todaybtn:hover { background: var(--c-primary-light); }
.msc_week       { display: grid; grid-template-columns: repeat(7, 1fr);
border-bottom: 1px solid var(--c-border); background: var(--c-grid-th); }
.msc_week span  { padding: 8px 0; text-align: center; font-size: 13px; font-weight: 600; color: var(--c-text-sub); }
.msc_swiper     { display: flex; flex-direction: column; flex: 1 0 auto; min-height: 0; width: 100%; }
.msc_swiper > .swiper-wrapper { flex: 1 0 auto; height: auto; }
.msc_swiper .swiper-slide     { display: flex; flex-direction: column; height: auto; }
.msc_grid       { display: flex; flex-direction: column; flex: 1 0 auto; width: 100%; height: auto; }
.msc_row        { display: flex; flex: 1 0 auto; min-height: 0; }
.msc_day        { flex: 1 1 0; min-width: 0; min-height: 0; overflow: hidden; cursor: pointer; position: relative;
border-bottom: 1px solid var(--c-border); border-right: 1px solid var(--c-border); }
.msc_day:hover  { background: var(--c-bg-hover); }
.msc_row .msc_day:last-child { border-right: none; }
.msc_row:last-child .msc_day { border-bottom: none; }
.msc_date       { display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; vertical-align: top;
min-width: 24px; height: 24px; padding: 0 4px;
font-size: 13px; color: var(--c-text-body); }
.msc_datesub    { margin-left: 3px; font-size: 11px; font-weight: 500; color: var(--c-text-muted); white-space: nowrap; vertical-align: middle; }
.msc_date_holiday .msc_datesub { margin-left: 4px; }
.msc_daynum.msc_now .msc_datesub, .msc_date.msc_now .msc_datesub { color: inherit; }
.msc_date_holiday { flex-direction: column; align-items: stretch; justify-content: flex-start; box-sizing: border-box; width: 100%; padding: 0; }
.msc_date_holiday .msc_date_top, .msc_date_holiday .msc_daynum { display: flex; flex: 1 1 50%; align-items: center; box-sizing: border-box; min-width: 0; min-height: 0; padding: 0 4px; font-size: 12px; line-height: 1; }
.msc_date_holiday .msc_date_top { gap: 3px; }
.msc_date_holiday .msc_daynum { justify-content: flex-start; }
.msc_sun .msc_date, .msc_week .msc_sun { color: var(--c-danger); }
.msc_sat .msc_date, .msc_week .msc_sat { color: var(--c-info); }
.msc_out .msc_date { opacity: 0.35; }
.msc_date.msc_now, .msc_daynum.msc_now { background: var(--c-primary); color: var(--c-bg); font-weight: 700; }
.msc_flagcell .msc_date.msc_now, .msc_flagcell .msc_daynum.msc_now {
background: transparent; color: var(--c-text); font-weight: 800; }
.msc_day_body   { display: flex; flex-direction: column; gap: 2px; margin-top: 2px; overflow: hidden; font-size: 12px; }
.msc_flag       { position: absolute; top: -30px; left: 13px; width: 55px; height: 55px; z-index: 3; pointer-events: none;
background: url('../images/icon_flag.gif') no-repeat center center; background-size: contain;}
.msc_flagcell   { overflow: visible; z-index: 2; }
.msc_flagcell .msc_day_body { max-height: calc(100% - 30px); overflow: hidden; }
.msc_flagcell_top .msc_flag { top: 2px; }
@keyframes msc_flag_wave {
0%, 100% { transform: rotate(-3deg) skewY(2deg) scaleX(1); }
35%      { transform: rotate(1.5deg) skewY(-1deg) scaleX(0.98); }
70%      { transform: rotate(3deg) skewY(-2deg) scaleX(1); }
}
@media (prefers-reduced-motion: reduce) {
.msc_flag { animation: none; }
}
.msc_meta       { position: absolute; top: 5px; right: 6px; display: inline-flex; align-items: center; gap: 3px; max-width: 68%; overflow: hidden; font-size: 12px; }
.msc_meta_inline { position: static; flex: 0 0 auto; max-width: 45%; margin-left: auto; }
.msc_meta i     { font-style: normal; }
.msc_holi       { min-width: 0; color: var(--c-danger); font-weight: 600; text-align: left; white-space: nowrap; overflow: hidden; }
.msc_holiday .msc_date { color: var(--c-danger); }
.msc_bar        { display: flex; align-items: center; box-sizing: border-box; height: 20px; line-height: 20px; font-size: 12px; background: transparent; color: var(--c-text-body); white-space: nowrap; }
.msc_bar em     { font-style: normal; min-width: 0; overflow: hidden; }
.msc_cru        { color: var(--c-danger); margin-right: 1px; font-weight: 400; }
.msc_bar:is(.msc_bar_s, .msc_bar_m) { position: relative; }
.msc_day:not(.msc_sat) .msc_bar:is(.msc_bar_s, .msc_bar_m)::after {
content: ''; position: absolute; top: 0; bottom: 0; left: 100%; width: 1px; background: inherit; }
.msc_day:not(.msc_sat):has(.msc_bar_s, .msc_bar_m) { overflow: visible; }
.msc_day:not(.msc_sat):has(.msc_bar_s, .msc_bar_m) > .msc_day_body { overflow: visible; }
.msc_bar.msc_bar_e { justify-content: flex-end; }
.msc_mark       { flex: none; align-self: stretch; width: 4px; margin: 0 2px 0 0; }
.msc_bar.msc_bar_e .msc_mark { margin: 0 0 0 2px; }
.msc_bar.msc_bar_done    { background: transparent; color: var(--c-text-body); }
.msc_bar.msc_bar_done em { text-decoration: line-through; opacity: 0.6; }
.msc_bar.msc_bar_line   { gap: 2px; padding: 0 2px 0 1px; line-height: 1.1; background: transparent; color: var(--c-text-body); justify-content: flex-start; }
.msc_line               { flex: none; align-self: stretch; width: 3px; margin: 1px 0; border-radius: 2px; background: var(--msc-lc, var(--c-primary)); }
.msc_ico                { flex: none; display: inline-block; font-style: normal; font-size: 0.85em; line-height: 1; }
.msc_bar.msc_bar_line:has(> .msc_ico) { position: relative; padding-left: calc(0.9em + 2px); }
.msc_bar.msc_bar_line:has(> .msc_ico) > .msc_line { position: absolute; left: 1px; top: 1px; bottom: 1px; margin: 0; }
.msc_bar.msc_bar_line > .msc_ico { position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 1em; text-align: left; font-size: 0.9em; }
.msc_bar.msc_bar_line.msc_bar_done .msc_line { opacity: 0.35; }
.moca_schcal_line .msc_date.msc_now { border-radius: 50%; min-width: 1.7em; width: 1.7em; height: 1.7em; padding: 0; line-height: 1; }
.moca_schcal.moca_schcal_line .msc_date { min-height: 1.7em; }
.moca_schcal_line .msc_date { font-weight: 700; }
.moca_schcal_line .msc_todaybtn { width: clamp(30px, 2.3em, 36px); height: clamp(30px, 2.3em, 36px); padding: 0; border-radius: 0.6em;
border: 1px solid var(--c-border-dark); background: var(--c-surface); color: var(--c-primary); font-size: 13px; }
.moca_schcal_line .msc_todaybtn::before { display: none; }
.moca_schcal_line .msc_todaynum { display: inline-block; min-width: 1.5em; padding: 2px 2px 1px; box-sizing: border-box;
border: 1.5px solid currentColor; border-top-width: 4px; border-radius: 3px;
font-size: 0.72em; font-weight: 700; line-height: 1; letter-spacing: -0.02em; text-align: center; }
.moca_schcal_line .msc_todaybtn:hover { background: var(--c-bg-hover); border-color: var(--c-primary); }
.moca_schcal_line .msc_todaybtn:disabled { visibility: hidden; }
.msc_todaynum { display: none; }
.moca_schcal_line .msc_day { border-right-color: transparent; padding-top: 2px; }
.moca_schcal_line .msc_day { text-align: center; }
.moca_schcal_line.msc_has_sub .msc_day { text-align: left; }
.msc_bar.msc_bar_holi   { --msc-lc: var(--c-danger); color: var(--c-danger); font-weight: 600; }
.msc_bar.msc_bar_holi.msc_bar_anniv { --msc-lc: transparent; color: var(--c-text-muted); font-weight: 500; padding-left: 4px; }
.msc_bar.msc_bar_holi.msc_bar_anniv > .msc_line { display: none; }
.moca_schcal_tint { --msc-tint: 26%; --msc-tint-l: 32%; }
:root.theme-light .moca_schcal_tint { --msc-tint: 18%; --msc-tint-l: 93%; }
.moca_schcal_tint .msc_bar.msc_bar_line:not(.msc_bar_done) { background: color-mix(in srgb, var(--msc-lc, var(--c-primary)) var(--msc-tint), transparent); border-radius: 3px; }
@supports (color: oklch(from red 90% c h)) {
.moca_schcal_tint .msc_bar.msc_bar_line:not(.msc_bar_done) { background: oklch(from var(--msc-lc, var(--c-primary)) var(--msc-tint-l) calc(c * 0.7) h); }
}
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_own { background: var(--msc-bg); color: var(--msc-fg); }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_own .msc_line { background: var(--msc-lc); }
.moca_schcal.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_holi { background: transparent; border-radius: 0; }
.moca_schcal_tint .msc_bar.msc_bar_line:is(.msc_bar_s, .msc_bar_m, .msc_bar_e):not(.msc_bar_done):not(.msc_bar_holi) { opacity: 0.85; }
.moca_schcal_tint .msc_bar.msc_bar_line:not(.msc_bar_done):not(.msc_bar_holi) { padding-left: 0; border-radius: 0; }
.moca_schcal_tint .msc_bar.msc_bar_line:not(.msc_bar_done):not(.msc_bar_holi) > .msc_line { margin: 0; border-radius: 0; }
.moca_schcal_tint .msc_bar.msc_bar_line:not(.msc_bar_done):not(.msc_bar_holi):not(.msc_bar_s):not(.msc_bar_m):not(.msc_bar_e) { margin-right: 2px; border-radius: 0 7px 7px 0; }
.moca_schcal_tint .msc_bar.msc_bar_line:not(.msc_bar_done):not(.msc_bar_holi):has(> .msc_ico) > .msc_line { left: 0; top: 0; bottom: 0; }
.moca_schcal_tint .msc_bar.msc_bar_line:not(.msc_bar_done):not(.msc_bar_holi):has(> .msc_ico) { padding-left: 0; }
.moca_schcal_tint .msc_bar.msc_bar_line:not(.msc_bar_done):not(.msc_bar_holi) > .msc_ico { position: static; left: auto; top: auto; transform: none; flex: 0 0 auto; width: 1em; text-align: center; overflow: visible; line-height: 1; margin-left: 2px; }
.moca_schcal:not(.moca_schcal_tint) .msc_bar.msc_bar_line.msc_bar_emph em { color: var(--msc-lc); font-weight: 600; }
.moca_schcal_tint .msc_bar.msc_bar_line:is(.msc_bar_s, .msc_bar_m) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.moca_schcal_tint .msc_bar.msc_bar_line:is(.msc_bar_m, .msc_bar_e) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_m:not(.msc_bar_done) > .msc_line { display: none; }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_m:not(.msc_bar_done):not(.msc_bar_holi) { padding-left: 3px; }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_m:not(.msc_bar_holi) > em { visibility: hidden; }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_e:not(.msc_bar_done) > .msc_line { display: none; }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_e:not(.msc_bar_done):not(.msc_bar_holi) { padding-left: 3px; padding-right: 0; }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_e:not(.msc_bar_done):not(.msc_bar_holi):has(> .msc_ico) > .msc_line { left: auto; right: 0; }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_e:not(.msc_bar_done):not(.msc_bar_holi):has(> .msc_ico) { padding-left: 0; padding-right: 3px; }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_e:not(.msc_bar_done):not(.msc_bar_holi) > .msc_ico { margin-left: 2px; }
.msc_bar.msc_bar_line.msc_bar_m > .msc_ico { display: none; }
.msc_bar.msc_bar_line.msc_bar_m:has(> .msc_ico) { padding-left: 1px; }
.moca_schcal_tint .msc_bar.msc_bar_line.msc_bar_m:not(.msc_bar_done):not(.msc_bar_holi):has(> .msc_ico) { padding-left: 3px; }
.msc_row.msc_row_out            { flex: 0 0 auto; }
.msc_row.msc_row_out .msc_day   { min-height: 0; }
.msc_row.msc_row_out .msc_date  { height: 1.4em; min-width: 1.4em; font-size: 11px; }
.msc_todaybtn:disabled          { opacity: 0.35; cursor: default; border-color: var(--c-border); }
.msc_todaybtn:disabled:hover    { background: transparent; }
.page_wrap:has(.moca_schcal) { height: auto; min-height: 100%; overflow: visible; }
.page_wrap:has(.moca_schcal) > .moca_layout { flex: none; }
.moca_layout > .moca_layout_pane.moca_schcal,
.moca_layout > .moca_layout_pane:has(> .moca_schcal) { flex: 1 0 auto; overflow: visible; }
.page_wrap:has(.moca_schcal) > .moca_layout.moca_layout_fill { flex: 1 1 auto; }
.moca_cal { display: flex; flex-direction: column; box-sizing: border-box; width: 100%; padding: 10px; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--radius-md); }
.moca_cal .mcal_header { display: flex; align-items: center; gap: 4px; margin-bottom: 8px; }
.moca_cal .mcal_title { flex: 1; min-width: 0; height: 30px; padding: 0 6px; border: 1px solid transparent; border-radius: var(--radius-sm); background: transparent; color: var(--c-text); font-size: 14px; font-weight: 700; cursor: pointer; }
.moca_cal .mcal_title:hover:not(:disabled) { border-color: var(--c-primary); color: var(--c-primary); }
.moca_cal .mcal_title:disabled { cursor: default; }
.moca_cal .mcal_nav { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; border: 1px solid var(--c-border-dark); border-radius: var(--radius-sm); background: var(--c-surface); color: var(--c-text-sub); cursor: pointer; }
.moca_cal .mcal_nav:hover { background: var(--c-bg-hover); border-color: var(--c-primary); color: var(--c-primary); }
.moca_cal .mcal_nav::before { content: ''; width: 16px; height: 16px; background-color: currentColor; }
.moca_cal .mcal_prev::before { -webkit-mask: url('../images/icon_page_prev.svg') no-repeat center / contain; mask: url('../images/icon_page_prev.svg') no-repeat center / contain; }
.moca_cal .mcal_next::before { -webkit-mask: url('../images/icon_page_next.svg') no-repeat center / contain; mask: url('../images/icon_page_next.svg') no-repeat center / contain; }
.moca_cal .mcal_todaybtn { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 28px; padding: 0; border: 1px solid var(--c-primary); border-radius: var(--radius-sm); background: transparent; color: var(--c-primary); font-size: 0; cursor: pointer; }
.moca_cal .mcal_todaybtn::before { content: ''; width: 26px; height: 26px; background-color: currentColor; -webkit-mask: url('../images/icon_today.svg') no-repeat center / contain; mask: url('../images/icon_today.svg') no-repeat center / contain; }
.moca_cal .mcal_todaybtn:hover { background: var(--c-primary-light); }
.moca_cal .mcal_body { display: flex; flex-direction: column; min-height: 0; }
.moca_cal .mcal_week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); margin-bottom: 2px; }
.moca_cal .mcal_week span { padding: 4px 0; text-align: center; font-size: 12px; font-weight: 600; color: var(--c-text-sub); }
.moca_cal .mcal_week .mcal_sun { color: var(--c-danger); }
.moca_cal .mcal_week .mcal_sat { color: var(--c-primary); }
.moca_cal .mcal_grid { display: grid; gap: 2px; }
.moca_cal .mcal_grid_day { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.moca_cal .mcal_grid_month, .moca_cal .mcal_grid_year { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.moca_cal .mcal_cell { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; min-width: 0; padding: 0; border: 1px solid transparent; border-radius: var(--radius-sm); background: transparent; color: var(--c-text); font-size: 12px; cursor: pointer; transition: background 0.12s, color 0.12s; }
.moca_cal .mcal_day { height: 34px; }
.moca_cal .mcal_mon, .moca_cal .mcal_yr { height: 44px; font-size: 13px; }
.moca_cal .mcal_cell:hover:not(:disabled):not(.mcal_sel) { background: var(--c-bg-hover); }
.moca_cal .mcal_cell:disabled { color: var(--c-text-muted); opacity: 0.45; cursor: default; }
.moca_cal .mcal_dd { display: flex; align-items: center; justify-content: center; width: 26px; height: 18px; box-sizing: border-box; line-height: 1; }
.moca_cal .mcal_sun, .moca_cal .mcal_holi { color: var(--c-danger); }
.moca_cal .mcal_sat { color: var(--c-primary); }
.moca_cal .mcal_out { color: var(--c-text-muted); opacity: 0.55; }
.moca_cal .mcal_off { background-image: repeating-linear-gradient(135deg, var(--c-bg-hover) 0 3px, transparent 3px 6px); }
.moca_cal .mcal_today { border-color: var(--c-primary); font-weight: 700; }
.moca_cal .mcal_sel { background: var(--c-primary); border-color: var(--c-primary); color: var(--c-on-primary); font-weight: 700; }
.moca_cal .mcal_sel:hover:not(:disabled) { background: var(--c-primary-dark); border-color: var(--c-primary-dark); color: var(--c-on-primary); }
.moca_cal .mcal_sel .mcal_holinm, .moca_cal .mcal_sel .mcal_badge { color: inherit; }
.moca_cal .mcal_legend { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--c-border); }
.moca_cal .mcal_lg { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--c-text-sub); }
.moca_cal .mcal_lg i { width: 14px; height: 14px; border: 1px solid transparent; border-radius: var(--radius-sm); box-sizing: border-box; flex-shrink: 0; }
.moca_cal .mcal_lg_today i { border-color: var(--c-primary); }
.moca_cal .mcal_lg_sel i { background: var(--c-primary); border-color: var(--c-primary); }
.moca_cal .mcal_lg_holi i { background: var(--c-danger); border-color: var(--c-danger); }
.moca_cal .mcal_lg_off i { border-radius: var(--radius-sm); border-color: var(--c-border-dark); background-image: repeating-linear-gradient(135deg, var(--c-bg-hover) 0 3px, transparent 3px 6px); }
.moca_cal .mcal_holinm { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; line-height: 1.1; }
.moca_cal .mcal_badge { position: absolute; top: 1px; right: 3px; font-size: 12px; line-height: 1; color: var(--c-primary); }
.policy_html { height: auto; min-height: 100%; overflow-x: hidden; overflow-y: auto; scroll-behavior: smooth; scrollbar-gutter: stable; }
.policy_page { height: auto; min-height: 100vh; margin: 0; overflow: visible; color: #243841; background: #EDF3F5; font-family: "Pretendard", "Noto Sans KR", "Malgun Gothic", sans-serif; }
.policy_page * { box-sizing: border-box; }
.policy_hero { position: relative; min-height: 360px; padding: 42px 24px 112px; color: #F4FCFD; background: linear-gradient(135deg, #082A35 0%, #0A4653 58%, #0C6D70 100%); overflow: hidden; }
.policy_hero::before { content: ''; position: absolute; width: 520px; height: 520px; right: -170px; top: -290px; border: 1px solid rgba(132, 232, 219, 0.14); border-radius: 50%; box-shadow: 0 0 0 80px rgba(132, 232, 219, 0.035), 0 0 0 170px rgba(132, 232, 219, 0.022); }
.policy_hero::after { content: ''; position: absolute; left: 7%; bottom: 34px; width: 7px; height: 7px; border-radius: 50%; background: #74E2CF; box-shadow: 0 0 26px 7px rgba(116, 226, 207, 0.56); }
.policy_hero_inner { position: relative; z-index: 1; width: min(100%, 1120px); margin: 0 auto; }
.policy_brand { display: inline-flex; align-items: center; min-height: 38px; margin-bottom: 48px; text-decoration: none; }
.policy_brand img { display: block; width: 152px; height: auto; }
.policy_kicker { display: block; margin-bottom: 13px; color: #76DEC9; font-size: 12px; font-weight: 800; letter-spacing: 0.18em; }
.policy_hero h1 { margin: 0 0 18px; color: #FFFFFF; font-size: clamp(34px, 4.4vw, 52px); font-weight: 760; line-height: 1.2; letter-spacing: -0.05em; }
.policy_hero p { margin: 0; color: #B9D1D5; font-size: 15px; line-height: 1.75; letter-spacing: -0.01em; }
.policy_shell { position: relative; z-index: 2; display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 26px; width: min(calc(100% - 48px), 1120px); margin: -72px auto 80px; align-items: start; }
.policy_toc { position: sticky; top: 24px; padding: 22px 18px 20px; border: 1px solid #D7E3E6; border-radius: 18px; background: rgba(255, 255, 255, 0.97); box-shadow: 0 14px 38px rgba(24, 64, 74, 0.09); backdrop-filter: blur(12px); }
.policy_toc_title { display: block; padding: 0 7px 15px; border-bottom: 1px solid #E4ECEE; color: #173A45; font-size: 14px; font-weight: 800; }
.policy_toc nav { display: grid; gap: 3px; padding-top: 12px; }
.policy_toc a { display: grid; grid-template-columns: 28px minmax(0, 1fr); align-items: center; min-height: 37px; padding: 6px 7px; border-radius: 8px; color: #60757D; font-size: 12px; line-height: 1.4; text-decoration: none; transition: color 0.16s ease, background 0.16s ease, transform 0.16s ease; }
.policy_toc a span { color: #159A91; font-size: 12px; font-weight: 800; }
.policy_toc a:hover { color: #153E49; background: #EAF7F5; transform: translateX(3px); }
.policy_toc a:focus-visible, .policy_footer a:focus-visible, .policy_brand:focus-visible { border-radius: 7px; outline: 3px solid rgba(62, 190, 172, 0.34); outline-offset: 3px; }
.policy_document { min-width: 0; padding: 52px 58px 34px; border: 1px solid #DCE6E9; border-radius: 24px; background: #FFFFFF; box-shadow: 0 20px 55px rgba(22, 62, 72, 0.11); }
.policy_document_head { padding-bottom: 37px; }
.policy_document_head > span { display: block; margin-bottom: 12px; color: #159A91; font-size: 12px; font-weight: 800; letter-spacing: 0.15em; }
.policy_document_head h2 { margin: 0 0 19px; color: #142F39; font-size: 27px; font-weight: 760; line-height: 1.35; letter-spacing: -0.035em; }
.policy_document_head p { margin: 0; padding: 20px 22px; border-left: 3px solid #45BFAE; border-radius: 0 12px 12px 0; color: #536A73; background: #F3F8F8; font-size: 14px; line-height: 1.85; }
.policy_section { padding: 38px 0 34px; border-top: 1px solid #E4ECEE; scroll-margin-top: 24px; }
.policy_section h2 { margin: 0 0 18px; color: #173945; font-size: 19px; font-weight: 760; line-height: 1.45; letter-spacing: -0.025em; }
.policy_section p { margin: 0 0 14px; color: #52666E; font-size: 14px; line-height: 1.9; word-break: keep-all; }
.policy_section p:last-child { margin-bottom: 0; }
.policy_section strong { color: #174E5D; font-weight: 750; }
.policy_section ul, .policy_section ol { display: grid; gap: 10px; margin: 17px 0 0 21px; padding: 0; color: #52666E; font-size: 14px; line-height: 1.8; }
.policy_section ul { list-style: disc; }
.policy_section ol { list-style: decimal; }
.policy_section li { padding-left: 4px; word-break: keep-all; }
.policy_section li::marker { color: #1DAA9E; font-weight: 800; }
.policy_section li > ul, .policy_section li > ol { margin: 9px 0 3px 18px; padding: 12px 16px; border-radius: 10px; background: #F4F8F9; }
.policy_contact { margin-top: 14px; padding: 29px 30px 28px; border: 0; border-radius: 16px; color: #E8F9F6; background: linear-gradient(125deg, #0C4C58, #0B746E); }
.policy_contact > span { display: block; margin-bottom: 9px; color: #7DE3D0; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; }
.policy_contact h2 { margin-bottom: 10px; color: #FFFFFF; }
.policy_contact p, .policy_contact strong { color: #D4EDEB; }
.policy_footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 34px; padding-top: 24px; border-top: 1px solid #E4ECEE; }
.policy_footer a { display: inline-flex; align-items: center; gap: 8px; color: #52717A; font-size: 13px; font-weight: 700; text-decoration: none; }
.policy_footer a:hover { color: #0E8E85; }
.terms_page { color: #30364A; background: #F0F2F8; }
.terms_page .policy_hero { background: linear-gradient(135deg, #151D3D 0%, #273361 56%, #51477E 100%); }
.terms_page .policy_hero::before { border-color: rgba(183, 173, 255, 0.17); box-shadow: 0 0 0 80px rgba(183, 173, 255, 0.04), 0 0 0 170px rgba(183, 173, 255, 0.025); }
.terms_page .policy_hero::after { background: #B8ACFF; box-shadow: 0 0 26px 7px rgba(184, 172, 255, 0.52); }
.terms_page .policy_kicker { color: #B9B0FF; }
.terms_page .policy_toc { border-color: #DDE0EC; box-shadow: 0 14px 38px rgba(35, 41, 80, 0.1); }
.terms_page .policy_toc_title { color: #282E53; border-color: #E6E7F0; }
.terms_page .policy_toc a { color: #696E84; }
.terms_page .policy_toc a span { color: #776BC7; }
.terms_page .policy_toc a:hover { color: #30365E; background: #F0EEFC; }
.terms_page .policy_toc a:focus-visible, .terms_page .policy_footer a:focus-visible, .terms_page .policy_brand:focus-visible { outline-color: rgba(122, 108, 204, 0.36); }
.terms_page .policy_document { border-color: #E0E2EC; box-shadow: 0 20px 55px rgba(38, 43, 81, 0.12); }
.terms_page .policy_document_head > span { color: #7569C4; }
.terms_page .policy_document_head h2, .terms_page .policy_section h2 { color: #292F54; }
.terms_page .policy_document_head p { border-left-color: #8376D1; color: #5D6277; background: #F5F4FB; }
.terms_page .policy_section { border-color: #E7E8F0; }
.terms_page .policy_section p, .terms_page .policy_section ul, .terms_page .policy_section ol { color: #5B6074; }
.terms_page .policy_section strong { color: #3F4779; }
.terms_page .policy_section li::marker { color: #7A6DCA; }
.terms_page .terms_inline_link { color: #6659B5; font-weight: 750; text-decoration-color: rgba(102, 89, 181, 0.35); text-underline-offset: 3px; }
.terms_page .terms_inline_link:hover { color: #4D438E; text-decoration-color: currentColor; }
.terms_page .policy_contact { background: linear-gradient(125deg, #28315E, #5D4F8C); }
.terms_page .policy_contact > span { color: #C2B9FF; }
.terms_page .policy_contact h2 { color: #FFFFFF; }
.terms_page .policy_contact p, .terms_page .policy_contact strong { color: #ECEAFA; }
.terms_page .policy_footer { border-color: #E7E8F0; }
.terms_page .policy_footer a:hover { color: #6659B5; }
.moca_license_banner { position:fixed; right:12px; bottom:12px; z-index:2147483000; padding:6px 14px; border-radius:6px; background:rgba(28,28,38,.9); color:#FFC94D; font-size:12px; letter-spacing:.02em; pointer-events:none; box-shadow:0 2px 8px rgba(0,0,0,.35); }
.moca_idle_lock { position:fixed; inset:0; z-index:2147482000; display:flex; align-items:center; justify-content:center; background:rgba(12,12,18,.72); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); }
.moca_idle_lock_box { display:flex; flex-direction:column; align-items:center; gap:14px; padding:36px 48px; border-radius:var(--radius-md); background:rgba(28,28,38,.92); box-shadow:0 8px 32px rgba(0,0,0,.5); }
.moca_idle_lock_icon { font-size:44px; line-height:1; }
.moca_idle_lock_msg { font-size:14px; color:#ECEAF2; }
.moca_idle_lock_btn { height:34px; padding:0 28px; border-radius:var(--radius-sm); background:#FFC94D; color:#1C1C26; font-size:13px; font-weight:700; }
.moca_idle_lock_btn:hover { background:#FFD97A; }
.moca_messagebox:has(.moca_view_help) { width: min(520px, 92vw); align-items: stretch; }
.moca_view_help { text-align: left; color: var(--c-text); font-size: 13px; line-height: 1.7; }
.moca_view_help ul { margin: 8px 0 0; padding-left: 18px; }
.moca_view_help li { margin: 3px 0; }
.moca_view_help b  { color: var(--c-primary); }
.moca_view_help_sep { margin: 12px 0; border: 0; border-top: 1px solid var(--c-border); }
.moca_view_help .hint_title { display: block; font-weight: 700; color: var(--c-primary); margin-bottom: 4px; }
.moca_fileicon { width: 20px; height: 20px; object-fit: contain; vertical-align: middle; }
.moca_view_print::before {
content: ''; display: inline-block; width: 15px; height: 15px; vertical-align: middle;
background-color: currentColor;
-webkit-mask: url('../images/icon_print.svg') no-repeat center / 15px 15px;
mask: url('../images/icon_print.svg') no-repeat center / 15px 15px;
}
button.moca_view_down::before {
content: ''; display: inline-block; width: 16px; height: 16px; vertical-align: middle;
background-color: var(--c-primary);
-webkit-mask: url('../images/icon_download.svg') no-repeat center / 16px 16px;
mask: url('../images/icon_download.svg') no-repeat center / 16px 16px;
}
:root.theme-light button.moca_view_down { background: var(--c-primary); border-color: var(--c-primary); }
:root.theme-light button.moca_view_down::before { background-color: #fff; }
:root.theme-light button.moca_view_down:hover {
background: color-mix(in srgb, var(--c-primary) 80%, #000);
border-color: var(--c-primary);
}
.moca_dragbar {
position: absolute; right: 2px; width: 14px;
z-index: 5; border-radius: 7px;
background: color-mix(in srgb, var(--c-border) 35%, transparent);
touch-action: none;
}
.moca_dragbar_thumb {
position: absolute; left: 2px; right: 2px; top: 0;
border-radius: 5px;
background: var(--c-border-dark);
cursor: grab; touch-action: none;
}
.moca_dragbar_thumb:hover { background: var(--c-text-sub); }
.moca_dragbar.is_drag .moca_dragbar_thumb { background: var(--c-primary); cursor: grabbing; }
@media (max-width: 768px) {
.moca_dragbar { width: 18px; right: 1px; }
.moca_dragbar_thumb { left: 3px; right: 3px; }
}
@media (pointer: coarse) {
.moca_dragbar { width: 24px; right: 1px; border-radius: 12px; }
.moca_dragbar_thumb { left: 3px; right: 3px; border-radius: 9px; }
}
