:root {
  --ink: #162621;
  --muted: #68756f;
  --line: #dce5df;
  --paper: #f7f9f6;
  --card: #ffffff;
  --green: #14624c;
  --dark-green: #0c4738;
  --orange: #d66d32;
  --orange-soft: #fff4ed;
  --blue: #2f6d92;
  --violet: #725c91;
  --gold: #a97826;
  --shadow: 0 16px 42px rgba(18, 50, 41, 0.08);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0; color: var(--ink); background: var(--paper);
  font-family: "DM Sans", Arial, sans-serif; font-size: 14px;
}
button, input, select { font: inherit; }
button { cursor: pointer; }
.topbar {
  height: 74px; background: #fff; border-bottom: 1px solid var(--line);
  display: flex; align-items: center; padding: 0 7vw; gap: 70px;
}
.brand { display: flex; align-items: center; gap: 10px; color: var(--ink); text-decoration: none; }
.brand-mark {
  display: grid; place-items: center; width: 54px; height: 46px; border-radius: 5px;
  color: #fff; background: var(--green); font-family: "Fraunces"; font-size: 17px;
  overflow: hidden;
}
.brand-mark img { display:none; width:100%; height:100%; object-fit:contain; object-position:center; background:#fff; }
.brand-mark.has-logo img { display:block; }
.brand-mark.has-logo b { display:none; }
.brand strong { display: block; font-family: "Fraunces"; font-size: 20px; letter-spacing: -.3px; }
.brand small { display: block; font-size: 7px; color: #7a8883; letter-spacing: 1.5px; font-weight: 700; }
nav { display: flex; gap: 30px; height: 100%; }
nav a {
  display: grid; place-items: center; position: relative; text-decoration: none;
  color: #6f7d78; font-size: 13px; font-weight: 600;
}
nav a.active { color: var(--green); }
nav a.active:after { content: ""; position: absolute; bottom: 0; width: 100%; height: 2px; background: var(--green); }
.top-actions { margin-left: auto; display: flex; align-items: center; gap: 15px; }
.brand-upload { border:1px solid var(--line); border-radius:5px; padding:7px 10px; background:#fff; color:var(--green); font-size:10px; font-weight:700; }
.icon-button { border: 0; background: transparent; position: relative; color: #67756f; filter: grayscale(1); }
.icon-button i { position: absolute; top: -6px; right: -7px; background: var(--orange); color: white; font-size: 9px; border-radius: 50%; font-style: normal; width: 15px; height: 15px; display:grid; place-items:center; }
.profile { border:0; width: 36px; height: 36px; border-radius: 50%; background: #e8f3ee; color: var(--green); font-weight: 700; }
main { max-width: 1280px; margin: auto; padding: 48px 30px 70px; }
.hero { display:flex; justify-content:space-between; gap: 50px; padding: 18px 0 42px; }
.eyebrow { display: flex; gap: 9px; align-items: center; color: var(--green); font-size: 10px; letter-spacing: 1.7px; font-weight: 700; }
.eyebrow span { width: 20px; height: 2px; background: var(--orange); }
h1 { margin: 13px 0 9px; font: 700 57px/1 "Fraunces"; letter-spacing: -2px; }
h1 em { color: var(--green); font-weight: 600; }
.hero-copy { color: var(--muted); line-height: 1.65; max-width: 585px; font-size: 15px; }
.hero-card { width: 294px; padding: 20px 22px; border-radius: 8px; background: var(--green); color:white; box-shadow: var(--shadow); }
.hero-card p { margin: 0 0 7px; font-size: 9px; letter-spacing: 1.3px; opacity:.72; }
.hero-card strong { font: 700 44px "Fraunces"; }
.hero-card > span { display:block; opacity:.75; font-size:12px; margin-top:-3px; }
.hero-card-bottom { display:flex; justify-content:space-between; align-items:center; margin-top:19px; padding-top:12px; border-top:1px solid rgba(255,255,255,.18); font-size:11px; }
.live { font-size:8px; letter-spacing:.8px; opacity:.9; }
.live i, .feed-meta i { width:7px; height:7px; display:inline-block; background:#71cca4; border-radius:50%; margin-right:5px; }
.toolbar { display:grid; grid-template-columns:1fr auto auto; gap:10px; padding-bottom:20px; }
.search { display:flex; gap:10px; align-items:center; border:1px solid var(--line); border-radius:6px; background:white; padding:0 15px; }
.search span { font-size:26px; color:#83918c; margin-top:-4px; }
.search input { height: 46px; border:0; outline:0; width:100%; color:var(--ink); }
.outline-button, .digest-button { border-radius:6px; padding: 0 18px; font-size:12px; font-weight:700; }
.outline-button { background:#fff; border:1px solid var(--line); color:var(--ink); }
.digest-button { background: var(--orange-soft); border:1px solid #f4d7c7; color:#af5426; }
.content-grid { display:grid; grid-template-columns:235px 1fr; background:#fff; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.sidebar { position:relative; padding:23px 15px; border-right:1px solid var(--line); background:#fbfcfa; }
.side-title { display:flex; justify-content:space-between; padding:0 9px 14px; color:#84908c; font-size:9px; font-weight:700; letter-spacing:1.2px; }
.side-title small { font-size:8px; letter-spacing:.4px; }
.category { display:flex; align-items:center; gap:9px; width:100%; padding:10px 9px; margin:2px 0; border:0; border-radius:5px; background:transparent; color:#697670; text-align:left; font-size:12px; font-weight:600; }
.category:hover, .category.active { background:#eaf3ef; color:var(--green); }
.category .count { margin-left:auto; font-size:10px; }
.category .dot { width:8px; height:8px; border-radius:50%; }
.sidebar-footer { position:absolute; bottom:20px; left:18px; right:16px; display:flex; gap:9px; align-items:flex-start; padding-top:15px; border-top:1px solid var(--line); color:#84908c; font-size:10px; line-height:1.5; }
.sidebar-footer b { color:#60716b; }
.shield { width:20px; height:20px; display:grid; place-items:center; border-radius:50%; flex:none; background:#e6f2ed; color:var(--green); font-weight:700; }
.feed { padding:25px 28px; min-height: 650px; }
.feed-head { display:flex; justify-content:space-between; align-items:end; }
.feed-head p { margin:0; color:var(--orange); font-size:9px; font-weight:700; letter-spacing:1.5px; }
h2 { margin:5px 0 0; font:700 28px "Fraunces"; }
.sort { display:flex; align-items:center; gap:5px; color:#81908a; font-size:11px; }
.sort select { border:0; outline:0; color:var(--ink); background:#fff; font-weight:600; font-size:11px; }
.feed-meta { display:flex; justify-content:space-between; padding:17px 0 11px; color:#86928e; font-size:10px; border-bottom:1px solid var(--line); }
.feed-meta i { background:#49af83; }
.update-card { display:grid; grid-template-columns:115px 1fr 165px; gap:14px; padding:21px 0; border-bottom:1px solid var(--line); transition:.2s; }
.update-card:hover { background:#fdfefd; transform:translateX(3px); }
.update-type { font-size:9px; color:#788782; font-weight:700; letter-spacing:.8px; }
.update-type b { display:block; width:max-content; padding:5px 8px; border-radius:3px; margin-bottom:8px; color:white; font-size:8px; letter-spacing:.6px; }
.update-type span { display:block; margin-top:8px; color:#9aa6a2; font-size:10px; font-weight:500; letter-spacing:0; }
.update-content h3 { margin:0 0 7px; font-size:14px; line-height:1.4; }
.update-content p { margin:0; color:#7d8985; font-size:12px; line-height:1.55; }
.update-content .tag { display:inline-block; color:#7c8984; background:#f2f5f3; border-radius:3px; padding:4px 6px; margin-top:11px; font-size:9px; }
.card-actions { display:flex; flex-direction:column; justify-content:center; gap:7px; }
.analysis-button, .download-button { height:35px; border-radius:4px; font-size:11px; font-weight:700; }
.analysis-button { border:0; color:#fff; background:var(--green); }
.analysis-button:hover { background:var(--dark-green); }
.download-button { border:1px solid var(--line); background:#fff; color:#697872; }
.empty { padding:70px 0; text-align:center; color:#7c8985; }
.drawer-backdrop { visibility:hidden; opacity:0; position:fixed; inset:0; background:rgba(7,30,24,.28); transition:.25s; z-index:10; }
.analysis-drawer { position:fixed; top:0; right:-600px; width:min(560px, 100%); height:100vh; z-index:11; padding:35px 40px; overflow-y:auto; background:#fff; box-shadow:-8px 0 40px rgba(10,40,32,.16); transition:.32s ease; }
body.drawer-open .drawer-backdrop { visibility:visible; opacity:1; }
body.drawer-open .analysis-drawer { right:0; }
.drawer-close { position:absolute; right:24px; top:22px; border:0; background:#f1f5f3; color:#66736e; width:32px; height:32px; border-radius:50%; font-size:22px; line-height:1; }
.analysis-drawer h2 { margin-top:20px; font-size:28px; line-height:1.15; }
.drawer-meta { color:#85918d; font-size:11px; margin:10px 0 25px; }
.summary-box { padding:17px; background:#f2f7f4; border-left:3px solid var(--green); color:#49615a; line-height:1.65; font-size:13px; }
.analysis-drawer h4 { margin:24px 0 10px; color:var(--green); font-size:10px; letter-spacing:1px; }
.analysis-drawer ul { margin:0; padding-left:17px; color:#60706a; font-size:13px; line-height:1.7; }
.impact-row { display:flex; gap:8px; flex-wrap:wrap; }
.impact-pill { padding:7px 9px; border-radius:4px; color:#9c542d; background:#fff4ed; font-size:11px; font-weight:700; }
.drawer-download { width:100%; margin-top:27px; height:42px; border:0; border-radius:4px; color:white; background:var(--green); font-size:12px; font-weight:700; }
.drawer-secondary { width:100%; margin-top:8px; }
.toast { position:fixed; bottom:25px; left:50%; z-index:20; transform:translate(-50%, 20px); opacity:0; color:#fff; background:#183b31; padding:12px 20px; border-radius:6px; font-size:12px; transition:.25s; box-shadow:var(--shadow); }
.toast.show { opacity:1; transform:translate(-50%, 0); }
.page-view { display:none; }
.page-view.active-view { display:block; }
.info-view { min-height:calc(100vh - 74px); }
.info-hero { padding:45px 0 30px; max-width:730px; }
.digest-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:13px; padding:10px 0 24px; }
.digest-card, .about-grid article { padding:22px; border:1px solid var(--line); border-radius:7px; background:#fff; }
.digest-card small { color:var(--orange); font-size:9px; font-weight:700; letter-spacing:1px; }
.digest-card h3 { margin:14px 0 7px; font:700 21px "Fraunces"; }
.digest-card strong { display:block; color:var(--green); font:700 34px "Fraunces"; }
.digest-card p, .digest-cta p, .about-grid p, .source-note p { color:var(--muted); font-size:12px; line-height:1.6; }
.digest-cta, .source-note { display:flex; justify-content:space-between; align-items:center; gap:25px; padding:25px 28px; border-radius:8px; background:#edf5f1; }
.digest-cta h2, .source-note h2 { margin:5px 0; }
.large-button { padding:0 18px; height:42px; white-space:nowrap; }
.about-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:13px; margin:10px 0 24px; }
.about-grid b { color:var(--orange); font:700 24px "Fraunces"; }
.about-grid h3 { margin:14px 0 5px; font:700 21px "Fraunces"; }
.calendar-hero { display:flex; justify-content:space-between; gap:30px; align-items:end; padding:45px 0 26px; }
.calendar-hero h1 { margin-bottom:7px; }
.month-picker { display:flex; flex-direction:column; gap:7px; min-width:180px; padding:13px 14px; border:1px solid var(--line); border-radius:6px; background:#fff; }
.month-picker span { color:#89958f; font-size:9px; font-weight:700; letter-spacing:1.2px; }
.month-picker select { border:0; outline:0; color:var(--ink); background:#fff; font-weight:700; }
.calendar-primary-download { margin-top:7px; padding:10px 11px; border:0; border-radius:4px; color:#fff; background:var(--green); font-size:11px; font-weight:700; }
.calendar-primary-download:hover { background:var(--dark-green); }
.master-calendar-download { padding:9px 10px; border:1px solid #bad5cb; border-radius:4px; color:var(--green); background:#edf6f2; font-size:10px; font-weight:700; }
.master-calendar-download:hover { background:#e2f0eb; }
.direct-pdf-link { color:var(--green); font-size:10px; font-weight:700; text-decoration:underline; }
.calendar-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:11px; margin:6px 0 18px; }
.calendar-stat { padding:15px 17px; border:1px solid var(--line); border-radius:6px; background:#fff; }
.calendar-stat span { display:block; color:#88958f; font-size:9px; font-weight:700; letter-spacing:1px; }
.calendar-stat strong { display:block; margin-top:6px; color:var(--green); font:700 27px "Fraunces"; }
.calendar-panel { overflow:hidden; border:1px solid var(--line); border-radius:8px; background:#fff; }
.calendar-head { display:flex; justify-content:space-between; align-items:center; padding:20px 22px 15px; border-bottom:1px solid var(--line); }
.calendar-head p { margin:0; color:var(--orange); font-size:9px; font-weight:700; letter-spacing:1.4px; }
.calendar-head h2 { margin-top:4px; font-size:24px; }
.calendar-download { padding:0 13px; }
.calendar-table { width:100%; border-collapse:collapse; }
.calendar-table th { padding:11px 15px; color:#85918c; background:#fbfcfa; border-bottom:1px solid var(--line); text-align:left; font-size:9px; letter-spacing:.8px; }
.calendar-table td { padding:15px; color:#68766f; border-bottom:1px solid var(--line); font-size:12px; line-height:1.45; vertical-align:top; }
.calendar-table tr:last-child td { border-bottom:0; }
.date-cell { width:80px; color:var(--green) !important; font-weight:700; }
.law-pill { display:inline-block; padding:4px 6px; border-radius:3px; color:#2d6959; background:#edf6f2; font-size:10px; font-weight:700; white-space:nowrap; }
.calendar-note { margin:13px 0; color:#8a9691; font-size:11px; }
@media (max-width: 800px) {
  .topbar { padding:0 20px; gap:25px; } nav { display:none; }
  .brand-upload { display:none; }
  main { padding:30px 16px; } .hero { padding-top:0; } h1 { font-size:45px; }
  .hero-card { display:none; } .toolbar { grid-template-columns:1fr auto; } .digest-button { display:none; }
  .content-grid { grid-template-columns:1fr; } .sidebar { padding:14px 10px; border-right:0; border-bottom:1px solid var(--line); }
  #categoryList { display:flex; gap:5px; overflow-x:auto; } .category { white-space:nowrap; width:auto; }
  .category .count, .sidebar-footer, .side-title { display:none; } .feed { padding:20px 16px; }
  .update-card { grid-template-columns:88px 1fr; } .card-actions { grid-column:2; flex-direction:row; }
  .analysis-button, .download-button { flex:1; } .analysis-drawer { padding:30px 23px; }
  .digest-grid, .about-grid { grid-template-columns:1fr; } .digest-cta, .source-note { align-items:flex-start; flex-direction:column; }
  .calendar-hero { display:block; } .month-picker { margin-top:18px; } .calendar-stats { grid-template-columns:repeat(2,1fr); }
  .calendar-table-wrap { overflow-x:auto; } .calendar-table { min-width:760px; } .calendar-head { align-items:flex-start; flex-direction:column; gap:12px; }
}
