/* 공통 표현 계약. 기능별 선택자·동작·권한은 각 기능에 그대로 둔다. */
:where(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin){
 font-family:var(--base-font);font-size:var(--base-text-md);font-weight:var(--base-weight);line-height:var(--base-leading);color:var(--base-text);
 overflow-wrap:anywhere;min-width:0;
}
:where(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) *,
:where(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) *::before,
:where(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) *::after{box-sizing:border-box}
:where(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(h1,h2,h3){font-weight:var(--base-weight-heading);line-height:var(--base-leading-heading);margin:0 0 var(--base-space-6)}
:where(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) h1{font-size:var(--base-heading)}
:where(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) h2{font-size:var(--base-text-xl)}
:where(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) h3{font-size:var(--base-text-lg)}
:where(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(input,select,textarea,button){font:inherit;max-width:100%;min-width:0;color:inherit}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=submit]),select,textarea){
 min-height:var(--base-form-height);padding:var(--base-space-3) var(--base-space-4);border:var(--base-stroke) solid var(--base-border);
 border-radius:var(--base-radius);background:var(--base-background);box-shadow:none;line-height:1.4;
}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) textarea{width:100%;min-height:160px;resize:vertical;line-height:var(--base-leading)}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) input[type=file]{width:100%;height:auto;white-space:normal;padding:var(--base-space-2);font-size:var(--base-text-sm)}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) input[type=file]::file-selector-button{font:inherit;min-height:var(--base-touch);margin-right:var(--base-space-2);padding:var(--base-space-2) var(--base-space-3);border:var(--base-stroke) solid var(--base-border);border-radius:var(--base-radius);background:var(--base-surface);color:var(--base-text);cursor:pointer}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(input[type=checkbox],input[type=radio]){accent-color:var(--base-text)}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(button,input[type=submit],.btn,.btn_cancel,.btn_frmline,.pg_page,.pg_current){
 min-height:var(--base-button-height);height:auto;min-width:var(--base-touch);max-width:100%;padding:var(--base-space-3) var(--base-space-4);
 border:var(--base-stroke) solid var(--base-border);border-radius:var(--base-radius);background:var(--base-background);color:var(--base-text);
 font:inherit;line-height:1.4;text-align:center;text-decoration:none;overflow-wrap:anywhere;box-shadow:none;cursor:pointer;
}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(a.btn,.btn_cancel,.pg_page,.pg_current){display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(.btn_submit,.base-contact-submit,.pg_current){background:var(--base-text);border-color:var(--base-text);color:var(--base-background)}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(button,.btn,.btn_cancel,.pg_page):hover{border-color:var(--base-text)}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(button,input,select,textarea,a,summary):focus-visible{outline:var(--base-focus-width) solid var(--base-focus);outline-offset:var(--base-focus-offset)}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(button,input,select,textarea):disabled{background:var(--base-disabled);color:var(--base-muted);border-color:var(--base-border);cursor:not-allowed;opacity:1}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is([aria-invalid=true],.base-error){border-color:var(--base-danger);border-inline-start-width:var(--base-focus-width)}
:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is([role=alert],.base-notice,.base-admin-success){padding:var(--base-space-4);border:var(--base-stroke) solid var(--base-border);border-inline-start:var(--base-focus-width) solid var(--base-text);background:var(--base-surface);color:var(--base-text)}
.base-shell .sound_only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:clip;clip-path:inset(50%);white-space:nowrap;border:0}
.base-shell :is(.empty_table,.empty_list,#bo_vc_empty){padding:var(--base-space-16) var(--base-space-4);text-align:center;color:var(--base-muted);font-size:var(--base-text-md)}
.base-shell .pg_wrap{display:block;clear:both;margin:var(--base-space-8) 0;text-align:center}
.base-shell .pg{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--base-space-2);max-width:100%;padding:0;margin:0}
.base-shell :is(.pg_page,.pg_current){margin:0;background-image:none;text-indent:0;font-size:var(--base-text-sm);padding:var(--base-space-2) var(--base-space-3)}
.base-shell .pg_current{font-weight:var(--base-weight-heading)}
.base-shell :is(.pg_start,.pg_prev,.pg_next,.pg_end){font-size:0}
.base-shell :is(.pg_start,.pg_prev,.pg_next,.pg_end)::before{font-size:var(--base-text-md)}
.base-shell .pg_start::before{content:'«'}.base-shell .pg_prev::before{content:'‹'}.base-shell .pg_next::before{content:'›'}.base-shell .pg_end::before{content:'»'}
.base-shell :is(.tbl_wrap,.base-table-scroll){max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain}
.base-shell table{width:100%;border-collapse:collapse;font:inherit}
.base-shell :is(th,td){padding:var(--base-space-4);border-bottom:var(--base-stroke) solid var(--base-border);text-align:left;overflow-wrap:anywhere}
.base-shell th{font-size:var(--base-text-sm);font-weight:var(--base-weight-heading);background:var(--base-surface);color:var(--base-muted)}
.base-shell caption{padding:var(--base-space-3) 0;text-align:left;color:var(--base-muted);font-size:var(--base-text-sm)}
.base-card{padding:var(--base-space-6);border:var(--base-stroke) solid var(--base-border);border-radius:var(--base-radius);background:var(--base-background);min-width:0}
.base-meta,.base-status{font-size:var(--base-text-sm);color:var(--base-muted)}
.base-status{display:inline-block;padding:var(--base-space-1) var(--base-space-2);border:var(--base-stroke) solid var(--base-border);border-radius:var(--base-radius);background:var(--base-surface)}
@media(max-width:767px){.base-shell :is(.btn_confirm,.bo_fx){gap:var(--base-space-2)}.base-shell :is(th,td){padding:var(--base-space-3)}}

:is(.base-shell,.base-admin,.base-admin-settings,.base-contact-admin) :is(button,.btn,.btn_cancel,.btn_frmline){padding-block:var(--base-control-pad-y)}
