/* CHRONIA - authenticated shell */
.shell{ background:var(--paper); }

.app-head{
  display:flex; align-items:center; justify-content:space-between;
  background:var(--ink); color:#fff; padding:.7rem 1.2rem; gap:1rem; flex-wrap:wrap;
}
.level-tag{
  border:1px solid rgba(255,255,255,.24); border-radius:999px;
  padding:.16rem .6rem; color:rgba(255,255,255,.7); margin-left:.4rem;
}
.who{ color:rgba(255,255,255,.62); }

.app-body{ display:flex; align-items:flex-start; min-height:calc(100vh - 56px); }

.app-nav{
  width:224px; flex:0 0 224px; background:#fff; border-right:1px solid var(--line);
  padding:1.2rem .8rem; min-height:calc(100vh - 56px);
}
.app-nav a{
  display:block; padding:.55rem .8rem; border-radius:8px; margin-bottom:.15rem;
  color:var(--ink-soft); font-size:.93rem;
}
.app-nav a:hover{ background:var(--paper); text-decoration:none; }
.app-nav a.on{ background:var(--violet); color:#fff; font-weight:500; }

.app-main{ flex:1; padding:1.8rem; max-width:1180px; }
.page-head{ margin-bottom:1.6rem; }
.page-head h1{ font-size:1.5rem; margin:0 0 .25rem; }
.page-head p{ color:var(--muted); margin:0; font-size:.94rem; }

.tile{ background:#fff; border:1px solid var(--line); border-radius:12px; padding:1.1rem 1.2rem; height:100%; }
.tile-n{ font-family:var(--display); font-size:2rem; font-weight:800; margin:0; line-height:1; }
.tile-l{ color:var(--muted); margin:.5rem 0 0; }
.tile.alert-tone{ border-color:rgba(228,87,46,.4); }
.tile.alert-tone .tile-n{ color:var(--coral); }
.tile.good-tone .tile-n{ color:var(--pulse); }

.panel{ background:#fff; border:1px solid var(--line); border-radius:12px; padding:1.4rem; margin-top:1.4rem; }
.panel h2{ font-size:1.06rem; margin:0 0 1rem; }

table.grid{ width:100%; border-collapse:collapse; font-size:.93rem; }
table.grid th{
  text-align:left; font-family:var(--mono); font-size:.66rem; letter-spacing:.09em;
  text-transform:uppercase; color:var(--muted); padding:.55rem .6rem; border-bottom:1px solid var(--line);
}
table.grid td{ padding:.7rem .6rem; border-bottom:1px solid var(--line); }
table.grid tr:last-child td{ border-bottom:0; }

.pill{ display:inline-block; border-radius:999px; padding:.16rem .6rem; font-size:.76rem; font-weight:500; }
.pill-red{   background:rgba(228,87,46,.12);  color:#9A2F13; }
.pill-watch{ background:rgba(240,167,66,.16); color:#8A5A0B; }
.pill-ok{    background:rgba(23,195,162,.14); color:#0B6E5C; }
.pill-grey{  background:var(--paper);         color:var(--muted); }

.alert-warn{ background:rgba(240,167,66,.14); color:#8A5A0B; }
.empty{ color:var(--muted); font-size:.94rem; padding:1.4rem 0; }

@media (max-width: 860px){
  .app-body{ flex-direction:column; }
  .app-nav{ width:100%; flex:none; min-height:auto; display:flex; overflow-x:auto;
            gap:.3rem; border-right:0; border-bottom:1px solid var(--line); padding:.6rem; }
  .app-nav a{ white-space:nowrap; margin:0; }
  .app-main{ padding:1.2rem; }
}

/* ---------- phase 2 : clinical screens ---------- */
.filters{
  display:flex; gap:.6rem; flex-wrap:wrap; margin-bottom:1rem;
}
.filters input, .filters select{
  border:1px solid var(--line); border-radius:8px; padding:.55rem .8rem;
  font-family:var(--body); font-size:.94rem; background:#fff; min-width:170px;
}
.filters input[type=search]{ flex:1; min-width:240px; }
.filters input:focus, .filters select:focus{
  border-color:var(--violet); outline:none; box-shadow:0 0 0 3px rgba(107,63,160,.14);
}

.form-grid label{
  display:block; font-family:var(--mono); font-size:.66rem; letter-spacing:.1em;
  text-transform:uppercase; color:var(--muted); margin:0 0 .35rem;
}
.form-grid input, .form-grid select, .form-grid textarea{
  width:100%; border:1px solid var(--line); border-radius:8px; padding:.65rem .8rem;
  font-family:var(--body); font-size:.96rem; background:#fff;
}
.form-grid input:focus, .form-grid select:focus{
  border-color:var(--violet); outline:none; box-shadow:0 0 0 3px rgba(107,63,160,.14);
}
.hint{ color:var(--muted); font-size:.8rem; margin:.3rem 0 0; }
.check{ display:flex; align-items:flex-start; gap:.55rem; font-family:var(--body) !important;
        font-size:.95rem !important; letter-spacing:0 !important; text-transform:none !important;
        color:var(--ink) !important; }
.check input{ width:auto !important; margin-top:.15rem; }
.consent-box{ background:var(--paper); border:1px solid var(--line); border-radius:10px; padding:1rem 1.1rem; }

.inline-form{
  display:flex; gap:.6rem; flex-wrap:wrap; align-items:center;
  margin-top:1.2rem; padding-top:1.2rem; border-top:1px solid var(--line);
}
.inline-form input, .inline-form select{
  border:1px solid var(--line); border-radius:8px; padding:.55rem .8rem;
  font-family:var(--body); font-size:.94rem; background:#fff;
}
.inline-form input:focus, .inline-form select:focus{
  border-color:var(--violet); outline:none; box-shadow:0 0 0 3px rgba(107,63,160,.14);
}
.big-form{ border-top:0; padding-top:0; }
.big-form select, .big-form input{ font-size:1.05rem; padding:.8rem 1rem; flex:1; min-width:150px; }

.btn-small{
  background:var(--violet); color:#fff; border:0; border-radius:8px;
  padding:.5rem .95rem; font-size:.86rem; font-weight:500; cursor:pointer; white-space:nowrap;
}
.btn-small:hover{ background:var(--violet-d); }
.btn-ghost-dark{
  display:inline-block; border:1px solid var(--line); color:var(--ink);
  padding:.78rem 1.4rem; border-radius:999px; font-size:.94rem; margin-left:.5rem;
}
.btn-ghost-dark:hover{ text-decoration:none; border-color:var(--violet); }

.panel-alert{ border-color:rgba(228,87,46,.4); }
.alert-row{
  display:flex; gap:1rem; align-items:flex-start; padding:.9rem 0;
  border-bottom:1px solid var(--line); flex-wrap:wrap;
}
.alert-row:last-child{ border-bottom:0; }
.alert-body{ flex:1; min-width:220px; }
.alert-body p{ font-size:.94rem; }
.alert-form{ display:flex; gap:.5rem; align-items:center; }
.alert-form input{
  border:1px solid var(--line); border-radius:8px; padding:.45rem .7rem;
  font-size:.88rem; min-width:190px;
}

.spark{ width:130px; height:34px; display:block; }
.spark-empty{ color:var(--muted); font-size:.62rem; }

.range-cell{ display:flex; gap:.35rem; }
.range-cell input{
  width:72px; border:1px solid var(--line); border-radius:6px;
  padding:.35rem .45rem; font-family:var(--mono); font-size:.82rem;
}

.timeline{ list-style:none; padding:0; margin:0; }
.tl{
  display:flex; gap:.9rem; align-items:baseline; padding:.55rem 0;
  border-bottom:1px solid var(--line); font-size:.92rem; flex-wrap:wrap;
}
.tl:last-child{ border-bottom:0; }
.tl-when{ color:var(--muted); min-width:135px; }
.tl-kind{
  border-radius:4px; padding:.1rem .4rem; font-size:.6rem;
  background:var(--paper); color:var(--muted);
}
.tl-reading .tl-kind{ background:rgba(23,195,162,.14); color:#0B6E5C; }
.tl-consult .tl-kind{ background:rgba(107,63,160,.12); color:var(--violet); }
.tl-rx .tl-kind{      background:rgba(195,174,232,.28); color:var(--violet-d); }
.tl-alert .tl-kind{   background:rgba(228,87,46,.12); color:#9A2F13; }
.tl-what{ flex:1; min-width:180px; }

.fu-row{
  display:flex; justify-content:space-between; align-items:center; gap:1rem;
  padding:.7rem 0; border-bottom:1px solid var(--line); font-size:.93rem;
}
.fu-row:last-child{ border-bottom:0; }
.due-late{ color:var(--coral); }

.pager{
  display:flex; justify-content:space-between; align-items:center;
  margin-top:1rem; padding-top:1rem; border-top:1px solid var(--line); color:var(--muted);
}
.pager a{ padding:.25rem .55rem; border-radius:6px; }
.pager a.on{ background:var(--violet); color:#fff; }

@media (max-width: 700px){
  .alert-form{ width:100%; }
  .alert-form input{ flex:1; min-width:0; }
  .inline-form > *{ flex:1; min-width:130px; }
}

/* ---------- phase 3 : consultation ---------- */
.session-panel{ border-color:rgba(23,195,162,.45); }
.session-top{
  display:flex; justify-content:space-between; align-items:center;
  gap:1rem; flex-wrap:wrap; margin-bottom:.6rem;
}
.session-mode{
  background:var(--violet); color:#fff; border-radius:999px;
  padding:.2rem .7rem; margin-right:.6rem;
}
.session-actions{ display:flex; gap:.5rem; align-items:center; flex-wrap:wrap; }
.session-actions .btn-ghost-dark{ padding:.5rem 1rem; margin:0; }

.consent-strip{
  display:flex; justify-content:space-between; align-items:center; gap:1rem;
  flex-wrap:wrap; margin-top:1rem; padding:.9rem 1.1rem;
  background:rgba(240,167,66,.12); border-radius:10px;
}
.consent-strip.done{ background:rgba(23,195,162,.12); }
.consent-strip .hint{ margin-top:.25rem; }

.sub-h{
  font-family:var(--mono); font-size:.66rem; letter-spacing:.1em; text-transform:uppercase;
  color:var(--muted); margin:1.4rem 0 .6rem; font-weight:400;
}
.panel > .sub-h:first-of-type{ margin-top:.4rem; }

.mini-alert{
  display:flex; gap:.6rem; align-items:flex-start; font-size:.9rem;
  padding:.5rem 0; border-bottom:1px solid var(--line);
}
.mini-alert:last-of-type{ border-bottom:0; }

.mini-rx{ padding:.7rem 0; border-bottom:1px solid var(--line); }
.mini-rx:last-of-type{ border-bottom:0; }
.rx-mini-list{ list-style:none; padding:0; margin:.45rem 0 0; font-size:.9rem; }
.rx-mini-list li{ margin-bottom:.2rem; }

.rx-line{
  display:grid; gap:.4rem; margin-bottom:.5rem;
  grid-template-columns: 2fr 1fr 1fr 1fr .7fr .7fr 2fr;
}
.rx-line input{
  border:1px solid var(--line); border-radius:8px; padding:.55rem .7rem;
  font-family:var(--body); font-size:.9rem; min-width:0; background:#fff;
}
.rx-line input:focus{ border-color:var(--violet); outline:none; box-shadow:0 0 0 3px rgba(107,63,160,.14); }
.rx-drug{ font-weight:500; }
.btn-add-line{ padding:.45rem 1rem; font-size:.86rem; margin:.3rem 0 0; }

.rx-card{ padding:1.1rem 0; border-bottom:1px solid var(--line); }
.rx-card:last-child{ border-bottom:0; }
.rx-head{
  display:flex; justify-content:space-between; align-items:center;
  gap:1rem; flex-wrap:wrap; margin-bottom:.6rem;
}
.rx-no{ font-size:.86rem; font-weight:500; color:var(--violet); margin-right:.5rem; }
.rx-items{ list-style:none; padding:0; margin:0 0 .3rem; }
.rx-items li{ padding:.35rem 0; font-size:.94rem; border-bottom:1px dotted var(--line); }
.rx-items li:last-child{ border-bottom:0; }

.row-urgent td{ background:rgba(228,87,46,.05); }
.btn-row{ display:flex; gap:.35rem; justify-content:flex-end; flex-wrap:wrap; }
.btn-quiet{ background:var(--paper); color:var(--muted); }
.btn-quiet:hover{ background:var(--line); color:var(--ink); }

.chip-light{ border-color:var(--line) !important; color:var(--ink) !important; background:#fff; }
.chip-light .chip-code{ color:var(--violet) !important; }

.roster-day{ padding:.9rem 0; border-bottom:1px solid var(--line); }
.roster-day:last-child{ border-bottom:0; }
.roster-date{ color:var(--muted); margin:0 0 .5rem; }
.roster-date.today{ color:var(--violet); font-weight:500; }

@media (max-width: 1100px){
  .rx-line{ grid-template-columns: 1fr 1fr 1fr; }
  .rx-drug, .rx-instr{ grid-column: 1 / -1; }
}
@media (max-width: 560px){
  .rx-line{ grid-template-columns: 1fr 1fr; }
}

/* ---------- phase 4 : messaging ---------- */
.tabs-line{ display:flex; gap:.3rem; margin:1.4rem 0 0; border-bottom:1px solid var(--line); }
.tabs-line a{
  padding:.6rem 1rem; color:var(--muted); font-size:.93rem;
  border-bottom:2px solid transparent; margin-bottom:-1px;
}
.tabs-line a:hover{ text-decoration:none; color:var(--ink); }
.tabs-line a.on{ color:var(--violet); border-bottom-color:var(--violet); font-weight:500; }

.msg-body{ max-width:420px; font-size:.9rem; }

.tpl-row{
  display:grid; gap:.6rem; align-items:start; padding:.9rem 0;
  border-bottom:1px solid var(--line);
  grid-template-columns: 140px 1fr 200px;
}
.tpl-row:last-child{ border-bottom:0; }
.tpl-lang{ display:flex; flex-direction:column; gap:.35rem; }
.tpl-row textarea{
  width:100%; border:1px solid var(--line); border-radius:8px; padding:.6rem .8rem;
  font-family:var(--body); font-size:.93rem; resize:vertical; background:#fff;
}
.tpl-row textarea:focus{ border-color:var(--violet); outline:none; box-shadow:0 0 0 3px rgba(107,63,160,.14); }
.tpl-actions{ display:flex; gap:.4rem; align-items:center; flex-wrap:wrap; }
.tpl-actions .mono{ color:var(--muted); margin-right:.2rem; }
.over{ color:var(--coral) !important; }
.tpl-row .hint.over{ grid-column: 1 / -1; margin:0; }

@media (max-width: 820px){
  .tpl-row{ grid-template-columns: 1fr; }
  .tpl-lang{ flex-direction:row; align-items:center; }
}

/* ---------- phase 5 : labs and documents ---------- */
.test-grid{
  display:grid; gap:.4rem 1rem; margin-top:.4rem;
  grid-template-columns:repeat(auto-fill,minmax(230px,1fr));
}
.test-grid .check{ font-size:.92rem !important; padding:.25rem 0; }
.form-grid input[type=file]{ padding:.5rem; background:var(--paper); }

/* ---------- phase 6 : reports ---------- */
.ratebar{
  position:relative; height:22px; min-width:130px; background:var(--paper);
  border-radius:5px; overflow:hidden;
}
.ratebar-cov{ position:absolute; inset:0 auto 0 0; background:rgba(107,63,160,.13); }
.ratebar-fill{ position:absolute; inset:0 auto 0 0; border-radius:5px; }
.ratebar-good{ background:rgba(23,195,162,.55); }
.ratebar-mid{  background:rgba(240,167,66,.6); }
.ratebar-poor{ background:rgba(228,87,46,.5); }
.ratebar-num{
  position:relative; z-index:1; display:block; line-height:22px; padding-left:.5rem;
  font-family:var(--mono); font-size:.72rem; color:var(--ink);
}
.trend{ width:100%; height:auto; display:block; margin-top:.6rem; }

/* ---------- phase 7 : adherence ---------- */
.adh-row{ padding:.7rem 0; border-bottom:1px solid var(--line); }
.adh-row:last-of-type{ border-bottom:0; }
.adh-strip{ display:flex; gap:.3rem; flex-wrap:wrap; }
.adh-day{
  width:34px; height:34px; border-radius:7px; display:grid; place-items:center;
  font-size:.68rem;
}
.adh-full{ background:rgba(23,195,162,.7); color:#08352C; }
.adh-part{ background:rgba(240,167,66,.6); color:#5C3A05; }
.adh-miss{ background:rgba(228,87,46,.35); color:#6B1F0A; }
.adh-none{ background:var(--paper); color:var(--muted); }

/* ---------- patient education ---------- */
.edu-body{ max-width:60ch; font-size:1.02rem; line-height:1.7; margin-top:1rem; }
.edu-body br + br{ display:block; content:""; margin-top:.6rem; }
