/* =========================================================
   Plantões — folha de estilo
   ========================================================= */

:root{
  --paper:   #EDF0F7;
  --paper-2: #F6F7FC;
  --card:    #FFFFFF;
  --ink:     #12142B;
  --ink-2:   #4A4F70;
  --ink-3:   #8C92B4;
  --line:    #DFE4EF;
  --indigo:  #161437;
  --violet:  #6C4DFF;
  --mint:    #00C08B;
  --rose:    #FF4D6D;
  --amber:   #FF9F1C;
  --dia:     #E8ECF6;
  --sombra:  0 1px 2px rgba(18,20,43,.05), 0 10px 24px -20px rgba(18,20,43,.55);

  --r-sm: 11px; --r-md: 16px; --r-lg: 22px; --r-xl: 30px;

  --display: "Bricolage Grotesque", "Plus Jakarta Sans", system-ui, sans-serif;
  --body:    "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;
  --mono:    "IBM Plex Mono", ui-monospace, monospace;

  --safe-b: env(safe-area-inset-bottom, 0px);
  --safe-t: env(safe-area-inset-top, 0px);
  --tab-h: calc(64px + var(--safe-b));
}

[data-tema="escuro"]{
  --paper:   #0C0E1C;
  --paper-2: #14172C;
  --card:    #181B33;
  --ink:     #EFF1FB;
  --ink-2:   #B4BAD9;
  --ink-3:   #757B9F;
  --line:    #272B49;
  --indigo:  #1B1940;
  --dia:     #0E1124;
  --sombra:  0 1px 2px rgba(0,0,0,.4), 0 10px 26px -20px rgba(0,0,0,.9);
}

*{ box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
[hidden]{ display:none !important; }
html,body{ margin:0; height:100%; overscroll-behavior-y:none; }
body{
  font-family:var(--body); background:var(--paper); color:var(--ink);
  font-size:16px; line-height:1.45;
  transition:background .3s ease, color .3s ease;
}
button{ font:inherit; color:inherit; border:0; background:none; cursor:pointer; }
input,select,textarea{ font:inherit; color:inherit; }
h1,h2,h3{ font-family:var(--display); font-weight:800; letter-spacing:-.025em; margin:0; }
svg{ width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.9;
     stroke-linecap:round; stroke-linejoin:round; }

/* ---------- abertura ---------- */
.boot{ position:fixed; inset:0; display:grid; place-content:center; gap:22px; justify-items:center;
  background:#161437; color:#fff; z-index:99; }
.boot p{ font-size:14px; color:#A8A6D4; margin:0; }
.boot-mark{ display:grid; grid-template-columns:repeat(2,26px); gap:6px; }
.boot-mark span{ height:26px; border-radius:8px; animation:pulse 1.3s ease-in-out infinite; }
.boot-mark span:nth-child(1){ background:#FF4D6D; }
.boot-mark span:nth-child(2){ background:#FFC300; animation-delay:.15s; }
.boot-mark span:nth-child(3){ background:#00BFA6; animation-delay:.3s; }
.boot-mark span:nth-child(4){ background:#00A3FF; animation-delay:.45s; }
@keyframes pulse{ 0%,100%{ opacity:.25; transform:scale(.85) } 50%{ opacity:1; transform:scale(1) } }

/* ---------- estrutura ---------- */
.app{ height:100dvh; display:flex; flex-direction:column; }
.view{ flex:1; min-height:0; display:flex; flex-direction:column; position:relative; }
.view[hidden]{ display:none; }
.view.entrando{ animation:entraView .3s cubic-bezier(.2,.9,.3,1); }
@keyframes entraView{ from{ opacity:0; transform:translateY(10px) } }
.scroll{ flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch;
  padding:16px 14px calc(var(--tab-h) + 12px); }
#view-calendario .scroll, #view-hospitais .scroll{ padding-bottom:calc(var(--tab-h) + 86px); }
.spacer{ height:30px; }
.stack{ display:flex; flex-direction:column; gap:10px; }

/* ---------- topo ---------- */
.topbar{
  background:var(--indigo); color:#fff;
  padding:calc(var(--safe-t) + 12px) 16px 16px;
  border-radius:0 0 var(--r-xl) var(--r-xl);
  position:relative; overflow:hidden; z-index:2;
  box-shadow:0 12px 30px -22px rgba(0,0,0,.95);
  transition:box-shadow .3s ease;
}
.topbar.rolando{ box-shadow:0 20px 34px -20px rgba(0,0,0,.85); }
.topbar::after{
  content:""; position:absolute; inset:-70% -15% auto; height:230px; pointer-events:none;
  background:
    radial-gradient(60px 60px at 18% 58%, rgba(255,77,109,.6), transparent 70%),
    radial-gradient(70px 70px at 45% 38%, rgba(255,195,0,.5), transparent 70%),
    radial-gradient(70px 70px at 72% 62%, rgba(0,191,166,.55), transparent 70%),
    radial-gradient(85px 85px at 96% 40%, rgba(0,163,255,.55), transparent 70%);
  filter:blur(8px); opacity:.6;
  animation:deriva 22s ease-in-out infinite alternate;
}
@keyframes deriva{ to{ transform:translateX(-18px) } }
.topbar--plain{ padding-bottom:18px; }
.topbar h1{ font-size:27px; position:relative; }
.topbar-sub{ margin:6px 0 0; font-size:13px; color:#A8A6D4; position:relative; }
.topbar-row{ display:flex; align-items:center; justify-content:space-between; gap:6px; position:relative; }

.ghost-btn{ width:40px; height:40px; border-radius:14px; background:rgba(255,255,255,.1);
  color:#fff; display:grid; place-items:center; flex:none; transition:background .15s, transform .15s; }
.ghost-btn:active{ background:rgba(255,255,255,.24); transform:scale(.9); }
.month-title{ display:flex; align-items:center; gap:7px; padding:4px 6px; min-width:0; }
.month-name{ font-family:var(--display); font-weight:800; font-size:26px;
  letter-spacing:-.03em; text-transform:capitalize; }
.month-year{ font-family:var(--mono); font-size:14px; color:#A8A6D4; }
.caret{ width:16px; height:16px; color:#A8A6D4; stroke-width:2.4; }

.month-stats{ display:flex; gap:16px; margin-top:14px; position:relative; }
.month-stats div{ min-width:0; }
.month-stats b{ display:block; font-family:var(--mono); font-size:19px; font-weight:600;
  letter-spacing:-.03em; white-space:nowrap; font-variant-numeric:tabular-nums; }
.month-stats span{ font-size:10.5px; color:#A8A6D4; text-transform:uppercase; letter-spacing:.1em; }
.month-stats .rec b{ color:#5BE9C0; }

.progress{ display:flex; align-items:center; gap:10px; margin-top:14px; position:relative; }
.progress-bar{ flex:1; height:5px; border-radius:5px; background:rgba(255,255,255,.15); overflow:hidden; }
.progress-bar i{ display:block; height:100%; border-radius:5px; width:0;
  background:linear-gradient(90deg,#FF4D6D,#FFC300,#00BFA6,#00A3FF); transition:width .6s cubic-bezier(.2,.8,.2,1); }
.progress span{ font-family:var(--mono); font-size:11px; color:#A8A6D4; white-space:nowrap; }

/* ---------- calendário ---------- */
.today-pill{
  display:block; margin:0 auto 12px; padding:7px 16px; border-radius:99px;
  background:var(--card); border:1px solid var(--line); box-shadow:var(--sombra);
  font-size:13px; font-weight:700; color:var(--violet); animation:cai .3s ease;
}
@keyframes cai{ from{ opacity:0; transform:translateY(-8px) } }

.cal{ touch-action:pan-y; background:var(--card); border-radius:20px;
  padding:12px 10px 10px; box-shadow:var(--sombra);
  transition:transform .3s cubic-bezier(.2,.9,.3,1); }
.cal.arrastando{ transition:none; }
.cal.vai-esq{ animation:desliza-e .26s ease; }
.cal.vai-dir{ animation:desliza-d .26s ease; }
@keyframes desliza-e{ from{ opacity:0; transform:translateX(26px) } }
@keyframes desliza-d{ from{ opacity:0; transform:translateX(-26px) } }

.weekdays{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; padding:2px 0 7px;
  text-align:center; font-family:var(--mono); font-size:9.5px; color:var(--ink-3);
  letter-spacing:.14em; text-transform:uppercase; }
.grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }

.day{
  position:relative; aspect-ratio:1/1.06; border-radius:9px;
  background:var(--dia); border:0;
  display:flex; align-items:flex-start; justify-content:flex-end;
  padding:4px 5px; overflow:hidden;
  font-family:var(--mono); font-size:13px; font-weight:500; color:var(--ink-2);
  transition:transform .14s cubic-bezier(.2,.8,.2,1), opacity .2s;
  animation:aparece .3s backwards;
}
@keyframes aparece{ from{ opacity:0; transform:translateY(6px) scale(.94) } }
.day:active{ transform:scale(.88); }
.day.is-blank{ background:transparent; animation:none; }
.day.has-shift{ color:#fff; font-weight:700; }
.day.has-shift.on-light{ color:#12142B; }
.day.is-today{ box-shadow:inset 0 0 0 2px var(--violet); }
.day.is-today:not(.has-shift) .n{ color:var(--violet); font-weight:700; }
.day.is-past:not(.has-shift){ color:var(--ink-3); opacity:.5; }
.day.has-shift.is-past .fill{ opacity:.78; }
.day.apagado{ opacity:.2; }
.day .n{ position:relative; z-index:2; line-height:1.15; }
.day .fill{ position:absolute; inset:0; z-index:1; }
.day .marca{ position:absolute; left:4px; bottom:3px; z-index:2; font-size:9px; font-weight:700; opacity:.92; }
.day .pago{ position:absolute; left:5px; top:6px; z-index:2; width:5px; height:5px;
  border-radius:50%; background:rgba(255,255,255,.95); }
.day.on-light .pago{ background:rgba(0,0,0,.5); }

.legend{ display:flex; flex-wrap:wrap; gap:6px; margin:14px 0 0; }
.chip{ display:inline-flex; align-items:center; gap:7px; background:var(--card);
  border:1px solid var(--line); padding:5px 11px 5px 8px; border-radius:99px;
  font-size:12px; font-weight:600; transition:transform .12s; }
.chip:active{ transform:scale(.94); }
.chip.off{ opacity:.4; }
.chip i{ width:10px; height:10px; border-radius:3px; }
.chip b{ font-family:var(--mono); font-weight:500; color:var(--ink-3); }

.section-title{ font-size:11.5px; font-family:var(--body); font-weight:700; text-transform:uppercase;
  letter-spacing:.12em; color:var(--ink-3); margin:24px 0 10px; }

/* ---------- linhas e cartões ---------- */
.card{ background:var(--card); border-radius:var(--r-md); padding:15px; box-shadow:var(--sombra); }
.card.note{ font-size:13.5px; color:var(--ink-2); line-height:1.55; }
.card.note b{ color:var(--ink); }

.row{ display:flex; align-items:stretch; gap:0; background:var(--card);
  border-radius:var(--r-md); box-shadow:var(--sombra); overflow:hidden;
  transition:transform .16s cubic-bezier(.2,.9,.3,1); }
.row.premida{ transform:scale(.97); }
.row-main{ flex:1; min-width:0; display:flex; align-items:center; gap:12px;
  padding:12px 6px 12px 14px; text-align:left; }
.row-main:active{ background:var(--paper-2); }
.row .bar{ width:5px; align-self:stretch; border-radius:99px; flex:none; margin:-2px 0; }
.row .info{ flex:1; min-width:0; }
.row .title, .row .sub{ display:block; }
.row .title{ font-weight:700; font-size:15px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.row .sub{ font-size:12.5px; color:var(--ink-3); font-family:var(--mono); }
.row-cta{ display:flex; flex-direction:column; align-items:flex-end; justify-content:center;
  padding:12px 14px; gap:3px; }
.row-cta:active{ background:var(--paper-2); }
.row-cta .valor{ font-family:var(--mono); font-weight:600; font-size:14.5px; }
.tag{ font-size:10px; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  padding:3px 8px; border-radius:99px; }
.tag.sim{ background:rgba(0,192,139,.14); color:var(--mint); }
.tag.nao{ background:rgba(255,159,28,.16); color:var(--amber); }

.empty{ text-align:center; padding:28px 20px; color:var(--ink-3); font-size:13.5px;
  border:1.5px dashed var(--line); border-radius:var(--r-md); line-height:1.5; }
.empty b{ display:block; color:var(--ink); font-family:var(--display); font-size:17px; margin-bottom:5px; }
.empty-mosaico{ display:flex; gap:5px; justify-content:center; margin-bottom:14px; }
.empty-mosaico i{ width:22px; height:24px; border-radius:6px; opacity:.9;
  animation:pisca 2.4s ease-in-out infinite; }
.empty-mosaico i:nth-child(2){ animation-delay:.2s } .empty-mosaico i:nth-child(3){ animation-delay:.4s }
.empty-mosaico i:nth-child(4){ animation-delay:.6s }
@keyframes pisca{ 0%,100%{ opacity:.9; transform:translateY(0) } 50%{ opacity:.55; transform:translateY(-3px) } }

/* ---------- financeiro ---------- */
.money-cards{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.money{ border-radius:var(--r-md); padding:15px; color:#fff; position:relative; overflow:hidden;
  box-shadow:0 12px 26px -22px rgba(0,0,0,.9); }
.money::after{ content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(120% 80% at 88% -10%, rgba(255,255,255,.22), transparent 60%); }
.money > *{ position:relative; z-index:1; }
.money span{ font-size:10.5px; text-transform:uppercase; letter-spacing:.1em; opacity:.85; }
.money b{ display:block; font-family:var(--mono); font-size:21px; font-weight:600;
  letter-spacing:-.035em; margin-top:5px; font-variant-numeric:tabular-nums; }
.money small{ font-size:11.5px; opacity:.78; display:block; margin-top:3px; }
.money--total{ grid-column:1/-1; background:var(--indigo); position:relative; overflow:hidden; }
.money--total b{ font-size:31px; }
.money--pago{ background:linear-gradient(140deg,#00C08B,#009E9E); }
.money--aberto{ background:linear-gradient(140deg,#FFA51C,#FF5D5D); }
.delta{ display:inline-block; font-family:var(--mono); font-size:11.5px; padding:2px 8px;
  border-radius:99px; background:rgba(255,255,255,.16); margin-top:8px; }

.chart{ display:flex; align-items:flex-end; gap:8px; height:140px; padding:10px 4px 0;
  background:var(--card); border-radius:var(--r-md); box-shadow:var(--sombra); }
.chart-col{ flex:1; display:flex; flex-direction:column; align-items:center; gap:6px;
  height:100%; justify-content:flex-end; }
.chart-bars{ width:100%; max-width:34px; display:flex; flex-direction:column; justify-content:flex-end;
  flex:1; gap:2px; }
.chart-bars i{ display:block; border-radius:5px 5px 0 0; min-height:2px;
  animation:cresce .5s cubic-bezier(.2,.8,.2,1) backwards; transform-origin:bottom; }
@keyframes cresce{ from{ transform:scaleY(0) } }
.chart-bars .b-pago{ background:var(--mint); }
.chart-bars .b-aberto{ background:var(--line); border-radius:5px 5px 0 0; }
.chart-col.ativo .b-aberto{ background:var(--amber); }
.chart-col span{ font-family:var(--mono); font-size:9.5px; color:var(--ink-3); padding-bottom:6px; }
.chart-col.ativo span{ color:var(--violet); font-weight:600; }

.hbar{ height:7px; border-radius:99px; background:var(--paper); overflow:hidden; margin-top:9px; }
.hbar i{ display:block; height:100%; border-radius:99px; animation:estica .5s ease backwards; transform-origin:left; }
@keyframes estica{ from{ transform:scaleX(0) } }

.export-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.exp{ background:var(--card); border-radius:var(--r-md); padding:14px; text-align:left;
  box-shadow:var(--sombra); transition:transform .12s; }
.exp:active{ transform:scale(.97); }
.exp b{ display:block; font-size:14px; }
.exp span{ font-size:11.5px; color:var(--ink-3); font-family:var(--mono); }

/* ---------- navegação ---------- */
.tabbar{ display:grid; grid-template-columns:repeat(4,1fr);
  background:color-mix(in srgb, var(--card) 88%, transparent);
  backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px);
  border-top:1px solid var(--line); padding-bottom:var(--safe-b);
  position:fixed; bottom:0; left:0; right:0; z-index:20; }
.tab{ padding:9px 0 8px; display:grid; justify-items:center; gap:3px; color:var(--ink-3);
  transition:color .2s; position:relative; }
.tab::before{ content:""; position:absolute; top:4px; left:50%; width:52px; height:31px;
  transform:translateX(-50%) scale(.7); border-radius:12px; background:transparent;
  transition:background .25s ease, transform .25s cubic-bezier(.2,.9,.3,1); }
.tab.is-active::before{ background:color-mix(in srgb, var(--violet) 14%, transparent);
  transform:translateX(-50%) scale(1); }
.tab svg, .tab span{ position:relative; }
.tab span{ font-size:10.5px; font-weight:600; }
.tab svg{ transition:transform .2s cubic-bezier(.2,.8,.2,1); }
.tab.is-active{ color:var(--violet); }
.tab.is-active svg{ stroke-width:2.3; transform:translateY(-2px); }

.fab{ position:absolute; right:16px; bottom:calc(var(--tab-h) + 14px); z-index:15;
  width:58px; height:58px; border-radius:20px; background:var(--violet); color:#fff;
  display:grid; place-items:center; box-shadow:0 16px 30px -12px rgba(108,77,255,.8);
  transition:transform .15s cubic-bezier(.2,.8,.2,1); }
.fab svg{ width:26px; height:26px; stroke-width:2.4; }
.fab:active{ transform:scale(.88) rotate(90deg); }

/* ---------- painel ---------- */
.scrim{ position:fixed; inset:0; background:rgba(9,10,25,.5); backdrop-filter:blur(2px);
  z-index:40; animation:fade .22s ease; }
@keyframes fade{ from{ opacity:0 } }
.sheet{ position:fixed; left:0; right:0; bottom:0; z-index:41; background:var(--paper);
  border-radius:var(--r-xl) var(--r-xl) 0 0; max-height:92dvh; display:flex; flex-direction:column;
  animation:sobe .3s cubic-bezier(.2,.9,.3,1); box-shadow:0 -20px 50px -30px rgba(0,0,0,.9); }
@keyframes sobe{ from{ transform:translateY(100%) } }
.sheet.saindo{ animation:desce .24s cubic-bezier(.4,0,.9,.4) forwards; }
@keyframes desce{ to{ transform:translateY(101%) } }
.scrim.saindo{ animation:some .24s ease forwards; }
@keyframes some{ to{ opacity:0 } }
.sheet-grip{ width:100%; padding:12px 0 4px; flex:none; }
.sheet-grip::before{ content:""; display:block; width:44px; height:4px; border-radius:99px;
  background:var(--line); margin:0 auto; }
.sheet-body{ overflow-y:auto; padding:6px 16px calc(20px + var(--safe-b)); }
.sheet h2{ font-size:23px; margin:6px 0 2px; }
.sheet .lead{ font-size:13px; color:var(--ink-3); margin:0 0 16px; font-family:var(--mono); }

/* ---------- formulários ---------- */
.field{ margin-bottom:13px; }
.field label{ display:block; font-size:11.5px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink-3); margin-bottom:6px; }
.field input, .field select, .field textarea{ width:100%; padding:13px 14px; border-radius:var(--r-sm);
  border:1.5px solid var(--line); background:var(--card); font-size:16px; transition:border-color .15s, box-shadow .15s; }
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--violet);
  box-shadow:0 0 0 3px rgba(108,77,255,.16); }
.field textarea{ font-family:var(--mono); font-size:13px; line-height:1.5; resize:vertical; min-height:150px; }
.field .hint{ font-size:12px; color:var(--ink-3); margin-top:5px; }
.field-pair{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
input[type="date"],input[type="time"]{ font-family:var(--mono); }

.segment{ display:grid; grid-auto-flow:column; gap:4px; background:var(--paper-2);
  border:1.5px solid var(--line); border-radius:var(--r-sm); padding:4px; }
.segment button{ padding:10px 6px; border-radius:8px; font-size:13.5px; font-weight:600;
  color:var(--ink-3); transition:background .18s, color .18s; }
.segment button[aria-pressed="true"]{ background:var(--card); color:var(--ink);
  box-shadow:0 1px 4px rgba(0,0,0,.1); }

.turnos{ display:grid; grid-template-columns:repeat(4,1fr); gap:7px; }
.turno{ padding:9px 4px; border-radius:var(--r-sm); background:var(--card);
  border:1.5px solid var(--line); font-size:11.5px; font-weight:700; text-align:center; }
.turno small{ display:block; font-family:var(--mono); font-size:9.5px; color:var(--ink-3); font-weight:500; }
.turno[aria-pressed="true"]{ background:var(--violet); color:#fff; border-color:var(--violet); }
.turno[aria-pressed="true"] small{ color:rgba(255,255,255,.75); }

.swatches{ display:flex; flex-wrap:wrap; gap:9px; }
.swatch{ width:38px; height:38px; border-radius:12px; position:relative; transition:transform .14s; }
.swatch:active{ transform:scale(.88); }
.swatch[aria-pressed="true"]::after{ content:"✓"; position:absolute; inset:0; display:grid;
  place-items:center; color:#fff; font-weight:800; font-size:17px; text-shadow:0 1px 3px rgba(0,0,0,.4); }
.swatch[aria-pressed="true"]{ box-shadow:0 0 0 3px var(--paper), 0 0 0 5px currentColor; }

.toggle{ display:flex; align-items:center; justify-content:space-between; gap:12px;
  background:var(--card); border:1.5px solid var(--line); border-radius:var(--r-sm); padding:12px 14px; }
.toggle span{ font-weight:600; font-size:14.5px; }
.switch{ width:50px; height:30px; border-radius:99px; background:var(--line); position:relative;
  flex:none; transition:background .22s; }
.switch::after{ content:""; position:absolute; top:3px; left:3px; width:24px; height:24px;
  border-radius:50%; background:#fff; box-shadow:0 2px 5px rgba(0,0,0,.25);
  transition:transform .22s cubic-bezier(.2,.8,.2,1); }
.switch[aria-pressed="true"]{ background:var(--mint); }
.switch[aria-pressed="true"]::after{ transform:translateX(20px); }

.actions{ display:flex; gap:10px; margin-top:18px; }
.actions button{ flex:1; padding:15px; border-radius:var(--r-md); font-weight:700; font-size:15px;
  transition:transform .12s; }
.actions button:active{ transform:scale(.97); }
.btn-primary{ background:var(--violet); color:#fff; }
.btn-secondary{ background:var(--card); border:1.5px solid var(--line); }
.wide-btn{ width:100%; margin-top:12px; padding:15px; border-radius:var(--r-md);
  background:var(--indigo); color:#fff; font-weight:700; font-size:15px; }
.wide-btn--quiet{ background:var(--card); color:var(--ink); border:1.5px solid var(--line); margin-top:8px; }
.btn-link{ display:block; width:100%; text-align:center; margin-top:14px; font-size:13.5px;
  color:var(--ink-3); font-weight:600; text-decoration:underline; }

/* seletor de mês */
.anos{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.anos b{ font-family:var(--mono); font-size:19px; }
.meses{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.mes-op{ padding:14px 4px; border-radius:var(--r-sm); background:var(--card);
  border:1.5px solid var(--line); font-size:13.5px; font-weight:600; text-transform:capitalize; }
.mes-op[aria-pressed="true"]{ background:var(--violet); color:#fff; border-color:var(--violet); }
.mes-op i{ display:block; width:5px; height:5px; border-radius:50%; background:var(--violet);
  margin:4px auto -4px; }
.mes-op[aria-pressed="true"] i{ background:#fff; }

/* ---------- aviso ---------- */
.toast{ position:fixed; left:50%; transform:translateX(-50%); bottom:calc(var(--tab-h) + 18px);
  background:var(--indigo); color:#fff; padding:11px 16px; border-radius:14px; font-size:14px;
  font-weight:600; z-index:60; max-width:92vw; display:flex; align-items:center; gap:14px;
  animation:sobe2 .24s cubic-bezier(.2,.9,.3,1); box-shadow:0 14px 32px -14px rgba(0,0,0,.9); }
[data-tema="escuro"] .toast{ border:1px solid var(--line); }
@keyframes sobe2{ from{ opacity:0; transform:translate(-50%,16px) } }
.toast button{ color:#8EE9FF; font-weight:700; font-size:13.5px; white-space:nowrap; }

/* ---------- telas maiores ---------- */
@media (min-width:640px){
  .app{ max-width:520px; margin:0 auto; box-shadow:0 0 70px -35px rgba(0,0,0,.6); }
  .tabbar{ max-width:520px; left:50%; transform:translateX(-50%); }
  .sheet{ max-width:520px; left:50%; transform:translateX(-50%); border-radius:var(--r-xl); bottom:14px; }
  @keyframes sobe{ from{ transform:translate(-50%,100%) } to{ transform:translate(-50%,0) } }
  .fab{ right:calc(50% - 260px + 16px); }
}

@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
}
:focus-visible{ outline:3px solid var(--violet); outline-offset:2px; border-radius:6px; }

/* ---------- botões do painel de ações rápidas ---------- */
.acao{ width:100%; text-align:left; padding:15px 16px; border-radius:var(--r-md);
  background:var(--card); box-shadow:var(--sombra); font-size:15px; font-weight:600;
  transition:transform .14s cubic-bezier(.2,.9,.3,1); }
.acao:active{ transform:scale(.97); background:var(--paper-2); }
.acao--risco{ color:var(--rose); }
