/* 밤비교 v4.2.0: consolidated visual system. Loaded LAST after theme and plugin styles.
   Unified palette, panels, typography, interactive controls; leaves data and behavior untouched. */
:root{
 --bb-bg:#0b1729;--bb-shell:#0b192d;--bb-surface:#15263e;--bb-surface-raised:#192c46;
 --bb-inset:#102137;--bb-line:rgba(185,205,232,.17);--bb-line-strong:rgba(185,205,232,.27);
 --bb-text:#f4f7fc;--bb-sub:#c0ccdc;--bb-muted:#98aac0;--bb-accent:#e9c380;
 --bb-accent-strong:#f3d69d;--bb-radius:16px;--bb-radius-sm:11px;
 --bg:#0b1729;--bg2:#0b192d;--panel:#15263e;--panel2:#192c46;
 --line:rgba(185,205,232,.17);--ink:#f4f7fc;--sub:#c0ccdc;--muted:#98aac0;
 --gold:#e9c380;--ng-gold:#e9c380;--gold-soft:#f3d69d;
 color-scheme:dark;
}
html{scroll-behavior:smooth} body,body.ng-site{background:var(--bb-bg);color:var(--bb-text)}
body :is(.ng-container,.ngq-wrap){min-width:0}
:is(.ng-header,.ng-bottom-nav,.ng-menu-drawer){background:var(--bb-shell)!important;border-color:var(--bb-line)!important;box-shadow:none!important}
.ng-header{backdrop-filter:blur(16px)}
:is(.ng-home-hero,.ng-wide-band,.ng-new-open-strip,.ng-footer){border-color:var(--bb-line)!important}
.ng-home-hero{background:radial-gradient(ellipse at 83% 16%,rgba(52,87,134,.22),transparent 58%),var(--bb-bg)!important}
:is(.ng-home-quick,.ng-home-section,.ng-sector-section,.ng-related-section){color:var(--bb-text)}
/* Actual panel classes spanning homepage, venue, account and quote plugin */
:is(.ng-hero-search,.ng-directory-filter,.ng-venue-card,.ng-compare-item,.ng-detail-panel,.ng-overview-card,.ng-profile-rating,.ng-quick-guide,.ng-booking-card,.ng-calc-card,.ng-my-tile,.bb-my-section,.ngq-app .ngq-panel,.ngq-app .ngq-form-panel,.ngq-app .ngq-vendor-editor,.ngq-app .ngw-wizard,.ngq-app .ngw-step,.ngq-app .ngw-panel,.ngq-app .ngd-card){
 background:var(--bb-surface)!important;
 border:1px solid var(--bb-line)!important;
 border-radius:var(--bb-radius)!important;
 box-shadow:none!important;
}
:is(.ng-card-details,.ng-venue-card .ng-card-details,.bb-my-metrics a,.bb-my-shortcuts a,.ng-quick-category,.bb-journey-item,.ng-new-card,.ngq-app .ngq-list-item,.ngq-app .ngq-stats>div){
 background:var(--bb-surface)!important;border-color:var(--bb-line)!important;box-shadow:none!important;
}
.ng-quick-category[class*="ng-quick-type"]{background:var(--bb-surface)!important}
:is(.ng-detail-panel,.ng-overview-card,.ng-profile-rating,.ng-quick-guide){scroll-margin-top:180px}
:is(.ng-panel-title,.ng-overview-heading,.ng-section-heading,.bb-my-section-title) h2,
:is(.ngq-app,.ng-detail-page,.bb-my-section) h3{color:var(--bb-text)}
:is(.ng-panel-title small,.ng-overview-heading .ng-eyebrow,.ng-kicker,.ng-quick-head>span,.bb-my-eyebrow,.bb-my-section-title small){color:var(--bb-accent)!important;letter-spacing:.02em!important}
:is(.ng-intro-quote,.ng-rich-content,.ng-card-description,.ng-detail-lead,.ng-section-heading p,.ngq-panel p,.ngq-app .ngq-form label,.bb-my-head p){color:var(--bb-sub)}
:is(.ng-venue-card,.ng-quick-category,.ng-fee-group,.ng-price-panel,.ng-detail-panel,.ng-overview-card){overflow-wrap:anywhere}
/* Venue: stop nested charcoal and brown styling inside blue sections */
.ng-detail-page .ng-detail-anchor-top{
 background:var(--bb-shell)!important;border:1px solid var(--bb-line)!important;box-shadow:none!important;
 border-radius:var(--bb-radius-sm)!important;
}
.ng-detail-anchor a{color:var(--bb-sub)!important;border-radius:8px}
.ng-detail-anchor a:focus-visible,.ng-detail-anchor a:hover{color:var(--bb-accent)!important;background:rgba(233,195,128,.09)!important}
.ng-detail-top-actions .ng-icon-action,.ng-icon-action,.ng-gallery-controls{background:var(--bb-shell)!important;border:1px solid var(--bb-line)!important;color:var(--bb-text)!important}
.ng-panel-icon,.ng-fee-heading-icon,.ng-quick-item>span,.ng-crowd-icon,.ng-pickup-emoji{
 background:var(--bb-inset)!important;border:1px solid var(--bb-line)!important;color:var(--bb-accent)!important;
 box-shadow:none!important;
}
.ng-rating-overview{gap:14px!important}
.ng-profile-rating .ng-rating-summary{background:var(--bb-inset)!important;border:1px solid var(--bb-line)!important;border-radius:var(--bb-radius-sm)!important;box-shadow:none!important}
.ng-profile-rating .ng-rating-row{background:var(--bb-inset)!important;border:1px solid var(--bb-line)!important;box-shadow:none!important;min-height:48px}
.ng-rating-summary>strong,.ng-rating-row>b{color:var(--bb-accent)!important}
.ng-rating-summary>em,.ngv-score-source,.ng-rating-name,.ng-quick-item small{color:var(--bb-sub)!important}
.ng-rating-stars{color:#58667a!important}.ng-rating-stars>.ng-rating-filled{color:var(--bb-accent)!important}
.bb-rating-empty{padding:21px;display:flex;align-items:center;gap:15px;background:var(--bb-inset);border:1px solid var(--bb-line);border-radius:var(--bb-radius-sm);min-width:0}
.bb-rating-empty-icon{flex:0 0 44px;width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--bb-line);border-radius:12px;color:var(--bb-accent);font-size:26px;background:var(--bb-surface)}
.bb-rating-empty>div{min-width:0;flex:1}.bb-rating-empty strong{font-size:15px;font-weight:760;color:var(--bb-text);display:block;line-height:1.45}
.bb-rating-empty p{margin:4px 0 0;font-size:12px;color:var(--bb-sub);line-height:1.55}
.bb-rating-empty a{flex-shrink:0;color:var(--bb-accent);font-size:12px;font-weight:760;border:1px solid rgba(233,195,128,.38);border-radius:9px;padding:10px 12px;white-space:nowrap;text-decoration:none}
.bb-rating-empty a:hover{background:rgba(233,195,128,.1)}
.ng-quick-item{border-color:var(--bb-line)!important}.ng-quick-item strong{color:var(--bb-text)!important}.ng-quick-item>div{min-width:0}
:is(.ng-quick-chips span,.ng-outline-tag,.ng-fee-chips>span,.ng-detail-tags>span){border-color:var(--bb-line)!important;background:var(--bb-inset)!important;color:var(--bb-sub)!important}
.ng-detail-tags .ng-status{background:var(--bb-inset)!important;color:#91d9bf!important;border-color:rgba(145,217,191,.35)!important}
.ng-fee-group,.ng-price-highlight,.ng-fee-rows,.ng-fee-group-heading,.ng-fee-row,.ng-calculator,.ng-calc-lines,.ng-calculator-result,.ng-review-empty,.ngv-review-write,.ngv-review-login,.ngq-app .ngq-chat-thread,.ngq-app .ngq-chat-msg{
 background:var(--bb-inset)!important;border-color:var(--bb-line)!important;box-shadow:none!important
}
.ng-fee-group,.ng-price-highlight,.ngv-review-write{border:1px solid var(--bb-line)!important;border-radius:var(--bb-radius-sm)!important;overflow:hidden}
.ng-fee-rows{background:transparent!important}.ng-fee-row{border-color:var(--bb-line)!important}
.ng-fee-row strong,.ng-price-highlight>strong,.ng-booking-price,.ng-calculator-result strong,.ng-card-footer>strong{color:var(--bb-accent)!important}
.ng-price-panel .ng-panel-title{margin-bottom:18px}
.ng-fee-group-heading h3,.ng-fee-group h3{color:var(--bb-text)!important}
.ng-fineprint,.ng-calc-card .calc-warning{color:var(--bb-muted)!important}
.ng-review-empty{border:1px solid var(--bb-line)!important;border-radius:var(--bb-radius-sm)!important;padding:26px 18px;min-height:125px}
.ng-review-empty strong{color:var(--bb-text)}.ng-review-empty p{color:var(--bb-sub)}
/* Registration and customer forms: form fields never switch to white/black randomly. */
.ngq-app :is(.ngq-form input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]),.ngq-form select,.ngq-form textarea,.ngw-wizard input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=file]),.ngw-wizard select,.ngw-wizard textarea,.ngt-editor input:not([type=checkbox]),.ngt-editor select,.ngt-editor textarea),
.ng-hero-search :is(input,select),.ng-directory-filter :is(input,select),.ng-calculator :is(input,select){
 background:var(--bb-inset)!important;border:1px solid var(--bb-line-strong)!important;
 color:var(--bb-text)!important;border-radius:var(--bb-radius-sm)!important;
 min-height:46px;box-shadow:none!important;outline:none;
}
.ngq-app :is(input,textarea)::placeholder,.ng-hero-search input::placeholder{color:var(--bb-muted)!important;opacity:1}
.ngq-app :is(select option,select optgroup),.ng-hero-search select option{color:var(--bb-text);background:var(--bb-inset)}
.ngq-app :is(input,select,textarea):focus-visible,.ng-hero-search :is(input,select):focus-visible,.ng-calculator select:focus-visible{border-color:var(--bb-accent)!important;outline:2px solid rgba(233,195,128,.25)!important;outline-offset:1px}
.ngq-app :is(.ngw-advanced,.ngw-simple-person,.ngw-week-details,.ngw-hours-quick,.ngw-person-preview,.ngt-row,.ngt-editor,.ngq-money-field,.ngq-chat-thread,.ngq-pay-address,.ngq-upsell,.ngq-request-head,.ngq-quote-note),
.ngq-app :is(.ngw-radio-card span,.ngw-hours-buttons button){
 background:var(--bb-inset)!important;border-color:var(--bb-line)!important;box-shadow:none!important;
}
.ngq-app .ngq-money-field{border:1px solid var(--bb-line-strong)!important;border-radius:var(--bb-radius-sm)!important}
.ngq-app .ngq-money-field input{border:0!important;min-height:42px!important}
.ngq-app :is(.ngw-panel label.ngw-person-confirm,.ngw-panel label.ngw-two-confirm,.ngq-form label.ngq-check,.ngt-editor label.ngt-enable,.ngt-editor label.ngt-confirm){
 background:var(--bb-inset)!important;border:1px solid var(--bb-line-strong)!important;box-shadow:none!important;
 display:grid!important;grid-template-columns:20px minmax(0,1fr)!important;
 align-items:start!important;justify-items:start!important;gap:11px!important;
 padding:13px!important;border-radius:var(--bb-radius-sm)!important;
}
.ngq-app :is(.ngw-panel label.ngw-person-confirm,.ngw-panel label.ngw-two-confirm,.ngq-form label.ngq-check,.ngt-editor label.ngt-enable,.ngt-editor label.ngt-confirm) input[type=checkbox]{
 appearance:auto!important;position:static!important;transform:none!important;
 display:block!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;
 margin:2px 0 0!important;padding:0!important;grid-column:1!important;accent-color:var(--bb-accent)!important;
}
.ngq-app :is(.ngw-panel label.ngw-person-confirm,.ngw-panel label.ngw-two-confirm,.ngq-form label.ngq-check,.ngt-editor label.ngt-enable,.ngt-editor label.ngt-confirm)>span{
 grid-column:2!important;min-width:0!important;line-height:1.55!important;color:var(--bb-text)!important;
}
.ngq-app :is([hidden],label[hidden],.ngw-two-confirm[hidden],.ngw-person-confirm[hidden]){display:none!important}
.ngq-app .ngw-actions{display:flex;align-items:stretch;gap:9px;flex-wrap:nowrap}
.ngq-app .ngw-actions button{min-width:0;min-height:48px!important;border-radius:var(--bb-radius-sm)!important}
.ngq-app :is(.ngq-btn,.ngw-next,.ngv-review-submit),.ng-button-gold,.ng-hero-search button[type=submit]{border-radius:var(--bb-radius-sm)!important}
.ngq-app .ngw-progress-item{min-width:0}
/* Consistent hierarchy for real customer dashboard and home cards. */
.bb-my-metrics a,.bb-my-shortcuts a{border:1px solid var(--bb-line)!important;border-radius:var(--bb-radius-sm)!important}
.bb-my-metrics span,.bb-my-list-row small,.bb-my-shortcuts small{color:var(--bb-sub)!important}
.bb-my-list-row{border-color:var(--bb-line)!important}
.ng-card-price-meta,.ng-card-price-meta small{color:var(--bb-sub)!important}
.ng-card-details .ng-card-description{color:var(--bb-sub)!important}
.ng-venue-card:hover,.ng-quick-category:hover,.bb-my-metrics a:hover,.bb-my-shortcuts a:hover{border-color:rgba(233,195,128,.4)!important}
.ng-venue-card .ng-card-footer{border-color:var(--bb-line)!important}
/* One responsive rhythm and safe areas. */
@media(max-width:780px){
 .ng-profile-rating.ng-overview-card,.ng-overview-card,.ng-detail-panel{padding:20px!important}
 .ng-panel-title,.ng-overview-heading{margin-bottom:17px!important}
 .ng-overview-heading h2,.ng-panel-title h2{font-size:21px!important}
 .ng-panel-icon{height:40px!important;width:40px!important;flex:0 0 40px!important}
 .bb-rating-empty{padding:16px;gap:12px;align-items:flex-start}
 .bb-rating-empty-icon{width:38px;height:38px;flex-basis:38px;font-size:23px}
 .bb-rating-empty a{font-size:11px;padding:9px}
 .ng-detail-anchor{gap:5px!important;justify-content:space-between!important}
 .ng-detail-anchor a{font-size:12px!important;padding:10px 5px!important}
 .ngq-app .ngq-panel,.ngq-app .ngq-form-panel,.ngq-app .ngq-vendor-editor{border-radius:var(--bb-radius)!important}
}
@media(max-width:390px){
 .bb-rating-empty{display:grid;grid-template-columns:38px minmax(0,1fr);gap:8px 11px}
 .bb-rating-empty a{grid-column:2;justify-self:start}
 .ng-profile-rating.ng-overview-card,.ng-overview-card,.ng-detail-panel{padding:17px!important}
 .ng-detail-anchor a{font-size:11px!important}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Unverified status is NOT a confirmed-open green badge. */
.ng-detail-tags .ng-status-pending{color:var(--bb-sub)!important;border-color:var(--bb-line-strong)!important;background:var(--bb-inset)!important}
.ng-detail-tags .ng-status-pending .ng-status-dot{background:var(--bb-muted)!important;box-shadow:none!important}
.ng-detail-tags .ng-status-closed{color:#e9a8a8!important;border-color:rgba(233,168,168,.38)!important;background:var(--bb-inset)!important}

/* Plugin page outer frame must not revert to the legacy pitch-black background. */
.ngq-app{background:transparent!important;color:var(--bb-text)!important}
.ngq-app :is(.ngq-wrap,.ngq-main,.ngq-dashboard,.ngq-content,.ngq-vendor-page){background:transparent!important;color:var(--bb-text)}
.ngq-app :is(.ngq-simple-head,.ngq-request-head,.ngq-title){color:var(--bb-text)}
