:root {
  --bw-ink: #18231f;
  --bw-muted: #607069;
  --bw-paper: #f5f1e8;
  --bw-panel: #fffdf8;
  --bw-line: #d8d2c3;
  --bw-cobalt: #194aa6;
  --bw-cobalt-dark: #113375;
  --bw-honey: #e5ad34;
  --bw-wasp: #b65d37;
  --bw-green: #31614a;
  --bw-danger: #9e342d;
  --bw-shadow: 0 18px 45px rgba(24, 35, 31, .09);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--bw-paper); color: var(--bw-ink); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; line-height: 1.55; }
a { color: inherit; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
.bw-shell { width: min(1180px, calc(100% - 34px)); margin-inline: auto; }
.bw-topbar { position: sticky; top: 0; z-index: 20; border-bottom: 1px solid rgba(216, 210, 195, .85); background: rgba(245, 241, 232, .92); backdrop-filter: blur(12px); }
.bw-nav { min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.bw-brand { display: flex; align-items: center; gap: 10px; text-decoration: none; }
.bw-brand span { display: grid; place-items: center; width: 37px; height: 37px; border-radius: 50%; background: var(--bw-cobalt); color: white; font-size: .7rem; letter-spacing: .06em; }
.bw-nav nav { display: flex; gap: 18px; flex-wrap: wrap; }
.bw-nav nav a { text-decoration: none; color: var(--bw-muted); font-size: .9rem; }
.bw-nav nav a:hover, .bw-nav nav a:focus-visible { color: var(--bw-cobalt); }

.bw-hero { padding: clamp(64px, 9vw, 118px) 0 70px; border-bottom: 1px solid var(--bw-line); background: radial-gradient(circle at 75% 22%, rgba(229,173,52,.2), transparent 24%), linear-gradient(145deg, #fbf7ec 0%, #ece9dd 100%); }
.bw-hero-grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(290px, .75fr); gap: clamp(34px, 8vw, 100px); align-items: end; }
.bw-eyebrow, .bw-kicker { margin: 0 0 11px; color: var(--bw-cobalt); font-weight: 800; letter-spacing: .12em; text-transform: uppercase; font-size: .75rem; }
.bw-hero h1, .bw-ledger-hero h1 { margin: 0; max-width: 780px; font-family: Georgia, "Times New Roman", serif; font-size: clamp(3.8rem, 9vw, 8.4rem); line-height: .82; letter-spacing: -.06em; font-weight: 500; }
.bw-lede { max-width: 680px; margin: 32px 0 0; font-size: clamp(1.08rem, 2vw, 1.4rem); color: #43514b; }
.bw-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }
.bw-button { display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--bw-line); border-radius: 999px; padding: 11px 17px; background: var(--bw-panel); color: var(--bw-ink); text-decoration: none; font-weight: 750; box-shadow: 0 3px 0 rgba(24,35,31,.05); }
.bw-button:hover, .bw-button:focus-visible { border-color: var(--bw-cobalt); color: var(--bw-cobalt); }
.bw-button.primary { color: white; background: var(--bw-cobalt); border-color: var(--bw-cobalt); }
.bw-button.primary:hover { background: var(--bw-cobalt-dark); color: white; }
.bw-button.small { padding: 7px 12px; font-size: .82rem; }
.bw-button.danger { color: var(--bw-danger); border-color: #dfb0ab; }
.bw-button.danger:hover { background: #fff0ee; }
.bw-hero-card { border: 1px solid rgba(25,74,166,.24); border-radius: 26px 26px 6px 26px; padding: 28px; background: rgba(255,253,248,.82); box-shadow: var(--bw-shadow); }
.bw-hero-card h2 { margin: 18px 0 8px; font-family: Georgia, serif; font-size: 1.8rem; font-weight: 500; }
.bw-hero-card p { margin: 0; color: var(--bw-muted); }
.bw-lock { display: inline-block; padding: 6px 9px; border-radius: 999px; background: #dce8ff; color: var(--bw-cobalt-dark); font-size: .76rem; font-weight: 850; text-transform: uppercase; letter-spacing: .08em; }

.bw-summary { margin-top: -28px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; position: relative; z-index: 2; }
.bw-summary article { display: grid; gap: 2px; min-height: 130px; padding: 23px; border: 1px solid var(--bw-line); background: var(--bw-panel); box-shadow: var(--bw-shadow); }
.bw-summary article:first-child { border-radius: 20px 0 0 20px; }
.bw-summary article:last-child { border-radius: 0 20px 20px 0; }
.bw-summary span, .bw-summary small { color: var(--bw-muted); }
.bw-summary strong { font-family: Georgia, serif; color: var(--bw-cobalt); font-size: 2.6rem; line-height: 1; font-weight: 500; }

.bw-section { padding: 88px 0; border-bottom: 1px solid var(--bw-line); }
.bw-heading { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 480px); gap: 44px; align-items: end; margin-bottom: 34px; }
.bw-heading h2 { margin: 0; font-family: Georgia, serif; font-size: clamp(2.25rem, 5vw, 4.5rem); line-height: .98; letter-spacing: -.04em; font-weight: 500; }
.bw-heading > p { margin: 0; color: var(--bw-muted); font-size: 1.05rem; }
.bw-toolbar, .bw-species-controls { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; padding: 16px; border: 1px solid var(--bw-line); background: rgba(255,253,248,.72); border-radius: 16px; }
.bw-toolbar label, .bw-species-controls label, .bw-form-grid label { display: grid; gap: 6px; color: var(--bw-muted); font-size: .78rem; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.bw-toolbar select, .bw-toolbar input, .bw-species-controls select, .bw-species-controls input, .bw-form-grid input, .bw-form-grid select, .bw-form-grid textarea { min-height: 43px; border: 1px solid var(--bw-line); border-radius: 9px; padding: 9px 11px; background: white; color: var(--bw-ink); text-transform: none; letter-spacing: normal; }
.bw-search { flex: 1 1 230px; }
.bw-progress { height: 8px; margin: 18px 0 26px; overflow: hidden; border-radius: 99px; background: #ddd7ca; }
.bw-progress span { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--bw-cobalt), #4c79cc); transition: width .25s ease; }

.bw-week-list { display: grid; gap: 12px; }
.bw-week { overflow: clip; border: 1px solid var(--bw-line); border-radius: 17px; background: var(--bw-panel); box-shadow: 0 7px 24px rgba(24,35,31,.04); }
.bw-week.current { border-color: var(--bw-cobalt); box-shadow: 0 0 0 3px rgba(25,74,166,.1); }
.bw-week[open] { box-shadow: var(--bw-shadow); }
.bw-week summary { list-style: none; display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 18px; align-items: center; padding: 18px 20px; cursor: pointer; }
.bw-week summary::-webkit-details-marker { display: none; }
.bw-week-number { width: 54px; height: 54px; display: grid; place-items: center; border-radius: 50%; background: #ece8dc; color: var(--bw-cobalt); font-family: Georgia, serif; font-size: 1.35rem; }
.bw-week.current .bw-week-number { background: var(--bw-cobalt); color: white; }
.bw-week-title strong { display: block; font-size: 1.05rem; }
.bw-week-title span { color: var(--bw-muted); font-size: .88rem; }
.bw-week-badges { display: flex; gap: 8px; align-items: center; justify-content: flex-end; flex-wrap: wrap; }
.bw-badge { padding: 5px 8px; border-radius: 99px; background: #eee9dd; color: var(--bw-muted); font-size: .75rem; font-weight: 800; }
.bw-badge.done { background: #dce8ff; color: var(--bw-cobalt-dark); }
.bw-badge.sighting { background: #f6e6bd; color: #744f00; }
.bw-week-body { padding: 0 20px 22px 102px; border-top: 1px solid #ebe6da; }
.bw-task-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 18px 0; }
.bw-task { display: flex; gap: 10px; align-items: flex-start; padding: 11px; border: 1px solid #e7e1d4; border-radius: 10px; background: #faf8f1; color: #394640; font-size: .9rem; }
.bw-task input { width: 18px; height: 18px; accent-color: var(--bw-cobalt); flex: 0 0 auto; }
.bw-week-actions { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; margin: 16px 0; }
.bw-no-sightings { display: flex; align-items: center; gap: 7px; color: var(--bw-muted); font-size: .88rem; }
.bw-observations { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
.bw-observation { display: grid; grid-template-columns: 112px minmax(0,1fr); min-height: 130px; overflow: hidden; border: 1px solid var(--bw-line); border-radius: 13px; background: white; }
.bw-observation.no-photo { grid-template-columns: 1fr; }
.bw-observation img { width: 100%; height: 100%; min-height: 130px; object-fit: cover; background: #ede9dd; }
.bw-observation-content { padding: 14px; min-width: 0; }
.bw-observation-content header { display: flex; justify-content: space-between; gap: 10px; }
.bw-observation-content h4 { margin: 0; font-family: Georgia, serif; font-size: 1.15rem; }
.bw-observation-content p { margin: 7px 0 0; color: var(--bw-muted); font-size: .84rem; overflow-wrap: anywhere; }
.bw-observation-actions { display: flex; gap: 8px; margin-top: 10px; }
.bw-text-button { border: 0; padding: 0; background: none; color: var(--bw-cobalt); font-size: .78rem; font-weight: 800; }
.bw-empty { padding: 24px; text-align: center; border: 1px dashed var(--bw-line); color: var(--bw-muted); }

.bw-species-controls { margin-bottom: 18px; }
.bw-season-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(260px, .7fr); gap: 14px; }
.bw-chart-panel, .bw-data-note { border: 1px solid var(--bw-line); border-radius: 16px; background: var(--bw-panel); padding: 20px; }
.bw-panel-head { display: flex; justify-content: space-between; gap: 16px; align-items: start; }
.bw-panel-head h3 { margin: 0; font-family: Georgia, serif; font-size: 1.35rem; font-weight: 500; }
.bw-panel-head p, .bw-data-note p { margin: 3px 0 0; color: var(--bw-muted); font-size: .86rem; }
.bw-legend { display: flex; gap: 12px; font-size: .76rem; color: var(--bw-muted); }
.bw-legend span { display: flex; gap: 5px; align-items: center; }
.bw-legend i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.bw-legend i.bee { background: var(--bw-honey); }.bw-legend i.wasp { background: var(--bw-wasp); }
.bw-season-chart { height: 200px; display: grid; grid-template-columns: repeat(12, 1fr); gap: 7px; align-items: end; margin-top: 18px; }
.bw-month-bars { height: 100%; display: grid; grid-template-rows: 1fr auto; gap: 7px; align-items: end; }
.bw-bar-pair { height: 100%; display: flex; gap: 2px; align-items: end; justify-content: center; }
.bw-bar-pair i { width: min(12px, 42%); min-height: 2px; border-radius: 5px 5px 0 0; transition: height .25s ease; }
.bw-bar-pair .bee { background: var(--bw-honey); }.bw-bar-pair .wasp { background: var(--bw-wasp); }
.bw-month-bars b { font-size: .65rem; text-align: center; color: var(--bw-muted); text-transform: uppercase; }
.bw-data-note { display: flex; flex-direction: column; justify-content: center; }
.bw-data-note strong { font-family: Georgia, serif; font-size: 1.45rem; font-weight: 500; }
.bw-data-note a { margin-top: 16px; color: var(--bw-cobalt); font-weight: 800; font-size: .85rem; }
.bw-status { min-height: 24px; margin: 18px 0 8px; color: var(--bw-muted); font-size: .85rem; }
.bw-species-list { margin: 0; padding: 0; list-style: none; columns: 3 260px; column-gap: 14px; }
.bw-species-list li { break-inside: avoid; display: flex; align-items: flex-start; gap: 10px; padding: 10px 0; border-bottom: 1px solid #ddd7ca; }
.bw-species-list .bw-group-dot { width: 9px; height: 9px; margin-top: 7px; border-radius: 50%; flex: 0 0 auto; background: var(--bw-honey); }
.bw-species-list li.wasp .bw-group-dot { background: var(--bw-wasp); }
.bw-species-list span { display: block; min-width: 0; }
.bw-species-list strong, .bw-species-list b { display: block; }
.bw-species-list em { display: block; color: var(--bw-muted); font-size: .79rem; overflow-wrap: anywhere; }
.bw-species-list small { margin-left: auto; color: var(--bw-muted); font-variant-numeric: tabular-nums; }
.bw-caution { display: grid; grid-template-columns: 230px 1fr; gap: 22px; margin-top: 26px; padding: 20px; border-left: 5px solid var(--bw-honey); background: #fff9e9; }
.bw-caution p { margin: 0; color: var(--bw-muted); }

.bw-backup-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.bw-backup-grid article, .bw-ledger-card { padding: 24px; border: 1px solid var(--bw-line); border-radius: 14px; background: var(--bw-panel); }
.bw-backup-grid h3, .bw-ledger-card h3 { margin: 0 0 7px; font-family: Georgia, serif; font-size: 1.35rem; font-weight: 500; }
.bw-backup-grid p, .bw-ledger-card p { color: var(--bw-muted); }
.file-button input { position: absolute; width: 1px; height: 1px; clip: rect(0,0,0,0); }
.bw-method-preview { display: flex; justify-content: space-between; align-items: center; gap: 34px; }
.bw-method-preview > div { max-width: 780px; }
.bw-method-preview h2 { margin: 0; font-family: Georgia, serif; font-size: clamp(2rem, 4vw, 3.7rem); font-weight: 500; line-height: 1; }
.bw-method-preview p:not(.bw-kicker) { color: var(--bw-muted); }

.bw-dialog, .bw-confirm { width: min(720px, calc(100% - 28px)); max-height: 90vh; border: 1px solid var(--bw-line); border-radius: 20px; padding: 0; background: var(--bw-panel); color: var(--bw-ink); box-shadow: 0 30px 90px rgba(0,0,0,.25); }
.bw-dialog::backdrop, .bw-confirm::backdrop { background: rgba(15,24,21,.58); backdrop-filter: blur(2px); }
.bw-dialog form { padding: 24px; overflow: auto; }
.bw-dialog-head { display: flex; justify-content: space-between; align-items: start; gap: 20px; }
.bw-dialog h2, .bw-confirm h2 { margin: 0; font-family: Georgia, serif; font-size: 2rem; font-weight: 500; }
.bw-icon-button { width: 38px; height: 38px; border: 1px solid var(--bw-line); border-radius: 50%; background: white; font-size: 1.35rem; }
.bw-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; margin-top: 22px; }
.bw-form-grid .wide { grid-column: 1 / -1; }
.bw-form-grid textarea { resize: vertical; }
.bw-photo-field span { text-transform: none; letter-spacing: normal; font-weight: 500; }
.bw-photo-preview { margin-top: 16px; display: flex; gap: 14px; align-items: end; }
.bw-photo-preview img { width: 150px; height: 110px; object-fit: cover; border-radius: 10px; border: 1px solid var(--bw-line); }
.bw-dialog-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 22px; }
.bw-confirm form { padding: 26px; }.bw-confirm p { color: var(--bw-muted); }.bw-confirm form div { display: flex; justify-content: flex-end; gap: 9px; }
.bw-toast { position: fixed; right: 18px; bottom: 18px; z-index: 50; max-width: 340px; padding: 12px 16px; border-radius: 11px; background: var(--bw-ink); color: white; box-shadow: var(--bw-shadow); opacity: 0; transform: translateY(10px); pointer-events: none; transition: .2s ease; }
.bw-toast.show { opacity: 1; transform: translateY(0); }
.bw-footer { padding: 28px 0; color: var(--bw-muted); font-size: .8rem; }
.bw-footer .bw-shell { display: flex; justify-content: space-between; gap: 18px; }

.bw-ledger { padding-bottom: 70px; }
.bw-ledger-hero { padding: 90px 0 60px; }
.bw-ledger-hero h1 { font-size: clamp(3.5rem, 8vw, 7rem); }
.bw-ledger-hero > p:not(.bw-eyebrow) { max-width: 700px; color: var(--bw-muted); font-size: 1.2rem; }
.bw-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.bw-source-list { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--bw-line); }
.bw-source-list li { display: grid; grid-template-columns: minmax(220px, .6fr) 1fr; gap: 28px; padding: 18px 0; border-bottom: 1px solid var(--bw-line); }
.bw-source-list a { color: var(--bw-cobalt); font-weight: 850; }.bw-source-list span { color: var(--bw-muted); }
.bw-updated { margin-top: 22px; color: var(--bw-muted); font-size: .85rem; }

@media (max-width: 820px) {
  .bw-nav { padding: 11px 0; align-items: flex-start; }.bw-nav nav { justify-content: flex-end; gap: 9px 13px; }
  .bw-hero-grid, .bw-heading, .bw-season-grid { grid-template-columns: 1fr; }
  .bw-summary { grid-template-columns: repeat(2, 1fr); }.bw-summary article:first-child { border-radius: 16px 0 0 0; }.bw-summary article:nth-child(2) { border-radius: 0 16px 0 0; }.bw-summary article:last-child { border-radius: 0 0 16px 0; }
  .bw-week-body { padding-left: 20px; }.bw-observations { grid-template-columns: 1fr; }
  .bw-backup-grid { grid-template-columns: 1fr; }.bw-method-preview { align-items: flex-start; flex-direction: column; }
}

@media (max-width: 560px) {
  .bw-shell { width: min(100% - 24px, 1180px); }.bw-topbar { position: static; }.bw-nav { display: grid; }.bw-nav nav { justify-content: flex-start; }.bw-hero { padding-top: 54px; }.bw-hero h1 { font-size: clamp(3.2rem, 18vw, 5.5rem); }
  .bw-summary { margin-top: 12px; }.bw-summary article { min-height: 112px; padding: 17px; }.bw-summary strong { font-size: 2.1rem; }
  .bw-section { padding: 64px 0; }.bw-heading { gap: 18px; }
  .bw-toolbar, .bw-species-controls { align-items: stretch; }.bw-toolbar label, .bw-species-controls label, .bw-toolbar .bw-button { width: 100%; }
  .bw-week summary { grid-template-columns: 48px minmax(0,1fr); gap: 12px; padding: 14px; }.bw-week-number { width: 44px; height: 44px; }.bw-week-badges { grid-column: 1 / -1; justify-content: flex-start; }.bw-week-body { padding: 0 14px 18px; }
  .bw-task-grid, .bw-form-grid, .bw-grid-2 { grid-template-columns: 1fr; }.bw-form-grid .wide { grid-column: auto; }.bw-observation { grid-template-columns: 88px minmax(0,1fr); }
  .bw-season-chart { height: 160px; gap: 2px; }.bw-panel-head { display: grid; }.bw-caution { grid-template-columns: 1fr; gap: 5px; }
  .bw-species-list { columns: 1; }.bw-footer .bw-shell, .bw-source-list li { display: grid; grid-template-columns: 1fr; gap: 6px; }
}

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition-duration: .01ms !important; } }
