/* Shared readable UI layer, loaded after page-specific styles. */
:root{--ink:#172b22;--muted:#4b5d53;--green:#125b3c;--dark:#083d29;--line:#c6d2ca}
body{font-size:15px;line-height:1.5}
h1{font-size:clamp(28px,3vw,42px);line-height:1.18}h2{font-size:24px;line-height:1.25}
main{padding-top:28px}.hero,.dashboard-hero,.employee-hero{margin-bottom:22px}
small{font-size:13px}button,input,select,textarea{font-family:inherit}input,select,textarea{font-size:14px;border-color:#a5b6aa}input::placeholder,textarea::placeholder{color:#596c60;opacity:1}
button{font-size:13px}button:not(:disabled),summary,a{touch-action:manipulation}
a{color:#125b3c}a:hover{text-decoration:underline;text-underline-offset:3px}
:where(a,button,summary,input,select,textarea,[tabindex]):focus-visible{outline:3px solid #2563eb;outline-offset:3px}
.primary,.secondary,.cancel-button,.danger-button{min-height:40px;padding:10px 16px;font-size:14px;border-radius:8px}
.secondary{background:#edf4ef;color:#174b32;border:1px solid #a9bfae}.secondary:hover{background:#dcebe0}.primary:hover{background:#083d29}.primary:disabled,.secondary:disabled{opacity:.55;cursor:not-allowed}
label,.fields label,.employee-fields label,.edit-fields label,.filter-row label{font-size:14px}
.card:not(.upload)>p:not(.dashboard-eyebrow),.review-card>p{color:var(--muted);font-size:14px;font-weight:400;text-transform:none;letter-spacing:normal;line-height:1.5}
.card small,.empty-state,.metric-note,.selection-caption,.analytics-main .card>p.metric-note{color:var(--muted);font-size:13px}
/* Light-card help text must not inherit the dark upload panel's lime color. */
details small,details code{color:#334d3e}.upload details small,.upload details code{color:#e2efd7}.upload>small,.drop small{color:#d9e9df}
.card details{font-size:14px}.card summary{font-weight:600}.login-help,.reset-security{color:var(--muted);font-size:12px}
.login-box>small,.employee-dialog>small,.reset-dialog>small{font-size:14px}.profile-fields input:disabled,.fields input[readonly]{color:#41564a;background:#edf1ee}
th{font-size:12px;color:#344c3e;background:#eef3ef}td{font-size:14px;color:var(--ink)}th,td{padding:10px 13px}mark,.review-state{font-size:12px;font-weight:700;line-height:1.5;display:inline-block;padding:3px 8px;border-radius:6px;white-space:nowrap}
.review-state{background:#eaf0ec;color:#344c3e}.review-state.pending-review{background:#e3edff;color:#164890}.review-state.rework-required{background:#fff0cc;color:#714600}.review-state.review-completed{background:#dff2e7;color:#145336}
.sidebar nav a{color:#354c3e;font-size:13px}.sidebar nav p{color:#526659;font-size:11px}.sidebar nav a.active{color:#fff}.sidebar-account small,.sidebar-foot{color:var(--muted);font-size:12px}.sidebar-account button{color:#354c3e;font-size:12px;min-height:36px}
.sidebar nav .tracker-nav a{font-size:13px;flex-wrap:wrap;gap:5px 8px}.tracker-nav-title{display:grid;grid-template-columns:16px minmax(0,1fr) 8px;gap:6px;padding:10px 8px;font-size:12px;align-items:center}.tracker-nav-title span{margin:0}.tracker-nav-title .tracker-label{white-space:nowrap}.tracker-nav-title::after{grid-column:3;grid-row:1;margin:0}.tracker-nav-counts{grid-column:2/4;display:flex;flex-wrap:wrap;gap:4px}.tracker-nav .review-badge,.review-badge{display:inline-block;width:auto;margin:0;padding:3px 7px;border:1px solid #c5a955;border-radius:6px;background:#fff0c2;color:#593e00;font:700 12px/1.4 Arial,sans-serif;white-space:nowrap;letter-spacing:normal;text-transform:none}.sidebar nav a.active .review-badge{background:#fff0c2;color:#593e00}.tracker-nav-title .tracker-icon{display:inline}
.kpi>span,.kpi>small,.chart-legend,.donut-legend,.analytics-filters>small,.review-grid span{font-size:13px}.kpi.accent span,.kpi.accent small{color:#d7e8dd}.analytics-main details{font-size:14px}.insight-heading>span{color:#40564a;font-size:12px}.row-actions button,.pagination button,.chart-download,.presets button{font-size:12px;min-height:34px}
/* Dense review workspace: compact heading, compact empty inbox, single-line queue. */
.reviews-main{padding-top:24px}.reviews-hero{margin-bottom:16px}.reviews-hero h1{font-size:clamp(24px,2.7vw,36px);max-width:none;white-space:nowrap}.reviews-hero p{margin:7px 0 0;color:var(--muted);font-size:14px;text-transform:none;letter-spacing:normal;font-weight:400}
.notification-panel{padding:13px 18px;margin:0 0 16px;box-shadow:none}.notification-panel summary{display:list-item;color:var(--ink);font-size:14px;cursor:pointer}.notification-panel summary>span:first-child{font-weight:700}.notification-summary{margin-left:14px;color:var(--muted);font-size:13px;font-weight:400}.notification-panel p{margin:12px 0!important}.notification-panel li{margin:10px 0}.notification-panel time{display:block;font-size:12px;color:var(--muted)}.notification-panel .secondary{width:auto}.notification-panel a{font-weight:600}
.review-card{padding:20px;margin-bottom:16px}.review-card h2{margin-bottom:10px}.review-card>p{margin:8px 0 14px}.review-queue-wrap{max-height:calc(100vh - 320px);min-height:180px;overflow:auto;scrollbar-gutter:stable}.review-queue-table th{position:sticky;top:0;z-index:1}.review-queue-table td,.review-queue-table th{white-space:nowrap;padding:9px 12px}.review-queue-table .queue-task{max-width:300px;overflow:hidden;text-overflow:ellipsis}.review-queue-table td a{display:inline-block;font-weight:700;padding:4px 0}.review-actions .secondary{width:auto}.review-actions button{flex:0 1 auto}.review-details dd{font-size:14px}.review-event p{font-size:14px}.review-notes{color:var(--ink)}
@media(max-width:820px){.sidebar{display:flex;flex-wrap:wrap;gap:10px}.sidebar .logo-wrap{width:70px;flex-shrink:0}.sidebar nav{flex:1;min-width:0;flex-wrap:wrap;justify-content:flex-start}.sidebar .sidebar-account{width:100%;margin-top:4px}.sidebar-account>div{min-width:0}.sidebar nav a{white-space:normal}.tracker-nav-title .tracker-label{white-space:normal}.sidebar nav .tracker-nav{max-width:100%}.reviews-hero h1{font-size:clamp(20px,5.2vw,32px)}.notification-summary{display:block;margin:6px 0 0}.review-queue-wrap{max-height:65vh}.review-card{padding:16px}.review-queue-table .queue-task{max-width:230px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

.review-queue-table td a{padding:0}.review-queue-table td{padding-block:7px}
.login-eyebrow{color:var(--green)}.login-brand .login-eyebrow{color:#e1f2ba}.sidebar{overflow-y:auto}.account-auto-note span,.employee-form-card .heading>span{font-size:12px;color:var(--muted)}

.upload>p.upload-review-note{color:#e1eee5;font-size:13px;font-weight:400;letter-spacing:normal;text-transform:none;line-height:1.6;margin:16px 0;padding:12px;border:1px solid #6e9580;border-radius:8px}

/* =====================================================================
   Colour system — W3C WCAG 2.2 level AA
   - Text: at least 4.5:1 against its background (SC 1.4.3); large text 3:1.
   - Non-text UI and chart marks: at least 3:1 (SC 1.4.11).
   - Colour is never the only signal: states also carry text or icons (SC 1.4.1).
   - Keyboard focus is always visible (SC 2.4.7).
   Green is the BCS brand accent only: links, primary buttons and the active
   menu item. Text, surfaces and charts use neutral ink and their own palettes.
   ===================================================================== */
:root{--ink:#1d2421;--muted:#4f5652;--line:#d5d9d6;--paper:#f5f6f5;--green:#125b3c;--dark:#0e4a31;--focus:#1c5cab}
body{background:var(--paper)}
.hero p,.card>p,.heading p,.table-head p,.dashboard-eyebrow,.insight-heading p{color:var(--muted)}
.sidebar nav a span{background:#eef0ef;color:var(--ink)}
.sidebar nav a.active span{background:rgba(255,255,255,.16);color:#fff}
.sidebar nav a:hover,.tracker-nav-title:hover{background:#eef0ef}
.sidebar nav a.active:hover{background:var(--dark)}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
input:focus,select:focus,textarea:focus{border-color:var(--focus)}
.card.upload>p{color:#d7e8dd}
.form-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.form-actions .primary{width:auto}
.cancel-link{display:inline-block;padding:12px 18px;border-radius:9px;font-weight:700;text-decoration:none;text-align:center}

/* Form action row: primary + secondary buttons share one size and sit side by side. */
.form-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:4px}
.form-actions .primary,.form-actions .cancel-link{display:inline-flex;align-items:center;justify-content:center;width:auto;min-width:150px;height:44px;padding:0 20px;border-radius:9px;font-size:14px;font-weight:700;line-height:1;box-sizing:border-box}
.form-actions .cancel-link{background:#fff;color:var(--ink);border:1px solid #6b706d;text-decoration:none}
.form-actions .cancel-link:hover{background:#eef0ef}

/* Settings: standard disclosure menu (no underlined link). */
.account-settings summary{list-style:none;justify-content:flex-start}
.account-settings summary::-webkit-details-marker{display:none}
.account-settings summary:hover{background:#eef0ef}
.settings-chevron{margin-left:auto;transition:transform .15s}
.account-settings[open] .settings-chevron{transform:rotate(180deg)}
.settings-menu{margin:6px 0 4px;padding:4px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.08)}
.account-settings .settings-menu a{display:flex;align-items:center;gap:10px;margin:0;padding:9px 10px;border-radius:7px;color:var(--ink);font-size:13px;font-weight:600;text-decoration:none}
.account-settings .settings-menu a:hover{background:#eef0ef}
.account-settings .settings-menu a[aria-current="page"]{background:#eef0ef;box-shadow:inset 3px 0 0 var(--green)}
@media (prefers-reduced-motion: reduce){.settings-chevron{transition:none}}
.table-card>p.scope-hint{margin:0 28px 12px;font-size:13px;font-weight:400;letter-spacing:normal;text-transform:none;color:var(--muted)}
.scope-note{display:block;margin-top:4px;font-size:12px;color:var(--muted)}

/* Add a research record: full-width form with a collapsible bulk-upload panel. */
.entry-layout{display:block}
.entry-card .heading{align-items:center}
.heading-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.bulk-toggle{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 14px;border:1px solid #6b706d;border-radius:9px;background:#fff;color:var(--ink);font-size:13px;font-weight:700;cursor:pointer}
.bulk-toggle:hover{background:#eef0ef}
.bulk-toggle[aria-expanded="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.bulk-chevron{transition:transform .15s}.bulk-toggle[aria-expanded="true"] .bulk-chevron{transform:rotate(180deg)}
.bulk-panel{margin:18px 0 6px;padding:20px;border:1px solid var(--line);border-radius:14px;background:#f7f8f7}
.bulk-panel[hidden]{display:none}
.bulk-panel h3{margin:0 0 6px;font:700 18px Georgia,serif;color:var(--ink)}
.bulk-panel .bulk-help{display:block;color:var(--muted);font-size:13px}
.bulk-panel p.upload-review-note{margin:12px 0;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-size:13px;line-height:1.55}
.bulk-panel form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center}
.bulk-panel .drop{min-height:96px;margin:0;border:1px dashed #6b706d;background:#fff;color:var(--ink)}
.bulk-panel .drop b{width:34px;height:34px;margin-bottom:6px;background:#eef0ef;color:var(--ink);font-size:18px}
.bulk-panel .drop small{color:var(--muted)}
.bulk-panel .drop.drag{background:#eef0ef}
.bulk-panel .secondary{height:44px;padding:0 20px;background:var(--green);border:0;color:#fff}
.bulk-panel details{margin-top:12px}
.bulk-panel details summary{color:var(--green);font-size:13px;font-weight:700;cursor:pointer}
.bulk-panel details code,.bulk-panel details small{color:var(--ink)}
.entry-card .fields{grid-template-columns:repeat(3,minmax(0,1fr))}
.entry-card .fields .wide{grid-column:1/-1}
@media(max-width:1100px){.entry-card .fields{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.entry-card .fields{grid-template-columns:1fr}.bulk-panel form{grid-template-columns:1fr}.entry-card .heading{flex-wrap:wrap}}
@media (prefers-reduced-motion: reduce){.bulk-chevron{transition:none}}
.heading-actions #clearForm{height:38px;padding:0 6px;border:0;background:none;color:var(--green);font-size:13px;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.entry-card .time-spent-fields{gap:12px}
@media(max-width:1100px){.entry-card .time-spent-fields{grid-column:1/-1}}

/* Compact time-spent inputs: e.g. [ 1 ] hr [ 30 ] min */
.entry-card .time-spent-fields{display:block;border:0;padding:0;margin:0}
.entry-card .time-spent-fields legend{padding:0;margin-bottom:6px;font-size:13px;font-weight:600}
.time-inputs{display:flex;align-items:center;gap:18px;min-height:46px}
.time-unit{display:inline-flex!important;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--ink)}
.time-unit input{width:4.6em;text-align:center;padding:10px 6px}
@media(max-width:1100px){.entry-card .time-spent-fields{grid-column:auto}}

/* Primary + secondary buttons share size; both change colour on hover. */
.form-actions .btn-secondary{display:inline-flex;align-items:center;justify-content:center;min-width:150px;height:44px;padding:0 20px;border:1px solid #6b706d;border-radius:9px;background:#fff;color:var(--ink);font-size:14px;font-weight:700;cursor:pointer;box-sizing:border-box}
.form-actions .primary{transition:background-color .15s}
.form-actions .primary:hover{background:#0b3d27}
.form-actions .btn-secondary:hover,.form-actions .cancel-link:hover{background:#e6e9e7;border-color:#1d2421}
@media (prefers-reduced-motion: reduce){.form-actions .primary{transition:none}}
