/* One coherent visual system for church venue booking. */
:root{
 --church:#196747;--church-dark:#123d2d;--church-soft:#e9f5ed;
 --church-bg:#f7f9f6;--church-gold:#d5b568;--church-line:#d6e5da;
 --church-ink:#1f392c;--church-muted:#5c7265;--church-shadow:0 10px 30px #1b513314;
 --blue:#196747;--forest:#196747;--forest-dark:#123d2d;
 --ink:#1f392c;--muted:#5c7265;--line:#d6e5da;--bg:#f7f9f6;
 --canvas:#f7f9f6;--booked:#e2f3e8;--booked-ink:#165e40;
}
body:is(.public-calendar,.admin-calendar,.admin-workspace,.v3-booking,.yoc-manage,.yoc-ack,.yoc-error,.yoc-login,.yoc-print){
 background:var(--church-bg)!important;color:var(--church-ink)!important;
 font-family:ui-sans-serif,system-ui,-apple-system,"PingFang HK","Noto Sans TC",sans-serif;
}
body:is(.public-calendar,.admin-calendar,.admin-workspace,.v3-booking){overflow-x:clip}
:is(.public-calendar,.admin-calendar,.admin-workspace,.v3-booking) :is(h1,h2,h3){color:var(--church-ink)}
:is(.public-calendar,.admin-calendar,.admin-workspace,.v3-booking,.yoc-manage,.yoc-ack,.yoc-error,.yoc-login) :is(a,button,input,select,textarea,summary):focus-visible{outline:3px solid #b39449!important;outline-offset:3px}
:is(.public-calendar,.admin-calendar,.admin-workspace,.v3-booking) :is(input,select,textarea){accent-color:var(--church)}
.public-calendar .topbar,.admin-calendar .topbar,.admin-workspace .topbar,.v3-booking .v2-topbar{
 background:var(--church-dark)!important;color:white!important;border-bottom:3px solid var(--church-gold)!important;
}
.v3-booking .v2-topbar-inner{max-width:1100px!important}
:is(.public-calendar,.admin-calendar,.admin-workspace) .brand-icon,.v3-booking .v2-logo{background:#e6f2e6!important;color:var(--church-dark)!important}
:is(.public-calendar,.admin-calendar,.admin-workspace) :is(.brand,.brand-name,.header-link),.v3-booking :is(.v2-brand,.v2-topnav a){color:#fff!important;text-decoration:none}
:is(.public-calendar,.admin-calendar,.admin-workspace) .header-link:hover,.v3-booking .v2-topnav a:hover{color:#e5f6d9!important}
:is(.public-calendar,.admin-calendar,.admin-workspace) .primary-button,
.v3-booking :is(.v2-btn-primary,.v2-btn.v2-confirm),
.admin-calendar :is(.work-ok,.work-actions button),
.admin-workspace button:not(.danger):not(.warning):not(.status-danger):not(.status-warning):not(.status-reject):not(.work-no):not(.logout-form button),
.yoc-manage button,.yoc-ack .copy-row button,.yoc-login button{
 background:var(--church)!important;border-color:var(--church)!important;color:white!important;border-radius:10px;box-shadow:none;
}
.admin-calendar :is(#work-add-duty,#event-add-duty),.admin-calendar .work-staff summary{background:#fff!important;color:var(--church-dark)!important;border-color:#78a78d!important}
:is(.public-calendar,.admin-calendar) :is(.view-toggle button[aria-pressed="true"],.admin-filter.active){background:var(--church)!important;color:white!important}
.v3-booking .v2-stepper-item.is-current .v2-stepnum,.v3-booking .v2-stepper-item.is-complete .v2-stepnum{background:var(--church)!important;color:white!important}
.v3-booking .v2-stepper-item.is-current{color:var(--church-dark)!important;border-color:var(--church)!important}
.v3-booking :is(.v2-form-title,.v2-step h2,.visual-range,.time-choice-head h3){color:var(--church-dark)!important}
.v3-booking :is(.v2-step,.time-choice,.request-extra-panel),.admin-calendar :is(.dialog-card,.work-toolbar,.work-list-day),.admin-workspace :is(.panel,.duty-card){
 background:#fff;border-color:var(--church-line)!important;border-radius:15px;box-shadow:var(--church-shadow);
}
.v3-booking .time-choice{background:#fbfdfb!important}
.v3-booking :is(input,select,textarea),.admin-calendar :is(input,select,textarea),.admin-workspace :is(input,select,textarea){
 border-color:#b6d0c0!important;border-radius:10px;background:#fff;color:var(--church-ink);max-width:100%;min-width:0;
}
.v3-booking .day-toggle input:checked{background:var(--church)!important}
.v3-booking .quick-days button,.v3-booking .time-adjust button{background:#fff!important;border-color:#b6d0c0!important;color:var(--church-dark)!important}
.v3-booking :is(.recurrence-chip.is-included,.room-pick.selected){border-color:var(--church)!important;background:var(--church-soft)!important}
.v3-booking .staffing-guidance,.admin-calendar .staffing-guidance{
 display:block;padding:11px 13px;border:1px solid var(--church-line);border-left:4px solid #79a68b;
 border-radius:10px;background:#f4faf5;color:#25553d;font-size:13px;font-weight:650;line-height:1.55;margin:10px 0;
}
.v3-booking .staffing-guidance.needs-staff{background:#fff9eb;color:#60451c;border-left-color:#b18336}
.v3-booking .staffing-onsite{display:grid;gap:6px;margin:12px 0;padding:12px;border:1px solid var(--church-line);border-radius:12px;background:#f4faf5}
.v3-booking .staffing-onsite[hidden],.admin-calendar [hidden],.v3-booking [hidden]{display:none!important}
.v3-booking .field-hint{font-size:12px;color:var(--church-muted);font-weight:450}
.v3-booking .v2-form-wrap{max-width:790px!important}
.admin-calendar #event-manage-link{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;color:var(--church-dark)!important}
.admin-calendar #event-manage-link[hidden]{display:none!important}
.admin-calendar #event-manage-link::after{content:"⌄";font-size:20px;line-height:1;transition:transform .15s}
.admin-calendar #event-manage-link[aria-expanded="true"]::after{transform:rotate(180deg)}
.admin-calendar .work-staff summary{box-shadow:none!important}
.admin-calendar .work-choices label:has(input:checked){background:var(--church-soft)!important;border-color:#68a182!important}
.admin-workspace .status-tabs a.selected{background:#e1f2e6!important;color:var(--church-dark)!important;border-color:#8db89d!important}
.admin-workspace .header-link.is-active{color:#ffe6b7!important;border-color:var(--church-gold)!important}
.yoc-manage main,.yoc-ack main,.yoc-error main,.yoc-login .panel{
 max-width:670px;margin:30px auto;padding:clamp(20px,4vw,32px);border:1px solid var(--church-line);
 border-radius:17px;background:white;box-shadow:var(--church-shadow);min-width:0;
}
.yoc-manage h1,.yoc-ack h1,.yoc-error h1,.yoc-login h1,.yoc-print h1{color:var(--church-dark)!important}
.yoc-manage a,.yoc-ack a,.yoc-error a,.yoc-print a{color:var(--church)!important}
.yoc-ack .copy-panel{background:#f4faf5!important;border-color:var(--church-line)!important}
.yoc-ack .ack-calendar-link{background:#e6f3e8!important;border-color:#a9d1b3!important}
.yoc-login .panel{max-width:420px}
.yoc-print button{background:var(--church)!important}.yoc-print th{background:#e8f2ea!important}
@media(max-width:690px){
 .yoc-manage main,.yoc-ack main,.yoc-error main,.yoc-login .panel{margin:12px!important;border-radius:14px}
 .v3-booking .v2-container{padding:18px 13px!important}.v3-booking .v2-form-title{font-size:clamp(24px,5vw,31px)}
 .admin-calendar .work-quick-dialog{max-width:calc(100vw - 16px)}
}
@media print{.yoc-print{background:white!important}.yoc-print main{max-width:100%!important}}
/* Owner HUAT: Admin Settings mobile menu uses the same green system as Calendar. */
.admin-calendar .mobile-admin-menu summary,.admin-workspace .mobile-admin-menu summary{background:var(--church-dark)!important;color:#fff!important;border-color:#9fbfa6!important}
.admin-calendar .mobile-admin-menu nav,.admin-workspace .mobile-admin-menu nav{border-color:var(--church-line)!important;background:#fff!important}
.admin-calendar .mobile-admin-menu nav a,.admin-workspace .mobile-admin-menu nav a{color:var(--church-dark)!important}
.admin-calendar .mobile-admin-menu nav a:hover,.admin-workspace .mobile-admin-menu nav a:hover{background:var(--church-soft)!important}
/* The mobile Settings group headings must follow the church-green palette too. */
.admin-calendar .mobile-admin-menu nav .mobile-admin-group,.admin-workspace .mobile-admin-menu nav .mobile-admin-group{color:#355b48!important}
.booking-admin-form #approval-sla{display:none!important}

/* Destructive and sign-out actions must not inherit primary green. */
.admin-workspace :is(button.status-danger,button.status-reject,button.work-no){background:#a63e40!important;color:#fff!important;border-color:#a63e40!important}
.admin-workspace button.status-warning{background:#aa7020!important;color:#fff!important;border-color:#aa7020!important}
.admin-workspace .logout-form button{background:transparent!important;color:#fff!important;border:1px solid #829a88!important}

/* Approved events needing real verified staffing: warn directly on the ORIGINAL activity. */
.admin-calendar :is(.cal-event,.month-event,.agenda-event,.work-list-event,.all-day-chip).needs-duty{
 background:#fff0ed!important;border-color:#c24343!important;color:#782326!important;
 box-shadow:inset 4px 0 #b52f33!important;
}
.admin-calendar :is(.cal-event,.month-event,.agenda-event,.work-list-event,.all-day-chip).needs-duty:hover{
 background:#ffe1db!important;
}
.admin-calendar .event-duty-attention{
 padding:13px 14px;margin:10px 0 13px;border-radius:12px;
 border:2px solid #c24343;background:#fff0ed;color:#742528;
}
.admin-calendar .event-duty-attention[hidden]{display:none!important}
.admin-calendar .event-duty-attention strong{display:block;font-size:14px;color:#84282b}
.admin-calendar .event-duty-attention p{font-size:13px;line-height:1.55;margin:7px 0 12px;color:#6c3032}
.admin-calendar .event-duty-attention #event-duty-resolve{
 background:#8f3035!important;border-color:#8f3035!important;color:#fff!important;
 min-height:44px;font-size:13px;font-weight:780;
}
.admin-calendar .event-duty-attention #event-duty-resolve:hover{background:#742126!important}
@media(prefers-reduced-motion:reduce){.admin-calendar :is(.cal-event,.month-event,.agenda-event,.work-list-event).needs-duty{transition:none}}

.admin-calendar .month-overflow-item.needs-duty{background:#fff0ed!important;border-color:#c24343!important;color:#782326!important;box-shadow:inset 4px 0 #b52f33!important}

/* Event-only staffing: no separate duty events or roster navigation. */
.admin-calendar #event-staff-assignment[hidden],.admin-calendar #event-staff-suggestion[hidden],.admin-calendar #event-access-review-link[hidden]{display:none!important}
.admin-calendar .event-staff-assignment{border:1px solid var(--church-line);border-radius:12px;background:#f5faf6;padding:12px;margin-top:10px;min-width:0}
.admin-calendar .event-staff-header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.admin-calendar .event-staff-header h3{font-size:15px;margin:0;color:var(--church-dark)}
.admin-calendar #event-staff-cancel{border:1px solid var(--church-line);background:#fff;color:var(--church-dark);border-radius:8px;padding:8px 12px;min-height:40px}
.admin-calendar .event-staff-suggestion{border:1px solid #cce3d4;padding:10px;border-radius:9px;display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;font-size:13px}
.admin-calendar #event-use-responsible{background:var(--church);color:#fff;border:0;border-radius:8px;padding:9px 12px;min-height:40px;font-weight:700}
.admin-calendar .event-staff-assignment .work-duty-form{padding:10px 0 0;overflow:visible;max-height:none}
.admin-calendar .event-staff-assignment .work-accept{display:flex;align-items:center;gap:8px}
.admin-calendar .event-staff-assignment #work-duty-access-roles[hidden]{display:none!important}
.admin-calendar .event-staff-assignment .work-staff-field{min-width:0}

/* Original Event-owned staff records; no standalone shift calendar bars. */
.admin-calendar #event-assigned-staff[hidden]{display:none!important}
.admin-calendar .event-assigned-staff{margin:14px 0;border-top:1px solid var(--church-line);padding-top:12px}
.admin-calendar .event-assigned-staff h3{font-size:15px;margin:0 0 9px}
.admin-calendar .event-assignee{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:9px 0;border-top:1px dotted var(--church-line);font-size:13px}
.admin-calendar .event-assignee span{flex:1 1 180px}
.admin-calendar .event-assignee button{min-height:40px;border:1px solid #91ad9b;border-radius:8px;background:white;color:var(--church-dark);padding:8px 12px;font-weight:700}
.admin-calendar .event-assignee .event-staff-remove{color:#922f33;border-color:#be8d90}

/* APPROVED remains green. Separate staffing follow-up is an amber accent,
   not a red rejection or conflict state. */
.admin-calendar :is(.cal-event,.month-event,.agenda-event,.work-list-event,.all-day-chip).needs-duty{
 background:#e9f6ed!important;border-color:#d3a64c!important;color:#18583b!important;
 box-shadow:inset 4px 0 #d1a347!important
}
.admin-calendar :is(.cal-event,.month-event,.agenda-event,.work-list-event,.all-day-chip).needs-duty:hover{background:#dcf0e4!important}
.admin-calendar .event-duty-attention{border:1px solid #e4c783;background:#fff8e8;color:#6c521a}
.admin-calendar .event-duty-attention strong,.admin-calendar .event-duty-attention p{color:#74551a}
.admin-calendar .event-duty-attention #event-duty-resolve{background:#1d6e4d!important;border-color:#1d6e4d!important}
.admin-calendar .month-overflow-item.needs-duty{background:#e9f6ed!important;border-color:#d3a64c!important;color:#18583b!important;box-shadow:inset 4px 0 #d1a347!important}
.admin-calendar .event-status.approved{color:#17623d;background:#e0f3e8}
.public-calendar{background:#fbfcf7}
.public-calendar .topbar{background:#1b6047}
