*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; }
body.cab-body { min-height: 100vh; color: #163246; background: #eef3f7; font: 400 15px/1.5 "IBM Plex Sans", sans-serif; }
a { color: inherit; text-decoration: none; }
h1, h2, p { margin: 0; }
table { width: 100%; border-collapse: collapse; }
.cab-ribbon { position: sticky; top: 0; z-index: 5; padding: .55rem 1.2rem; color: #d7e8f4; background: #071722; font-size: .72rem; letter-spacing: .04em; }
.cab-app { display: grid; grid-template-columns: 240px minmax(0, 1fr); min-height: calc(100vh - 34px); }
.cab-side { display: flex; flex-direction: column; gap: 1.2rem; padding: 1.2rem 1rem 1.4rem; color: #e7f2fa; background: #0a1f2e; }
.cab-brand { display: flex; align-items: center; gap: .7rem; }
.cab-brand strong { display: block; font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; }
.cab-brand small { color: #9fd0ea; font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; }
.cab-mark { position: relative; width: 42px; height: 42px; flex: none; }
.cab-mark img { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; box-shadow: 0 0 0 1.5px rgba(191, 224, 242, .85); }
.cab-mark svg { position: absolute; right: -4px; bottom: -2px; width: 16px; height: 16px; padding: 2px; background: #f7fbfe; border-radius: 50%; box-shadow: 0 0 0 2px #0a1f2e; }
.cab-side nav { display: grid; gap: .2rem; }
.cab-side nav a { min-height: 44px; padding: .65rem .75rem; border-radius: 2px; font-size: .92rem; }
.cab-side nav a:hover { background: rgba(255, 255, 255, .06); }
.cab-side nav a[aria-current="page"] { color: #fff; background: rgba(200, 30, 58, .22); box-shadow: inset 3px 0 0 #e11d48; }
.cab-note { margin-top: auto; color: #9fb4c6; font-size: .75rem; line-height: 1.5; }
.cab-back { color: #d5e8f6; font-size: .8rem; }
.cab-back:hover { color: #fff; }
.cab-main { min-width: 0; padding: 1.6rem 1.8rem 2.4rem; }
.cab-top { display: flex; justify-content: space-between; align-items: end; gap: 1rem; margin-bottom: 1.3rem; }
.cab-top p { margin-bottom: .3rem; color: #5d87a8; font-size: .72rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.cab-top h1 { font: 600 clamp(1.7rem, 3vw, 2.2rem)/1.1 "Space Grotesk", sans-serif; letter-spacing: -.03em; }
.cab-btn, .cab-btn-quiet { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: .65rem 1rem; border: 1px solid #c81e3a; border-radius: 2px; background: #c81e3a; color: #fff; font-size: .8rem; font-weight: 600; }
.cab-btn:hover { background: #a81832; border-color: #a81832; }
.cab-btn-quiet { background: transparent; color: #163246; border-color: rgba(22, 50, 70, .2); }
.cab-btn-quiet:hover { border-color: #c81e3a; color: #c81e3a; }
.cab-btn:focus-visible, .cab-btn-quiet:focus-visible, .cab-side a:focus-visible, .cab-panel a:focus-visible { outline: 2px solid #c81e3a; outline-offset: 3px; }
.cab-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .9rem; margin-bottom: 1rem; }
.cab-stats article, .cab-panel { background: #fff; border: 1px solid rgba(16, 42, 64, .08); border-radius: 2px; }
.cab-stats article { display: grid; gap: .2rem; padding: 1rem 1.1rem; }
.cab-stats strong { font: 600 1.8rem/1 "Space Grotesk", sans-serif; color: #0a1f2e; }
.cab-stats span { color: #5d7c96; font-size: .8rem; }
.cab-split { display: grid; grid-template-columns: 1.4fr .8fr; gap: 1rem; align-items: start; }
.cab-fiche { grid-template-columns: .85fr 1.15fr; }
.cab-panel { padding: 1rem 1rem 1.1rem; }
.cab-panel header { display: flex; justify-content: space-between; align-items: baseline; gap: .8rem; margin-bottom: .8rem; }
.cab-panel h2, .cab-sub { font: 600 1rem/1.3 "Space Grotesk", sans-serif; }
.cab-panel header a { color: #c81e3a; font-size: .78rem; font-weight: 600; }
.cab-sub { margin: 1.1rem 0 .45rem; }
th, td { padding: .7rem .45rem; border-top: 1px solid rgba(16, 42, 64, .08); text-align: left; vertical-align: top; font-size: .88rem; }
th { color: #6a879c; font-size: .68rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
td a { color: #0a1f2e; font-weight: 600; }
td a:hover { color: #c81e3a; }
.cab-feed, .cab-list { display: grid; gap: .8rem; margin: 0; padding: 0; list-style: none; }
.cab-feed time { color: #c81e3a; font-size: .72rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.cab-feed p, .cab-notes, .cab-thread p { color: #45627a; }
.cab-id { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem 1rem; margin: 0; }
.cab-id div { display: grid; gap: .15rem; }
.cab-id dt { color: #6a879c; font-size: .68rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.cab-id dd { margin: 0; }
.cab-list li { padding-left: .8rem; position: relative; }
.cab-list li::before { content: ""; position: absolute; left: 0; top: .55em; width: .28rem; height: .28rem; background: #c81e3a; }
.cab-days, .cab-thread { display: grid; gap: 1rem; }
.cab-thread article { display: grid; gap: .45rem; }
.cab-subject { color: #14344b; font-weight: 600; }
.cab-search { display: grid; gap: .4rem; max-width: 28rem; margin-bottom: .7rem; color: #6a879c; font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.cab-search input { min-height: 48px; padding: .7rem .85rem; border: 1px solid rgba(22, 50, 70, .18); border-radius: 2px; color: #18375a; font: 500 .95rem/1.4 "IBM Plex Sans", sans-serif; letter-spacing: 0; text-transform: none; }
.cab-search input:focus { outline: none; border-color: #c81e3a; box-shadow: 0 0 0 3px rgba(200, 30, 58, .16); }
.cab-panel tr[hidden] { display: none; }
.cab-thread time { color: #6a879c; font-size: .78rem; }
.cab-tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin: -0.4rem 0 1.1rem; }
.cab-tabs a { display: inline-flex; align-items: center; min-height: 40px; padding: .4rem .75rem; border: 1px solid rgba(16, 42, 64, .12); border-radius: 2px; background: #fff; font-size: .82rem; font-weight: 600; }
.cab-tabs a[aria-current="page"] { color: #fff; background: #c81e3a; border-color: #c81e3a; }
.cab-tabs a:hover { border-color: #c81e3a; }
.cab-search { display: grid; gap: .35rem; max-width: 28rem; margin-bottom: .7rem; color: #5d7c96; font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.cab-search input { min-height: 48px; padding: .7rem .8rem; border: 1px solid rgba(22, 50, 70, .18); border-radius: 2px; color: #163246; font: 500 .95rem/1.4 "IBM Plex Sans", sans-serif; letter-spacing: 0; text-transform: none; }
.cab-search input:focus { outline: none; border-color: #c81e3a; box-shadow: 0 0 0 3px rgba(200, 30, 58, .16); }
.cab-notes-page { display: grid; gap: .8rem; }
.cab-notes-page p { max-width: 62ch; }
.cab-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.rx-stage { display: flex; justify-content: center; padding: .2rem 0 1rem; }
.rx { display: flex; flex-direction: column; width: 148mm; height: 210mm; margin: 0; padding: 8mm 9mm 7mm; background: #fff; color: #161616; border: 1px solid #d7d7d7; box-shadow: 0 12px 28px rgba(10, 31, 46, .08); font-family: Helvetica, Arial, sans-serif; }
.rx-head { display: grid; grid-template-columns: 1fr 46px 1fr; gap: .45rem; align-items: start; padding-bottom: .45rem; border-bottom: 1px solid #222; }
.rx-doc, .rx-cab { display: grid; gap: .08rem; font-size: .72rem; line-height: 1.3; }
.rx-cab { text-align: right; }
.rx-doc strong, .rx-cab strong { justify-self: start; border-bottom: 1px solid #111; font-size: .86rem; line-height: 1.25; }
.rx-cab strong { justify-self: end; }
.rx-logo { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; }
.rx h2 { margin: .55rem 0 .65rem; text-align: center; font: 700 .98rem/1.2 Helvetica, Arial, sans-serif; text-decoration: underline; text-underline-offset: 3px; letter-spacing: 0; text-transform: none; }
.rx-fait, .rx-who { margin: .15rem 0; font-size: .88rem; }
.rx-fait { display: flex; justify-content: space-between; gap: 1rem; }
.rx-body { display: flex; flex-direction: column; flex: 1; min-height: 0; padding-top: .85rem; }
.rx-lines { display: grid; gap: .75rem; align-content: start; }
.rx-lines p { display: grid; gap: .05rem; margin: 0; }
.rx-lines span { font-size: .88rem; }
.rx-sign { margin-top: auto; align-self: end; text-align: right; font-size: .78rem; line-height: 1.35; }
.rx-foot { display: grid; gap: .1rem; margin-top: .35rem; padding-top: .35rem; border-top: 1px solid #222; text-align: center; font-size: .68rem; line-height: 1.35; }
.rx-hint { margin-top: .8rem; color: #6a879c; font-size: .82rem; text-align: center; }
.cal-wrap { margin-bottom: 1.2rem; }
.cal-title { display: flex; justify-content: space-between; align-items: baseline; gap: .8rem; margin-bottom: .7rem; }
.cal-title h2 { font: 600 1.2rem/1.2 "Space Grotesk", sans-serif; }
.cal-title p { margin: 0; color: #6a879c; font-size: .82rem; }
.cal { min-width: 760px; }
.cal-names, .cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-names span { padding: .35rem .4rem .5rem; color: #6a879c; font-size: .72rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.cal-day { min-height: 132px; padding: .4rem; background: #fff; border: 1px solid rgba(16, 42, 64, .08); }
.cal-day > a { display: inline-flex; min-width: 1.6rem; min-height: 1.6rem; align-items: center; justify-content: center; color: #163246; font-weight: 600; }
.cal-day.is-quiet { background: #f7fafc; }
.cal-day.is-quiet > a { color: #8aa0b3; font-weight: 500; }
.cal-day.is-out { background: transparent; }
.cal-day.is-out > a { color: #b7c6d2; }
.cal-day.is-today { background: #fff; box-shadow: inset 0 0 0 2px #c81e3a; }
.cal-day.is-today > a { color: #c81e3a; }
.cal-day ul { display: grid; gap: .35rem; margin: .25rem 0 0; padding: 0; list-style: none; }
.cal-day li { display: grid; gap: .02rem; }
.cal-day time { color: #c81e3a; font-size: .68rem; font-weight: 700; }
.cal-day li a { font-size: .78rem; font-weight: 600; }
.cal-day li a:hover { color: #c81e3a; }
.cal-day li span { color: #5d7c96; font-size: .72rem; }
.cal-wrap { overflow-x: auto; }
@media print {
  @page { size: A5 portrait; margin: 10mm; }
  .cab-ribbon, .cab-side, .cab-top, .cab-tabs, .rx-hint { display: none !important; }
  body.cab-body, .cab-main, .rx-stage { background: #fff; color: #111; }
  .cab-app { display: block; min-height: 0; }
  .cab-main { padding: 0; }
  .rx-stage { display: block; padding: 0; }
  .rx { width: auto; height: auto; min-height: 180mm; border: none; box-shadow: none; padding: 0; }
}
@media (max-width: 900px) {
  .cab-app, .cab-split, .cab-fiche, .cab-stats, .cab-id { grid-template-columns: 1fr; }
  .cab-side { position: static; }
  .cab-note { margin-top: .4rem; }
  .cab-main { padding: 1.1rem; }
  .cab-top { align-items: start; flex-direction: column; }
}
